端端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的封号去掉

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?