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是短轴的长度.
| 归档时间: |
|
| 查看次数: |
12673 次 |
| 最近记录: |