通过深度图实时鲁棒地识别手势 - Realtime and Robust Hand Tracking from Depth
2015-09-04 19:18
399 查看
通过深度图实时鲁棒地识别手势 - Realtime and Robust Hand Tracking from Depth
通过深度图实时鲁棒地识别手势 - Realtime and Robust Hand Tracking from DepthPreface
摘要
正文
介绍
模型和成本函数
ICP-PSO 局部最优算法
通过hand initialization发现手指
实验证明
Conclusion
图例
Preface:
因为之前并没有明确的方向,所以看关于人工智能的paper和书籍总是没有焦点,精力也很分散,虽然每篇看完后都很有程序猿内心深处改变世界然后让所有甜点都免费!的冲动( = = 好像暴露了什么不过不要在意细节啦~~~),但是因为要开始准备手势识别方向的论文了,所以在一位活宝老师的推荐下读到了这篇paper,想翻译的原因主要是为了纪念终于
开始要进入研读paper的时代了么?!这样的心情吧~
原文中有很多引用论文的链接,但是因为我比较懒,这里就不在文中显示了
原文链接:Realtime and Robust Hand Tracking from Depth
摘要
使用工具为笔记本上25帧每秒(FPS)的摄像头(深度传感器),没有使用GPU,系统误差在10mm以内。 在本系统中,除了达到了对真实数据的精确识别和快速的成本函数(cost function)之外,为了使结果更好,我们的系统使用了原创的一些思想和算法。
正文
1. 介绍
虽然手势识别已经发展了很多年,不过因为手部运动很快而且一般的识别非常复杂,所以现实应用中的识别效果并不理想。以下是一些现有的成果:
网格识别:识别花销很大,而且结果只能保证局部最优
实时全局搜索最优:因为设定很麻烦(需要带上彩色手套),而且需要过多个摄像头同时工作
其他的识别方法设定太死,或者只能在一个固定视角下进行识别,所以也有局限性
之后作者将他们的系统定义为”state-of-the-art”(当世最好的…果然有程序猿大牛的风范)
2. 模型和成本函数
Hand Model.为了表示动态的手部姿势,我们借鉴了通用的26自由度(DOF)的模型:整体手部6个、每个手指4个,可见于 Figure 1 (a).。这26个自由变量整体表示为Θ.
鉴于简单几何模型对于表示动态物体的有效性,我们使用球形结构来组成手.我们借鉴了多边形网格模型,使用48个球来表示手部,见于图Figure 1 (b) 和 (c).各对象表示如下:
cost function 表示及各部分含义如下:
由实验证明该成本函数处理速度很快,可以适应实时处理的要求
3. ICP-PSO 局部最优算法
原文先解释了什么是ICP还有PSO,以及他们的优缺点,个人理解是这样的:pso适合飞过整个取值区间,icp适合在pso找到区域最佳的大概位置的时候进行精确查找,然后文中说这两个算法适合天生搅基就放一起了:给出的算法伪代码:
之后用实验例证了这一想法。(见于Figure 3)
4. 通过hand initialization发现手指
已经证明了如果只通过最后一帧图像进行tracking是不robust的,因为这样每一帧都要re-initialization,我们使用了一种简单直观的几何视角来进行 hand initialization而非通过学习。Finger Detection:我们通过X-Y平面以及Z轴来观察,而非通过3D模型,Z轴的极值点一般来讲就是手指指尖,而与X-Y平面平行延伸的手指我们成为X-Y手指。我们通过先找到的第一个极值点作为mask center,在distence map上不断增加极值点,确定连续的segment,如论文[A.Baak, M.Muller, G.Bharaj, H.P.Seidel, and C.Theobalt. A datadriven approach for real-time full body pose reconstruction from a
depth camera. In ICCV, 2011.]。之后判断这些segment的长宽是否和符合手的尺度,共寻找六次,包括手指和手腕。
在进行Z轴方向的手指的识别时,先通过极值点判断指尖位置,在3倍该ring的范围内,density最大的60度的范围内是手指的延伸方向,见于Figure 3.确认的方法是,在这个大的ring当中,有>90%的desity。
Hand Initialization:通过PCA的方法,使用观测到的几个节点来确定手部动作,通过文中的理论,可以得到5f +3 constraints(f代表X-Y手指个数),然后可以解决未知数为2f + 6的问题。(f<=5)
5. 实验证明:
因为无关原理,所以我就直接贴原文出来了,大家看看后边的结果图也可以大概明白.6. Conclusion:
图例
相关文章推荐
- PHP GD 图像处理组件的常用函数总结
- PHP图像处理之imagecreate、imagedestroy函数介绍
- jsvascript图像处理―(计算机视觉应用)图像金字塔
- Javascript图像处理思路及实现代码
- android使用gesturedetector手势识别示例分享
- PHP图像处理之使用imagecolorallocate()函数设置颜色例子
- java数字图像处理基础使用imageio写图像文件示例
- javascript图像处理―边缘梯度计算函数
- Javascript图像处理―阈值函数实例应用
- Javascript图像处理―虚拟边缘介绍及使用方法
- PHP图像处理类库及演示分享
- php图像处理函数大全(推荐收藏)
- Javascript图像处理―图像形态学(膨胀与腐蚀)
- Javascript图像处理―平滑处理实现原理
- 在Swift程序中实现手势识别的方法
- IOS初级教程2:UITapGestureRecognizer手势识别的简单使用
- VTK学习笔记之图像处理
- vtk 图像处理 多种 操作
- 05-VTK在图像处理中的应用(2)
- Android Gesture Detector