【问题标题】:Principal direction in a binary image二值图像中的主方向
【发布时间】:2013-02-14 02:54:03
【问题描述】:

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

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

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

但我对以下我经常在各处阅读的陈述感到困惑:

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

【问题讨论】:

  • 如何找到惯性矩(参见en.wikipedia.org/wiki/…),然后通过计算其特征向量得到它的主要方向
  • 我真的不明白为什么你不能只使用 PCA,你有 1000 个像素,即 1000 个二维向量。计算它的协方差矩阵是微不足道的,并且应该立即找到特征值和特征向量。你想太多有什么具体原因吗?

标签: matlab angle pca


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多