首先让我提供一些有关我正在尝试做的事情的信息。
我正在使用个人资料面部处理面部验证问题,我的第一步是面部检测。我正在使用带有'haarcascade_profileface.xml'的OpenCV人脸检测器。问题是,探测器不能始终找到面孔。我的意思是不一致,它在某个区域找到了一张脸,但有时它会发现脸部更大,有时更小,有时两者都有。我希望它能够一直找到同一个区域。
我正在添加一些图片来更好地讲述我的问题。你可以找到它们here。
如何克服同一区域的多面检测(重叠面部检测)?
我想到的第一件事是增加minNeighbors参数,但这会导致检测率下降,所以我不想这样做。然后我想在面部图像上应用一些图像稳定算法,但我认为它太贵了。如果有人能就克服这个问题给我一些建议,我会很高兴的。
我应该提到我正在使用OpenCV 2.4.5并且我将minNeighbor参数设置为4,scaleFactor是1.75并且没有设置任何大小限制。
提前致谢,
此致
居内伊
答案 0 :(得分:2)
如果您从视频中检测到脸部,则可以在边界框上应用滤镜以保持边界框平滑变化。它将减少面部边界框中的“不一致”。
CurrentFrameBoundingBox = a * PrevFrameBoundingBox +(1-a)* DetectedBoundingBox
作为a越大,它将为前一帧边界框赋予更多权重并减少不一致性。
您可以为边界框中的每个坐标执行此操作。
答案 1 :(得分:0)
也许你可以在原始边界检测盒上做一个适合你需要的定制的meanshift聚类。如果我没记错的话,OpenCV正在过滤或聚类这些原始结果,因为分类器会为同一个对象触发多次。如果您对OpenCV中的例程不满意,可以尝试其他基于密度的聚类方法。或者你可以简单地取这些原始结果的中位数。