📄 rec.asv
字号:
clear all
load allcoor;
load base;
warning off
accu = 0;
m=1;
%Class=[0,0,0,0];
% 测试过程
for i=1:1:20
for j=4:1:10 %读入测试图像
%filename = sprintf('D:\\MATLAB702\\work\\K-L\\yalefaces\\%d\\s%d.bmp',i,j);
filename = sprintf('D:\\MATLAB702\\work\\orl_faces\\s%d\\%d.pgm',i,j);
a=imread(filename);
b=double(a);
%figure(m);
sprintf('正在识别... %d',m)
m=m+1;
%subplot(1,2,1); imshow(a);
%title('待识别图片');
%小波
[c,l]=wavedec2(b,2,'db2');
cB1=appcoef2(c,l,'db4',1);
cb1=wcodemat(cB1,440,'mat',0);
b=cb1;
%
b=b(1:size(b,1)*size(b,2));
tcoor= b * base; %计算坐标,是1×p阶矩阵
%%%%%%%%%%%%%%%%%%% SVM %%%%%%%%%%%%%%%%%%%%%%%%%%
Y=[-ones(1,3) ones(1,3)]';
for I=1:19
J=I;
MSV(1:3,:)=allcoor(1+3*(I-1):1+3*(I-1)+2,:);
while(20-J~=0)
MSV(4:6,:)=allcoor(1+3*J:1+3*J+2,:);
J=J+1;
[nsv,alpha,bias,T]=svm168(MSV,Y,'linear',5);
W=MSV'*alpha;
Output=tcoor*W+bias;
if(sign(Output)==-1)
Class(I)=Class(I)+1;
else
Class(J)=Class(J)+1;
end
end
end
[CC,Index]=max(Class);
%Class
%Index
%filename = sprintf('D:\\MATLAB702\\work\\orl_faces\\s%d\\1.pgm',Index);
%a=imread(filename);
%subplot(1,2,2); imshow(a); title('识别结果');
if Index==i
accu=accu+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
end
accu
accu/140
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -