web-dev-qa-db-ja.com

画像上のテキストの存在を検出するアルゴリズム

私の新しい割り当てでは、画像上のテキストの存在を検出する方法を探しています。画像は地図です-たとえば、Googleマップにすることができます。タスクは、通り/都市のラベルが配置されている場所を検出することです。

Opencvライブラリには、特徴(人間の顔など)を検出できるアルゴリズムがあります-haar分類器または豚(指向性勾配のヒストグラム)ですが、そのようなアルゴリズムの学習プロセスは非常に難しいと聞きました。

あなたはそれを行うことができるアルゴリズム、メソッドまたはライブラリを知っていますか(画像上のテキストの存在を検出します)?

ありがとう、ジョン

36
John

画像のテキスト検出と呼ばれるビジョンには標準的な問題があります。 OCRとはまったく異なります。 OCRはそれが言うことを懸念しますが、テキスト検出は画像にテキストがあるかどうかを判断することに関するものです。 Adi Shavitの3番目のリンクは、この問題に対処する方法です。 text detection で、Google奨学生のよく引用されている記事を見ることができます。

21
carlosdc

あなたが取ることができるいくつかの可能なアプローチがあります。

  1. OCRを使用します。 StackoverflowでOCRを検索すると、多くのオプションが表示されます。これらには Tesseract および Ocropus が含まれます。
  2. テキストが非常に特定の固定フォントを使用している場合、 simple template matching で逃げることができます。
  3. より一般的なケースでは、「 ストローク幅変換を使用した自然シーン内のテキストの検出 」をご覧ください。

2017年1月更新
OpenCV 3.2 contribモジュールに テキスト検出モジュール が追加されました。
それも サンプルを含む 使用方法の。

16
Adi Shavit

特定のタイプのマップ画像に合わせてこれを調整する必要があります。そうしないと、問題が非常に難しくなります(記事へのリンクについては、以前の投稿を参照してください)。

OCRを使用する方法であり、既存のライブラリを使用する必要があります。ただし、OCRは主に白い背景のテキストに対して行われます。問題を通常のOCR問題に減らすには、マップの色空間で作業を試みる必要があります。おそらく、マップテキストには非常に特定の色があり、これらのピクセルを見つけるにはこれで十分かもしれません。その後、接続された領域のサイズに基づいて、検出されたピクセルをフィルタリングできます。

文字通りテキストラベルの場所のみを検索する場合は、上記を実行できますが、OCRステップはほとんどスキップします。ラベルが近すぎない場合、単純なクラスタリングアルゴリズムを使用して、それぞれの位置を見つけることができます。

0
mahogny