Kinect应用开发实战余涛作者简介、书籍目录、内容摘要、编辑推荐
本书由微软资深企业架构师兼Kinect应用开发专家亲自执笔,既系统全面地讲解了Kinect技术的工作原理,又细致深入地讲解了Kinect交互设计、程序开发和企业应用展望。全书不仅包含大量实践指导意义极强的实战案例,还包含大量建议和最佳实践,是学习Kinect
for Windows应用开发不可多得的参考书。
本书分为八大部分:准备篇(引言和第1章),从科幻电影的自然人机交互技术谈起,同时针对虚拟现实、增强现实、多点触摸、语音识别、眼球跟踪、人脸识别、体感操作、脑机界面等人机交互技术的最新发展动态,结合一些生动例子进行了说明;原理篇(第2~3章),深入剖析了Kinect的硬件组成,从原理上分析了Kinect的工作机制,并从计算机视觉技术角度重点分析了“体感操作”背后发生的一切;基础篇(第4~5章),对Kinect
for Windows
SDK进行了框架性的导读,并对Kinect自然人机交互的设计提出了有益的归纳和建议;开发篇(第6~9章),本篇从Kinect的开发环境准备谈起,内容包括了视频数据、深度数据、骨骼跟踪等开发示例,其中还包含一个用Kinect测量身高的有趣示例;实例篇(第10~16章),通过介绍一些生动有趣的应用示例(《超级马里奥兄弟》、《水果忍者》等)的开发,帮助读者快速开发入门;进阶篇(第17~19章),包括姿态识别和手势识别的算法实现,Kinect技术结合3D技术的应用,同时结合Kinect在手术室的原型应用这一综合示例,将交互设计、骨骼跟踪、手势识别、语音识别等关键点“串烧”起来;展望篇(第20~22章),汇集Kinect应用的相关创意和奇思妙想,以及Kinect在医疗、教育、动作捕捉、虚拟现实、增强现实、动漫设计乃至冰川研究等诸多领域的发展前景;附录A是关于Kinect
SDK命名空间Microsoft
Kinect的详细介绍;附录B是关于自然人机交互技术、计算机视觉技术的相关开源社区动态的介绍。
作者简介
余涛 (网名fishking1979)企业应用架构师(Enterprise
Architect)、PMI认证项目管理师(PMP),目前就职于微软中国。热衷于Kinect技术,致力于推广Kinect体感技术在企业领域的应用。拥有12年以上的软件行业经验,有丰富的大型软件项目设计、开发、管理经验,为医疗、智能交通、能源、汽车等企业级客户提供架构及咨询服务。业余爱好旅行、山地车运动和电影。
书籍目录
推荐序一
推荐序二
前
言
第一部分 准备篇
引 言 从科幻电影谈起
第1章 自然人机交互技术漫谈
1.1 自然人机交互技术的发展
1.1.1 第六感设备:技术的组合创新
1.1.2 追影技术:摄像头也疯狂
1.1.3 虚拟现实:真实的体验场景
1.1.4 增强现实:真实与虚拟的叠加
1.1.5 多点触摸:信息就在指尖
1.1.6 语音识别:从ViaVoice到Siri
1.1.7 眼球跟踪:从霍金的座椅谈起
1.1.8 人脸识别:Photo DNA
1.1.9 体感操作:达芬奇手术机器人
1.1.10 脑机界面:霍金座椅的升级版
1.2 “你就是控制器”—Kinect宣言
1.2.1 Kinect销售记录及命名来历
1.2.2 未来照进现实
第二部分 原理篇
第2章 揭开Kinect的神秘面纱—硬件设备解剖
2.1 两款Kinect传感器对比
2.2 Kinect传感器的硬件组成
2.2.1 Kinect的“心脏”—PS1080 SoC
2.2.2 Kinect的“三只眼”—投影机和两个摄像头
2.2.3 Kinect的“四只耳朵”—麦克风阵列
2.2.4 会摇摆的“相控雷达”—传动马达
2.2.5 姿态控制—三轴加速度计
2.2.6 USB接口及电源
2.2.7 Kinect风扇控制
2.3 Kinect相关技术规格
2.3.1 Kinect近景模式
2.3.2 Kinect放大镜
2.4 本章小结
第3章 Kinect工作原理大揭秘
3.1 Kinect for Xbox 360的产品设计
3.2 基于“管道”的系统架构
3.2.1 骨骼跟踪
3.2.2 动作识别
3.2.3 人脸识别
3.2.4 语音识别
3.3 Kinect眼里的三维世界
3.3.1 深度数据是Kinect的精髓
3.3.2 2D视觉与3D视觉
3.4 深度图像成像原理
3.4.1 ToF光学测距与结构光测量
3.4.2 Light Coding技术
3.4.3 激光散斑原理
3.4.4 光源标定
3.5 从深度图像到骨骼图
3.5.1 动静分离,识别人体
3.5.2 人体部位分类
3.5.3 从人体部位识别关节
3.5.4 会“机器学习”的“Kinect大脑”
3.5.5 骨骼跟踪的精度和效率
3.6 创建你的Avatar
3.6.1 “有骨有肉”
3.6.2 泊松方程噪声滤除
3.6.3 粗糙变平滑、缺陷自动补齐
3.7 本章小结
第三部分 基础篇
第4章 Kinect for Windows SDK导读
4.1 什么是Kinect SDK
4.1.1 Kinect SDK的发展历程
4.1.2 SDK v1.5的新特性
4.1.3 SDK v1.5尚未提供的API
4.1.4 从底层进行封装
4.2 Kinect for Windows体系架构
4.3 应用层API详解
4.3.1 Kinect的核心NUI API
4.3.2 Kinect Audio DMO
4.3.3 Windows Speech SDK
4.4 数据流概述
4.4.1 彩色图像数据
4.4.2 用户分割数据
4.4.3 深度图像数据
4.4.4 如何获取数据流
4.5 骨骼跟踪
4.5.1 骨骼信息检索
4.5.2 主动跟踪和被动跟踪
4.5.3 骨骼跟踪对象选择
4.6 NUI坐标转换
4.6.1 深度图像空间坐标
4.6.2 骨骼空间坐标
4.6.3 坐标变换
4.6.4 传感器阵列和倾斜补偿
4.6.5 地面测量
4.6.6 骨骼镜像
4.7 本章小结
第5章 Kinect用户交互设计的若干思考
5.1 Xbox 360 Kinect Hub界面和Metro风格
5.1.1 什么是Metro风格
5.1.2 Kinect Hub手势原型设计
5.1.3 “悬停选择”和“翻页控制”
5.2 体感游戏的优势及局限性
5.2.1 更多的自由度
5.2.2 关节点重叠的处理办法
5.2.3 情感因素和心理暗示
5.2.4 Kinect体感操作的局限性及对策
5.3 用户交互的趋势和新特性
5.3.1 Kinect使交互“柔软化”
5.3.2 用户交互设计也可能是一项专利
5.4 Kinect“体感操作”交互设计的七条军规
5.4.1 控制手势集符合人类自然手势
5.4.2 让用户的肢体移动幅度尽可能小
5.4.3 操作界面的对象采用Metro风格
5.4.4 “确认操作”保持简单、一致
5.4.5 手势操作尽可能在同一个平面内
5.4.6 从三维的视角去看交互设计
5.4.7 配有简单明了的手势说明
5.5 本章小结
第四部分 开发篇
第6章 开发前的准备工作
6.1 开发Kinect应用所需的技能
6.2 系统要求
6.3 下载和安装Kinect SDK
6.3.1 Kinect for Windows SDK v1.5
6.3.2 Developer Toolkit
6.3.3 Kinect快速开发工具箱
6.3.4 XNA开发环境
6.4 加载驱动、检验及测试
6.5 配置开发环境
6.6 要点和故障排除
6.7 本章小结
第7章 Hello,Kinect!
7.1 一行代码的“Hello, Kinect!”
7.1.1 创建WPF工程
7.1.2 添加KinectDiagnosticViewer控件
7.1.3 编写一行代码
7.1.4 编译运行
7.2 控制台界面HelloKinectMatrix
7.2.1 创建Console工程
7.2.2 编写代码
7.2.3 运行效果
7.3 KinectContrib快速工程模板
7.4 KinectWpfViewers工具控件
7.5 本章小结
第8章 Kinect开发循序渐进
8.1 一个简单的编程模型
8.1.1 初始化、启用Kinect设备
8.1.2 彩色图像流事件处理
8.1.3 深度数据捕获
8.1.4 骨骼跟踪
8.1.5 关闭Kinect设备
8.1.6 Kinect设备状态管理及异常处理
8.2 更专业的深度图
8.2.1 改进转换方法
8.2.2 事件处理
8.3 控制Kinect仰角
8.3.1 “你的塑身”游戏
8.3.2 垂直调整Kinect仰角
8.4 本章小结
第9章 Kinect深度数据测量技术及应用
9.1 什么是Kinect视角场
9.2 深度值与实际距离的对比
9.3 深度图像的直方图
9.3.1 直方图统计信息的价值
9.3.2 深度图像直方图的意义
9.4 Kinect深度数据测量的应用
9.4.1 近景模式:自动锁屏工具
9.4.2 Kinect视角场几何推导:测量人体身高
9.4.3 近距离探测:制作地形电子沙盘
9.5 本章小结
第五部分 实例篇
第10章 用Kinect表演“变脸”
10.1 在人的面部变换脸谱
10.2 代码实现
10.2.1 WPF工程、控件及初始化
10.2.2 骨骼跟踪
10.2.3 变脸及坐标变换
10.3 合理暂停骨骼跟踪
10.4 道具平滑跟随
10.5 调整幕布大小
10.6 练习作业
第11章 用Kinect唤起“红白机”的回忆
11.1 用身体控制马里奥
11.2 代码实现
11.2.1 WPF工程、控件及初始化
11.2.2 模拟键盘输入工具类
11.2.3 肢体语言映射到键盘事件
11.3 副产品:PPT演示“空手道”
11.4 练习作业
第12章 用Kinect玩PC版的《水果忍者》
12.1 空气鼠标设计思路
12.1.1 找到离Kinect最近的那个人
12.1.2 兼容左手习惯和右手习惯
12.1.3 从骨骼坐标系到鼠标坐标系
12.1.4 模拟鼠标工具类
12.1.5 让“空气鼠标”移动自如
12.1.6 模拟鼠标左键事件
12.2 在PC中用Kinect玩《水果忍者》
12.2.1 核心代码示例
12.2.2 如何双手挥刀
12.3 更多游戏:《割绳子》
12.4 练习作业
第13章 创建你的Kinect Hub Demo界面
13.1 Metro风格界面设计
13.2 使用Kinect骨骼跟踪
13.3 使用Coding4Fun Kinect Toolkit开发加速器
13.4 悬停选择
13.5 本章小结
第14章 用Kinect导播天气预报
14.1 天气预报是这样炼成的
14.1.1 绘制幕布,定义前景图片
14.1.2 对象定义及初始化
14.1.3 实现“画中画”效果
14.2 一些优化的话题
14.2.1 使用Using及时回收资源
14.2.2 使用WriteableBitmap优化图片显示性能
14.2.3 多线程和“轮询模型”
14.2.4 使用中值滤波边缘去噪
14.3 Kinect语音导播切换
14.3.1 引用Microsoft.Speech命名空间
14.3.2 音频数据流和语音识别引擎
14.3.3 语音识别事件
14.4 本章小结
第15章 基于Kinect的家庭监控系统
15.1 通过Kinect进行目标探测
15.2 使用计算机视觉库
15.2.1 Open CV程序库
15.2.2 Emgu CV引用
15.2.3 保存快照
15.2.4 录制视频
15.3 目标人体探测和影像录制
15.4 扩展功能和更多应用场景
15.5 本章小结
第16章 “Kinect牌”梦境录音笔
16.1 Kinect音频采集
16.1.1 使用音频数据流
16.1.2 “波束跟踪”信心值的另类用法
16.2 音频录制
16.2.1 WAV文件
16.2.2 WAVEFORMATEX结构体
16.2.3 梦境录音笔的实现
16.3 练习作业
第六部分 进阶篇
第17章 再谈姿态识别和手势识别
17.1 姿态和手势
17.2 动作与算法
17.2.1 如何设定动作集合
17.2.2 借鉴正则表达式和状态机
17.2.3 转换为几何三角问题
17.3 常见手势识别
17.3.1 挥手激活
17.3.2 悬停按钮
17.3.3 磁石悬停
17.3.4 划动手势
17.3.5 滑动解锁
17.3.6 推按钮
17.3.7 通用暂停
17.4 工具介绍
17.4.1 动作录制和识别GesturePak
17.4.2 手和手指的“空气多点触摸”
17.5 本章小结
第18章 Kinect在手术室的应用原型
18.1 原型设计
18.2 交互设计
18.2.1 “悬停选择”进行功能导航
18.2.2 “空气鼠标”的激活和隐藏
18.2.3 通过“划动”手势翻阅医学影像
18.2.4 放大、缩小医学影像病灶部位
18.2.5 “垂直摆动”翻阅病历
18.2.6 体感操作结合语音控制
18.3 体感操作的实现
18.3.1 基于SwipeGestureRecognizer
18.3.2 基于单个部位运动序列的轨迹分析匹配
18.3.3 基于多个部位姿态快照的状态机匹配
18.4 利用SDK v1.5的新特性
18.4.1 近景模式下的上半身骨骼跟踪
18.4.2 利用关节点朝向信息进行手势识别和三维操作
18.4.3 人脸识别用于手术登录验证
18.4.4 调试工具Kinect Studio
18.5 本章小结
第19章 Hello,Kinect 3D World!
19.1 点、面、云
19.1.1 像素和彩色图像帧
19.1.2 深度图像帧和点云
19.1.3 多Kinect设备的接入
19.2 Kinect体感应用开发工具简介
19.2.1 软件开发平台XNA
19.2.2 游戏引擎Unity 3D
19.2.3 3D场景重建工具ReconstructMe
19.3 本章小结
第七部分 展望篇
第20章 奇思妙想—Kinect效应
20.1 四旋翼飞行器的“导航雷达”
20.2 宠物看护机器人
20.3 空气吉他
20.4 倒车雷达系统
20.5 Kinect购物车
20.6 魔术道具
20.7 本章小结
第21章 Kinect企业级应用
21.1 思维导图
21.2 体感操作应用
21.2.1 手术室
21.2.2 体育运动竞技研究
21.2.3 动作捕捉、CG动画制作
21.2.4 虚拟试衣镜
21.2.5 课堂
21.2.6 虚拟汽车展厅
21.2.7 管理你的银行账户
21.2.8 聋哑人的同声翻译
21.3 深度数据应用
21.3.1 老年人监护
21.3.2 康复训练
21.3.3 家庭监控系统
21.3.4 道路交通稽查
21.3.5 冰川消融研究
21.3.6 给宇航员称体重
21.4 实物3D建模应用
21.4.1 实物3D数字化
21.4.2 文物3D模型“数字敦煌”计划
21.4.3 3D扫描和打印
21.5 机器人视觉与控制
21.5.1 地震搜救机器人
21.5.2 深海探测机器人
21.5.3 工程机械臂控制
21.6 本章小结
第22章 下一代人机交互技术
22.1 下一代Kinect技术若干猜想
22.2 未来惊鸿一瞥
第八部分 附录
附录A Kinect SDK命名空间速查手册
附录B 推荐阅读及网络资源
后记
参考资料
章节摘录
版权页: 插图: 3.2.3人脸识别 人脸识别是整个身份识别中最重要的一个组成部分,你的身份证、驾照或是毕业证上无一不记录了你的脸部照片。作为传奇人物,拿破仑在指挥作战中,不仅能准确地记住他的各个部队的具体战斗位置,而且能记住许多士兵的姓名和面容。 Kinect也将拥有如此博闻强识的本领,它能区分不同玩家、快速识别玩家的身份,从而提供更为个性化的体验,比如记住你上次听过的歌曲,或者最近玩过的游戏。通过人脸识别实现的个性化体验已经成为游戏体验的一部分,神奇之处恰恰在于你并没有做任何事情,你只是站在那里,Kinect通过人脸识别就知道你是谁,如图3—11所示。 “人脸识别”与“骨骼跟踪”类似,第一步首先定位人脸的存在,其次基于人的脸部特征,对输入的人脸图像或者视频流进行进一步的分析,包括脸的位置、大小和各个主要面部器官的位置信息,并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人的身份。 由于Kinect摄像头分辨率仅为640×480,在1.8m及以上距离的情况下,摄像头所能提供的面部的像素数据十分有限,并不适用于进行高维计算。另外,房间内光线会变,玩家时而接近时而远离Kinect,而且当玩家投入游戏时他们的面部表情也会改变,这些都会给人脸识别带来影响。还有,由于环境光照、色温和人表情的这种差异,会给人脸识别带来噪声。 目前,Kinect for Xbox的人脸识别采用了抽取人脸中层结构特征的折中方式,但这种方法无法提供100%的准确识别率(大约为85%)。前面我们提到过,这种纯二维的图片识别算法也被应用在Windows Live Photo Gallery中。同时,人脸识别还综合了着装的色彩以及玩家身高的分析,以帮助提高识别准确率。 抽象脸部特征作为Kinect的人脸识别的关键步骤。如果说Kinect骨骼跟踪是给每个玩家穿上动作捕捉“Marker”点,那么人脸识别中的脸部特征分解这一环节,恰恰就类似好莱坞电影面部捕捉的做法,如图3—12所示。 人脸识别另外一个需要攻克的难点在于同一个人的变化。人的面部在不同照明、表情或姿势等因素的影响下产生的差异有时让对同一个人的识别产生不同的结果。 为了识别不同表情、不同光照条件下的人脸,联想推测模型的第一步是构建一个“通用”的人脸数据库。
媒体关注与评论
期待不同领域的读者会从本书中收获不同的内容:可以是对Kinect的深入了解,可以是很具体的开发方法,也可以是很前瞻的应用模式。期待Kinect技术早日走向实用!—— 阴忆青 医学博士/复旦大学附属中山医院计算机网络中心主任兼普通外科主治医师/上海市医院协会信息管理专业委员会副主任委员Kinect让人机互动变得简单易行,从而打开了一扇互动之门。回想多年前的动漫《超时空要塞》中试衣的一个镜头:只要站到指定的位置,就能看到穿上这件衣服的效果。现在这一幕正逐渐走进现实中:足不出户,就能“试穿”全世界的品牌时装,甚至订制尺寸,真正做到“我看见,我穿上”的效果。Kinect技术也许可以激发出电子商务和在线广告应用的新模式,读完本书你可能会有新的思考。—— 铁 轮(姚云蛟)淘宝网广告技术资深架构师
编辑推荐
《Kinect应用开发实战:用最自然的方式与机器对话》由微软资深企业架构师兼Kinect应用开发专家亲自执笔,专业社区及企业客户联袂推荐!系统讲解Kinect工作原理、Kinect for Windows应用开发、人机交互设计,以及商业价值展望,包含大量案例、技巧和最佳实践。系统讲解Kinect工作原理、Kinect 应用开发、人机交互设计,包含大量案例、技巧和最佳实践,版权输出到台湾。