【图像识别】基于PCA+SVM 表情识别评分系统matlab代码

本文探讨了PCA主成分分析与SVM支持向量机在人脸识别中的应用,通过MATLAB实现快速PCA算法和SVM训练测试,从ORL_faces库中获得90%的识别率,并在实际人脸测试中达到73%的成功率。关键代码展示了人脸匹配过程,优化参数并介绍了相关技术背景。
摘要由CSDN通过智能技术生成

1 简介

PCA(主成分分析)与SVM(支持向量机)技术对于人脸识别而言非常重要,文章结合PCA与SVM来设计一个人脸识别系统.在MATLAB编译环境下,分别探讨PCA技术与SVM技术,总结出一种快速PCA算法以及SVM的测试与训练算法;从orl_faces人脸库中选取训练数据与测试数据进行训练与测试,对其中重要的参数进行调优,最终达到90%的识别成功率.再经真实人脸的训练与测试,达到了73%的真实人脸识别成功率.​

2 部分代码

%-----人脸匹配  
%-----输入:细胞结构体数据Cell_all(包括样本集合,特征值与特征向量)  
%           想要识别的人脸(彩色图像)  
%-----输出:匹配的结果  
%-----------------------------------    
function FaceFind = facefind(Cell_all,img2find)  
%细胞结构体的调用  
img_all = Cell_all{1};  
[m1,n1] = size(img_all);  
V = Cell_all{2};  
D = Cell_all{3};  
namud = 0.5;  %图片缩小的倍数  
%对需要识别的图像进行灰度等的处理  
pic = rgb2gray(img2find);  %灰度处理  
pic = imresize(pic,namud);  %变换大小  
[m2,n2] = size(pic);   
pic = reshape(pic,1,m2*n2);  %重新排列  
pic = double(pic)/255;         
pic_done = pic*V*D;  %处理完的数据  
%% 归一化 --》避免运算出现特别大的数据  
Ma = max(max(pic_done));  
Mi = min(min(pic_done));  
pic_done = pic_done/(Ma - Mi);  
%%  
for i=1:m1  
   % 归一化 --》避免运算出现特别大的数据  
   Ma1 = max(img_all(i,:));  
   Mi1 = min(img_all(i,:));  
   img_all(i,:) = img_all(i,:)/(Ma1 - Mi1);  
   %求范数--》把他们之间的几何距离作为评判与哪一个人脸最近的标准  
   error(i) = norm(img_all(i,:)-pic_done);  
end  
%找到其中最近的就认为是所要识别的人脸  
FaceFind = find(error == min(error));  
% FaceFind = error;

3 仿真结果

4 参考文献

[1]胡沐晗. "基于PCA和SVM的人脸识别系统." 计算机时代 12(2017):5.

​​​​​​​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值