从点阵列C#中检测矩形

时间:2017-01-20 08:36:21

标签: c# image-processing aforge imaging

我正在拍照,还有照片中的一系列点。

有些点彼此接近,有些点没有任何“邻居”。我正在寻找一种方法来找到由具有许多邻居的点形成的子图像,最终它们之间具有给定的最大距离。

以下是一个例子:

enter image description here

正如您在图像中看到的,有多个点,一些是接近的,一些没有任何近邻。我想通过检查图像中的 spot 来找到一个矩形,其中多个点位于非常近的范围内。它总是一个矩形,同一图像中可能有多个矩形/斑点。

我正在使用AForge(C#)库进行一些图像处理。搜索了执行此操作的算法,但没有找到太多。我很确定有一个算法用于这个目的,我还没有找到它。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

我不知道AForge图书馆,但是如果你没有多少积分(比如示例中),那么一个简单的最近邻搜索算法就好了。

  • 基本上你只需选择一个点并尝试在阈值内找到它的邻居。

  • 这些邻居必须存储在某种数据结构中(例如数组)。如果没有其他邻居,请从找到的邻居开始重复搜索,依此类推。

  • 最后,您将拥有一组邻域,您只需选择最大的集合(点数最多的集合)。

  • 然后只计算这些点(角点)周围的矩形。

假设大多数点位于您正在寻找的矩形内,您可以只计算一个"中心点"所有点数(平均值)。从这一点开始,您将查找距离最近的点并从那里开始最近邻搜索。在这种情况下,您将只有一组点,您可以再次构建矩形。