![]() |
人脸识别问题
各位高手,本人现急于交论文,以前也没学过MATLAB,在网上下的程序不怎么懂,运行结果不太对,望指教!急急急 :cry: :cry:
程序如下: allsamples=[]; for i=1:40 for j=1:5 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.pgm')); b=a(1:112*92); b=double(b); allsamples=[allsamples;b]; end end samplemean=mean(allsamples); for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; end; %获取特征植及特征向量 sigma=xmean*xmean'; [v d]=eig(sigma); d1=diag(d); %按特征值大小以降序排列 dsort=flipud(d1); vsort=fliplr(v); %以下选择90%的能量 dsum=sum(dsort); dsum_extract=0; p=0; while(dsum_extract/dsum<0.9) p=p+1; dsum_extract=sum(dsort(1:p)); end i=1; % (训练阶段)计算特征脸形成的坐标系 base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2)); allcoor=allsamples*base; accu = 0; %测试过程 for i=1:40 for j=6:10%读入40 x 5 副测试图像 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.pgm')); b=a(1:10304); b=double(b); tcoor=b*base; for k=1:200 mdist(k)=norm(tcoor-allcoor(k,:)); end; %三阶近邻 [dist,index2]=sort(mdist); class1=floor( (index2(1)-1)/5 )+1; class2=floor((index2(2)-1)/5)+1; class3=floor((index2(3)-1)/5)+1; if class1~=class2 && class2~=class3 class=class1; elseif class1==class2 class=class1; elseif class2==class3 class=class2; end; if class==i accu=accu+1; end; end; end; accuracy=accu/200 % 输出识别率 |
怎么没人回复我啊,本人很急啊:cry: :cry:
|
你没有给出问题,怎么回答你呀
|
你的毕业设计题目是什么啊,能不能发出来大家看一下啊
|
所有时间均为北京时间。现在的时间是 13:43。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.