下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB下人脸图像的PCA重构matlab代码主函数clc; clear all;newimage=double(zeros(112*6,92*5); M,sort_V,avg_face = averageface( );%返回去均值的矩阵和协方差,以及排列好的特征向量 k=1; new_sort_V =sort_V(1:10304,1:30);%取特征向量的前30个,并进行显示 for i=1:112:5*112+1 for j=1:92:4*92+1 newimage(i:i+111,j:j+91)=reshape(new_sort_V(:,k),112,92); k=k+1; end
2、 end minum=min(min(newimage);%对特征向量进行标定 maxum=max(max(newimage); d=maxum-minum; newimage(:,:)=newimage(:,:)-minum; newimage(:,:)=newimage(:,:)/d; newimage(:,:)=newimage(:,:)*255; newimage=uint8(newimage); subplot(1,3,1); title(特征向量图); imshow(newimage);%显示前30个特征向量 avg_face=uint8(avg_face); subplot(1,
3、3,2) title(平均脸); imshow(avg_face); subplot(1,3,3) tyxs,re_newimage = touyingxishu( sort_V ,avg_face); imshow(re_newimage); 子函数function =img2txt()maindir = D:Image; subdir = dir( maindir ); % 先确定子文件夹 m=1;k=1;for i = 1 : length( subdir ) if( isequal( subdir( i ).name, . ) | isequal( subdir( i ).name,
4、. ) | subdir( i ).isdir ) % 如果不是目录跳过 continue; end subdirpath = fullfile( maindir, subdir( i ).name, *.pgm ); images = dir( subdirpath ); % 在这个子文件夹下找后缀为pgm的文件 % 遍历每张图片 for j = 1 : length( images ) imagepath = fullfile( maindir, subdir( i ).name, images( j ).name ); imgdata = imread( imagepath ); % 这
5、里进行你的读取操作 row, col=size(imgdata); %将数据写入txt中 fid = fopen(C:UsersAdministratorDesktop编程实验材料att_faces,s,int2str(m),int2str(k),.txt,w); %新建txt文件存储图像的坐标和灰度值 for I=1:row for J=1:col fprintf(fid,%03dt,imgdata(I,J); end fprintf(fid,n) ; end fclose(fid); k=k+1; end m=m+1; k=1;end function M,sort_V,avg_face
6、= averageface()big_array=double(zeros(10304,400);new_big_array=double(zeros(10304,400);avg_face=double(zeros(112,92);i=1; for m=1:40; for k=1:10 FileName = C:UsersAdministratorDesktop编程实验材料att_faces,s,int2str(m),int2str(k),.txt; p = load (FileName); big_array(:,i)=reshape(p,10304,1); %将400张脸转换成10304
7、*400的大矩阵 new_p=reshape(p,112,92); avg_face(:,:)=avg_face(:,:)+new_p(:,:)/400; %求平均脸 i=i+1; endend M=mean(big_array); %对矩阵的每一列求均值 for i=1:400 new_big_array(:,i)=big_array(:,i)-M(i);%去均值后的矩阵end %用SVD求特征向量C0=new_big_array*new_big_array;%求低维度的协方差V0,=eig(C0);k=0;V=new_big_array*V0;%特征向量 for i=1:400 %将特征向
8、量进行归一化10304*400 for j=1:10304 k=k+V(j,i)2; end k=k(0.5); V(1:10304,i)= V(1:10304,i)/k; k=0;end sort_V=double(zeros(10304,400);k=400;for i=1:400 %将特征向量的列按特征值从大到小排列好 sort_V(1:10304,i)=V(1:10304,k); k=k-1; end function tyxs,re_newimage = touyingxishu( sort_V ,avg_face) FileName = C:UsersAdministratorDe
9、sktop编程实验材料att_faces,s,int2str(1),int2str(1),.txt; p = load (FileName); avg_face=double(avg_face); big_array=reshape(p,1,10304); a_big_array=double(reshape(big_array,112,92); big_array=a_big_array(:,:)-avg_face(:,:); big_array=reshape(big_array,1,10304); tyxs=big_array*sort_V; re_newimage=double(zeros(10304,1); for i=1:400 re_newimage(:,:)= re_newimage(:,:)+tyxs(i)*sort_V(1:10304,i); end re_newimage= reshape(re_newimage,112,92); re_newimage=re_newimage(:,:)+avg_face(:,:); minum=min(min(re_newimage);%对特征向量进行标定 maxum=max(max(re_newimage); d=maxum-minu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植物病虫害防治:绿色农业新方向
- 房地产销售团队目标设定与考核
- 物业管理基本内容有哪些:步行街篇
- 高血压患者心血管风险研究报告
- 疫情防控野生动物保护技术方案
- 护理部院感防控物资管理制度
- 疫情下现代农业发展报告
- 医院感染监控:构建和谐医患关系
- 神经科医生怎样预防神经系统感染
- 严守底线廉洁从政领导干部廉政承诺书
- MOOC 中国电影经典影片鉴赏-北京师范大学 中国大学慕课答案
- 安全生产治本攻坚三年行动方案思路和要求解读课件
- 美育智慧树知到期末考试答案2024年
- 中药学电子版教材
- 工程监理检测设备及措施
- 数学人教版八年级下册初中数学建模:一次函数的应用.pptx
- 第十二章 MRP MRPII ERP.ppt
- 申请签证证件的证明(担保)函件(样本)
- 监狱罪犯心理健康教育ppt课件.ppt
- 重庆农艺师考试(种植业卷).doc
- 设备投标范本.doc
评论
0/150
提交评论