一个地区的第二时刻是什么?

时间:2009-10-07 14:56:47

标签: math matlab computer-vision octave

我目前正致力于在Octave中复制Matlab的regionprops函数的一些功能。但是,我对功能的一个子集有点挂断。 'Eccentricity','MajorAxisLength','MinorAxisLength'和'Orientation'属性是我的观点。在文档中,它们都来源于“......与区域具有相同的第二矩的椭圆。”

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

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

老实说,这让我更加困惑。任何人都可以指向一些更开始友好的东西吗?感谢。

3 个答案:

答案 0 :(得分:23)

通过“第二时刻”,文档意味着第二个central moment

在一维数据的情况下,这将是variance(或标准偏差的平方)。

在您的情况下,如果您有二维数据,则第二个中心时刻是covariance matrix

如果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);

现在,这与椭圆有什么关系?那么,你在这里做的实际上是为你的数据拟合multivariate normal distribution。协方差矩阵确定该分布的形状,以及多元正态分布的等高线 - 等待它 - are ellipses

椭圆轴的方向和长度由协方差矩阵的特征向量和特征值给出:

[V, D]=eig(Sigma);

V的列现在是特征向量(即轴的方向),D的对角线上的值是特征值(即轴的长度)。所以你已经拥有'MajorAxisLength'和'MinorAxisLength'。方向可能只是长轴和水平方向之间的角度(提示:使用atan2从沿主轴指向的矢量计算它)。最后,eccentricity

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

其中a是长轴的长度,b是短轴的长度。

答案 1 :(得分:1)

我不完全确定,但这不是指statistical notionmoments(如在生成函数中):

  

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

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

答案 2 :(得分:0)

不完全是你寻求的答案,但它可能有助于某人。

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

Mastering Mechanics using MATLAB 5

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

File Exchange

第9章应该是有意义的。我怀疑你可以使用代码作为起点。