本文章由cartzhang编写,转载请注明出处。 所有权利保留。

文章链接: http://blog.csdn.net/cartzhang/article/details/45029841

作者:cartzhang

说明:本帖内容同时在GALAXIX的Kinect区发表。《Kinect应用开发实战》读书笔记

此书内容针对SDK版本为1.5版本,跟后来版本之前有微小的差别。

《Kinect应用开发实战》读书笔记

对于初学来说,本书很不错,讲述了挺多的基础和细节。

非常感谢本书作者。

以为阅读过程中记录的笔记,希望对各位有用。

------------------------------------- 

1. Kincet分Windows版本和XBox360版本,区别其中是window版本针对Window平台做了优化,并且支持近景模式,而XboX的不支持此模式。

 

2. 书中书Kinect传动马达上下覆盖角度为正负28度.而Kinect官方指导上写的是正负的27度。其实,实测的时候,可能得到的角度会超超过这个。因为角度本身就有误差的。

   具体可参考我博客里面的:http://blog.csdn.net/cartzhang/article/details/44588097

3. Kinect SDK 建议,避免频繁的调用Tilt功能,最低标准是每秒不超过2次。(或每20秒不超过15次)调用。

   我之前用的时候,一秒都调用好多次啊,汗颜啊。

4. Kinect For Xbox 360有效视野范围:0.8~3.5米,一个人推荐最佳距离为2.26米,两个玩家的距离为2.5米。

 

5. 深度图像默认大小为320*240,而彩色图像格式默认为640*480的。

 

6. Kinect 人脸识别是抽取人脸中层结构特征,识别率大约为85%。

 

7. 深度图像获取是激光的散斑原理。深度图像到游戏Avatar是需要一些边缘检测,噪声处理,然后玩家的深度图区域分割,剔除无用背景信息,识别和计算人体部位,映射为骨骼节点,也就是达芬奇的维特鲁威人。

 

8. 在Kinect硬件采集,芯片处理不是延迟的主要原因,而软件的处理。 Kinect 对于有2米左右物体而言,X和Y维度上的精度为3mm,Z维度为1cm。注意单位是毫米啊。

 

9. Kinect SDK一代版本,支持20个骨骼节点的三维坐标,因为头部只有一个点,因此无法识别面部朝向。当然的SDK不支持手指关节的跟踪精度。本书版本为1.5版本,网上查1.7同样不支持。1.8不清楚,估计也不行。

   Kinect安装了4个麦克风阵列,可以在左50度到有50度的范围内推断说话者的声源位置。

 

10. Kinect SDK系统架构

11. 应用程序根据NUI 提供的API,选择不同质量,格式,带宽的图像数据。图像的数据流是一组连续静止图像帧的集合。在初始化NUI时,可设置图像分辨率、图  
像类型和视频流缓冲区大小。一个应用程序最多可以申请4个缓冲区,建议为2个。





12. 深度图像的每个像素有2个字节构成,共有16位。高13位物体的距离,以毫米为单位,低3位,用户的索引编号(0~7),其中0表示没有找到用户。





13. 获取数据流模式有两种:一个是轮询模式,使用GetNextFrame。一个是事件模式,注册数据流的FrameReady事件。不能对同一数据流同时使用两种模式。

  在某些时候,为保持深度图像和彩色图像尽可能同步,可采用轮询模式。

14. 关于点坐标:

      a) 深度图像的坐标系,XY为深度图像的像素坐标,Z为深度值,单位为毫米

      b) 骨骼坐标系统,XYZ为空间坐标,单位为米。

      c) 彩色图像坐标系,XY为彩色图像的像素坐标。

 

15. 骨骼镜像为X轴反转。





16. Kinect 交互设计七条军规:

        a) 控制手势集符合人类的自然手势

      挥手来获取焦点控制;悬停控制“确定”;双手靠近或伸展来表示放大或缩小。所有姿势必须是有意识的,不能与用户休息或放松的无意识动作一致。

        b) 让用户的肢体移动幅度尽量的小

     让菜单在用户触手可及的范围内。

        c) 操作界面的对象采用Metro(美俏)风格。

      可配合“磁石效应”按钮,可自动吸附。

        d) “确认操作”保持简单、一致

     由于Kinect没有Press能力,只有光标的跟踪能力。

     一个是悬停,选择的悬停建议时间为1.5s;

     一个是滑动;

    一个实手掌前推(个人觉得功夫熊猫里面的左手来向前出击来确认也是很棒的)。

        e) 手势操作尽可能在同一个平面内。

    降低识别的复杂度。

        f) 从三维的视角去看交互设计

 

       g) 配有简单明了的手势说明

            i. 静态姿势。

             ii. 动态姿势,动图来表示。

 

17. 骨骼数据的处理十分消耗CPU的,当应用程序暂时不需要处理骨骼数据时候,可以考虑暂停骨骼跟踪(SkeletonStream.IsEnabled=false;),暂停骨骼跟踪可使游戏画面更为流畅。

    当然,需要注意,暂停会有副作用,首先,重新会导致延迟几毫秒;其次,会使传感器重新初始化,而此时时间戳和帧编号就会重置为零。若用到时间戳和帧号处理逻辑说话,需要注意。





18. 在处理Kinect数据流的过程中,处理复杂的图形应用采用“轮询模型”,而不是基于事件机制来获取数据。轮询模型可以很好的调节应用的频率。





19. 手势识别大致分为几种:

            a) 算法匹配:根据关节位置,结合三角几何快速匹配。

           b) 模板匹配:根据预设模板进行数据匹配,测量相似度。

           c) 神经网络和支持向量机:神经网络,具有自学习能力,具有分布性,有效的抗噪声和处理不完整的模式,以及具有模式推广能力;支持向量机,是基于统计学理论发展,与神经网络有更好的推测能力。

            d) 统计分析和机器学习:基于概率分布,一般都是贝叶斯相似理论。此技术不能对原始数据直接进行识别,需要对大量数据提前特征向量。





20. 暂停手势,由微软提供用户的引导手势之一。通用的暂停为计算左臂与身体的夹角,根据阈值就可以判断。





21. 使用Kienct 来跟踪手掌和手指

                a) 多点触摸,网址:http://candescentnui.codeplex.com/开发语言为C#,基于OPenNI和Kinect
SDK。

               b) GesturePak: Github地址:https://github.com/carlfranklin/GesturePak2V1

 

22. 最后的推荐:

        a) OpencNI,PrimeSense 

         b) Openkinect ---开源的力量

        c) OpenCV 

       d) KinectJS ---JavaScript

 

--------The End--------





若有问题,请随时联系!

非常感谢!

《Kinect应用开发实战》读书笔记---干货集合的更多相关文章

  1. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

  2. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

  3. Spring AOP (Spring 3.x 企业应用开发实战读书笔记第六章)

    从面相对象编程到面相切面编程,是一种代码组织方式的进化. 每一代的代码组织方式,其实是为了解决当时面对的问题.比如写编译器和写操作系统的时候的年代当然要pop,比如写界面的时候当然要oop,因为界面这 ...

  4. 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...

  5. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

  6. Spring实战读书笔记

    Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...

  7. 第一章 Andorid系统移植与驱动开发概述 - 读书笔记

    Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...

  8. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  9. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

随机推荐

  1. BZOJ3238: [Ahoi2013]差异(后缀数组)

    Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 解题思路: 看到lcp,想到了 ...

  2. CISP/CISA 每日一题 八

    CISA 每日一题(答)网关执行电子邮件格式转换 电子邮件安全——加密 大文件——对称加密 不可否认——非对称 哈希——完整性     电子银行主要风险: 战略.经营和声誉上的风险 双SSP每日一题 ...

  3. 洛谷 P2026 求一次函数解析式

    P2026 求一次函数解析式 题目背景 做数学寒假作业的怨念…… 题目描述 给定两个整点的坐标,求它们所在直线的函数解析式(一次函数). 输入输出格式 输入格式: 输入共两行. 第一行有两个整数x1, ...

  4. java文件处理 之 读写TXT(比之c++,重置文件头,int转string)

    一:c/c++ 处理文件的使用方法.详见博客 c++文件操作 二:java与c++的方便之处: (1) java在读取文件时.能够对字符流进行处理,又一次进行编码,如 InputStreamReade ...

  5. SQL查询练习二(From LeetCode)

    请选用MySQL进行测试. 1.将男性和女性的工资互换(E) 思路:使用case when进行条件判断,在使用update进行修改 update salary set sex = case sex w ...

  6. Python的主成分分析PCA算法

    这篇文章很不错:https://blog.csdn.net/u013082989/article/details/53792010 为什么数据处理之前要进行归一化???(这个一直不明白) 这个也很不错 ...

  7. VUE笔记 - 列表过渡动画 v-enter, v-leave-to | v-enter-active, v-leave-active | v-move

    本例要结合过渡动画四个过程的示意图一起理解. https://cn.vuejs.org/v2/guide/transitions.html 疑问: v-for="(item,i) in li ...

  8. linux下pthread_cancel无法取消线程的原因

    一个线程能够调用pthread_cancel终止同一进程中的还有一个线程,可是值得强调的是:同一进程的线程间,pthread_cancel向还有一线程发终止信号.系统并不会立即关闭被取消线程,仅仅有在 ...

  9. VMWare中装Linux系统常见问题

    1.安装VMWare的时候,可能会提示vtx-m没开启 解决办法:重启笔记本电脑,按完开机键后,按住del或者F1或者F2,进入BIOS,在BIOS中找到intel-cietue开关,开启就 可以(如 ...

  10. springmvc hibernate整合

    今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多 了,Spring-Security的就留在下一篇吧,这篇主 ...