给定“形状”由用户绘制,我想“正常化”它,以便它们都具有类似的大小和方向。我们公司是一家集点。余可使用边界框或近似圆的大小,但方向是比较麻烦一些。

在正确的方式做到这一点,我认为,是计算 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 结果 我希望我能找到一个不错的实现,供你参考以...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top