脸部特征检测 - 眼角,眉毛

时间:2014-03-05 00:49:44

标签: java c++ opencv image-processing face-detection

我正在使用OpenCV4Android为手机创建基本的情绪检测系统。我的系统已经能够找到嘴并进行一些预处理。从Canny获得face对象有很好的结果:

示例Face1:https://dl.dropboxusercontent.com/u/108321090/FACE%20%282%29.png

示例Face2:https://dl.dropboxusercontent.com/u/108321090/FACE%20%281%29.png

红色矩形是由级联找到的区域。我将那些保存为Mat对象。

蓝点是我需要找到的点。问题是,我的眉毛和眼睛都在同一部分。

另外,有些情况下眉毛与眼睛直接相连(在某些情绪状态下)。很难获得一些积分。我也有正常的图像(当然)和阈值的图像,它们对眉毛形状也很有趣 - 但我失去了一些其他物体(嘴巴 - 因为光线不好,眼睛因为光线不好而无所谓)总是很清楚。当然我可以改变一些阈值,因为我不需要它来寻找其他功能。就像我说嘴巴做得好。眼睛/眉毛离开了。

示例Face3:https://dl.dropboxusercontent.com/u/108321090/Screenshot_2014-01-17-01-33-14.png

示例Face4:https://dl.dropboxusercontent.com/u/108321090/Screenshot_2014-01-17-01-26-33.png

Examplary Face5(有点问题,眼睛不见了,但如果我把它们定位为localy而不是它的全球那么好)https://dl.dropboxusercontent.com/u/108321090/Screenshot_2014-03-05-01-30-48.png

Exampalary Face6(眉毛与眼睛相连)https://dl.dropboxusercontent.com/u/108321090/Screenshot_2014-03-05-01-28-21.png

我想问你是否可以向我提供与检测眼睛和眉毛动作单元有关的任何材料/想法。

1 个答案:

答案 0 :(得分:1)

如果你能找到一个眼睛/眼睛单位,你可以跟踪它并将情绪与那里的相对运动联系起来,而不是试图将眼睛与眉毛分开。您的前两个示例面是渐变,而其余的是阈值灰色调。我宁愿使用渐变,因为灰色调会受到光线和阴影的影响。

我也会避免使用Canny边缘检测器,因为它是一个高度非线性和非稳定的算子,用于匹配连续帧,因此用于运动检测。我宁愿使用更简单的Sobel和某种运动检测,但只有在跟踪减去全局头部运动之后。

关于情感检测的有趣工作是基于Kinect完成的,虽然它需要一些离线培训,但确实有效,请参阅faceShift。正确处理(在将特征映射到情绪之前)的一个很好的测试是试图将面部模型与目标面部同步 - 某种虚拟化身。