• 基于主要成分分析的人脸二维码识别系统-含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代码获取代码链接如下:

    https://download.csdn.net/download/m0_70745318/87760811


    博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法程序科研方面的问题,均可私信交流讨论


  • 相关阅读:
    窗口-视口转换(详细)
    带你深入了解队列(c/cpp双版本模拟实现)
    SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析-中
    微信小程序开发02 授权模型: 小程序的用户体系与 OAuth 规范
    以太坊2.0 节点搭建
    项目九:学会python爬虫数据保存(小白圆满级)
    浅谈React中的ref和useRef
    Postgresql源码(70)逻辑复制DecodeXLOG主要流程和数据结构
    OpenCV图像处理学习十七,Canny边缘检测算法实现
    kali的三层镜像是什么意思
  • 原文地址:https://blog.csdn.net/m0_70745318/article/details/127762185