计算机研究与发展
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
1999年　第36卷　第10期　Vol.36　No.10　1999



基于模型的人体运动跟踪
刘小明　庄越挺　潘云鹤
　　摘　要　在计算机视觉领域，人体运动分析的研究正因其广泛的应用前景而越来越受到研究者的重视.对图像序列中的人体运动进行跟踪是其中的关键技术.由于人体运动的特殊复杂性，已有的研究方法都对人体加上了许多限制条件.文中提出了一种新的方法来进行人体运动跟踪.该方法不针对特定人体运动方式，能对复杂、变化背景中的人体各部位的大幅度运动进行跟踪.其基本思想是在建立人体模型的基础上，按自上而下的顺序依次跟踪人体各部分，并在其中采用了基于图像差分的运动预测和分区域直方图相似度算法.论文最后给出了实验结果.
　　关键词　图像序列，人体运动，图像差分，相似度
　　中图法分类号　TP391.4
MODEL-BASED HUMAN MOTION TRACKING
LIU Xiao-Ming, ZHUANG Yue-Ting, and PAN Yun-He
(Institute of Artificial Intelligence, Zhejiang University, Hangzhou 310027)
　　Abstract　In the field of computer vision, the research on human motion analysis is attracting many researchers' attention with its wide application prospect. The key technical issue is the human motion tracking in the image sequence. Because of the complexity of human motion, the existing research methods impose limitation on human. A new approach to track the human motion is brought forward in this paper. Instead of aiming at a given human motion mode, it can track large motion from frame to frame in a complex, variational background. The main scheme is to track every part of human body from top to bottom on the basis of human model. The image-difference-based motion estimation and the divided region histogram similarity algorithm are used. The final result is given at the end of the paper.
　　Key words　image sequence, human motion, image difference, similarity 
1　引言
　　在计算机视觉领域，人体运动分析正越来越受到研究者的重视.这是由于这一研究具有相当广泛的应用前景，它在运动员动作分析、医学分析、动画制作等方面非常有用.另外，自动地理解、识别人体运动能够广泛地应用于监视、人机交互、视频检索等领域.计算机研究人体运动的素材往往是视频或图像序列.因此，如何在图像序列上识别并跟踪人体运动成为进行人体运动分析的关键步骤.传统的跟踪人体运动的方法一般分两步来完成：首先从图像帧中提取低层特征，如各关节的位置，并对之进行识别；然后是在各个帧的特征间建立对应关系.根据有无模型知识支持，这些方法又分为两种：当有模型知识时［1～5］，只要图像与模型之间建立了匹配，那么特征对应也就自动完成了.而当没有模型知识时［6］，往往要通过估计特征点的位置、速度、形状等方面来建立特征对应.由于人体运动的特殊复杂性,几乎所有这些方法都加上了许多限制，如要求背景单一甚至不动，人体运动方向与投影平面平行，人体穿紧身衣裤等［7］.
　　本文提出了一种新方法来进行基于模型的人体运动跟踪.该方法去除了以往方法中的许多限制，如不针对特定人体运动方式，能对复杂、变化背景中的人体各部位的大幅度运动进行跟踪.该方法是在用户标注第一帧的人体各个关节点的基础上，结合运动预测和形变块的匹配，按自上而下的顺序依次跟踪人体各部分，最后获得了人体的二维运动骨架序列.该过程的整体框架如图1所示.


图1　系统整体框架
　　本文的具体安排如下：第2节将介绍本文所用的人体模型；第3节介绍人体运动跟踪的具体算法；第4节给出实验的结果；最后对文章进行总结并探讨未来的工作方向.
2　人体模型
　　我们将三维人体看成由关节点连接的刚体的集合［7］.如上肢是由肘关节连接的上下臂两个刚体，上臂与躯干是由肩关节连接的.我们以三维人体骨架来描述人体运动.将人体投影到二维平面上后，骨架中各线段的空间关系依然保持不变，而有些线段的长度会发生变化，即刚体的投影相对于原刚体外形发生了变化.在二维图像序列的人体跟踪中，由于线段不易由图像信息来表征，所以本文以二维人体块模型来表示人体在二维平面上的投影，如图2所示.各长方形的中心线即为人体投影后的骨架，中心线将相应的长方形分为等面积的两部分.长方形的长为刚体投影后的长度，宽由人体学知识来获取.


图2　二维人体块模型
　　当用户对第一帧中的特征点进行标注后，我们就得到了该帧中各个长方形的图像信息.因此，如果在后续帧序列中能找到各个长方形相应的新位置，我们也就得到了投影平面上的人体二维运动骨架.由于用户的首帧标注具有高可靠性，因此我们实际上将特征提取与特征对应这两步合二为一来完成，即在寻找图像序列特征点的过程中也完成了对应的建立.
3　骨架跟踪
　　由于人体的头部较少有自遮挡现象，可以方便地获取其颜色特征.并且当头部长方形确定后，躯干长方形的一个特征点――颈部就已知了.同样，当上臂长方形确定后，肘关节就固定了，对于下臂只需确定手的位置即可.因此，我们从头部顶点开始，按自上而下的顺序依次跟踪人体各部分.下面按头部、躯干、四肢3部分来分别讲述各自的跟踪.
3.1　头部
　　由于对于任何一个图像帧而言，在帧序列中人的头部可能向各个方向运动，如果采取局部搜索的方式，那么查找到的位置可能不是全局最优的.如果采取全局搜索的方式，那么效率又会很低.因此，我们采取的是两种方式的结合：为了减少下一帧中对人的头顶特征点的搜索范围，我们采用基于图像差分的运动预测来估计下一帧中头部位置；然后以该预测点为中心，选取一条搜索路径进行形变块的匹配，以精确定位头部位置.
3.1.1　基于图像差分的运动预测
　　图像差分是一项应用广泛的图像处理技术［8］，本节将介绍如何使用它来预测后续帧中人体头部的运动方向及位移.设当前帧k中的头部顶点和颈部点已知，我们将头部区域近似为一个圆形区域H，如图3所示，H的直径为L，圆心为O.由于一帧之间头部位移较小，定义差分区域为一个以O为圆心,2L为半径的圆形区域Ω.由下式计算差分区域的颜色值：
Differenceij［R］ = |Xij［Red］-Xij′［Red］|，　　　　(i,j)∈Ω
(1)
Differenceij［G］ = |Xij［Green］-Xij′［Green］|，　　(i,j)∈Ω
(2)
Differenceij［B］ = |Xij［Blue］-Xij′［Blue］|，　　　　(i,j)∈Ω
(3)


图3　头部区域示意图
　　其中Xij表示k帧中坐标为（i,j）的像素点的RGB颜色值.Xij′表示k+1帧中坐标为（i,j）的点的颜色值.由于下一帧中头部可能向各个方向运动，所以必须先判断其运动方向，然后再估计位移的大小.图4是差分区域示意图，H′为下一帧中的头部位置.本文假设相邻帧之间背景变化较少，因此差分区域中除了两个头部区域之外，其值接近为零.下面按如下算法求运动方向α：


图4　差分区域
　　① 从α0=90°开始，以αn+1=αn+5°,得到36个α角度值；
　　② 将每个αn所在的直径延长到与差分区域Ω的边界相交，得到36条长为4L的线段Ln;
　　③ 按下式计算每条线段Ln上所有点的颜色总和：

(4)
　　④ 取α为使Sumn最大的Ln所对应的角度：
α={αn|Sumn=MAX(Sum0，……，Sum36)}.
(5)
　　这个算法的根据是在运动方向上头部区域的位移最大，因而反映在差分区域上应该是该方向上点的颜色值总和最大.在确定了运动方向后，下面要估计头部在这个方向上位移的大小.我们取α所对应的L\-n线段，将线段上所有点的RGB颜色值以曲线形式描述出来，如图5所示.可以看到，这是一个明显的双峰值曲线，图中左边峰值对应于图5中H′与背景的差分，右边峰值对应于H与背景的差分.这两个差分实际上代表了头部在投影平面上的位移，而且双峰的宽度应大致相等.本文的方法是先将Ln线段上所有点的颜色均值a求出，然后以一个百分比p(如50%)为阈值，在图5中作一直线Y=a.p,该直线与双峰值曲线相交有两条线段,D1与D2.取D1与D2长度的均值为头部的位移.上面描述的确定运动方向的算法只是将方向定在一条线段上，而未确定向线段的哪一端运动.实际上我们只需计算D1与D2离O的距离，如果D1离O远，则头部向D1所在方向运动，反之则向D2所在方向运动.这样通过图像差分的方法我们就可以得到下一帧中头部顶点的估计位置.根据形变块匹配得到了头部的准确位置后，我们还需要衡量一下运动估计的准确度.如果发现估计位移过大，则增加百分比阈值p，反之则减小p.这样经过自适应地调整阈值后，运动估计的精度得到了提高.在文献［9］中，我们介绍了应用Kalman滤波的方法来进行头部点的运动预测.相对于Kalman滤波中较多的矩阵运算而言，本文提出的方法具有运算效率高的优点.但由于基于图像差分的运动预测仅考虑相邻帧的图像信息，并没有利用运动历史的信息，因此在某些情况下受噪声干扰较大，影响了预测效果.


图5　运动方向上的双峰值曲线
3.1.2　形变块匹配
　　图像差分仅仅给出了下一帧中头顶点的预测坐标，下一步即以该点为中心选择一条搜索路径进行匹配，以精确定位头部的位置.为了便于图像匹配，我们将头部在图像上的区域近似为一个长方形（m×n），它的长m为头部顶点与颈部点的距离，宽n可通过人体学中头部外形的知识获得.长方形中m×n个点的颜色信息（RGB值）作为头部的颜色模型保留下来，以用于下一帧的匹配.由于图像上的头部区域是三维头部在投影平面上的投影，因此头部在三维空间的运动会造成投影的形状发生变化.如在下一帧中头部由直立变为略微向左侧倾斜，或头部变大了（这可能是人向相机走来）.因此我们的块匹配必须在形变块之间进行.为此，我们采用一种分区域直方图相似度算法.
　　定义形变块A={(x,y),m,n,θ},如图6所示.(x,y)为块的中心线与一条边的交点，m为块的长，n为块的宽，θ为块的中心线与x轴的夹角.现有参照块A={(x,y),m,n,θ}和比较块A′={(x′,y′),m′,n′,θ′}，按如下方法计算两者的相似度.


图6　特征块
　　① 将块A分为等面积的4个小区域b1,b2,b3,b4,分别计算4个小区域的颜色直方图H1,H2,H3,H4;
　　② 将块A′分为等面积的4个小区域b1′,b2′,b3′,b4′,分别计算4个小区域的颜色直方图H1′,H2′,H3′,H4′;
　　③ 计算：　　　　
(6)
其中Wk表示各个区域在整个块中所占的比重；k是将Hk标准化后的直方图；n为直方图的维数；Min()表示对两个直方图进行求交操作，两个直方图越相似，求交的结果越接近1，反之则越接近0.因此，我们以S表示两个形变块之间的相似度度量，S越大则相似度越大.采用分区域的方法是因为这样不仅考虑了块中的颜色在数量上的分布，也考虑了颜色在位置上的分布.
　　对于一个图像帧序列而言，我们将上一帧中已跟踪到的头部长方形区域定义为参照块A，而前帧中待跟踪的头部长方形为 A′.由于一帧之间头部转动很小，所以取θ′为θ-Δθ≤θ′≤θ+Δθ, Δθ为很小的角度值.头部的投影大小都为按比例缩放，所以m-Δm≤m′≤m+Δm; n-(n/m)Δm≤n′≤n+(n/m)Δm.这样，对于搜索路径中的每一个待选点（x,y），我们都由{(x,y),m′,n′,θ′}形成几个A′，分别计算其与上一帧头部区域的相似度，保留具有最小相似度的A′的信息.最后，具有最小相似度的A′即为当前帧中头部区域的位置.由于头部区域的颜色会随光照等条件发生变化，我们还采用线性加权的方法来自适应地更新颜色模型［10］.
3.2　躯干
　　我们定义躯干部分的长为从颈部点到腹部点的距离，宽为左右肩部之间的距离.为了有效地定位整个躯干的位置，我们将胸部点的上下两部分合为一部分来考虑.与头部相比，躯干块的长与宽不一定是按比例同时缩放的，所以对长和宽应分别定义Δm与Δn，然后用分区域直方图相似度算法来确定躯干块的位置.此时躯干块的宽即为本帧中的肩宽.躯干确定后，腹部点也就确定了.对于左右臀部两点，我们假设它与上体躯干一起发生旋转.如果上体旋转后肩宽为上一帧的90%，则本帧中左右臀之间的距离也为上一帧臀间距的90%.　　
3.3　四肢
　　由于四肢的运动具有相似性，我们放在一起讨论.四肢部分在一帧之间可能运动较多，所以应先采用一定的预测机制来估计下一帧中四肢可能的位置，然后再精确定位.以大腿为例，我们将每一帧中膝部关节点相对臀部的角度值作为运动轨迹信息保存下来.每次预测时，取前两帧的角度值作均值，以该值作为本帧的初始角度值θ′，然后在（θ′-Δθ,θ′+Δθ）的范围内确定精确的角度值.结果发现，对于四肢的大幅度运动，预测机制能有效地减少块匹配的搜索范围.
　　在描述四肢形变块的参量中，除了θ之外，另一个重要参量是m.因为对于四肢而言，从任何视角投影过去，其宽度变化很小，而长度可能变化很多.所以在每次跟踪四肢部分时，（x,y）已定，n不变，m与θ需要由前述的相似度算法来确定.
　　在四肢的跟踪中，还有一个必须考虑的问题是遮挡的处理问题.以上肢为例，在某一帧上肢被躯干遮挡后，往往在块的匹配中反映出较低的相似度.但在遮挡消除后，相似度又会升高了.因此我们提出了将块匹配的相似度S同时作为块匹配的可信度度量.在帧序列的匹配过程中保存每个四肢块的匹配可信度，如果发现在两个较高匹配可信度的帧之间有一个或几个较低可信度的帧，则用高可信度帧中关节点的坐标线性插值出中间几帧的关节点坐标.实验证明，这种方法能在一定程度上处理遮挡，并优化跟踪质量.
4　实验结果
　　根据本文所述的算法, 我们已经在微机上实现了一个原型程序.它能对一个图像序列中的运动人体各部分进行跟踪.我们拍摄了人体以匀速走向摄像机的一段视频（共40帧），然后将其保存为一个图像序列.图7从左到右依次展示了该序列中的第1、5、10、15，20、25、30、35、40帧，共9幅图像.最左边图像上的16个特征点是由用户使用鼠标标注的，其余8帧上的特征点是由程序跟踪得到的.从图中可以看到，在人体投影不断变长的情况下，每帧中的头部与躯干都很好地跟踪到了.虽然人体裤子的颜色与地面相似，但是腿部的跟踪还是比较精确的.当然由于本文算法没有利用人体各部分的边界信息，一些关节点（如第40帧的左踝）的跟踪有一定偏差.在实验中我们还发现，当人体在图像平面上水平移动时，我们的算法也能产生很好的跟踪效果.若要参考更多的实验结果，请访问：http://icad.zju.edu.cn/～liuxm/animation.html.


图7　行走人体的跟踪
5　结论
　　本文介绍了一种新方法对运动图像序列中的人体运动进行跟踪.该方法去除了以往方法中的许多限制.它不针对特定人体运动方式，能对复杂、变化背景中的人体各部位的大幅度运动进行跟踪.本文的方法非常方便、直观.用户只需在第一帧上标注人体各个关节点，以后的工作都可以由计算机来完成.我们采取了从头部顶点开始，以自上而下的顺序依次跟踪人体各部分的方法，最后获得了人体经投影后的二维运动骨架序列.在跟踪过程中，我们采用了基于图像差分的运动预测和分区域直方图相似度算法.从实验结果来看，跟踪的效果是好的.基于这一跟踪算法，我们进一步在骨架序列中恢复了人体的三维运动模型［9］，这样就从三维人体运动的真实性证明了算法的有效性.
　　从实验中我们发现，当被跟踪人体存在大量自遮挡现象时，跟踪的效果将会受到很大影响.解决这一问题的途径有两个：一是在跟踪过程中加入用户的反馈，这种交互式跟踪的效果将是非常好的；二是借助三维人体模型的知识来指导二维跟踪，这样就可以最大限度地减少用户反馈的次数.这两点也是今后进一步研究的方向.
致谢　感谢童一颖、周昆进行的许多有益的讨论.
本课题得到国家自然科学基金资助.
作者简介：刘小明, 男, 1975年3月生,硕士研究生,主要研究方向为多媒体技术、视频检索.
　　　　　庄越挺, 男, 1965年6月生,博士,教授, 主要研究方向为多媒体数据库、智能CAD.
　　　　　潘云鹤, 男, 1946年11月生,教授,博士生导师,院士,主要研究方向为计算机美术、形象思维、智能CAD系统、GIS、计算机动画、多媒体技术等.
作者单位：浙江大学人工智能研究所　杭州　310027
参考文献
　1　　Rourke J O, Badler N I. Model-based image analysis of human motion using constraint propagation. IEEE Trans Pattern Anal Mach Intell, 1980, 2(6): 522～536
　2　　Hogg D. A program to see a walking person. Image Vision Computing, 1983, 5(20)
　3　　Rohr K. Incremental recognition of pedestrians from image sequences. In: Proc IEEE Comput Soc Conf Comput Vision and Pattern Recogn, New York: IEEE Computer 　Society, 1993
　4　　Chen Z, Lee H J. Knowledge-guided visual perception of 3D human gait from a single image sequence. IEEE Trans on Systems, Man, and Cybernetics, 1992, 22(2): 336～342
　5　　Bharatkumar A G, Daigle K E, Pandy M G et al. Low limb kinematics of human walking with the medial axis transformation. In: Proc of IEEE Computer Society Workshop on Motion of No-Rigid and Articulated Objects, Austin, TX: IEEE Computer Society, 1994. 70～76
　6　　Niyogi S A, Adelson E H. Analyzing and recognizing walking figures in XYT. In: Proc CVPR, Seattle, WA: IEEE Signal Processing Society, 467～474
　7　　Aggarwal J K, Cai Q. Human motion analysis: A review. In: Proc of the IEEE 　Nonrigid and Articulated Motion Workshop 1997, Piscataway, NJ: IEEE Computer Society 1997. 90～102
　8　　Jain R. Extraction of motion information from peripheral processes. IEEE Trans PAMI, 1981, (5)
　9　　Zhuang Yueting, Liu Xiaoming, Pan Yunhe. Video motion capture using feature 　tracking and skeleton reconstruction. In: Proc of IEEE Int Conf on Image Processing. Kobe, Japan: IEEE Signal Processing Society, 1999. 25～28
　10　　刘明宝，姚鸿勋，高文. 彩色图像的实时人脸跟踪方法. 计算机学报, 1998, 21(6): 527～532
　　　(Liu Mingbao, Yao Hongxun, Gao Wen. Real-time human face tracking in color images. Chinese Journal of Computers. 1998, 21(6): 527～532) 
原稿收到日期：1999-01-22；
修改稿收到日期：1999-06-14.
