王粉花, 张万书
(北京科技大学自动化学院,北京 100083)
真实人与虚拟世界的沟通要凭借人机交互技术,在人与计算机之间相互适应的互动过程中,人机交互技术也不再局限于鼠标键盘输入、遥控器操作等,而是以更加新奇的方式出现,如声波振动、手势动作、眼珠和舌头的转动等。基于手势识别的人机交互技术是目前虚拟现实领域的研究热点之一。利用手的位置、姿势和运动来与计算机进行交互,是一种自然高效的交互方式[1-3]。
基于手势识别技术的3D虚拟交互系统采用一个固定摄像头采集左手的姿态和动作信息,控制视角在3D环境中移动和转向;采用两个具有两个自由度转动的摄像头动态跟踪采集右手的姿态和位置,控制3D环境中虚拟手的移动和动作变化,通过对虚拟手的操作实现与虚拟环境中三维物体的交互,如抓取、移动物体等动作。并随着左手的移动切换3D场景,同时伴随不同的动作发出不同的声音,可实现真实的人与虚拟3D环境之间的沉浸式交互[4-5]。
系统的硬件结构包括图像采集模块、嵌入式主处理器平台、协处理器动态跟踪模块三部分,如图1所示。以英特尔凌动处理器平台作为整个嵌入式系统的核心,通过DVI接口,Audio芯片分别和显示器及音响连接,作为整个系统图像和声音的输出;通过PCI插槽与视频采集卡相连,采集3个角度摄像头的图像信息,经过图像处理和手势识别后作为交互的输入信息;通过COM1接口采用串口方式与ATMega16协处理器相通信,用来控制摄像头实时动态跟踪手的运动。
图像采集模块包括视频采集卡、拍摄左手图像的左摄像头,以及分别拍摄右手图像的左、右视图的右摄像头1和右摄像头2。
图1 系统硬件结构图
选用模拟摄像头+采集卡的图像采集方案。采用3个输出信号为模拟量的摄像头采集原始图像,通过HB17004TV视频采集卡转换为数字格式的图像,采集卡通过PCI总线插槽与嵌入式主板相连,应用采集卡SDK中的API接口函数,启动采集卡并获取图像。
嵌入式主处理器平台包括英特尔凌动处理器、音频接口、视频接口、串行通信接口。它是基于英特尔功能强大的Menlow处理器,该平台功耗低,体积小,具有LPC、PCI、ISA等丰富的硬件接口,可在实验环境下保持长时间稳定运行[6]。
主处理器的主要任务包括:利用左手分割信息获得虚拟场景视角变化信息;基于右手分割信息进行手势识别获得手势姿态信息;分别计算右手图像的目标位置和采集位置偏差的实际转化值;根据右手的空间坐标值、右手的手势姿态信息以及虚拟场景视角变化信息,进行3D场景更新。
协处理器动态跟踪模块包括协处理器和步进电机。协处理器基于每个循环周期从主处理器发送的右手图像的目标位置和采集位置偏差的实际转化值,获取当前循环周期各步进电机的位置和步进值,其中,步进电机包括右摄像头1的左水平步进电机、左垂直步进电机,和右摄像头2的右水平步进电机、右垂直步进电机;并根据右摄像头1和2的转角获取右手的空间坐标。
系统软件的设计步骤是:系统开始运行后,首先进入系统初始化阶段,进行窗体初始化、协处理器通信初始化、采集卡初始化、3D场景初始化。
初始化结束,进入消息循环阶段,处理窗体有关的消息。在大部分的循环空闲时间执行图像处理和3D显示的程序。
在图像处理部分,首先进行图像采集,之后对采集的图像进行分割,把图像中手的部分分离处理,确定其范围和中心点。其中左手的分割结果直接送到交互接口程序,判断视角的移动和旋转;右手的分割结果一部分计算距离偏差,由协处理器进行跟踪的运动控制,计算并返回手的空间坐标值;右手的分割结果另一部分送入手势识别程序,经过边缘提取、分类判别得到手势姿态。
交互接口部分综合得到视角的移动和旋转值、手的移动和姿态值,交给3D场景更新部分。3D场景更新部分根据交互接口的传递值和目前3D环境中的状态,根据物理规则计算下一时刻场景的状态和声音情况,并更新、输出下一时刻的3D场景和声音。系统软件设计流程图如图2所示。
图2 系统软件流程图
摄像头的好坏决定了图像采集的原始质量,采集卡则决定了图像采集的分辨率、传输的速度。
经过多次比较发现,USB摄像头采集的图像色彩明显不如模拟摄像头采集的图像色彩饱和、鲜艳、真实,在基于颜色的判别时会有偏差。而且在光照条件变化的情况下,因“补偿”和“增益”的性能影响,USB摄像头的适应性也不如模拟摄像头好。传输速度上,USB摄像头对动态图像的分辨率和响应会下降,而模拟摄像头因采用专用视频压缩采集卡,对动态的图像也可以很流畅地采集。因此,本系统最终选择了模拟摄像头的采集方案。同时尝试了很多种型号的采集卡,最终选择了汉邦HB17004TV系列采集卡。该采集卡性能分析如下[7]:
(1)采集卡总线接口为PCI,支持4路视频输入;
(2)视频的分辨率为CIF(352×288);
(3)该采集卡提供SDK开发包,方便图像采集的开发。
本文采用基于多智能体协作思想的图像分割算法,其原理叙述如下:
把图像看作一个复杂的“环境”,在这个“环境”里,每一个像素点都是一个独立的“智能体”,这个“智能体”具有它独立的属性和能力[5]。属性包括所代表的像素点的灰度值、RGB颜色分量值、HSV颜色分量值、相邻个体的地址、所属的分组值等;能力包括“行为”和“对话”等能力,“行为”能力包括判断自身颜色,“对话”能力包括ask、tell等对话的语句。复杂“环境”中的一群“智能体”在“管理者”的引导下互相交流,共同去完成图像分割的任务,也就是找到其中符合规则协议的子群体,这个子群体就是最终分割的结果。在“智能体”概念的基础上建立的“管理者”不具备某一个像素点的属性,但它具有像素点的能力和监督引导个体行为的权力,它负责利用规则协议引导个体之间进行有效的行为和对话,完成图像分割的任务[8-9]。
规则协议分为区域规则和边缘规则。在区域规则中,每个组都要计算个体的数量,对于杂点来说,这样的组个体数量应该较小,所以排除个体数较小的组。
在边缘规则中,每个组要计算组的中心点位置,每两个中心点做连线,判断图像在连线上的颜色,经过手和手臂的连线上黑色和肤色将是主要的颜色,再根据连线的方向最终可判断出手的区域[10]。图像分割算法流程如图3所示。
手在做动作时,手掌和手指的形状特征变化很明显,所以本文采用了基于形状特征的方法识别手势动作。具体方法如下:
图3 图像分割算法流程图
从右手分割信息中获得包含右手手部区域的最小矩形的纵横比系数、最小矩形面积以及右手手部区域实际面积,计算右手手部区域实际面积与最小矩形面积的面积比,当纵横比系数接近于1且面积比大于0.6,为握拳姿态,否则为手掌姿态;当为手掌姿态时,在最小矩形纵向边长的三分之二处和四分之三处分别画两条横线,判断两条横线上肤色点翻转次数之和,当翻转次数大于6时,为伸直平掌,否则为伸直侧掌。
动态跟踪模块的程序分主处理器端和协处理器端。主处理器端在每个循环周期里向协处理器发送偏差值并读取坐标,协处理器则根据偏差控制电机带动摄像头转动,并根据各摄像头转角计算出手的空间坐标,返回给主处理器。协处理器接收数据采用中断方式,这样在电机正常转动的同时保证数据的接收与控制计算[11]。主处理器端程序流程如图4所示,协处理器端程序流程如图5所示。
图4 主处理器端程序流程图
本系统采用Direct3D和DirectSound开发3D虚拟交互界面和声音系统。可根据不同的场景需求,进而发出不同的声音,使得人机虚拟交互场景更加生动和真实。场景模型的建立,采用3dsmax进行辅助开发,实现复杂场景及物体模型的建立[12-13],在手的动作上,采用骨骼蒙皮技术实现[14]。3D虚拟场景程序开发流程如图6所示。
图5 协处理器端程序流程图
图6 3D虚拟场景程序开发流程图
对虚拟手位置控制的测试,分别测试了上移、下移、左移、右移四个位置的控制。控制位置测试记录如表1所示。控制移动动作识别的成功率测试记录如表2所示。
测试发现,真实的手在水平方向作左右移动时,虚拟手的运动路线呈一条曲线,当离中心点越远偏差越大。经过分析,发现定位算法造成的误差不大,误差的产生是机械安装的精度造成的,在摄像头旋转时,成像的中心点和旋转的中心点会有不可避免的安装精度误差,这样当旋转角度较大时,会造成成像中心点的偏移,导致了位置的误差;经过对机械结构的改造,基本满足了实际控制的精度要求[15]。
对虚拟手动作控制的测试,分别测试了伸直侧向、握紧2个动作。测试结果分别如图7、8所示。
表1 虚拟手控制位置测试表
表2 控制移动动作识别的成功率测试
图7 控制虚拟手动作——伸直侧向
图8 控制虚拟手动作——握紧
手势识别的成功率测试记录如表3所示:
表3 识别的成功率测试
本文设计实现了一个基于手势识别的3D虚拟交互系统。通过对左手运动方位的分析控制场景中视角的变化,并对右手位置和右手手势进行分析,得到右手在场景中对应虚拟手的三维位置信息,进而不断更新场景中虚拟手的位置和手势。通过手势动作去控制真实人与显示在计算机桌面中的虚拟环境进行交互,能够控制虚拟手完成抓取和移动物体的动作,并取得了良好的测试效果。
[1] 陈 超,孟剑萍.基于手势识别的人机交互技术[J].计算机与数字工程,2012,40(10):137-139,142.CHEN Chao,MENG Jian-ping.Research and Design for Human-Computer Interaction Based on Gesture[J].Computer & Digital Engineering,2012,40(10):137-139,142.
[2] 张东明,张国锋,戴树龄.基于视觉的多用户手势识别人机交互技术研究[J].系统仿真学报,2008,20(9):53-56.ZHANG Dong-ming,ZHANG Guo-feng,DAI Shu-ling.Research on Vision-Based Multi-userGesture Recognition Human-Computer Interaction[J].Journal of System Simulation,2008,20(9):53-56.
[3] 刘卫光.图像信息融合与识别[M].北京:电子工业出版社,2008.
[4] 周见光,石 刚,马小虎.增强现实系统中的虚拟交互方法[J].计算机工程,2012,38(1):251-252,255.ZHOU Jian-guang,SHI Gang,MA Xiao-hu.Virtual Interactive Method in Augmented Reality System[J].Computer Engineering,2012,38(1):251-252,255.
[5] 袁 丽,张宝运.人机自然交互支持的3D虚拟教具设计[J].系统仿真学报,2012,24(9):1973-1975,1979.YUAN Li,ZHANG Bao-yun.Design of 3D Virtual Manipulatives Supported by Natural Human Computer Interaction[J].Journal of System Simulation,2012,24(9):1973-1975,1979.
[6] 华北工控.EMB_4650 EPIC Board USER'Manual V1.0[Z].北京:华北工控,2009.
[7] 北京汉邦高科数字技术有限公司.HB18T系统SDK开发指南[Z].北京:北京汉邦高科数字技术有限公司,2009.
[8] 张晓勇,吴 敏,彭 军.基于信息融合的多智能体协作方法的研究与应用[J].计算机工程与应用,2008,44(22):27-30.ZHANG Xiao-yong,WU Min,PENG Jun.Research and application on MAS collaboration mechanism based on information fusion.Computer Engineering and Applications,2008,44(22):27-30.
[9] 付跃文,梁加红,李 猛,等.基于多智能体粒子群的快速碰撞检测算法研究[J].系统仿真学报,2013,25(8):1876-1880.FU Yue-wen,LIANG Jia-hong,LI Meng,et al.Research on Fast Collision Detection Using Multi-Agent Particle Swarm Optimization[J].Journal of System Simulation,2013,25(8):1876-1880.
[10] CAO Long-bing, DAI Ru-wei. Human-Computer-Cooperated Intelligent Information System Based on Multi-Agents[J].Acta Automatica Sinica,2003,29(1):86-94.
[11] Frank D.Luna.DirectX 9.0 3D 游戏开发编程基础[M].北京:清华大学出版社,2007.
[12] Jim Adams.DirectX高级动画制作[M].重庆:重庆大学出版社,2005.
[13] 李维杰,杨 昱,林纪河.中文版3dsmax8三维造型与动画制作简明教程[M].北京:清华大学出版社,2007.
[14] 张沙沙.基于骨骼蒙皮动画的虚拟人手势合成技术的研究[J].计算机光盘软件与应用,2013,16(7):108-110.ZHANG Sha-sha.Research on virtual human gesture synthesis technology based on skinned mesh animation[J].Computer CD Software and Application,2013,16(7):108-110.
[15] 朱向庆,胡均万,陈宏华,等.多功能单片机实验系统的研制[J].实验室研究与探索,2012,31(4):41-44.ZHU Xiang-qing, HU Jun-wan, CHEN Hong-hua, etal.Development of a Multifunctional Experimental System for Single Chip Microprocessor[J].Research and Exploration in Laboratory,2012,31(4):41-44.