《Kinect应用开发实战》读书笔记---干货集合

本文章由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--------

若有问题,请随时联系!

非常感谢!

时间: 2024-11-05 12:09:06

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

R实战读书笔记四

第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号.线.颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括如下. 一图胜千字,人们从视觉层更易获取和理解信息. 图形工作 R具有非常强大的绘图功能,看下面代码. > attach(mtcars) > plot(wt, mpg) > abline(lm(mpg~wt)) > title("Regression of MPG on Weight") > detach(m

JavaScript 设计模式与开发实践读书笔记 http://www.open-open.com/lib/view/open1469154727495.html

JavaScript 设计模式与开发实践读书笔记 最近利用碎片时间在 Kindle 上面阅读<JavaScript 设计模式与开发实践读书>这本书,刚开始阅读前两章内容,和大家分享下我觉得可以在项目中用的上的一些笔记. 我的 github 项目会不定时更新,有需要的同学可以移步到我的 github 中去查看源码: https://github.com/lichenbuliren/design-mode-notes 1.currying 函数柯里化 currying 又称 部分求值 .一个 cu

JAVA并发编程实战 读书笔记(二)对象的共享

<java并发编程实战>读书摘要 birdhack 2015年1月2日 对象的共享 JAVA并发编程实战读书笔记 我们已经知道了同步代码块和同步方法可以确保以原子的方式执行操作,但一种常见的误解是,认为关键之synchronized只能用于实现原子性或者确定临界区.同步还有另一个重要的方面:内存可见性. 1.可见性 为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制. 在没有同步的情况下,编译器.处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整.在缺乏足够同步的多线程程

Android深度探索(卷1)HAL与驱动开发 第一章&#160;Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记   本章主要讲解在Ubuntu Linux 下搭建Android开发环境. 1.JDK:从官网下载压缩包,并将其解压缩. Gedit etc/profile 并设置PATH环境变量,记得PATH. 2.搭建Android应用程序开发环境. 安装Android SDK 安装Eclipse 安装ADT 配置ADT 建立AVD 这个步骤是安装Android SDK,步骤与操作与在Windows操作系统下的安装

《精益和敏捷开发》读书笔记

对精益不了解, 敏捷开发则是一个到处都在谈论的话题, 我只是跳着看了一些在敏捷方面的做法和观点, 而且主要是scrum相关的, 当然本书的敏捷开发基本上可以等同于scrum. 算是增加了一层对scrum新的认识. 书不敢说是一本好书, 只能各取所需吧. ======================我是读书笔记的分割线================== 如果在同一个办公区域, 你记不清所有人的名字, 那么这就是一个大型团队了 产生非最佳决策的原因是错误的假设和不充分的理由 守破离法则 第一步,

用node.js 搭建的博客程序心得(node.js实战读书笔记1)

学习node已经有一段时间了,之前把了不起的node.js看完了,基本算了解了一些node的基本的用法还有一些概念了,然后就开始看第二本node.js实战,第一章就是搭建一个博客程序.但是不得不吐槽一下node,发展得太块了,很多库已经和之前的用法不一样了,就要一直去百度google来查询最新的用法,其实我觉得这样并不见得是一件好事,因为不稳定,所以就不好学习,就要一直保持对于node的关注.不废话了,这篇文章就大概说一些在这章里面所学习到的一些东西,经验总结吧 1.express - 基于 N

《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and AngularJS Web Development>,总的来说是一本讲述如何用Javascript进行B/S架构全栈开发的书. 该书主要讲解4种技术(框架),分为6个部分29个章节.4种技术即Node.js.MongoDB.Express.AngularJS,业内称为MEAN:6个部分我个人理解为: 基础(引言).

《程序开发心理学读书笔记之三》

以下是我对本书中最感兴趣的另一篇软件开发个人行为中收获的知识以及自己从中受益的一些启发: 从此篇中总结了一些我认为是比较好的作者的观点: (1)程序开发任务的差异:在程序开发的不同阶段,程序员之间的能力差异,因此,只要能够把所有人的努力划分为不同类型的工作,而不是不同的程序,那么任何项目的开发效率都可以得到这种量级的提高. (2)人格因素:所谓人格,就是一个人的所有特征的集合,根据这种具有唯一性的集合,能够确定这个人任何适应不断变化中的环境,同时反过来,这个集合本身也会受到这个适应过程的影响.任