张众维,赵 洁,刘洪飞
(1.天津城建大学 计算机与信息工程学院,天津 300384;2.天津城建大学 理学院,天津 300384)
我国有超两千万的听力残疾人口[1],手语学习需求广泛,规范性立法也已在讨论中[2],但目前手语教学仍难以普及,原因之一是由于需求不集中造成的教师现场授课成本较高。因此采用虚拟现实技术,利用虚拟角色进行手语教学就成为一种高性价比的教育手段。
静态手势作为基本信息表达单元,按一定序列和节奏进行编排,可以产生更复杂的动态手势。为了产生虚拟手势,需要特定手部姿态的三维数据信息。传统的数据获取方法常用数据手套[3]、位置跟踪设备[4]、体感设备[5]等外设,操作复杂且成本较高,后期不易进行姿态调整与更新;采用组合摄像头及数据拼接技术[6],准确度较低且实时性较差;利用计算机进行纯虚拟骨架结构设计,多需依托诸如Pose Studio、Maya等3D动画设计软件[7],操作复杂且灵活性不足。
为更加准确便利的实现虚拟手势的生成,本文首先完善了仿生关节链球坐标系[8](以下简称链球坐标系)与笛卡儿坐标系的变换方法,并提出了利于角度参数快速确定的直观模拟法。随后建立了虚拟手骨架结构,并在此基础上针对运动节点的特征设计不同的链球坐标系,通过双参数调节获得静态手势。最终根据高维形象几何仿生信息学[9]理论和同源连续性[10]原理,对高维空间点进行采样,得到动态手势关键序列帧,实现快速高效准确的虚拟手势生成。
仿生关节链球坐标系是为描述定长节棍绕节点(为避免与日常理解的关节一词混淆,本文称仿生关节链球坐标系中的关节为节点)旋转的姿态问题而建立的。如图1所示,要求存在3根不在同一直线上且首尾依次相连的节棍C1、C2和C3,由首至尾的节点依次为T1、T2、T3和T4。在已明确T1、T2和T3在世界笛卡儿坐标系下的坐标值(以下简称笛卡儿坐标值)的前提下,若活动节点T4的链球坐标值已知,则可按式(1)求解其笛卡儿坐标值。
图1 仿生关节链球坐标系
(1)
其中具体参数的计算方法详见文献[8]。但对于已知笛卡儿坐标值求解链球坐标值的方法,文献[8]中要求首先建立如图1所示的坐标系,而实际应用中通常只知道笛卡儿坐标值,因此为进一步提高计算效率,减少建立链球坐标系的时间消耗,改进根据笛卡儿坐标值计算链球坐标值的方法如下。
已知节点T1、T2、T3和T4的笛卡儿坐标值分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)和(x4,y4,z4)。令xc=x4-x3,yc=y4-y3,zc=z4-z3,可得式(2)
(2)
式中:(r,φ,θ)为节点T4在基于T1、T2和T3所建立的链球坐标系下的坐标值。
在链球坐标系的建立和使用过程中,存在如下两个问题:一是在多节点结构的前提下,父节棍选择的多样化会影响坐标系建立后计算的有效性,对此应当尽量挑选不在同一平面内的节棍组合;二是在坐标系确定后,需要通过对两个角度参数赋值改变节棍的相对形态,但多节棍构成的骨架结构由于各个链球坐标系与世界坐标系间的相对位置关系不同,会导致使用者不能直观快速地预测出角度值的更改会带来姿态上的哪种变化,因此本文提出一种能更直观地将角度变化的结果展示出来的手掌模拟法。
通过对图1的观察,可知链球坐标值θ反映节棍C3与C2的夹角大小,坐标值φ反映节棍C3与C1、C2所确定平面的夹角,仿照此种关系,将五指展开如图2(a)所示,手掌及除拇指外的四指不动,所成平面视为C1、C2定位平面,拇指可随与掌骨相连的节点任意转动(指骨间节点不动)。令手掌与纸面平行且掌心向外,拇指如图2(b)所示沿纸面垂直方向向外运动时,坐标值φ增大,反之减小;当拇指沿平行于纸面的方向运动即如图2(c)所示方向时,坐标值θ增大,反之减小。此处只需了解角度变化对节棍C3运动趋势的影响,并不要求手指绝对模拟C3的位置,所以鉴于拇指的灵活性完全可以实现φ和θ同时变化时的场景假设。在借手掌模拟法确定当前链球坐标值更改带来的姿态变化时,首先利用手臂与腕关节让手掌与C1、C2定位平面平行,拇指指尖与图1中T4节点重合;然后沿与掌骨相连的关节转动拇指,通过观察指尖的运动特点即可直观了解某个坐标值改变带来的姿态影响,进而快速有效地设置坐标,得到预期的手势形态。
图2 手掌模拟法
在手势表达中常需要手掌与手臂的配合,由于大臂和小臂仅存在一种“双节棍三节点”的链球坐标系结构,因此在对相关骨骼结构进行虚拟搭建时,我们忽略较易描述的手臂与腕骨的旋转,而注重指骨的运动细节。
人的手部骨骼包括腕骨、掌骨和指骨,根据图3(a)所示实体骨骼的位置及比例[11],设置虚拟手部骨架结构共包含24个节点,其中拇指4个节点,食指、中指、无名指和小指各5个节点。记录方法如图3(b)所示,由拇指至小指将手指依次编号为A至E,节点则按照由手腕至指尖方向由0开始依次编号,编号为0的节点表示掌骨与腕骨的连接点,编号为1的节点表示掌骨与近节指骨的连接点,编号为2的节点表示近节指骨与中节指骨间的连接点,除拇指外编号为3的节点表示中节指骨与远节指骨的连接点,而拇指的3号节点与其它手指的4号节点皆为远节指骨粗隆即指尖。
图3 手骨结构
通过对手指运动特点的分析,可知编号为0和除拇指外的编号为1的节点自身坐标无法更改,故可动节点共15个。为了实现虚拟手势的生成,需要在此骨架结构的基础上选择合适的父节棍,建立链球坐标系。
为建立合适的链球坐标系,根据链球坐标值的计算方法,在选取父节棍时需要注意以下几点:①子节棍及两根父节棍之间应保持递进连续性;②父节棍尽量不选取在同一手指上,以避免运动过程中多节棍位于同一直线上造成有效父节棍的缺失;③优先考虑不可移动的节点,减少后续关联节点的计算量。
由此建立各运动节点的链球坐标系见表1,其中各节点命名及相对位置关系参照图1定义,虚拟手骨架中节点编号参照图3(b)所示,(r,φ,θ)为初始状态下节点T4的链球坐标值。
表1 各节点链球坐标系的建立及初始坐标值
当各运动节点链球坐标系确立后,即可通过调整θ及φ的值获得各种手势,算法如下:
输入:全节点旧笛卡儿坐标值,活动节点新链球坐标值
输出:全节点新笛卡儿坐标值
(1)根据初始手骨姿态,给定全节点集合Tall的笛卡儿坐标值H(xi,yi,zi), (i∈Tall),建立初始手骨姿态,根据式(2)计算得到全节点链球坐标值H(ri,θi,φi),(i∈Tall)。
(2)根据目标姿态,可从任意手指开始,利用手掌模拟法确定当前涉及的运动节点θ及φ的变化方向。
(3)根据目标姿态,对各手指待变化节点的各最小序号节点集合TM依次调整θ及φ的值,更新H(ri,θi,φi),(i∈TM)。
(4)对与TM相连的递增序号节点集合TM+,保持对应H(ri,θi,φi),(i∈TM+)不变,在H(ri,θi,φi),(i∈TM)的基础之上,根据式(1)按照序号递增顺序依次计算更新H(xi,yi,zi),(i∈TM+)。
(5)更新H(xi,yi,zi),(i∈Tall)并显示,若达到目标姿态则结束,否则返回(2)。
根据上述算法,目标期望设计如图4(a)所示的“数字8”手势,最终得到表2所列各坐标值。图4中依次给出了真实手势以及摄像机在不同方位角和仰角下观察到的虚拟手势效果图。
表2 “数字8”手势各节点链球坐标系角度坐标值
图4 手势“数字8”
为产生如图5(a)所示手势“OK”,通过调节得到表3所示参数设置,效果如图5所示。
图5 手势“OK”
表3 “OK”手势各节点链球坐标系角度坐标值
依据高维形象几何仿生信息学理论与同源连续性原理可知,同一坐标系系统下的不同手势是同类样本,其在特征空间中呈连续分布,故任意两个手势之间具有某种连续变化的关系。假设起始姿态各节点链球坐标值集合为HS(ri,θi,φi),目标姿态各节点链球坐标值为HD(ri,θi,φi),必然存在由HS(ri,θi,φi)向HD(ri,θi,φi)运动的路径,设计路径的变化并采样,可获得不同的手势变化序列HT(ri,θi,φi),从而实现由静态手势产生动态手势的功能。
通常手势的变化往往直接快速,因此空间点的变化路径常选取最近路线即直线运动,对由图4手势变化至图5手势的直线路径按照式(3)进行采样,可得图6所示直线变换中间帧,由于节棍长度始终不变,因此不将坐标r作为变量处理。α和β的值决定采样密度,用户也可以根据需求调整部分关键节点的坐标值以适应视角产生最佳观察效果
图6 “数字8”向“OK”手势的直线变化(方位角=-34° 仰角=-6°)
HT(θi,φi)=αiHS(θi,φi)+βiHD(θi,φi)
(3)
虽然高维空间点的运动路径没有明确的计算公式,但是仿照平面内的点运动轨迹计算方法,可以对逐个节点的链球坐标值进行类二维化处理,仍然能得到连续的渐变帧。例如采用如式(4)所示方法计算插值帧坐标(HInter(θi),HInter(φi)),有
(4)
式中:w是采样系数点,变化范围由0至1。为确定系数ai,bi,ci的值,增加一个轨迹中点(Hcom(θi),Hcom(φi)),定义各参数如式(5)
(5)
式中:λ表示了由源手势向目标手势变换过程中的偏移程度,λ越大则手势的中间帧距离直线变形帧越远。计算可得各系数如式(6)所示
(6)
令λ=2,w依次取0、0.2、0.4、0.6、0.8和1,最终得到图7所示由HS(ri,θi,φi)以曲线形式变换至HD(ri,θi,φi)的采样结果。与直线变换相比,过程中存在较大的偏移多样性,但仍可以保证由源手势向目标手势的过渡结果准确。利用此特性可与机械手臂控制系统相连,根据虚拟手势控制其完成真实人手所不能实现的动作。
图7 “数字8”向“OK”手势的曲线变化(方位角=-34° 仰角=-6°)
仿生关节链球坐标系适宜对具有固定长度的相连节棍式结构进行设计分析,并可以在笛卡儿坐标系与链球坐标系之间任意转换。由于仿生关节链球坐标系在进行节棍类结构描述时具有简单高效等特点,因此本文所述方法成本低廉、参数简单、计算复杂度低,且在计算机上操作方便,可实时观察效果并进行调节,更适合虚拟手势的生成。
为克服现有手势三维信息获取方法成本高、使用复杂、实时性差等问题,本文选择了擅长描述节棍结构以及节点旋转运动的仿生关节链球坐标系,并改进了坐标转换方法,提出了新的角度判定辅助手段。借助计算机人机交互界面,该虚拟手势生成方法对操作者无特殊技术要求,角度调节直观准确,结合高维形象几何仿生信息学可以高效地完成姿态关键帧的插值,无论是简单手部姿态或是复杂的手语表达均可以达到较好的效果。