Leap Motion手势交互层次化校正方法研究
2020-05-20谷学静
谷学静,王 旭,阚 阔
1.华北理工大学 电气工程学院,河北 唐山 063210
2.华北理工大学 信息工程学院,河北 唐山 063210
1 引言
在虚拟现实系统中,人手作为人机交互的重要输入通道,是虚拟现实系统的主要交互手段之一[1]。传统的基于数据手套的交互方法通过让使用者穿戴数据手套,通过手套上的传感器获取人手的姿态信息。该方法虽然识别数据精准,识别速度很快,但数据手套往往会影响使用者的操作体验,且设备价格相对高昂[2]。随着虚拟现实技术的快速发展,以Leap Motion 和Kinect 为代表的基于机器视觉的体传感器通过计算机图像处理技术,将设备中获取的图像或视频经过处理,对提取出的人手特征进行识别、重建[3]。该方式符合真实人手交互的方式,贴近现实生活,是未来人机交互的重要发展方向。但这些体传感器常常受到硬件系统、场景和光线等因素的制约,影响其识别准确度和用户的使用效率。
鉴于Leap Motion 硬件系统的限制和图像处理的局限性,针对识别区域边缘和手指遮挡引起的识别不稳定的现象,本文提出了一种基于Leap Motion的手势交互方法。该方法通过实时对比阈值方式分析Leap Motion的识别错误,并采用层次化的校正算法校正人手位置,解决人手交互过程中的识别不稳定现象。通过对实验者进行用户分析,该方法能提高Leap Motion的识别准确率,提升用户体验。
2 相关工作
Leap Motion 是美国LEAP 公司出品的一款面向PC和Mac系统,用于手姿态捕捉的体感控制器,具有体积小、售价适中、手姿态识别精度高的优点。Leap Motion体传感器利用双目立体视觉成像原理进行测量,通过两个高帧摄像头采集高清图片对物体进行3D位置的定位,并能检测跟踪手掌、手指的位置和方向,建立手的立体模型。Guna等[4]对Leap Motion进行不同数量的跟踪配置的实验表明,Leap Motion 在静态手误差测量实验中,平均捕获的精度0.8 mm;在手误差测量实验中,运动空间x、y、z方向的精度分别为0.7 mm、0.5 mm和0.3 mm,具有很高的采集效率和采集精度。Leap Motion体传感器的识别范围是其上方25 mm到600 mm的一个扇形区域,能实时计算出识别范围内的连续帧人手信息。识别范围如图1所示,其中矩形区域为最佳交互区域。
图1 Leap Motion识别区域图
由于Leap Motion 在手势识别中具有出色的采集效率和采集精度,故基于Leap Motion手势识别的仿真系统得到了广泛的应用。Hu等[5]利用Leap Motion设计了针对载人航天的地面训练系统,研究了虚拟手的构建,并在航天员训练应用中取得很好的交互结果。Li等[6]设计了基于Leap Motion 的小鼠卵巢切割实验系统,应用到学生的实验培训中,有效地对小鼠卵巢模型切割进行模拟实验,再现了现场操作体验。Chuan 等[7]利用Leap Motion传感器进行北美手势语识别,该系统以支持向量机技术为基础,结合Leap Motion 体感技术,培训聋哑患者手势交流能力,为他们提供了高效的交流方式。
3 Leap Motion手势交互层次校正方法
3.1 交互手势设计
本文结合电气控制台特点[8]和用户操作习惯设计了交互手势[9],选取了四种交互手姿态,作为本系统的主要交互手势,并采用二元组Handle={H,D}的形式描述手势交互过程。其中,H为手的姿态集合;D为手运动方向集合。四种手姿态分别为点击手势(Click)、夹持手势(Hold)、握持手势(Grasp)和选择菜单手势(Select)。手姿态示意图如图2所示。H集合为H={Click,Hold,Grasp,Select}。
图2 手姿态定义示意图
集合D表示手运动的方向,根据手操作的实际运动情况,手运动的方向为:向下(Down)、向上(Up)、向左(Left)、向右(Right)。集合D为D={Down、Up、Left、Right}。系统根据集合H与集合D,对手势进行定义,如表1所示。
表1 手势定义
3.2 手势层次化校正算法
3.2.1 人手结构模型
人手是进行人机交互的重要媒介[10]。在手势交互系统中,几乎所有的操作都要通过虚拟手完成[11]。因此手模型结构是人手交互的基础。人手由手掌关节、指关节和关节间的指骨组成。正常人手共有5根手指,其中每根手指由指尖(Tip)和3个指关节组成,根据指关节到手掌的远近将指关节分为远指关节(DIP)、近指关节(PIP)、指掌关节(MCP)(拇指由2 个指关节组成,没有远指关节)。
人手在连续运动过程中,指骨可以看作是一段钢体,指骨和指关节连接部分遵循着铰链运动的约束关系,即两者可以相对转动但不能移动。指骨可以进行以指关节为原点,有角度限制的转动,转动状态决定手指的姿态。如图3所示。图中,θMCP为手掌与近节指骨在指掌关节处所形成夹角的邻补角;θPIP为近节指骨和中节指骨所形成夹角的邻补角;θDIP为远指关节处中节指骨和远节指骨夹角的邻补角。
每根手指指关节之间的关系如图4 所示。关节之间连接的箭头表示上下级关系,箭头尾部为上级节点,箭头指向为下级节点。当上级节点运动状态发生改变会传递给下级节点,而下级节点的运动状态发生改变对上级节点的影响较小。这样的手指运动方式遵循层次化的运动关系。
图3 手指运动模型
图4 指关节关系图
3.2.2 虚拟手位姿错误判断
Leap Motion体传感器识别人手的信息与人手结构模型相似[12]。其传感器的高频摄像头能快速捕捉每帧手姿态数据,包含手掌信息和手指信息。其中手掌信息包含手掌位置、手掌法线、手掌速度等;手指信息包含手指关节位置、指尖位置、手指方向、手指类型(系统把大拇指、食指、中指、无名指和小拇指分别标记为0、1、2、3、4),如表2所示[5]。
表2 Leap Motion识别的手数据
由上可知,通过Leap Motion 可以获得某一帧某指关节在三维世界的坐标pi,并同时可以得到同一根手指相邻两个关节的位置pi-1、pi+1(指掌关节的相邻关节为手掌位置和近指关节位置,远指关节的相邻关节为近指关节位置和指尖位置)。令近指关节为p1,则示意图如图5所示。
图5 指关节位置示意图
此指关节此帧夹角θ为:
当手势运动到Leap Motion 识别区域边缘或手指相互遮挡时,Leap Motion 识别稳定度下降。多表现为虚拟手姿态剧烈变化,即手指关节角度的剧烈变化。因此在每一帧手模型绘制前,对比上一帧手指关节的角度,得到手指关节变化角度θΔ,即:
其中,i表示帧的时序。
3.2.3 虚拟手层次化校正
当检测到Leap Motion 识别信息错误后,删除当前Leap Motion 体传感器的错误数据,并对问题关节进行位置校正。在手势交互过程中,除去Leap Motion的识别错误,手势的运动过程可以看成是从前一种手姿态到后一种手姿态的匀速变化过程,手姿态运动应该自然、流畅,指关节的角度和方向不会发生剧烈改变。因此进行手姿态校正时,系统将问题关节前一帧变化角度θ,作为问题指关节此帧的运动角度,据此进行下一帧姿态校正。即将错误姿态替换为以问题关节为中心,下层关节旋转角度为θ的校正姿态,从而实现虚拟手位置校正。
因为手指之间的结构相似,所以本文只讨论单个手指的姿态校正。依据人手模型遵循的层次化运动关系,将手指关节分层为上下层结构。定义手掌位置为世界坐标系原点,也称为0 级坐标系,指掌关节在0 级坐标系的位置为;指掌关节及其下层关节建立1 级坐标系,原点为指掌关节位置,近指关节在1 级坐标系的位置为;近指关节及其下层关节建立2 级坐标系,原点为近指关节位置,远指关节在2级坐标系的位置为;远指关节及其下层关节建立3 级坐标系,原点为近指关节位置,指尖在3 级坐标系的位置为。手指的分层坐标系如图6所示。
假设错误关节δ在i(i≥1) 级坐标系的位置为,下层关节δ+1 在i+1 级坐标系的位置为。错误关节旋转角度为θ,得出旋转矩阵R(θ),则下层关节δ+1 旋转后在i级坐标系的位置为:
图6 手指的分层坐标系
因为在绘制虚拟手姿态时,需要得到指关节的世界坐标,所以需要将问题关节旋转后的i(i≥1)级坐标转换成世界坐标。若错误关节同时为指掌关节、近指关节、远指关节,且其旋转角度分别为θmcp、θpip、θdip时,可以得出旋转矩阵。
调整后指掌关节的世界坐标为W′mcp,近指关节的世界坐标为W′pip,远指关节的世界坐标为W′dip,指尖的世界坐标为W′tip,则:
通过层次化校正方式计算出手指各个关节的世界坐标位置,以驱动计算机进行虚拟手的绘制。
3.2.4 校正误差分析
在校正关节姿态的同时,系统继续计算Leap Motion识别的问题关节角度数据,并将校正角度θ与实际计算角度θ′相减,得到校正误差θ′Δ,即:
误差分析步骤如下:
(1)设定校正误差阈值λ′,通过比较校正误差θ′Δ与校正误差阈值λ′的大小,来判断校正是否成功。
(2)如果校正误差小于校正阈值,则视为Leap Motion识别正确,虚拟手与实际手位姿同步,停止校正,否则将继续校正位姿。
(3)如果1 s后的校正数据仍不能与Leap Motion同步,则系统校正失败,并在界面发出校正失败的信息提示。提示用户操作手离开识别区域,重新进行人手姿态识别操作。
姿态校正误差分析流程图如图7所示。
因此,校正误差阈值影响系统中问题关节的校正效果。若阈值过大,虚拟手校正与实际手相差过大,则无法起到手姿态校正的效果;若阈值过小,则校正结果容易失败,影响用户的使用体验。
图7 误差分析流程图
4 实验与结果分析
4.1 环境配置
本系统分为硬件和软件部分,两者共同构建用户和虚拟现实环境的纽带。其中硬件环境包括一台双核3 GHz、内存 8 GB 的 PC 机和一台 Leap Motion 的体传感器,软件环境包括Unity V5.4.2 开发环境与Leap-DeveloperKit V3.2.0 的软件开发包。其中Unity 为系统的运行平台。LeapDeveloperKit创建Leap Motion与PC机的接口,并将Leap Motion体传感器识别的人手关键点数据通过描点的方式渲染到场景中。
本系统参考用户体验,并结合文献[13]中指关节运动5°到10°的调整范围,经过多次用户测试。当系统固定运行60 帧/s时,关节运动阈值λ角度为每帧0.11°,校正误差阈值λ′角度为每帧0.18°的实验结果最佳。
4.2 实验结果分析
寻找20名志愿者(志愿者为冶金相关专业的在校大学生及研究生,其中男14人,女6人)作为被试,使用图2定义的手姿态,在如图8所示的虚拟场景中进行交互。
图8 中(a)、(b)、(c)、(d)分别展示了理想条件下点击手势、夹持手势、握持手势和菜单手势在虚拟场景中操作电气控制台的使用效果。
为了验证具有层次化校正的手势交互方法的有效性,设计了两个实验系统,分别为:系统1,使用层次化手势校正方法的手势交互系统;系统2,运行环境相同,但未使用层次化校正方法的手势交互系统。
20名被试在未告知系统差别的情况下,单个实验分别通过两个系统进行两次。
4.2.1 交互效果评估
实验1 选取控制电气控制台的主要交互手势[14-15]:点击、打开旋钮、关闭旋钮、左推操控杆、右推操控杆、打开菜单、关闭菜单,每位被试通过两种系统各做5次。
图8 虚拟操作效果
记录被试操作准确率,同时记录每种手势5次交互所用时间。操作是否正确的判断准则如图9 所示。由图9 可知,当点击手势运动到识别边缘时,识别正确的虚拟手(a2)与实际手(a1)相差不太,而错误的虚拟手(a3)食指会发生弯曲;识别实际夹持姿态(b1)和正确夹持姿态(b2)相差不太大,而错误夹持姿态(b3)出现了手指交叉错误信息;当握持手势出现自遮挡时,正确的虚拟手(c2)继续弯曲运动,而错误的虚拟手(c3)会向外张开运动;当菜单手势运动到Leap Motion 的识别边界时,正确的虚拟手(d2)会按原方向运动,错误的虚拟手(d3)会出现突然翻转。
图9 判断准则
统计实验1 中调查问卷1 的问卷结果为“是”的人数,统计结果如图10所示。
图10 问卷1结果统计
由图10 可知,志愿者对系统一的舒适性和有效性具有较高评价,其中有75%以上的人对所设计的交互方式满意,并认为该交互手势方法便于培训学习,符合交互习惯。
统计调查问卷2 中志愿者对两个系统的满意度对比结果,统计图如图11所示。
图11 问卷2结果统计
由图11 可知,两种系统相比,用户对使用系统1 的感觉更加舒适,有80%的用户认为系统1的识别更加精确。
实验1 结果证明了层次化手势校正方法在精确度和有效性上具有明显的优势,且系统更加舒适,更加利于学习者进行操作学习,符合用户在虚拟场景中对电气控制台进行交互操作的需求。
4.2.2 主观感受评估
实验2 分别用点击手势点击按钮3次;用旋转手势控制旋钮左旋1 次后右旋1 次;用握持手势向左推控制杆1 次,然后向后拉1 次;最后运用菜单手势退出系统。当操作完成后,每人填写1份使用体验调查问卷。
实验2分别在两个系统进行后,每人填写1 份使用效果对比调查问卷。
调查问卷1 主要调查对当前系统的满意度和交互体验舒适度,如表3所示。
表3 交互体验效果调查问卷
调查问卷2主要调查被试对两种系统满意度对比,如表4所示。
表4 交互体验对比调查问卷
实验2 中,满足图9 判断准则的一次操作视为操作准确。被试5次操作的准确率如图12所示。
图12 操作准确率
由图12 可知,在使用控制电气控制台的几种手势中,系统1 的识别率更高,均超过89%。整个操作过程中,系统1 对虚拟手的绘制十分准确,虚拟手能准确与控制台模型进行交互,实现了对虚拟电气控制台的准确操控。并且系统1能很好地解决Leap Motion在识别区域边缘或者手指遮挡时出现的识别问题,为用户提供了更好的虚拟交互体验。
20 位被试的平均每种手势5 次交互的时长如图13所示。由图可知,系统1 减少了用户的操作时间,手势的交互更加高效。
图13 5次交互时长
由于层次化手势校正方法根据设定关节运动阈值判断运动关节识别的正误,剔除了捕获的错误手势识别数据,从而缩短了交互时长;采用层次化思想,把错误手势识别信息定位为以关节为中心,依据手模型遵循的层次化运动关系和关节在运动中两帧之间的参数变化,逐层校正手势,提高了手势识别的精度。
5 结束语
本文分析了Leap Motion 在手势交互过程中导致虚拟手的运动错误、手势识别精度较低的原因,提出了层次化的手姿态校正方法,解决了遮挡和最佳识别区域边缘识别能力差带来的识别难题。然后从用户体验、操作准确率、任务时长、虚拟手与真实手姿态一致性四方面对本文方法进行了验证。实验结果表明,本文方法有效地提升了用户基于Leap Motion的手势使用的交互体验。
但本文方法也存在一些局限性:采用统一的关节运动阈值θ判断Leap Motion 的识别错误,会影响关节校正的准确性。应根据人手层次化的结构特点,得出不同层次的关节角度的关节运动阈值。下一步工作将重点解决以上问题。