携帯電話のカメラを使用して取得した画像上の任意のテキストの検出とローカリゼーション

私は時々さまざまな国に旅行しますが、言葉の壁はしばしば非常に大きな障害になります。 ドイツ語の言語が使われている国では、どうにかして自分の道を見つけることができますが、中国、イスラエル、アラブ諸国など、同伴者のいない国では、旅は神秘的な探求に変わります。 地元のバス/電車/電車のスケジュールを理解することは不可能です;小さな町の街路名は英語では非常にまれです。 そして、理解できない言語のメニューから何を食べるかという選択の問題は、一般に地雷原を歩くことに似ています。

私はiOSの開発者なので、このようなアプリケーションを書いてみませんか。カメラをサイン/スケジュール/メニューに向け、すぐにロシア語に翻訳します。



App Storeで簡単に検索したところ、そのようなアプリケーションは1つまたは2つしかなく、サポートされているアプリケーションの数にはロシア語が含まれていませんでした。 そのため、パスは開いているので、このようなアプリケーションを作成してみてください。 会話は、白い紙に黒いテキストを撮影し、それをデジタル化して翻訳するアプリケーションに関するものではないことを言及する価値があります。 そのようなアプリケーションは、実際にはキャリッジと小さなカートです。 これは、たとえばバスの写真などの自然画像のテキストを強調表示できるアプリケーションです。ユーザーがこのバスの行き先を理解できるように、ルートプレート上のテキストを選択して翻訳する必要があります。 または私に関連するメニューの問題、私は本当にあなたが注文するものを知りたいです。



アプリケーションの主なタスクは、テキストの検出とローカリゼーション、そしてOCRでの「摂食」のための選択と二値化、たとえばtesseractです。 また、スキャンされたドキュメントのテキストを検出するアルゴリズムは古くから知られており、99%の精度に達しましたが、写真内の任意のサイズのテキストの検出は依然として実際の研究分野です。 このタスクはさらに興味深いものになると思い、アルゴリズムの研究に取り掛かりました。

当然、画像上のテキストを検索するための普遍的なアルゴリズムは存在しません。通常、さまざまなタスクに加えて、ヒューリスティックな方法でさまざまなアルゴリズムが使用されます。 まず、問題を形式化します:目的のために、水平に配置された周囲の背景と非常に対照的なテキストを見つける必要があります。傾斜角は20度を超えず、さまざまなサイズと色のフォントで書くことができます。



アルゴリズムを確認した後、私はホイールを実装し直し、再発明し始めました。 私は、opencvを使用せずに、すべてを自分で記述して、主題に深く没頭することにしました。 基礎は、いわゆるエッジベースの方法に基づいています。 そして、それが私がやったことです。

最初に、携帯電話のカメラからBGRA形式の画像を取得します。





これをグレースケールに変換し、画像のガウスピラミッドを構築します。 ピラミッドの各レベルで、特定のディメンションのテキストが見つかります。 最低レベルでは、高さが約k〜2 * k-1ピクセル、次に2 * k〜4 * k-1などのフォントを検出します。 実際、ピラミッドでは4つの画像を使用する必要がありましたが、クアッドコアi7ではなくiPhoneしか持っていないため、3つの画像に制限することに注意してください。





Sobel演算子を適用して、垂直方向の境界を選択します。 そして、ノイズをカットするには短すぎるセグメントを削除するだけで結果をフィルタリングします。





Sobel演算子で強調表示された垂直方向の境界に、モルフォロジークロージャ演算を適用します。 フォントの横幅、および縦5字。結果は再びフィルターされます。 kから2 * k-1までの、少なくとも3文字の長さで、探しているフォントの高さに適合するものだけをスキップします。 この結果が得られます。





ピラミッドの次のレベルで同じ操作を実行します。





次に、すべての結果を1つに結合します。 次に、選択した領域で適応2値化を行い、そのような画像を取得します。 OCRでのさらなる認識にすでに適しています。 ガウスピラミッドの別の画像が欠落しているため、最大フォントが決定されなかったことがわかります。





以下は、より複雑な画像に対するアルゴリズムの操作の例です;いくらかの改良がまだ必要であることがわかります。

iPhone 5での640x480の画像処理時間は約0.3秒です。



PSコメントで質問に答え、PMの文法エラーについて書きます。


















All Articles