image=zeros(112,92,10);
image(:,:,1)=imread('1.pgm');
image(:,:,2)=imread('2.pgm');
image(:,:,3)=imread('3.pgm');
image(:,:,4)=imread('4.pgm');
image(:,:,5)=imread('5.pgm');
image(:,:,6)=imread('6.pgm');
image(:,:,7)=imread('7.pgm');
image(:,:,8)=imread('8.pgm');
image(:,:,9)=imread('9.pgm');
image(:,:,10)=imread('10.pgm');
for i=1:1:10
image_sum10(i,:)=reshape(image(:,:,i),1,10304);
end
fprint('read 10 pictures reday.\n');
%去均值
[image_sum10_remmean,meanValue]=remmean(image_sum10);
%PCA处理
[image_sum10_remmean_E,image_sum10_remmean_D]=pcamat(image_sum10_remmean);
%白化处理
[image_to_ica,whiteningMatrix,dewhiteningMatrix]=whitenv(image_sum10_remmean,image_sum10_remmean_E,image_sum10_remmean_D);
%ICA处理
k='defl';
l=10;
m='gaus';
[temp_10,image_sum10_ICA,W]=fpica(image_to_ica,whiteningMatrix,dewhiteningMatrix,k,l,m);
%注:此时的temp_10为列向量。
temp_10_T=temp_10';
y1=W*image_to_ica;
B_T_1=image_sum6_remmean/y1;
%投影矢量
whiteningMatrix_inv=inv(whiteningMatrix);
W_inv=inv(W);
B_T=whiteningMatrix_inv*W_inv;
%读取待识别图片
image_test=imread('3.pgm');
image_test_1=reshape(image_test(:,:),1,10304);
image_test_1=double(image_test_1);
[image_test_1_remmean,meanValue_test]=remmean(image_test_1);
b_test=image_test_1_remmean/y1;
fprintf('read one pricture to wait identify .\n');
%匹配比较,并输出识别结果。
c=zeros(1,10);
for i=1:1:10
c(l,i)=(b_test*(B_T_l(i,:)'))/(norm(b_test)*norm(B_T_l(i,:)));
end
d=0;
for i=1:1:10
if c(l,i)>0.999,
fprintf('the same one');
d=1;
end
end
if d==0,
fpintf('error');
end
%识别结束