1 简介
自20年代90年代后,人脸识别正式进入商业运用领域。伴随这计算机技术的迅速发展,人脸识别不在只是单纯的依靠固有的人脸图像来判别,而是直接从视频中截取画面,这就要求较高的科学技术来实现。人脸识别技术具有广泛的应用领域, 在工业领域方面,各公司工厂具有严格的人员控制进出的规章制度,这时候人脸识别这样类似的门禁控制系统就非常有用了。在人工智能方面,现在机器人的研究正在如火如荼的进行着,而机器人的的眼睛需要能直接识别人的身份的这样的功能,所以需要灵活性高的识别方法,来适应这个智能的要求,这时候人脸识别的迅速发展,刚好可以与之匹配的方法,从某方面促进了人工智能的快速实现。同时,人脸识别具有无侵犯性、易安装、无人工参与等优点,有较大的研究的意义。
人脸识别中有两个很重要的步骤,就是特征提取和识别分类。好的人脸特征提取可以大大降低整个系统的计算量,提升本系统的识别速率。而好的人脸识别的测度也可以让前一个人脸特征提取的过程得到简化,在保证识别精确度的情况下,使这步骤的运算量简单,运算速率加快。由此可得必须综合考虑才能开发出较好的人脸识别系统。同时两个模块也成为了人脸识别的最主要研究方向。
PCA人脸识别特征提取有几个过程:人脸图像获取和处理;构造人脸库并且训练形成特征子空间;提取特征值和特征向量。下面对整个PCA提取特征过程中的步骤做一个详细的描述。
1.人脸图像获取和处理,构造人脸库
通过拍照的方式,在背景设定的环境下,拍取人脸图像,然后对人脸样本采取前期的处理,其中包括人脸图像格式的变换,是否需要灰度处理等等。这些都要根据算法需求来对图像进行前期的预处理。PCA算法运用的统计学原理中的K-L变换的原理,对图像背景要求一致,而对光线的要求也一般,前期只要保证图像像素和格式一致就可以。最后保存图像,建立人脸库。
2.训练人脸库
人脸图像获取后,要放进人脸库,把人脸库统一配置后,选取每个人若干图片参与训练,变成训练矩阵。假定格式统一的人脸图像的像素为n*m,采取变换转化为一维矩阵,然后按行相连构成N=m*n维数的的矢量,每个人脸图像都可以视为N维空间中的一点,运用K-L变换可以将这个图像转换到底维的空间当中去,这样描述更加具体。
3.计算人脸图像的生成矩阵
采用训练后的人脸图像构成样本集,产生协方差矩阵可以用以下几种方法求出来(三种等价):
2 部分代码function OutputName = Recognition(TestImage, m, A, Eigenfaces)ProjectedImages = [];Train_Number = size(Eigenfaces,2);for i = 1 : Train_Number temp = Eigenfaces’*A(:,i); %e将每个样本投影到特征空间 ProjectedImages = [ProjectedImages temp]; end%%%%%%%%%%%%%%%%%%%%%%%% 从测试人脸库计算提取特征InputImage = imread(TestImage);temp = InputImage(:,:,1);[irow icol] = size(temp);InImage = reshape(temp’,irow*icol,1);Difference = double(InImage)-m; ProjectedTestImage = Eigenfaces’*Difference; % 将待测样本投影到特征空间%%%%%%%%%%%%%%%%%%%%%%%% 按照欧式距离取最小的原则得出匹配的人脸Euc_dist = [];for i = 1 : Train_Number q = ProjectedImages(:,i); temp = ( norm( ProjectedTestImage – q ) )^2; Euc_dist = [Euc_dist temp];end%选取最小欧式距离的人脸[Euc_dist_min , Recognized_index] = min(Euc_dist);%获取该人脸的数字代号OutputName = strcat(int2str(Recognized_index),’.jpg’);3 仿真结果
4 参考文献
[1]马晓普. 关于人脸识别系统中的PCA算法[D]. 电子科技大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。部分理论引用网络文献,若有侵权联系博主删除。