www.pudn.com > Gabor_2dpca_pca.rar > gabor2pca.m
function [out_time]=gabor2pca(P_2N,P_1N)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Based on Gabor wavelets and 2DPCA+PCA
% wenchangzhi 2006/9/16
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=100; % 手掌数
M=6; % 每个手掌的图像数目
MM=3; % 训练样本数
% % 输入所有图像,由gabor_palm 函数得到运算结果.并将其保存
% for i=0:99
% for j=1:6
% i
% j
% im=imread(strcat('P_',num2str(i),'_',num2str(j),'.bmp'));
% im=double(im);
% % h=fspecial('gaussian');
% H = fspecial('gaussian',[5 5],0.5);
% imagein=filter2(H,im)/255;
% result_gabor=gaborpalm(imagein);
% eval(['save Gabor_four_eight\G' num2str(i) '_' num2str(j) ' result_gabor ' ';']);%save the result matrix
% end
% end
% 训练,输入所有的训练图像,计算其平均值
tic;%计时开始
Sum=zeros(256,40);
Temp=[];
for i=0:99
for j=1:MM
eval(['load Gabor_four_eight\G' num2str(i) '_' num2str(j) ';']);
Sum=Sum+result_gabor;
Temp=[Temp; result_gabor];
clear result_gabor;
end
end
result_mean=Sum/(N*MM);
for i=0:299
Temp(256*i+1:256*(i+1),:)=Temp(256*i+1:256*(i+1),:)-result_mean;
end
% 计算协方差矩阵A
A=Temp'*Temp/(N*MM);
% 计算此协方差矩阵的特征值和特征向量
[vector value]=eig(A);
[val index]=sort(diag(value)); % 将特征值以升序排列
colum_size=size(vector,2); % 求出特征向量的维数
for i=1:colum_size
vector_sort(:,i)=vector(:,index(colum_size-i+1));
% 将特征向量以特征值的降序排列
value_sort(i)=val(index(colum_size-i+1));
% 将特征值降序排列
end
p=0; % 提取特值的个数
value_sum=sum(value_sort);
value_extract=0;
while(p