【发布时间】:2014-03-07 12:02:31
【问题描述】:
我目前正在使用 Haar 分类器来检测对象。 途中,没看懂 minNeighbors 参数是什么,什么是 它代表? 其实我不明白检测的邻居是什么 候选矩形。请问有人可以定义相邻的想法吗?
【问题讨论】:
标签: opencv object-detection haar-classifier
我目前正在使用 Haar 分类器来检测对象。 途中,没看懂 minNeighbors 参数是什么,什么是 它代表? 其实我不明白检测的邻居是什么 候选矩形。请问有人可以定义相邻的想法吗?
【问题讨论】:
标签: opencv object-detection haar-classifier
Haar 级联分类器使用滑动窗口方法。如果您查看级联文件,您会看到一个大小参数,该参数通常是一个非常小的值,例如 20 20。这是级联可以检测到的最小窗口。因此,通过应用滑动窗口方法,您可以在图片中滑动一个窗口而不是调整它的大小并再次搜索,直到您无法进一步调整它的大小。因此,每次迭代 haar 的级联分类器都会存储真实输出。所以当这个窗口在图片中滑动时重新调整大小并再次滑动;它实际上检测到许多误报。您可以通过给出 minNeighbors 0 来检查它检测到的内容。所以这里有一个例子:
因此,由于调整滑动窗口的大小和很多误报,所以有很多人脸检测。因此,为了消除误报并从检测中获得正确的人脸矩形,应用了邻域方法。就好像它在其他矩形附近不是可以的,你可以进一步传递它。所以这个数字决定了需要多少邻域才能将其作为面部矩形传递。 1 时在同一张图片中:
因此,通过增加此数字,您可以消除误报,但要小心,通过增加它,您也可能会丢失真阳性。当它是 3 一个完美的结果:
【讨论】:
minNeighbors – 指定每个候选矩形应保留多少个邻居的参数。
也就是说,这个参数会影响检测到的人脸质量。值越高,检测次数越少,但质量越高。
这个参数背后的想法是检测器将以多尺度样式运行,同时遵循滑动窗口策略。在此步骤之后,即使是单个面部区域,它也会为您提供多个响应。该参数倾向于过滤这些响应,就像通过设置下限阈值一样,即仅当此人脸的响应数高于minNeighbors 时才会将其计为有效人脸。
要了解CascadeClassifier::detectMultiScale的其他参数,请查看我之前回答的this post。
【讨论】: