《武汉工程大学学报》  2011年10期 107-110   出版日期:2011-11-30   ISSN:1674-2869   CN:42-1779/TQ
动态人脸识别系统的设计与实现


0引言人脸识别技术近年来得到广泛关注,是属于人体生物认证技术的一种[1],它是通过计算机技术来识别信息,为人类提供商业和法律服务.当前人脸识别方法有很多,如Fisher线性判别(Fisher Linear Discriminant,FLD)[2]、主成分分析方法(Principal Component Analysis,PCA)、独立成分分析(Independent Component Correlation Algorithm,ICA)等[3].这些传统的特征提取和识别方法具有识别准确率高、性能稳定等优点,但是也有一些缺点,诸如容易受到光照强弱、人脸姿态和表情等因素影响识别准确率[4].本系统的人脸检测算法主要是差分图的方法,并加以改进,改进后的算法有着计算速度快、准确率高等优点,并采用C/S架构设计,前台主要包括图像输入、人脸检测、特征提取和人脸识别模块,这些模块都是采用VC++6.0来实现的.后台数据库采用的是Access,里面共有三张表MANINFO、FACEINFO、EIGENFACES.人脸图像、身份信息和特征值等一切数据都保存在这个数据库中.以下主要从模块结构、系统结构和系统的实现三个方面来介绍本系统.1模块结构设计人脸识别系统主要包括两大模块:人脸录入模块和人脸识别模块.人脸录入模块的功能是把检测到的人脸图像录入到数据库,在录入的同时,还要让系统管理员手工的输入人脸的身份信息,如:姓名、年龄、地址等,在识别过程中,当这张人脸被识别出来时,这些信息就会显示出来.人脸识别就是对待识别的人脸图像进行特征提取并进行识别,识别完毕后显示识别结果.本课题实现的系统也包括了这两个模块,而且为了使系统更加具有模块性,操作起来更加方便,在开发和设计系统时,就把人脸识别模块分解成两个模块,一个是特征提取模块,它主要做的就是对人脸图像进行特征提取,并把这些新特征值保存到数据库中;另一个被分解出来的模块是也叫人脸识别模块,这个模块主要是做狭义的人脸识别工作,即:识别图像中的人脸,并显示人脸的身份信息.如图1所示,这个系统还包括图像输入模块和人脸检测模块.图1系统的模块图
Fig.1System modules design图像输入模块就是对捕捉图像的外设作实时数据检测,当检测到有图像的时候,就把检测到的图像传入缓冲区,并通知人脸检测模块,让它对图像进行人脸检测.人脸检测模块就是对缓冲区中的图像进行人脸检测计算,来判断这幅图像中是否有人脸,如果有人脸就定位出人脸在图像上区域的坐标.2系统结构设计这个系统的系统结构如图2所示.图像输入是系统启动后最先被调用的模块.因为这个系统处理的原图像是基于USB口摄像头的动态图像——实时连续的多帧图像,所以系统在图像输入部分使用了一个线程,这个线程的专职是检测USB口上是否有图像传来,如果检测到有,首先把图像显示在界面上,然后再唤起人脸检测函数对图像进行检测.当人脸检测函数检测到人脸并定位出人脸在图像上的坐标时,就根据系统当时的状态,来选择下一步骤,如果系统在人脸录入状态,就唤起人脸录入函数,如果系统在识别状态,唤起人脸识别函数.在人脸录入函数被执行时,检测到的人脸从图像中被分割出来,连同手工输入的身份信息都通过ODBC保存到数据库中.当人脸识别函数被启动时,该函数就会通过特定的方法对待识别的人脸进行特征提取,并与数据库中人脸特征进行匹配,找出匹配最好的一组,并显示在界面上.特征提取是单独的一块,它和别的部分没有太大的联系,它计算的数据是从数据库中提取,计算的结果也保存在数据库中.图2系统结构图
Fig.2System architecture design摄像头输入的图像被设置为30帧/幅,也就是说,从得到原始图像到识别出人脸要在1/30 s中进行完毕,这对于现在的计算机硬件资源和计算速度来说,是可以的,但是对日常生活来说是没有必要的[5],因为,在动态图像中,有人脸的图像也只是它记录着人脸在摄像头前某一时刻的位置信息,如果人脸在摄像头面前只是一闪而过,那么就没有必要对它进行识别.所以,系统在唤醒人脸识别或人脸录入模块之前,先对当前连续多帧(系统设置为10)图像进行比较,如果在这些帧的图像中都有人脸,而且人脸区域是否相对稳定的,就启动后面的步骤,否则,同样什么也不做,返回系统.3系统的实现3.1人脸检测系统无论在什么状态,都是以检测人脸为前提,也就是说,检测人脸是系统计算的前提,只有检测到图像上的人脸,系统才进行以后的人脸录入和识别工作.
3.1.1差分图像摄像头捕捉到的图像是动态图像,也就是每秒中连续的向计算机输入k帧图像(本系统k=30).连续的图像记录着图像上物体的动态信息.这些信息可以使用图像间的减法运算来得到[6].在本系统中,如果在系统开始运行的时候保存一张背景图像,然后再用要预处理的图像与背景图像相减,就可以得到这幅图像的信息.这个过程如图3所示.图3差分计算结果显示
Fig.3The differential results show图3(a)是图像的背景图像,图3(b)是图像的差分图像.从图3(b)中,可以看出,人脸信息得到很好的保存,当然,还不可以拿它直接去做存储或识别,它还要经过二值化、平滑、膨胀等算法环节.
3.1.2图像的二值化、平滑、垂直投影和确定边界经过上面的计算,得到的差分图像256级,它的红色颜色范围还是从0到255,为了计算,必须给予二值化.第10期夏平平,等:动态人脸识别系统的设计与实现
武汉工程大学学报第33卷
图4(a)是一幅差分图像二值化的结果,但是由于物体的反光和光线的变化,在二值化处理后,图像上有很多的噪音点,这些噪音点有的是孤立分布,有的是几个聚集在一起,围成一个面积不大的区域,它们共同的特点就是面积小、个数小.为此,本系统使用了一种区别与传统方法的平滑方法,这种方法效果较好,实现也很方便.这种方法的步骤是:从左到右逐行扫描,在每一列中找到连续的红色象素点,判断它们的高度,高度小于一定权直的(系统取的是图像高度的1/10)就应为它是噪音点集合,从图像上去除,否则保留.然后再从上到下,使用同样的做法处理.图4(b)就是一幅图像经过这种方法平滑的后的结果.图像经过平滑后,还要对图像的做一次垂直的投影.垂直投影的的算法步骤也比较简单.从左到右从上到下扫描每一列,在每一列中找到第一个红色象素点,然后把这个找到的红色象素点以下的所有象素点都置为红色.图4(c)是就是一幅图像在经过差分、二值化、平滑和垂直投影后得到的图像结果.当图像经过垂直投影后,就可以很好的定位出图像上人脸的区域.首先,以图像的列为横坐标,以每列中的红色象素点的个数为纵坐标作一条曲线,这条曲线的最大值对应着人脸的中心位置,然后在这个最大值的两侧找到斜率绝对值最大的曲线点,这两个曲线上的点的横坐标是要找的人脸左右两侧,人脸的左右边界坐标找到了,然后再找人脸上下边界,再以图像的行为纵坐标,以每一行中红色象素点的个数为横坐标,作一条曲线,这条曲线如图4(d)所示.图4处理后的结果和坐标显示
Fig.4Processed results and coordinates display3.2特征提取特征提取的方法使用了数学里的降维思想.在判断和分析特征向量的时候,将判断N个特征向量减少为只要判断T个模最大的(N>>T)特征向量.这种方法很有效果,系统的特征提取步骤分为7步:(1)计算数据库中全部人脸的平均脸.它的计算公式(1):σ=1M∑Mi=1Fi(1)这里σ平均脸,M是图像的个数,Fi是第i幅图像,图5(a)是系统求出的平均脸.(2)把Fi(N×T的矩阵)描述成一个1×NT的向量.(3)利用式(1)计算aiai=Fi-σ(2)(4)计算协方差矩阵CC=1M∑Mi=1aiaTi=AAT(NT*NT矩阵).where A=[a1,a2,……,aM](NT*M矩阵)(3)(5)计算ATA矩阵的特征向量,选择其中模最大的K(K=7)个.(6)计算AAT矩阵的K个特征向量,使用式(4):ui=Avi(i=1,2,……,K)(4)其中,ui为AAT的向量,vi为五计算出来的K个特征值.图5(b)~(h)是本系统的特征值(特征脸).(7)求的数据库中每幅图像的K个特征值,并单位化.eigenFi=uTjFi(i=1,2,…,M,j=1,2,…,K)(5)图5得到的平均脸和特征脸
Fig.5Obtained average faces and features of the face最后,求得图像的特征值为double类型,每个图像共K(系统中K=7)个特征值.3.3人脸识别人脸识别的步骤可以分为以下4步:(1)用待识别的人脸图像减去数据库中的平均脸,见公式(6).Qx=Fx-σ,其中Fx是待识别的人脸图像,Qx为结果.eigenFi=uTjFi(i=1,2,…,M,j=1,2,…,K)(6)(2)计算待识别的图像的特征值,如公式(7)所示.eigenVali=ui*Qx,i=1,2,…,K(7)(3)对eigenVali进行单位化.(4)找到数据库中,与eigenVal距离最小的一组特征值.这个特征值对应的人脸,就认为和待识别的人脸是同一个人,并显示信息.4结语该人脸识别系统在VC6.0开发环境下进行开发,所开发的系统具有如下优点:(1)系统具有很强的鲁棒性,能识别各类人群,即使在运动中也有较准确的识别性能.(2)即使戴眼镜或者眼镜反光,系统识别仍然具有很高的准确率.(3)算法具有一定的抗脸侧向的能力和抗脸倾斜识别能力(在人脸旋转范围-10°~10°内).实践证明,该方法具有较高的识别精度.设计的算法可行有效,有较强的应用价值.参考文献: