13

EmguCVでテキスト認識用の画像に適用するのに最適な画像前処理操作のセットは何ですか?

ここに2つのサンプル画像を含めました。

テキストは任意のサイズである可能性があるため、ローパスまたはハイパスフィルターを適用することは適切ではありません。中央値フィルターと両側フィルターを試しましたが、画像にはあまり影響しないようです。

理想的な結果は、すべてのテキストが白で、残りのほとんどが黒のバイナリイメージになります。次に、この画像はOCRエンジンに送信されます。

ありがとう

4

2 に答える 2

18

最高のセットのようなものはありません。デジタル画像はさまざまなキャプチャデバイスで取得でき、各デバイスには、画像を大幅に変更したり、ノイズを追加したりする可能性のある独自の前処理システム(フィルタ)やその他の特性を組み込むことができることに注意してください。したがって、すべてのケースを異なる方法で処理(前処理)する必要があります。

ただし、検出を改善するために使用できる一般的な操作があります。たとえば、非常に基本的な操作は、画像をグレースケールに変換し、しきい値を適用して画像を2値化することです。私が以前に使用したもう1つの手法は、テキスト領域を検出できるバウンディングボックスです。画像からノイズを除去するには、エロード/拡張操作に関心があるかもしれません。この投稿でこれらの操作のいくつかを示します。

また、OCRとOpenCVに関する他の興味深い投稿もありますので、ご覧ください。

ここで、サンプル画像で使用できる簡単なアプローチを示すために、これは色を反転してしきい値を適用した結果です。

cv::Mat new_img = cv::imread(argv[1]);
cv::bitwise_not(new_img, new_img);

double thres = 100;
double color = 255;
cv::threshold(new_img, new_img, thres, color, CV_THRESH_BINARY);

cv::imwrite("inv_thres.png", new_img);
于 2012-07-13T13:19:13.833 に答える
2

形態学的画像処理を試してください。これを見てください。ただし、これはバイナリイメージでのみ機能するため、イメージを2値化する必要があります(しきい値?)。シンプルですが、フォントサイズに依存するため、1つの構造要素がすべてのフォントサイズで機能するとは限りません。一般的な解決策が必要な場合は、画像内のテキスト検出に関する多数の論文があります-google scholarでこの用語を検索すると、いくつかの有用な出版物が得られるはずです。

于 2012-07-13T09:20:59.437 に答える