2

opencv を使用して 6 つの円のパターンを検出する必要があります。opencvでしきい値処理と輪郭関数を使用して、円とその重心を検出しました。

次に、これらの円の間の関係を、縮尺と回転に対して不変になるように定義する必要があります。これにより、さまざまなビューでこのパターンを検出できるようになります。オブジェクトのポーズを決定するには、このパターンを使用する必要があります。

スケール/回転の不変性を達成するにはどうすればよいですか? 私がそれについて読むことができる参照はありますか?

4

3 に答える 3

1

回転を見つける必要があるのか​​、単にそれを取り除く必要があるのか​​ 、それとも円がリンクしたパターンを実際に形成しているかどうかを検出する必要があるのか​​ は、私には完全には明らかではありません. いずれにせよ、答えはほとんど同じです。

まず、隣接する円が 1 つしかない 2 つの円を見つけることから始めます。各円の重心について、最も近い 2 つの隣接点までの距離を計算します。距離が 10% 以上異なる場合、重心は「端」の円 (リンクの一番上の円の 1 つ) に属します。

2 つの端の円が見つかったので、互いに水平になるように回転させます。他の重心がそれらの上にある場合は、さらに 180 度回転させて、パターンが目的の方向になるようにします。

これで、平均重心間距離からスケーリングを計算できます。

それが役立つことを願っています。

于 2012-04-11T16:05:36.807 に答える
1

パターンを回転とスケールに対して不変にするには、パターンを検出するときに方向とスケールを正規化する必要があります。これを実現するための簡単なアルゴリズムを次に示します。

  • 中心と円のサイズを検出します (あなたはすでにこれを達成したと言っています - 良い!)
  • 単純平均を使用して平均中心を計算します。この平均からすべての中心を表す
  • 単純なノルムを使用して最も遠い中心を見つける (ユークリッドで十分です)
  • この最大距離が 1.0 になるように、中心位置と円のサイズをスケーリングします。
  • 最も遠いものの座標が(1.0、0)になるように中心を回転させます

あなたは終わった。あなたは今、スケール/回転不変パターン検出器の誇り高い所有者です!! おめでとう!

これで、パターンを見つけて、提案どおりに変形し、中心位置と円のサイズを比較できます。

于 2012-04-11T16:19:07.307 に答える
0

あなたの質問は、SURFアルゴリズムが行うこととまったく同じように聞こえます。関心のあるグループを見つけて、回転と拡大縮小に影響されない方法でそれらをグループ化し、他の写真で同じオブジェクトを見つけることができます。

OpenCV と SURF を検索するだけです。

于 2012-12-13T04:29:20.367 に答える