人体姿态估计无疑是计算机视觉领域的热门研究方向之一。其核心目标在于从图像中精准提取人体骨架的关键关节点,进而构建完整的人体骨骼模型。这一技术是后续人体姿态识别、实时交互游戏等众多应用的基础支撑。然而,传统基于RGB图像的方法容易受到光照变化、阴影遮挡和复杂背景的干扰,不仅识别准确率有限,算法复杂度也较高。相比之下,采用深度图像技术能够有效克服这些局限:深度信息可快速实现背景分割,抗干扰能力更强,算法运行效率也更高。
本文重点介绍一种基于深度图像的人体关节点定位算法。具体流程如下:首先,对深度图像中像素点邻近区域的深度值进行规则网格采样,提取局域深度特征;随后,利用随机森林分类器对每个像素点进行分类;最后,对归属于同一身体部位的像素点,采用Mean Shift聚类算法计算其聚类中心,该中心即视为对应关节点的位置。整套算法能够对人体全身关节点进行较为准确的定位。
局域深度特征提取
本文采用一种局域深度采样特征,如图1所示。图中蓝色点代表图像I中的某个给定像素x,以其为中心生成一个5×5的格点矩阵。红色格点表示实际采样位置。

图1 局域深度采样示意图
随机森林分类器
分类器是对样本进行分类的算法统称。在机器学习领域,可选分类器种类繁多,例如逻辑回归、朴素贝叶斯、支持向量机(SVM)、决策树、随机森林以及当前热门的神经网络。综合考虑分类精度与计算效率,本文最终选用了随机森林作为分类模型。
随机森林本质上是由多棵决策树组合而成的集成分类器,其结构如图2所示。每棵决策树与二叉树类似,由分裂结点和叶结点构成。每个分裂结点包含一个特征及其对应的阈值;像素x从根结点进入,逐层根据特征与阈值的大小关系决定进入左子树还是右子树,如此反复直至到达叶结点。在每棵树的叶结点,可以得到该像素属于各身体部件的概率分布。最后,将森林中所有树的概率结果相加,得到最终的全局概率分布,其中概率最高的类别即为最终分类结果。
通过集成多棵决策树,随机森林的分类精度相较于单棵决策树有了显著提升。更重要的是,多棵决策树可以并行训练,大幅提高了训练效率。

图2 随机森林分类器
随机森林训练完成后,即可用于对每个像素点进行分类,判断其所属的身体部位。针对图像中的每个像素,分类器都会输出一个分类结果及相应的预测概率。实际操作中,仅保留预测概率高于80%的像素点,从而获得密度分布不均的分类点。越靠近关节点位置,预测概率越高,点密度越大;远离关节点的区域,点密度则随之降低。
关节点位置估计
完成像素点分类后,下一步利用Mean Shift聚类算法,找出属于同一身体部位的像素点的聚类中心,该中心即为关节点的最终位置。
Mean Shift算法的基本原理是一个迭代过程:先计算某个感兴趣区域内的偏移均值,然后将区域中心移动到计算出的质心位置;接着以新质心为起点,重复前述操作。在迭代过程中,区域中心会不断向密度更高的区域偏移,直至抵达该类别像素点密度最高的中心位置方才停止。此时,该位置最具该身体部位的代表性,我们将其作为该部位的关节点位置。对所有类别依次执行该算法,即可得到全身关节点的具体坐标。
当然,由于分类结果难以做到完美无缺,聚类结果有时会与真实关节点位置存在一定偏差。此时,可以利用人体骨架长度比例等先验约束条件,对偏差较大的关节点进行矫正,从而实现对预测结果的二次优化。
流程介绍
训练流程:输入一幅深度图像,选取关节点附近的像素点作为训练样本,提取这些点的深度特征,然后训练随机森林分类器。

图3 训练流程示意图
测试流程:首先对深度图像进行背景分割,得到纯人体区域图像;然后使用训练好的随机森林分类器对人体区域内的像素点进行分类;接着仅选取预测概率高于设定阈值的像素点,从而获得疏密分布不均的各类关节点像素点(越靠近关节点,像素点越密集);最后,用Mean Shift算法对这些点进行聚类,得到最终的关节点位置。

图3 测试流程示意图
运行效果
图4展示了该关节点定位算法的实际运行效果。其中,(a)为NTU数据集中关节点的标准真值位置;(b)为算法对同一张深度图像的定位结果;(c)为在自制的Kinect测试集上的运行效果;(d)为采用公司研制的TOF相机模块拍摄的深度图像的运行效果。从视觉上看,定位效果较为理想。值得注意的是,TOF相机的分辨率为320×240,因此在相同距离下,人体在画面中所占的比例比NTU数据集更大。


(a) (b)


(c) (d)
图4 算法运行效果示例
(a) NTU测试集真值(25个关节点) (b) NTU测试集定位结果 (c) 自制测试集定位结果 (d) TOF相机拍摄图像定位结果
