
# DigitEyes：面向人机交互的基于视觉的手部追踪系统

James M. Rehg $^{*}$

电气与计算机工程系

卡内基梅隆大学

宾夕法尼亚州匹兹堡市，邮编15213

<mailto:jimr@cs.cmu.edu>

Takeo Kanade

机器人研究所

卡内基梅隆大学

宾夕法尼亚州匹兹堡市，邮编15213

<mailto:tk@cs.cmu.edu>

## 摘要

在计算机视觉领域，对手部和肢体运动的感知是人机交互（HCI）、虚拟现实以及运动表现测量等应用中的重要研究课题。目前市面上可买到的传感器均具有侵入性，需要用户佩戴手套或标记物。我们开发了一款名为DigitEyes的非侵入式基于视觉的手部追踪系统。该系统采用运动学手部模型，利用从无装饰、无标记的手部灰度图像中提取的线条和特征点，已实现最高10 Hz的追踪速率。本文介绍了该传感器在3D鼠标用户界面问题中的应用。

## 1 引言

若能借助计算机视觉技术开发出能够追踪人体空间运动的“人体传感器”，将会成为强大的人机交互工具。此类传感器可安置于用户所处环境中（而非佩戴在身上），且能在自然光照和着装条件下运行，从而提供当前尚不具备的便捷性与灵活性。从视觉感知的角度而言，人手和肢体可被建模为关节连接的刚体机构，这些关节具备一个或多个自由度（DOF）。这一模型既可用于精细层面描述手部运动，也可用于较宏观层面描述全身运动。基于上述认知，我们将人体感知定义为对关节运动链进行实时视觉追踪。

尽管人体运动分析的框架有多种，但我们的方法具备四大优势。首先，通过追踪手部的所有自由度，我们为用户在界面应用中提供了最大的灵活性。（关于需要全手传感器的界面示例，可参见[^15]和[^6]。）此外，我们基于三维运动学的通用建模方法，使得同一基础算法即可用于追踪手部或身体的任意子集状态。全面状态追踪的另一好处是不受未使用手部动作的影响。例如，特定手指的运动可通过其关节角度识别，而无需考虑手掌相对于摄像头的姿态。最后，通过在三维空间中建模手部运动学，我们无需针对特定应用或视角进行用户建模。

DigitEyes系统将手部追踪视为一个基于模型的序列估计问题：给定一系列图像和手部模型，我们就能估算出每一帧中手部的三维姿态。所有可能的手部姿态都由状态空间中的向量来表示，这些向量编码了手掌的位姿（六个旋转和平移参数 $DOF^{s1}$）以及手指的关节角度（每根手指四个状态，拇指为五个状态）。每种手部姿态都会通过相机模型投影生成一组图像特征，即二维线条和点。特征测量过程则是通过检测手指关节和指尖的遮挡边界，从灰度图像中提取这些手部特征。每一幅图像对应的状态估计值，是通过找到与测量特征最匹配的状态向量来确定的。我们的基本追踪框架

---

与 [^4]、[^7]、[^16] 所描述的类似。

与计算机视觉领域传统研究的单一刚体物体相比，多关节机械结构的追踪难度更大。主要难点在于状态空间规模庞大、状态到特征的映射关系具有非线性（即所谓的测量模型），以及存在自遮挡现象。手指关节会为手掌的刚体运动额外增加21个状态，这显著提升了估计过程的计算成本。这些额外状态由关节角度参数化，进而在测量模型中引入非线性和运动学奇异性。当某个状态的微小变化对图像特征毫无影响时，就会产生奇异性。除此之外，手指在运动过程中会相互遮挡或与手掌遮挡，导致特征测量十分困难。

DigitEyes系统采用局部搜索和线性化方法来应对庞大的状态空间和非线性测量模型。我们这种基于梯度的局部追踪方法的关键在于较高的图像采集速率（10 Hz），这一速率限制了帧与帧之间手部状态以及图像特征位置的变化。在状态空间中，我们利用这种局部性，围绕先前的估计值对非线性状态模型进行线性化处理。机器人技术领域的相关技术可帮助我们快速计算所需的运动学雅可比矩阵。通过稳定状态估计器来解决运动学奇异性问题。每一帧对应的线性估计问题求解后，会生成一系列状态修正量，这些修正量随时间积分后便能得到估计的状态轨迹。

由于图像采样速率较高，帧与帧之间的手部特征变化也很小。对于某一幅图像而言，会利用前一帧的状态估计值来预测特征位置。特征检测器以这些预测值为初始值，利用手指关节的对称性来提取线条和点，并将其与手部模型进行匹配。在序列中的第一幅图像里，用户需将手置于已知的起始姿态以初始化追踪过程。在当前的系统中，每个手指关节独立检测其特征，这就限制了传感器只能用于无遮挡的手部运动。我们正在扩展特征处理方法以消除这一限制。

在 [^12] 中，我们详细介绍了DigitEyes系统，并给出了在正交投影下利用双摄像头图像序列追踪27自由度手部模型的结果。本文则阐述了该系统在透视投影下的扩展应用，并给出了基于该传感器的用户界面示例：一款三维图形鼠标。尽管在遮挡环境下的追踪以及复杂背景下的追踪仍面临诸多难题，但这些成果证明了我们的方法在基于视觉的人体运动感知领域具有巨大潜力。

## 2 相关工作

以往关于通用关节物体跟踪的研究包括 [^8] [^16] [^10] [^9]。在 [^16] 中，山本和越川描述了一种利用运动学和几何模型进行人体跟踪的系统。他们给出了利用光流特征跟踪单个人臂和躯干的示例。Pentland和Horowitz [^10] 则给出了利用光流和关节可变形模型跟踪人体动作的例子。在相关研究中，Metaxis和Terzopoulos [^8] 利用可变形超二次曲面模型来跟踪关节运动。在 [^4] 中，Dorner描述了一种从单手图像序列中解读美国手语的系统。Dorner的系统使用了手的全部自由度，并采用带有彩色标记的手套来简化特征提取过程。最早的系统之一由O'Rourke和Badler [^9] 开发，他们利用约束传播来分析人体运动。不过，这些基于关节模型的早期方法均未能利用自然图像特征实现类似人手这样复杂机构的全状态实时跟踪。

除了上述关节物体跟踪的相关研究外，许多研究者还将通用的视觉技术应用于人体运动分析。与DigitEyes不同，这些方法仅分析手部运动的子集，比如一组手势 [^2] [^13] 或手掌的刚性运动 [^1]。Darrell和Pentland在 [^2] 中描述了一种用于学习和识别动态手势的系统。Segen [^13] 的相关研究则采用神经网络方法来识别二维手势。这两种方法都能在未标记的手部图像上实时运行，但它们无法给出三维运动估计结果，因此很难将其应用于第5节所述的3D鼠标接口等问题。在 [^1] 中，Blake等人描述了一种实时轮廓跟踪系统，该系统能够在仿射运动模型下追踪刚性运动手部的轮廓。

---

![Image](images/5c473969c8ce7c439fc5aaaa03f34518991e28da1c0858e39e0e74f88ac8c33f.jpg)

<div style="text-align: center;">Figure 1: Kinematic models, illustrated for fourth finger and thumb. The arrows illustrate the joint axes for each link in the chain.</div>

## 3 用于视觉跟踪的手部建模

本节简要概述我们对手部的运动学和特征模型。更多细节请参见 [^12]。我们采用机器人领域广泛使用的Denavit-Hartenburg（DH）表示法 [^14] 来描述手部运动学。在手部建模过程中我们做了若干简化假设，如图1所示。首先，我们假设手的四个手指均为具有四个自由度（DOF）的平面机构。外展自由度会使手指所在平面相对于手掌移动，而其余3个自由度则决定了手指在平面内的形态。每个手指都有一个锚点，即其基关节中心在假定为刚性的手掌坐标系中的位置。实际手指会与我们的建模假设略有偏差，但我们发现这种建模在实践中已足够精确。

手部特征由手部模型投影到图像平面时产生的线条和点组成。每个手指关节由圆柱体建模，会在图像中生成一对代表其遮挡边界的线条。这对线条的角平分线包含了圆柱体中心轴的投影，被用作关节特征。关节特征向量$[a\ b\ p]$给出了直线方程$ax + by - \rho = 0$的参数。以中心轴线作为关节特征，无需再对圆柱体的半径或这对线条相对于中心轴的倾斜度进行建模，而后者在指尖附近往往影响显著。由于实际应用中难以测量端点，我们采用整条线作为特征。图2展示了从手指前两个关节提取的两条关节特征线。这些特征可通过简单的局部算子从灰度手部图像中提取，相关描述见[^12]。

![Image](images/27aae39d8f74d7974e02734ac4fda3eafed6f85ece57a9cf2d6f107343493029.jpg)

<div style="text-align: center;">Figure 2: Features used in hand tracking are illustrated for finger links 1 and 2, and the tip. Each infinite line feature is the projection of the finger link central axis.</div>

## 4 铰接机构的状态估计

我们采用非线性最小二乘法来进行状态估计。我们在每一帧中构造一个残差，用于衡量所测量的图像特征与估计的手部模型投影到图像中的结果之间的差异。通过改进的高斯-牛顿（GN）算法[^3]最小化残差向量的平方幅度，即可得到状态修正量。设$\mathbf{R}(q_j)$为第j幅图像的残差向量，GN状态更新方程如下：

 $$ \mathbf{q}_{j+1}=\mathbf{q}_{j}-[\mathbf{J}_{j}^{t}\mathbf{J}_{j}+\mathbf{S}]^{-1}\mathbf{J}_{j}^{t}\mathbf{R}_{j}\quad, $$

其中$\mathbf{J}_j$是残差$\mathbf{R}_j$的雅可比矩阵，两者均在$\mathbf{q}_j$处求值。该模型中的非线性来源包括关节角的三角函数项以及透视投影带来的逆深度项。S是一个恒定的对角条件矩阵，用于在存在运动学奇异性时稳定最小二乘解。该方法基于Lowe提出的刚体跟踪工作成果[^7]。

本节剩余部分将推导正交投影和透视投影两种情况下的关节及指尖残差雅可比矩阵。残差导数可通过将3D点位置关于状态的梯度进行简单的图像平面投影得到。利用常规的机器人技术即可快速计算这些梯度。

残差衡量的是投影后的3D手部几何形状（线条和点）与检测到的特征之间的图像平面距离。当手部模型与图像数据完全对齐时，残差为零。第i个指尖特征的残差是图像平面上的一个向量，其定义为：

 $$ \mathbf{v}_{i}(\mathbf{q})=\mathbf{H}[\mathbf{P}_{i}(\mathbf{q})]-\mathbf{t}_{i}\enspace, $$

---

其中$\mathbf{P}_i = [X_i Y_i Z_i]$是手状态函数所确定的3D指尖中心点（位于相机坐标系下），$\mathbf{H}[\cdot]$负责将3D点投影到图像平面，$\mathbf{t}_i$则是测量得到的指尖特征。

关节残差衡量的是投影后的圆柱体轴线上的点与测量得到的特征线之间的偏差，其表达式为：

 $$ l_{i}(\mathbf{q})\;=\;\mathbf{m}^{t}\mathbf{H}[\mathbf{P}_{i}(\mathbf{q})]-\rho\quad, $$

其中$\mathbf{m} = [a\,b]^t$。

式(2)和式(3)中所用的点投影算子可表示为：

 $$ \mathbf{H}[\mathbf{P}(\mathbf{q})]=\mathbf{C}\mathbf{\bar{P}}(\mathbf{q})\mathrm{w h e r e}\mathbf{C}=\left[\begin{array}{c c c}{\alpha_{u}}&{0}&{u_{0}}\\ {0}&{\alpha_{v}}&{v_{0}}\end{array}\right], $$

这就是固有相机模型（参见 [^5]），而 $\mathbf{P}$ 则是理想的点投影模型。在正交投影情况下，$\mathbf{P} = [X\ Y\ 1]$；而在射影情况下，$\mathbf{P} = [X/Z\ Y/Z\ 1]$。

为了计算末端执行器和连杆的雅可比矩阵，我们需要用到 $\partial\overline{\mathbf{P}}/\partial\mathbf{q}$。在正交投影情况下，我们有

 $$ \frac{\partial\mathbf{\widetilde{P}}}{\partial\mathbf{q}}=\left[\begin{array}{l l l}{1}&{0}&{0}\\ {0}&{1}&{0}\\ {0}&{0}&{0}\end{array}\right]\frac{\partial\mathbf{P}}{\partial\mathbf{q}}=\mathbf{A}_{o}\frac{\partial\mathbf{P}}{\partial\mathbf{q}}\mathrm{~,~} $$

而在透视投影情况下，则有：

 $$ \frac{\partial\mathbf{\bar{P}}}{\partial\mathbf{q}}=\left[\begin{array}{c c c}{1/Z}&{0}&{-X/Z^{2}}\\ {0}&{1/Z}&{-Y/Z^{2}}\\ {0}&{0}&{0}\\ \end{array}\right]\frac{\partial\mathbf{P}}{\partial\mathbf{q}}=\mathbf{A}_{p}\frac{\partial\mathbf{P}}{\partial\mathbf{q}}~. $$

要计算末端执行器雅可比矩阵，我们对式(2)关于状态向量求导，得到

 $$ \frac{\partial\mathbf{v}_{i}(\mathbf{q})}{\partial\mathbf{q}}\;=\;\mathbf{C}\frac{\partial\mathbf{\bar{P}}_{i}(\mathbf{q})}{\partial\mathbf{q}}\;=\;\mathbf{H}\frac{\partial\mathbf{P}_{i}(\mathbf{q})}{\partial\mathbf{q}}\mathrm{~,~} $$

其中 $\mathbf{H} = \mathbf{C}\mathbf{A}_{o/p}$ 是 $2\times3$ 梯度投影矩阵，而选择 $\mathbf{A}_o$ 还是 $\mathbf{A}_p$ 则由投影模型决定。

类似地，要计算连杆雅可比矩阵，我们对式(3)求导，得到

 $$ \frac{\partial l_{i}({\bf q})}{\partial{\bf q}}\;=\;{\tilde{\bf m}}^{t}\frac{\partial{\bf P}_{i}({\bf q})}{\partial{\bf q}}\mathrm{~,~} $$

其中 $\tilde{\mathbf{m}} = \mathbf{m}^t\mathbf{C}\mathbf{A}_{o/p}$。将式(4)、(5)、(6)代入后，我们得到：

 $$ \begin{array}{r l r}{\tilde{\mathbf{m}}_{o}}&{{}=}&{[a\alpha_{u}\;b\alpha_{v}\;0]}\end{array} $$

 $$ \begin{array}{r l r}{\tilde{\mathbf{m}}_{p}}&{{}=}&{[a\alpha_{u}/Z\quad b\alpha_{v}/Z}\end{array} $$

 $$ -(a\alpha_{u}X+b\alpha_{v}Y)/Z^{2}]. $$

![Image](images/679d54b4f3c3e5804c55ebaed3ee6d0a612c1c82c8ad6629e2efb86266ef87d6.jpg)

<div style="text-align: center;">Figure 3: A sample graphical environment for a 3D mouse.</div>

连杆i的梯度向量构成了整体雅可比矩阵的一行。从几何意义上讲，它是通过将连杆上各点的运动学雅可比矩阵 $\partial\mathbf{P}_i(\mathbf{q})/\partial\mathbf{q}$ 沿着特征边缘法线方向投影得到的。

式(7)和式(8)中的运动学雅可比矩阵由形式为 $\partial\mathbf{P}_i/\partial\mathbf{q}_j$ 的项组成，这类项在机器人控制中十分常见，可直接从运动学模型中获取。更多细节请参见 [^11]。

## 5 三维图形鼠标：实验结果

我们详细描述了基于DigitEyes传感器及简化版八状态手部模型的三维图形鼠标用户界面实验。图3展示了该界面中使用的简单三维图形环境，它由地面平面、三维光标（绘制为一根杆，光标位于顶端）以及被操作的球形物体组成；阴影提供了额外的深度提示。该界面的任务是让用户能够控制光标的三个自由度。

DigitEyes解决方案基于部分手部模型，包含手的第一指和第四指以及拇指。手掌被限制在与界面所用桌面平行的平面内（3个自由度）。第一指有3个关节自由度，而第四指和拇指各有1个自由度，可使其在桌面平面内外展。手部模型如图4所示，对应的强度图像见图5。一台与桌面呈约45度角的单摄像头负责采集用于跟踪的图像。

---

![Image](images/56a75f26bdb54bd1a83a39550f0ac44c6360d28525e41cf7f73f67322a6a846b.jpg)

<div style="text-align: center;">Figure 4: The hand model used in the 3D mouse application is shown in its estimated state from frame 200 in the motion sequence. The vertical line shows the height of the tip above the ground plane.</div>

在桌面上手掌的位置控制了杆的底端位置，而食指在桌面之上的高度则控制了光标的高度。这种特定的映射方式具有重要优势：既能解耦所控制的自由度，又能实现同时操作。第四指和拇指在平面内具有外展自由度，被用作“按钮”。

图6至图10给出了500帧运动序列的实验结果。图7、图8和图9显示了每一帧估计出的手部状态。帧的采样间隔为100毫秒。根据估计的手部状态得出的杆高和底端位置如图10所示。该运动序列分为四个阶段：第一阶段（第0帧至第150帧），用户的手指上下移动两次，导致杆高出现两个峰值，同时估计的杆位置有小幅变化；第二阶段，大约在第150帧时手指再次抬起并保持抬起状态，此时拇指被触发，相当于一次“按钮事件”，触发时段为第150帧至第200帧，会导致杆高有所变化，但杆位置的变化微乎其微；第三阶段，从第200帧到第350帧，杆高保持不变，而杆位置发生变化；最后，从第350帧到序列结束，所有状态同时变化。图4和图5分别展示了第200帧的输入图像及其对应的状态估计结果。整个序列中鼠标杆位置的示例见图6。

这些结果显示出期望状态与有用的动态范围之间相当良好的解耦效果。

![Image](images/fc65ccc6062211ca6d4154b12bb581d8600132546409b723a7c6a360a208e5bd.jpg)

<div style="text-align: center;">Figure 5: The input hand image from frame 200 in the motion sequence.</div>

运动方面也是如此。最大的耦合误差出现在第150帧左右，此时当拇指被激活时，杆的高度会下降。为简化起见，鼠标状态是通过简单的缩放和坐标变换从手部状态生成的，这往往会放大传感器噪声。通过更复杂的传感器输出处理方式，这两个问题都能得到缓解。

这个例子说明了利用运动学模型进行手部跟踪的一个重要优势：仅通过单张摄像头图像就能测量绝对三维距离（例如手指距桌面的高度）。能够从手部运动中恢复三维空间参数是我们的系统相较于基于手势识别的方法所具有的优势之一。

在上述实验中，DigitEyes是在一款名为IC40的基于68040的图像处理平台上实现的。状态估计数据通过以太网传输到Silicon Graphics Indigo 2计算机上，用于模型显示和用户界面演示。IC40板卡能以视频速率将数字化图像传输到处理器内存中，且不会带来额外的计算开销，从而消除了重要的I/O瓶颈。

## 6 结论

我们介绍了用于视觉手部跟踪的DigitEyes框架及其在三维鼠标用户界面问题中的应用。目前我们正从两个方面拓展这些成果。首先，我们正在改进特征提取流程，以处理遮挡和复杂的背景情况；其次，我们正在分析关节物体跟踪的可观测性要求。

---

作者感谢Omead Amidi和Yuji Mesaki在IC40硬件环境方面提供的帮助，也感谢第一位审稿人提出的诸多详细意见。

![Image](images/c7ad5e9bf834cad5b26b5ed420658815aaa41f7c2e9137198a2756b6e535d63f.jpg)

<div style="text-align: center;">Figure 6: The mouse pole cursor at six positions during the motion sequence. The pole is the vertical line with a horizontal shadow, and is the only thing moving in the sequence. Samples were taken at frames 0, 30, 75, 260, 300, and 370 (chosen to illustrate the range of motion).</div>

## 参考文献

[^1]: A. Blake, R. Curwen, and A. Zisserman. A framework for spatiotemporal control in the tracking of visual contours. Int. J. Computer Vision, 11(2):127–145, 1993.

[^2]: T. Darrell and A. Pentland. Space-time gestures. In Looking at People Workshop, Chamberry, France, 1993.

[^3]: J. Dennis and R. Schnabel. Numerical Methods for Unconstrained Optimization and Nonlinear Equations. Prentice-Hall, Englewood Cliffs, NJ, 1983.

[^4]: B. Dorner. Hand shape identification and tracking for sign language interpretation. In Looking at People Workshop, Chambery, France, 1993.

[^5]: O. Faugeras. Three-Dimensional Computer Vision: A Geometric Viewpoint. MIT Press, 1993.

[^6]: S. B. Kang and K. Ikeuchi. Grasp recognition using the contact web. In Proc. IEEE/RSJ Int. Conf. on Int. Robots and Sys., Raleigh, NC, 1992.

[^7]: D. Lowe. Robust model-based motion tracking through the integration of search and estimation. Int. J. Computer Vision, 8(2):113–122, 1992.

[^8]: D. Metaxis and D. Terzopoulos. Shape and non-rigid motion estimation through physics-based synthesis. IEEE Trans. Pattern Analysis and Machine Intelligence, 15(6):580–591, 1993.

[^9]: J. O'Rourke and N. Badler. Model-based image analysis of human motion using constraint propagation. IEEE Trans. Pattern Analysis and Machine Intelligence, 2(6):522–536, 1980.

[^10]: A. Pentland and B. Horowitz. Recovery of non-rigid motion and structure. IEEE Trans. Pattern Analysis and Machine Intelligence, 13(7):730–742, 1991.

[^11]: J. Rehg and T. Kanade. Digiteyes: Vision-based human hand tracking. Technical Report CMU-CS-TR-93-220, Carnegie Mellon Univ. School of Comp. Sci., 1993.

[^12]: J. Rehg and T. Kanade. Visual tracking of high dof articulated structures: an application to human hand tracking. In J. Eklundh, editor, Proc. of Third European Conf. on Computer Vision, volume 2, pages 35–46, Stockholm, Sweden, 1994. Springer-Verlag.

[^13]: J. Segen. Gest: A learning computer vision system that recognizes hand gestures. In R. Michalski and G. Tecuci, editors, Machine Learning IV. Morgan Kaufmann, 1993.

[^14]: M. Spong. Robot Dynamics and Control. John Wiley and Sons, 1989.

[^15]: D. Sturman. Whole-Hand Input. PhD thesis, Massachusetts Institute of Technology, 1992.

## [^16]: M. Yamamoto and K. Koshikawa. Human motion analysis based on a robot arm model. In IEEE Conf. Comput. Vis. and Pattern Rec., pages 664–665, 1991

---

![Image](images/49b16782c330e4c5fcb9b8fe3f88c6539bc58bd51443a0decfe63228409f9977.jpg)

<div style="text-align: center;">Figure 7: Palm rotation and first finger joint angles for mouse pole hand model.</div>

![Image](images/62ddde5e4da7111f2b7ef5ca00d03352d4ddac08e8bb0ebc71bdbee30fe1a47a.jpg)

<div style="text-align: center;">Figure 9: Estimated translation states for mouse pole hand model. The Y axis motion is constrained to zero due to tabletop.</div>

<div style="text-align: center;">Figure 8: Joint angles for thumb and fourth finger of mouse pole hand model. Note the “button event” signaled by the thumb motion around frame 175.</div>

![Image](images/803fc70a29928914e21cbc9fbb72ec30f431b63bbf0cb52a94df829e4c8eae55.jpg)

![Image](images/2c6b3acbebfff651385c7bd591179a02b08f424e86baef9383b775fd236db445.jpg)

<div style="text-align: center;">Figure 10: Mouse pole states derived from the DigitEyes sensor during the motion sequence.</div>
