根据眼睛定位的流程,一般分为以下几步:眼睛区域初定位,噪声去除,眼睛的精确定位。
1 眼睛区域初定位,对正面人脸还是比较好确定的,但是当人脸发生姿态变化时,如何较准确获取,是个难题。当然有人用二值化眼睛区域的方法,但是不同光照,不同人脸的阈值不太好定。而且图像处理领域,凡是涉及到阈值的,都是比较头疼的问题(除非那种阈值很明显的问题)。所以,这里尽量避免直接求阈值,来确定眼睛位置。大概分为以下几步:
(1)3*3算子腐蚀图像,并对其进行Gabor变化;
(2)对Gabor变化后的人脸上半部分做投影,可以大概获取两只眼睛的横坐标。
(3)找出两只眼睛区域的最大灰度;
(4)以最低灰度的0.92倍作为阈值,讲眼睛区域进行二值化:
(5)检测二值化区域:
2 噪声去除
其实在初定位中就已经用到Gabor了,用它对人脸处理后,不仅可以帮助去除噪声的影响,其实还可以减少光照阴影的影响。
图一 定位结果 图二 Gabor处理效果一 图三 Gabor处理效果二
以右眼为例,分别对图二和图三进行投影,获取眼睛的纵坐标和横坐标,投影曲线如下:
经过Gabor处理后的曲线更加的平滑,更容易判断波谷的位置。
3 精确定位
第二步中用到的积分投影,就是改进的投影方式,在初定为区域内投影的效果。本人采用的是最小邻域均值投影,大家可以从网上查到具体实现方法。
当然,如果想定位准确,还需要做些细致的工作:比如我们可以先预判人脸的倾斜角度,这样就可以把Gabor变换的方向性用起来,这样变换后的人脸,投影曲线更加平滑,容易判断眼睛位置。具体细节太多,在此不一一赘述。
4 定位效果
在此,感谢那些在工作中给我提过意见,开会时给我提过更高要求的同事们,让我不断去改进和完善,不积跬步,无以至千里!