查找最接近给定3D线集合的点的算法

时间:2019-06-21 18:46:35

标签: algorithm cluster-analysis computational-geometry

我需要一种可以解决以下问题的算法:查找最接近给定3D线集合的3D点,每条线均由一对点定义。

此图以图形方式显示此问题的设置。在这种情况下,从视觉上可以清楚地看到有2个“集群”点。

enter image description here

我认识到这是一个集群问题。我发现this算法是2D线的k中值。但是,它为二维线找到了预定数量的点。我发现均值漂移算法具有我需要的属性,但是对于点而不是直线。也许可以将均值偏移扩展到3D线中吗?

总结一下,该算法需要:

  • 找到一组3D点,以最小化到给定线组的距离(每条线由3D中的2个点定义)。
  • 自适应地找到此类点的数量。

编辑:

因为更多的人建议使用每对线之间最短距离的中点,然后对点进行典型聚类,所以我想展示这种方法的一些问题。

虽然此方法适用于单个群集,但对于两个群集,它们之间将存在大量点。仅考虑小于一定数量/比率的距离(例如,最大距离除以100)即可缓解这种情况。但是,此方法非常脆弱,因为它仅适用于聚类点之间具有相似距离的情况。

理想情况下,该算法将能够处理移动的聚类点。

对于上面显示的示例,绘制每对线之间的中点会产生this图,直观地显示了我上面提到的问题。

3 个答案:

答案 0 :(得分:2)

目前还不清楚如何对线进行聚类。根据什么标准?

您当然可以构建成对的距离矩阵并运行几乎所有聚类算法(例如HAC,PAM,DBSCAN)。那么问题是要使用什么距离(线之间的最小距离?)。

或者-因为您的所有行都很简单-值得尝试简单地在(a)串联点上进行k均值聚类,并使用一些排序逻辑(x较小的点排在最前面)或更简单(b)中间点每行。

在上面的示例中,我相当乐观,通过将中点与k均值聚类,您将接近所需的结果。

答案 1 :(得分:0)

您可以考虑采用这种方法:

  • 对于每对线,找到它们的minimum distance
  • 找到这对线之间最短路径线段上的点。
  • 此点从几何角度描述了这对线的最接近点
  • 将从成对的线中生成的所有点用作您选择的聚类算法的输入
  • 找到每个基于点的聚类的几何中心(您的聚类算法可能能够直接提供该几何中心,或者您可以找到分配给该聚类的所有点的geometric median。)

答案 2 :(得分:0)

回应这里的一些响应,一种选择是计算成对距离的矩阵。在下面链接的论文中,我们为此使用了光谱聚类。优点是可以直接考虑距离矩阵的特征值来确定聚类的个数。

据我所知,对 3D 线进行聚类的最大挑战是三角不等式不适用。因此,即使这些集群彼此相距很远,一条线也可能属于 2 个(或更多)集群。

https://ieeexplore.ieee.org/document/8069424

相关问题