0

如图所示,有一个二进制多边形图像。我想找到图像中相对于 X 轴的主要方向。我用蓝线显示了主要方向和 X 轴。这可以使用 PCA 完成,但我的问题是这样一个小矩形将有大约 1000 个像素,我必须找到大约 100 个多边形的主要方向(多边形可以是任意形状)。

我想到的一种方法是:将该矩形投影到一条直线上,该直线以 5 度的间隔(比如)度数定向。具有最大方差的投影是所需的投影轴,因此这是所需的角度。但这也属于贪婪的方法,因此需要时间。有更聪明的方法吗?

此外,如果有人可以解释使用 PCA 执行此操作的确切程序,那将很有帮助。我知道步骤: 1.取协方差矩阵。2. 获取对应于最大特征值的顶部特征向量 -> 这将是主要方向。

但是我对以下我经常在各处阅读的声明感到困惑:

列向量:[0.5 0.5]是第一个主成分,它给出了最大方差的方向。所以我可以准确计算我应该旋转数据的角度,使其平行于 X 轴。

在此处输入图像描述

4

1 回答 1

2

计算与最高特征值相关的特征向量。称之为 v. Normalize v. v = v/norm(v);

计算它与水平方向之间的角度:angle=acos(sum(v.*[1,0]))

旋转 -angle,变换矩阵 T = [cos(-angle) -sin(-angle); sin(-angle) cos(-angle)],将所有点乘以该矩阵。对所有多边形都这样做。

于 2013-02-14T04:58:00.763 回答