数据二维地图中的主要方向

信息处理 图像处理 算法 各向异性扩散
2022-01-08 19:49:55

这可能是一个非常简单的问题。我们将不胜感激任何评论、指导或完整的解决方案。然而,我们更喜欢不完整的解决方案,但更喜欢新颖实用的想法。
- 如何找到变化的主要方向,即下例图中的主对角线(东北,西南)?
欢迎任何编码或片段的算法和想法。

在此处输入图像描述

更新:
我们发现接受的答案中提到的过程在其最简单的实现中几乎是PCA(主成分分析) 。PCA 工作得非常好。由此产生的方向在视觉上与我们所期望的完全匹配。

2个回答

您可以根据高程数据计算协方差矩阵。属于较大特征值的特征向量会给你主要的变化方向:

http://en.wikipedia.org/wiki/Covariance_matrix

这里有一些想法:

  1. 如果轮廓不在单独的数据结构中,请使用边缘跟踪(又称“轮廓跟踪”)算法来跟踪每个轮廓。一旦你有了轮廓,找到相距最远的两个点。一旦你有了相距最远的两点(费雷特的直径),取这些点的中点,投影出一条垂直线,然后检查你可能是一个粗糙椭圆形的短轴。检查第二远点对及其“短轴”、第三远点等。
  2. 从最内轮廓的质心,沿径向向外扫描。跟踪每个轮廓的交叉点。具有最大平均轮廓到轮廓距离的径向方向(或径向方向组)将具有最平缓的坡度和最长的距离。
  3. 执行“水滴”测试。这需要一点物理知识。想象一下,在你的顶峰(最里面的轮廓内的某个地方)有一滴水或球。将其推向某个径向θ。给定重力和名义上无摩擦的表面,计算下落/球到达底部水平面时的速度。

对于上述任何技术,请考虑从 0 到 179 的角度,即使您可以使用径向技术(0 到 359 度)。如果有多个峰值响应,请找到具有较大响应的更多邻居的最长半径(或其他)。