首页 > 行业资讯 > 【人脸识别】基于PCA实现ORL人脸识别附matlab代码

【人脸识别】基于PCA实现ORL人脸识别附matlab代码

时间:2022-06-21 来源: 浏览:

【人脸识别】基于PCA实现ORL人脸识别附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #图像处理matlab源码 686个

1 简介

人脸识别技术先进,应用广泛。借助PCA算法,利用MATLAB GUI可以简单操作,通过对待识别图像的预处理即可提高识别率。本文首先对相关概念进行了阐述,对工作原理进行了介绍,具体对基于PCA算法人脸识别的MATLAB实现进行了解析。

2 部分代码

function [neednum,average_face, immin, newVT] = newVT(imdata) %此过程为标准PCA流程 %计算平均脸并显示 average_face=mean(imdata,2); %按行求平均mean(a,2) 按列mean(a) Average_face=reshape(average_face,112,92);%将[112*92,1]的脸灰度数据转成[112,92] figure; subplot(1,1,1); imshow(Average_face,[]);%imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。 title(strcat(’40*5张训练样本的平均脸’)); %步骤一:图像预处理,去中心化,即减去平均值 train_num=5; immin=zeros(112*92,40*train_num); for i=1:40*train_num immin(:,i) = imdata(:,i)-average_face; end %步骤二:计算协方差矩阵 W=immin’*immin; %n*d x d*n= n*n 较小 %步骤三:对协方差矩阵W进行特征值分解,计算特征向量与特征值(向量) [V,D]=eig(W); %步骤四:对特征值进行排序,选取贡献率大于前85%的特征脸 [D_sort,index] = sort(diag(D),’descend’);%降序排列 SumAllFaceEigenValue=sum(D_sort); NowFaceEigenValue=0; %选取累计贡献大于85%的前neednum个特征脸 for i=1:size(D_sort,1) NowFaceEigenValue=NowFaceEigenValue+D_sort(i); neednum=i; if(NowFaceEigenValue>SumAllFaceEigenValue*0.85)%累计贡献率达到85%以上即可 break; end end V_sort = V(:,index); VT=immin*V_sort; %dxn*nxk=d*k for i=1:40*train_num VT(:,i)=VT(:,i)/norm(VT(:,i));%归一化处理 end % need_num=neednum; for i=1:neednum newVT(i,:)=VT(:,i);%取前neednum个特征值 end end

3 仿真结果

4 参考文献

[1]刘向东. 基于PCA算法人脸识别的MATLAB实现[J]. 电脑知识与技术:学术版, 2016(4X):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐