基于OpenCV的距离估计的数据可视化研究
2022-02-07王剑雄李宗阳李晨昊
欧 琪 王剑雄 孙 歌 李宗阳 李晨昊
(河北建筑工程学院,河北 张家口 075000)
0 引 言
近年来,随着现代社会的迅猛发展,生物模式识别技术已成为最主要的生物识别手段之一,广泛应用在各行各业中,在电子金融、门禁管理、安防等领域中起到了较为关键的作用,成为人们生活息息相关的一部分.在新冠疫情的大背景下,开发一系列基于人脸识别的体温测量技术,使采取应对疫情防控的措施更加方便快捷,出行有了更多的保障.
目前,人脸识别技术作为一项利用获取人脸部的生物特征信号实现身份确认的重要技术手段.长期以来是人工智能、计算机视觉、生物心理学等应用领域的热点研究,为了识别人类的一些生理特点(虹膜、指纹等),人脸具备唯一性、一致性以及高度的不可再现性.为身份鉴定工作创造了稳定的环境条件[1].该项技术逐渐趋于成熟,但在人脸识别技术的基础上扩展一些更加生活化、实用性的应用却比较少,因此,对人脸识别技术的生活化、实用化、普遍化扩展很重要.
本文以Python语言为基础,利用人脸检测模型和优化的特征提取算法,设计了一套实时人脸识别与距离估计系统,能够在可视化界面中标注出人脸的位置,具有一定的应用价值.
1 人脸检测模型和识别算法简介
1.1 人脸检测模型简介
人脸识别技术广泛应用于各个领域,使用大数据分析和深度学习算法实现了相当高的准确率,发展较为成熟.谷歌的FaceNet系统在使用人脸检测算法后,可在人脸比对数据集上达到99.63%的正确率[2].但由于拍照姿势、光照强度、表情变化、遮挡物影响、年龄增长等因素,影响了人脸的识别率,其关键的突破点在于特征提取.因此人脸识别仍有很多的难点需要攻克[3].本文介绍了人脸检测模型和优化的特征提取算法,进行人脸检测和特征提取,获取到68个人脸图像的关键点,并设置了左眼最左边和右眼最右边的像素距离.利用计算机对所收集的图片进行了大量的训练学习,对人脸区域做出了检测判定,并在可视化界面中标注出人脸的位置.
1.2 LBP算法基本原理
光照对物体的影响是全局性的,使得画面中物体的明暗程度在同一方向上发生变化,明暗程度随与光源的距离而变化,使得局部相邻像素之间的每个像素都被光线改变,但像素的相对大小并不改变.根据这个特点,局部二进制模式(Local Binary Pattern,LBP)可以计算出有效特征.基本的LBP算子都是在一个3*3图像的子视窗中定义的,把该图像周围的8个相邻像素的最大灰色值和中心灰色值加以对比,得出了一个八位二进制代码(大于阈值为1,小于阈值为0),并在各个地方给出了不同的权重,最后得出一个整数,这便是这个子窗口的LBP变量特征值.从而获取了该图像及其周围区域的纹理信号,然后根据这样的编码的直方图[4]来做分类,用公式(1)表示为:
(1)
显然,随着采样点数量的增加,图案的种类也急剧增加.为了要消除多余的信号,并保持有效信号,就必须在原有LBP特征的基础上加以降维.因此,采用Ojala等相关学者提出的LBP的“等价模式”[5],其定义如公式(2)表示:
(2)
这种等价模型占据了总模式的大多数,既减少了原始特征的维度,又减少了高频噪声的影响.因为等价模型能够代表图形中的角点、边界和斑点等重要信息,所以通过这些等价模型和混合模式类的直方图,能够更好地获得图形特征.
1.3 PCA算法简介
主成分分析(Principal Component Analysis,PCA)是一种重要的线性分析方法,被广泛地用于统计学、图像处理和其他学科,如信号处理学科,它可用于获得信息的主要特征成分并减少高维信息的维度.PCA是一种线性变换,在坐标系上表示数据,并把所有待处理的空间都划分成带有最大方差的正交子空间,该基向量就是在数据中散布最大的模式.也因此,对于在给定的空间上求新的所有基向量,与快速傅立叶变换相比,PCA灵活性的代价之一是更高的计算要求[6].
PCA把一组可能相关的变量转化为数量相等的不相关的变量,称为主成分.第一个主成分尽可能地反映出数据中的分歧,随后的每个成分尽可能地反映剩余数据中的分歧.如果有必要用较低维度的空间对数据集进行近似处理,则使用较早的主成分,而忽略后面的主成分.PCA的数学模型公式表示为:
假设一个样本检测到P个变量:x1,x2…xp,则对于n个样本有:
(3)
即:
(4)
可简写为:
Fj=aj1x1+aj2x2+…+ajpxpj=1,2,…,p
(5)
经过PCA训练得到一个投影矩阵,但是正常情况下,计算的矩阵太大,计算特征值的时间会更长,为了训练时间加快速度,计算协方差维度是N*N的维度,这使得矩阵更容易找到特征值和特征向量,从而减少了得到最终结果矩阵所需要的时间.
2 结合LBP和PCA改进算法的人脸识别
如果直接通过LBP原始算子中的特征向量进行人脸识别,会存在算法复杂度高、识别时间长的缺点.如果采用LBP的等价模型来获取特征,则会存在对某些图像表现力不足的缺点.因此,本文将通过PCA算法对LBP中原始算子所提取的特征向量加以降维分析,在提取出的人脸特征后,再通过SVM方式加以鉴定与分析.该计算的流程图如图1所示.
图1 基于LBP和PCA的人脸识別流程图
数据采集是使用系统定制设计的图像采集功能进行的,系统对采集的数据进行特征处理.特征处理可以提取出对模式分类中最有利的特征,去除采集到的图像中的一些冗余信息,来降低模式样本的维度,从而就提高了人脸分类的准确性,并且减少了占用的资源.因此,LBP算子和PCA的结合方法可以更好地提取人脸图像的特征,更加灵活地降低图像维度.
为了更好地提取人脸特征的细节信息,在进行LBP特征值提取前,要对图像进行分块处理,计算每个分块的LBP值,将所有分块区域的直方图特征连成复合型的直方图特征,组成完整的LBP特征直方图.支持向量机(SVM)方法中可区分的二分类问题的最优分类可以最大化两类的空白区域的宽度,这个宽度被定义为n维特征空间的判别超平面之间的距离.通常,存在多个区分性超平面,确定最优判别超平面的能力是这种方法的一个主要优点,它也帮助处理了训练时的过拟合问题.将SVM方法运用在经过降维后的数据上进行分析,可以提高准确性.
训练人脸模型设计在程序运行前会在控制台打印出“训练开始!”的提示信息,设置相关参数的值经过训练函数进行训练,将其训练结果存在文件中,训练完成后会在控制台打印出“训练完成!”的提示.在进行姿态估计前有一个很重要的关键步骤,也是前文中所提到的需要使用校准方法校准两眼角之间的距离,并获取到两眼角之间的距离的值再来进行姿态估计.姿态估计是遍历所获得到的faces,其中遍历子变量face设置其关键点和坐标轴,最后将人脸框显示在屏幕中间.在这一过程中,程序会对其获取到的信息进行分析,得出其姿态估计的结果是否是“正在观看”的状态,以便于后面程序的使用.
在仔细对比了LBP算子与LBP等价模型的优缺点之后,为利用LBP算子的灰度不变性以及对纹理细节的描绘能力,并避免等价模型无法很好地获得所有图形特性的缺陷,为了更好地获得所有可以代表图像的图像特性,以及找到对原始数据的最佳近似还原,又引入了基于LBP和PCA的特征提取方式.进行了上述的人脸检测和定位、获取了LBP特征因子和PCA降维后,采用SVM方式进行和分析后,识别的结果能进一步提高距离估计的准确性.
3 距离估计及可视化界面展示
程序在对运行过程中获取到的人脸图像画面进行距离估计,在距离估计之前需要通过相关函数获取到关键点,再通过结合程序获取到的68个关键点来计算旋转矢量得到视差数据,最后通过上述得到的值计算距离和角度.本实验程序使用的是立体摄像机这样的双目成像设备来计算目标检测的人脸图像离摄像头的距离,双目立体视觉研究的关键在于标定摄像机和立体匹配两个方向.利用双目成像设备(如立体摄像机、立体相机)的左、右摄像头获得被测目标物的同时刻左、右图像;利用获得到的图像对,基于建立的立体视觉模型,通过计算左右图像对应点之间的位移偏差;再结合摄像机焦距等参数,使用三角相似等数学方法计算被测目标人脸图像离摄像机的距离,从而显示在系统界面中.
假设摄像机没有像差,左、右摄像机的成像平面已严格对齐,左、右主点已被校准,主射线是平行的.立体摄像机模型如图2所示.
图2 立体摄像机模型
设图2中点Pleft坐标为(xl,yl),Pright坐标为(xr,,yr,),则视差的定义为d=xl-xr.根据相似三角形原理有
(6)
由公式(6)可知视差d和距离Z成反比,当视差较小时,视差变化对距离Z的影响较大;当视差较大时,视差变化对距离Z的影响较小,因此,测距系统只有在距离较近时才会更加准确.相似三角估算原理图如图3所示,其中参数f表示相机焦距,图中公式的参数a取值为人眼角像素距离.
图3 相似三角形估算距离
在获得视差映射后,通过矩阵相乘可提取深度信息.OpenCV中嵌入了函数实现该功能,在该函数输入由上面得到的视差数据,会输出所需的三维点阵,然后提取深度信息,从而获取人脸图像的目标距离,进行更准确的距离估计.
程序的主函数是在最后把所得到的信息进行可视化到页面中,此程序设计了6种展示方法,分别是1:人脸框;2:68个脸关键点;3:人脸梯形框;4:人脸移动指针:5:人脸三维坐标系,使用者可通过调整参数display的值来显示可视化用户界面.可视化界面展示方式如图4所示.
图4 可视化展示界面
4 应用及扩展
人脸识别的研究发展日趋成熟,构建人脸识别系统需要用到一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等[7].
人脸识别技术近年来发生了很大的变化,本文介绍了基于OpenCV技术,设计了一套实时人脸识别与距离估计的系统.在经过图像采集、图像特征提取算法进行训练、识别等过程,计算出人脸与摄像头的距离,同时对使用对象的姿态进行估计,将其结合做出扩展应用,并对其结论数据做了可视化操作,使结果更加的清晰明了.其中,在图像特征处理中,通过结合使用的PCA算法,降低了原始LBP算子所获取的特征向量的维数,在获得了人脸特征后,再通过SVM方式加以确定和分析,从而提高距离估计的准确性.本文介绍的系统程序就其最终结果可视化展示图的角度分析此次设计准确率高、稳定,但美中不足的是,对X轴、Y轴、Z轴的偏移量测量的不够准确,界面可视化也缺少一定的美观性,对于此类问题还有待研究和改进.