您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 人脸识别PCA算法matlab实现和详细步骤讲解
..Word格式人脸识别%FaceRec.m%PCA人脸识别修订版,识别率88%%calcxmean,sigmaanditseigendecompositionallsamples=[];%所有训练图像fori=1:40forj=1:5a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));%imshow(a);b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数据代表一张图片,其中M=200endendsamplemean=mean(allsamples);%平均图片,1×Nfori=1:200xmean(i,:)=allsamples(i,:)-samplemean;%xmean是一个M×N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”end;%获取特征值及特征向量sigma=xmean*xmean';%M*M阶矩阵[vd]=eig(sigma);d1=diag(d);%按特征值大小以降序排列dsort=flipud(d1);vsort=fliplr(v);%以下选择90%的能量dsum=sum(dsort);dsum_extract=0;p=0;while(dsum_extract/dsum0.9)p=p+1;dsum_extract=sum(dsort(1:p));endi=1;%(训练阶段)计算特征脸形成的坐标系base=xmean'*vsort(:,1:p)*diag(dsort(1:p).^(-1/2));%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1)%详见《基于PCA的人脸识别算法研究》p31%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%while(i=p&&dsort(i)0)%base(:,i)=dsort(i)^(-1/2)*xmean'*vsort(:,i);%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1)%详见《基于PCA的人脸识别算法研究》p31%i=i+1;%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%end..Word格式%以下两行addbygongxun将训练样本对坐标系上进行投影,得到一个M*p阶矩阵allcoorallcoor=allsamples*base;%allcoor里面是每张训练人脸图片在M*p子空间中的一个点,即在子空间中的组合系数,accu=0;%下面的人脸识别过程中就是利用这些组合系数来进行识别%测试过程fori=1:40forj=6:10%读入40x5副测试图像a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));b=a(1:10304);b=double(b);tcoor=b*base;%计算坐标,是1×p阶矩阵fork=1:200mdist(k)=norm(tcoor-allcoor(k,:));end;%三阶近邻[dist,index2]=sort(mdist);class1=floor((index2(1)-1)/5)+1;class2=floor((index2(2)-1)/5)+1;class3=floor((index2(3)-1)/5)+1;ifclass1~=class2&&class2~=class3class=class1;elseifclass1==class2class=class1;elseifclass2==class3class=class2;end;ifclass==iaccu=accu+1;end;end;end;accuracy=accu/200%输出识别率特征人脸%eigface.mfunction[]=eigface()%calcxmean,sigmaanditseigendecompositionallsamples=[];%所有训练图像fori=1:40forj=1:5a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));%imshow(a);b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数据代表一张图片,其中M=200endend..Word格式samplemean=mean(allsamples);%平均图片,1×Nfori=1:200xmean(i,:)=allsamples(i,:)-samplemean;%xmean是一个M×N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”end;%获取特征值及特征向量sigma=xmean*xmean';%M*M阶矩阵[vd]=eig(sigma);d1=diag(d);%按特征值大小以降序排列dsort=flipud(d1);vsort=fliplr(v);%以下选择90%的能量dsum=sum(dsort);dsum_extract=0;p=0;while(dsum_extract/dsum0.9)p=p+1;dsum_extract=sum(dsort(1:p));endp=199;%(训练阶段)计算特征脸形成的坐标系%while(i=p&&dsort(i)0)%base(:,i)=dsort(i)^(-1/2)*xmean'*vsort(:,i);%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化,详见《基于PCA的人脸识别算法研究》p31%i=i+1;%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%endbase=xmean'*vsort(:,1:p)*diag(dsort(1:p).^(-1/2));%生成特征脸for(k=1:p),temp=reshape(base(:,k),112,92);newpath=['d:\test\'int2str(k)'.jpg'];imwrite(mat2gray(temp),newpath);endavg=reshape(samplemean,112,92);imwrite(mat2gray(avg),'d:\test\average.jpg');%将模型保存save('e:\ORL\model.mat','base','samplemean');人脸重建%Reconstruct.mfunction[]=reconstruct()loade:\ORL\model.mat;%计算新图片在特征子空间中的系数img='D:\test2\10.jpg'a=imread(img);b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);..Word格式b=b-samplemean;c=b*base;%c是图片a在子空间中的系数,是1*p行矢量%根据特征系数及特征脸重建图%前15个t=15;temp=base(:,1:t)*c(1:t)';temp=temp+samplemean';imwrite(mat2gray(reshape(temp,112,92)),'d:\test2\t1.jpg');%前50个t=50;temp=base(:,1:t)*c(1:t)';temp=temp+samplemean';imwrite(mat2gray(reshape(temp,112,92)),'d:\test2\t2.jpg');%前100个t=100;temp=base(:,1:t)*c(1:t)';temp=temp+samplemean';imwrite(mat2gray(reshape(temp,112,92)),'d:\test2\t3.jpg');%前150个t=150;temp=base(:,1:t)*c(1:t)';temp=temp+samplemean';imwrite(mat2gray(reshape(temp,112,92)),'d:\test2\t4.jpg');%前199个t=199;temp=base(:,1:t)*c(1:t)';temp=temp+samplemean';imwrite(mat2gray(reshape(temp,112,92)),'d:\test2\t5.jpg');..Word格式基于2DPCA与(2D)2PCA的人脸识别(第二版)..Word格式..Word格式..Word格式..Word格式..Word格式..Word格式..Word格式..Word格式..Word格式欢迎您的光临,Word文档下载后可修改编辑.双击可删除页眉页脚.谢谢!希望您提出您宝贵的意见,你的意见是我进步的动力。赠语;1、如果我们做与不做都会有人笑,如果做不好与做得好还会有人笑,那么我们索性就做得更好,来给人笑吧!2、现在你不玩命的学,以后命玩你。3、我不知道年少轻狂,我只知道胜者为王。4、不要做金钱、权利的奴隶;应学会做“金钱、权利”的主人。5、什么时候离光明最近?那就是你觉得黑暗太黑的时候。6、最值得欣赏的风景,是自己奋斗的足迹。7、压力不是有人比你努力,而是那些比你牛×几倍的人依然比你努力。
本文标题:人脸识别PCA算法matlab实现和详细步骤讲解
链接地址:https://www.777doc.com/doc-7098576 .html