推荐序一
推荐序二
前 言
第一部分 准备篇
引 言 从科幻电影谈起
第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 推荐阅读及网络资源
后记
参考资料