
# 用于实时手部追踪的鲁棒关节ICP算法

安德烈亚·塔利亚萨基（Andrea Tagliasacchi）$^{1*}$、马蒂亚斯·施罗德（Matthias Schröder）$^{2*}$、阿纳斯塔西娅·特卡奇（Anastasia Tkach）$^{1}$、索菲恩·布阿齐兹（Sofien Bouaziz）$^{1}$、马里奥·博奇（Mario Botsch）$^{2}$、马克·保利（Mark Pauly）$^{1}$。

$^{1}$洛桑联邦理工学院（EPFL）$^{2}$比勒费尔德大学（*贡献者地位平等）

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

## 摘要

我们提出了一种利用单台深度相机实时捕捉关节手部运动的鲁棒方法。该系统基于实时配准流程，通过将3D关节手部模型与深度图像匹配来精确重建手部姿态。我们利用深度、轮廓和时间信息对手部模型进行配准。为了将低质量的深度图有效映射到逼真的手部姿态，我们通过运动学和时间先验以及从逼真手部姿态数据库中提取的数据驱动先验来对配准过程进行约束。我们提出了一种将这些先验整合到配准优化中的合理方式，从而在不过度限制运动自由度的前提下实现鲁棒的追踪。我们的核心技术成果是一种用于计算追踪对应关系的新型方法，该方法能够直接建模单相机场景下常见的遮挡现象。为了确保研究结果的可复现性并为后续研究提供便利，我们完全公开了该实现的源代码。

### 1. 引言

追踪并动画化运动中的人体是计算机图形学和计算机视觉领域的一个基础性问题。其中尤为关键的是如何精确重建人体手部的形状和关节结构。手部运动是非语言交流的重要组成部分，在类人虚拟角色的动画制作中发挥着重要作用，同时也是众多人机交互界面的核心要素。近期已经出现了精确的实时人体追踪[SFC $^{*}$11, WZC12]和面部追踪[CHZ14]系统。手部追踪如今在研究界正受到越来越多的关注，被视为实现桌面环境下在线人类通信完整系统的下一个自然步骤[OKA11a, MKO13, SRS $^{*}$14, SMRB14, TSLP14]。虚拟环境交互系统领域的近期产业趋势推动了RGBD数据处理软件包的开发，比如英特尔RealSense SDK这类闭源软件，或是Leap Motion和Nimble传感器这类专用硬件。

在本文中，我们介绍了一种适用于个人桌面环境的实时手部追踪系统。我们采用的非侵入式方案仅使用一台普通的RGBD传感器，无需用户佩戴手套或标记物。这种单相机采集方式的优势尤为明显：成本低廉、无需进行传感器校准，且不会妨碍用户的动作。

利用非侵入式传感设备实现实时的精确手部追踪是一项极具挑战性的科学难题。人类手部具有高度的关节复杂性，因此需要具备足够多自由度的模型才能对其进行恰当描述。

---

![Image](images/c7e2ca35ddba74dc8eb82b05d61cc95e36d832b669b6f3e90ff9d827ffde3f24.jpg)

<div style="text-align: center;">Figure 1: The two different sensors used in our experiments provide data with substantially different characteristics. Top: Intel's Creative Interactive Gesture camera (time of flight) provides a complete silhouette image  $S_{s}$, but low quality depth measurements, resulting in severe noise in the point cloud  $X_{s}$. Bottom: Point clouds acquired by the PrimeSense camera (structured light) are much smoother, but the silhouette image can contain significant gaps.</div>

对应的运动空间。手部运动通常速度较快，且会呈现出复杂的几何构型以及手指间的复杂接触模式。使用单摄像头RGBD设备时，由于自遮挡现象和较高的噪声水平，我们面临数据不完整的问题（见图1）。不过，这种硬件结构简单、部署方便，因此对于消费级应用而言最具前景，这一点从近期新款消费级传感器的迅速普及便可看出。为了应对有限的信息量，我们采用了一种关节模板模型作为形状补全和拓扑控制的几何先验。该模型不仅编码了几何信息，还可作为表示合理手部姿态和运动信息的域。通过分析带注释的姿态数据库所得到的这些统计信息会被直接嵌入到优化过程中，从而即便在复杂场景下也能实现具有大量自由度的精确跟踪。

研究成果。我们提出了一种基于单台普通RBGD输入传感器的实时手部跟踪完整系统。我们的核心技术成果包括：

- 一种新颖的关节配准算法，能够高效地将数据与正则化先验整合到统一的实时求解器中；详见第4节和附录F，

- 一种结合2D/3D的配准方法，用于将3D手部模型与获取的深度图及提取的轮廓图像对齐；详见4.1节。

- 一种计算数据-模型对应关系的全新方法，该方法考虑了遮挡因素，显著提升了跟踪的鲁棒性；详见4.1节，

- 一种全新的正则化策略，将统计姿态空间先验与运动学及时间先验相结合，既确保推断出的手部姿态合理，又能帮助算法从跟踪丢失的状态中恢复过来；详见4.2节。

- 揭示了广为人知的点对面配准能量与高斯-牛顿线性化之间的有趣关联；详见附录D。

![Image](images/c5b3e486d7cd6a3106144a775c5da9d42c4faa9c09f174d4f44e4885f45f36f9.jpg)

<div style="text-align: center;">Figure 2: A visualization of the template hand model with the number and location of degrees of freedom of our optimization. From left to right: The cylinder model used for tracking, the skeleton, the BVH skeleton exported to Maya to drive the rendering, the rendered hand model.</div>

本文的另一重要贡献是我们将源代码完全公开$^{\dagger}$。据我们所知，目前尚无其他可免费获取的同类实现，我们相信公布我们的代码不仅能确保研究结果的可重复性，还能推动该领域的后续研究。

值得注意的是，学界普遍认为[WZC12, ZSZ $^{*}$14, QSW $^{*}$14]，类似ICP的技术过于局部化且易陷入局部极小值，无法有效处理快速关节运动。我们的研究成果之一便是证明这种普遍认知需要重新考量。我们证实，遵循ICP思路的正则化几何配准方法能够取得卓越的性能。我们认为这将对该领域的未来研究产生重大影响，因为它能推动实时跟踪用配准技术的进一步发展，这与视觉领域常用的判别式[TSLP14]和PSO[QSW $^{*}$14]方法形成鲜明对比。

我们的正则化几何配准技术能够实现每秒高达120帧的鲁棒、高关节灵活度的手部跟踪。我们从定量和定性两个维度将本算法的性能与近期基于外观和基于模型的技术进行了比较（见第6节）。对比结果显示，与当前最先进的技术相比，本算法在准确性和鲁棒性方面均有显著提升。

### 2. 相关工作

我们讨论了与我们的方法相关的人手追踪领域中最具代表性的论文。关于利用深度传感器进行人体运动分析的更一般性综述，可参考[YZW $^{*}$13]的最新调研报告。追踪算法大致可分为两大类：基于外观的方法和基于模型的方法[EBN $^{*}$07]。基于外观的方法通过训练分类器或回归器，将图像特征映射到手部姿态。因此，虽然这些系统能够稳健地

---

![Image](images/7306d7bc1edde2f3ccbda8a0d304f8013bfe7696e5d86380fc78f36465c3b6b0.jpg)

<div style="text-align: center;">Figure 3: Overview of our algorithm. For each acquired frame we extract a 3D point cloud of the hand and the 2D distance transform of its silhouette. From these we compute point correspondences to align a cylinder model of the hand to best match the data. This registration is performed in an ICP-like optimization that incorporates a number of regularizing priors to ensure accurate and robust tracking.</div>

从单帧图像中确定手部姿态，但这类方法仅在仅需粗略姿态估计[WPP11]或能提取出高度区分性特征[WP09]的场景下才表现最佳。相反，基于模型的技术将追踪视为对齐优化问题，其目标函数通常用于衡量模型合成数据与传感器采集数据之间的差异。尽管基于模型的方法可能会出现追踪丢失现象[WZC12]，但可以通过引入正则化先验来在传感器数据不完整或受损时仍实现高质量的追踪[MKO13, SMRB14]。在本研究中，我们通过结合高效的二维和三维配准能量函数以及精心设计的先验，致力于提升基于模型方法的鲁棒性与精确度。

基于外观的手部追踪。过去几年间，人们开发了众多用于手部追踪的基于外观的方法。基于最近邻搜索[WP09, WPP11, RKEK13]、决策树[KKKA12, TYK13, TCTK14, KVK $^{*}$14]或卷积网络[TSLP14]的方法均已证明，基于外观的方法能够成功应用于实时手部追踪。这类方法的优势在于无需依赖时间连续性即可从单帧图像中推断出手部姿态，从而避免了漂移现象。然而，此类基于外观的方法与训练数据紧密相关，往往无法很好地泛化到此前未见过的手部姿态，即训练数据库中未包含的姿态。正因如此，大多数这类方法都假设仅存在孤立的单只手，以避免数据量爆炸，且其精确度通常不及基于模型的方法。

基于模型的手部追踪。手部动作捕捉的一种常用方法是采用基于标记的系统（如Vicon、OptiTrack）。随后可将三维手部模型拟合到被追踪的标记上，从而得到最终的手部姿态。研究表明，少量标记便足以通过逆向运动学技术重建三维手部姿态[HRMO12]。然而，由于标记常被遮挡，使用基于标记的系统获取的运动序列往往需要大量人工清理工作。为解决这一问题，[ZCX12]提出将基于标记的系统与RGBD数据相结合，以便在出现严重自遮挡的情况下仍能捕捉手部运动。近期，在多摄像头环境下已实现精确的基于模型的追踪[SOT13, SRS $^{*}$14]，多个视角有助于解决复杂的遮挡问题。多摄像头系统也已被成功用于建模精细的手-手及手-物体交互行为[OKA11b, BTG $^{*}$12, WMZ $^{*}$13]。上述所有方法均需复杂的采集设备和人工校准，因此不太适合我们本研究所针对的那种消费级应用场景。

粒子群优化（PSO）方法利用单个RGBD摄像头即可实现每秒15帧的交互式跟踪[OKA11a]。PSO技术也成功应用于双手间复杂交互的建模，不过跟踪速率降低到了每秒4帧[OKA12]。PSO是一种启发式优化算法，它并不使用所考虑优化问题的梯度信息，而是采用采样策略。正因如此，PSO方法的精确度和效率严重依赖于所使用的样本数量。Oikonomidis等人[OLA14]提出了一种更先进的采样策略，能够在不牺牲质量的前提下提升跟踪效率。不过，当接近最优解时，基于梯度的优化方法比PSO收敛更快且更精确，因此非常适合实时应用场景[QSW $^{*}$14]。

[MKO13]最近展示了基于梯度优化的出色实时性能，其跟踪速率达到了每秒60帧。在该方法中，优化过程被表述为凸刚体模拟，同时采用了多种重新初始化启发式策略以避免跟踪失败。与为了增强鲁棒性而采用重新初始化策略不同，[SMRB14]将优化问题限定在可能的手部姿态子空间中。虽然较少的优化变量数量确实能带来高效的计算过程，但跟踪精度可能会受到该子空间所限定的姿态复杂度不足的影响。

---

由于子空间导致的姿态复杂度降低，精度可能会受到限制。

在本文中，我们证明手部跟踪可以被表述为单一的基于梯度的优化问题，从而构建出运行速率高达每秒120帧的高效且精确实时跟踪系统。通过结合几何先验和数据驱动先验，我们在跟踪质量和鲁棒性方面取得了显著提升。

### 3. 概述

由于自遮挡、传感器数据质量低/密度差以及人手的高度灵活性，利用普通深度传感器实现鲁棒的手部跟踪极具挑战性。我们提出了一种正则化的类ICP关节优化算法来解决这些问题，该算法能够巧妙平衡数据拟合与合适的先验条件（见图3）。我们的数据拟合过程会同时进行2D-3D优化：3D对齐确保传感器测量的每个点都足够靠近被跟踪模型$\mathcal{M}$；同时，由于我们无法为手部被遮挡的部分创建此类约束，因此我们引入了2D配准机制，促使被跟踪模型位于传感器的可视外壳之内。精心挑选的一组先验条件会对解进行正则化，以确保恢复出的姿态是合理的。

采集设备。我们的系统处理来自单个RGBD摄像头的、每秒60帧的原始数据。图1展示了PrimeSense Carmine 1.09结构光传感器以及Creative Gesture Camera飞行时间传感器的相关数据。从原始数据中，我们的算法会提取出2D轮廓图像$S_s$和3D点云$\mathcal{X}_s$。这两种传感器存在不同类型的不完美之处：PrimeSense摄像头的深度测量精度显著更高，但在掠射角处经常会出现大量空洞，比如我们可以预期能看到食指的位置却出现了数据缺口；相比之下，Creative Gesture Camera能提供精确且无缺口的轮廓图像，但其深度测量噪声较大，因此生成的点云非常嘈杂。我们的算法专为处理这两类不完美情况而设计，具体方法是构建一种同时考虑轮廓和点云的优化模型，并根据传感器数据的质量来平衡二者的贡献。

跟踪模型。我们的算法会将模板手部模型与传感器数据进行匹配。与其他技术类似[OKA11a, SMRB14]，我们采用简单的（带球冠的）圆柱体模型作为几何模板；详见图2。我们针对26个自由度进行优化，其中6个用于全局旋转和平移，20个用于关节活动。如同[MKO13]中所述，通过指定全局缩放比例、手掌大小和手指长度，即可快速调整该模型以适应不同用户。在大多数场景下，只需对模型进行简单的均匀缩放即可。这种粗略的几何形状足以实现手部跟踪，因为市面上常见的RGBD传感器的信噪比在手指区域相对较低。

![Image](images/50e23fee5540597440f63896ca7da836b64ba94a0edcd7dfcafb6d16605c3062.jpg)

<div style="text-align: center;">Figure 4: We first identify the wristband mask by color segmentation, then compute the 3D orientation of the forearm as the PCA axis of points in its proximity. Offsetting a 3D sphere from the wristband center allows isolating the region of interest. The obtained silhouette image and sensor point clouds are shown on the right.</div>

对于市面上常见的RGBD传感器而言，手指区域的信号噪声比相对于手指尺寸来说较低。此外，最近点对应关系的计算能够以封闭形式并行完成，这对实时性能至关重要。虽然手掌区域或许能用其他几何形状更好地近似，但我们发现仅使用圆柱体基元在跟踪精度和效率方面表现良好。而且这样还能简化实现过程，因为模型中所有基元都可以使用相同的对应关系计算程序。尽管用于跟踪的模型几何形状较为简单，但我们的算法能计算出关节角度（包括刚性变换），这些角度以通用的BVH运动序列格式输出；如图2-d所示，这些角度可用于驱动高分辨率的骨骼化手部模型。

预处理。轮廓图像$S_s$无法直接从传感器获取，需要自行计算。这种标注可以通过提取传感器的彩色图像并进行肤色分割[OKA12,SMRB14]来获得，也可以直接利用深度图像，通过随机森林分类[TSLP14]得到。另一种方法是借助全身跟踪算法[SFC*11]，根据手腕位置来分割手部区域。在手势跟踪场景中，手部通常是离传感器最近的物体[QSW*14]，此时可以使用黑色腕带通过在深度图像中制造缺口来简化分割过程。与我们采用的方法类似，我们的系统中用户会佩戴彩色腕带。我们首先通过颜色分割确定场景中腕带的位置，然后获取腕带附近的3D点并计算主轴。随后，结合腕带质心使用该主轴来分割手部点云。如图4所示，手部点云中的任何深度像素都会被标记为属于轮廓图像$S_s$。

### 4. 优化

在本节中，我们将推导基于模型的优化方法的目标函数，并阐述

---

![Image](images/3c6efc8befd5ddebe8d047cdc8b8600a30d370f5da1f9a626c2cc5859049a2f0.jpg)

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">(c)</div>

<div style="text-align: center;">Figure 5: Illustration of correspondences computations. The circles represent cross-sections of the fingers, the small black dots are samples of the depth map. (a) A configuration that can be handled by standard closest point correspondences. (b) Closest point correspondences to the back of the cylinder model can cause the registration to fall into a local minimum. Note that simply pruning correspondences with back-pointing normals would not solve this issue, as no constraints would remain to pull the finger towards the data. (c) This problem is resolved by taking visibility into account, and computing closest points only to the portion  $\hat{M}$ of M facing the camera.</div>

我们做出这些设计选择的依据。设$\mathcal{F}$为传感器输入数据，包含3D点云$\mathcal{X}_s$和2D轮廓$\mathcal{S}_s$（见图1）。给定一个具有关节参数$\mathcal{M}$的3D手部模型$\boldsymbol{\theta} = \{\boldsymbol{\theta}_1, \boldsymbol{\theta}_2, \ldots, \boldsymbol{\theta}_{26}\}$，我们的目标是恢复用户手部的姿态$\boldsymbol{\theta}$，使其与传感器输入数据$\mathcal{F}$相匹配。为实现这一目标，我们需解决如下优化问题：

 $$ \operatorname*{m i n}_{\theta}\underbrace{E_{\mathrm{3D}}+E_{\mathrm{2D}}+E_{\mathrm{w r i s t}}}_{\mathrm{F i t t i n g~t e r m s}}+\underbrace{E_{\mathrm{p o s e}}+E_{\mathrm{k i n.}}+E_{\mathrm{t e m p o r a l}}}_{P r i o r~t e r m s}, $$

这些拟合项用于衡量手部参数 $\boldsymbol{\theta}$ 对数据帧 $\mathcal{F}$ 的拟合程度，同时结合先验项对求解过程进行正则化，以确保得到合理的手部姿态。为简化表示，我们省略了能量项的参数 $\boldsymbol{\theta}, \mathcal{X}_s, \mathcal{S}_s$。我们首先介绍这些拟合项，并给出计算跟踪对应关系的全新解法；随后讨论先验项，阐述其在提高跟踪精度与鲁棒性方面的优势。关于优化算法实现的具体细节，将在第5节及附录中详细说明。

#### 4.1. 拟合能量

点云对齐。项 $E_{3D}$ 按照ICP的思想对三维几何进行配准，其形式为：

 $$ E_{\mathrm{3D}}=\omega_{1}\sum_{\mathbf{x}\in\mathcal{X}_{s}}\|\mathbf{x}-\Pi_{\mathcal{M}}(\mathbf{x},\boldsymbol{\theta})\|_{2}, $$

其中 $\|\cdot\|_2$ 表示 $\ell_2$ 范数，$\mathbf{x}$ 代表 $\mathcal{X}_s$ 中的一个三维点，而 $\Pi_{\mathcal{M}}(\mathbf{x},\boldsymbol{\theta})$ 则是 $\mathbf{x}$ 在手模型 $\mathcal{M}$ 上、且手部姿态为 $\boldsymbol{\theta}$ 时的投影。注意，我们计算的是配准残差的绝对值之和，而非它们的平方。这相当于将残差堆叠成的向量进行混合 $\ell_2/\ell_1$ 范数运算。对于三维配准而言，这种能诱导稀疏性的范数已被证明对含有一定量离群点的噪声点云更具鲁棒性，比如Creative传感器生成的点云（见图1）。更多细节可参考[BTP13]。

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

<div style="text-align: center;">(a)</div>

![Image](images/916dd0a28cc5c6af6f2b0e6b7a75ccb2cb4fd361903a12484be338fe245a4e38.jpg)

![Image](images/f6e6810964da175143740041dcf068a40e8c91a391fa11d09fb3b84897cb8342.jpg)

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">(c)</div>

<div style="text-align: center;">Figure 6: Illustration of the impact of self-occlusion in correspondences computations. (a) The finger  $c_{2}$ initially occluded by finger  $c_{1}$ becomes visible, which causes new samples to appear. (b) Closest correspondences to the portion of the model visible from the camera do not generate any constraints that pull  $c_{2}$ toward its data samples. This is the approach in [WZC12], where these erroneous matches are then simply pruned. (c) Our method also considers front-facing portions of the model that are occluded, allowing the geometry to correctly register.</div>

这种范数对含有一定量离群点的噪声点云更具鲁棒性，比如Creative传感器生成的点云（见图1）。更多细节可参考[BTP13]。

三维对应关系：三维配准项涉及为每个传感器点$\mathbf{y} = \Pi_{\mathcal{M}}(\mathbf{x}, \boldsymbol{\theta})$计算其在圆柱体模型$\mathcal{M}$上的对应点$\mathbf{x} \in \mathcal{X}_s$。与常规的最近点搜索不同，我们将对应关系$\mathbf{y}$定义为模型正面$\tilde{\mathcal{M}}$上距离最近的点$\mathcal{M}$。这包括那些朝向相机但被其他部分遮挡的模型部分。我们的实验表明，这一看似简单的扩展对于获得高质量的跟踪结果至关重要。仅考虑从传感器视角可见的模型点——即与渲染出的模型相匹配的点——并不足以应对遮挡现象或传感器数据时隐时现的情况；详见图5和图6。

为了计算 $\mathbf{y}$，我们首先算出 $\mathbf{x}_C$ 到每个圆柱体 $\mathbf{x}$ 的最近点 $C \in \mathcal{M}$。需注意的是，我们的手模型由带球冠的圆柱体构成，因此这些最近点可以

![Image](images/9b396cbaa33cf0e6d9ac981898837e0cab0b11959e50f49ef153e7bd7d15f65b.jpg)

<div style="text-align: center;">Figure 7: Correspondence computations. The top row shows the strategy used in [QSW $^{*}$ 14] adapted to our gradient-based framework according to the formulation given in [WZC12]. The bottom row shows the improved accuracy of our new approach.</div>

---

![Image](images/6ee3125b7f34d5dff9247406ccb121d585c3e6f6264701ac0a383fe5f089688c.jpg)

<div style="text-align: center;">Figure 8: Our 2D silhouette registration energy is essential to avoid tracking errors for occluded parts of the hand. When no depth data is available for certain parts of the model, a plausible pose is inferred by ensuring that the model is contained within the sensor silhouette image  $S_{s}$.</div>

通过闭式解法高效算出，且可针对每个 $\mathbf{x} \in \mathcal{X}_s$ 并行处理。接着，我们利用圆柱体表面法线 $\mathbf{n}$ 在 $\mathbf{x}_c$ 处的值与视线矢量 $\mathbf{v}$ 的点积来识别背面点。出于效率考虑，我们采用了简化的正交相机模型，此时视线是恒定的，即 $\mathbf{v} = [0 \; 0 \; 1]^T$。若圆柱体上的某点为背面点（$\mathbf{n}^T \mathbf{v} > 0$），我们就将 $\mathbf{x}$ 投影到从摄像头视角看去的圆柱体轮廓线上，该轮廓线的法线与 $\mathbf{v}$ 正交。

[QSW $^{*}$ 14]中提出了一种解决可见性问题的不同策略。这些方法提出了一种能量项，用于惩罚模型中位于数据前方区域的部分，随后通过粒子群算法对该能量项进行优化。根据[WZC12, Eq. 15]中的公式，这种能量项可以被整合到我们的优化过程中。不过，如图7所示，此类能量项容易在基于梯度的优化中产生局部极小值。在此例中，拇指难以进入手掌区域，因为它必须先遮挡手掌样本才能达到目标姿态。我们的对应点搜索机制则能避免这类问题。此外，请注意[QSW $^{*}$ 14]采用的是假设-检验范式，其中以光线投射形式存在的可见性约束很容易纳入考虑。正如[GPKT12]中所讨论的，这类约束在我们采用的迭代优化技术中很难被纳入。不过，我们的正面对应点计算方法为应对此类缺陷提供了一种简单而优雅的方式。

轮廓对齐。3D对齐能量$E_{3D}$能够可靠地测量3D点云$\mathcal{X}_s$中每个点与所跟踪模型$\mathcal{M}$之间的距离。然而，由于手部关节活动度极高，在跟踪过程中常常会出现严重的自遮挡现象。这类自遮挡问题颇具挑战性，因为仅使用3D对齐能量时，被遮挡的部分将不受约束。因此，我们采用了2D轮廓项$E_{2D}$，用于建模我们所渲染的手部模型的2D轮廓与从传感器数据中提取的2D轮廓之间的对齐关系。

![Image](images/91c05fcf166d6beb7e3a70e4a68b4b1541cca67465d47e087fc544f9f274fdfc.jpg)

<div style="text-align: center;">Figure 9: An illustration of the PCA pose-space used to regularize the optimization. Black dots denote the samples of the data base. High likelihood poses are located nearby the mean of the latent space (dark red). The eigenvalues of the PCA define the metric in the low-dimensional space, skewing it in certain directions. Poses that, according to this metric, are far from the mean are likely to be unnatural and will be penalized in the optimization.</div>

从传感器数据中提取的轮廓如下：

 $$ \begin{array}{r l}&{E_{2\mathrm{D}}=\omega_{2}\displaystyle\sum_{{\mathbf{p}}\in\mathcal{S}_{r}}\|\mathbf{p}-\Pi_{\mathcal{S}_{s}}(\mathbf{p},\pmb{\theta})\|_{2}^{2},}\end{array} $$

其中$\mathbf{p}$是渲染轮廓中的2D点$S_r$，而$\Pi_{S_r}(\mathbf{p}, \theta)$表示$\mathbf{p}$投影到传感器轮廓$S_s$上的位置。图8说明了为何轮廓项对于避免模型部分被遮挡时出现错误姿态至关重要。如果没有轮廓能量，被遮挡的手指可能会错误地移动到错误位置，因为它们不受深度图中任何样本的约束。

2D对应点。在方程3中，我们首先从传感器的视角渲染手部模型$S_r$，将每个像素对应的骨骼标识符和3D位置缓存到纹理中，从而计算出轮廓图像$\mathcal{M}$。利用$\Pi_{S_s}(\mathbf{p}, \theta)$的2D距离变换，可以高效评估投影函数$S_s$，进而找到与传感器轮廓最接近的对应点。我们采用了[FH12]提出的线性时间算法，并在每个像素处存储最近对应点的索引。

手腕对齐。已有研究表明，在手部跟踪中加入前臂信息是有益的[MKO13]。我们的手腕对齐能量在优化过程中采用了一种更为简化的前臂模型，强制要求腕关节沿其轴线分布。

 $$ \begin{array}{r}{E_{\mathrm{w r i s t}}=\omega_{3}\|\Pi_{2\mathrm{D}}(\mathbf{k}_{0}(\boldsymbol{\theta}))-\Pi_{\ell}(\mathbf{k}_{0}(\boldsymbol{\theta}))\|_{2}^{2},}\end{array} $$

最小化这一能量有助于防止手部在跟踪过程中发生错误的旋转或翻转；在附带的视频中04:03处便可观察到这种现象。此处$k_0$是腕关节的3D位置，$\ell$是通过PCA从与腕带相关的3D点中提取出的2D线条；详见图4。需要注意的是，$\Pi_{2D}$会使残差在屏幕空间中最小化，因此该能量的优化过程与方程3中的优化类似。我们

---

![Image](images/fb2ef68c2714a21b474eb227363795aa192b44b3dba48110ed187c0653b1aea4.jpg)

<div style="text-align: center;">Figure 10: An illustration of the energies involved in our pose-space prior. For illustration purposes the full dimensional parameter vector  $\pmb{\theta} \in \mathbb{R}^3$, while latent space variable  $\pmb{\theta} \in \mathbb{R}^2$. The PCA optimization in [SMRB14] constrains the pose parameters  $\pmb{\theta}$ to lie on the subspace  $\mathcal{P}$. Conversely, we penalize the distance of our pose from  $\mathcal{P}$ (Equation 5); simultaneously, we ensure our pose remains likely by preventing it from diverging from the mean of the distribution (Equation 6).</div>

在屏幕空间中进行优化，因为受遮挡影响，我们只能看到手腕的一半，这会导致其轴线向摄像头方向偏移。

#### 4.2. 先验能量

仅仅最小化拟合能量很容易导致不现实或不太可能的手部姿态，这是因为输入数据中存在着噪声、遮挡或运动模糊等缺陷。因此，我们通过数据驱动、运动学和时间先验来对配准过程进行正则化，以确保恢复出的手部姿态是合理的。

![Image](images/4b2d2d51cb40275b5e12200ed37e2be122cadd450d0545f1b7f33345ef374ef7.jpg)

<div style="text-align: center;">Figure 11: Beyond favoring natural poses, the data prior term also positively affects convergence speed. Top: With the same number of iterations, only with activated data term does the model fully register to the scan. The illustration below shows how the same final state requires significantly fewer iterations with the data term.</div>

![Image](images/9493565ba0e89e2869391594fac410a56b0966907a93944bd907d0f93ad524ed.jpg)

<div style="text-align: center;">Figure 12: Our pose-space regularization using a PCA prior ensures that a meaningful pose is recovered even when significant holes occur in the input data.</div>

这些恢复出的姿态是合理的。正如我们下文所展示的，每一项都在跟踪算法的稳定性中发挥着重要作用。

姿态空间先验（数据驱动）。人类手部复杂的、高度耦合的运动方式很难直接通过几何或物理约束来建模。相反，我们利用一个公开可用的手部姿态记录数据库[SMRB14]来创建一种数据驱动的先验$E_{pose}$，用以描述这种耦合关系。我们通过PCA进行降维处理，从而构建出一组合理的姿态所在的低维子空间（见图9）。我们利用一个数据项$\theta$来强制手部参数$E_{pose} = E_{projection} + E_{mean}$靠近这个低维线性子空间。为了定义该数据项，我们引入了辅助变量$\hat{\theta}$，也就是PCA权重，它代表了手部姿态$\theta$在该子空间上的投影（该投影不一定是正交的）；详见图10。投影能量用于衡量手部参数与线性子空间之间的距离：

 $$ \begin{array}{r}{E_{\mathrm{p r o j e c t i o n}}=\omega_{4}\|(\boldsymbol{\theta}-\boldsymbol{\mu})-\boldsymbol{\Pi}_{\mathcal{P}}\tilde{\boldsymbol{\theta}}\|_{2}^{2},}\end{array} $$

其中$\mu$为PCA均值。矩阵$\Pi_{\mathcal{P}}$即PCA基向量，它负责从低维空间重建手部姿态。为了避免子空间中出现不现实的手部姿态，我们使用如下能量对PCA权重$\tilde{\theta}$进行正则化：

 $$ \begin{array}{r}{E_{\mathrm{m e a n}}=\omega_{5}||\mathbf{\Sigma}\tilde{\theta}||_{2}^{2}.}\end{array} $$

$\Sigma$是一个对角矩阵，其元素为PCA基向量标准差的倒数。我们的跟踪优化过程经过修改，引入了辅助变量$\hat{\theta}$来考虑姿态空间，随后对$\theta$和$\hat{\theta}$进行联合最小化。关于我们的方法与直线在子空间中优化的区别，将在附录A中进一步讨论。请注意，公式6中的正则化能量有助于跟踪系统从跟踪失败中恢复过来。当模型上未施加传感器约束时，优化过程会试图将姿态推向均值——这是一个统计上更可能出现的姿态，在此基础上的跟踪恢复效果极佳。

图12展示了PCA数据先验如何通过避免不现实的姿态来改善跟踪效果，尤其是在输入数据不完整时。我们发现，即便数据覆盖范围足以恢复正确的姿态，数据项仍能改善优化的收敛性，如图11所示。图13则展示了我们所采用的正则化投影PCA公式——

---

![Image](images/782c2231e5d192ba81b1bb733d13ea0e0f277e1087991662d1375add468db7dd.jpg)

<div style="text-align: center;">Figure 13: Optimizing directly in the PCA subspace [SMRB14] can lead to inferior registration accuracy. We replicate this behavior by setting  $\omega_4$ in Equation 5 to a large value. Even when increasing the number of PCA bases to cover 99% of the variance in the database, the model remains too stiff to conform well to the input. Our approach is able to recover the correct hand pose by optimizing for projection distances even with a very limited number of bases (right).</div>

相较于以往研究中提出的直接子空间优化方法，具有更优的性能。

运动学先验。PCA数据项是一种计算效率较高的、用于近似合理手部姿态空间的方法。然而，仅靠PCA模型并不能保证恢复出的姿态是现实的。尤其是由于PCA是以均值为中心对称的，因此手指向后弯曲超出物理上合理的关节角度限制时，并不会被数据先验所惩罚。同样，PCA模型也不足以避免手指之间的相互穿插。运动学先验$E_{\text{kinematic}} = E_{\text{collision}} + E_{\text{bounds}}$正是为了解决这两个问题而提出的。在简化为一圆柱体模型的假设下，我们可以定义一个能量$E_{\text{collision}}$，用于描述每对（带球冠的）圆柱体之间的相互穿透情况：

 $$ \begin{array}{r}{E_{\mathrm{c o l l i s i o n}}=\omega_{6}\displaystyle\sum_{\{i,j\}}\chi(i,j)(d(\mathbf{c}_{i},\mathbf{c}_{j})-r)^{2},}\end{array} $$

其中，函数$d(\cdot,\cdot)$用于计算两个圆柱轴线$\mathbf{c}_i$和$\mathbf{c}_j$之间的欧几里得距离，r则是两个圆柱半径之和。$\chi(i,j)$是一个指示函数：如果圆柱体i和j发生碰撞，其值为1；否则为0。图14的上排展示了该项如何防止手指间的相互穿透。

为防止手部因关节过度弯曲而呈现不可能的姿态，我们对手部模型的关节角度加以限制：

 $$ \begin{array}{r}{E_{\mathrm{b o u n d s}}=\omega_{7}\displaystyle\sum_{\theta_{i}\in\pmb{\theta}}\underline{{\chi}}(i)(\theta_{i}-\underline{{\theta}}_{i})^{2}+\overline{{\chi}}(i)(\theta_{i}-\overline{{\theta}}_{i})^{2},}\end{array} $$

每个手部关节都对应着保守的边界值$[\underline{\theta}_i, \overline{\theta}_i]$。这些边界值是根据[CD95]的实验结果确定的。$\underline{\chi}(i)$和$\overline{\chi}(i)$均为指示函数：若满足$\underline{\chi}(i)$的条件，则$\underline{\theta}_i < \underline{\theta}_i$的值为1，否则为0。而$\overline{\chi}(i)$则

![Image](images/a7fdeb88268081fdb9d883a2affeddf1f07f3776dc7ab8baf82235659ad7f9f3.jpg)

<div style="text-align: center;">Figure 14: Kinematic priors augment the data prior to account for inconsistencies in the pose space. The collision term avoids self-collisions (top row), while the term for joint angle bounds avoids overbending of the finger joints.</div>

当满足$\theta_i > \overline{\theta}_i$的条件时其值为1，否则为0。图14的下排展示了关节角度边界所产生的效果。

时间先验。基于外观的方法常会遇到小尺度的时间振荡问题，这会导致被跟踪的手部出现抖动现象。实现时间平滑性的常用方法是惩罚模型参数$\theta$随时间的变化，例如通过惩罚与速度$\|\hat{\theta}\|^2$及加速度$\|\hat{\theta}\|^2$相关的二次能量项[WZC12]。然而，若施加相同幅度的扰动，其在根部（如全局旋转）产生的影响要比在运动链中更靠后的部位（如手指的末节指骨）大得多。因此，我们提出了一种解决方案：测量附着在运动链上的一组点的速度和加速度。

![Image](images/b3fcd8ef5029d833bb884d275006e9a866af029f6643d57cca1590c995ab7505.jpg)

![Image](images/acd7c2cd36febcd11b14f40df7fb827c5d6ed3bda8af6e83646cc5032eb239d2.jpg)

<div style="text-align: center;">Figure 15: The effect of the temporal prior. The graph shows the trajectory of the y-coordinate of the fingertip over time as the index finger is bend up and down repeatedly. The temporal prior reduces jitter, but also helps avoiding tracking artifacts that arise when fragments of data pop in and out of view.</div>

---

![Image](images/218448e2203a6344300eceb16fadc261c8ccb155c35e4fb41cba79e52c8578fe.jpg)

<div style="text-align: center;">Figure 16: During fast motion, optimizing directly for a fully articulated hand can lead to incorrect correspondences and cause loss of tracking (middle row). By compensating for the rigid motion ahead of solving for joint angles, our system can better capture fast movements (bottom row).</div>

我们考察运动链中顶点k的运动情况$\mathcal{K}$（见图2），并构建一个用于惩罚这些点速度和加速度的能量项：

 $$ \begin{array}{r l}&{E_{\mathrm{t e m p o r a l}}=\omega_{8}\displaystyle\sum_{\mathbf{k}_{i}\in\mathcal{K}}\|\mathbf{\dot{k}}(\theta)\|_{2}^{2}+\omega_{9}\displaystyle\sum_{\mathbf{k}_{i}\in\mathcal{K}}\|\mathbf{\ddot{k}}(\theta)\|_{2}^{2}.}\end{array} $$

图15展示了时间先验如何减少抖动并提升跟踪的整体鲁棒性；相关视频也可供参考。

### 5. 实现细节

本节我们将详细介绍优化算法的实现过程。所需梯度和雅可比矩阵的推导过程详见附录。

优化过程。方程1中所描述的跟踪能量针对姿态$\theta$的优化，是通过勒文伯格-马夸特算法求解非线性最小二乘问题来实现的。我们假设已知$\theta$的当前估计值，并以此为基础计算更新量。具体而言，由于传感设备的采集速度很快，我们可以将上一帧中优化得到的参数作为初始估计值。随后，我们通过泰勒展开迭代近似能量项，并求解线性系统以得到每轮迭代的更新量$\delta\theta$（详见附录）。由于该算法的跟踪速率可达60帧/秒，先前重建的姿态质量足够高，因此仅需七次迭代即可收敛。

初始化。当用户进入场景时，我们的方法会借助[QSW $^{*}$14]提出的指尖检测与拟合技术进行初始化。其他基于外观的方法也可用于初始化[TSLP14]。一旦检测到严重的跟踪失败，我们还会采用[WZC12]的方法重新初始化跟踪过程。这种重新初始化的情况很少发生（例如在图21序列中，占比不到0.5%）。

刚性偏差。为了在快速运动情况下提升求解器的收敛性，我们首先执行公式1中的优化。

![Image](images/334d2d16e83cc3c0af2d2bc76cda76bf47cb23385e34ab39ef8831e66c4595d4.jpg)

<div style="text-align: center;">Figure 17: We quantitatively evaluate our algorithm on the Dexter-1 dataset from [SOT13]. The measurements report the root mean square errors of fingertip placements. The acquisition setup consists of several calibrated video cameras and a single depth camera. For our results and the method of [TCTK14], only the depth image is used for tracking, while the algorithms of Sridhar and colleagues also use the video streams. The blue, green, and purple bars are reproduced from [SRS $^{*}$14]. For our algorithm we report results without (red) and with (orange) reinitialization.</div>

仅针对刚体运动，通过优化运动链的根节点来实现。如图16所示，在进行完整姿态估计之前先优化刚体运动，能够显著提升跟踪的鲁棒性。

参数。在我们的实验结果中，将参数固定为$\omega_1 = \omega_2 = \omega_5 = 1$、$\omega_4 = 10^3$、$\omega_3 = \omega_6 = \omega_7 = 10^8$、$\omega_8 = \omega_9 = 3$。我们通过使用不同参数集重新跟踪多个序列，凭经验确定了这些权重。我们的系统在配备Intel Core i7 4GHz处理器和NVIDIA GTX980 GPU、运行Ubuntu 12.02系统的设备上进行了测试。为了在PrimeSense Carmine 1.09或Creative Gesture Camera这类60Hz的RGBD设备上运行，我们执行1次刚体迭代和7次完整迭代，每次迭代耗时1.5毫秒。我们在GPU上执行闭式最近点对应计算以及用于拟合能量的雅可比矩阵计算。迭代次数可以轻松调整，以便在新的Intel RealSense 3D摄像头（F200）上以120Hz速率运行，或在未来设备上实现更高的帧率。

### 6. 评估

要最佳地领略我们方法的实时跟踪性能，请观看视频。在此，我们通过与几种最先进的解决方案进行比较来分析其性能。

Dexter-1数据集[SRS*14]。图17展示了在25Hz下采集的公共数据集上，我们方法与几种现有方法的定量比较结果。如图表所示，我们的解决方案明显优于[TCTK14]提出的方法，后者采用基于外观的方法，利用回归森林分类器来估计手部姿态。我们也显著改进了……

---

![Image](images/3f533d4880fe3d6e8787a610684e5a2f30d771658c8e447f8adac934a0c2d653.jpg)

Schroder [SMRB14]

<div style="text-align: center;">Figure 18: A few comparison frames illustrating the difference in performance of our method compared to [SMRB14] (results provided by the authors of that paper). From left to right we can observe problems related to: correspondences to the back of the model, lack of silhouette energy (3 times) and loss of tracking due to fast motion.</div>

以及[SOT13, SRS $^{*}$14]提出的基于梯度的优化方法。除了深度信息外，这些方法还使用了来自五台额外摄像头的RGB数据。由于该数据集是在25Hz下采集的，因此我们的算法性能（红色曲线）并非最优。具体而言，在单帧中手指偶尔会偏移其半径的2到3倍，从而破坏ICP对应关系。如图中所示，通过像[QSW $^{*}$14]那样借助手指检测进行重新初始化后，我们的性能得到了显著提升。

子空间ICP[SMRB14]。图18展示了与我们方法与该文献[SMRB14]提出的基于模型的方法之间的比较结果。记录的序列由作者直接处理，并用于构建我们的圆柱体模型以便比较。如图所示，我们的方法明显优于以往的研究。关键区别在于，他们直接在PCA子空间中优化，这往往会过度约束解，而我们引入PCA数据项作为正则化项，从而保留了跟踪模型的全部表现力。此外，我们引入了碰撞处理机制，采用鲁棒范数进行自动异常值检测，并采用了更先进的、能处理自遮挡问题的对应关系搜索算法。这些因素共同作用，在不牺牲计算效率的前提下，显著提升了跟踪的准确性和鲁棒性。

凸体求解器[MK013]。我们通过使用Intel Perceptual Computing SDK中的预编译二进制文件来与该算法进行比较。我们修改了演示应用程序，使其在跟踪过程中将记录的深度/彩色帧保存到磁盘。随后，我们使用自己的技术从头开始重新跟踪这些数据。正如视频以及图19所展示的那样，

![Image](images/465fa595da6a4d9582d24907acff7824c9303032d5590a51cc82c84287d6ee3e.jpg)

Melax [MKO13]

<div style="text-align: center;">Frame 448 Frame 1151 Frame 1595 Frame 1615 Frame 1756</div>

<div style="text-align: center;">Figure 19: Comparison to the method of [MKO13]. The full sequence can be seen in the accompanying video. We highlight a few frames that are not resolved correctly by this method, but that can be handled successfully with our solution. The last frame shows the better geometric approximation quality of the convex body model used in [MKO13] compared to our simpler cylinder model.</div>

与[MKO13]相比，我们的方法显著提升了跟踪的鲁棒性。这种提升可归因于我们所提出的各项改进，但由于缺乏对其跟踪参数的控制以及源代码，很难定量确定具体原因。他们的方法会计算整个模型的最近对应关系，因此并未显式处理遮挡问题。作者们还提出了一种确保模型完全包含在数据3D凸包内的技术。需要注意的是，在相机空间中，这相当于与我们2D配准（公式3）所施加的约束类似，只不过距离变换是基于轮廓图像的2D凸包来计算的。图19（第448帧）展示了我们的2D配准如何更好地约束可行解。在[MKO13]中，手指间的相关性被手动设为抓取偏差，而我们的优化方法以数据驱动，能以更合理的方式编码这种相关性。如图19及视频所示，该方法在复杂运动过程中时常会出现跟踪丢失的情况。不过，有时它也能通过采样并评估一组简化后的姿态集来恢复跟踪。

![Image](images/eb8de7c156b8ef78d7c269b625d1506dd2715856ad212d660d8ea23af3509e19.jpg)

<div style="text-align: center;">Figure 20: Developing robust model-based tracking is essential to enable tracking of hands interacting with each other or with other objects in the environment. Here we illustrate that for our method tracking accuracy is not significantly affected even though we are not modeling the second hand. Note that such motion cannot be tracked successfully by appearance-based methods such as [TSLP14].</div>

---

![Image](images/0edf4327f0bf7f4c37610d04068e6fb486095705db05f9b18f3b095ad9005396.jpg)

<div style="text-align: center;">Figure 21: Quantitative comparison to [TSLP14]. The graph shows the average root mean square tracking error w.r.t. ground truth across 2440 frames. Some frames where the accuracy of the two methods differs significantly are highlighted in the bottom row.</div>

这种方法与[OKA11a]的思路相似。他们方法的一个优势在于，其凸体手部模型的几何保真度比我们的圆柱体模型更高。此外，我们的评估结果表明，他们对手部鱼际隆起以及拇指关节的更精确建模，能使这些区域的贴合效果更自然。

卷积神经网络[TSLP14]。图21展示了在该论文作者提供的数据集上，我们的方法与基于外观的[TSLP14]方法之间的定量比较结果。总体而言，两者的跟踪质量相当，我们的方法平均误差略低。不过，我们的解决方案避免了[TSLP14]方法中出现的许多跟踪完全丢失的高误差峰值。与现有的任何基于外观的方法相比，我们方法的另一个优势在于能够处理两只手更复杂的交互情况，因为此类场景并不属于现有方法的训练数据集；详见图20。

局限性。单摄像头深度采集会产生不完整的数据，因此姿态重建问题本质上属于不适定问题。如上所述，在因遮挡或快速运动导致数据采集不足的情况下，可能会出现跟踪误差。同样，传感器的分辨率也会限制跟踪精度。如图22所示，当几何特征变得难以区分时，我们的配准方法便会失效。整合颜色和阴影信息或许能解决这一问题[dLGFP11]。虽然当前系统要求用户佩戴腕带以实现检测与稳定，但这一要求可通过自动手部标注来替代，例如采用[TSLP14]中使用的随机森林分类器。

对于当前民用传感器的数据质量而言，我们的圆柱体模型已足够适用，但其几何精度总体有限，因此可能无法适应更高分辨率的传感器。此外，在当前实现中，需通过简单的缩放操作手动根据用户调整模型。若无此类调整，如图23所示，跟踪精度会下降。这种针对用户的适配过程可实现自动化[TSR] $^{14}$，甚至有望像近期用于面部跟踪的方案那样[BWP13]，与实时跟踪同步进行。

先前能量函数中使用的PCA模型虽高效，但对姿态空间的表征较为简单。目前我们尚未考虑手部动作的时间顺序。

![Image](images/f2e00dfef710f11ad5ccb763385062868bb38d6bb10c0d2f495fce37a5299f6a.jpg)

<div style="text-align: center;">Figure 22: Our algorithm relies on the presence of salient geometric features in the depth map. Challenging sequences like a rotating fist lack such features when acquired with current commodity depth sensors, which can result in loss of tracking.</div>

![Image](images/9f3c2974e6fedfade09730c9e9df4846412ebcfbb6e78a044c94204a30bb5326.jpg)

<div style="text-align: center;">Figure 23: When tracking with an uncalibrated model, tracking correspondences can map to data belonging to erroneous portions of the model. In the figure, the index finger remains attached to samples associated with the thumb.</div>

---

数据库的姿势信息已被获取，这些信息有可能被利用来构建更复杂的时间先验。

### 7. 结论

我们提出了一种基于模型的新方法，利用单个低成本深度相机实现实时手部追踪。这种简单的采集设置极大地方便了部署，但给稳健的追踪带来了重大挑战。我们的分析发现，追踪关节手部时的主要误差来源是手部模型与采集数据之间的错误对应，这类错误主要由异常值、空洞或采集过程中数据的忽隐忽现所导致。我们证明，通过我们新提出的对应搜索公式可以解决这些问题。结合合适的2D/3D配准能量和数据驱动的先验，就能得到一种稳健且高效的手部追踪算法，其性能优于现有的基于模型和基于外观的解决方案。

实验表明，我们的系统能够无缝运行于帧率为60 Hz的传感器。不过，考虑到近期已发布的未来传感器，我们甚至能支持高达120 fps的帧率。通过完全公开源代码和数据，我们确保了方法和结果的可重复性，同时也为未来的研究和产品开发提供了便利。

我们正在研究一种高效的技术，可将追踪模型自动个性化以适应特定用户，从而让不同用户能更顺畅地使用我们的系统。未来的其他研究方向还包括具备物体交互功能的稳健双手追踪、手部追踪与全身追踪的结合，以及将我们的手部追踪解决方案集成到新界面和实时应用中。

## 致谢

作者感谢S. Sridhar、S. Melax和J. Tompson的有益讨论。本研究得到了瑞士国家科学基金会授予的200021-153567号资助。本研究的部分工作还得到了德国研究基金会（DFG）资助的“认知交互技术”卓越集群（EXC 277）的支持。

## 参考文献

[BDS $^{*}$12] BOUAZIZ S., DEUSS M., SCHWARTZBURG Y., WEISE T., PAULY M.：Shape-up：利用投影塑造离散几何形状。《计算机图形学论坛》（几何处理研讨会论文集）（2012年）。14

[BTG $^{*}$12] BALLAN L., TANEJA A., GALL J., VAN GOOL L., POLLEFEYS M.：利用判别性显著点捕捉动作中的手部运动。欧洲计算机视觉会议论文集（2012年），IEEE。3

[BTP13] BOUAZIZ S., TAGLIASACCHI A., PAULY M.：稀疏迭代最近点算法。《计算机图形学论坛》（几何处理研讨会论文集）（2013年）。5, 14

[BTP14] BOUAZIZ S., TAGLIASACCHI A., PAULY M.：动态2D/3D配准。Eurographics教程（2014年）。13

[Bus04] BUSS S. R.：雅可比转置法、伪逆法和阻尼最小二乘法在逆向运动学中的应用简介。《IEEE机器人与自动化杂志》（2004年）。13

[BWP13] BOUAZIZ S., WANG Y., PAULY M.：用于实时面部动画的在线建模。《ACM图形学汇刊》（SIGGRAPH会议论文集）（2013年）。11

[CD95] CHAN T. F., DUBEY R. V.：一种基于加权最小范数解的方案，用于避免冗余关节机械臂的关节极限问题。《IEEE机器人与自动化交易》（1995年）。8

[CHZ14] 曹C.、侯Q.、周K.：用于实时面部跟踪与动画的位移动态表达式回归。ACM Trans. Graph.（SIGGRAPH会议论文集）（2014年）。1

[dLGFP11] 德拉戈斯M.、弗利特D. J.、帕拉吉奥斯N.：基于模型的单目视频3D手部姿态估计。模式分析与机器智能（2011年）。11

[EBN*07] 埃罗尔A.、贝比斯G.、尼科莱斯库M.、博伊尔R. D.、特沃姆布利X.：基于视觉的手部姿态估计综述。计算机视觉与图像理解（2007年）。2

[FH12] 费尔岑斯瓦尔布P. F.、胡滕洛赫D. P.：采样函数的距离变换。计算理论（2012年）。6

[GPKT12] 加纳帕蒂V.、普拉格曼C.、科勒D.、特龙S.：基于深度数据的实时人体姿态跟踪。欧洲计算机视觉会议论文集（2012年），施普林格出版社，第738–751页。6

[HRMO12] 霍耶特L.、赖尔K.、麦克唐奈R.、奥沙利文C.：巧手之技：从少量标记点集感知手指运动。交互式3D图形与游戏研讨会论文集（2012年）。3

[KKKA12] 凯斯金C.、基拉奇F.、卡拉Y. E.、阿卡伦L.：利用多层随机决策森林进行手部姿态估计与手部形状分类。欧洲计算机视觉会议论文集（2012年），IEEE。3

[KVK $^{*}$14] 克鲁普卡E.、维尼科夫A.、克莱因B.、希勒尔A. B.、弗里德曼D.、斯塔赫尼亚克S.：用于手部姿态识别的判别性蕨类集成模型。计算机视觉与模式识别会议（2014年），IEEE。3

[MKO13] 梅拉克斯S.、凯塞尔曼L.、奥尔斯坦S.：基于动力学的3D骨骼手部跟踪。ACM SIGGRAPH交互式3D图形与游戏研讨会论文集（2013年）。1, 3, 4, 6, 10

[OKA11a] 奥伊科诺米迪斯I.、基里亚齐斯N.、阿尔吉罗斯A. A.：利用Kinect进行高效的基于模型的3D手部关节跟踪。英国机器视觉会议论文集（2011年），BMVA。1, 3, 4, 11

[OKA11b] 奥伊科诺米迪斯I.、基里亚齐斯N.、阿尔吉罗斯A. A.：通过建模遮挡与物理约束，实现对与物体交互的手部的全自由度跟踪。国际计算机视觉会议论文集（2011年），IEEE。3

[OKA12] 奥伊科诺米迪斯I.、基里亚齐斯N.、阿尔吉罗斯A. A.：跟踪两只相互强烈作用的手部的关节运动。计算机视觉与模式识别会议论文集（2012年），IEEE。3, 4

[OLA14] 奥伊科诺米迪斯I.、劳拉基斯M. I.、阿尔吉罗斯A. A.：用于手部关节跟踪的进化准随机搜索算法。计算机视觉与模式识别会议论文集（2014年），IEEE。3

[QSW $^{*}$14] 钱C.、孙X.、魏Y.、唐X.、孙J.：基于深度图像的实时且稳健的手部跟踪。计算机视觉与模式识别会议论文集（2014年），IEEE。2, 3, 4, 5, 6, 9, 10

[RKEK13] 罗梅罗J.、凯尔斯特伦H.、埃克C. H.、克拉吉奇

---

D.：结合物体上下文的非参数化手部姿态估计。图像与视觉计算会议论文集（2013年）。3

[SFC $^{*}$11] 肖顿J.、菲茨吉本A.、库克M.、夏普T.、菲诺乔M.、摩尔R.、基普曼A.、布莱克A.：从单张深度图像中实时识别人体各部位姿态。计算机视觉与模式识别会议论文集（2011年），IEEE。1, 4

[SMRB14] 施罗德M.、梅科克J.、里特H.、博奇M.：利用协同逆运动学实现实时手部跟踪。国际机器人与自动化会议论文集（2014年），IEEE。1, 3, 4, 7, 8, 10

[SOT13] SRIDHAR S.、OULASVIRTA A.、THEOBALT C.：利用RGB和深度数据进行交互式无标记关节手运动跟踪。发表于国际计算机视觉会议（2013年），IEEE。3、9、10

[SRS $^{*}$14] SRIDHAR S.、RHODIN H.、SEIDEL H.-P.、OULASVIRTA A.、THEOBALT C.：基于各向异性高斯函数之和模型的实时手部跟踪。发表于3D视觉国际会议（3DV）（2014年），IEEE。1、3、9、10

[TCTK14] TANG D.、CHANG H. J.、TEJANI A.、KIM T.-K.：潜在回归森林：3D关节手部姿态的结构化估计。发表于计算机视觉与模式识别会议（2014年），IEEE。3、9

[TSLP14] TOMPSON J.、STEIN M.、LECUN Y.、PERLIN K.：利用卷积网络实现人手姿态的实时连续恢复。ACM Trans. Graph.（2014年）。1、2、3、4、9、10、11

[TSR $^{*}$14] TAYLOR J.、STEBBING R.、RAMAKRISHNA V.、KESKIN C.、SHOTTON J.、IZADI S.、HERTZMANN A.、FITZGIBBON A.：从单目深度序列中建立用户特定的手部模型。发表于计算机视觉与模式识别会议（2014年）。11

[TYK13] TANG D.、YU T.-H.、KIM T.-K.：利用半监督传导式回归森林实现实时关节手部姿态估计。发表于国际计算机视觉会议（2013年），IEEE。3

[WMZ $^{*}$13] WANG Y.、MIN J.、ZHANG J.、LIU Y.、XU F.、DAI Q.、CHAI J.：通过复合运动控制实现基于视频的手部操作捕捉。ACM Trans. Graph.（SIGGRAPH会议录）（2013年）。3

[WP09] WANG R. Y.、POPOVIC J.：利用彩色手套实现实时手部跟踪。ACM Trans. Graph.（SIGGRAPH会议录）（2009年）。3

[WPP11] WANG R. Y.、PARIS S.、POPOVIC J.：6D Hands：用于计算机辅助设计的无标记手部跟踪技术。用户界面软件与技术研讨会论文集（2011年）。3

[WZC12] WEI X.、ZHANG P.、CHAI J.：利用单个深度相机实现精确的实时全身动作捕捉。ACM Trans. Graph.（SIGGRAPH Asia会议录）（2012年）。1、2、3、5、6、8、9

[YZW $^{*}$13] YE M.、ZHANG Q.、WANG L.、ZHU J.、YANG R.、GALL J.：基于深度数据的人体运动分析综述。飞行时间成像与深度成像：传感器、算法及应用（2013年）。2

[ZCX12] ZHAO W.、CHAI J.、XU Y.-Q.：结合基于标记的动作捕捉技术与RGBD相机以获取高保真手部运动数据。EG/SIGGRAPH计算机动画研讨会论文集（2012年）。3

[ZSZ $^{*}$14] ZHANG P.、SIU K.、ZHANG J.、LIU C. K.、CHAI J.：利用深度相机和可穿戴压力传感器实现全身运动学与动力学捕捉。ACM Trans. Graph.（SIGGRAPH Asia会议录）（2014年）。2

### 附录A：投影PCA与子空间PCA对比

在公式6中，对$E_{\text{pose}}$最小化$\tilde{\theta}$存在闭式解：

 $$ \tilde{\boldsymbol{\theta}}=\left(\boldsymbol{\omega}_{5}\boldsymbol{\Sigma}^{2}+\boldsymbol{\omega}_{4}\mathbf{I}\right)^{-1}\left(\boldsymbol{\omega}_{4}\boldsymbol{\Pi}_{\mathcal{P}}^{T}(\boldsymbol{\theta}-\boldsymbol{\mu})\right). $$

因此我们可以将数据驱动能量仅表示为$\theta$的函数，即：

 $$\begin{array}{r}{E_{\mathrm{p o s e}}=\mathbf{\omega}_{4}\|(\mathbf{\theta}-\mathbf{\mu})-\Pi_{\mathcal{P}}\mathbf{M}\Pi_{\mathcal{P}}^{T}(\mathbf{\theta}-\mathbf{\mu})\|_{2}^{2},}\end{array}$$

其中$\mathbf{M} = \omega_4(\omega_5\Sigma^2 + \omega_4\mathbf{I})^{-1}$。我们的公式不仅能使解保持在姿态空间附近，还会对不可能的姿态进行惩罚，用考虑了PCA标准差的矩阵$\Pi_{\mathcal{P}}\Pi_{\mathcal{P}}^T$替换传统的正交投影矩阵$\Pi_{\mathcal{P}}\Pi_{\mathcal{P}}^T$。注意当$\omega_5 = 0$时，我们就能得到正交投影$\Pi_{\mathcal{P}}\Pi_{\mathcal{P}}^T$。

## 附录B：雅可比矩阵

透视投影雅可比矩阵。透视投影的雅可比矩阵是一个依赖于相机焦距$[2 \times 3]$以及其被评估时的3D位置$\mathbf{f} = [f_x, f_y]$的$\mathbf{x}$矩阵[BTP14]：

 $$ \mathbf{J}_{\mathrm{p e r s p}}(\mathbf{x})=\begin{bmatrix}f_{x}/\mathbf{x}_{z}&0&-\mathbf{x}_{x}f_{x}/\mathbf{x}_{z}^{2}\\ 0&f_{y}/\mathbf{x}_{z}&-\mathbf{x}_{y}f_{y}/\mathbf{x}_{z}^{2}\end{bmatrix} $$

骨骼雅可比矩阵。骨骼雅可比矩阵$\mathbf{J}_{\text{skel}}(\mathbf{x})$是一个$[3 \times 26]$矩阵。对于每个约束而言，与每个3D点$b = id(\mathbf{x})$相关联的骨骼标识符$\mathbf{x}$决定了运动链中受影响的部分，也就是它确定了$\mathbf{J}_{\text{skel}}(\mathbf{x})$中非零列的位置。正如[Bus04]中所讨论的，$\mathbf{J}_{\text{skel}}(\mathbf{x})$的第i列包含了关于$\mathbf{x}$的第i个关节的线性化结果。

## 附录C：基于线性化函数的近似

为了近似下面的能量项，我们通过线性化$E = \|\mathbf{f}(\mathbf{x})\|_{2}^{2}$来近似$\mathbf{f}(\mathbf{x})$：

 $$ \mathbf{f}(\mathbf{x}+\delta\mathbf{x})|_{\mathbf{x}}\approx\mathbf{f}(\mathbf{x})+\mathbf{J}(\mathbf{x})\delta\mathbf{x}. $$

该近似表达式如下：

 $$ \bar{E}=||\mathbf{f}(\mathbf{x})+\mathbf{J}(\mathbf{x})\delta\mathbf{x}||_{2}^{2}. $$

关节边界约束。关节边界能量可以表示为：

 $$ \begin{aligned}\bar{E}_{\mathrm{bound}}=\omega_{7}\sum_{\theta_{i}\in\boldsymbol{\theta}}\overline{\chi}(i)(\delta\boldsymbol{\theta}_{i}+\boldsymbol{\theta}_{i}-\overline{\boldsymbol{\theta}}_{i})^{2}+\\ \underline{\chi}(i)(\delta\boldsymbol{\theta}_{i}+\boldsymbol{\theta}_{i}-\underline{\boldsymbol{\theta}}_{i})^{2}\end{aligned} $$

时间连贯性。为了计算附着在运动链上的某个点$\dot{\mathbf{k}}(\theta)$的速度$\ddot{\mathbf{k}}(\theta)$和加速度$\mathbf{k}$，我们采用有限差分法。时间能量的线性化形式如下：

 $$ \begin{aligned}\bar{E}_{\mathrm{temporal}}=&\omega_{8}\sum_{\mathbf{k}\in\mathcal{K}}\|\mathbf{J}_{\mathrm{skel}}(\mathbf{k})\delta\boldsymbol{\theta}+(\mathbf{k}-\mathbf{k}_{t-1})\|^{2}_{2}\\&+\omega_{9}\sum_{\mathbf{k}\in\mathcal{K}}\|\mathbf{J}_{\mathrm{skel}}(\mathbf{k})\delta\boldsymbol{\theta}+(\mathbf{k}-2\mathbf{k}_{t-1}+\mathbf{k}_{t-2})\|^{2}_{2},\end{aligned} $$

其中$\mathbf{k}_{t-1}$和$\mathbf{k}_{t-2}$分别是该点在之前两个优化帧中的位置。

---

数据驱动方法（PCA）。数据驱动的投影能量可以重新表示为：

 $$ \begin{array}{r}{\bar{E}_{\mathrm{p o s e}}=\omega_{4}\left\|(\mathbf{I}-\Pi_{\mathcal{P}}\mathbf{M}\Pi_{\mathcal{P}}^{T})(\delta\theta+\theta-\mu)\right\|_{2}^{2}.}\end{array} $$

附录D：基于线性化$\ell_{2}$距离的近似。

为了近似下面的能量项，我们首先将二次型$E = \|\mathbf{f}(\mathbf{x})\|_2^2$重新表述为$E = (\|\mathbf{f}(\mathbf{x})\|_2)^2$。然后我们对$\ell_2$范数$\|\mathbf{f}(\mathbf{x})\|_2$进行线性化处理：

 $$ \|\mathbf{f}(\mathbf{x}+\delta\mathbf{x})\|_{2}|_{\mathbf{x}}\approx\|\mathbf{f}(\mathbf{x})\|_{2}+\frac{\mathbf{f}(\mathbf{x})^{T}}{\|\mathbf{f}(\mathbf{x})\|_{2}}\mathbf{J}(\mathbf{x})\delta\mathbf{x}. $$

该近似表达式如下：

 $$ \bar{E}=\left(\|\mathbf{f}(\mathbf{x})\|_{2}+\frac{\mathbf{f}(\mathbf{x})^{T}}{\|\mathbf{f}(\mathbf{x})\|_{2}}\mathbf{J}(\mathbf{x})\delta\mathbf{x}\right)^{2}. $$

当能量形式为$E = \|\mathbf{x} - \Pi(\mathbf{x})\|_2^2$，其中$\Pi(\mathbf{x})$是一个投影算子时，Bouaziz等人[BDS $^*$ 12]指出有$\mathbf{f}(\mathbf{x})^T \mathbf{J}(\mathbf{x}) = \mathbf{f}(\mathbf{x})^T$。在这种情况下，近似能量可以简化为：

 $$ \bar{E}=\left(\|\mathbf{f}(\mathbf{x})\|_{2}+\frac{\mathbf{f}(\mathbf{x})^{T}}{\|\mathbf{f}(\mathbf{x})\|_{2}}\delta\mathbf{x}\right)^{2}. $$

点云对齐。我们将点云对齐能量线性化，得到如下表达式：

与公式10中的近似不同，此处无需知晓投影函数的雅可比矩阵。这种表述方式很有用，因为上述公式中的近似只需计算投影函数，因此允许使用任意复杂的投影函数。

 $$ \bar{E}_{\mathrm{3D}}=\omega_{1}\sum_{\mathbf{x}\in\mathcal{X}_{s}}\omega_{\mathrm{r e}}(\mathbf{n}^{T}(\mathbf{J}_{\mathrm{s k e l}}(\mathbf{y})\delta\boldsymbol{\theta}+d))^{2}, $$

其中$\mathbf{y} = \Pi_{\mathcal{M}}(\mathbf{x}, \boldsymbol{\theta})$是手模型$\mathbf{x}$上、在手姿$\mathcal{M}$下与$\boldsymbol{\theta}$最近的点；$\mathbf{n}$是$\mathbf{y}$处的表面法线，还有$\mathbf{d} = (\mathbf{y} - \mathbf{x})$。由于我们最小化的是$\ell_2$范数，因此采用迭代加权最小二乘法来设置权重$\boldsymbol{\omega}_{\mathrm{re}} = 1 / \|\mathbf{d}\|_2$[BTP13]。

轮廓对齐。轮廓能量是在屏幕空间中表达的，因此会用到透视投影雅可比矩阵$\mathbf{J}_{\mathrm{persp}}(\mathbf{x})$，其中$\mathbf{x}$是渲染出的轮廓点p的3D位置。与点云对齐类似，其线性化表达式如下：

 $$ \bar{E}_{\mathrm{2D}}=\omega_{2}\sum_{\mathbf{p}\in\mathcal{S}_{r}}(\mathbf{n}^{T}(\mathbf{J}_{\mathrm{p e r s p}}(\mathbf{x})\mathbf{J}_{\mathrm{s k e l}}(\mathbf{x})\delta\boldsymbol{\theta}+d))^{2}, $$

其中$\mathbf{d} = (\mathbf{p} - \mathbf{q})$满足$\mathbf{q} = \Pi_{\mathcal{S}_s}(\mathbf{p}, \boldsymbol{\theta})$，而$\mathbf{n}$是传感器轮廓位置$\mathbf{q}$处的2D法线。

碰撞。图24以二维示例说明了所需的表示法，其中 $\mathbf{x}_i$ 和 $\mathbf{x}_j$ 是两个圆柱轴线之间最短线段的端点。线性化后的能量表示为：

![Image](images/d9d8fd26101aaadcbb1fba77335f4edf982fb27fbc509c6789913e3f84e40a9f.jpg)

<div style="text-align: center;">Figure 24: (left) Collision constraints definition, deepest penetration points marked as  $x_{i}$,  $x_{j}$. (right) When the collision energy is minimized in isolation the penetration points are co-located.</div>

能量定义为：

 $$ \bar{E}_{\mathrm{c o l l.}}=\omega_{6}\sum_{\{i,j\}}\chi(i,j)\left(\mathbf{n}_{i}^{T}\left((\mathbf{J}_{\mathrm{s k e l}}(\mathbf{x}_{i})-\mathbf{J}_{\mathrm{s k e l}}(\mathbf{x}_{j}))\delta\boldsymbol{\theta}+d\right)\right)^{2} $$

其中 $\mathbf{n}_i$ 是 $\mathbf{x}_i$ 处的表面法线（如图24所示），以及 $\mathbf{d} = (\mathbf{x}_i - \mathbf{x}_j)$。

## 附录E：非线性最小二乘优化

为解决我们的优化问题，我们采用了列文伯格-马夸特算法。我们利用附录B至附录D中描述的近似能量，迭代求解方程1，从而实现阻尼最小二乘最小化。

 $$ \operatorname*{m i n}_{\delta\theta}\bar{E}_{\mathrm{3D}}+\bar{E}_{\mathrm{2D}}+\bar{E}_{\mathrm{w r i s t}}+\bar{E}_{\mathrm{p o s e}}+\bar{E}_{\mathrm{k i n.}}+\bar{E}_{\mathrm{t e m p.}}+\bar{E}_{\mathrm{d a m p}}, $$

随后利用更新量$\boldsymbol{\theta} = \boldsymbol{\theta} + \delta\boldsymbol{\theta}$来更新手部姿态。需要注意的是，由于我们的能量表达式形式为：

 $$ \begin{array}{r}{\Sigma_{i}\bar{E}_{i}=\Sigma_{i}\|\mathbf{J}_{i}\delta\boldsymbol{\theta}-\mathbf{e}_{i}\|_{2}^{2},}\end{array} $$

因此我们的求解过程可改写为：

 $$ \delta\boldsymbol{\theta}=\left(\boldsymbol{\Sigma}_{i}\mathbf{J}_{i}^{T}\mathbf{J}_{i}\right)^{-1}\left(\boldsymbol{\Sigma}_{i}\mathbf{J}_{i}^{T}\mathbf{e}_{i}\right)=0. $$

为了稳定优化过程，我们引入了阻尼能量$\tilde{E}_{\mathrm{damp}} = \lambda \|\delta\theta\|_2^2$，其中$\lambda = 100$。

## 附录F：CPU/GPU优化

我们的技术巧妙地将优化组件在CPU和GPU上分离。就图3而言，只有大规模且易于并行处理的任务，比如与2D/3D ICP对应关系相关的约束计算才在GPU上执行，而其他任务则在单个CPU线程上高效运行。具体而言，方程11中的求逆运算由Cholesky分解在CPU上完成（Eigen3库）。由于最终求解在CPU上进行，我们设计的优化方案旨在尽量减少CPU与GPU之间的内存传输。首先要注意的是，尽管每次迭代都需要渲染圆柱模型的图像，但纹理早已存储在GPU缓冲区中。此外，虽然与 $\approx 20k \times 26$ 和 $E_{3D}$ 相关的大型（$E_{2D}$）雅可比矩阵是在GPU上组装的，但会使用CuBLAS内核来计算尺寸小得多的（$26 \times 26, 26 \times 1$）矩阵 $\mathbf{J}_i^T \mathbf{J}_i$ 和 $\mathbf{J}_i^T \mathbf{e}_i$。每次求解迭代时，仅需将这些矩阵传回CPU即可。
