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