摘要
本文设计一个基于深度摄像头的手势追踪系统:满足实时追踪(CPU 25fps)、高准确性(<10mm)。提出了几个新颖的技术:
- 使用一系列球体对手部建模,并定义了一个简单快速且十分有效的损失函数,这对于实时性能至关重要;
- 基于迭代最近点算法(ICP)和粒子群算法(PSO),提出一个混合方法能够更快的收敛且具有更好的准确率;
- 提出一个新的手指检测方法用于手势初始化。
关键
-
手部模型
- 使用48个球,每个手指6个,手掌16个。每个球体有各自的半径和球心坐标,其中半径固定,球心坐标即预测目标
- 考虑到动力学,关节之间的角度有一个约束范围
-
损失函数
-
对点云P随机下采样256个点,得到sub(P)
该项损失约束点尽可能在球面上 -
c为球心坐标, 为将球心坐标投影到深度图后的索引,即球心在投影深度图的深度值。
光心与世界坐标系原点重合,光轴为,则深度即点在z轴的坐标值。
所以,为预测得到的球心的深度,而为根据球心投影索引在输入的深度图上的深度值。该项约束球的深度, 若索引值超过深度图,则计算二者距离作为约束
-
该项约束两个球不重合
-
-
ICO-PSO局部优化
-
ICP
寻找一个旋转矩阵R和平移矢量t,使得两个点云对齐。
初始化R和t,对A做变换, 对变换后的A中的每个点,找到B中与该点最近的点计算距离,即
基于四元数/SVD求解上式最小值的R和t
不足
参数搜索空间大,容易陷入局部最优,严重依赖初始化
-
PSO
根据局部信息和全局信息寻找最优点
不足
搜索空间大,容易过早收敛(估计错误全局最优值)
-
ICP-PSO
-
总结
这篇文章通过Intel的Gesture Camera获得深度图像,然后将其转化3D Point cloud。引入Cost Function。 然后检测手指的位置(使用了2D+ 1D的表示方法),通过检测到的手指的位置给手势的初始化形成约束,由此通过ICP-PSO的算法来优化Cost Function方程得到最优解作为最终的手势的结果,与自己定义的48球模型进行实时的匹配。