资源简介
该程序采用MATLAB编写,带有orl_faces人脸数据库。下载解压,可直接运行。程序包含训练,识别精度计算,识别匹配等过程。程序结果将以界面GUI形式展示。
代码片段和文件信息
%用KPCA进行人脸识别的Matlab代码
global h_axes1;
global h_axes2;
global edit2;
h_f=figure(‘name‘‘KPCA人脸识别系统‘‘position‘[300200600400]);
%clf reset;%clf 清除当前的图像的所有自图像,Reset重新设置图像的目标属性为默认值
set(h_f‘defaultuicontrolfontsize‘12);
set(h_f‘defaultuicontrolfontname‘‘宋体‘);
h_axes1=axes(‘parent‘h_f‘position‘[0.20.280.250.56]‘Unit‘‘normalized‘‘visible‘‘on‘);
h_axes2=axes(‘parent‘h_f‘position‘[0.550.280.250.56]‘Unit‘‘normalized‘‘visible‘‘on‘);
figcolor=get(h_f‘color‘);
edit2=uicontrol(h_f‘style‘‘text‘‘position‘[15033030040]...
‘backgroundcolor‘figcolor);%动态变化提示
button_open=uicontrol(h_f‘style‘‘push‘‘string‘‘选择照片‘...
‘position‘[250 40 100 50]‘callback‘‘GUIopen‘);
button_recg=uicontrol(h_f‘style‘‘push‘‘string‘‘测试准确率‘...
‘position‘[100 40 100 50]‘callback‘‘face‘);
button_match=uicontrol(h_f‘style‘‘push‘‘string‘‘KPCA图像识别‘...
‘position‘[400 40 100 50]‘callback‘‘GUIrecg‘);
set(edit2‘string‘‘读取训练数据并训练....‘)
drawnow
allsamples=[];%所有训练图像
for i=1:40
for j=6:10
a=imread(strcat(‘Data\s‘num2str(i)‘\‘num2str(j)‘.pgm‘));
%a=imread(strcat(‘./Data/s‘num2str(i)‘/‘num2str(j)‘.jpg‘));
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(allsamples1);
train_num=cov_size;
patterns=allsamples;
for i=1:cov_size
for j=i:cov_size
K(ij) =(patterns(i:)*patterns(j:)‘+1)^0.7;
K(ji) = K(ij); %核函数是对称的
end
end
unit = ones(cov_size cov_size)/cov_size;
K_n = K - unit*K - K*unit + unit*K*unit; %改变核矩阵以实现数据在高维空间去均值
[evecsevals] = eig(K_n); %求去均值后的核矩阵的特征值、特征向量
evals = real(diag(evals)); %取特征值实部
[l1l2]=sort(-1*evals‘);
evals=l1*(-1);
evecs=evecs(:l2); % 取排序后特征值对应的特征向量
for i=1:cov_size %因为K为满秩矩阵
evecs(:i) = evecs(:i)/(sqrt(evals(i))); %这样可以使特征空间中协方差矩阵C的特征向量归一化
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;
unit_train = ones(train_numcov_size)/cov_size;
for i=1:train_num
for j=1:cov_size
K_train(ij) =(patterns(i:)*patterns(j:)‘+1)^0.7;
end
end
K_train_n = K_train - unit_train*K - K_train*unit + unit_train*K*unit;
features = zeros(train_num max_ev);
features = K_train_n * evecs(:1:max_ev); % 训练样本在特征空间的投影
allcoor = features;
accu=0;
% 测试过程
for i=1:40
for j=1:5 %读入40 x 5 副测试图像
a=imread(strcat(‘Data\s‘num2str(i)‘\‘num2str(j)‘.pgm‘));
%a=imread(strcat(‘./Data/s‘num2str(i)‘/‘num2str(j)‘.jpg‘));
b=a(1:10304);
b=double(b);
unit_test = ones(1cov_size)/cov_size;
K_test = zeros(1cov_size);
for j=1:cov_size
K_test(j) = (b*patterns(j:)‘+1)^0.7;
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-05-24 16:35 实验代码\
目录 0 2019-05-24 16:48 实验代码\KPCA+SVM人脸识别\
目录 0 2019-05-24 16:30 实验代码\KPCA+SVM人脸识别\Data\
目录 0 2019-05-24 16:30 实验代码\KPCA+SVM人脸识别\Data\s1\
文件 10318 1994-04-18 14:17 实验代码\KPCA+SVM人脸识别\Data\s1\1.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s1\10.pgm
文件 10318 1994-04-18 14:17 实验代码\KPCA+SVM人脸识别\Data\s1\2.pgm
文件 10318 1994-04-18 14:17 实验代码\KPCA+SVM人脸识别\Data\s1\3.pgm
文件 10318 1994-04-18 14:17 实验代码\KPCA+SVM人脸识别\Data\s1\4.pgm
文件 10318 1994-04-18 14:17 实验代码\KPCA+SVM人脸识别\Data\s1\5.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s1\6.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s1\7.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s1\8.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s1\9.pgm
目录 0 2019-05-24 16:30 实验代码\KPCA+SVM人脸识别\Data\s10\
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s10\1.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s10\10.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s10\2.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s10\3.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s10\4.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s10\5.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s10\6.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s10\7.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s10\8.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s10\9.pgm
目录 0 2019-05-24 16:30 实验代码\KPCA+SVM人脸识别\Data\s11\
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s11\1.pgm
文件 10318 1994-04-18 14:07 实验代码\KPCA+SVM人脸识别\Data\s11\10.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s11\2.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s11\3.pgm
文件 10318 1994-04-18 14:18 实验代码\KPCA+SVM人脸识别\Data\s11\4.pgm
............此处省略867个文件信息
- 上一篇:matlabGUI界面设计
- 下一篇:ILnumerics资料
相关资源
- matlabGUI界面设计
- 基于ADAMS和MATLAB的机器人联合仿真
- 运筹学与最优化matlab编程
- 冈萨雷斯数字图像处理MATLAB版.中文版
- Indian_pinesMATLAB格式的高光谱数据集和
- MINIST+SVM+MATLAB手写体识别
- 《MATLAB神经网络43个案例分析》源代码
- MATLAB程序设计基础与应用.pdf
- MATLAB神经网络43个案例分析。目录+代
- 维也纳大学LTE的系统仿真代码
- 老师荐)matlab在振动信号处理中的应
- matlab电力电子仿真教程.pdf
- 计算傅立叶光学:Matlab教程
- matlab实现康威生命游戏的代码以及m
- 数字图像处理MATLAB版第二版源码和图
- 基于Matlab实现带GUI界面的数字调音台
- 测绘相关专业MATLAB学习教程
-
薛定宇《基于MATLAB、Simuli
nk的系统仿 - edges-master
- 实战Matlab之并行程序设计(刘维).
- RCNNfast-RCNN和faster-RCNN最全文献和matl
- 高光谱图像和matlab读取程序
- 使用神经网络中的ART算法实现对标签
- 《MATLAB机器视觉与深度学习实战》 配
- 模式识别PCA NMF LDA GMM算法代码
- 基于Matlab的三维重建代码
- 基于PCA与SVM的人脸识别matlab代码
- 实用Matlab图像与视频处理
-
基于Matlab-Simuli
nk的电动汽车仿真模 - 高光谱图像分类--SVM
评论
共有 条评论