Kinect SDK v1.7 新特性、交互框架与新概念

zouxy09@qq.com

http://blog.csdn.net/zouxy09

2013年3月18日,微软Kinect for Windows团队发布了新版的Kinect for Windows SDK 1.7,这是自去年发布Kinect forWindows SDK以来最重要的一次更新。其更新的核心内容包括:

1、Kinect Interactions

手势识别(可以识别pressing、gripping和releasing等手势,从而实现拖拽、滚屏、点击和放大等等功能)、多人智能适应方式、双人交互等。之前OpenNI中都有手势识别的功能,但以前版本的Kinect for Windows SDK却没有手势识别相关的功能,对手势体验方面的处理得开发者自己去开发,这是非常耗时的。微软意识到这个趋势,顺势而为还是比较赞的。况且还可以借此机会规定下标准啊啥的。

2、Kinect Fusion

实时捕捉和构建物体的3D模型。这点听起来还是比较喜人的。在Kinect开放至今,很多的研究和开发都是针对于3D重构的,的确这也是3D摄像头的一个诱人之处。3D场景重构可利用于虚拟现实、3D打印、工业设计、服饰购物体验等。有些产品都已经表现出了其独特的魅力。但这个如果需要实时的话,对GPU的要求那是高啊。Kinect Fusion官方是在NVidia GeForce GTX560和 AMD Radeon 6950中测试的,更高端的情况是NVidia GeForce GTX680和AMD Radeon HD 7850(对于显卡,咱们看型号的第2位,第2位数字越大,越高端)。对于台式机,最好大于3GHz的多核CPU和具有2GB以上独立显存的显卡。

3、与Matlab和OpenCV嫁接:

在计算机视觉领域的人相信都知道这两大图像处理巨头。在这个功能没有出现之前,很多人都是自己对Kinect的图像数据进行转换到OpenCV的图像格式进行处理的。现在微软也应这个潮流,自己把这个桥梁给大家搭好了。当然,这给Kinect的交互发展感觉还是有很大作用的,毕竟在Matlab和OpenCV领域的开发群体不是一般的大啊。

一、KinectInteractionArchitecture交互框架

KinectInteraction通过结合深度流、骨骼流和复杂的算法来提供人手跟踪和手势识别,以及一些其他特性。其架构图如下:

Kinect v1.7 给用户提供了两种编程API,分别是用C++实现的native code APIs ,和用C# 与 Visual Basic编写的、被更高层封装的managed code APIs。

        Native API提供用户识别、人手跟踪、人手状态(被跟踪、交互等等)和瞄准按下等基础特性。这个API还提供了一个全新的数据流,称为interaction stream(交互流)(在所有的版本中,Kinect都是以流的形式来访问数据的,包括旧版本的深度流、颜色数据流和骨骼流等等),它反映的是手势识别事件的触发。

        Managed API通过C#实现,它除了提供和nativeAPI相同的上述功能外,还通过C#/WPF controls提供了更高层的处理和交互控制封装,它可以使用户更快的构建交互程序。这些控制包括交互区域、抓取-拖拽和针对用户按下的按钮控制等。

二、KinectInteractionConcepts交互新概念(术语)

KinectInteraction是v1.7版新加入的特性,其中有很多新的概念,所以我们有必要去深入了解它们,清楚这些新的特性能做什么,不能做什么。另外,Kinect交互控制可以与键盘和鼠标控制兼容。

2.1、Hand Tracking

第一个概念是手势跟踪,如果我们之前用过Kinect的SDK的都会熟悉骨骼跟踪,它可以为在Kinect视觉范围的人建立骨骼。但是,在KinectInteraction中,这个功能本身没有加强,而是通过结合深度信息和骨骼跟踪信息去对用户的手势进行跟踪。除了跟踪人手,KinectInteraction还可以检测和报告人手和手臂的状态,使得一些例如握紧gripping、放开releasing和压下pressing的自然手势可以被识别。所以,用户可以在传感器的正常操作范围内(近距离模式0.4米,标准模式会达到3-4米)对Kinect程序进行非接触式交互。Kinect可以检测到在它前面的用户的手,并且进行跟踪。当然,如果用户是面对Kinect的,那么跟踪效果会更好,还有就是用户刚开始是用手掌来启动控制的。

2.2、The Physical Interaction Zone (PhIZ)

物理交互区域指处于真实物理世界中用户前面的3D空间与 程序员在程序中构建的3D坐标空间 之间的映射。对于每一个当前被跟踪的用户(可以同时跟踪两个)的手势都存在一个物理交互区域PhIZ。在大部分的交互中,PHIZ都是需要的。

2.3、What Gets Tracked?

交互层可以跟踪两个手,但它可以分别属于一个或者两个用户的手。第一个与系统发生交互的用户将被指定为主用户primary user。主用户保持对系统的交互控制权,直到系统检测到用户不再使用该应用程序。虽然主用户的两个手都可以被跟踪,但只有一个被指定为primary hand(用户用来控制experience的那个手)。只有primary hand才可以控制experience(什么意思?)。当然,如果两个手都被跟踪,那么用户可以通过将当前的primary hand放下,并把另一个手抬起,放进PhIZ中来切换primary hand。

2.4、Hand State

对每一个手,都会维护一个手的状态,它指明该手属于哪个用户,对于该用户,这个手是否是primary hand,这个手是否处于交互状态,还有就是这个手是在gripping、pressing还是其他手势状态。

2.5、Tracked vs. Interactive

一个跟踪的手trackedhand表示KinectInteraction正在盯着的,并且观察这个手可能会发生的交互。一个交互的手interactive hand是处于PhIZ中,并被KinectInteraction观测直接用于交互的。

2.6、The User Viewer

在Kinect的交互控制集中,存在一个用户视图User Viewer。它是从Kinect视角观测到的用户的一个小窗口。这个视图来源于深度数据流,它会在一个Kinect Region被创建的时候自动产生。

2.7、The Hand Pointer

Hand pointer是用来标记处于PhIZ中的用户的手势的当前位置的。它可以通过Kinect Cursor光标来可视化。如果程序开启了cursor可视功能(在C#/WPF controls中是默认开启的),那么在Kinect Region(s)中,cursor表现人手形状。另外,当用户当前进行拖拽控制时,cursor就表现为一个握着的拳头。

2.8、The Hand Pointer and Other Controls

为了提供一个流畅的交互体验,一旦hand pointer在一个给定的Kinect Interaction Control中停留一定的时间,那么就认为该handpointer被该control捕捉,直到用户将手移出该control的边界。被一个给定的control捕捉到的属性由该hand pointer和捕捉到该hand pointer的control共同表示。

2.9、Interaction Types

KinectInteraction提供了以下几种交互方式:

1)Grip and Release

当用户从一个张开的手掌,到握紧变为拳头的时候,就触发一个grip交互,并且绑定手势跟踪到当前的被grip触发的control上,直到用户releases,也就是张开拳头。这个可以用来实现拖拽或者滚屏的控制功能。通过运动速度映射的改变,还可以在长列表中实现快速滚动。Control Basics例程中展示了其用法和效果。

2)Press

当用户用手掌伸向(压向)Kinect的方向(理想情况是手掌面向Kinect,而且手臂并没有完全在Kinect的方向伸展开),就触发一个press交互指令。它可以用以表示鼠标的单击功能。还可以用来配合滚屏查看器操作。Interaction Gallery例程中展示了其用法和效果。

3)Scroll

实际就是通过上面的哪些控制指令进行Scroll。

2.10、The Interaction Stream

交互系统提供了交互帧流,和其他的数据源(音频流、深度流、骨骼流等等)的流模型相似。通过处理交互帧给用户与应用程序的交互提供信息,例如人手位置、人手是pressing、gripping还是releasing,还有就是当前用户正在瞄准哪个control。

三、一些新的例程
1)Controls Basics - WPF:

Demonstrates the new KinectInteraction Controls, including hands-free button pressing and scrolling through large lists. This replaces the Basic Interactions sample from previous releases.

2)Interaction Gallery - WPF:

Demonstrates basic interactions using the new KinectInteraction Controls.

3)KinectBridge with MATLAB Basics - D2D:

Demonstrates how to do image processing with the Kinect sensor using MATLAB API.

4)KinectBridge with OpenCV Basics - D2D:

Demonstrates how to do image processing with the Kinect sensor using OpenCV API.

5)Kinect Explorer - D2D:

Demonstrates how to use the Kinect's ColorImageStream, DepthImageStream, SkeletonStream, and AudioSource with C++ and Direct2D. This replaces the SkeletalViewer C++ sample.

6)Kinect Fusion Basics - WPF, Kinect Fusion Basics - D2D:

Demonstrates basic use of the Kinect Fusion APIs for 3D reconstruction.

7)Kinect Fusion Explorer - WPF, Kinect Fusion Explorer - D2D:

Demonstrates advanced 3D reconstruction features of Kinect Fusion, allowing adjustment of many reconstruction parameters, and export of reconstructed meshes.

水平有限,以上理解难免有错,请大家不吝指正。谢谢

Kinect SDK v1.7 新特性、交互框架与新概念相关推荐

  1. 【Day05】Html5 有哪些新特性?如何处理 Html5 新标签的浏览器兼容问题?如何区分 Html 和 Html5?

    Html5 有哪些新特性?如何处理 Html5 新标签的浏览器兼容问题?如何区分 Html 和 Html5? 一.Html5 新特性 1. 拖拽释放(Drag and drop)API 2. 语义化更 ...

  2. Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optional

    Jdk8新特性一:jdk8新特性之default关键字.日期类.Base64类.Optional 文章目录 Jdk8新特性一:jdk8新特性之default关键字.日期类.Base64类.Option ...

  3. 并发新特性—Executor 框架与线程池

    Executor 框架简介 在 Java 5 之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor 框架便是 Java 5 中引入的,其内部使用了线程池机制,它在 java.ut ...

  4. iOS10新特性,适配教程,XCode8新特性

    iOS10 新特性 ###SiriKit SiriKit的功能非常强大,支持音频.视频.消息发送接收.搜索照片.预订行程.管理锻炼等等.在用到此服务时,siri会发送Intent对象,里面包括用户的请 ...

  5. java8 新特性精心整理(全)——新 Date/Time API

    https://blog.csdn.net/sanri1993/article/details/101176712 前言 越来越多的项目已经使用 Java 8 了,毫无疑问,Java 8 是Java自 ...

  6. python3.8新特性 逻辑表达式_Python3.8新特性

    人生天地间,忽如远行客 昨日Python3.8稳定版发布,官网发布了一篇介绍新特性的文章,在此记录一下. 新增赋值操作符 := 作用:把较大表达式中的某部分值赋给变量,因为看起来像海象的眼睛和牙齿,: ...

  7. java8 新特性 ibm_【Java8新特性】Streams(流)

    Java 8 引入了Stream(流式操作),你可以通过该操作实现对集合的并行处理和函数式操作.Collection是一种静态的内存数据结构,而Stream是面向计算的. Stream是Java 8中 ...

  8. html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

    (Q1)  HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加. (1)绘画 canvas; (2)用于媒介回放的 video 和 audio 元素; (3)本 ...

  9. oracle12c 新特性,12c Oracle数据库新特性汇总

    12c Oracle数据库新特性汇总 中文社区 (MOSC) 数据库 (MOSC) 8 Replies Last updated on February 15, 2017 12c Oracle数据库有 ...

最新文章

  1. html动画怎么隐藏,JQuery操作div隐藏和显示的4种动画
  2. 判断android应用程序是否已安装
  3. 【实施工程师】Linux安装Windows软件:微信、QQ、TIM
  4. ICML 2022 第一届关于新冠病毒的智慧医疗研讨会
  5. uni-app 背景图片动态设置
  6. Maven generate/构建项目太慢解决方法
  7. 基于Jenkins + Tomcat 的安卓客户端可持续化构建及发布下载(loltube.cn)
  8. po 价格条件表_海纳易拓图文讲解SAP MM模块采购价格条件
  9. 关于安装mysql时出现安装错误之后的万能解决方案(目前解决了本人安装时的各种问题和同学的问题)
  10. 星空主题设计理念_「案例赏析」深邃星空理念:鲜为人知的独特标识设计
  11. 马云收购士兰微_马云出手!阿里36亿拿下千方科技
  12. b站视频能外链吗html,Iframe代码嵌入BiliBili视频外链
  13. 你知道CDN是什么吗?本文带你搞明白CDN
  14. 搭建企业级数据治理体系指南
  15. html+监听+页面滚动到底部,JS监听页面滚动到底部事件
  16. VC 模拟鼠标和键盘输入
  17. 秦储一行拜访陕西省文联和陕西新华出版传媒集团
  18. 100% 搭建你自己的匿名网站(暗网网站)
  19. 零架构项目经验的程序员,如何升级成架构师
  20. Terracotta Server集群

热门文章

  1. 十五开源的Andr​​oid(2D或3D)Android开发游戏引擎
  2. 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办 5种方法轻松排除黑屏故障...
  3. redis 转义字符_一份完整的阿里云 Redis 开发规范,值得收藏!
  4. 关于vh和 calc
  5. EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)
  6. 16.1117 NOIP 模拟赛
  7. JDBC学习笔记(6)——获取自动生成的主键值处理Blob数据库事务处理
  8. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
  9. jQuery中文手册, jQuery API, jQuery UI, 分页插件 下载
  10. java基础—集合 Vcetor 基本方法演示