资源简介

用LDA和PCA模式识别方法对人脸特征进行提取计算的Matlab程序

资源截图

代码片段和文件信息

load(‘ORLFace.mat‘);
% basic information
dim=size(Iv1);
tal=size(Iv2);
class=size(Iv3);

ell=5; % ell training sample;
ellsample=5; % ellsample test sample;
t=1e7; % Similarity matrix 的参数

order=1;  
dita=1e7; 
NumTotal=ell*class;
lpp=NumTotal-class;
lda=class-1;
lda=35
polynomial=1

%------------------- step 1     KPCA       ------------------------------%
Itr=zeros(dimellclass);  % Training sample feature vector
for classnum=1:class
    for e=1:ell
        Itr(:eclassnum)=Iv(:eclassnum);  %
    end    
end
It=zeros(dimellsampleclass);% Testing sample feature vector
for classnum=1:class
    for e=1:ellsample
        It(:eclassnum)=Iv(:e+ellclassnum);  %
    end    
end
%----------------------------------------------------------------%
%   倒入向量 Iv(dimell)
%   样本类数  class
Imean=zeros(dim1);
for classnum=1:class
    for i=1:ell
        Imean=Imean+Itr(:iclassnum); 
    end
end
Imean=(1/(ell*class))*Imean;                       %求平均向量
Q=zeros(dimell*class);
for classnum=1:class
    for num=1:ell
        Q(:num+(classnum-1)*ell)=Itr(:numclassnum)-Imean(:1);
    end
end
R=zeros(ell*classell*class);
R=Q‘*Q;    % R‘s size is ell * ell
d=rank(R);
d=40
[UL]=eigs(Rd‘LM‘);  % 求出 R 的eigenvector and eigenvalue
Wpca=zeros(dimd);
for p=1:d
    Wpca(:p)=(1/(sqrt(L(pp))))*Q*U(:p);
end
%% 程序至此得到了线形变换的矩阵  W  .
%----------------------------------------------------------------%
Iy=zeros(dellclass); % training feature vector  %   
for classnum=1:class
    for num=1:ell
        Y=zeros(d1);
        Iy(:numclassnum)=Wpca‘*Itr(:numclassnum);
    end
end
% -------------------------------------------------------------------------
Tpca=zeros(dellsampleclass);
for classnum=1:class
    for num=1:ellsample
        Tpca(:numclassnum)=Wpca‘*It(:numclassnum);
    end
end
% ----------------                       step 3      LDA                           -----------------%
Minclass=zeros(dclass);
for classnum=1:class      % 得到 每一个类内的样本的平均值
    for i=1:ell
        Minclass(:classnum)=Minclass(:classnum)+Iy(:iclassnum); 
    end
    Minclass(:classnum)=(1/ell)*Minclass(:classnum);  
end
Sw=zeros(dd);    % 计算wihin-class matrix Sw
for classnum=1:class      
    for i=1:ell
        
        Sw=Sw+(Iy(:iclassnum)-Minclass(:classnum))*(Iy(:iclassnum)-Minclass(:classnum))‘;
        
    end
end
Msample=zeros(d1); % 得到 所有样本的平均值
for classnum=1:class
    for i=1:ell
        Msample=Msample+Iy(:iclassnum); 
    end
end
Msample=(1/(ell*class))*Msample;                       %求平均向量
Sb=zeros(dd);    % 计算between-class matrix Sb
for classnum=1:class      
    Sb=Sb+ell*(Minclass(:classnum)-Msample)*(Minclass(:classnum)-Msample)‘;
end
% d=dim;                                 % 选择 d =dim 个最大的特征值
[FiCi]=eigs(Swd‘LM‘);  % 求出 R 的eigenvector and eigenvalue
Diag=zeros(1d)
for p=1:d
    Diag(1p)=1/(sqrt(Ci(pp)));
end
Cmodify=diag(Dia

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5429  2006-04-07 21:22  LDA.m

     文件       3822  2006-04-16 13:56  PCA.m

----------- ---------  ---------- -----  ----

                 9469                    3


评论

共有 条评论