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. 第二修正项的理解?
本小节完。