基于Sobel与LDP特征的人脸识别算法研究*
2023-01-06俊刘从军
檀 俊刘从军,2
(1.江苏科技大学计算机学院 镇江 212003)(2.江苏科大汇峰科技有限公司 镇江 212003)
1 引言
随着信息技术的发展,身份识别与认证被广泛应用于人们的日常生活中,而人脸因为其唯一性和非接触性得到了更多的关注[1~3]。针对人脸识别,经典的特征提取算法有主成分分析[4~5]、线性判别分析,但在非理想的现实环境中,因为关照变化、拍摄角度、随机噪声的影响识别效果不够理想。为了提高真实环境中人脸识别的正确率,首先对采集到人脸图像进行充分的图像预处理,主要是利用改进的Sobel算子增强人脸中的结构和边缘部分,突出人脸的特征结构、突出人脸边缘与背景的区别,之后再分块进行LDP特征提取[6~8],以达到缩短识别时间和提高识别率的效果。
2 图像预处理
2.1 灰度化
实际生活中许多人脸图像不是在实验的理想环境中拍摄的,会受到现实环境的影响,为保证在不同光照、不同环境下同一个人的人脸图像配置成功,在一开始要先进行人脸图像的预处理,增强人脸信息。在预处理过程中主要有两部分工作:第一是图像灰度化,第二是锐化。
首先是图像灰度化[9],现实生活中绝大部分采集到的图像都是彩色,在RGB模型中,颜色是由三原色实现的,每个原色的取值范围是零到二百五十五。但是在颜色本身,很容受到光照、对比图的影响,即便是同一个人在不同的光照条件下,采集到的人脸图像也有很大的区别,不能为人脸识别提供可靠的信息,而且人脸识别过程中的特征提取,其关键在于计算梯度值。采用加权平均值算法得到图像的灰度图,其公式如下:
其中f(i,j)表示坐标为(i,j)的灰度值,R(i,j)为原图像中坐标为(i,j)的像素点的红原色值,G(i,j)为绿原色值,B(i,j)为蓝原色值。而且可以由此推论出图像中的灰度值的取值范围也是零到二百五十五。
2.2 Sobel
再利用Sobel算子对人脸图像进行锐化处理[10~12],从而增强人脸边缘和轮廓跳变部分。锐化公式如下:
其中G表示图像中任意一个像素点的梯度值,θ为梯度方向,Gx为横向梯度值,Gy为纵向梯度值。索贝尔算子模板如下式所示。
其实现原理为取图像中任意一个像素点先与SX做卷积运算得到该像素点的横向梯度值,再与SY做卷积运算得到该像素点的纵向梯度值,最后由锐化公式计算出该像素点的最终梯度值。
2.3 改进Sobel
传统的Sobel算子不论是水平方向上还是竖直方向上都是一个三阶的矩阵,因为算子的阶数较小,不能参考到更广范围内的灰度值变化情况,对人脸边缘部分不敏感,同时可能有双边缘响应问题。以传统Sobel算子为基础进行改进得到5×5的Sobel算子如下式所示。
改进后的Sobel算子相比传统Sobel算子在矩阵的阶数上多了两阶,可以提高平滑和差分的范围,对人脸边缘部分的变化更加敏感,而且还有抑制噪声的作用。采集到的人脸图像在经过灰度化、传统Sobel算子处理和改进Sobel算子处理后的变化图如图1所示。
图1 效果对比图
3 特征提取
3.1 LBP
在完成人脸图像的预处理之后,使用LDP即局部方向模式进行人脸图像中特征的提取。LDP是Jabid等在LBP(局部二进制模式)的基础上提出[13~15]。LBP算法的公式如下:
其中,LBP(xc,yc)表示选定像素的特征值,gc为选定像素灰度值,gp为外围像素点灰度值,除选定的中心像素点外其他像素点为8个。
其原理是选定图像中任意一个像素为中心定义一个3×3的矩阵,之后除选定像素点外的其他像素点与选定像素点比较灰度值大小,若前者大于、等于后者,则将其标记为1,若前者小于后者,则将其标记为0,最后从任意点开始按照特定方向依次取出标记值,得到一串二进制数,转成十进制,这个十进制数为该任意像素点的局部二进制模式特征值。提取过程如图2所示。
图2 LBP特征值
在图1中,选定灰度值为96的像素为中心得到一个3×3的矩阵,根据LBP算法进行标记可以一个八位二进制数00111100,转化为十进制为60,那么灰度为69的像素点的LBP特征值即为60。
3.2 LDP
从上面的公式可以看出LBP算法的基本思想容易理解、计算过程不复杂,而且对一致性光照的影响处理稳定,但是对于存在随机噪声和非一致性光照的人脸图像非常敏感,处理效果上不是很理想,为此Jabid等才提出了鲁棒性更好的LDP算法进行人脸图像的特征值提取。LDP算法的公式如下:
其中,LDP(k)为中心像素点的LDP特征值,|mk|为|mi|中最大的k个值,s(x)为符号函数。
Kitch算子模板如下式所示。
实现原理如下,因为LDP算法是在LBP算法基础上进行改进而得到的,所有开始的步骤是相同的,都是选定灰度化后的图像中任意一个像素为中心定义一个3×3的矩阵,之后八个外围像素点的灰度值分别与八个Kitch算子进行卷积运算得到八个边缘梯值。最后每个边缘梯度值都取绝对值并按照大小排序,取其中k个最大的边缘梯度值将其标记为1,剩下(8-k)边缘梯度值标记为0,再按照特定顺序依次从矩阵中取出,可以得到一串二进制数,转为十进制,这个数就是选定像素点的局部方向模式特征值。提取过程如图3所示。
图3 LDP特征值
通过实验发现,当k=3时可以得到相对较好的局部特征值,提取特征值过程如图4所示。以经过灰度化处理的人脸图像中任意像素点为中心,得到一个3×3的矩阵,经过LDP算法处理提出特征值后可以得到一串二进制数10011000,转化为十进制为152,那么选定像素点的特征值为152。
图4 k=3时LDP特征值
3.3 改进LDP
上述提取LDP特征值的过程是针对整张人脸图像中的每一个像素点的,而在具体的人脸图像中又存在人脸区域和非人脸区域,即便是在人脸区域,由于人脸中各组织器官的结构特点不同,使得局部特征分布不均匀,所以针对每一个像素点进行相同的特征值提取操作,得到的结果不能充分反映人脸特征,不同的区域应该有不同的权值加以区分。
首先对预处理后的灰度图进行分块操作,将其分成3×3共9个子块。第二步,以每个子块中的任意一个像素点为中心定义3×3的矩阵,八个外围像素点的灰度值分别与八个Kitch算子进行卷积运算得到八个边缘梯值,最后选定像素的局部方向模式特征值即为八个边缘梯度值的平均值,计算公式如下:
其中mθ为八个边缘梯度值。
第三步,用在第二步中得到的LDP特征值计算出每个子块中每个像素点的结构对比信息,从而获得各个子块的权值,计算公式如下:
其中xLDP(r,c)表示坐标为(r,c)的像素点的LDP特征值,ωr(x)为每个分块中每个像素点的结构对比信息,ωi为每个子块的权值。
最后得到每个子块的特征直方图,计算公式如下:
其中xLDP(r,c)表示坐标为(r,c)的像素点的局部方向模式特征值,f(x,y)为符号函数,Hn(τ)为每个子块中灰度值为τ时在特征直方图上的柱高。由此可以获得每个子块的特征直方图如图5所示。
4 实验与结果分析
选用耶鲁大学的Yale作为实验的测试数据库。实验流程如图6所示。
图6 实验流程图
首先从人脸数据库中选定一张人脸图像作为采集图像,经过预处理、特征值提取等操作其特征直方图,之后每次从人脸数据库中取出一张人脸图像做同样的处理,得到特征直方图,比较两者之间特征值,若在阈值之内则认为匹配成功,否则继续从人脸库中取出图像进行比较,直到人脸库中的图像全部匹配过。
实验环境为Intel i3 3.10GHz,4GB内存,Windows7的台式电脑。实验结果如表1所示。
表1 人脸识别数据表
5 结语
本文对人脸识别的流程进行了系统的研究,首先是预处理阶段,依次利用加权平均值算法、直方图均衡化、Soble算子进行灰度化和图像增强。之后是特征提取阶段,利用LBP、LDP、分块LDP进行特征值提取并获得特征直方图。全部流程在Yale人脸数据库进行了实验验证。对于今后的研究可以对比更多的处理算法,使用更广泛的人脸数据库进行实验。