MATLAB下人臉圖像的PCA重構(gòu)matlab代碼(共5頁)_第1頁
MATLAB下人臉圖像的PCA重構(gòu)matlab代碼(共5頁)_第2頁
MATLAB下人臉圖像的PCA重構(gòu)matlab代碼(共5頁)_第3頁
MATLAB下人臉圖像的PCA重構(gòu)matlab代碼(共5頁)_第4頁
MATLAB下人臉圖像的PCA重構(gòu)matlab代碼(共5頁)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、MATLAB下人臉圖像的PCA重構(gòu)matlab代碼主函數(shù)clc; clear all;newimage=double(zeros(112*6,92*5); M,sort_V,avg_face = averageface( );%返回去均值的矩陣和協(xié)方差,以及排列好的特征向量 k=1; new_sort_V =sort_V(1:10304,1:30);%取特征向量的前30個,并進(jìn)行顯示 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);%對特征向量進(jìn)行標(biāo)定 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); 子函數(shù)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、里進(jìn)行你的讀取操作 row, col=size(imgdata); %將數(shù)據(jù)寫入txt中 fid = fopen(C:UsersAdministratorDesktop編程實驗材料att_faces,s,int2str(m),int2str(k),.txt,w); %新建txt文件存儲圖像的坐標(biāo)和灰度值 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張臉轉(zhuǎn)換成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;%求低維度的協(xié)方差V0,=eig(C0);k=0;V=new_big_array*V0;%特征向量 for i=1:400 %將特征向

8、量進(jìn)行歸一化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);%對特征向量進(jìn)行標(biāo)定 maxum=max(max(re_newimage); d=maxum-minu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論