32

私の新しい割り当てでは、イメージ上にテキストの存在を検出する方法を探しています。画像は地図です - たとえばGoogleマップなどがあります。作業は、通り/市のラベルが配置されている場所を検出することです。イメージ上にテキストの存在を検出するアルゴリズム

私はopencvライブラリに特徴(例えば人間の顔)を検出できるアルゴリズムがあることを知っています - haar classifierまたはhog(勾配のヒストグラム)ですが、そのようなアルゴリズムの学習プロセスは非常に難しいと聞きました。

これを行うアルゴリズム、方法、またはライブラリを知っていますか(画像にテキストが存在することを検出していますか?)

おかげで、 ジョン

答えて

13

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

  1. OCRを使用してください。 StackoverflowでOCRを検索すると、多くのオプションが表示されます。これらには、TesseractOcropusが含まれます。
  2. テキストに非常に特殊な固定フォントが使用されている場合は、simple template matchingから離れることがあります。より一般的なケースでは
  3. あなたは "Detecting Text in Natural Scenes with Stroke Width Transform"

UPDATE 2017年1月
OpenCVの3.2のcontribモジュールは、現在text detection moduleを持っているを見てみたいことがあります。
また、それを使用する方法のincludes a sample

+0

Ocropusは、見つかった文字を実際のテキストに変換できますが、最初はその文字を見つけるのに役立ちません。水平線で互いに近くに少なくとも2つの文字を必要とする追加された制限との単純なテンプレートマッチングは、Googleマップのケースでは非常にうまくいくでしょう。 –

+2

Epshtein et al。紙(ストローク幅変換)は実装され、[Saurav&Andrew](http://stackoverflow.com/questions/4837124/stroke-width-transform-swt-implementation-java-c/5599470#5599470)によって共有されています。 –

+0

ここに、pythonのopencvラッパーを使用した例のPython実装があります。https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/textdetection.py – putonspectacles

18

画像にテキスト検出と呼ばれる視覚に標準的な問題があります。それはOCRとは全く異なっています。 OCRは、それ自体が言うことと同意し、テキスト検出はイメージにテキストがあるかどうかを判断することです。 Adi Shavitの3番目のリンクは、この問題に対処する方法です。 Googleの学者のよく引用された記事をtext detectionに見ることができます。

0

これを特定のタイプの地図画像に合わせる必要があるか、問題が非常に困難になります(記事へのリンクについての前の記事を参照)。

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

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

関連する問題