5

輪郭検出とハフ変換というさまざまなアプローチを使用して、グレースケール イメージ内の白い四角形を検出しようとしています。残念ながら、私が処理している画像にはいくつかの制限があります。

  1. 画像には多くの機能があり、長方形だけが機能ではありません
  2. 長方形は他のフィーチャにマージできます (たとえば、長方形のエッジの 1 つを長い直線と重ねることができます)。
  3. 四角形には、他の機能 (文字、数字、または四角形内のロゴなど) を含めることができます。
  4. 長方形のように見える機能がいくつかあります (たとえば、文字「D」は、右上と右下に小さな円弧がある長方形のように見えます。別の例は、平行四辺形ではなく台形です)。
  5. 長方形は、時計回りと反時計回りの両方で 0 から 15 度まで回転できます。
  6. 異なる照明条件 (例: 1 ピクセルのギャップ) で線が複数の線に分割される可能性があるため、線をフィルタリングするための最小線の長さは小さくする必要があります (例: ハフ変換)。
  7. 最小線の長さが小さい値に設定されている場合、同じ線の重複した線が異なる向きで表示されることがよくあります (つまり、複数の線を結合する必要があります)。

輪郭アプローチでは、一部の画像の輪郭が壊れています。さらに、画像には四角形などの機能 (文字「D」など) を含めることができます。これが良いアプローチかどうかはわかりません。

次の投稿のように、ハフ変換を使用して長方形を検出することを提案する多くの記事/フォーラムを見てきました。残念ながら、行の長さの最小値を小さく設定する必要があり、行が重複しています。上記のポイントを処理する方法がわかりません (たとえば、すべての重複する線を結合し、各エッジに対して 1 つの線のみを選択し、ほとんどの部分が線であるが「D」のような小さな円弧で特徴を区別する方法、およびどのように長い直線とマージされた 1 つのエッジを持つ正方形を分離するなど)。

透視投影による長方形認識のハフ変換と輪郭検出

どんな提案も大歓迎です!

編集:いくつかの写真を追加

キャラクター D

キャラクター D

長い直線とマージされた四角形のエッジ

ロゴ付きの長方形とエッジが長い直線で結合されている

ここに画像の説明を入力

台形 (上に影があり、下に台形を形成)

4

1 に答える 1

1

各画像でバイナリしきい値(適応またはその他)を使用することをお勧めします。これにより、輪郭検出に明確な線が得られます。画像を浸食/膨張させてノイズを除去することもできます (2 番目の画像の細い線など)。

次に、輪郭検出を使用し、輪郭を数えて、画像内で 4 つの側面を持つ最大のオブジェクトを見つけます (これがおそらくオブジェクトになります)。

バイナリ/侵食を使用する前に画像のコピーを作成して、輪郭検出から関心領域を取得したら、コピー画像をその領域にトリミングできるようにします。

リンクの例は python で書かれていることをお詫びしますが、アイデアをつかめば、C++ への移植は簡単になると思います。

お役に立てれば。

編集

各画像のしきい値処理、輪郭検出、および輪郭の最大セットの周りに境界ボックスを描画することにより、上記の方法を自分で試してみました。

以下に結果を示します。

ここに画像の説明を入力

等高線の最大セットの周囲のバウンディング ボックス

ここに画像の説明を入力

同じ、元の画像の上に描かれた

ここに画像の説明を入力

于 2015-05-07T08:31:01.497 に答える