【问题标题】:Group overlapping rectangles from array as fast as possible尽可能快地将数组中的重叠矩形分组
【发布时间】:2015-02-11 17:31:02
【问题描述】:

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


我在搜索函数返回的位置上画了红框

但是,一旦环境更加模糊,就会有更多可能的匹配位置。甚至可能还有更多期望的目标。这是电脑游戏的截图:


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

显然,在我的对象所在的位置有大量的矩形匹配。我需要将它们分组,然后只选择其中一个。

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

【问题讨论】:

    标签: java computer-vision


    【解决方案1】:

    在您的图像 中,您有一组用红色绘制的N 矩形,您需要一种算法来为您提供k 代表矩形,并且对于这个特定的图像k 将等于2。

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

    例如,聚类算法可以是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代表中心;然后对于每个矩形,算法会告诉你矩形属于哪个簇。那么代表矩形可以这样计算:它的中心是簇,宽度是属于簇的所有矩形的平均宽度,高度是属于簇的所有矩形的平均高度。

    【讨论】:

    • 你好。感谢您发布此信息。虽然它可以用来解决我的特定问题,但我真的更喜欢严格的数学分组。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多