基于主要成分分析的人脸二维码识别系统-含Matlab代码
目录
- 一、引言
- 二、人脸图像信息处理
- 2.1 主成分分析PCA
- 2.2 PCA人脸压缩与重构算法分析
- 三、二维码转换以及识别
- 3.1 QR码
- 3.2 将人脸图像生成二维码
- 3.3 二维码的识别与图像还原
- 四、人脸识别系统-用户界面
- 五、参考文献
- 六、Matlab代码获取
一、引言
这个高速发展的时代,一切事物都将与“快”相联系。人脸识别技术的发展成熟保证了人们的信息安全,二维码的飞速发展成为了现如今信息传递的新媒介。“慢”就会被淘汰,因此减少现如今人脸识别过程的时间仍是目前研究的一个课题。本文将现今两项比较前沿的领域——人脸识别和二维码,融合在一起,以达到快速识别人脸信息的目的。
其中,人脸识别技术的优点在于:①图像采集方式灵活、方便,通过手机、相机等设备就能完成;②图像的采集过程简单;③人脸图像信息易于处理;④人脸面部特征易于提取和识别。QR 二维码的优点在于:①QR码的可存储信息量大;②技术简单便于实现。将这两项前沿技术相结合,有望为人脸识别技术未来的发展提供一个新的思路。
二、人脸图像信息处理
2.1 主成分分析PCA
主成分分析(Principal Component Analysis)是一种应用非常广泛的基础数学分析方法。其内在思想是K-L变换或者霍特林变换,通过分析变量找出一组最优正交基,使得变换后的变量与原来变量之间的均方误差最小。通过K-L变换后,将原来的自变量变换成另一组变量,变换后的变量便是“主成分”。从“主成分”中提取一部分重要成分作为新的自变量,最后用最小二乘法对选取主成分后的模型参数进行估计。
PCA 原理[1]是将一个高维向量通过一个特征变换矩阵将变换后的变量投影到一个低维向量空间中形成一个低维向量,并且几乎不损失主要信息。本文的人脸识别过程中,将每一个特征脸处理成了一个特征脸。
本文运用PCA 算法将ORL人脸库的数据信息进行降维处理,得到的特征脸信息再与QR二维码技术结合,设计出基于主成分分析的人脸二维码识别系统。
2.2 PCA人脸压缩与重构算法分析
本文的训练集以及测试集采用的是 ORL 人脸库。基于 ORL 人脸库的信息多样和标准灰度图像的优点,我们将直接对选取的人脸样本集进行训练。从ORL人脸库中选取380张人脸图像,每张图像的像素为112×92,为了方便数据处理我们将每张图像放缩成像素为 64 × 64 的图像。
图 1 所示的图像为放缩后的图像,可以看出经过放缩后的图像仍然可以完全识别,而且没有损失主要的特征信息。
图 1 放缩前后的图像
通过放缩后的人脸图像矩阵为 ,其中每个图像矩阵按照 64 × 64 的列向量进行重新排列,构成一个样本训练集 ϕ =[φ1,φ2,⋯,φ380], φi 表示长度为64 × 64 的列向量。
图 2 图像压缩成向量示意图
样本训练集构成后我们将获取平均脸,平均脸在数学意义中表示为样本训练集的平均值,为 ,同时平均值 也为样本集所有人脸图像共有的特征成分。
将得到的平均脸放缩成像素为64×64的人脸图像,如图 3 所示。
图 3 平均脸图像
因为我们需要训练集样本中图像彼此不同的部分,因此需要将训练集中的共有成分去掉,即
,其中 。
接着通过PCA算法求出协方差矩阵的特征值 和对应的特征向量 。
将协方差矩阵的特征值进行降序排列,即:
经过多次测试,我们取 n=350 时得到的测试相对误差最小,即大于 的特征值对应的特征向量构成主成分,因此主成分构成的变换矩阵为:
这样每一幅人脸都可投影到 构成的特征脸子空间中,任何一幅人脸图像都可以向其作投影 ,得到一组经变换后的变量,即低维向量 y,此低维向量可作为人脸识别的依据。
计算出特征脸子空间后,我们便可以将被识别人脸图像向其投影。首先将被识别人脸图像压缩成向量,然后将其共有的成分剔除。即:
其中 为被识别人脸图像的特有成分, 为被识别人脸图像的全部信息, 为训练集样本平均值或者平均脸信息。
将被识别的人脸图像的特有成分经过特征变换矩阵投影后,便得到了降维后的向量 ,此向量也称为被识别人脸图像的“主成分”。即:
降维后我们需要再对主成分进行人脸图像重构,因为 K-L 变换是正交对称性的,因此 ,即:
其中E为单位矩阵,因此 ,再将得到的被识别人脸图像的特有成分加上平均脸,即 ,重构出被识别的人脸图像。
三、二维码转换以及识别
3.1 QR码
QR 码(Quick Response)是一种矩阵式二维码符号。QR 码有制作成本低、存储容量大、应用和储存范围广、可靠性高等特点。
图 4 二维码图形格式
QR 码可以同时在水平和垂直方向的二维空间储存信息,在表示信息方面也可以记载更复杂的数据,除了字母和数字外还可以录入汉字、图片、指纹、网址等信息,相当一个可移动的数据库。而相比其他二维码而言,QR 二维码具有识读速度快、数据密度大、占用空间小的优势。结合 QR 二维码以上优势,它能够储存大量人脸信息,制作成本低,并且能够快速识别,所以本文采用 QR 二维码来对人脸信息进行储存。
3.2 将人脸图像生成二维码
MATLAB 本身不具备生成和识别二维码的函数,所以需要借助 Java 的 ZXing 开源库,之后再使用 MATLAB 提供的用于和 Java 模块通信的各种函数。为了生成二维码。首先创建一个 ZXing.MultiFormatWriter的实例,从而把抽象的 Java 类实例出个体,实例对象才能直接进行交互。接下来,使用 MultiFormatWriter 的encode 方法,对之前导入的人脸数据信息进行编码。至此,编码就已经完成。下一步要做的,是从我们创建的 BitMatrix 实例中提取图像数据,用它的 ToBitmap 将其转化为一个 dotNET 的 Bitmap 对象,然后再将其转化成 MATLAB 矩阵。在这过程中需要将像素之间空格和换行符删除,从而将字符串转换为 MATLAB 可以接受的图像矩阵。最终生成的包含人脸数据信息的二维码示例如图 5。
图 5 含有主成分信息的二维码
3.3 二维码的识别与图像还原
识别 QR 二维码,需要用到的类主要是 BinaryBit⁃map,识别过程关键类是 QRCodeReader。通过指令查阅类可知,所用到的函数输入变量类型是 BinaryBit⁃map,所以就要求解码之前要进行类型转换,即将普通格式的二维码图片转化为 Java 类型图像格式,之后就可以调用函数对 Java 类型图像灰度化、降噪、边缘检测、轮廓提取、矫正畸变,最终得到二维码中的人脸信息(向量数据)。
将二维码主要信息提取后,我们再利用 K-L 变换是正交对称性: ,即:,其中 E 为单位矩阵,U 为特征脸子空间。因此我们再将从二维码中提取的信息乘以特征脸子空间,即 ,得到被识别人脸图像的特有成分后,我们再将得到的被识别人脸图像的特有成分加上平均脸,即 ,重构出被识别的人脸图像。
图 6 原始图像以及重构图像
四、人脸识别系统-用户界面
人脸识别系统如下图所示:
图 7 人脸识别系统
五、参考文献
[1] 张超群. 基于主成分分析法的人脸识别算法研究[J]. 电脑编程技巧与维护,2020(7):111-115. DOI:10.3969/j.issn.1006-4052.2020.07.041.
六、Matlab代码获取
Matlab代码获取,可私信博主。
博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法、程序、科研方面的问题,均可私信交流讨论。
基于主要成分分析的人脸二维码识别系统-含Matlab代码相关推荐
- 【图像处理】QR二维码识别与生成matlab代码
1 简介 QR二维码的识别技术是数字图像处理领域研究的一个热门课题.随着物联网的不断发展,QR二维码凭借其强大的信息存储能力,方便快捷的识读优点,安全可靠的编码技术,已经逐渐地应用于各个行业领域.同时 ...
- 【图像识别】基于主成分分析算法实现人脸二维码识别matlab代码
1 简介 基于主成分分析(PCA)的人脸识别算法由于其识别率高,算法技术成熟越来越多的被用做人脸识别技术的研究.本文首先讲解了人脸识别前的图像预处理,然后介绍基于主成分分析(PCA)算法的主要步骤,最 ...
- 【第 07 章 基于主成分分析的人脸二维码识别MATLAB深度学习实战案例】
基于主成分分析的人脸二维码识别MATLAB深度学习实战案例 人脸库 全套文件资料目录下载链接–>传送门 本文全文源码下载[链接–>传送门] 如下分析: 主文件 function varar ...
- 基于Android的二维码识别系统的研究与实现(eclipse开发)
目 录 1 Android系统开发背景与意义 1 1.1 Android系统平台的出现 1 1.2 Android系统的发展 1 1.3 Android系统架构的介绍 1 1.4 Android开放系 ...
- 基于MATLAB的条码二维码识别系统
基于MATLAB的条码二维码识别系统 课题介绍 本设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现.其中图像处理部分是条码识别重要的前期工作,利用MATLAB强大 ...
- 基于机器视觉的Data Matrix二维码识别
基于机器视觉的Data Matrix二维码识别 二维码识别,这个在视觉应用中占有很重要的比例,各种各样的二维码都有可能需要识别.常见的QR码.Data Matrix码.本方案是识别Data Matri ...
- 【毕业设计】深度学习二维码识别系统 - python opencv
文章目录 0 前言 2 二维码基础概念 2.1 二维码介绍 2.2 QRCode 2.3 QRCode 特点 3 机器视觉二维码识别技术 3.1 二维码的识别流程 3.2 二维码定位 3.3 常用的扫 ...
- 能在Windows CE上运行的的二维码识别系统,使用手机摄像头扫描二维码
欧美和日本,二维码的使用比较广泛,最近看到一则新闻,我们国家也在航空服务中使用二维码了.二维码具有信息容量大.纠错能力强.可靠性高.成本低.防伪性好.持久耐用等一维条码所不具备的优良特点.二维码的种类 ...
- 基于MATLAB的条形码二维码识别系统
一.课题介绍 本设计研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现.其中图像处理部分是条码识别重要的前期工作,利用MATLAB强大的图象处理工具箱实现图像的读入.加 ...
最新文章
- 内存溢出原因及解决方案
- CodeForces - 431C k-Tree(dp)
- 简单纯文字浮动信息-Tooltip
- C++全局变量的声明和定义
- [转载]云架构师的进阶之路
- python 中不属于数据挖掘分析模块的是()_大工19秋《数据挖掘》在线作业3(参考答案)...
- Spring Boot 自定义注解实现AOP切面织入
- 视频图像协议接口大全
- 一键获取网盘提取码的神器“云盘万能钥匙”
- Nacos下载与安装
- 谁能和乔布斯比勤奋?乔布斯的睡眠时间
- 谁说bug解决不了?试试这个使用日志法
- 【基于JAVA的旅游路线推荐系统-哔哩哔哩】 https://b23.tv/4STx5NI
- (附源码)springboot家庭财务分析系统 毕业设计 641323
- 【附源码】计算机毕业设计SSM我的大学电子相册
- 阿里云python自测答案_阿里云技能测试python初级中级高级
- Mac已安装应用启动台不显示
- Mysql创建用户与赋权限操作
- WPF设备无关单位(DIU)
- 腾讯T2大牛亲自教你!5214页PDF的进阶架构师学习笔记,终局之战
热门文章
- 分布式一致性算法理论分析
- 论文格式之 参考文献跳转及自动更新
- java 获取permgen_java permgen内存泄漏问题处理
- 使用layuimini模块快速开发java后台系统模板(前后端分离)
- 【建议收藏】一文简述半导体封装技术演变史
- 【Facebook招聘笔试】查找相同URL
- 【毕设选题】最新电子信息工程毕业设计项目合集 - 100例
- 如何确保大模型追求“正确”的目标?丨AI安全与对齐圆桌回顾
- 2022年西式面点师(技师)操作证考试题库及模拟考试
- DSP 程序远程升级 / Bootloader设计指南(三)—— CMD文件与DSP存储空间