端端0212 2014-07-31 06:44 采纳率: 0%
浏览 4616

大家帮忙看看我这段matlab,用pca处理图像,但是输出的图片为什么会是重复的三张?

function y=mypca()
%%%%%%%%%%%%%%%%%%%%%%%%%PCA算法对人脸图像处理提取主成分程序
path = ['.\']; % 提取当前目录
%读取图像
numimage=4; %4张人脸
imagepath=[path 'ORL\ORL001' '.bmp']; %第一张人脸文件的路径及文件名:D:\PCA\ORL\ORL001.bmp
immatrix=imread(imagepath); % 读入第一张人脸文件,构成矩阵immatrix
[m,n]=size(immatrix); % 计算矩阵immatrix的行数m、列数n
DATA = uint8 (rand(m*n, numimage)); %随机生成m*n行、numimage列的矩阵,并取uint8
for i=1:numimage
s1=floor(i/100); % 取整,求第3位
tem=rem(i,100); % i除以100的余数,取后两位
s2=floor(tem/10); % 取第2位
s3=rem(tem,10); % 取第1位

imagepath=[path 'ORL\ORL' int2str(s1) int2str(s2) int2str(s3) '.bmp']; % 构成图像文件的路径即文件名
immatrix=imread(imagepath); % 读入每一张人脸文件,构成矩阵immatrix
imVector=reshape(immatrix,m*n,1); % 将矩阵immatrix转化为一个列向量,长度为m*n
DATA(:,i)=imVector; % 将列向量imVector依次加入到DATA矩阵的列中.DATA先随机生成过的

end

clear i;clear j;
save DATA DATA; % 保存DATA
mn=mean(double(DATA'))'; % 计算DATA的行向量的均值
save mn mn; % 保存DATA的行向量的均值
%image substracted by mean of all train images
DATAzeromean=double(DATA)-repmat(mn,1,numimage);
save DATAzeromean DATAzeromean;
clear DATA;

L=DATAzeromean'*DATAzeromean;
[V,D]=eig(L);
enginvalue=diag(D);
[enginvalue,ix]=sort(enginvalue);%按升序排列矩阵元素
ix=flipud(ix);%从上到下翻转矩阵,即按降序
V=V(:,ix); %对V的特征向量位置调整
facespace=DATAzeromean*V; %脸空间

for t=1:numimage
facespace(:,t)=facespace(:,t)/norm(facespace(:,t));%Normalisation to unit length
end

subdim=4;
facespace=facespace(:,1:subdim);%选择子特征向量的协方差矩阵
projdata=facespace'*DATAzeromean;

save projdata projdata;
save facespace facespace;

datareconstruct=facespace*projdata;
fprintf('正在保存 Wakesplace中的图片数据\n');
save datareconstruct datareconstruct;
for i=1:numimage-1
imdata=datareconstruct(:,i);
imdata=reshape(imdata,m,n);
imwrite(imdata,['.\生成的特征脸\' int2str(i) '.bmp'],'bmp');%得到重构图像1.bmp---4.bmp
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  • 写回答

1条回答

  • xtt342628393 2014-08-05 03:13
    关注

    immatrix=imread(imagepath); % 读入第一张人脸文件,构成矩阵immatrix的封号去掉

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器