【问题标题】:How to merge overlapped detections for each detected object?如何合并每个检测到的对象的重叠检测?
【发布时间】:2023-03-11 20:27:02
【问题描述】:

我开发了一个使用 HOG 描述符测试对象检测的软件。

  • 我使用窗口扫描方法来检测目标对象类的实例。
  • 使用不同尺寸的扫描窗口对图像进行多次检查,以检测不同尺寸的物体(多尺度检测)。这样,每个对象可能会被检测到多次。

每个对象的重叠检测(不同位置和大小的多个边界框)的存在需要一个程序将它们组合成一个边界框,其中包括与同一对象相关的所有检测。如何合并每个对象的多个检测?

【问题讨论】:

  • 合并是什么意思?这些是不同时间的同一个 Rect 对象还是不同的对象?
  • @Chubsdad:如何将重叠检测组合成一个检测?
  • 那么,您只想知道您已经处理了一个“矩形”并跳过进一步检测“矩形”吗?
  • @Chubsdad:不...我改进了我的问题以更好地描述我的问题。

标签: c++ image-processing opencv object-detection


【解决方案1】:

这可以使用OpenCV groupRectangles function 来完成,它根据相似性参数对大小和位置相似的矩形进行聚类。虽然,根据参数group_threshold,我相信这个功能可能已经在HOG detectMultiScale function中使用了:

void gpu::HOGDescriptor::detectMultiScale(
    const GpuMat& img,
    vector<Rect>& found_locations,
    double hit_threshold=0,
    Size win_stride=Size(),
    Size padding=Size(),
    double scale0=1.05,
    int group_threshold=2
)

当然,您必须尝试调整相似性标准以满足您的需求。

【讨论】:

  • 定义这个函数的OpenCV库是什么?
  • 函数groupRectangles在objdetect.hpp中定义,在模块objdetect中。 (至少在 OpenCV2.4.4 中是这样)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 2020-10-17
  • 2022-07-19
相关资源
最近更新 更多