基于摄像头的人脸识别与手势识别及控制
向阳詹明强
(西藏民族大学信息工程学院陕西咸阳712042)
摘要:随着科学技术的飞速发展,计算机的发展越来越快,由此诞生的人机交互手段也日新月异,而手势控制与人脸识别作为一种新型的人机交互手段,有着便捷的特点。通过单个手指来控制鼠标的移动,再通过两个手指尖的相互靠近来模拟鼠标的点击。通过提取人脸面部中所具有的几何特征,然后增加面部特征值点的方法和较流行的Open CV算法来提高人脸识别的精度,在现实生活中有很重要的实用价值。
关键词:人脸识别手势控制面部特征值Open CV摄像头
郑爽性转版照片中图分类号:TP391.41文献标识码:A文章编号:1674-098X(2022)02(a)-0073-05
Camera-based Face Recognition and Gesture Recognition
and Control
XIANG Yang ZHAN Mingqiang
(College of Information Engineer,Xizang Minzu Univerysity,Xianyang,Shaannxi Province,712042China) Abstract:With the rapid development of science and technology,the development of computers is getting faster and faster,and the methods of human-computer interaction are also changing rapidly.As a new type of human-computer interaction means,gesture control and face recognition have the characteristics of convenience.Control the movement of the mouse by a single finger,and then simulate the click of the mouse by two fingertips close to each other.By extracting the geometric features in the face,the accuracy of face recognition is improved by adding facial 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;Facial feature value;Open CV;Camera
随着科技快速的发展,传感技术已经获得质的飞跃,人机交互的手段更加多样,从传统的鼠标、键盘输入设备,到现在的指纹识别、人脸识别、瞳孔识别、手势控制等方式,与传统的方式相比更加方便、直观。但由于人脸识别与手势控制对图像处理的算法要求很高,开发难度较大,现在人脸识别与手势控制系统还不够完善,都还处于发展状态[1]。
1人脸识别
1.1系统的总体设计
本文设计的是一个智能交互式人脸识别系统,主要有人脸录入、人脸识别、收集未知人脸。
1.2理论分析
1.2.1人脸录入分析
人脸录入时,本文采用的是事先通过摄像头对当前的人脸进行检测,然后将人脸的特征值信息录入数据库,并将后面的未知人脸的信息录入另一个数据库,以便于人脸录入系统的完善。
1.2.2人脸识别
mike前女友sara系统打开笔记本自带的摄像头,通过摄像头采集的人脸图像,把图像信息进行转换成特征信息,然后对图
DOI:10.16660/jki.1674-098X.2201-5640-4075
基金项目:西藏自治区级大学生创新创业训练项目(项目编号:S202110695076)。作者简介:向阳(2000—),男,本科在读,研究方向为人机交互、图像处理。
詹明强(1999—),男,本科在读,研究方向为网络空间安全。
片进行检测,再与录入的人脸进行比对,得出结果[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_ey
ebrow(右眼眉)、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结论
根据功能要求,将系统分为两个部分,分别为人脸图像的录入、人脸识别和未知头像的保存。人脸识别主要是先用摄像头采集头像,对采集的头像进行特征值提取,再与录入的部分图像进行对比,使用Open CV 库进行处理,来确定数据库中的训练好的样本和现在摄像头拍摄的头像检测出人脸最相似的,也可以用参数要求对设计的系统多次进行调试,可以提高准确率,同时具有灵敏度高、稳定性强等特点[
2-3]。
2手势识别
2.1手势的表示
手势的表示方法有很多种,常见的表示方法是将手势表示成一个向量,如使用手心的坐标、轮廓中曲率较大的点等手势特征组成的向量来表示。在手势识别中,以轮廓中曲率较大的点作为特征点的鲁棒性低,一
图1正确识别图像
图2未知头像
方面是由于手在运动过程中存在变形,同一部分在相邻两帧图像中的曲率往往存在较大差异;另一方面是由于这种方法对手势分割的精度要求较高,很难适用于复杂背景、复杂光照的条件。此外,还有一种方法是使用直扳模型,它是人手物理结构的一种简化形式,能有效地描述人手的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结论
本文用Open CV算法,从实时视频流中读取手部关节点信息,并且对这21个关节点进行分析,得出基于关节点等效距离特征和手指伸直程度和关节点的位置数量的手势识别方法,并与数据库中的图像进行对比,得出结果,结果表明了此方法的有效性,相比于传统的Kinect方法,此方法更加简便、有效,实用性更高。3手势控制
3.1研究背景
随着科技的发展,人们和社会对“智能化”的需求越来越大,而人机交互已经成为主要的“智能化”方式,也成为人们研究的重点。人机交互主要有以上研究的人脸识别、手势识别,以及接下来要研究的手势控制等。手势控制需要借助于手势识别,对摄像头拍摄的图像序列进行分析处理。当今国内外有许多
种研究手势控制的传统方法,如穿戴数据手套、采用RealSense3D 摄像头采集图像进行图像处理[7]。而本文则借助简单的笔记本电脑自带的摄像头进行手势控制。
3.2系统方案
本文采用Python3.6版本,借用Autopy、Numpy和Open CV等函数库对手势的特征值信息进行提取,并
现在做什么行业比较赚钱实现手势运动时的运动特征提取,得到21个关节点的三维坐标信息,
再检测是否只有食指伸出,若只有食指伸出,则进入移动模式。通过摄像头拍摄的食指的位置,就可以得到食指的“关节点”的三维坐标信息,并将食指的坐标信息转化为鼠标在桌面的信息。当食指的
图3数字4手势
图4数字5手势
“关节点”运动到某个位置时,再检测食指和中指是否都伸出,若食指和中指都伸出,则检测食指和中指两指尖的“关节点”的距离,若果距离短到一定的值时则对应为鼠标的点击。3.3动态手势的获取
由于摄像头拍摄手势图像时容易受到手势的背景等各种外部环境的影响,而要从各种不同或复杂多变
的环境中提取中手势位置、形状的改变,就必须要考虑背景颜、物体与摄像头的距离等因素的影响。因此,借用一种比较简单但实用的方法来尽可能减少噪声
干扰[8]
借用背景差分法,通过摄像头拍摄图像与背景的图像进行对比,得出运动的目标。首先要有一个明亮干净的背景,如果在黑暗环境下,手势的提取效果会变差。用摄像头拍摄的视频中某一帧图像和背景图像进行差分运算,并将计算的结果存入一个新的图像中去。在新得到的图像中,如果像素的值大于一个特定的阈值,则认为视频图像中在相同位置的像素属于运动目标区域;若像素的值小于或等于一个特定的阈值,则认为视频图像中在相同位置属于背景区域,通过此方法
就可以提取运动的手势[8]。提取运动的手势后,再通
过Open CV 函数得到手势的几何特征,即先根据手势识别得到的21个关节点的三维坐标信息,对这21个挂节点进行建模,得到关节点的信息为M ,可以表
示为[6]:
M =éëêêê
êùû
úúúú
a 0,
1a 0,2a 0,3⋯a i ,j ⋯a 20,1a 20,2a 20,30≤i ≤20,j ∈{1,2,3}(1)
其中,a i ,j 表示第i 个关节点的j 分量的值。计算除
0节点外,每两个节点的距离D ,其公式为:
D m ,n =
()a
m ,1
-a n ,1
女剑魔加点
2
+()a
m ,2
-a n ,2
2
+()
a
m ,3
-a n ,32
(2)
同时,为了减小不同人的手大小可能不同,进行了标准化处理,其计算公式为:
E m ,n =
唐家三少的妻子
5×D m ,n
D 3,1+D 6,1
+D 10,1+D 14,1+D 18,1
(3)
其中,E m ,n 表示关节点m 到关节点n 的等效距离。3.4动态检测手势的优化
现实生活中的动态手势的检测中,大多数情况下要求算法能够在没有人为干预下自动进行手势的检测。而这对程序和算法的要求非常高,对摄像头采集图片的精度依赖性很高,再加上外界环境中光照等复杂环境的影响,使得摄像头检测手势的移动很困难。
本文在手势检测处理的步骤中,利用传统的机械学习的方法构造出手部关节点的特征,再用基于骨架的动态手势识别方法,此方法提取4种手部形状特征和手部
方向特征,在输入线性SVM 分类器进行识别[5]
,得出21
个关节点特征信息,比普通的特征值提取效果更好。3.5实验结果
通过用Python 3.6版本和
Open CV 算法
晋江小说排行榜
,系统Win10,摄像头为笔记本自带的摄像头,手势控制结果
如图5和图6所示。
图5模拟鼠标点击
图6控制鼠标点击
如图5所示,当只有一个食指的时候,会在食指的指尖显示一个“小点”,这时则可以通过摄像头拍摄的照片来捕获食指的三维坐标,代替鼠标指针的移动;当伸出食指和中指时,此时食指则不能控制鼠标的移动,但如图6所示,在食指和中指的指尖处会出现一条“线段”用来测量两指间的距离,当两指尖的距离小于某个值时,就会出现图5所示的现象,此时表示鼠标的点击,从而完成简易的鼠标控制。3.6结论
本文从上面介绍的手势识别和本实验的手势控制的整体流程,关节点的设置、测量和Open CV 算法的实现,以及手势获取的优化等方法,最后实验证实基于Open CV 的手势识别算法有一定的简易性和准确性。随着人机交互方式的不断升级,手势控制将在不久的(下转103页)