尽可能快地从阵列中对重叠矩形进行分组

时间:2015-02-07 14:25:18

标签: java computer-vision

我正在尝试制作自己的计算机视觉项目。在我进入现实世界之前,我决定从匹配计算机生成的对象开始。第一次测试很顺利,它能够匹配一个物体并且能够正确识别颜色。搜索绿色方块时,这是我的结果:

image description
我在搜索功能

返回的位置绘制红框

然而,一旦环境更加模糊,就会有更多可能匹配的位置。甚至可能有更理想的目标。这是计算机游戏的截图:

image description
搜索到的对象位于红框中。我的搜索基于相似的颜色,尤其是平均颜色之间的距离。如果我突出显示测试程序中的所有搜索结果,这就是我得到的结果:

image description

显然,在我的物体所在的位置上有很多矩形。我需要对它们进行分组,然后只选择其中一个。

因此问题是:如何对重叠的矩形进行分组并将数组中的每个组分开?

1 个答案:

答案 0 :(得分:-1)

在您的图片enter image description here中,您有一组用红色绘制的N矩形,您需要一种算法,为您提供k代表性矩形和此特定图像{{1将等于2.

您需要的算法类似于http://en.wikipedia.org/wiki/Cluster_analysis,其中您需要聚类的数据集是矩形中心的集合,这意味着聚类由2D点表示,该点是代表的中心矩形。

群集算法可以是http://en.wikipedia.org/wiki/K-means_clustering,您可以在此选择k,如此处所述http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set

获得k后,算法将为您提供k代表中心;然后对于每个矩形,算法将告诉您矩形属于哪个簇。然后可以用这种方式计算代表性矩形:它的中心是簇,宽度是属于簇的所有矩形的平均宽度,高度是属于簇的所有矩形的平均高度。 / p>