自己平时写的KPCA人脸识别代码,可以运行,有必要的注释
%用KPCA进行人脸识别的Matlab代码
clear
clc
allsamples=[];%所有训练图像
for i=1:40
for j=6:10
a=imread(strcat('E:\MATLAB\MATLAB\work\Data\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:112*92); % b是行矢量 1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右
b=double(b);
allsamples=[allsamples; b]; % allsamples 是一个200 * 10304 矩阵,allsamples 中每一行数据代表一张图片。
end
end
cov_size=size(allsamples,1); %求allsamples的一个行数
train_num=cov_size;
patterns=allsamples; %
for i=1:cov_size
for j=i:cov_size
K(i,j) =(patterns(i,:)*patterns(j,:)'+1)^0.7; %求K矩阵,K矩阵为一个对称矩阵
K(j,i) = K(i,j);
end
end
unit = ones(cov_size, cov_size)/cov_size;
K_n = K - unit*K - K*unit + unit*K*unit; %中心化K矩阵得到K_n
[evecs,evals] = eig(K_n); %求K_n矩阵的特征值与特征向量
evals = real(diag(evals)); %diag()函数得到的为一个列向量,real()函数取实数
[l1,l2]=sort(-1*evals'); %得到的l2实际为降序的index
evals=l1*(-1);
evecs=evecs(:,l2);
for i=1:cov_size,
evecs(:,i) = evecs(:,i)/(sqrt(evals(i)));%单位化
end
%90%的贡献率
dsum = sum(evals);
dsum_extract = 0;
p = 0;
while( dsum_extract/dsum < 0.9)
p = p + 1;
dsum_extract = sum(evals(1:p));
end
max_ev=p;
%进行特征提取
features = zeros(train_num, max_ev);
features = K_n * evecs(:,1:max_ev);
allcoor = features;
accu=0;
% 测试过程
for i=1:40
for j=1:5 %读入40 x 5 副测试图像
a=imread(strcat('E:\MATLAB\MATLAB\work\Data\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:10304);
b=double(b);
unit_test = ones(1,cov_size)/cov_size;
K_test = zeros(1,cov_size);
for j=1:cov_size,
K_test(j) = (b*patterns(j,:)'+1)^0.7; %对测试样本中的第一幅图像进行求K_test
end
K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit; %中心化
test_features = zeros(1, max_ev);
test_features = K_test_n * evecs(:,1:max_ev); %求这一幅测试图像的特征
tcoor=test_features; %tcoor是1×p阶矩阵
for k=1:200
mdist(k)=norm(tcoor-allcoor(k,:)); %求欧式距离,最近距离分类
end;
[dist,index2]=sort(mdist); %对距离进行排序,得到一个最近的距离
class=ceil( index2(1)/5 );
if class==i
accu=accu+1;
end;
end;
end;
accuracy=accu/200 %输出识别率
p
【Key words】Laplacian Matrix Projection(LMP); Kernel Principal Components Analysis(KPCA); face recognition 1 人脸识别是当前模式识别领域内的一个活跃课题,应用...
基于KPCA和FMSD的人脸识别_专业资料。针对核最大散度差(KMSD)方法在人脸识别中存在边缘类和次优性问题,提出一种基于核主成分分析(KPCA)与模糊最大散度差(FMSD)...
基于Gabor滤波和KPCA的人脸识别方法_专业资料。是第2 卷第40期 21 4月 0 0年 计算机技术与发展 ODMPUTER TB口 Ol 0GY AND DEVELOPMENT 基于Gbrao 滤波和 KP...
利用小波变换提高基于KPCA方法的人脸识别性能_专业资料。基于核主成分分析(KPCA)的人脸识别算法能够提取非线性图像特征,在小样本训练条件下有较好性能.然而并非所有...
基于LMP和KPCA的人脸识别 提出一种基于托普拉斯矩阵投影变换和核主成分分析的人脸图像识别方法。对人脸图像做拉普拉斯矩阵变换,通过核主成分分析提取特征,再利用最近...
第28卷第5期2008年5月 文章编号:1001—9081(2008)05—1263—04 计算机应用ComputerApplications V01.28No.5May2008 一种融合KPCA和KDA的人脸识别新方法周晓彦1...
模式识别与仿真 Patlern Recognition and Simulation 自动化技术与应用 2003 年第 22 卷第 9 期 基于小波分析和 KPCA 的人脸识别杨国亮, 任金霞, 刘细平 ( ...
基于小波变换与KPCA人脸识别技术研究基于小波变换与KPCA人脸识别技术研究隐藏>> 厦门大学 硕士学位论文 基于小波变换与KPCA人脸识别技术研究 姓名:陈松 申请学位级别:...
结合DCT与KPCA的人脸识别 核主成分分析是主成分分析在核空间中的非线性推广,能有效应用于人脸识别,但是识别过程时间开销过大仍是待解决的问题。提出了一种结合离散...
一种基于KPCA与LDA的人脸识别改进算法_机械/仪表_工程科技_专业资料 暂无评价
热门文档