APP下载

基于骨架的视觉动捕姿态优化计算方法*

2022-08-05陈曦黄昌正周言明吴宇浩

广东科技 2022年7期
关键词:小臂参考点计算方法

文/陈曦 黄昌正 周言明 吴宇浩

0 引言

视觉动捕是通过摄像头拍摄,从图像中识别、计算出人体各部位姿态,从而达到捕捉用户动作目的的技术。相较于传统光学动捕和惯性动捕,视觉动捕没有过多场地限制,用户无需佩戴辅助设备,只需一台或若干台普通摄像头就能完成,具有成本低、便捷、高效的特点。视觉动捕可分为三个步骤:图像处理、关键点识别、姿态计算。

图像处理包括图像拍摄、大小缩放、格式转换等基本 处理流程,为下一步处理提供符合要求的数据源。关键点识别是从图像中识别出人物各个关节的关键点,计算关键点的坐标,重构出人物骨架。目前已经有不少开源的人体关键点识别模型,如谷歌的MediaPipe项目和卡内基梅隆大学的OpenPose项目。本文选择MediaPipe人体关键点识别模型计算所得的骨架作为本文介绍的算法的输入数据。

姿态计算是本文主要研究的内容,是指根据人体骨架模型,通过肢体间的关系、关节限制等条件,计算出人体各部位的实际姿态,为人体骨架模型赋予运动“灵魂”。本文先阐述关键点识别算法所得到的骨架模型,然后详细研究根据关键点数量不同而不同的两种姿态计算方法,针对轴向信息缺失的肢体介绍一种姿态优化方法,最后通过对比图像和三维模型的动作展示算法效果。

1 视觉动捕人体姿态算法

1.1 骨架与关键点坐标

MediaPipe关键点识别算法是基于RGB图像的实时算法,计算结果包括全身、双手和脸部网格三个模型,每个模型都包含图中识别出来的关键点的三维坐标。本文将根据对不同部位的姿态计算,获取对应关键点的坐标作为输入数据。

1.2 姿态计算

本文使用四元数描述姿态,并规定当人物呈T字站姿时,所有部位的姿态四元数都是(1,0,0,0),下文称该动作和姿态值为初始姿态。人体各部位的姿态值,指从初始姿态旋转到当前姿态的旋转四元数值。

根据各部位所包含的关键点个数不同,本文将介绍两种姿态计算方法:无参考点姿态计算和有参考点姿态计算。根据立体几何学可知,已知三个不共线点的空间坐标可计算出点所在面的朝向。因此,仅包含两个关键点的肢体部位,只能使用无参考点方法计算姿态估计值,保证肢体朝向正确;而包含三个或以上关键点的肢体部位,可以使用有参考点方法计算出姿态准确值。

1.2.1 无参考点姿态计算方法

若肢体仅包含骨架模型中两个关键点,我们只能使用无参考点姿态计算方法计算其姿态四元数。

以小臂为例,小臂仅包含手肘和手腕两个关键点。假设当前姿态下,关节1(手肘)坐标为p1,关节2(手腕)坐标为p2;在初始姿态下,关节1(手肘)坐标为p’1,关节2(手腕)坐标为p’2,则可以求出当前姿态和初始姿态下肢体的朝向向量v和v’:

设肢体从初始姿态绕旋转轴va旋转了角度θ到达当前姿态,则其姿态q计算公式为:

该方法计算得到的肢体姿态能保证肢体朝向与图像中一致,但由于缺失了骨骼方向为轴的旋转信息,计算结果与实际姿态可能会不一致,则需要依靠后文介绍的姿态优化方法解决。

1.2.2 有参考点姿态计算方法

若肢体包含骨架模型中至少三个关键点,我们可以使用有参考点姿态计算方法,准确计算该肢体的姿态四元数。

以手掌为例,手掌包含手腕、五指的指根共六个关键点。假设当前姿态下,关节1(手腕)坐标为p1,关节2(中指根)坐标为p2,关节3(小指根)为p3;在初始姿态下,关节1(手腕)坐标为p’1,关节2(中指根)坐标为p’2,关节3(小指根)为p’3,则可以求出当前姿态下肢体的两个向量v1和v2,以及初始姿态下肢体对应的两个向量u1和u2:

由于肢体从初始姿态旋转至当前姿态的旋转轴,必定位于前后两个向量的对称面上,通过联立两个对称面就能得到该旋转的旋转轴va。两个面的方程为:

其中系数值为:

求解得:

其中t为参数,由于旋转轴只需知道方向就行,我们可以设t=1并对其进行单位化处理得到最终的va。

计算旋转角度,需先计算两个向量到旋转轴的垂线向量v⊥和u⊥,两条垂线的夹角θ即为旋转角:

设单位化后旋转轴va=(x,y,z),则肢体的姿态q计算公式为:

1.3 姿态优化算法

通过上述两种姿态计算方法,计算得到各肢体的基础姿态值,可以基本复现人物动作。但是由于无参考点算法的限制,该姿态与实际人物姿态仍有差距,我们需要对姿态值进行进一步的优化。

针对无参考点姿态计算方法得到的姿态估计值,本文提出一种针对人体关节自由度限制的姿态轴向限制算法。本算法可以限制肢体间的相对姿态,达到还原关节自由度的效果。该算法包含限制一个轴向和两个轴向的两种应用方法。

1.3.1 限制一轴的姿态优化算法

同样以小臂为例,小臂的姿态与手掌的姿态有很高的相关性,一般转动手腕时,手掌和小臂是同时旋转的,因此,在该轴上小臂应与手掌保持同步旋转。

假设肢体(小臂)调整前姿态四元数为q’,相邻肢体(手掌)姿态四元数为q0,骨骼方向为x轴,即肢体(小臂)需要通过绕x轴旋转来调整姿态。则调整前,两个肢体的相对姿态q’r为:

提取出旋转四元数中绕x轴的旋转分量qr:

对肢体(小臂)进行该分量旋转,得到调整后的姿态四元数q:

1.3.2 限制两轴的姿态优化算法

以手指为例,手指前端只能完成握拳或伸展方向的活动,即指关节只有一个自由度,因此,手指前端与手指根部的相对姿态只能是绕一条固定轴旋转的四元数值。

假设限制前肢体(手指尖关节)姿态为q’,相邻肢体(手指根关节)姿态为q0,相对于相邻肢体(手指根关节),该肢体(手指尖关节)只能绕z轴旋转。则调整前,两个关节的相对姿态q’r为:

提取出旋转四元数中绕z轴的旋转分量qr:

计算出限制后的肢体(手指尖关节)姿态q:

根据人体的肢体部位不同,选择上述两种姿态优化算法中的合适算法,人体骨架所有肢体部位都能计算出较为准确的姿态值,实现高还原的动作捕捉效果。

2 算法测试效果

将本文算法得到的姿态数据传输到三维人体模型上进行展示,效果见图1。从图中可以看出,三维模型对图像中动作的复现效果很好。经统计,本文算法对一帧图像数据的完全处理时间为10毫秒~14毫秒之间,充分满足实时性的需求。

图1 姿态数据下三维人体模型展示效果

3 总结

本文介绍了一种基于骨架的视觉动捕姿态优化计算方法,该方法可将人体关键点坐标数据转化为肢体姿态四元数。本文通过举例小臂和手掌,详细描述了针对包含不同关键点数量的肢体,两种不同的姿态计算方法。同时,为解决骨架转姿态时轴向旋转信息缺失的问题,介绍了一种姿态优化方法,保证了动作的准确度;最后通过展示图像和三维模型的动作对比,体现算法的效果。

虽然本文介绍的姿态计算方法可以得到动作捕捉所需的所有姿态数据,但由于该方法是基于骨架数据的算法,十分依赖关键点坐标的准确度。基于单摄像头的关键点识别算法只能通过估计得到点的深度信息,拍摄的透视现象也会造成关键点位置的偏移,这些因素都会影响姿态计算结果的准确度,如何消除这些影响将会是姿态计算后续的主要工作。

猜你喜欢

小臂参考点计算方法
槽道侧推水动力计算方法研究
浮力计算方法汇集
基于激光跟踪仪多站位布局的标准场参考点可靠性分析*
食品搬运机器人小臂的静态分析与优化
极限的计算方法研究
FANUC 0i-MF数控系统参考点建立与调整
做四肢保健操, 改善糖尿病神经病变
数控机床回参考点故障诊断及维修
SCARA 机器手的转动惯量分析
浅谈数控机床参考点故障