2

背景: 解答用紙を自動的に採点するソフトウェアを作成しようとしています。解答用紙のフォーマットは固定で、以下のとおりです。

ここに画像の説明を入力

問題: ユーザーが交差するボックス (A、B、C?) を検出するには、4 つの黒い長方形に基づいてトリミングまたは透視変換を行う必要があります。上の画像の4つの黒い長方形の座標を取得するにはどうすればよいOpenCVですか?

追加情報: 以下のように回答ボックスのポーションを切り取ることができたら: ここに画像の説明を入力

各ボックスの正確な寸法がわかっているので、各ボックス (A、B、C) の黒いピクセル数を比較して、ユーザーがどのボックスを横切ったかを確認できます (ユーザーが複数のボックスを横切らないと仮定します)。

すべての建設的なアドバイスを歓迎します。

4

1 に答える 1

1

一見すると、あなたの黒い四角はページ上で唯一の本当に黒いものに見えます.残りはすべて明るく見えます. さらに、それらがどこにあるか、または少なくともどの一般的な領域にあるかを「ちょっと」知っています。それらには、上にも下にも何もない独自の列があります。したがって、画像が「8ビットグレースケール」であると仮定すると、形状認識モジュールなしでそれを行う方法は次のとおりです。

  • 特定の値 (5? 10? 50?) 未満のすべてのピクセルの画像をフィルター処理し、正方形以外のすべてをフィルター処理するのに十分かどうかを確認します。

  • 次に、画像のモードを白黒に切り替え(グレーなし、1ビットマップのみ)、反転します(黒->白、白->黒)

  • 次に、画像の列を左から右にスキャンします。各列について、その列のすべてのピクセルを合計します。結果がゼロである限り、あなたはまだそこにいません。合計が非 NULL になり始めると、正方形が見つかりました。ゼロ以外の値の列のインデックスは、正方形の角の 1 つに対応します (また、それが列の上部または下部にある場合は、どの正方形かを知ることもできます)。スキャンし続けると、合計が増加します。合計を見ることで、各正方形の角の位置を推測できるはずです。つまり、合計の変動の各変化は新しい角です。1 つの大きなステップ : すべての正方形が完全に整列しています。4 つの小さなステップ : 対角線上の四角形。幾何学的には、紙が破れたり折りたたまれたりしない限り、左隅の正方形が一度に、または順番に (下または下から上へ) 表示されます。右から左に繰り返します。

もちろん、合計の分析は最も難しい部分ですが、2 つまたは 3 つの例をざっと見てみると、他の例に使用できるおおまかな見積もりが得られます。 、1200 と 1600 の間の合計 -> 2 つの正方形など。

于 2014-08-07T04:14:51.967 に答える