LDP 算法是将与Kirsch 算子运算后得到的一些负值的邻域灰度值作为中心灰度值的编码因子,这将会导致中心灰度值不能很好的反映邻域局部特征信息,从而降低识别率。针对于此,本文提出了一种改进的局部定向模式(CLDP)算法。该算法在LDP 的基础上,去掉邻域灰度值为负值的因子,对中心灰度值进行重新编码,由于该编码值是将与Kirsch 算子运算后的正值最大值作为图像边缘输出,使中心灰度值能很好反映邻域的局部特征信息,从而提高人脸的识别率。本文还将提出的CLDP 算法用在YALE,ORL,JAFFE 等人脸数据库中进行人脸识别。从实验的结果表明,该方法识别性能较LDP算法,LDN 算法以及ELDP 算法等更好的。
人脸识别系统主要包括四个模块:图像预处理模块,图像特征提取模块,图像训练模块和人脸图像的识别模块,其中最主要的核心部分就是图像特征的提取。好的特征提取算法应该满足不同类别的图像具有很大差异,同一类别的图像具有很小差别。到目前为止,特征提取主要包括两类方法:基于全局特征的提取方法和基于局部特征的提取方法。全局特征是指其特征向量的每一维都包含了人脸图像上所有部分(甚至所有像素)的信息,它反映的是人脸的整体属性。基于全局的特征方法主要包括:PCA,LDA,2DPCA,LPP 等 。与全局特征不同的是,局部特征信息的每一维都只对应人脸图像上的一个局部区域,它侧重于提取人脸的细节特征,基于局部特征的提取方法主要包括:LBP,LGBP,LDP 等 。局部特征对人脸的光照、表情和遮挡等变化不敏感,因此基于局部特征的提取方法相对于基于全局特征的提取方法具有更好的鲁棒性,在近些年来得到了更多的研究 。
近年来,LBP 算法因为其在纹理分析方面的简单性和优越性而得到了越来越多的重视。基本的LBP算子是一种有效的纹理描述符,其通过对中心像素的3×3 邻域进行编码操作。每个像素点以其邻域的中心像素灰度值作为判断的阈值,将中心像素灰度值与周围8 邻域的像素灰度值进行比较,如果邻域像素灰度值大于中心像素灰度值,则将其标记为1,否则标记为0(对于图像边缘的部分,存在一些邻域点不存在的,编码时设定该邻域点为0),从而每个像素点都可以得到一个8 位的二进制数,然后将该8 位二进制数转化为十进制数,该十进制数即为该中心像素点的LBP 值。因为LBP 编码的灵活性,LBP 算法可以很容易修改以适应其他不同类型问题的需要。为此,文献[9]提出了几种改进的LBP 算法。LBP 算法对单调线性的光照有很好的鲁棒性,但是其对于随机的噪声和非单调线性的光照变化非常的敏感。针对此因素,Jabid 等人 提出了鲁棒性更好的特征提取方法LDP。LDP 算法和LBP 算法很相似,但它是通过与Kirsch 算子卷积求和后得到了中心像素点的邻域灰度值 。由于边缘梯度值比像素灰度值更稳定,所以LDP 算法对噪声的鲁棒性更好。基本的LDP 编码是将最主要的k 个邻域灰度值设为1(即和Kirsch 算子 卷积求和后绝对值的k 个最大数),然后将8 个方向的邻域值进行编码。这种方法会将最大的负数对应的邻域灰度值设为1,由于这些负数会干扰局部特征信息的提取,使得编码后的中心灰度值不能很好反应出该位置的局部特征信息,从而会降低人脸识别率。
针对与LDP 的这个缺点,Zhong Fujin 等人提出一种基于LDP 算法的ELDP(Enhanced Local DirectionalPatterns)算法 ,Adin Ramirez Rivera 等人提出了一种LDN(Local Directional Number Pattern)算法 。ELDP算法是在LDP 算法的基础之上得到的,首先它将与Kirsch 算子计算后的八个方向值进行排序,将最大的两个正值对应的位置设为1,其他位置设为0,然后将得到的两个位置为1 的序号作为八进制的两位数,再将其转化为十进制数作为该中心点的像素灰度值,即ELDP 值。LDN 算法首先同样是将与Kirsch 算子运算后的8 个方向值进行排序,选取最大的正值和最小的负值,然后将最大正值对应的序号作为八进制数的第1 位,将最小值的序号作为八进制数的第0 位,再将这个两位的八进制数转化为十进制数作为该中心点的像素灰度值,即LDN 值。
以上对LDP 进行改进的算法是对8 个邻域灰度值的序号进行编码,会丢失一些特征信息,针对这个问题,本文提出了一种基于LDP 算法改进后的局部定向模式(CLDP)。该算法通过与Kirsch 算子计算后得到的八个邻域灰度值重新进行编码,不对其求绝对值,考虑负数的存在,然后将8 个计算后的邻域值进行大小判别,将最大的k 个正值设为1,其他8-k 个邻域值设为0,再将这8 位二进制数转换为十进制数,用该十进制数值作为中心像素点的灰度值,即CLDP 值。CLDP 算法的编码避免了LDP 算法将运算后的邻域为负值作为编码因子,同时也避免了LDN 算法和ELDP 算法将运算后的最大邻域值所对应的序号作为编码因子,这样CLDP 值能更好的反应出该位置的局部特征信息。
本文提出的CLDP 算法用在三个人脸数据库中分别进行识别实验,并和LDP 算法,LDN算法以及ELDP算法进行比较。实验的结果表明,本文提出的方法具有较其他方法有着更好的识别性能。
1 CLDP 算法
1.1 LDP 算法
基于LBP 算法提出的局部定向模式(LDP),是将一个3×3 矩阵块(如下)分别与8 个Kirsch 算子M0~M7进行运算后得到的绝对值作为矩形块周围的像素灰度值,记为|mi|(i=0,1,…,7),然后选取k 个最大绝对值数作为主要特征,并且将这k 位赋值为1,其余(8-k)位赋值为0,如图1 所示。最后将这8 个数按照一定的顺序编码组成一个八位的二进制数,再将其转换为十进制数,用这十进制数作为该3×3 矩形块的中心点的LDP特征值。
2 给出中心点邻域灰度值具体数值,用Kirsch 算子对其进行LDP 编码运算,当k=3 时,如图所示该中心点x 的LDP 特征值xLDP(k)=(10001001)2=137。
1.2 CLDP 算法
CLDP 算法是基于LDP 算法的一种改进,其处理的开始部分与LDP 算法相同,也是将3×3 的矩阵块与Kirsch 算子进行运算后,将得到的8 个值作为周围邻域的灰度值,然后将这8 个值中最大k 个值赋值为1,其余(8-k)个值赋值为0,从而也可以得到一个八位的二进制数,再将其转换为十进制数用来表示中心像素点的灰度值,即为CLDP 特征值。
,其中mk为mi中最大的k个值。图3给出中心点的邻域灰度值,并对它进行CLDP 编码,则中心点x 的CLDP 值CLDP=(10010001)2=145。
图4 的原图像是来自于YALE 人脸库中的一幅图片,我们对它分别进行LDP 算法和CLDP 算法特征提取,从图中可以看出CLDP 算法提取特征后的图像较LDP 算法特征提取后的图像能更清晰真实的反映出原图像的特征信息。
2 基于CLDP 的人脸识别描述
不同的人脸库对应的图片大小规格和颜色都不一样,在进行人脸识别时,首先需将人脸库中的图片转换成相同大小规格的灰度图像。然后再将每一幅灰度图像转换为一维数列,这样一个人脸库就可以用一个二维矩阵数列来表示,其中每一列代表着一幅图片。其中CLDP 算法的人脸识别过程如下图5 所示。
对于同一个人,我们随机选取几张图片作为训练图片,其他的作为测试图片,这样可以将原来的人脸数据库的二维矩阵分为一个训练的二维数据库和测试的二维数据库,然后将这两个数据库分别进行CLDP算法处理。最后将CLDP 算法处理后训练图片进行PCA 降维处理,将训练图像和测试图像的CLDP 特征图像投影到低维空间中,采用最近邻方法进行分类识别。
3 实验结果与分析
3.1 k 值的选取
为了测试不同k 值对识别性能的影响,我们分别在YALE,JAFFE,ORL 人脸数据库中分别进行识别实验。YALE 人脸数据库包含15 个人,每个人有11 幅人脸图像,具有丰富的表情变化。实验时我们随机选取每个人的5 幅图像进行训练,另外6 幅进行测试;JAFFE 人脸数据库包含有10 个人,每个人有7 种表情,每种表情3~4 张图片,在测试时我们随机选取每个人20 张图片进行试验,试验时选取每个人的15张图片作为测试图片,另外5 张作为训练图片;ORL 人脸数据库包含40 个人,每个人有10 张不同光照和姿态下的图片,在试验时我们选取每个人的任意5 张图像进行训练,其余5 张进行测试,降维的维数均选择为30。由于C81=C87,所以当k=1时和k=7时识别率是一样的 ,因此只需要比较k={1,2,3,4}时分别对应的识别率。每一组实验都是进行10 次测试后,选取平均值作为最终的测试数据。实验结果如表1 所示。由表1 中可以得出三种人脸库下,当k=3 时,CLDP 算法对应的人脸识别率最高。
3.2 CLDP 算法和其他算法识别率比较
我们将本文提出的CLDP 算法以及PCA,LDP,LDN,ELDP 算法分别在YALE,JAFFE,ORL 人脸数据库中分别进行测试。同实验3.1 一样,在YALE 人脸库中选取测试人数为6,在JAFFE 中选取测试人数为15,在ORL 人脸库中选取测试人数为5。实验过程中,设k 值为3,降维的维数为30,每一组实验进行10 次,选取平均值作为最终识别结果。表2 列举了各种算法在不同的人脸库下的识别率。
由表2 可以看出不同的人脸库下,CLDP 算法对人脸的识别率高于其他算法的识别率。
3.3 CLDP 算法鲁棒性测试
为了验证CLDP 算法的鲁棒性,本文还进行了以下两个测试,这两组试验分别都是在YALE,JAFFE和ORL 三个人脸库中进行的,其k 值都选取为3。第一组测试实验是在固定降维的维数为30 的情况下,改变实验的测试人数来观察LDP,ELDP,LDN 和CLDP 四种算法对人脸识别率的影响。在YALE 数据库中将每个人的测试图片数分别选取为5,6,7,8,9;在JAFFE 数据库选择测试图片数为12,13,14,15,16;在ORL 数据库中选取测试图片数为4,5,6,7,8。另一组测试实验是在测试人数固定的情况下,改变降维的维数来观察LDP,ELDP,LDN 和CLDP 算法对人脸识别率的影响。在YALE 人脸库中,固定测试人数为7,JAFFE 数据库中固定测试人数为15,ORL 数据库中测试人数为5。实验结果如图6,7 所示。
从图6 中可以看出在降维维数固定在30 情况下,四种算法的人脸识别率随着测试人数的增加而减小,但CLDP 算法的人脸识别虽然在减小,但依然保持着较高的识别率,且减小的幅度也较小。
从图7 中可以看出在测试人数固定的情况下,四种算法的人脸识别率随着维数的增加而增加,而CLDP算法始终保持着较高的识别率。
由上面的两图可以发现,在相同的降维维数前提下,基于CLDP 算法的人脸识别鲁棒性要好于其他算法,同样,在测试图像数相同的前提下,基于CLDP 算法的人脸识别鲁棒性也要高于其他算法。
通过以上实验表明,CLDP 算法对人脸的识别在不同的人脸数据库中都有着很高的识别率,且CLDP算法对人脸的识别率较LDP 算法和改进后的LDN 与ELDP 算法都要高,同样CLDP 算法在测试图像相同的情况下和在提取特征维数相同的情况下,鲁棒性都高于其他几种算法。
4 结论
本文提出了一种基于局部定向模式的CLDP 算法,该算法将与Kirsch 算子运算后的正值作为编码对象,从而提高识别率。实验表明,该算法在YALE,ORL,JAFFE 等人脸数据中都有着很好的识别性能,并且较LDP,LDN 和ELDP 算法有着更高的识别率,同样CLDP 算法也有着较其他几种算法更好的鲁棒性。
全部0条评论
快来发表一下你的评论吧 !