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
Post a Comment