【手势交互】4. Kinect for XBox

“You are the Controller”,Kinect for Xbox的广告词,明确说明了Kinect体感的交互方式。作为一款集成了诸多先进视觉技术的自然交互设备,Kinect在学术和游戏业界均享有很高的关注度。此外,Kinect硬件的研发与生产综合了声、光、电和机械学等多方面的技术,其主要零部件近百个,是目前市场上大批量生产中的最为复杂的电子消费产品。

Kinect 的关键技术有四点:骨骼跟踪、动作识别、人脸识别、语音识别。本文关注的是基于前两者,骨骼跟踪和动作识别,这是Kinect 1体感交互的主要模块。Kinect 体感交互的流程大致是:

1、红外激光投影机周期性发射光编码形成散斑空间;

2、红外摄像头采集反射的散斑图像;

3、散斑图像分别与参考散斑图案进行互相关运算,得到各个像素点的互相关峰值,这个峰值就是深度图像;

4、深度图像经USB传送到主机;

5、通过人体分类器在深度图像中找到可能的人体区域,并创建分割掩膜,分割出人体区域;

6、通过机器学习的结果,快速对玩家的身体部位(头部、肢体、躯干等)进行分类;

7、从人体部位识别出20个关节点的三维坐标,从而进行人体骨骼三维建模;

8、基于骨骼跟踪进行动作识别(广义上识别的内容包含肢体运动、手势以及静态姿势),需要预先设定一些合理的动作定义;

9、游戏系统按照预定的动作定义,执行命令。

Kinect for XBox

Kinect1的视觉部分有三只“眼镜”,从左到右分别是红外激光投影机、彩色摄像头、红外摄像头。红外激光投影机投射红外激光,红外摄像头采集探测范围内反射回来的的红外光,依靠一定算法确定各反射点的距离,红外激光投影机和红外摄像头一起构成深度检测设备,为后续进一步的骨架提取提供基础。红外摄像头的深度图数据为[email protected],每一个像素用16比特记录。深度检测设备的有效视角垂直方向43°,水平方向57°,有效视距0.8-3.5米,单人的最佳视距为2.26米,双人的最佳视距为2.5米。彩色摄像头主要用来做人脸识别等应用,红外摄像头对光照无要求,即使在黑夜里也能操作。但是彩色摄像头需要明亮的光照,否则人脸识别等功能无法完成。彩色摄像头的分辨率为[email protected],没像素32比特。Kinect配备了自动追焦系统,如果追踪的玩家超出了有效视角范围,底座马达可驱动Kinect左右旋转27度。

为了让深度图像和彩色图像相互对应,必须进行“Prime Sense注册过程”。注册就是将彩色图像和深度图像进行对应,产生像素相互对应的影像,即彩色图像中的每个像素分别与深度图像中的一个像素对应。这能让应用程序准确了解收到的彩色图像中每个像素的深度。

Kinect1红外激光投影机投射的不是普通的红外光线,而是Prime Sense公司为微软提供的光编码(Light Coding)技术,这项技术属于结构光三维测量技术的一种。可能当时Prime Sense的开价比较贵,微软买入了另外两家利用TOF技术做三维测量的公司,而没有买Prime Sense,只是采用了Prime Sense的技术,Kinect1的核心运算单元就是Prime Sense的PS1080芯片(PS1080负责处理红外图像,然后逐帧生成准确的场景深度图像)。Light Coding使用的是连续的照明(而非脉冲),也不需要特制的感光芯片,只需要普通的CMOS感光芯片,这让方案的成本大大降低,对Kinect消费及电子产品的市场化至关重要。

Light Coding,是用光源照明给需要测量的空间编码,属于结构光技术。但与传统的结构光方法不同的是,它的光源投射的是一个具有三维纵深的“体编码”。这种光源叫做激光散斑(Laser Speckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。这些散斑具有高度的随机性,而且随着距离的不同散斑图案不同,也就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源标定。

Kinect1散斑图案

(在黑暗的环境里,用夜视摄像机拍摄Kinect1的检测区域)

在Prime Sense的专利上,标定的方法是这样的:每隔较短的一段距离,取一个参考平面,并把参考平面上的散斑图案记录下来。假设Kinect规定的用户距离是1~4米,每隔1cm取一个参考平面并把这个平面上的散斑图案记录下来,那么标定完成后就保存了300幅散斑图像。测量的时候,拍摄一幅待测量的散斑图像,将这幅图像和保存下来的300幅参考图案依次做互相关运算,进而得到300幅相关度图像。空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值叠在一起,再经过一些插值,就会得到整个场景的三维形状了。可以看到Light Coding技术不是通过空间几何关系求解的,它的测量精度只和标定时取的参考面的距离密度有关,参考面越密测量将越精确。根据第三方的测试数据,Kinect对于在2米左右的物体,X、Y轴上的空间精度是3毫米,Z轴(前后)上的空间精度为1厘米。

深度图像的分辨率320x240,帧率为30fps。帧率是由Prime Sense的PS1080芯片处理能力限制的,对于一般性的运动游戏,30fps可以应付,对于电影级别的运动采集,30fps满足不了要求。深度图像的每个像素点表示该像素与红外摄像头之间的距离,用16比特来表示,其中低3位是用户ID,“000”表示该像素属于背景,“001”表示该像素属于玩家1,“010”表示该像素属于玩家2,以此类推。理论上除了000外,Kinect1可以标定7个人,但Kinect1输出最多6个人的深度信息。深度像素高13位是距离信息,黑色表示极远,白色表示极近。16比特全为0表示该像素深度信息不可获得(要么是极远,要么是极近)。

Kinect是通过人体分类器来分类类似人体的目标,因此类似人体的目标都有可能被识别为人体。例如挂在衣架上的衬衣,一个大的毛绒玩具熊等。Kinect的骨骼识别可以兼容不同身高的人体,从幼儿到成人都基本可以准确识别;除了站姿之外,还可以分辨出坐姿的人体。因为Kinect的分类器是基于人体来训练的,因此它不能识别其他非人体的动植物。Kinect不能识别人的正面和背面。透明物体,发光物体(台灯尤其是卤素灯、电脑屏幕等),镜子等反光物体,某些黑色物体,对Kinect的识别有影响。肤色、背景光照对骨架识别没有影响,但对彩色摄像机的工作有影响,例如黑人的人脸识别。对于被遮盖或重叠的人体部位,通过相邻的关节点以及机器学习的结果,Kinect可以推测出人体部位。

Kinect是先识别人体部位进而再推断出关节点,这是一个近似度概率匹配、评估的过程。在Kinect里面,人体骨骼是通过20个关节点来表示的。每一个关节由(x, y, z)三维坐标点来标注它在骨架空间中的位置。(从这点来看,不是深度摄像头的精度不够,而是微软就没有想要去检测手指的动作,因为整个手部是一个关节点坐标。类似的还有表情识别)。虽然理论上Kinect可以提供最大7个人的深度信息,但处于性能与实际情况的考虑,Kinect最多只跟踪两个骨骼,最多可以检测六个人。也就是说,假如Kinect面前站着六个人,Kinect能告诉你这六个人具体站在什么位置,但只能提供其中两个人的关节点数据。

Kinect 人体关节

动作识别包含静态姿势和动态动作。姿势是骨骼在某一时间点的状态,例如Kinect中玩家左手向下倾斜45度,表示“暂停或退出”命令。动作是骨骼中的某一关节或是多个关节点在空间的运动序列,是为动态的行为。比如挥动左手,或者离地跳起等。动态的行为分析要比静态的姿势识别要复杂得多。

参考:余涛. 《Kinect应用开发实战:用最自然的方式与机器对话》 机械工业出版社. 2012年11月.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 19:45:16

【手势交互】4. Kinect for XBox的相关文章

【手势交互】5. Kinect for Xbox One

Kinect for XBox One是Kinect for XBox的升级版,这里称他为Kinect2 (也有叫它Kinect 720, Kinect One).Kinect2于2013年中和Xbox One一起配套发售(Kinect1于2010年11月在美国上市,建议售价149美金).2014年9月开始可以单独购买Kinect2,目前售价149.99美金. Kinect for XBox One 相比Kinect1,Kinect2的变化主要有以下几个方面: 1. 深度图获取方式的变化 当年K

基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)

转自网络:http://blog.csdn.net/zouxy09/article/details/17913745 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统) [email protected] http://blog.csdn.net/zouxy09 一年多前开始接触计算机视觉这个领域的时候,年幼无知,倍感吃力.当年惶恐,从而盲从.挣扎了不少时日,感觉自己好像还是处于领域的门外汉一样,在理论与实践的鸿沟中无法挣脱,心里空落落的.在这种挥之不去的烦忧中,某个时候豁然开朗,觉

Kinect for Xbox one(v2) + Ubuntu 14.04 +ROS

相比于kinect for xbox 360(v1)通过结构光来获取深度,Kinect for Xbox one(v2) 采用time flight技术,极大改善了深度图像的性能.kinect for xbox 360(v1)提供的原始图彩色图像是640×480,深度图是320×240,在ubuntu下,只需要安装openni即可获的registered的彩色图和深度图.而kinect for xbox one(v2)原始彩色图像是1920×1080,深度图像是512×424.目前在ubuntu

Android研究之手势交互实例实现详解

 先来几张效果图: 一.没有抛掷: 二.向右抛掷一次 三.向右再抛掷一次 接下来说说Android开发中对于手势动作的识别参考资料... 首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象. 3. 通过GestureDetector(手势识别器)转发次MotionEvent对象至OnGestureList

【手势交互】8. Nimble Sense

早在2012.2013年度,手势识别领域就发生了几起重要的行业并购.比如英特尔对Omek的收购,谷歌对Flutter的收购,而苹果公司更是以3.45亿美金得高价收购了之前为微软Kinect提供技术支持的以色列公司Prime Sense.手势识别,早已成为了各大巨头角逐未来的战场.因为巨头们正逐渐看清(手势识别)体感技术对传统操作方式的重要改变. 虚拟现实会是下一代人机交互界面,Oculus已经在显示输出这一端做出表率,而且表现不错.但是在输入端,也就是人该如何在虚拟现实中发出指令和进行操作,依然

【手势交互】3. Leap Motion

美国 http://www.leapmotion.com/ Leap Motion是一种3D动作控制系统,其创始人在读书期间发现传统的鼠标对于3D软件的控制极为不方便,因此迸发出要设计一套全新的动作控制系统来自由的控制电脑软件.2012年5月,Leap Motion推出的3D动作控制系统完全突破了以前3D控制的概念,为未来的3D交互打开了无限的想象空间,可以在电脑里进行3D手绘.三维模型设计.游戏控制等.这个被称作Leap的技术能让人通过手指直接控制电脑,包括图片缩放.移动.旋转.指令操作.精准

【手势交互】1.前言

人与人之间的交互方式主要有语音(包括面谈和电话谈或者视频语音谈),文字(在双方异地或者双方语音沟通有障碍或者需要正式的文本背书的情况下选择文字),手势(握手.敬礼.推搡等肢体语言也是表现一个人内心想法的途径). 人与机器之间的交互要远滞后与人人交互的方式,最传统的方式是键盘鼠标,键盘就类似与文字交流,将确认无误的信息以文本的形式输入机器,让它理解人的意图.鼠标的发明是一项创举,它大大简化了计算机的操作方式(鼠标的发明人恩格尔巴特恐怕早已被人遗忘),成了计算机的标准交互方式,无数的软件游戏,都是基

【手势交互】9. PS Move

索尼研发体感控制技术已有10年,在过去那么多年里,尝试了3D摄像头.超声波和电磁感应等各种技术,最后还是认为目前的MOVE所使用的技术最为合适.PS Move是索尼于2010年9月份推出,用来让PS3主机具备动态感应功能的控制器.他利用动态控制器(手柄)和PS Eye摄像头,来捕捉玩家的动作,带给玩家全新的游戏操作模式. 主手柄(动态控制器) 副手柄(导航控制器) PS Eye摄像头 一套PS Move控制器由三部分组成:主手柄.副手柄.摄像头.主手柄(动态控制器)通过陀螺仪.加速度感应器和地磁

【手势交互】6. 微动VID

中国 天津 http://www.sharpnow.com/ 微动VID是天津锋时互动科技有限公司开发的中国Leap Motion. 它能够识别并跟踪用户手部的姿态.包含:指尖和掌心的三维空间位置:手指和手掌的三维空间朝向. 通过识别设备上空椎状空间的Air Mode模式和识别设备前方扇形区域Touch Mode模式,用户能够更完美的实现人机交互. 微动使用两个低成本的摄像头来实现左右目图像採集,与Leap Motion的双红外摄像头略有不同.微动的外置设备里面有独立的运算能力,这和Leap M