基于PCA的人脸识别_Matlab实现(个人研读之后的一些总结)

以下是我在查阅相关文献之后的一些个人的总结,望大神们指正。

基于PCA的人脸识别

PCA简介

这是百度百科的解析:
“对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的协方差矩阵,然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个特征的维数下降了。

人脸识别实现的主要步骤

人脸识别主要分为了两个主要的部分,一个是人脸训练,另一个重要的部分是人脸测试。(为了提高识别的准确率,可以首先对图片进行一些预处理,比如是图片的平滑,锐化,小波过滤等等,降低背景,还有图片角度对识别结果的影响)

人脸训练部分:

  1. 读取训练数据,将图片存到矩阵中。
  2. 利用PCA对图片矩阵进行降维和特征提取(对于特征提取和降维,还可以使用SVD奇异值分解的方法,但是在本文中主要使用的是PCA方法)
  3. 训练特征数据规范化
  4. SVM样本训练

    对于人脸识别的部分(其实和人脸训练部分类似):

    1.读取测试数据。

  5. 测试数据降维
  6. 测试特征数据规范化
  7. 样本分类

附上Matlab GUI代码:

这里写图片描述

GUI界面包括了三个按钮(faceGui.m)

  1. 测试准确率,就是人脸训练,将样本集中的前5张作为训练的样本,将样本中后5张作为测试样本,测试人脸识别的准确率。
  2. 选择图片,选择图片是选择一张图片作为人脸识别使用
  3. 图像匹配,就是人脸识别
global h_axes1;
global h_axes2;
global edit2;
h_f=figure('name','人脸识别系统','position',[300,200,600,400]);
%clf reset;%clf 清除当前的图像的所有自图像,Reset重新设置图像的目标属性为默认值
set(h_f,'defaultuicontrolfontsize',12);
set(h_f,'defaultuicontrolfontname','宋体');

h_axes1=axes('parent',h_f,'position',[0.2,0.28,0.25,0.56],'Unit','normalized','visible','on');
h_axes2=axes('parent',h_f,'position',[0.55,0.28,0.25,0.56],'Unit','normalized','visible','on');

figcolor=get(h_f,'color');
edit2=uicontrol(h_f,'style','text','position',[150,330,300,40],...
    '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','图像匹配',...
    'position'<
  • 8
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值