0

openCV を使用して、よりシンプルな OCR エンジンを作成しようとしています。この画像があります: https://dl.dropbox.com/u/63179/opencv/test-image.png

可能なすべての文字を画像として保存し、入力画像でこの画像を検出しようとしました。

ここから、コードを特定する必要があります。私は matchTemplate と FAST 検出を試みています。両方とも失敗しているようです (または、より可能性が高い: 私は何か間違ったことをしています)。

matchTemplate メソッドを使用すると、Sobel を使用して入力画像と参照画像の両方のエッジを見つけました。これは機能する結果を提供しますが、精度は十分ではありません。

FAST メソッドを使用すると、cvExtractSURF メソッドから興味深い説明が得られないようです。

この種のコードを読めるようにするための最良の方法に関する推奨事項はありますか?

更新 1 (2012-03-20)

私はいくつかの進歩を遂げました。文字の境界四角形を見つけようとしていますが、マトリックスフォントが私を殺しています。以下のサンプルを参照してください。

私のフォント: https://dl.dropbox.com/u/63179/opencv/IMG_0873.PNG

記入したフォント: https://dl.dropbox.com/u/63179/opencv/IMG_0875.PNG

その他のフォント: https://dl.dropbox.com/u/63179/opencv/IMG_0874.PNG

サンプルに見られるように、あまり複雑でないフォントの境界四角形を見つけました。フォントのドット間のスペースを埋めることができれば、それも機能します。opencvでこれを達成する方法はありますか? 各文字の境界ボックスを見つけることができれば、文字を認識するのがはるかに簡単になります。

何か案は?

更新 2 (2013-03-21)

わかりました、バウンディング ボックスを見つけることができました。画像を参照してください: https://dl.dropbox.com/u/63179/opencv/IMG_0891.PNG

ここからどこへ行けばいいのかわからない。matchTemplate テンプレートを使用しようとしましたが、この場合は適切なオプションではないと思いますか? より大きな画像で完全一致を検索する場合は、その方が良いと思いますか?

サーフを使用しようとしましたが、境界ボックスごとに cvExtractSURF で記述子を抽出しようとすると、記述子が 0 になりました...何かアイデアはありますか?

参照画像に対して境界ボックスを一致させるには、どの方法を使用するのが最も適切でしょうか?

4

1 に答える 1

4

FASt+SURF は、このタスク用に設計されていないため、うまくいきません。特に、FAST は、動きからの構造ではどこにでもあるが、OCR ではほとんど存在しない角のような特徴を検出します。

2 つの提案:

  1. FASTキーポイントの数と位置から特徴ベクトルを構築するかもしれません.oyuはこれらの特徴が十分に判別可能かどうかを迅速にチェックできると思います.
  2. (私が自分で選ぶもの)画像サンプルを小さな正方形に分割します。各正方形の SURF の記述子のみを計算し、それらをすべて連結して、特定のサンプルの特徴ベクトルを形成します。次に、これらの特徴ベクトルを使用して分類器をトレーニングします。

オプション 2 は、OpenCV で見つけることができる任意の記述子 (SIFT、SURF、FREAK...) で機能することに注意してください。

更新への回答 1

始めた頃に先輩方に教えてもらったちょっとしたコツです。ドットのある画像では、2 値化されたデータを水平軸と垂直軸に射影できます。投影されたパターンの穴 (切断) を検索することで、例のほとんどすべてのブードニッグ ボックスを復元する可能性があります。

アップデート 2 への回答

この時点で、あなたは私の最初の答えに戻っています。ここでは、SURF は役に立たないでしょう。代わりに、標準的な方法は、各バウンディング ボックスを (背景/文字に応じて 0 ~ 1 に) 2 値化し、バウンディング ボックスを標準サイズに正規化し、ここから分類器をトレーニングすることです。

ニューラル ネットワークまたは SVM を使用して数字を認識する方法については、ウェブ上にいくつかのチュートリアルやブログ投稿があります。数字を文字に置き換えるだけです。

あなたの仕事はほぼ完了です!分類器のトレーニングと使用は面倒ですが、簡単です。

于 2013-03-19T13:44:06.493 に答える