3.1 预处理
预处理常常有以下几个目的:把图像变成便于后续处理的形式;提高对比度,抑制背景而突出面部特征;去除噪声和其他有害的信息。在我的应用中,把图像变成分合算法能够处理的二值化图像是预处理最重要的功能。其次,希望预处理能够提高二值化前的对比度,把面部器官清晰地突出出来,这样加上合适的二值化方法,就能够保证二值化后的图像中,面部器官以黑色特征块的形式被尽量完整而独立地保留下来。
3.1.1 图像对比度的增强
增强图像对比度有很多种方法,常见的有“S”形变换,直方图均衡化方法等等(参见Kenneth R. Castleman, Digital Image Processing(4)),都是十分经典而使用很广的,这里就不赘述其具体实现了。简单地说,“S”形变换办法将灰度处于某一范围内(比如灰度很大和很小,或者灰度取值处于中间)的像素的灰度分布差距拉大,从而使对比度提高,这是以牺牲其他灰度范围的对比度为代价的。直方图均衡化则把像素的灰度分布尽量展开在所有可能的灰度取值上,同样能够使对比度提高。
尝试把这些方法应用到面像定位的预处理中时,效果却不好。原因是这些方法增强对比度没有针对性,结果往往不仅不能突出脸部器官的特征,有时还会造成特征的损失。尤其是直方图均衡化,其结果往往是不能忍受的。
在这样的情况下,我根据实际的需要找到了一种能够突出脸部特征,有针对地增强对比度的方法。
众所周知,边缘提取是特征提取中的一种重要方法。利用边缘提取,可以把图像中灰度发生跳跃变化的地方全部显现出来。脸部器官(尤其是眼睛和嘴)表现为在整个脸的较均匀灰度的背景上的暗团块。所以利用边缘提取可以得到脸部器官的轮廓和内部发生灰度突变的所有边缘。
但是实践证明直接采用边缘提取来提取脸部器官的特征,其效果并不好。边缘提取可类比于微分运算,对于噪声十分敏感,容易造成本不相连的区域粘连起来。我现在采用的办法是:对输入的原始灰度图像做Sobel运算(4)提取边缘,得到的是灰度的边缘图像(边缘特征用较小的灰度值,即较偏黑色来表示)。将边缘图像按照一定的比例加到原始图像上,再做一个线性变换保证所有灰度值落在0~255的有效灰度范围之内。这样,原始图像中边缘特征就被加强了,脸部器官的特征从而也被加强了,和脸部较为均匀的灰度形成了鲜明的对比。
从图7可以看到原始灰度图像,经Sobel运算提取了边缘之后的灰度边缘图像,以及相加处理完毕的图像(原始图与边缘图比重为5:1)作为比较,使用“S”形变换(参数α(4)为0.5)和直方图均衡化的结果也显示在图中。
