1. 引言
近年来,随着人工智能的迅速发展,医学影像识别领域诞生了很多优秀的算法,不断提高着影像识别的水平。而在影像识别领域,人体姿态估计是一个很热门的子领域,各种算法不断提高着人体姿态估计的精度。随着人体姿态估计的发展,姿态估计的精细化程度也从二维提升到了三维,而要进行精确的三维人体姿态估计,一般需要使用人体医学影像的三维信息进行训练,这样的信息包括体素(三维空间中的点,对应于二维空间的像素)、点云或多重二维影像等,这些数据类型的数据量比单张二维影像高出了一个数量级,因此训练和估计的计算量也都比二维影像的姿态估计多出许多 [1] - [14]。为了降低三维人体姿态估计的计算量,使得在一些计算能力有限的设备上也能较快地进行三维人体姿态的估计,甚至实时地对人体姿态视频进行估计,本文提出了一种使用二维人体姿态估计结果推算三维人体姿态的方法。
2. 利用二维人医学影像识别得到人体骨骼像的长度
首先,我们利用特定姿态下人体姿态的估计得到人体在距离相机一定距离时人体各个骨骼的像的长度。当人体正对相机镜头、抬头挺胸、双腿直立、双手自然垂于人体两侧时,可近似看作人体处于一个与相机镜头的主光轴垂直的一个平面内。这时,经相机镜头所成的像也位于一个平面内,也即在相机的成像平面内,见图1。
这时成像平面内的人体骨骼的像的长度与人体骨骼的真实长度的比值应等于像距与物距的比值。

Figure 1. Imaging of human body in specific posture
图1. 人体特定姿态成像
3. 通过人体骨骼的像在与主光轴垂直平面上的投影推算人体骨骼的朝向
当同一个人在不改变位置的情况下改变人体姿态。在改变姿态后,我们再通过相机进行拍摄,考虑拍摄是合焦的,由于人体处于相机的景深范围内,我们可以知道各个骨骼经相机的镜头所成的像的准确位置就在相机成像平面的附近 [15] (焦深范围内),一个点光源在相机成像平面上的像可能不是一个点,而是一个“圆”(弥散圆),只是因为这个圆的直径很小,人眼无法分辨其与点的区别,所以看到的像依然是“清晰”的。考虑到相机的入射光线是近轴光线(与相机镜头的主光轴夹角很小),所以经相机镜头折射后的光线也应该与主光轴的夹角也很小(先考虑过光心的光线,该光线与主光轴的夹角很小,而由于此时相机是“合焦”的,所以其他光线在像平面上的入射点应该与过光心的光线的入射点很接近,间隔很小,可以近似看作:过光心的光线的入射点就是光源在像平面上所成的图像)。因而可以近似地认为光线与成像平面垂直,可以把成像平面内所形成的图像近似看作该“空间的像”在成像平面内的投影,见图2。

Figure 2. Imaging of human body in any posture
图2. 人体任意姿态成像
可以证明,直线段经理想薄凸透镜所成的实像还是直线段,并且直线段的组合的像等于直线段的像的组合。现在我们把骨骼简化为一个线段,我们来看一下,一个直线段经相机(可以近似看作一种理想薄凸透镜)成像的解析,见图3。
设有一个线段AB,A是离透镜光心O较远的一点,AB可以看作其在过A点与主光轴垂直的平面上的一个投影AC与其在过A点与主光轴平行的直线上的投影AD的向量和。由于“向量和的像等于像的向量和”,所以AB的像
应该是AC的像
和AD的像
的向量和。其中
在过点
与主光轴垂直的平面内,
与AD、主光轴都在一个平面内,
可分解为其在过点
与主光轴垂直的平面内的投影
和其在过点
与主光轴平行的直线上的投影
。现在来看一下
的长度。
其实就是
与主光轴的距离与
与主光轴的距离之差,也就是点A的“像高”与点D的“像高”之差。设过点A的物距为u,像距为v,透镜的焦距为f,向量AB与AC的夹角为
,向量AB的长为l,则AC的长为
,AD的长为
。由于AD平行于主光轴,所以A和D的“物高”应该是一样的,记为h,则点A的“像高”
应满足:
而
,所以:
同理,点D的“像高”为:
,所以:
而
的长度与AC的长度之比应为
,即
,而AC的长为
,所以
的长度为
。所以当
小于
时,
的长度与
的长度之比为
即:
我们考虑先让AB在AB、AC所在的平面绕端点A转至过A点与主光轴垂直的平面内,则此时AB
的像
的长度为
,如前所述,当人体正对相机镜头、抬头挺胸、双腿直立、双手自然垂于
人体两侧时,可近似看作人体处于一个与相机镜头的主光轴垂直的一个平面内,此时我们可以通过相机所拍的照中对应的骨骼长度即是
的长度
。再考虑B沿反方向重新转回原来的位置,此时的
的长度与
的比就是
。所以只要我们能得到
的长度信息,就能得到
,进而通过反余弦函数得到
的值。当得到
以后,先将
在过点
与主光轴垂直的平面内,沿点
旋转180˚得到
,过点
可作一个向量
,其在过点
与主光轴垂直的平面内的投影为
,在与主光轴平行的方向上的投影与AD同向,长度为
,则该向量
相对于
的朝向与AB相对于A的朝向一致,长度
与AB的长度之比为
。所以问题的关键在于求出
。我们知道
的长度与
的比是
,而
可
通过特定姿态的骨骼成像获得,所以只要知道
的长就可以得到
。
下面我们讨论把
和
的向量和当做
来求
以及
的方向,误差在可接受的范围之内(最大相对误差不超过10%)。我们知道在过点
与主光轴垂直的平面内,
与
的向量和可看作是AB的像
在该平面内的投影,而由于近轴光线可近似看作与主光轴平行,所以
在成像平面上的投影可近似看作AB在成像平面内所拍摄成的图像。因而AB在成像平面内所拍摄成的图像的长可以当作
在过点
与主光轴垂直的平面内投影的长(成像平面与过点
与主光轴垂直的平面平行,所以
在这两个平面内的投影平行且长度相等)。先考虑
时。当
时,AB就是AD,此时因为
长度为0,所以
与
的向量和就是
,其长度为:
用此长度除以
(
),得到的值为
,由于h、l、f都远小于u,假设h、l、f都小于
,那么这个值小于
,用反余弦函数求得的
的计算值
大于
,即87.953˚,此时求得的 值与
真实值的误差小于3˚。用前述方法作图得到的向量
与理论上的
的偏差(在与主光轴垂直的平面内的向量误差
加上在与主光轴平行方向上的向量误差即是最终的偏差)应小于:
因为
,所以也即:
也即:
小于:
约等于
的比值为:
,可以看到这个相对误差是很小的。
注意到
为0的情况其实已经讨论过了(即是AB在与主光轴垂直的平面内,这种情况
的长度等
于
,用投影长度除以
,结果没有误差)。下面只考虑
的情况。
当
时,设
与
的向量和的长度为
,设
的长度为p,那么
应在区间
之内。
现在我们把
记为
。并记
,
。因此有
。我们注意到
的区间为
,如果h为0,那么该区间退化为一个值p,以此值求
不存在误差。下面只考虑h不为0的情况。对应的求得的
的余弦值的区间为
,把
代入,得到:
注意到
,所以也就是:
现在我们对
分段来分析,先来看区间上确界
:
1. 当
时:
,而
,所以
,两边同时乘以
,得到:
即:
也即:
而
,所以
,这时可能超出了余弦值的范围,所以只能取1,通过反余弦函数得到的
的计算值
为0,所以
与
的差值为
,其大小属于
区间,小于等于
,假设h、l、f都小于
,则
,
,所以
,计算得到的
与真实的
之间的差异(向量差)的长度不超过:
小于:
小于:
2. 当
时:如果
,那么通过反余弦函数得到的
的计算值
为0,
与
的差值小于
,假设h、l、f都小于
,则
,
,所以
计算得到的
与真实的
之间的差异(向量差)的长度不超过:
小于:
小于:
如果
,因为
小于
,所以
与
的差也不会超过
,所以计算得到的
与真实的
之间的差异(向量差)的长度也不会超过
。
3. 当
时:
,因此
。反余弦函数
的导数是
,所以求得的
与
的差值应为
,其中
,所以
,而
,所以
小于:
即:
因为
,所以:
计算得到的
与真实的
之间的差异(向量差)的长度不超过:
小于:
小于:
现在再来看区间下确界
:
我们注意到
是
的单调递减函数,设某个值
使
4. 当
时:因为
,所以
,所以
。
另外,此时
,
。
设
,则
其中,
介于
与
之间。
因而有:
而
,
计算得到的
与真实的
之间的差异(向量差)的长度不超过:
5. 当
时:
,
,设
,则:
其中
介于
与
之间,因此
所以:
而
,
而
所以:
而由于
,可知
,因而
。
因而
而
所以,
。
计算得到的
与真实的
之间的差异(向量差)的长度不超过:
综上所述,用
与
的向量和(即
的像在过点
上的投影)代替
来求
,并作
最终得到的骨骼缩小后的位置与真实位置之间的差都在可接受的范围内(最大相对误差不超过10%)。
对于人体所有的关键骨骼都采用此方法计算其朝向,然后把所有骨骼的朝向组合起来便得到了三维人体姿态。
4. 与三维人体姿态模型的计算速度对比
使用谷歌的PoseNet二维人体姿态模型,使用默认参数对480P分辨率的图像,进行人体姿态识别,并使用上述方法(以下简称PoseNet-to-3D)推算人体的三维姿态,在MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)的平台上耗时平均大约为0.083秒。而使用《Learnable Triangulation of Human Pose》 [1] 中所述的方法(以下简称LTH)进行姿态估计,在相同平台下,对480P分辨率的图像进行姿态估计,耗时大约为2.5秒。而使用《Cross View Fusion for 3D Human Pose Estimation》 [2] 中所述的方法(以下简称CVF)进行姿态估计,在相同平台下,对480P分辨率的图像进行姿态估计,耗时大约为2.7秒,见表1。

Table 1. Comparison of three-dimensional human posture estimation time
表1. 三维人体姿态估计耗时对比
5. 结语
通过对人体医学影像特定姿态的估计得到了骨骼的像的长度。在位置不变的前提下,任意改变影像姿态,通过骨骼的像在与主光轴垂直的平面上的投影以及像的长度推算骨骼的朝向。通过一些二维和三维空间的几何关系以及对高斯成像公式的使用,巧妙地把医学影像三维姿态估计转换为二维姿态估计加上一些代数运算,大大降低了三维人体影像姿态估计的计算复杂度。
NOTES
*通讯作者。