⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pca.m

📁 基于matlab的PCA人脸识别完成程序
💻 M
字号:
allsamples=[];
for i=1:40
    for j=1:5
        a=imread(strcat('e:\orl\s',num2str(i),'\',num2str(j),'.pgm'));
        %imshow(a);
        b=a(1:112*92);
        b=double(b);
        allsamples=[allsamples;b];
    end
end
samplemean=mean(allsamples);
for i=1:200
    xmean(i,:)=allsamples(i,:)-samplemean;
end
sigma=xmean*xmean';
[v d]=eig(sigma);
d1=diag(d);
dsort=flipud(d1);
vsort=fliplr(v);
dsum=sum(dsort);
dsum_extract=0;
p=0;
while(dsum_extract/dsum<0.9)
    p=p+1;
    dsum_extract=sum(dsort(1:p));
end
p=199;
while(i<=p&&dsort(i)>0)
    base(:,i)=dsort(i)^(-1/2)*xmean'*vsort(:,i);
    i=i+1;
end
base=xmean'*vsort(:,1:p)*diag(dsort(1:p).^(-1/2));
allcoor=xmean*base;
for(k=1:p)
    temp=reshape(base(:,k),112,92);
    newpath=strcat('e:\test\',int2str(k),'.jpg');
    imwrite(mat2gray(temp),newpath);
end
avg=reshape(samplemean,112,92);
imwrite(mat2gray(avg),'e:\test\average.jpg');
save('e:\orl\model.mat','base','samplemean')
load e:\orl\model.mat
c=[];
for i=1:40
    for j=6:10
        a=imread(strcat('e:\orl\s',num2str(i),'\',num2str(j),'.pgm'));
        %imshow(a);
        b=a(1:112*92);
        b=double(b);
        b=b-samplemean;
        c=[c;b*base];
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -