4

私は画像処理の初心者であり、これが私が直面している問題です。次のような申請書の画像があるとします。ここに画像の説明を入力

ここで、データが入力されるすべての場所の場所を検出したいと思います。この場合、次のようにいくつかのボックスに分割された長方形になります (すべてのフィールドがマークされているわけではありません)。

ここに画像の説明を入力

写真ボックスも検出されて生活できます。OpenCV ソースで squares.cpp サンプルを実行しようとしましたが、必要な結果が得られません。ここで修正版も試しました-結果はさらに悪かったです(私のユースケースは、その質問のOPとは明らかに異なります)。

また、線を取得するためのハフ変換は、スキャンされた画像のノイズが余分な線に寄与しているため、ぼかししきい値の有無にかかわらず実際には機能しません。また、しきい値処理は櫛の一部(小さな正方形)を取り除いているため、線の検出が不十分です。

このフォームは印刷されたフォームのスキャンされたコピーではありませんが、実際の入力は印刷されたフォームのノイズのあるスキャンされた画像である可能性が非常に高いことに注意してください。

私はこれが可能であると確信しており(少なくともある程度の許容範囲が許されている場合)、解決策を見つけようとしていますが、このようなことを試みた可能性のある他の人から洞察やアイデアを得ることができれば本当に役に立ちます/CV問題のハッキングをお楽しみください。また、答えが特定の操作が行われた理由を説明する場合は本当にいいでしょう (たとえば、しきい値処理によって残された穴を埋めようとする膨張など)。

4

1 に答える 1

1

フォームは何らかの点で一貫していますか? 「そのようなボックス」はすべてのフォームで同じサイズですか? 上記のフォームの文字ボックスのように、一貫したサイズに依存できる場合は、テンプレート マッチングを使用できます。

それ以外の場合、問題は次のように思われます: 画像上の任意/すべての長方形を見つけます (後処理ステップを使用して、大量のマーキングが含まれているものを除外するか、隣接する長方形をマージします)。

フォーム間の一貫性を利用すればするほど、問題は解決しやすくなります。取得できるコンテキストを使用します。

編集

勾配 (x 方向と y 方向の両方でソーベル カーネルを使用して計算) を使用すると、多くのノイズを取り除くことができます。

両方を使用して、グラデーションの方向を見つけることができます (方程式はここにあります: en.wikipedia.org/wiki/Sobel_operator)。ボックスの特徴を垂直方向または水平方向のグラデーションとして定義するとします。ピクセルのグラデーションの向きがまっすぐな水平またはまっすぐな垂直の場合は、それを維持し、それ以外はすべて白に設定します。

これをノイズに対してより堅牢にするために、中央の方向を計算するスライディング ウィンドウ (3x3) を使用できます。ウィンドウの中央 (または平均) 方向が垂直または水平の場合、現在の (ウィンドウの中央) ピクセルを保持し、それ以外の場合は白に設定します。

OpenCV を勾配の計算に使用できますが、おそらく方向/位相の計算にも使用できますが、実際のスライディング ウィンドウ コードを実行するコードを記述する必要があるでしょう。私はOpenCVに精通していません

于 2012-11-12T15:07:05.023 に答える