当前位置:网站首页>【人脸识别】基于直方图Histogram实现人脸识别附matlab代码
【人脸识别】基于直方图Histogram实现人脸识别附matlab代码
2022-07-17 00:18:00 【Matlab科研工作室】
1 内容介绍
人脸识别算法主要包括Eigenfaces算法、Fisherfaces算法与LBPHfaces算法。Eigenfaces算法将高维的人脸图像降维映射到低维特征脸子空间,实现面部特征采集,该算法特征数据多、识别准确率高。Fisherfaces算法在低维空间达到最大类间离散度与最小类内离散度,对不同的数据集计算其相应的特征。LBPHfaces算法采用局部特征值的描述方法,通过提取图像局部细节描述其纹理特征。
本文设计选用Eigenfaces算法。该算法虽然具有较高的识别率,但对光照因素较为敏感,因此光照因素的存在导致系统具有较高的误识率与拒识率。本文采用光照锥方法对图像进行光照补偿。
光照锥即不同光源方向的图像叠加形成的凸型锥体。光照锥方法基于光度立体视觉方法,使用前提是样本为理想散射模型,即可在固定光照下的所有视场方向观测到物体表面。算法思想是在构建特征脸时利用光照锥生成新的图像样本。
首先,加载用于训练的图像样本,将图像样本转换成矩阵向量形式与表示光源方向矩阵。其次,根据单一光源人脸表面的阴影计算出光源的反射率与表面法向量,由这些信息可以得到三维人脸重构图像与光源方向的估计值。最后,通过改变光源的方向,计算出不同光源下的合成图像。通过丰富特征脸的图像光源信息,实现在构建特征脸阶段减少光照对人脸识别系统的干扰。
2 仿真代码
<span style="color:#333333"><span style="background-color:rgba(0, 0, 0, 0.03)"><code><span style="color:#ca7d37">function</span> varargout = FR_Processed_histogram(varargin)</code><code>gui_Singleton = <span style="color:#0e9ce5">1</span>;</code><code>gui_State = struct(<span style="color:#dd1144">'gui_Name'</span>, mfilename, ...</code><code> <span style="color:#dd1144">'gui_Singleton'</span>, gui_Singleton, ...</code><code> <span style="color:#dd1144">'gui_OpeningFcn'</span>, @FR_Processed_histogram_OpeningFcn, ...</code><code> <span style="color:#dd1144">'gui_OutputFcn'</span>, @FR_Processed_histogram_OutputFcn, ...</code><code> <span style="color:#dd1144">'gui_LayoutFcn'</span>, [] , ...</code><code> <span style="color:#dd1144">'gui_Callback'</span>, []);</code><code><span style="color:#ca7d37">if</span> nargin && ischar(varargin{<span style="color:#0e9ce5">1</span>})</code><code> gui_State.gui_Callback = str2func(varargin{<span style="color:#0e9ce5">1</span>});</code><code><span style="color:#ca7d37">end</span></code><code></code><code>i</code><code> axes (handles.axes3)</code><code> %image no: <span style="color:#0e9ce5">5</span> is shown <span style="color:#ca7d37">for</span> visualization purpose</code><code> imshow(imread(strcat(<span style="color:#dd1144">'ORL\S'</span>,num2str(M),<span style="color:#dd1144">'\5.bmp'</span>)))</code><code> msgbox ( <span style="color:#dd1144">'Correctly Recognized'</span>);</code><code><span style="color:#ca7d37">else</span></code><code> display ([ <span style="color:#dd1144">'Error==> Testing Image of Subject >>'</span> num2str(subjectindex) <span style="color:#dd1144">' matches with the image of subject >> '</span> num2str(M)])</code><code> axes (handles.axes3)</code><code> %image no: <span style="color:#0e9ce5">5</span> is shown <span style="color:#ca7d37">for</span> visualization purpose</code><code> imshow(imread(STRCAT(<span style="color:#dd1144">'ORL\S'</span>,num2str(M),<span style="color:#dd1144">'\5.bmp'</span>)))</code><code> msgbox ( <span style="color:#dd1144">'Incorrectly Recognized'</span>);</code><code><span style="color:#ca7d37">end</span></code><code>display(<span style="color:#dd1144">'Testing Done'</span>)</code><code>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</code><code><span style="color:#ca7d37">function</span> box_Callback(hObject, eventdata, handles)</code><code>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</code><code><span style="color:#ca7d37">function</span> box_CreateFcn(hObject, eventdata, handles)</code><code><span style="color:#ca7d37">if</span> ispc && isequal(get(hObject,<span style="color:#dd1144">'BackgroundColor'</span>), get(<span style="color:#0e9ce5">0</span>,<span style="color:#dd1144">'defaultUicontrolBackgroundColor'</span>))</code><code> set(hObject,<span style="color:#dd1144">'BackgroundColor'</span>,<span style="color:#dd1144">'white'</span>);</code><code><span style="color:#ca7d37">end</span></code><code>%% 响应Input Image按钮</code><code><span style="color:#ca7d37">function</span> Input_Image_button_Callback(hObject, eventdata, handles)</code><code>global filename pathname I</code><code>[filename, pathname] = uigetfile(<span style="color:#dd1144">'*.bmp'</span>, <span style="color:#dd1144">'Test Image'</span>);</code><code>axes(handles.axes1)</code><code>imgpath=strcat(pathname,filename);</code><code>I = imread(imgpath);</code><code>imshow(I)</code><code>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</code><code><span style="color:#ca7d37">function</span> axes3_CreateFcn(hObject, eventdata, handles)</code><code></code></span></span>3 运行结果

4 参考文献
[1]聂倩倩, 秦润泽, 高育新,等. 基于直方图均衡化的人脸识别系统设计与实现[J]. 物联网技术, 2018, 8(7):3.
[2]杨恢先, 唐金鑫, 陶霞,等. 基于韦伯梯度方向直方图的人脸识别算法[J]. 计算机工程与应用, 2017, 53(15):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
边栏推荐
猜你喜欢

RHCE8学习指南第一章 安装RHEL8.4

人脸检测几种方法

Que se passe - t - il lorsque vous compilez et installez une base de données MySQL bloquée dans un système Linux?

MySQL主从复制+读写分离
![[redis] what is progressive rehash](/img/99/0b2c81e55a70c41de245612996d1a2.png)
[redis] what is progressive rehash

ncnn param文件及bin模型可视化解析

仿射变换实现

Understand the JVM memory structure in one article

1. Introduction, analysis and implementation of asynctool framework

3. Asynctool framework principle source code analysis
随机推荐
GFS分布式文件系统
Lamp platform deployment and Application
2、AsyncTool框架实战使用
Analysis skills of time complexity and space complexity
要开源节流
MySQL master-slave replication + read write separation
Understand the switch and its role
【单片机仿真】(十七)控制转移类指令 — 调用及返回指令
Redis' simple dynamic string SDS
SQL之CASE WHEN用法详解
Firewall firewall
10. System safety and Application
MySQL数据库中的事务和存储引擎
二进制安装kubernetes 1.24.1
【单片机仿真】(十六)控制转移类指令 — 无条件转移指令、条件转移指令
Shell script for, while loop statements, price guessing games
Understand the JVM memory structure in one article
HCIA static comprehensive experiment
OSPF comprehensive experiment
微信小程序--Taro框架实际开发中的问题汇总