4

画像にいくつかの黒い領域で構成される輪郭がいくつかあります。これらの黒い領域に直接隣接するのは、私の輪郭に属さない明るい領域です。これらの明るい領域を黒い領域に追加して、OpenCv で輪郭を拡張したいと考えています。
輪郭を拡張する便利な方法はありますか? で作成したグラデーション画像から強度の変化を見てcv::Sobel、勾配が再び変化するまで拡張することを考えました。つまり、ピクセルの強度は、画像の黒でも明るい領域にも戻りません。

ありがとう!

例の画像を次に示します。最初の画像は生の画像、2 番目の画像は Canny と findContours を使用して抽出された輪郭、最後の画像は同じ領域のソーベル勾配強度画像を示しています。最初の画像の明るい境界を輪郭に含めたいと思います。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

更新: 今、私は Sobelgradients でいくつかの形態学的操作を使用し、それらの周りに輪郭を追加しました (下の画像を参照)。次のステップは、隣接する紫と赤の等高線のペアを見つけることですが、直接隣接する等高線を実際に検索する必要があるのは、処理時間の無駄のように思えます。より良いアイデアはありますか?

ここに画像の説明を入力

更新 2: 今のところ私の解決策は、(紫の) 輪郭の周りの境界ボックスでモーフィングされたグラデーション (赤) の輪郭を検索し、正しい向きとサイズのものを選択することです。これは、図 3 のように、モルフォロジー演算によって「上昇」と「下降」の勾配領域が閉じられる勾配等高線では機能します。しかし、上の画像よりも明るい領域が広い場合には、依然として悪い解決策です。どんなアイデアでも大歓迎です、ありがとう!

4

1 に答える 1

3

あなたがやろうとしているのは、2つの異なる機能を見つけてそれらをマージすることです。それほど難しいことではありませんが、それを実現するには、画像の複数のコピーを使用する必要があります。

  1. コピーを1つ作成し、暗い部分にしきい値を設定します
  2. 別のコピーを作成し、明るい部分にしきい値を設定します
  3. 両方のしきい値処理された画像を新しい画像にマージします
  4. 開くまたは閉じるなどのモルフォロジー操作を適用します(しきい値の方法によって異なります)。これにより、近くのコンポーネントが接続されます。
  5. 結果の画像で輪郭を見つける
  6. 元の画像でこれらの輪郭を使用します。すべての画像が同じサイズであり、すべて元の画像に基づいているため、これは機能します。
于 2012-12-10T04:27:45.050 に答える