1

カラー画像で楕円形の上部を含む領域を検出しようとしています。

ここに私が描いたいくつかの例があります:

http://i.imgur.com/fh6udfL.jpg

http://i.imgur.com/3qLBrVn.jpg

これをどのように達成しますか?画像処理は未経験ですが、読んで学んでいきたいです。私は主に C++ で OpenCV を使用していますが、他のライブラリも使用できます。

4

4 に答える 4

1

一般的に、あなたが尋ねることは一種の大きな問題です。現実世界の画像では、すべての楕円形を見つけて、どれが上にあるのかを区別する必要があります (どの角度まで許容して上を考慮するか)。次に、それらの形状を非常にうまく分割して、上部が楕円形のオブジェクトである領域を見つける必要があります。

ただし、例のように単純な画像を見つける必要があるが、より一般的なアプローチが必要な場合は、最初に任意のエッジ検出 (Canny など) を使用してエッジを取得できます。次に、曲線と楕円にハフ変換を使用します。しかし、そのための関数やライブラリはないと思います。そのため、独自のハフ変換を実装する必要がある場合があります。そのためには、楕円形のトップが何を意味するのかを正確に決定する必要があります。2 つの画像について、楕円形の上部が正常に見つかった場合は、その下の領域を取得します。しかし、より一般的なものにするために、より洗練されたアプローチでその下の形状をセグメント化することをお勧めします。

ハフ変換の場合。http://en.wikipedia.org/wiki/Hough_transform#Circle_Detection_Process および楕円で使用する場合http://en.wikipedia.org/wiki/Randomized_Hough_transform

于 2013-06-22T21:01:46.303 に答える
0

実はopencvで円を検出する機能があります。

低い parameter2 でハフ変換を使用します。これは、与えられた頂点のみで円を検出する必要があるためです。

別の方法はそのままである必要があります。

1- ローパス フィルター (ガウスぼかし、opencv doc 内を検索)

2- カラー フィルター - オプション (わかっている場合はオブジェクトの色を使用します。それ以外の場合は、pixel(image.width/2 , 0) から色を取得してみてください)

3-キャニーエッジ検出(これもドキュメントを参照)

4-輪郭を見つける(これもドキュメントを参照してください)

5-できれば大きな領域を持ち、ピクセル(image.width/2、0)を含む輪郭がある場合-ここでpointPolygonTestを使用します-下部にブロブがあります。

6-このブロブが「楕円形」であるかどうかを検出することは大きな問題です。ただし、「卵形」のプロパティを使用してフィルタリングを行うことができます。

  • 楕円曲線には 1 つのピーク ポイントしかありません。最大の高さを持つ輪郭ピクセルは 1 つだけである必要があります。
  • 楕円曲線の 3 点は線を表すことはできません。これを実装するのは難しくありませんが、アルゴリズムにとっては複雑です。
于 2013-06-22T22:20:07.333 に答える
0

円のハフ変換よりも単純なアプローチをお勧めします。上の画像から、楕円の色が均一であるのに対し、画像の残りの部分は均一でないことがわかります。

  1. 適切な色空間を選択します (おそらく HSV)
  2. グレースケールを色相または彩度として取ります-これらは画像の色を表します(ピクセルの強度ではありません)
  3. (2)の勾配を計算する
  4. 勾配 = 0 のピクセルは楕円形に属します
于 2013-06-23T05:47:35.080 に答える