12

私は現在、Matlab の regionprops 関数の機能の一部を Octave に複製する作業を行っています。ただし、機能のサブセットに少し問題があります。「偏心」、「MajorAxisLength」、「MinorAxisLength」、および「Orientation」プロパティは、私のこだわりです。ドキュメントでは、それらはすべて「...領域と同じ秒モーメントを持つ楕円」から派生しています。

だから私の質問は、これらのセカンドモーメントとは何ですか、どうすればそれらを見つけることができますか?

私はこのリンクを見ていました: http://en.wikipedia.org/wiki/Image_moments

正直なところ、それは私をより混乱させただけです。誰かがもう少し初心者に優しいものを教えてもらえますか? ありがとう。

4

3 に答える 3

26

ドキュメントでは、「第 2 のモーメント」とは、第 2 の中心モーメントを意味します。

1 次元データの場合、これは分散(または標準偏差の 2 乗) になります。

あなたの場合、2次元データがある場合、2番目の中心モーメントは共分散行列です。

Xが領域内のポイントの n 行 2 列の行列である場合、MATLAB で次のように共分散行列を計算できます(Sigma未テスト)。

mu=mean(X,1);
X_minus_mu=X-repmat(mu, size(X,1), 1);
Sigma=(X_minus_mu'*X_minus_mu)/size(X,1);

さて、これは楕円と何の関係があるでしょうか? ここで行っていることは、事実上、多変量正規分布をデータに適合させることです。共分散行列はその分布の形状を決定し、多変量正規分布の等高線は - 待ってください -楕円です!

楕円の軸の方向と長さは、共分散行列の固有ベクトルと固有値によって与えられます。

[V, D]=eig(Sigma);

の列はV固有ベクトル (つまり、軸の方向) になり、 の対角線上の値Dは固有値 (つまり、軸の長さ) になります。したがって、すでに「MajorAxisLength」と「MinorAxisLength」があります。向きは、おそらく主軸と水平線の間の角度です (ヒント:atan2主軸に沿ったベクトルを使用してこれを計算します)。結局偏心

sqrt(1-(b/a)^2)

ここで、a は長軸の長さ、b は短軸の長さです。

于 2009-10-08T16:03:29.230 に答える
1

I'm not exactly sure, but doesn't this refer to the statistical notion of moments (as in moment generating function):

Central Moments (moments about the mean):
   mu_k = E[(X − E[X])^k] ,    where E is the expected value

Thus the first four moments are respectively: {1, variance, skewness, kurtosis}.
But again I might be wrong ;)

于 2009-10-07T19:38:49.747 に答える
0

あなたが求めている答えとはまったく異なりますが、誰かの助けになるかもしれません。

私は力学をテーマにこの本を書き、面積慣性モーメントを計算するための m ファイルを書きました。

MATLAB 5 を使用して力学をマスターする

そのコードは次の場所にあります。

ファイル交換

第9章は興味深いはずです。コードを出発点として使用できると思います。

于 2009-10-07T17:54:21.327 に答える