0

コンピューター ビジョンで遊ぶために使用したい小さなサイド プロジェクトがあります。いくつかの単語が丸で囲まれている、または両端が曲線で結合された 2 本の平行な水平線で囲まれている文書をスキャンしました。小学生が取り組む単語検索ワークシートに似ていますが、よりきれいな線と水平のみです。

単語検索ワークシート

目標は、丸で囲まれたビットを抽出し、それらの部分のみを OCR プロセスに渡して、丸で囲まれたテキストを取得することです。

パッケージ化された haar カスケードのいくつかを使用して、顔認識に opencv を少し前に使用しました。同様のアプローチは単純な形状でも機能しますか、それとも OpenCV 内でうまく機能する低レベルのアプローチはありますか?

4

2 に答える 2

2

線が常に同じ (または似たような) 色である場合は、inRange関数を使用して線のみを取得できます。次に、findContours関数を使用してすべての円で囲まれた領域の輪郭を見つけ、それらを白いピクセルで塗りつぶしてから、この画像と元の画像に対してビット単位の演算を使用します。その結果、円で囲まれた領域のみが得られます (線が含まれています。これを回避したい場合は、ユーザーによる浸食と拡張機能を試してください)。

パッケージ化された haar カスケードのいくつかを使用して、顔認識に opencv を少し前に使用しました。同様のアプローチは単純な形状でも機能しますか、それとも OpenCV 内でうまく機能する低レベルのアプローチはありますか?

丸で囲まれた領域を見つける Haar カスケードを作成することは可能だと思いますが、

  • 長方形が得られるので、テキストが完全に水平または完全に垂直でない場合、多くの追加の(そして役に立たない)ピクセル/文字が得られます
  • 私のソリューションとGavinbのソリューションの両方が、おそらくはるかに高速で、よりシンプルで、より正確になります
于 2013-03-29T02:29:35.210 に答える
1

画像内の線を検出するための優れた簡単な方法は、ハフ変換です。基本的に、回線パラメータの蓄積バッファとして機能します。これにより、長い平行線をかなり簡単に検出し、しきい値処理によって平行線と文字を区別できるはずです。次に、行を繰り返し処理し、平行なペアから領域を抽出して文字をセグメント化できます。

于 2013-03-29T01:43:10.573 に答える