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

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 仿真结果

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

4 参考文献

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

你可能感兴趣的:(图像处理,matlab,算法,开发语言)