如图所示,存在二元多边形图像。我想找到图像中相对于X轴的主方向。我已经显示了主方向和X轴与蓝线。这可以使用PCA完成但我的问题是这样一个小矩形将有大约1000个像素,我必须找到大约100个多边形的主方向(多边形可以是任意形状)。
我想到的一种方法是: 将矩形投影到以一定间隔(例如)5度定向的线上的项目。具有最大方差的投影是期望的投影轴,因此这是期望的角度。但这也属于贪婪的方式,因此需要时间。有更聪明的方法吗?
此外,如果有人能够解释使用PCA执行此操作的确切程序,那将会很有帮助。我知道步骤: 1.采用协方差矩阵。 2.获得对应于最大特征值的顶部特征向量 - >这将是主要方向。
但我在下面的陈述中感到困惑,我经常在各处阅读:
列向量:[0.5 0.5]
是第一个主成分,它给出了最大方差的方向。因此,我可以精确计算旋转数据的角度,使其与X轴平行。
答案 0 :(得分:1)
计算与最高特征值相关联的特征向量。调用v。标准化v.v = v / norm(v);
它与水平方向之间的计算角度:angle = acos(sum(v。* [1,0]))
旋转角度,变换矩阵T = [cos(-angle)-sin(-angle); sin(-angle)cos(-angle)],将所有点乘以该矩阵。对所有多边形都这样做。