我正在拍照,还有照片中的一系列点。
有些点彼此接近,有些点没有任何“邻居”。我正在寻找一种方法来找到由具有许多邻居的点形成的子图像,最终它们之间具有给定的最大距离。
以下是一个例子:
正如您在图像中看到的,有多个点,一些是接近的,一些没有任何近邻。我想通过检查图像中的 spot 来找到一个矩形,其中多个点位于非常近的范围内。它总是一个矩形,同一图像中可能有多个矩形/斑点。
我正在使用AForge(C#)库进行一些图像处理。搜索了执行此操作的算法,但没有找到太多。我很确定有一个算法用于这个目的,我还没有找到它。
任何建议都表示赞赏。
答案 0 :(得分:2)
我不知道AForge图书馆,但是如果你没有多少积分(比如示例中),那么一个简单的最近邻搜索算法就好了。
基本上你只需选择一个点并尝试在阈值内找到它的邻居。
这些邻居必须存储在某种数据结构中(例如数组)。如果没有其他邻居,请从找到的邻居开始重复搜索,依此类推。
最后,您将拥有一组邻域,您只需选择最大的集合(点数最多的集合)。
然后只计算这些点(角点)周围的矩形。
假设大多数点位于您正在寻找的矩形内,您可以只计算一个"中心点"所有点数(平均值)。从这一点开始,您将查找距离最近的点并从那里开始最近邻搜索。在这种情况下,您将只有一组点,您可以再次构建矩形。