首页 > 代码库 > 手势跟踪论文学习:Realtime and Robust Hand Tracking from Depth(三)Cost Function
手势跟踪论文学习:Realtime and Robust Hand Tracking from Depth(三)Cost Function
iker原创,转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/39050619
Realtime and Robust Hand Tracking from Depth中的Cost Function 学习
首先,我们应该知道,输入的数据是什么:3D 点云数据。
3D点云给我的感觉应该是这样的
输出的是:拟合好的手模型(48球体模型)。
而这里的的3D 点云数据用p表示,每一个球体用Sx 表示。Ci 第i个球体的中心;D表示深度图( 区分另一个D(.))。我们来看下面的Cost Function。
这个公式的理解。
简单说就是差异评估,最终是要对它最小化。
先看第一项:它的定义是这样的:
这里的D代表的就是distance,也就是计算点云点p和球体的中心c的距离再减去半径。也就是点云点到球体表面的距离。其中p取了一个子集sub(p)=256个点云。这个是为了降低计算的复杂度,同时也基本保证了精度。
这里的计算量是:256个点分别的和这48个球体的中心计算距离(其实是计算和点云点p最近的一些球体Sx(p))。找到取得距离最小的值的那个手型的参数就是这个方程的解。但是单纯的这样是有问题的,例如: 到一个点云点距离都很小的球体可能在以这个点为球心的周围的任何位置,因此我们要进行修正。引入第二项:
这一项的目的是为了使球体能够在点云的里面。其中,j(c)代表的是球体在深度图上面的投影点。如果j(c)处的深度D(j(c))和该球体的中心的z坐标很接近的话,那么球体的中心就在深度的前面,就加入它们的差值的绝对值这个惩罚因子;如果在j(c)处的深度没有话表明球体中心在深度图轮廓的外面,加入j(c)到深度图轮廓的距离作为惩罚项。(备注:这里我理解的不是很深刻,j(c)到深度图轮廓的距离不知道如何来算)
最后,还需要对球与球之间的关系做一个限制。也就是说,球与球之间理想的状况是相切,而太远太近都不是很好,所以要加入惩罚因子。
上图中左边两个球就是不怎么合适的,右边两个就是基本满足要求的。因此引入第三个修正项:
公式的意义非常的明显了。
再来看整体上加入了一个量化因子 ,原因是为了第一项和第二项有等同的作用。一个简单的量化处理。
问题:
1. 3D的点云数据原来有多少,这里用它来拟合是不是说手的检测已经得到了?
http://blog.csdn.net/opensource07/article/details/7804246 这是一个点云的生成的资料
2. 48球手型的初始化是如何进行的?(手指的跟踪实现吗?)
3. 第二修正项的理解?
本小节完。
手势跟踪论文学习:Realtime and Robust Hand Tracking from Depth(三)Cost Function