本书由微软资深企业架构师兼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是关于自然人机交互技术、计算机视觉技术的相关开源社区动态。
封面图
目录
- 推荐序一
- 推荐序二
- 前言
- 第一部分准备篇
- 引言从科幻电影谈起/2
- 第1章自然人机交互技术漫谈/10
- 1.1自然人机交互技术的发展/10
- 1.1.1第六感设备:技术的组合创新/10
- 1.1.2追影技术:摄像头也疯狂/12
- 1.1.3虚拟现实:真实的体验场景/13
- 1.1.4增强现实:真实与虚拟的叠加/14
- 1.1.5多点触摸:信息就在指尖 /15
- 1.1.6语音识别:从ViaVoice到Siri/16
- 1.1.7眼球跟踪:从霍金的座椅谈起/17
- 1.1.8人脸识别:Photo DNA/19
- 1.1.9体感操作:达芬奇手术机器人/20
- 1.1.10脑机界面:霍金座椅的升级版/20
- 1.2“你就是控制器”—Kinect宣言/21
- 1.2.1Kinect销售记录及命名来历/21
- 1.2.2未来照进现实/22
- 第二部分原理篇
- 第2章揭开Kinect的神秘面纱—硬件设备解剖/26
- 2.1两款Kinect传感器对比/26
- 2.2Kinect传感器的硬件组成/28
- 2.2.1Kinect的“心脏”—PS1080 SoC/30
- 2.2.2Kinect的“三只眼”—投影机和两个摄像头/32
- 2.2.3Kinect的“四只耳朵”—麦克风阵列/34
- 2.2.4会摇摆的“相控雷达”—传动马达/35
- 2.2.5姿态控制—三轴加速度计/36
- 2.2.6USB接口及电源/37
- 2.2.7Kinect风扇控制/38
- 2.3Kinect相关技术规格/38
- 2.3.1Kinect近景模式/39
- 2.3.2Kinect放大镜/40
- 2.4本章小结/40
- 第3章Kinect工作原理大揭秘/41
- 3.1Kinect for Xbox 360的产品设计/42
- 3.2基于“管道”的系统架构/43
- 3.2.1骨骼跟踪/45
- 3.2.2动作识别/46
- 3.2.3人脸识别/48
- 3.2.4语音识别/49
- 3.3Kinect眼里的三维世界/50
- 3.3.1深度数据是Kinect的精髓/51
- 3.3.22D视觉与3D视觉/55
- 3.4深度图像成像原理/56
- 3.4.1ToF光学测距与结构光测量/56
- 3.4.2Light Coding技术/57
- 3.4.3激光散斑原理/58
- 3.4.4光源标定/59
- 3.5从深度图像到骨骼图/60
- 3.5.1动静分离,识别人体/60
- 3.5.2人体部位分类/62
- 3.5.3从人体部位识别关节/63
- 3.5.4会“机器学习”的“Kinect大脑”/65
- 3.5.5骨骼跟踪的精度和效率/68
- 3.6创建你的Avatar/70
- 3.6.1“有骨有肉”/70
- 3.6.2泊松方程噪声滤除/70
- 3.6.3粗糙变平滑、缺陷自动补齐/71
- 3.7本章小结/71
- 第三部分基础篇
- 第4章Kinect for Windows SDK导读/74
- 4.1什么是Kinect SDK/74
- 4.1.1Kinect SDK的发展历程/74
- 4.1.2SDK v1.5的新特性/75
- 4.1.3SDK v1.5尚未提供的API/76
- 4.1.4从底层进行封装/76
- 4.2Kinect for Windows体系架构/78
- 4.3应用层API详解/80
- 4.3.1Kinect的核心NUI API/80
- 4.3.2Kinect Audio DMO/82
- 4.3.3Windows Speech SDK/83
- 4.4数据流概述/84
- 4.4.1彩色图像数据/84
- 4.4.2用户分割数据/85
- 4.4.3深度图像数据/86
- 4.4.4如何获取数据流/87
- 4.5骨骼跟踪/89
- 4.5.1骨骼信息检索/90
- 4.5.2主动跟踪和被动跟踪/90
- 4.5.3骨骼跟踪对象选择/91
- 4.6NUI坐标转换/92
- 4.6.1深度图像空间坐标/93
- 4.6.2骨骼空间坐标/93
- 4.6.3坐标变换/93
- 4.6.4传感器阵列和倾斜补偿/95
- 4.6.5地面测量/95
- 4.6.6骨骼镜像/95
- 4.7本章小结/96
- 第5章Kinect用户交互设计的若干思考/97
- 5.1Xbox 360 Kinect Hub界面和Metro风格/97
- 5.1.1什么是Metro风格/97
- 5.1.2Kinect Hub手势原型设计/98
- 5.1.3“悬停选择”和“翻页控制”/99
- 5.2体感游戏的优势及局限性/100
- 5.2.1更多的自由度/101
- 5.2.2关节点重叠的处理办法/102
- 5.2.3情感因素和心理暗示/102
- 5.2.4Kinect体感操作的局限性及对策/103
- 5.3用户交互的趋势和新特性/104
- 5.3.1Kinect使交互“柔软化”/105
- 5.3.2用户交互设计也可能是一项专利/106
- 5.4Kinect“体感操作”交互设计的七条军规/106
- 5.4.1控制手势集符合人类自然手势/107
- 5.4.2让用户的肢体移动幅度尽可能小/107
- 5.4.3操作界面的对象采用Metro风格/109
- 5.4.4“确认操作”保持简单、一致/109
- 5.4.5手势操作尽可能在同一个平面内/110
- 5.4.6从三维的视角去看交互设计/110
- 5.4.7配有简单明了的手势说明/111
- 5.5本章小结/112
- 第四部分开发篇
- 第6章开发前的准备工作/114
- 6.1开发Kinect应用所需的技能/114
- 6.2系统要求/115
- 6.3下载和安装Kinect SDK/116
- 6.3.1Kinect for Windows SDK v1.5/118
- 6.3.2Developer Toolkit/118
- 6.3.3Kinect快速开发工具箱/119
- 6.3.4XNA开发环境/119
- 6.4加载驱动、检验及测试/120
- 6.5配置开发环境/122
- 6.6要点和故障排除/122
- 6.7本章小结/123
- 第7章Hello,Kinect!/124
- 7.1一行代码的“Hello, Kinect!”/124
- 7.1.1创建WPF工程/124
- 7.1.2添加KinectDiagnosticViewer控件/126
- 7.1.3编写一行代码/127
- 7.1.4编译运行/127
- 7.2控制台界面HelloKinectMatrix/128
- 7.2.1创建Console工程/128
- 7.2.2编写代码/129
- 7.2.3运行效果/130
- 7.3KinectContrib快速工程模板/130
- 7.4KinectWpfViewers工具控件/131
- 7.5本章小结/132
- 第8章Kinect开发循序渐进/133
- 8.1一个简单的编程模型/133
- 8.1.1初始化、启用Kinect设备/134
- 8.1.2彩色图像流事件处理/136
- 8.1.3深度数据捕获/138
- 8.1.4骨骼跟踪/141
- 8.1.5关闭Kinect设备/145
- 8.1.6Kinect设备状态管理及异常处理/145
- 8.2更专业的深度图/146
- 8.2.1改进转换方法/146
- 8.2.2事件处理/148
- 8.3控制Kinect仰角/148
- 8.3.1“你的塑身”游戏/149
- 8.3.2垂直调整Kinect仰角/150
- 8.4本章小结/151
- 第9章Kinect深度数据测量技术及应用/152
- 9.1什么是Kinect视角场/152
- 9.2深度值与实际距离的对比/153
- 9.3深度图像的直方图/155
- 9.3.1直方图统计信息的价值/156
- 9.3.2深度图像直方图的意义/158
- 9.4Kinect深度数据测量的应用/159
- 9.4.1近景模式:自动锁屏工具/159
- 9.4.2Kinect视角场几何推导:测量人体身高/163
- 9.4.3近距离探测:制作地形电子沙盘/169
- 9.5本章小结/170
- 第五部分实例篇
- 第10章用Kinect表演“变脸”/172
- 10.1在人的面部变换脸谱/172
- 10.2代码实现/173
- 10.2.1WPF工程、控件及初始化/173
- 10.2.2骨骼跟踪/176
- 10.2.3变脸及坐标变换/178
- 10.3合理暂停骨骼跟踪/181
- 10.4道具平滑跟随/181
- 10.5调整幕布大小/183
- 10.6练习作业/184
- 第11章用Kinect唤起“红白机”的回忆/185
- 11.1用身体控制马里奥/185
- 11.2代码实现/185
- 11.2.1WPF工程、控件及初始化/185
- 11.2.2模拟键盘输入工具类/188
- 11.2.3肢体语言映射到键盘事件/192
- 11.3副产品:PPT演示“空手道”/193
- 11.4练习作业/195
- 第12章用Kinect玩PC版的《水果忍者》/197
- 12.1空气鼠标设计思路/197
- 12.1.1找到离Kinect最近的那个人/198
- 12.1.2兼容左手习惯和右手习惯/199
- 12.1.3从骨骼坐标系到鼠标坐标系/199
- 12.1.4模拟鼠标工具类/200
- 12.1.5让“空气鼠标”移动自如/202
- 12.1.6模拟鼠标左键事件/203
- 12.2在PC中用Kinect玩《水果忍者》/203
- 12.2.1核心代码示例/203
- 12.2.2如何双手挥刀/206
- 12.3更多游戏:《割绳子》/206
- 12.4练习作业/207
- 第13章创建你的Kinect Hub Demo界面/208
- 13.1Metro风格界面设计/208
- 13.2使用Kinect骨骼跟踪/209
- 13.3使用Coding4Fun Kinect Toolkit开发加速器/210
- 13.4悬停选择/210
- 13.5本章小结/213
- 第14章用Kinect导播天气预报/214
- 14.1天气预报是这样炼成的/214
- 14.1.1绘制幕布,定义前景图片/214
- 14.1.2对象定义及初始化/215
- 14.1.3实现“画中画”效果/216
- 14.2一些优化的话题/219
- 14.2.1使用Using及时回收资源/219
- 14.2.2使用WriteableBitmap优化图片显示性能/219
- 14.2.3多线程和“轮询模型”/220
- 14.2.4使用中值滤波边缘去噪/220
- 14.3Kinect语音导播切换/221
- 14.3.1引用Microsoft.Speech命名空间/221
- 14.3.2音频数据流和语音识别引擎/221
- 14.3.3语音识别事件/223
- 14.4本章小结/224
- 第15章基于Kinect的家庭监控系统/225
- 15.1通过Kinect进行目标探测/225
- 15.2使用计算机视觉库/226
- 15.2.1Open CV程序库/226
- 15.2.2Emgu CV引用/226
- 15.2.3保存快照/227
- 15.2.4录制视频/227
- 15.3目标人体探测和影像录制/228
- 15.4扩展功能和更多应用场景/231
- 15.5本章小结/231
- 第16章“Kinect牌”梦境录音笔/232
- 16.1Kinect音频采集/232
- 16.1.1使用音频数据流/232
- 16.1.2“波束跟踪”信心值的另类用法/233
- 16.2音频录制/233
- 16.2.1WAV文件/233
- 16.2.2WAVEFORMATEX结构体/234
- 16.2.3梦境录音笔的实现/234
- 16.3练习作业/240
- 第六部分进阶篇
- 第17章再谈姿态识别和手势识别/242
- 17.1姿态和手势/242
- 17.2动作与算法/243
- 17.2.1如何设定动作集合/243
- 17.2.2借鉴正则表达式和状态机/244
- 17.2.3转换为几何三角问题/245
- 17.3常见手势识别/245
- 17.3.1挥手激活/245
- 17.3.2悬停按钮/246
- 17.3.3磁石悬停/247
- 17.3.4划动手势/247
- 17.3.5滑动解锁/248
- 17.3.6推按钮/249
- 17.3.7通用暂停/249
- 17.4工具介绍/250
- 17.4.1动作录制和识别GesturePak/250
- 17.4.2手和手指的“空气多点触摸”/251
- 17.5本章小结/253
- 第18章Kinect在手术室的应用原型/254
- 18.1原型设计/254
- 18.2交互设计/255
- 18.2.1“悬停选择”进行功能导航/255
- 18.2.2“空气鼠标”的激活和隐藏/256
- 18.2.3通过“划动”手势翻阅医学影像/257
- 18.2.4放大、缩小医学影像病灶部位/257
- 18.2.5“垂直摆动”翻阅病历/258
- 18.2.6体感操作结合语音控制/258
- 18.3体感操作的实现/259
- 18.3.1基于SwipeGestureRecognizer/259
- 18.3.2基于单个部位运动序列的轨迹分析匹配/262
- 18.3.3基于多个部位姿态快照的状态机匹配/266
- 18.4利用SDK v1.5的新特性/280
- 18.4.1近景模式下的上半身骨骼跟踪/280
- 18.4.2利用关节点朝向信息进行手势识别和三维操作/280
- 18.4.3人脸识别用于手术登录验证/283
- 18.4.4调试工具Kinect Studio/283
- 18.5本章小结/284
- 第19章Hello,Kinect 3D World! /285
- 19.1点、面、云/285
- 19.1.1像素和彩色图像帧/285
- 19.1.2深度图像帧和点云/285
- 19.1.3多Kinect设备的接入/286
- 19.2Kinect体感应用开发工具简介/287
- 19.2.1软件开发平台XNA/287
- 19.2.2游戏引擎Unity 3D/288
- 19.2.33D场景重建工具ReconstructMe/289
- 19.3本章小结/289
- 第七部分展望篇
- 第20章奇思妙想—Kinect效应/292
- 20.1四旋翼飞行器的“导航雷达”/292
- 20.2宠物看护机器人/292
- 20.3空气吉他/293
- 20.4倒车雷达系统/294
- 20.5Kinect购物车/294
- 20.6魔术道具/295
- 20.7本章小结/295
- 第21章Kinect企业级应用/296
- 21.1思维导图/296
- 21.2体感操作应用/297
- 21.2.1手术室/297
- 21.2.2体育运动竞技研究/297
- 21.2.3动作捕捉、CG动画制作/298
- 21.2.4虚拟试衣镜/298
- 21.2.5课堂/299
- 21.2.6虚拟汽车展厅/299
- 21.2.7管理你的银行账户/300
- 21.2.8聋哑人的同声翻译/300
- 21.3深度数据应用/301
- 21.3.1老年人监护/301
- 21.3.2康复训练/301
- 21.3.3家庭监控系统/302
- 21.3.4道路交通稽查/302
- 21.3.5冰川消融研究/303
- 21.3.6给宇航员称体重/304
- 21.4实物3D建模应用/304
- 21.4.1实物3D数字化/304
- 21.4.2文物3D模型“数字敦煌”计划/305
- 21.4.33D扫描和打印/306
- 21.5机器人视觉与控制/306
- 21.5.1地震搜救机器人/307
- 21.5.2深海探测机器人/307
- 21.5.3工程机械臂控制/307
- 21.6本章小结/308
- 第22章下一代人机交互技术/309
- 22.1下一代Kinect技术若干猜想/309
- 22.2未来惊鸿一瞥/310
- 第八部分附录
- 附录AKinect SDK命名空间速查手册 /312
- 附录B推荐阅读及网络资源/328
- 后记/338
- 参考资料/339