给定一组点的,我怎么接近其形状的主轴线?
-
05-09-2019 - |
题
给定“形状”由用户绘制,我想“正常化”它,以便它们都具有类似的大小和方向。我们公司是一家集点。余可使用边界框或近似圆的大小,但方向是比较麻烦一些。
在正确的方式做到这一点,我认为,是计算 majoraxis的其边界椭圆。要做到这一点,你需要计算的的特征向量:// en.wikipedia.org/wiki/Covariance_matrix”相对= “nofollow noreferrer”>协方差矩阵。这样做很可能将是我需要的方式太复杂了,因为我在寻找一些好足够的估计。采摘最小值,最大值和20个随机点可能会有一些首发。有一种简单的方法来接近这个?
解决方案
您会被计算2×2矩阵,它可以用几个简单的公式来完成的特征向量,所以它不是那么复杂。在伪代码:
// sums are over all points
b = -(sum(x * x) - sum(y * y)) / (2 * sum(x * y))
evec1_x = b + sqrt(b ** 2 + 1)
evec1_y = 1
evec2_x = b - sqrt(b ** 2 + 1)
evec2_y = 1
您可以甚至求和只有一些点来获得的估计,如果你期望的点您选择的子集,将代表的全套做到这一点。
修改强>:我想x和y必须被转换成零均值,即,减去从所有的x意味着,y个第一(eed3si9n)
其他提示
下面有一个想法......如果你对点进行线性回归,并使用所产生的直线的斜率是什么?如果不是所有的点,它们的至少一个样本。
在R ^ 2值也会给您关于一般形状的信息。越接近0,越圆/均匀形状(圆/平方)。越接近1,越伸出形状(椭圆形/矩形)。
这个问题的最终解决方案运行 PCA 结果 我希望我能找到一个不错的实现,供你参考以...
不隶属于 StackOverflow