for i=1:40 for j=1:5
str=strcat('E:\\人脸\\2dfacedatabase\\ORL\\s1\\1.pgm'); eval('img=imread(str);'); sum=double(sum)+double(img); cel{1,ii}=img; ii=ii+1; end end
meanA=sum/M; cov=zeros(ib); for i=1:M img=cel{1,i};
B=double(img)-double(meanA); temp=B'*B;
cov=double(cov)+double(temp); end
[vv dd]=eig(cov); num2=size(vv);
% Sort and eliminate those whose eigenvalue is zero
v=[]; d=[];
for i=1:size(vv,2) if(dd(i,i)>1e-4) v=[v vv(:,i)]; d=[d dd(i,i)]; end end
num1=size(v,2);
%sort, will return an ascending sequence [B index]=sort(d); ind=zeros(size(index)); dtemp=zeros(size(index)); vtemp=zeros(size(v)); len=length(index); for i=1:len
dtemp(i)=B(len+1-i); ind(i)=len+1-index(i); vtemp(:,ind(i))=v(:,i); end
d=dtemp; v=vtemp;
imgafter=[]; for i=1:M
for j=1:eignum img=cel{1,i};
temp1=double(img)*double(v(:,j)); imgafter=[imgafter temp1]; end
cellafter{1,i}=imgafter; imgafter=[]; end
timeconsume=etime(clock,tt);
testimg=M/traincopy; findimgnum=traincopy; suc=0;
% figure(5); for k=1:testimg InputImage
=imread(strcat('E:\\
人
脸
\\2dfacedatabase\\ORL\\s',int2str(k),'\\10.pgm'));
testafter=[]; for j=1:eignum
temp=double(InputImage)*double(v(:,j)); testafter=[testafter temp];
end
% Find Euclidean distance e=[]; for i=1:M
tempA=double(testafter)-double(cellafter{1,i}); total=0; for j=1:eignum
aa=norm(tempA(:,j)); total=total+aa;
相关推荐: