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是关于自然人机交互技术、计算机视觉技术的相关开源社区动态的介绍。
Kinect应用开发实战 用最自然的方式与机器对话 目录
推荐序一
推荐序二
前 言
第一部分 准备篇
引 言 从科幻电影谈起
第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 推荐阅读及网络资源
后记
参考资料
Kinect应用开发实战 用最自然的方式与机器对话 精彩文摘
第一部分
准备篇
本部分内容
引言 从科幻电影谈起
第1章 自然人机交互技术漫谈
引言 从科幻电影谈起
只要用户手中还有一个控制器,就无法在情感上被完全调动起来。
—史蒂芬斯皮尔伯格,2002年《少数派报告》(Minority Report)
由学术研究产生的技术,似乎要到好莱坞绕一圈才能走进真实世界。或者换个说法:科幻小说和电影更早地预言了未来的科技—昨日之科幻,今日之现实。
科幻电影可说是最直观、最具有冲击力的科普方式。瑰丽冷峻的银河外星球、自由变形的液态机器人,以及耳目一新的人机交互方式一直都是科幻电影最为夺目的光点。
众多的科幻电影中,《星际迷航》的影响最大。著名物理学家霍金、科幻小说大师阿西莫夫和美国总统奥巴马等都是“星际迷”。如果看过《生活大爆炸》(The Big Bang Theory),你会注意到在第四季中,两个Geek主角Sheldon和Leonard的游戏机已由Wii变为Kinect(见图0-1),而且他们也是《星际迷航》的狂热粉丝。
本书的主题是自然人机交互。事实上,《星际迷航》仿佛一本启示录,外太空、星际旅行、探险,从20世纪冷战时代开始就不断地给予现实的启示,你可以看到许多受到《星际迷航》影响的真实科技:瑞士军刀版的全能手机、超薄大屏幕显示墙、语音导航GPS、语音识别、遥控无人驾驶飞机、手术机器人等。甚至《星际迷航》的艺术家们在30年前就构想出iPad(在电影里它被命名为PADD)。
重温经典电影,你会发现,PADD上那些复杂的后期特效的制作,道具上也都惟妙惟肖地采用仿真实现。PADD与iPad惊人的相似,PADD没配备物理键盘,采用全触摸操作。甚至从工业设计的角度来看,PADD与iPad的体型都是一致的:整体矩形构造、圆角设计以及厚度。
本文来自一纸枕书投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。