人体姿态估计是当前计算机视觉领域的热点研究问题。对人体骨架关节点进行准确提取并构建人体骨架模型,为进一步的人体姿态识别、实时交互游戏等应用提供了基础。但是传统的基于RGB图像的方法容易受到光照、阴影、复杂背景的影响,准确度不高并且算法复杂。利用深度图像技术可以有效地解决上述问题,利用深度信息可以快速地进行背景分割,抗干扰性能好,算法效率高。
本文主要研究基于深度图像的人体关节定位算法。算法对深度图像素点周围区域的深度进行格点化采样以提取其深度特征,再使用随机森林分类器进行像素点分类,对同一类别的点使用Mean Shift算法聚类出中心点,以该中心点作为关节点位置。该算法可对人体全身关节点进行定位。
局域深度特征提取
本文中采用如图1所示的局域深度采样特征。其中蓝色点表示图像I中给定的像素x,以该像素为中心生成一个5*5的格点矩阵,红色的格点表示要进行深度采样的点。
图1 局域深度采样示意图
随机森林分类器
分类器是对样本进行分类的算法的统称,在机器学习中有许多种分类器可供我们选择使用,包括逻辑回归、朴素贝叶斯、支持向量机(SVM)、决策树、随机森林、神经网络等算法。综合考虑分类的精度与效率,本课题中采用的是随机森林分类器。
随机森林分类器是由多棵决策树组合而成的分类器,如图2所示。决策树的结构类似二叉树,由分裂结点和叶结点构成。每一个分裂结点包含一个特征与阈值,像素x从根部开始,根据特征与阈值划分进入左子树还是右子树,这样不断地分裂直到叶结点。在每棵树的叶结点能够得到该像素对于各个身体部件的概率分布,将各棵树得到的结果相加,得到最终的概率分布,拥有最高概率的一类作为最终的分类结果。
随机森林将多棵决策树合并在一起,准确度相较于单棵决策树有较大提升,并且多棵决策树可以并行训练,提高了训练效率。
训练完随机森林分类器后,我们利用其对像素点进行分类,判断其属于身体的哪个部位。对于图像中的每个像素,使用分类器对其分类后得到分类的结果,以及预测结果的概率。我们只选取图像中预测概率高于80%的点,这样就能得到密度不同的分类点。越靠近关节点位置,预测概率越高,点的密度越大,远离关节点位置的密度则小。
关节点位置估计
在得到像素点分类后,我们使用Mean Shift聚类算法得到属于同一部位像素点的中心,作为关节位置。
Mean Shift算法一般为一个迭代过程,先计算感兴趣区域内的偏移均值,移动区域中心到计算出的质心处,然后以此处作为新的起点,继续移动。在迭代过程中,不断向密度更大的地方偏移,直到移动到这类像素点密度最高的中心位置而停止。此时这个位置最能代表这一类点,我们将其作为该部位的关节点位置。分别对所有类别的点都运行一遍此算法后,我们就能得到全身关节点的位置。
但是由于分类结果并不一定准确,聚类出的结果可能与真实关节点的位置有所偏移,这时我们可以采用人体骨架长度比例约束条件,来矫正一部分偏移较大的关节点,对预测结果进行优化。
流程介绍
训练流程:对一幅深度图,取关节附近的点作为训练集,对这些点提取深度特征,再训练随机森林分类器
图3训练流程示意图
测试流程:深度图背景分割得到人体区域图像,使用随机森林分类器对人体的像素点进行分类,选取预测概率大于设定阈值的点,则得到疏密不同的各关节部位像素点,越接近关节点位置,像素点越密,再使用Mean shift算法进行聚类,得到关节点位置
图3测试流程示意图
运行效果
图4为关节定位算法的运行效果,(a)为NTU数据集中关节点的标准位置;(b)是算法对同一张深度图中关节点的定位结果;(c)为自制的Kinect测试集上的运行效果;(d)为采用公司研制的TOF相机模块拍摄的深度图的运行效果。可以直观地看出定位效果较为良好。TOF相机的分辨率为320*240,因此相同距离下人体在画面中所占比例更大。
(a) (b)
(c) (d)
图4 算法运行效果示例
(a)NTU测试集真值,25关节 (b)NTU测试集 (c)自制测试集 (d)TOF相机拍摄图像