宋丽铭 陈虹云 徐欢潇 胡瑞成 李佳雯
摘 要:随着人机交互技术的不断发展,人与机器智能交流也受到越来越多专家学者的关注。如今,手势识别作为当前人机交互的主要方式之一,已经广泛应用于图像处理和虚拟现实等领域。文章打破以往会议中使用鼠标或者翻页笔进行会议控制的局限性,并基于手势识别的优越性设计出根据会议演讲者的实时手势操作对PowerPoint进行实时控制的会议控制系统。
关键词:画面捕捉;手势识别;会议控制
中图分类号:TP391 文献标识码:A文章编号:2096-4706(2022)01-0079-04
Abstract: With the continuous development of human-computer interaction technology, more and more experts and scholars pay attention to the intelligent communication between human and machine. Nowadays, as one of the main ways of human-computer interaction, gesture recognition has been widely used in the fields of image processing and virtual reality. This paper breaks the limitations of using mouse or page turning pen for conference control in previous meetings, and designs a conference control system for real-time control of PowerPoint according to the real-time gesture operation of conference speakers based on the advantages of gesture recognition.
Keywords: picture capture; gesture recognition; conference control
0 引 言
人机交互一般是指人通过计算机设备能过与计算机相互交流的过程。以往人们是采用键盘、鼠标或者翻页笔来实现人机交互。随着计算机硬件的不断升级和计算机技术的不断提高,人机交互的方式变得多种多样,例如:可穿戴式设备、手势识别、声音识别和人脸识别等等。在人机交互领域里,使用计算机硬件来实现人机交互已经不再流行,取而代之的是人体自然感应,人体自然感应的使用变得越来越普遍。手势识别是当前人机交互的主要方式之一。
在以往的会议中,通常是汇报者使用PowerPoint进行展示并配合以相应的解说,结束后参会人员再分别发表各自意见。在演讲中对PowerPoint进行展示的时候,通常有重点部分和非重点部分。因此,对于每一页的停留,翻页就成了控制会议进度的主要方式。因为手势多种多样、灵活多变,及时从未使用过手势识别的使用者也很容易上手,从而降低了用户使用新产品难度,节约了大量的时间成本。手势识别作为当前社会比较热门的一个研究方向,手势识别还有一个好处是可以是人机交互更为自然,可以增加会议的趣味性。
经调研,会议室的人一般都在十人左右,为了解决每个人都能参与到会议系统的控制中的问题,本文结合手势识别的优越性设计出基于手势识别的会议控制系统。
本系统可以通过手势识别实现以会议为背景,对于PowerPoint的打开,关闭,放大,缩小以及向上翻页和向下翻页。当会议系统打开时,通过连接摄像头,可以捕捉手势画面并传到后台进行识别,然后发出相应指令。最后,屏幕上的PowerPoint页面即可执行相应指令,本文中的系统识别率高达百分之九十,目测达到了预期的效果。
1 系统设计
本文对很多家中小型公司以及中小学进行了会议控制系统使用需求的调研。本文所阐述的系统主要运用的是opency、python以及图像处理的相关技术,需要用到的库有cv2,numpy,copy,math等。
本系统的运行环境是:使用软件为pycharm,电脑系统为Windows 10。本系统在台式机和笔记本上均可以运行,为了系统运行的稳定性,建议使用台式电脑,摄像头另备,只需常规摄像头连接电脑即可,打开pycharm运行代码即可自动连接摄像头进行识别。
系统主要需要突破两大难点是定义摄像头和捕捉图像。本系统主要分为三大模块,分别是会议准备模块、系统操作模块和会议结束模块。在系统操作模块中包含PowerPoint的页面放大和缩小以及向上和向下翻页。会议控制系统框架图如图1所示。
2 功能设计与实现
2.1 会议控制系统手势录入
手势输入模型会对手势是否定义进行有效的判断。如果系统没有预先录入手势,则不能实现相应的人机交互功能。因此,會议控制系统在使用前需要预先进行手势录入。将会议所要使用的手势录入系统同并生成相应的指令。本文所写的系统主要针对的是会议系统中PPT的操作,对会议中所要用到的放大页面,缩小页面,翻页等功能指令进行对比,运用的代码也是当前比较流行的python。
目前的手势识别技术主要包含数据处理、手势分析和识别处理三个部分。数据处理主要是通过使用API技术截取当前页面下的一个矩形区域,在该矩形区域内,录制所要用到的手势指令,该区域就是手势识别的区域,形成该矩形区域的主要目的在于避免去识别一些不需要的东西,能够将所要识别的手势更加突出显示。然后,系统再监测该区域是否有手势指令。如果检测到对应的手势指令,则将该手势指令从当前矩形区域中分离出来,这就是手势分析,分析得当,则再对该手势进行相应的指令检测,并选用特定的手势进行对比,得出应有的指令,最后对系统进行对应操作,这就是识别处理部分。手势识别流程如图2所示。
系统在获得手势轮廓后,绘制出手势轮廓图,再对手势的二值图进行判断。判断采用特征法,先用API获取手部轮廓计算手势凹凸包,得到手部刚好包围起来的凸多边形,最后使用imshow得到大致的效果图样式。如图3所示,在用户握拳之后,系统可以的到效果样式4。
2.2 会议控制系统手势实现
该PowerPoint控制程序,包括四个命令:播放PowerPoint(全屏),退出全屏,下一页,上一页。
在控制程序中可设置了一个“开关”:连续检测到手掌5帧就打开开关,即可进一步接受其他的命令。用户可以预先并且设置时间,如果打开开关超过5秒钟就会自动关闭。这里设置为5秒钟是因为演讲者一般一个命令时间很快,关闭命令开关避免界面中其他干扰。
命令执行:PowerPoint的这三个模块可以通过简单的模拟键盘发送消息,“F5”,“ESC”,“→”,“←”,这个可以通过发送消息函数(定义一个函数)就可以了,当执行了这个命令以后就立马关闭命令开关,防止比如你移动手的时候会出现连续发送消息造成错误。
2.2.1 PowerPoint启动模块
播放PowerPoint命令:如果已经打开了命令开关并且没有超过5秒钟,手掌→拳头→手掌。
首先,系统会对摄像头中捕捉到的画面进行识别,当在摄像头中检测到拳头并且没有超过20帧(这里设置成20帧是为退出全屏命令用的),忽然变成了手掌,可以认为:拳头变成手掌,手掌打开就是打开PowerPoint的命令。
此时电脑中的PowerPoint会进行缩放全屏,会将整个页面呈现到桌面上,接下来便可以进行其他指令。此时,电脑的摄像头捕捉到的画面是握着的拳头,时间没有超过20帧,如图4所示。
在没有超过20帧的前提下,拳头变成了伸开的手掌,由拳头变成手掌,意味着要将PowerPoint页面放大,而此时画面中所呈现出来的画面就是PowerPoint全屏画面,如图5所示。
辨别“开关”手势代码为:
输入:系统开始识别第一个手势
输出:对应手势和位置或者识别失败
(1) global fist, palm, FIST, PALM
(2) fists = fist.detectMultiScale(img, 1.3, 5)
(3) if len(fists) > 0:
(4) return FIST, fists[0]
(5) palms = palm.detectMultiScale(img, 1.3, 5)
(6) if len(palms) > 0:
(7) return PALM, palms[0]
(8) return -1, -1
第(3)~(7)步,如果图像包含一个拳头,则返回FIST(0)和拳头的位置。如果图像包含一个手掌,则返回PALM(1)和手掌的位置。第(8)步识别失败。
识别“开始”手势具体代码为:
(1)global FIST, PALM
(2) for i in range(len(seqs) - 1, 0, -1):
(3) if seqs[i] == PALM:
(4) for j in range(i):
(5) if seqs[j] == FIST:
(6) return True
(7) break
第(2)~(6)步,舉起拳头之后,张开手掌,表示“开始”手势。
2.2.2 PowerPoint关闭模块
退出PowerPoint全屏:打开命令以后,一直是拳头超过20帧就可以认为是关闭PowerPoint命令。如图3所示,该系统捕捉到的手势画面是拳头,手掌呈现握住状态。
如图6所示,当摄像头捕捉到的拳头画面超过20帧,PowerPoint的画面由全屏变为窗口,即退出。
识别“关闭”手势具体代码设计为:
(1) global exit_fist_len, FIST, PALM
(2)off_count = 5
(3)win_width = exit_fist_len + off_count
(4)cur_fist_cnt = 0
(5)for i in range(min(win_width, len(seqs))):
(6) if seqs[i] == FIST:
(7) cur_fist_cnt += 1
(8)if cur_fist_cnt >= exit_fist_len:
(9) return True
(10)for i in range(win_width, len(seqs)):
(11) if seqs[i] == FIST:
(12) cur_fist_cnt += 1
(13) if i - win_width >= 0 and seqs[i - win_width] == FIST:
(14) cur_fist_cnt -= 1
(15) if cur_fist_cnt >= exit_fist_len:
(16) return True
第(5)~(9)步,在運行过程中,如果[exit_fist_len+off_count]帧包含[exit_fist_len]拳头,这是退出手势。理想情况下,如果每一帧连续[exit_fist_len]帧的帧都包含拳头,那就是退出手势。
2.2.3 PowerPoint翻页模块:
向上翻页命令:刚开始张开手掌打开命令以后,程序会自动计算手掌的中心位置,如果手掌移动,会实时检测手掌的中心位置,如果手掌的中心位置偏移超过一定的阈值,就可以做向下翻页或者向上翻页的命令。
如图7所示,假设摄像头捕捉到的画面是一只张开的手掌,系统记录现在手掌在画面中的位置。
如图8所示,摄像头捕捉到的画面是一只张开的手掌,系统记录现在识别框中手掌在屏幕中的位置,并与上一张图中手掌在屏幕中识别框的位置进行对比,可见手掌从第一张图到第二张图的位置发生了变动,向右移动,此时PowerPoint从第一页进行到了第二页,即为翻页。
识别“翻页”手势具体代码设计如下。
(1)omx = open_pos[0] + open_pos[2] / 2
(2)omy = open_pos[1] + open_pos[3] / 2
(3)cmx = cur_pos[0] + cur_pos[2] / 2
(4)cmy = cur_pos[1] + cur_pos[3] / 2
(5)thr = (open_pos[2] + open_pos[3] + cur_pos[2] + cur_pos[3]) / 4
(6)if abs(cmx - omx) > thr:
(7)return True, cmx > omx
(8)return False, 0
(9) else:
(10) start_seq = 0def draw_fist_palm(img, fop, pos):
第(1)~(2)步计算手掌中心的原始位置,第(3)~(4)步计算手掌中心的当前位置,第(5)步计算手掌大小平均值,第(6)~(10)步,判断移动的X个偏移量是否大于手掌的大小,如果手掌的中心位置偏移超过一定的阈值,就可以做向下翻页或者向上翻页的命令。
3 结 论
手势识别作为该系统中的主要技术,在当前国内的各大高校和公司中所使用的技术仍然很不成熟。本文所写的很多代码以及功能在其他很多设备中都是得以常见的功能,但对于会议控制系统中的手势指令,该系统的想法和功能都是比较新颖的。本系统可以解决了会议中需要借助于鼠标或者翻页笔才能实现会议控制的局限性,便于在多人会议中会议系统的控制以及各抒己见,提高了会议中各位员工的交互。同时也可以减少以往会议控制中无趣性,对会议展示有了很大的提升。
参考文献:
[1] MOSCHETTI A,FIORINI L,ESPOSITO D,et al. Recognition of Daily Gestures with Wearable Inertial Rings and Bracelets [J].Sensors,2016,16:1341.
[2] NISHIHARA H K,HSU S P,KAEHLER A,et al. Hand-gesture recognition method:US20090103780A1 [P].2009-04-23.
[3] 肖茜,杨平,徐立波.一种基于MEMS惯性传感器的手势识别方法 [J].传感技术学报,2013,26(5):611-615.
[4] 任海兵,祝远新,徐光祐,等.连续动态手势的时空表观建模及识别 [J].计算机学报,2000(8):824-828.
[5] YANG Q F,TANG H,ZHAO X B. Dolphin:Ultrasonic-Based Gesture Recognition on Smartphone Platform [C]//2014 IEEE 17th International Conference on Computational Science and Engineering.IEEE:Chengdu,2014:1461-1468.
作者简介:宋丽铭(1999—),女,汉族,江苏泰州人,本科在读;研究方向:软件开发;通讯作者:陈虹云(1993—),女,汉族,江苏南通人,讲师,硕士,研究方向:信息安全、计算机技术。