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. 第二修正项的理解?

本小节完。

最新文章

  1. 解决:ERROR: Cannot launch Jack server
  2. JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片
  3. Java file read & write
  4. IOS开发-表单控件的应用
  5. IO流--字节流
  6. 把一个序列转换成非严格递增序列的最小花费 POJ 3666
  7. css03复合选择器
  8. IE8兼容placeholder的方案
  9. js 比较日期大小
  10. Ubuntu 下一个disk清理保护
  11. slf4j 之logback日志之环境安装【一】
  12. Java变量&&简单程序流程&&循环
  13. jquery form submit提交后无反应 不报错
  14. C#创建windows服务并发布
  15. rest api方式实现对文档库的管理
  16. Java-关于类
  17. 使用MedleyText与Syncthink自建云笔记
  18. typescript静态属性,静态方法,抽象类,多态
  19. quartz整合spring框架service层对象注入为null解决方案
  20. Wide and Deep Learning Model

热门文章

  1. nyoj19(排列组合next_permutation(s.begin(),s.end()))
  2. XTU1201:模和除
  3. Android开发之大位图压缩水印处理
  4. kubernetes系列:(一)、kubeadm搭建kubernetes(v1.13.1)单节点集群
  5. POJ 1471 模拟?
  6. 多线程与MySQL(十)
  7. paratest
  8. Android ListView getView()方法重复调用导致position错位
  9. 再生龙恢复分区后修复引导或debian linux修复引导 三部曲
  10. Unity5.X 编辑器介绍