当前位置:网站首页>【人脸识别】基于直方图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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
边栏推荐
- Elk log analysis system
- [redis] what is progressive rehash
- Detailed explanation of dynamic compression and static compression of gzip
- ncnn Mat矩阵类
- Shell script integer value comparison, logic test, if statement, extract performance monitoring indicators
- RHCE ansible first operation
- yolov5 ncnn 推理
- Binary installation kubernetes 1.24.1
- RHCE学习指南 第5章 vim编辑器
- 【单片机仿真】(八)指令系统 — 数据传送指令
猜你喜欢

Oracle中字符串截取最全方法总结

HCIA static comprehensive experiment

Dynamic display of digital tube stopwatch of single chip microcomputer

ELK日志分析系统

Squid agent service deployment

全虚拟化与半虚拟化

Configure VLAN and use OSPF protocol for layer 3 switches

rsync—远程同步

當你在Linux系統中編譯安裝MySQL數據庫卡住了怎麼辦?

All dates in Oracle query time period
随机推荐
BiSeNetV2-面部分割 ncnn推理
ELK日志分析系统
Yum warehouse service and PXE automatic deployment system
High quality subroutine
Understand the JVM memory structure in one article
Summary of the most complete methods of string interception in Oracle
一文搞懂JVM垃圾收集
Unicast、Multicast、Broadcast
Shell script for, while loop statements, price guessing games
使用gatekeeper限制kubernetes创建特定类型的资源
Shell script integer value comparison, logic test, if statement, extract performance monitoring indicators
【单片机仿真】(十六)控制转移类指令 — 无条件转移指令、条件转移指令
Configure VLAN and use OSPF protocol for layer 3 switches
Elk log analysis system
RHCE8学习指南 第4章 获取帮助
Advanced usage of the responsibility chain pattern
升级kubernetes 1.23.2到1.24.1
1、AsyncTool框架简介和分析实现
Full virtualization and semi virtualization
【单片机仿真】(八)指令系统 — 数据传送指令