% function?FaceRecognition??
clear %?calc?xmean,sigma?and?its?eigen?decomposition????
close all
allsamples=[];%所有训练图像???
for i=1:1
for?j=1:1??????????
????????if(i<10)??
% ???????????a=imread(strcat('E:\ORL_92x112\00',num2str(i),'0',num2str(j),'.bmp'));???????
a=imread('D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCWizards\AppWiz\MFC\Application\templates\1042\buttons.bmp');??
????????else??
????????????a=imread(strcat('E:\ORL_92x112\0',num2str(i),'0',num2str(j),'.bmp'));????
????????end????????????
????????b=a(1:112*92);?%?b是行矢量?1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右??????????
????????b=double(b);??????????
????????allsamples=[allsamples;?b];??%?allsamples?是一个M?*?N?矩阵,allsamples?中每一行数据代表一张图片,其中M=200?????
????end??
end??
samplemean=mean(allsamples);?%?平均图片,1?×?N????
figure%平均图??
imshow(mat2gray(reshape(samplemean,112,92)));??
for?i=1:200???
????xmean(i,:)=allsamples(i,:)-samplemean;?%?xmean是一个M?×?N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”???
end;?????
%?figure%平均图??
%?imshow(mat2gray(reshape(xmean(1,:),112,92)));??
sigma=xmean*xmean';???%?M?*?M?阶矩阵???
[v,d]=eig(sigma);??
d1=diag(d);???
[d2,index]=sort(d1);?%以升序排序???
cols=size(v,2);%?特征向量矩阵的列数??
??
for?i=1:cols????????
????vsort(:,i)?=?v(:,?index(cols-i+1)?);?%?vsort?是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量,每一列构成一个特征向量????????
????dsort(i)???=?d1(?index(cols-i+1)?);??%?dsort?保存的是按降序排列的特征值,是一维行向量???
end??%完成降序排列?%以下选择90%的能量???
dsum?=?sum(dsort);???????
dsum_extract?=?0;?????
p?=?0;???????
while(?dsum_extract/dsum?<?0.9)?????????
????p?=?p?+?1;????????????
????dsum_extract?=?sum(dsort(1:p));???????
end??
a=1:1:200;??
for?i=1:1:200??
y(i)=sum(dsort(a(1:i))?);??
end??
figure??
y1=ones(1,200);??
plot(a,y/dsum,a,y1*0.9,'linewidth',2);??
grid??
title('前n个特征特占总的能量百分比');??
xlabel('前n个特征值');??
ylabel('占百分比');??
figure??
plot(a,dsort/dsum,'linewidth',2);??
grid??
title('第n个特征特占总的能量百分比');??
xlabel('第n个特征值');??
ylabel('占百分比');??
i=1;??%?(训练阶段)计算特征脸形成的坐标系??
while?(i<=p?&&?dsort(i)>0)????????
????base(:,i)?=?dsort(i)^(-1/2)?*?xmean'?*?vsort(:,i);???%?base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化,特征脸??
??????i?=?i?+?1;???
end???%?add?by?wolfsky?就是下面两行代码,将训练样本对坐标系上进行投影,得到一个?M*p?阶矩阵allcoor????
%???
%?for?i=1:20??
%???figure%平均图??
%?b=reshape(base(:,i)',112,92);%??
%?imshow(mat2gray(b));??
%?end??
??
allcoor?=?allsamples?*?base;?accu?=?0;???%?测试过程??
??
for?i=1:40???????
????for?j=6:10?%读入40?x?5?副测试图像???????????
?????????if(i<10)??
????????????if(j<10)??
?????????????a=imread(strcat('E:\ORL_92x112\00',num2str(i),'0',num2str(j),'.bmp'));???????
????????????else??
?????????????a=imread(strcat('E:\ORL_92x112\00',num2str(i),num2str(j),'.bmp'));???????
????????????end??
?????????else??
?????????????if(j<10)??
?????????????a=imread(strcat('E:\ORL_92x112\0',num2str(i),'0',num2str(j),'.bmp'));???????
????????????else??
?????????????a=imread(strcat('E:\ORL_92x112\0',num2str(i),num2str(j),'.bmp'));???????
?????????????end??
????????end????????
????????b=a(1:10304);??????????
????????b=double(b);??????????
????????tcoor=?b?*?base;?%计算坐标,是1×p阶矩阵????????
????????for?k=1:200???????????????????
????????????mdist(k)=norm(tcoor-allcoor(k,:));??????????
????????end;??????????%三阶近邻?????
????????[dist,index2]=sort(mdist);????????????
????????class1=floor(?index2(1)/5?)+1;????????
????????class2=floor(index2(2)/5)+1;??????????
????????class3=floor(index2(3)/5)+1;??????????
????????if?class1~=class2?&&?class2~=class3???
????????????class=class1;???????????
????????elseif?class1==class2????????????
????????????class=class1;???????????
????????elseif?class2==class3???????
????????????class=class2;???????????
????????end;???????????
????????if?class==i????????
????????????accu=accu+1;??????????
????????end;?????
????end;??
end;????
accuracy=accu/200?%输出识别率??
pca.zip_PCA图像_图像主成分_图像识别
版权申诉
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
![avatar](https://profile-avatar.csdnimg.cn/c7605ebd585249f1b630f560f4d9ba6f_weixin_42650811.jpg!1)
我虽横行却不霸道
- 粉丝: 77
- 资源: 1万+
最新资源
- FM1702SL芯片13.56MHZ NFC读卡器开发板PROTELPCB图+FM1702SL中文说明书+FM1715编程指南
- 期末大作业交通数据分析与应用期末作业程序源码+实验报告.zip
- 期末大作业基于Java web的图书销售管理系统(源码+数据库)高分项目
- python-leetcode面试题解之第274题H指数.zip
- python-leetcode面试题解之第270题最接近二叉搜索树值.zip
- python-leetcode面试题解之第267题回文排列II.zip
- python-leetcode面试题解之第264题丑数II.zip
- python-leetcode面试题解之第263题丑数.zip
- python-leetcode面试题解之第258题各位相加.zip
- python-leetcode面试题解之第257题二叉树的所有路径.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)