matlab - how to obtain the eigenfaces using eigenvalues and eigen vectors? -


i want find eigenfaces eigen values here code reference.

clc; clear all; close all;  % i) read images = 1:9     img{i} = imread(['c:\users\shree\desktop\archana\target\' num2str(i) '.jpg']); end  %ii) converting gray scale gray_img=cellfun(@rgb2gray,img,'uniformoutput',false); %imshow(gray_img{2});  %iii) resizing gray images res_img = cellfun(@(x)(imresize(x, [50, 50])), gray_img, 'uniformoutput', false); %imshow(res_img{2});  %displaying image     d=[res_img{1} res_img{2} res_img{3}         res_img{4} res_img{5} res_img{6}         res_img{7} res_img{8} res_img{9}];    figure, imshow(d);  %mean image  mean_img=(res_img{1}+res_img{2}+res_img{3}+res_img{4}+res_img{5}+res_img{6}+res_img{7}+res_img{8}+res_img{9})/9; figure,imshow(mean_img);  %iii)single vector conversion vect_img= cellfun(@(x)((x(:))), res_img, 'uniformoutput', false);  %mean of single vector mean_vect=(vect_img{1}+vect_img{2}+vect_img{3}+vect_img{4}+vect_img{5}+vect_img{6}+vect_img{7}+vect_img{8}+vect_img{9})/9;  %deviation matrix dev_mat=cellfun(@(x) ((x)-mean_vect),vect_img,'uniformoutput',false); %imshow(dev_mat{1}) u=[dev_mat{1} dev_mat{2} dev_mat{3} dev_mat{4} dev_mat{5} dev_mat{6} dev_mat{7} dev_mat{8} dev_mat{9} ] figure ,imshow(u);  %covarience matrix c=[double(u')*double(u)]/9;  %varience v=var(c);  %eigen values lambda = eig(c); [v,d] = eig(c) ;% eigenvalues (d) & eigenvectors (v),=> a*v = v*d size(lambda); % extract dional of matrix vector %v = diag(v);  %sort varience acc.decreasing order sort(lambda,'descend'); 

i reached upto arranging eiganvalues non-increasing order plz me how procced in order eigenfaces.regards

instead of loading each file 1 one try this

imagedatabasepath ='c:\users\shree\desktop\final data';  imagefiles = dir(imagedatabasepath);  train_number = 0;  = 1:size(imagefiles,1)  if not(strcmp(imagefiles(i).name,'.')|strcmp(imagefiles(i).name,'..')...          |strcmp(imagefiles(i).name,'thumbs.db'))      image_number = image_number + 1;   end end 

now make images 1d image vectors

 t = [ ];    = 1 : image_number  str = int2str(i); str = strcat('\',str,'.jpg'); str = strcat(imagedatabasepath,str);  imt = imread(str);  [irow icol] = size(imt);  temp = reshape(imt,irow*icol,1);    t = [t temp];                   end 

calculates mean value

m = mean(t,2);   train_number = size(t,2); 

calculates deviation of each image mean image

a = [ ];    = 1 : image_number     temp = double(t(:,i)) - m;      = [a temp]; end 

create covariance matrix

l = a'*a;  

calculate eigen values , eigen vector v-eigen vector d-diagonal matrix eigen values

[v d] = eig(l);   l_eig_vec = [];  = 1 : size(v,2)       if( d(i,i)>1 )          l_eig_vec = [l_eig_vec v(:,i)];     end end 

eigenvectors of covariance matrix c (or so-called "eigenfaces") can recovered l's eiegnvectors.

eigenfaces = * l_eig_vec; 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -