APP下载

基于摄像头的人脸识别与手势识别及控制

2022-06-23向阳詹明强

科技创新导报 2022年4期
关键词:人脸识别摄像头

向阳 詹明强

摘要:随着科技的发展,计算机发展越来越快,人机交互手段也日新月异,而手势控制与人脸识别作为一种新型的人机交互手段,有着便捷的特点。通过单个手指移动鼠标,两个手指相互靠近来点击,通过提取人脸面部中所具有的特征,通过增加特征值点和较流行的Open CV算法来提高精度,在现实生活中有很重要的实用价值。

关键词:人脸识别 手势控制 面部特征值 Open CV 摄像头

Camera-based Face Recognition and Gesture Recognition and Control

XIANG YangZHAN Mingqiang

Abstract: With the development of science and technology, the development of computers is getting faster and faster, and the means of human-computer interaction are also changing with each passing day. As a new type of human-computer interaction means, gesture control and face recognition have the characteristics of convenience. Move the mouse with a single finger, and click with two fingers close to each other. By extracting the features in the face, the accuracy is improved by adding feature value points and the more popular Open CV algorithm. It has very important practical value in real life.

Key Words: Face recognition;Gesture control;Facialfeature value;Open CVCamera

随着科技快速的发展,传感技术已经获得质的飞跃,人机交互的手段更加多样,从传统的鼠标、键盘输入设备,到现在的指纹识别、人脸识别、瞳孔识别、手势控制等方式,与传统的方式相比更加方便、直观。但由于人脸识别与手势控制对图像处理的算法要求很高,开发难度较大,现在人脸识别与手势控制系统还不够完善,都还处于发展状态[1]。

1 人脸识别

1.1 系统的总体设计

本文设计的是一个智能交互式人脸识别系统,主要有人脸录入、人脸识别、收集未知人脸。

1.2 理论分析

1.2.1 人脸录入分析

人脸录入时,本文采用的是事先通过摄像头对当前的人脸进行检测,然后将人脸的特征值信息录入数据库,并将后面的未知人脸的信息录入另一个数据库,以便于人脸录入系统的完善。

1.2.2 人脸识别

系统打开笔记本自带的摄像头,通过摄像头采集的人脸图像,把图像信息进行转换成特征信息,然后对图片进行检测,再与录入的人脸进行比对,得出结果[2]。

1.3 算法设计

1.3.1 代码的设计

对于人脸识别,主要采用Open CV和face_recognition库,face_recognition是基于dlib进行了二次封装,号称世界上最简洁的人脸识别库。dlib有专门的函数和模型,能够实现人脸68个特征点的定位。代码主要简介如下。

load_image_file 这个方法主要用于加载要是别的人脸图像,加载返回的数据是Numpy数组,记录了图片的所有像素的特征向量。

face_locations 定位图片中所有的人脸的像素位置返回值是一个列表形式,列表中每一行是一张人脸的位置信息,包括[top,right,bottom,left]四方位坐标。每个人脸就是一组元组信息,主要用于表示图像中所有的人脸信息

face_landmarks 识别人脸关键特征点参数仍然是待检测的图像对象,返回值是包含面部特征点字典的列表,列表长度就是图像中的人脸数。面部特征包含以下几个部分:nose_bridge(鼻梁)、right_eyebrow(右眼眉)、left_eyebrow(左眼眉)、right_eye(右眼)、left_eye(左眼)、chin(下巴)、nose_tip(人中、下鼻梁)、bottom_lip(下嘴唇)。

face_encodings 获取图像文件中所有面部编码信息返回值是一个编码列表,参数仍然是要识别的图像对象。如果是后续访问时,需要注意加上索引或遍历进行访问。每张人脸的编码信息是一个128维向量。

面部编码信息是进行人像对比的重要参数。

compare_faces 由面部编码信息进行面部识别匹配用于匹配两个面部特征编码,利用这两个特征向量的内积来衡量他们的相似度,根据阈值确认是否是同一个人。

第一个参数就是一个面部编码列表(很多张脸),第二个参数就是给出单个面部编码(一张脸)。

compare_faces会将第二个参数中的编码信息与第一个参数中的所有编码信息依次匹配,返回值是一个布尔列表,匹配成功则返回true,匹配失败则返回false,顺序与第一个参数中脸部编码顺序一致。

1.3.2人臉识别的结果

图1为用此方法的识别结果举例。

当把头像从人脸录入系统删除或者出现人脸录入系统没有的头像时,会显示图2所示图像。

1.4 结论

根据功能要求,将系统分为两个部分,分别为人脸图像的录入、人脸识别和未知头像的保存。人脸识别主要是先用摄像头采集头像,对采集的头像进行特征值提取,再与录入的部分图像进行对比,使用OpenCV库进行处理,来确定数据库中的训练好的样本和现在摄像头拍摄的头像检测出人脸最相似的,也可以用参数要求对设计的系统多次进行调试,可以提高准确率,同时具有灵敏度高、稳定性强等特点[2-3]。

2手势识别

2.1 手势的表示

手势的表示方法有很多种,常见的表示方法是将手势表示成一个向量,如使用手心的坐标、轮廓中曲率较大的点等手势特征组成的向量来表示。在手势识别中,以轮廓中曲率较大的点作为特征点的鲁棒性低,一方面是由于手在运动过程中存在变形,同一部分在相邻两帧图像中的曲率往往存在较大差异;另一方面是由于这种方法对手势分割的精度要求较高,很难适用于复杂背景、复杂光照的条件。此外,还有一种方法是使用直扳模型,它是人手物理结构的一种简化形式,能有效地描述人手的3D特征,但同时也有算法复杂、对手势分割的精度要求高等缺点[4]。

本文将人手划分成手掌、手指关节两部分,使用结构分析的方法来表示手势,这两部分描述手势的角度和层次不同,是一种从整体到局部逐渐细化的表示法;手掌可以作为一点(手心)或一块来表示整个手,而手指的关节则较为详细地描述人手信息[4]。

2.2 手势获取的技术

手势获取技术主要分为两类:基于视觉技术,主要靠摄像机进行手势识别与跟踪;基于可穿戴的手套、戒指、手镯等设备输出的数据进行识别。这两类方法的主要区别在于;基于视觉的技术无干扰或者少干扰,用户不需要戴传感器,可以用手进行交互,更符合用户的交互习惯;而基于可穿戴设备的技术需要在手上安装其他传感器,对用户有干扰[5]。本文采用关节等效距离特征识别方法[6],将通过对手指的各个关节弯曲的角度,利用21个关节的相关数据,对这21个关节点组成的手,先通过摄像头提取手的特征信息,构造一种有效距离特征和手指伸直程度特征,根据不同手势对应不同的特征信息进行手势识别[6]。

2.3手势识别结果

手势识别前先建立可能出现结果的数据库,数据库为1到5这5位数的5张手势照片,本文只以1到5这5个数做简单的举例,通过笔者笔记本电脑自带的摄像头拍摄的图像,追踪到手部区域对手部的21个关节点进行分析,得到这21个关节点的三维坐标,再通过图像分析得到与数据库内最相似的图片,并最后返回一个数,结果如图3、图4所示。

2.4 结论

本文用OpenCV算法,从实时视频流中读取手部关节点信息,并且对这21个关节点进行分析,得出基于关节点等效距离特征和手指伸直程度和关节点的位置数量的手势识别方法,并与数据库中的图像进行对比,得出结果,结果表明了此方法的有效性,相比于传统的Kinect方法,此方法更加简便、有效,实用性更高。

3手势控制

3.1 研究背景

随着科技的发展,人们和社会对“智能化”的需求越来越大,而人机交互已经成为主要的“智能化”方式,也成为人们研究的重点。人机交互主要有以上研究的人脸识别、手势识别,以及接下来要研究的手势控制等。手势控制需要借助于手势识别,对摄像头拍摄的图像序列进行分析处理。当今国内外有许多种研究手势控制的传统方法,如穿戴数据手套、采用RealSense 3D摄像头采集图像进行图像处理[7]。而本文则借助简单的笔记本电脑自带的摄像头进行手势控制。

3.2 系统方案

本文采用Python3.6版本借用Autopy 、Numpy和OpenCV等函數库对手势的特征值信息进行提取,并实现手势运动时的运动特征提取提取,得到21个关节点的三维坐标信息,再检测是否只有食指伸出,若只有食指伸出,则进入移动模式。通过摄像头拍摄的食指的位置,就可以得到食指的“关节点”的三维坐标信息,并将食指的坐标信息转化为鼠标在桌面的信息。当食指的“关节点”运动到某个位置时,再检测食指和中指是否都伸出,若食指和中指都伸出,则检测食指和中指两指尖的“关节点”的距离,若果距离短到一定的值时则对应为鼠标的点击。

3.3 动态手势的获取

由于摄像头拍摄手势图像时容易受到手势的背景等各种外部环境的影响,而要从各种不同或复杂多变的环境中提取中手势位置、形状的改变,就必须要考虑背景颜色、物体与摄像头的距离等因素的影响。因此,借用一种比较简单但实用的方法来尽可能减少噪声干扰[8]。

借用背景差分法,通过摄像头拍摄图像与背景的图像进行对比,得出运动的目标。首先要有一个明亮干净的背景,如果在黑暗环境下,手势的提取效果会变差。用摄像头拍摄的视频中某一帧图像和背景图像进行差分运算,并将计算的结果存入一个新的图像中去。在新得到的图像中,如果像素的值大于一个特定的阈值,则认为视频图像中在相同位置的像素属于运动目标区域;若像素的值小于或等于一个特定的阈值,则认为视频图像中在相同位置属于背景区域,通过此方法就可以提取运动的手势[8]。提取运动的手势后,再通过Open CV函数得到手势的几何特征,即先根据手势识别得到的21个关节点的三维坐标信息,对这21个挂节点进行建模,得到关节点的信息为M,可以表示为[6]:

M  (1)

其中, 表示第i个关节点的j分量的值。计算除0节点外,每两个节点的距离D,其公式为:

(2)

同时,为了减小不同人的手大小可能不同,所以我们进行标准化处理,其计算公式为:

(3)

其中, 表示关节点m到关节点n的等效距离。

3.4 动态检测手势的优化

现实生活中的动态手势的检测中,大多数情况下要求算法能够在没有人为干预下,自动进行手势的检测。而这对程序和算法的要求非常高,对摄像头采集图片的精度依赖性很高。再加上外界环境中光照等复杂环境的影响,使得摄像头检测手势的移动很困难。

本文在手势检测处理的步骤中,利用传统的机械学习的方法构造出手部关节点的特征,在用基于骨架的动态手势识别方法,此方法提取4种手部形状特征和手部方向特征,在输入线性SVM分类器进行识别[5],得出21个关节点特征信息,比普通的特征值提取效果更好。

3.5 实验结果

通过用Python3.6版本和OpenCV算法,系统Win10,摄像头为笔记本自带的摄像头,手势控制结果如图5和图6所示。

如图5所示,当只有一个食指的时候,会在食指的指尖显示一个“红色的小点”,这时则可以通过摄像头拍摄的照片来捕获食指的三维坐标,代替鼠标指针的移动;当伸出食指和中指时,此时食指则不能控制鼠标的移动,但如图6所示,在食指和中指的指尖处会出现一条“红线”用来测量两值间的距离,当两指尖的距离小于某个值时,就会出现图5所示的现象,此时表示鼠标的点击,从而完成简易的鼠标控制。

3.6 结论

本文从上面介绍的手势识别和本实验的手势控制的整体流程,关节点的设置、测量、和OpenCV算法的实现,以及手势获取的优化等等方法,最后实验证实基于OpenCV的手势识别算法有一定的简易性和准确性。随着人机交互方式的不断升级,手势控制将在不久的将来应用越来越广泛,同时手势控制也将给人们带来更多的便捷之处。

4结语

随着科技的飞速发展,人们不断追求“智能化”,本文通过本电脑自带的普通摄像头,首先捕获人脸,进行脸部特征值的提取,采用OpenCV算法,与建立的录入人脸数据库内的人脸进行对比后,找到最相似的人脸,同时发现未知人脸也可以保存下来,以便以后完善录入人脸的数据库,然后得出结果,结果发现准确率很高。再通过摄像头拍摄的视频得到手部的21个“关节点”,采用基于关节点等效距离特征和手指伸直程度和关节点的位置数量的手势识别方法,并采用OpenCV算法进行几何特征提取得到每个“关节点”的三维坐标信息,根据三维坐标信息与实现建立的手势数据库内进行特征信息的对比,得出手势代表的数字,然后得出简单的手势识别结果。最后在手势识别的基础上,借用手势识别和OpenCV算法,再利用传统的机械学习的方法构造出手部关节点的特征,通过基于骨架的动态手势识别方法优化手势的识别,得到21个“关节点”的坐标信息,并用食指的移动代表鼠标的移动,中指和食指之间的距离代表鼠标的左键(确定键),最后完成简易的手势控制。这3个实验在算法上有一定的相似之处,相辅相成,推动了人机交互的发展,在人机交互中有重要的借鉴意义。

参考文献

[1]夏梓璐,谭方敏,李静.基于手势控制的鼠标设计[J].信息与电脑:理论版,2021,33(9):134-137.

[2]李成勇,王莎,陈成瑞.基于OpenCV的人脸识别系统设计与实现[J].国外电子测量技术,2021,40(11):168-172.

[3]邵晓康,张恒,田春子,等.OpenCV算法的人臉识别在课堂签到系统上的分析与研究[J].电子世界,2021(23):31-32.

[4]朱继玉,王西颖,王威信,等.基于结构分析的手势识别[J].计算机学报,2006(12):2130-2137.

[5]张维,林泽一,程坚,等.动态手势理解与交互综述[J].软件学报,2021,32(10):3051-3067.

[6]张远来,王传江,黄灿.基于Realsense的手势识别与应用[J].计算机工程与设计,2019,40(03):839-844,873.

[7]胡茜. 基于深度学习的三维手势识别模型的研究与应用实例[D].昆明:云南大学,2017.

[8]贲永明,管孟凌,李丹阳,等.智能手势控制系统的算法实现[J].中国科技信息,2014(1):95-97.

猜你喜欢

人脸识别摄像头
我起不来呀
浙江首试公路非现场执法新型摄像头
人脸识别 等
摄像头连接器可提供360°视角图像
揭开人脸识别的神秘面纱
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
基于(2D)2PCA-LBP 的人脸识别方法的研究
人脸识别在高校安全防范中的应用
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别