12

我目前正致力于在 Octave 中复制 Matlab 的 regionprops 函数的一些功能。但是,我对功能的一个子集有点犹豫。“偏心”、“MajorAxisLength”、“MinorAxisLength”和“Orientation”属性是我的症结所在。在文档中,它们都源自“...与区域具有相同秒矩的椭圆”。

所以我的问题是,这些第二时刻是什么,我如何找到它们?

我在看这个链接: http ://en.wikipedia.org/wiki/Image_moments

老实说,这让我更加困惑。谁能指出我对初学者更友好的东西?谢谢。

4

3 回答 3

26

“第二个时刻”,文档意味着第二个中心时刻

对于一维数据,这将是方差(或标准差的平方)。

在您的情况下,您有二维数据,第二个中心矩是协方差矩阵

如果X是您所在区域中点的 n×2 矩阵,您可以Sigma像这样在 MATLAB 中计算协方差矩阵(未经测试):

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

我不太确定,但这不是指矩的统计概念(如矩生成函数):

中心矩(关于均值的矩):
   mu_k = E[(X − E[X])^k],其中 E 是期望值

因此前四个矩分别是:{1,方差, 偏度, 峰度}。
但是我可能又错了;)

于 2009-10-07T19:38:49.747 回答
0

不完全是您寻求的答案,但它可能会帮助某人。

我写了这本关于力学主题的书,并编写了 m 文件来计算面积惯性矩:

使用 MATLAB 5 掌握力学

它的代码可以在这里找到:

文件交换

第 9 章应该很有趣。我怀疑您可以使用代码作为起点。

于 2009-10-07T17:54:21.327 回答