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

Big*_*gle 9 math matlab octave computer-vision

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

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

我正在查看此链接:http: //en.wikipedia.org/wiki/Image_moments

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

Mar*_*n B 24

通过"第二时刻",文档意味着第二个中心时刻.

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

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

如果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);
Run Code Online (Sandbox Code Playgroud)

现在,这与椭圆有什么关系?那么,你在这里做的实际上是为你的数据拟合多元正态分布.协方差矩阵决定了该分布的形状,多元正态分布的等高线 - 等待它 - 是椭圆形!

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

[V, D]=eig(Sigma);
Run Code Online (Sandbox Code Playgroud)

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

sqrt(1-(b/a)^2)
Run Code Online (Sandbox Code Playgroud)

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