APP下载

基于手势识别的隔空操作交互系统设计

2022-09-09马骏梁惠惠

电子技术与软件工程 2022年14期
关键词:全屏手势手部

马骏 梁惠惠

(南京大学金陵学院 信息科学与工程学院 江苏省南京市 210089)

随着计算机视觉技术的不断发展,特别是增强现实、辅助驾驶等技术的飞速发展,人机交互的需求在我们的日常生活中日益增加。尤其在老龄化社会中,老年人因为身体机能退化,操作不便,他们更需要各种快捷有效的人机交互辅助技术支撑对各类机器的控制。这些人机交互技术主要包括手势识别、人脸识别、体态的识别与跟踪等。其中,基于计算机视觉的手势识别技术因其应用的广泛性成为了许多科研人员关注的焦点,而以手势识别为基础的“隔空操作”由于其方便、自然等优点而成为众多交互方法的研究热点之一。

本设计在预定义手势的基础上,设计实现通过识别不同的手势进行隔空操作的人机交互系统。基于计算机视觉的手势识别技术以人为交互的中心,减少了对计算机底层工作的依赖,极大地提高了人机交互的体验感和舒适度。

1 手势识别基础理论

手势识别不仅仅是指手部的识别,它也可以是身体各个部位的识别,包括四肢、人脸等。本文主要研究手部的识别。基于计算机视觉的动态手势识别主要包括四个步骤:手势获取、手势检测与分割、特征提取和手势分类。

1.1 定义与分类

手势识别是通过一系列算法对预先定义的不同手势进行识别从而达到所要表达的目的。前苏联心理学家和教育家Pavlovic对人类的手势做了深一步的研究,并从常用功能的角度对手势进行了分类,如图1所示。

图1:手势分类

手势识别有不同的分类标准:

第一种,根据手势识别的特征提取算法不同进行分类。手势识别算法有模式匹配识别算法、神经网络识别算法、隐马尔可夫模型识别算法等。模式匹配识别算法的基本思想是把待匹配模板和参考模板进行比较,在匹配之前先定义一个相似度阈值,然后进行模型训练,最后再匹配;神经网络识别算法的基本思想是通过机器学习和深度学习所有的手势图片进行训练模拟出人脑的记忆辨别功能,从而实现像人脑神经网络一样的识别技术;隐马尔可夫模型识别算法的基本思想是基于马尔科夫链的模型识别,该模型是一种信号统计模型,它在语音信号处理中具有广泛的应用场景。

第二种,根据采集手势图像过程中的设备进行分类,具体可以分为基于数据手套的手势识别和基于单目或多目摄像头的手势识别。早期的手势识别大多采用数据手套等物理设备采集手部数据。随着科学技术的发展,逐渐摆脱数据手套,转而使用摄像头采集。

以上仅仅是分类标准的一部分,随着技术的不断完善,手势识别的方法会越来越多,分类标准也会越来越丰富,在此不再赘述。

1.2 建模理论

手势识别首要做的是手势图像及数据的采集,然后依据一定的模型对采集的图像和数据进行建模,对每一种手势建立基础模型,以便后续的对比应用。建模的有效性将对后期手势匹配的精确度和识别率有着直接的影响。

基于3D的手势建模和基于手势表观的手势建模是目前常用的两类手势建模方法,如图2所示。

图2:手势模型分类

基于3D的手势模型主要是考虑了三维角度下的手与手臂的动作和姿态,通过三维角度可以分析判断出手部信息,这种方法适用于绝大多数的手势建模,但是由于是三维的,计算机分析判断颇为复杂和困难,对计算机的硬件要求也很高。基于手势外观的手势模型是建立在二维坐标下的建模方法,主要是通过摄像头采集二维图像来分析手势表象的特征值从而给出初步的模型。这种建模方法只适用于交流类型的手势,也就是相对简单的手势表达,因此计算复杂度也会低很多,具备较好的实时性和识别率,所以,现在绝大多数手势识别都是采用基于手势外观的手势模型。

2 系统设计

2.1 功能设计

本系统的主要功能为:通过摄像头实时捕获手势图像,在采集过程中对每一帧画面同步进行图像预处理,之后从预处理后的图像中再提取手势特征,最后根据手势特征匹配预先定义好的手势模板触发相应的指令从而实现不同应用场景下的隔空操作。本系统共设计了三个交互应用,包括鼠标控制、播放器控制、全屏批注,实现了通过各种预先定义的手势对计算机应用的控制与隔空操作。

2.2 架构设计

本系统根据模块化的设计思想设计出的系统架构图如图3所示。其中图像预处理模块和特征提取模块是该系统的两大核心模块。

图3:系统架构图

2.2.1 图像预处理

图像预处理部分的核心是滤波处理和二值化处理。滤波处理是指在尽可能保证图像细节特征的同时,有效地抑制目标图像的噪声。它是预处理过程不可或缺的环节,其处理的效果直接影响了后续分割手势区域的准确性以及对手势区域细节分析和处理的有效性和可靠性。图像二值化处理是将目标图像转换成黑白图像,亦即将图像上的像素点的灰度值设置为0或255,其中0代表黑色,255代表白色。具体做法是设定一个阈值作为分界线,对于目标图像上的所有像素点,若其灰度值小于或等于阈值,则该像素被判定为属于手势所在区域,此时调整其灰度值为0,即黑色;否则,将这些像素点的灰度值调整为255,表示这些像素点属于背景或者非手势所在区域。二值化处理之后的图像数据量会大幅度减少,从而节省计算机后续处理运算所需时间。转换后的黑白图像由于只保留主体区域而凸显出目标轮廓,使得图像对比分析变得简单高效,这也为后续的手势特征提取做了铺垫。

设原始图像函数为f(x, y),按照上述规则可以得出输出函数g(x, y),如图4所示。

图4:二值化输出函数

其中,threshold为阈值,0和255对应的色彩是黑和白。该函数转换中,最重要的就是阈值的选取,好的阈值既可以做到尽可能的保留图像信息,又可以将背景和主体内容区别开来。

通过对原始视频图像进行灰度处理和二值化处理,系统对手势识别的速度和准确度有了很大的提升,同时也提高了系统对不同背景环境的抗干扰性,降低了外部因素对图像信息的影响。

本系统基于OpenCV实现手势识别。利用OpenCV类库中的cvtColor或convert库函数实现每一帧图像的灰度化处理。其中cvtColor需要设置对应的参数才可实现,而convert只需要将参数设置为‘L’即可转换为灰色图像。具体实现函数如下:gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) 和Img = img.convert(‘L’),实现的效果如图5所示。

图5:图像灰度处理

系统在二值化处理部分采用的是基于矩阵的图像分割算法,实现将手部轮廓从采集的图像中分割出来,该手势分割结果将作为特征提取部分的算法输入。

阈值的大小影响着是否能够将手部轮廓跟背景信息较好地分割开来。不断改变阈值大小从而尽可能的分割出手部的完整图像。在该系统中,通过不断的调整阈值参数找到了最佳的阈值是175,此时可以得到一个效果较好的手部二值化图像分割效果,如图6所示。

图6:图像二值化处理

如上的阈值参数只适合静态的图片处理,并不适用于实时视频类的图像二值化处理。基于此问题,采用控制台形式在视频过程中动态调整参数。起初只设置了一个阈值进行图像二值化处理,发现存在一些问题,比如若人的手部和背景颜色有着类似渐变色的效果时,会导致单一的阈值失效,具体表现为手部和背景无法准确分割,甚至会出现分割错误。因此做出了进一步优化方案,采用最大阈值和最小阈值,设置阈值的上下限,将0~255划分为三个区间,从而进行更加精细化的图像分割。改进后的双阈值二值化输出函数g(x, y)如图7所示,控制台界面如图8所示。

图7:改进后的双阈值二值化输出函数

图8:二值化处理的控制台界面

系统初始双阈值的初步处理图和图像二值化最终处理效果如图9所示。

图9:改进后的图像二值化处理

2.2.2 特征提取

在人机交互过程中,计算机并不具备与人脑一样的思考能力,这就需要我们在设计交互系统时事先定义和阐述所有可能的手势。如下是事先定义的部分手势模板,如图10所示。

图10:部分手势模板

本系统所采用的特征提取算法基于二维矩阵的手势确定算法,借鉴模式匹配识别算法的思想,将摄像头采集图像中的关键数据抽象成二维矩阵,然后对矩阵中所有特征点位坐标分析,最后再根据预先定义的手势模板进行手势的识别匹配。

该算法的实现过程如下。

(1)确定轮廓

根据摄像头扫描的视频数据,调用OpenCV库中的mediapipe模块进行实时检测,检测到手部位置之后,进行图像分割,确定手的轮廓,如图11所示。

图11:经图像二值化处理提取后的手部轮廓图

(2)计算角度

获取手部轮廓图中所有点的位置坐标。根据获得的所有点位坐标,计算特征二维向量的角度。这里以大拇指二维向量的角度计算为例,先获取点位0和2所组成的向量坐标表示形式以及3和4所组成的向量坐标表示形式(点位数字全部采用OpenCV所规定的点位数字),接下来通过坐标信息计算出两个向量所组成的角度大小,并转换为180度以内的角度,如图12所标出的向量角度α所示。

图12:向量角度示意图

(3)判断手势

根据每个手指计算出的角度值,结合组成相应手势应该具备的手指之间的角度范围,分情况判定手势所代表的数字,比如手势所代表数字为1时,食指的角度小于30度,其他四个手指角度都大于90度。

2.3 人机交互设计

由于此系统属于无感式系统,亦即启动程序后的所有界面显示均可置于后台运行,因此,本系统的人机交互设计也较为简单。为了方便用户观看摄像头所采集到的视频内容和手势识别结果,设计了如下四个人机交互界面:

(1)图像二值化的阈值控制界面。如图13所示。

图13:二值化处理控制台界面

(2)图像预处理初步界面。如图14所示。

图14:图像预处理初步界面

(3)图像预处理最终界面。如图15所示。

图15:图像预处理最终界面

(4) 隔空操作的指令显示界面。显示每一种手势识别之后所对应的电脑操作指令是什么,比如显示向下滑动,向上滑动,音量大小等。如图16所示。

图16:隔空操作的指令显示界面

2.4 应用场景设计

2.4.1 鼠标控制

鼠标控制隔空操作是由某一特定手势对鼠标的日常操作进行简单的界面控制,即将特定的手势转换为鼠标移动及鼠标滚轮的滑动,并将某一静态手势转换为鼠标左键或右键的点击动作。该操作指令转换的主要过程是:首先识别用于鼠标控制的手势,然后取某个手部点位的位置为基准坐标,设定一个移动范围阈值scale,此阈值主要控制手势移动的幅度,如果幅度过大,则判定此手势移动无效。这样可以减少鼠标移动的幅度,减少错误移动的次数。对于鼠标左键和右键的操作,主要是通过手势悬停之后识别特定的两种手势然后进行点击操作。

2.4.2 播放器控制

播放器控制的隔空操作是通过特定的手势特征提取,识别出场景是播放器控制,进而实现包括视频播放和暂停、视频快进和快退等常见的简单播放器指令以及音量控制。该操作指令转换的主要过程是:对于视频播放和暂停,模拟出按压操作,在按压过程中,若手部掌心距离摄像头小于等于35cm时判定为暂停播放,再次按压则继续播放;对于视频快进和快退,首先识别出手势表达数字为3,然后判断若保持该手势向左滑动为快退,向右滑动则为快进;对于全局音量控制操作,触发该操作的前提是手部除拇指和食指外,其他手指处于蜷缩状态,这样通过拇指和食指之间的距离来调节电脑音量。

2.4.3 全屏批注

全屏批注的隔空操作是通过特定的手势特征提取,识别出场景是全屏批注,即用户希望在全屏范围内进行勾圈画点等。该操作指令转换的主要过程是:首先识别出用户目前的操作意图是全屏批注功能,然后再识别用户手势所表达的数字含义是什么。此时手势总共分为三种情况:第一种手势表达数字为1,表示可以在此位置开始批注,直到用户手势变换为其他;第二种手势表达数字为2,表示用户想要移动鼠标位置,即开始批注的位置;第三种手势表达数字为3,表示用户想要撤销上一次所作的批注。需要关注是最开始的识别场景的手势,由于全屏批注的场景和播放器控制的场景均用到了手势数字3,故为了防止冲突,识别场景的时候要确保手部场景识别正确。为了提高场景的识别准确度,在代码编写中增加了判定机制,尽可能提取到进入两种场景时的手势的不同特征,从而降低场景识别错误率。判定机制主要是以电脑当前界面为判定标准,如果界面在播放视频等则认为是播放器控制场景,其余的情况均认为是全屏批注场景。由于设置手势过程中,只有播放器控制和全屏批注有手势冲突,因此只需要判定这两个场景即可。

3 结语

该系统实现了鼠标控制、播放器控制、全屏批注等应用场景下的隔空操作。

在系统的测试过程中,重点测试如下指标:

(1)识别准确率:摄像头对多个手势相近的样本采样后找出正确手势的命中率,即系统对摄像头所采集手势动作的分析准确度。

(2)识别速率:计算机根据摄像头所采集到的手势动作开始,到识别成功并反馈前端界面显示的时间差。

(3)环境适配性:摄像头在采集手势动作时背景环境会有所不同,该指标主要考察在不同的背景环境下系统的识别准确率和识别速率与常规环境下识别准确率和识别速率的差异。背景环境的不同主要包括:背景颜色、光照强度以及手部与摄像头的距离,另外摄像头的参数也对采集图像有着一定程度的影响。该项指标验证的是系统的稳定性,因此图像预处理尤其是二值化处理显得尤为重要。

(4)平均识别准确率:该指标由每个手势的识别准确率计算所得,目的是用来体现系统对于所有手势识别的准确性和准确率。

测试所得的各项数据如表1和表2所示。

表1:单一背景测试数据

表2:复杂背景测试结果

综合考量以上数据并依据单一背景和复杂背景下不同手势识别的准确率可计算得出相应的平均识别准确率,即单一背景下平均识别准确率可达93.4%,复杂背景下平均识别准确率下降至89.0%。因此,本系统对手势识别的识别效率达到了85%以上,对手势的识别速率也较快。但是系统依然存在优化提升空间,如二值化处理的参数阈值无法根据不同环境进行自适应调整;在复杂背景下对手势的识别准确率和识别速率仍有待提升。后续也会考虑进一步改进算法。

猜你喜欢

全屏手势手部
手部皮肤软组织缺损修复的皮瓣选择
Windows10游戏全屏使用卡顿为哪般
挑战!神秘手势
V字手势的由来
Authorware软件全屏播放模式比较研究
两种皮瓣修复手部软组织缺损的比较
发生于手部的硬下疳一例
复明胶囊疑致手部肿痛1例