我已经应用了三种不同的方法来获取点集,如下所示。 每种方法都会产生一个点向量。每种方法都有不同的颜色,分别是红色,蓝色和绿色。
这是组合的图像,覆盖了所有三组点
正如您在合成图像中看到的那样,所有三个集合都“同意”存在点(即通常位于完全相同的点)。我想找到这些特殊的点,并将它们组合成一个坐标。我不确定从哪里着手解决这个问题。我研究了K-means聚类,但是对我来说,问题似乎是K-means将所有点聚类并取周围点的平均值,从而使聚类中心偏离原始位置。我可以遍历存储点的所有向量中的所有点,但是随着这些图像随着点的增加而变大,它变得非常昂贵且效率低下。
有人对如何解决此问题有任何提示吗?我一直在使用C ++的OpenCV。
答案 0 :(得分:1)
名义上,您要做的是考虑三组点上完整的三方图,其边缘按距离加权。然后按重量顺序选择边缘,直到出现三角形;将这些点称为对应的集合,选择(说)其质心来表示它们,然后从图中删除。当边缘长度超过某些公差时停止。
这种方法的数学理由是它独立于点排序(在极不可能的情况下,点之间的距离存在问题)。
该算法的实用实现(针对大量点)涉及一种搜索数据结构,该结构可以快速找到附近点(不仅仅是最近的点):在阈值大小的情况下,可以使用四叉树或 k - d 树。可能您会为每个点集创建一个,然后将其他集的点用作查询点。