人脸检测和裁剪

时间:2012-11-05 15:02:12

标签: machine-learning artificial-intelligence computer-vision face-detection face-recognition

项目:人脸检测

说明:我想在图像中检测并裁剪脸部。图像是通过网络摄像头捕获的,每张图像只有一张脸。我使用的是OpenCV人脸检测器,但我对裁剪不满意。因此,我开始使用STASM(http://www.milbo.users.sonic.net/stasm/)面部标志性检测器来裁剪图像.STASM使用OpenCV面部检测器在图像中查找面部,STASM在面部中找到地标。在光线不好的情况下,STASM的裁剪图像并不好,因为它并不能完全检测到面部。

  

1)我想知道任何更好的人脸检测算法。我的主要目标是从图像中裁剪脸部。

     

2)目前我正在使用STASM进行裁剪。在恶劣的光线条件下或在   如果未捕获整个或完整的脸部(前额到下巴),则STASM裁剪不可靠(输出将仅为眼睛或嘴唇)。在我的应用程序中,如果没有来自stasm的正确输出,或者如果面部没有被裁剪,那么我应该拒绝图像。怎么做?因此,我计划通过寻找眼睛来验证图像中的脸部。如果我的方法是正确的,如何从裁剪的图像中检测眼睛?

2 个答案:

答案 0 :(得分:3)

通过使用嵌套级联分类器检测脸部的眼睛,我在我的一个项目中取得了相当不错的成绩,因为它在交付的示例中没有。但后来我又使用了一个技巧:我将nestedCascade.detectMultiScale()的minNeighbors参数调低为0。

这意味着你会得到很多结果。可能会有一只眼睛被认出来。然后我检查结果在脸部的左侧和右侧收集的位置。收集点是实际的眼睛位置。

然后我旋转初始图像。旋转中心是我发现的脸部中心,旋转角度是检测到的眼睛之间的天使。然后我对旋转的图像进行另一次面部检测,并确保在nestedCascade.detectMultiScale()的参数中使用非常低的比例因子。

结果在大多数情况下是完全标准化的面部图像。当然,成功仍然取决于你的闪电条件有多糟糕。

答案 1 :(得分:1)

尝试使用OpenCV的眼睛检测器。并根据眼睛位置调整面部框。