APP下载

基于鼻梁检测和PCA算法的眼镜识别方法

2022-04-12孙瑾怡赵文静张伟康戴泽凯

电子制作 2022年7期
关键词:鼻梁灰度人脸

孙瑾怡,赵文静,张伟康,戴泽凯

(1.南京信息工程大学 电子与信息工程学院,江苏南京,210044;2.南京信息工程大学 大气科学学院,江苏南京,210044;3.南京信息工程大学 大气物理学院,江苏南京,210044)

0 引言

目前,人脸识别技术在准确性上已经取得了很大的提升,然而在自然条件下,人脸识别技术性能仍然受光照、姿态、饰品等多种因素影响。其中饰品的影响体现在其遮盖了部分面部特征,因而降低了识别的准确性。而眼镜作为面部最为广泛佩戴的饰品之一,对人脸识别的准确性有一定的影响,因此研究人脸图像中眼镜边框检测对提高人脸识别的精确度有重要意义。

文献[1]采用Canny和拉普拉斯算子对图像进行边缘检测,基于有效图像变换,可以较好进行眼镜佩戴的判断,但是对于头像有较大倾斜,含有一定表情的人脸图像会出现较大误差。文献[2]采用传统PCA、分块 PCA、MPCA 和2DPCA算法分别进行眼镜佩戴的判断,并对识别性能进行了比较,总体搜索时间较短,但是多数识别精度不够高。文献[3]主要提出将PCA算法与SVM分类器相结合,在人脸数据更复杂的情况下拥有更好的人脸识别能力,但是当特征脸空间维数过小时,即原图像会损失较多细节,会导致较低的识别率。

结合上述背景,本文提出两种方法对眼镜识别进行测试:一是鼻梁检测法,二是将传统的PCA算法,结合基于BP神经网络的逻辑回归模型的方法。通过对人脸标准图像库中的337个具有不同特点的样本进行测试,验证了方法的可行性。此外,鼻梁检测法简化了识别方法,在具有较快的识别速度的同时,兼顾了较高的准确度。另一方面,本文提出的第二种算法具有可靠性高、准确性高等优点。

1 眼部区域定位

1.1 Laplacian增强算子边缘检测法

Laplacian增强算子是一种基于图像梯度进行边缘检测的各向同性微分算子,常用于图像增强邻域和边缘提取。其不仅能够增强图像灰度突变处的对比度,而且可以弱化灰度变化较为缓慢的部分。其实质是:判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作。在算法实现过程中,Laplacian算子通过对邻域中心像素的四方或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系,最后通过梯度运算的结果对像素灰度进行调整。

如图1所示,本文针对深色瞳孔和浅色眼白相对于皮肤的色差突变,通过Laplacian增强算子获取对眼睛孤立噪声点及其周边点的响应。同理,针对镜框灰度和皮肤灰度的突变情形,以灰度较高的浅色显示原图像中的边缘信息和突变点,以灰度较低的深色显示原图像中其余背景区域,在将细节锐化的同时,保留原图像的信息。

图1 Laplacian增强算子边缘检测过程图

对于二维人脸灰度图像,在水平方向和竖直方向上均分布有像素信息,则人脸二维图像函数的拉普拉斯变换为各项同性的二阶导数,可以写成如下形式:

基于此,引入Laplacian算子,得到如下表达式:

结果发现,重新计算后像素块的灰度值为其上下左右的灰度值之和减去四倍的自身原灰度值。

1.2 梯度积分投影[4]

为了更加准确地分析人脸的二值化图像的灰度分布情况,本文求得二值图像的垂直投影积分函数与水平投影积分函数。将人脸区域灰度图像每行的灰度值进行相加,放入坐标轴内,由于二阶微分值替代了原本的灰度值,因此通过积分可以得到人脸的水平投影图(如图2),具体表达式如下:

图2 眼部区域水平投影示意图

眼球中央呈深色,灰度值较低,则要找到眼部区域,需使其水平方向上每一行的二阶导数值和最大,故有:

考虑到识别过程容易受到人脸区域未截掉的头发或衣服的影响,从而识别到非眼部区域,因此在竖直方向上也进行一次投影,得到如下积分式:

同理,对每一列的二阶导数值分别求和,需使其最大,故有:

根据水平和竖直方向上的投影,找到对应二阶导数值最大的区域,如图3所示,即为所求的眼部所在区域。

三要加强移民安置规划设计管理,提高前期工作水平,对移民安置实施工作的监管,充分发挥稽察、审计和监督评估的作用,切实做好移民安置验收工作,确保移民得到妥善安置。

图3 二维眼部区域梯度积分投影法识别示例

要获取眼睛的位置信息,需将对应的坐标(i,j)反解出来。由于绝大多数人两只眼睛的大小会有轻微的差异,因此通过对投影中最大值反解求出的是相对大小较大的眼睛的位置:

将求得的jmax去掉,再一次求解,即:

综上,可以得到两只眼睛的位置坐标分别为 (imax,jmax)和 (imax,jsecmax),不考虑部分人脸有一定角度倾斜,且假设人眼位于同一水平线上,则两眼瞳孔之间的距离为:

选取117个不戴眼镜的人脸图像样本和120个戴眼镜的人脸图像样本对上述梯度积分投影算法的有效性进行测试。其中,准确识别出不戴眼镜样本的眼部区域共109人,准确率达93.2%,准确识别出戴眼镜样本的眼部区域共100人,准确率达83.3%。分析准确性下降的原因:每个区域的灰度值可能会受到不同粗细的镜框、不同种类眼镜的影响,导致该区域内的灰度值比实际的偏高或者偏低,进而造成最终结果识别效果略有降低。

2 眼镜识别模型

2.1 鼻梁检测法

考虑到由于浅色镜框与皮肤色差较小,眼镜与眼睛相对位置不同等因素造成识别困难的问题,提出一种基于眼镜鼻梁处和两眼之间的皮肤色差的“鼻梁检测法”。其本质为:不戴眼镜的人的鼻梁与两眼之间的皮肤色差微小,基本检测不到突变点,因此边缘检测后的效果是该区域内背景色均呈现深色,而戴眼镜的人因为有眼镜鼻梁的遮挡,鼻梁与周围皮肤形成较明显的反差,能够通过边缘检测识别出来,最终检测得到该区域内形似镜框的浅色像素点。通过鼻梁检测法,将判断人脸是否佩戴眼镜的问题转化为判断两瞳孔之间是否有镜框的存在的问题。

鼻梁检测示意图,如图4所示,将眼部区域划分成左眼A区,鼻梁B区,右眼C区。当人脸佩戴眼镜时,鼻梁处镜框会因边缘检测在灰度图像中呈现浅色,皮肤呈现深色。图像二值化后只呈现黑白两色,设区域B内总像素点数量为KB,白色像素点数量为kB。因而,通过判断整个区域B内是否有白色像素点进一步确定是否佩戴眼镜,具体表达式如下:

图4 鼻梁检测示意图

2.2 基于PCA算法的特征提取[5]

2.2.1 PCA算法基本原理

PCA算法是一种常用于特征提取和降维的数据简化分析方法,不仅可以把多波段图像中的有用信息集中到数量尽可能少的新的主成分图像中,而且使这些主成分图像之间互不相关,从而大大减少总的数据量。通过PCA算法可以在较好保真原图像的基本信息的基础上,减少人脸灰度图形中的特征信息维数,将眼部特征提取出来。

从标准图片库中选择100张佩戴眼镜的人脸图像样本的和100张未佩戴眼镜的鼻梁图像构成训练集。设图像像素为m×n,第i张图片可以转换为一个列向量:

则M幅训练图像构成的集合为:

得到协方差矩阵表达式如下:

设协方差矩阵的特征值表示为iλ,将特征值排序,选取某一阈值,计算累计贡献率:

求得累计贡献率大于80%时得到60个主成分,其中前五个主成分的特征图如图5所示。

图5 PCA算法提取特征图

2.2.2 基于BP神经网络的逻辑回归算法

BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,由输入层、隐藏层和输出层三部分组成。其基本原理流程图如图6所示。

图6 BP神经网络算法流程图

使用 BP 神经网络对戴眼镜与否进行判别时,设置7个特征值 1x至x7为输入层神经元,输入向量为其中未佩戴眼镜与佩戴眼镜图像各100张为训练集。隐藏层的数量为 10层。输出层神经元为佩戴眼镜与否的判别c,输出向量为 {}T C=c。此外,还需给定学习率µ和神经元激励函数f。将人脸图像样本二值化后,灰度使用0-1值进行表示,故佩戴眼镜与否只有两种情况,因此可以使用logistic回归来研究,将所有图像数据和相关信息代入logistic回归模型中去,就能够建立人脸分类模型。logistic回归模型的基本形式为:

其中z=θ0+θ1x1+…θpxp,记回归系数构成的行向量为θ= (θ0,θ1, … ,θp),变量构成的集合放入回归模型构成列向量X= (1,x1,… ,xp)T。该式表示当变量为x1,x2,…xp时,戴眼镜的概率。而逻辑回归可以分为线性变换部分和非线性变换部分。我们发现这与只有输入层与输出层,且输出层内只包含一个神经元的神经网络结构相似,考虑将逻辑回归的两部分变换均放入神经网络的输出层,如图7所示。因此,通过降维的主成分值就能够判断人脸是否配戴眼镜,并以此进行分类。至此基于logistic的分类模型就已经建立。

图7 基于BP神经网络的逻辑回归示意图

3 实验分析

为了验证本文所提出了眼镜识别算法对于灰度图像识别的可行性,对验证集中的实际佩戴眼镜的20个样本和实际未佩戴眼镜的17个样本进行测试。

3.1 鼻梁检测结果分析

将鼻梁检测和Laplacian增强算子结合,检测鼻梁处眼镜和皮肤的突变情况,进而判断是否佩戴眼镜。边缘检测结果如图8所示。

图8 边缘检测结果示意图

逐个对验证集中的样本进行检验,检验结果如表1所示。通过实际值与检测值的对比可以发现:在所验证的实际佩戴眼镜的20个样本中,判断正确的有16个,正确率达80.0%;在所验证的实际未佩戴眼镜的17个样本中,判断正确的有15个,正确率达88.2%。总体上看,实际情况与检测结果的出入较小,即检测错误率较低,准确率达83.8%,整体检测情况较好。

表1 鼻梁检测求解结果

3.2 基于PCA算法的逻辑回归算法检测结果

另一方面,使用PCA算法得到如表2所示结果。相较于鼻梁检测方法, PCA降维分类整体效果更佳,提高了判断的准确率,每一组的误判数量均只有1个,对佩戴眼镜的判断准确率达95%,相比起鼻梁检测法有显著提升。

表2 PCA求解结果

从如表3所示的基于PCA算法的神经网络预测情况来看,共验证的37个样本中仅预测错误2个,准确率高达94.6%,将鼻梁检测的准确率大幅提升。因此预测的准确率达83.4%,情况较好。

表3 PCA求解参数

对出现误判的情况进行分析,认为无框或者眼镜鼻梁处框架太小和眼部区域的确定所带来的累计误差都会使得最终结果略有不准。

4 结论

本文提出的基于鼻梁检测的眼镜识别方法,在二值图像中通过梯度积分投影方法,定位人脸眼部区域,并结合Laplacian算子进行边缘检测,增强眼镜鼻梁与皮肤突变的对比度,判断出眼镜佩戴与否。本文又进一步提出使用PCA算法进行眼镜特征提取,通过BP神经网络训练,对验证集中的图像进行验证。对于从人脸标准图像库中选取的图像均有较高的准确率,相比较而言,PCA算法的处理结果更为精准,满足较为基础的人脸识别应用场景,可以减少技术成本,为人脸识别技术提供一种新思路。

猜你喜欢

鼻梁灰度人脸
长得真可爱
玻璃窗上的人脸
天津港智慧工作平台灰度发布系统和流程设计
华为“灰度”哲学
Arduino小车巡线程序的灰度阈值优化方案
孩子鼻梁上有青筋,就是积食吗
捏鼻梁能让宝宝鼻子变挺吗?
智力考场:有趣的图片测试
“领家系”可爱脸VS“高冷系”美人脸
给宝宝捏鼻梁真的能让鼻子变挺吗?