web-dev-qa-db-ja.com

OpenCVからの7つのHu不変モーメント関数の意味

私は、7つのhu不変モーメントが、オブジェクトを独立して認識するために、オブジェクトの平行移動、回転、およびスケール変更のためのものであることを理解しています。

そのため、OpenCVの関数「moments」を使用して中心モーメントを抽出し、次に関数HuMomentsを使用して次の2値化画像の7つの不変モーメントを取得しました。

enter image description here

私の最初の質問は、OpenCVの関数「moments」の使用に関するものです。 2番目のパラメータは「binaryImage」です。これはバイナリイメージなので、trueに設定しました。大丈夫ですか?

私の2番目の疑問は、関数「HuMoments」の出力に関するものです。つまり、7つのhu不変モーメントです。このデータがわかりません。どのデータが回転に関連し、何が平行移動に、そして何がスケール変更に関連しますか?.

どうもありがとう!、乾杯!

17
andrestoga

最初の質問:

画像に単一のオブジェクトがあるので、そうしても問題ありません。より多くのオブジェクトがあり、それぞれのモーメントを見つけたい場合は、輪郭を使用します。訪問: http://opencvpython.blogspot.in/2012/06/contours-3-extraction.html

2番目の質問:

(あなたの質問を見て、私も考えています)

HuMomentsは、1962年にMing Kuei Hu氏の論文「 モーメント不変量による視覚パターン認識 」で明らかになりました。

その論文で、彼はそれらを説明しています(もちろん、高い数学の内容の助けを借りて)。必要に応じて確認できます。

彼は次のように述べています:

定理:中心モーメントは、変換中の不変量です。

Moments()関数を使用してモーメントを見つけると、spatial moments (Mji), Central Moments (MUji) and Central Normalized Moments ( NUji)の3種類のモーメントが返されます。 moments() のドキュメントを確認してください

セクション4-Cの終わりに、Huは、7つの関係( ここにアクセスしてそれらを確認 )のうち、最初の6つは平行移動、サイズ、回転に対して不変であると述べていますが、seventh one is skew invariant, which helps to distinguish mirror images.

Huモーメント値の意味についてよく調べました。しかし、すべての論文は同じダイアログを述べています:" Seven Hu Moments are calculated from Central Moments which are invariant to size, position and orientation ".彼らは個々の価値観が何を意味するかを言いません。

そして、ゲイリー・ブラツキー氏によるOpenCVの古典的な本「LearningOpenCV」は、私たちにもっと探求するように告げるいくつかの洞察を与えました。 (254ページ参照)

13
Abid Rahman K

2番目の質問に答えるには:

不変の瞬間には意味がないと思います。それらは、どのようにシフト、回転、またはスケーリングされても、特定の形状に対して一定であることが単に保証されています。

あなたがそれらについて知りたいように聞こえる種類の意味:

どのデータが回転に関連し、何が平行移動に、そして何がスケール変更に関連していますか?

定義上、これらはすべて回転、平行移動、およびスケールに関連していないため、まったく意味がありません。ただし、一度は簡単に同様の質問をすることができますが、他のプロパティについては、たとえば次のようになります。

角の数、真円度、または幅と高さの比率に関連するデータは何ですか?

ここで、これらの瞬間は、関連させたい任意のプロパティに関連していないことは明らかだと思います。したがって、答えは、意味がないということです。

それで、それは私たちをどこに残しますか?これにより、2つのオブジェクトを比較して、それらの「形状」が類似しているかどうかを確認したい場合(「形状」とは、回転、平行移動、スケールの変化を気にしないことを意味します)、hu不変モーメントを計算できます。そしてそれらを比較します。これらの値が「ほぼ」等しい場合、形状は「ほぼ」同じであると言えます。次に、これらの瞬間がさまざまな形の間で大きく異なることを期待します-そして、それらがそうであるかどうかは、おそらく他の誰かが答えることができる興味深い質問です。

たとえば、正方形のモーメントの一部(3つだけを示し、簡単にするために範囲が0から1)を計算するとします。

(0.5, 0.5, 0.5)

次に、円が次のようなものを与えることを期待します。

(0.5, 1, 0.5)

そして楕円形:

(0.5, 1, 0.7)

これにより、これらの形状を比較できる場合があります。未知の形状のモーメントを計算して取得する場合:

(0.51, 0.98, 0.47)

それはおそらく(うまくいけば)円です。しかし、星があなたに与えた場合:

(0.2, 0.6, 0.9)

三日月も同じことをしましたが、それはあまり役に立ちません。ただし、7つの瞬間があるため、形状の重要な特徴と見なされる可能性のあるものによって、少なくともいくつかの瞬間が大幅に変化する可能性がかなりあります。

お役に立てれば。

3
Cameron Lee