0

画像内の数字を見つけようとしています。コードをテストするために、数字の画像を取得し、AForge のExhaustive Template Matchingアルゴリズムを使用して別の画像で検索しました。しかし、数字を含む画像は長方形であるのに対し、数字は明らかに長方形ではないという点に問題があると思います。つまり、比較に参加してはならない多くのピクセルがあることを意味します。これらのピクセルを無視してこの比較を行う方法はありますか? AForge にない場合は、EMGU/OpenCV または Octave でしょうか?

これが私のコードです:

Grayscale gray = new GrayscaleRMY();
Bitmap template = (Bitmap)Bitmap.FromFile(@"5template.png");
template = gray.Apply(template);
Bitmap image = (Bitmap)Bitmap.FromFile(filePath);
Bitmap sourceImage = gray.Apply(image);
ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.7f);
TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template);

これが画像の例です。

4

1 に答える 1

4

上記のコメントで述べたように、マッチングを改善するためにデータを前処理する必要があります。

最初に頭に浮かぶのは、バックグラウンド ノイズを減らすためのモルフォロジー オープニング(侵食してから膨張)です。

イメージを読み取り、文字ベクトルが白になるように反転します。

ここに画像の説明を入力

可能な限り最小の構造化要素/ウィンドウ (3x3) で開口部を適用します。

ここに画像の説明を入力

少し大きい構造化要素 (5x5) を試すことができます。

ここに画像の説明を入力

反転して元に戻します。

ここに画像の説明を入力

それが役立つかどうかを確認してください!

于 2013-05-11T15:18:39.193 に答える