二进制图像中的主方向

时间:2013-02-14 02:54:03

标签: matlab angle pca

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

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

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

但我在下面的陈述中感到困惑,我经常在各处阅读:

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

enter image description here

1 个答案:

答案 0 :(得分:1)

计算与最高特征值相关联的特征向量。调用v。标准化v.v = v / norm(v);

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

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