在具有标签约束的邻居中对2D点进行分组

时间:2017-12-20 18:55:47

标签: c++ opencv grouping

我在2D空间中有一组点。这些点中的每一个都是具有以下字段的结构类型:

  • 2D坐标(x,y)
  • 标签(标签间隔可以从1到4。)

我想将距离一个点的预定义半径R内的2D空间中的所有点分组。因此,如果点P1接近点P2,则它们被分组。如果P2接近P3 ...... P1,P2和P3将被认为是在同一组中,尽管P1和P3不在所需的距离。

然而,对我来说问题是,两个具有相同标签的点不能在同一组中。

重要的是要注意,可能会发生两个具有相同标签的点不在半径范围内,但是,在它们的中间还有另一个点,它们都在正确的距离内。

有没有正确快速的C ++方法?

编辑:我上传了一些照片以便于理解。

算法的起点如下:

First step

每种颜色代表不同的标签,绿色的点都有Label = 1,红色的标签= 2 ...所以现在,下面的步骤将根据距离对这些点进行分组

Distance grouping

然而,在底部组中,有两个绿点。这是必须满足的条件,而不是同一组中同一标签的两个点。这将导致两种不同的解决方案,这就是我想要的解决方案。 (我真的不在乎哪一个)

Solution 1(绿点自己解开了一个小组)

Solution 2(红点和绿点是另一组)

0 个答案:

没有答案