5

首先让我提供一些关于我正在尝试做的事情的信息。

我正在使用轮廓人脸解决人脸验证问题,我的第一步是人脸检测。我正在使用带有“haarcascade_profileface.xml”的 OpenCV 人脸检测器。问题是,检测器无法始终如一地找到人脸。我的意思是不一致,它在某个区域找到一张脸,但有时它会发现这张脸更大,有时更小,有时两者兼而有之。我希望它始终找到与面孔相同的区域。

我正在添加一些图像以更好地说明我的问题。你可以在这里找到它们。

我应该怎么做才能克服同一区域中的这种多人脸检测(重叠人脸检测)?

我首先想到的是增加 minNeighbors 参数,但这会导致检测率下降,所以我不想这样做。然后我想在面部图像上应用一些图像稳定算法,但我认为它太昂贵了。如果有人能给我一些关于克服这个问题的建议,我会很高兴。

我应该提到我使用的是 OpenCV 2.4.5,并且我将 minNeighbor 参数设置为 4,scaleFactor 为 1.75,并且没有设置任何大小限制。

提前致谢,

问候,

居内

4

2 回答 2

2

如果您从视频中检测人脸,您可以在边界框上应用过滤器以保持边界框平滑变化。它将减少面部边界框中的那些“不一致”。

CurrentFrameBoundingBox = a*PrevFrameBoundingBox + (1-a)*DetectedBoundingBox

当 a 越大时,它会给前一帧边界框更多的权重并减少不一致。

您对边界框中的每个坐标执行此操作。

于 2013-08-16T14:31:58.363 回答
0

也许您可以对原始边界检测框进行定制,以满足您的需求。如果我没记错的话,OpenCV 正在过滤或聚类这些原始结果,因为分类器会为同一个对象多次触发。如果您对 OpenCV 中的例程不满意,您可以尝试其他基于密度的聚类方法。或者您可以简单地取这些原始结果的中位数。

于 2014-10-18T11:31:08.217 回答