首页>参考读物>计算机科学与技术>软件与程序设计

OpenNI体感应用开发实战
作者 : 任侃 曹越 吴杰 等著
出版日期 : 2014-06-25
ISBN : 978-7-111-47016-8
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 275
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

全书一共19章,分为五大部分。准备篇(1-4章):介绍了自然人机交互的一些基础技术,Xtion硬件设备的功能特性和深度感应原理,OpenNI的架构、功能和使用方法、Xtion开发前的准备工作;基础篇(5-6):主要介绍了Xtion体感开发的基础知识,以及OpenNI的开发知识;进阶篇(7-13):主要讲解了Xtion体感开发的进阶知识,包括人体骨架追踪、手势识别与手势追踪、录制与重播、限制Production Node建立条件、使用XML档案初始化、声音数据的获取和使用、RGB图像获取和贴图;实战篇(14-19):一共讲了6个大的案例,包括体感鼠标模拟、体感玩街霸、体感方向盘玩赛车类游戏、体感控制机器人、BVH骨架转换、体感侦测与U3D结合。

图书特色

国内首本关于OpenNI的专著,资深专家撰写,华硕官方和CNKinect社区联袂推荐
全面且系统地讲解OpenNI和Xtion的功能使用、技术细节和工作原理,以及体感应用开发的各种知识和技巧
包含多个有趣的综合性案例,详细分析和讲解案例的实现过程,实战性极强

OpenNI体感应用开发实战
任侃 曹越 吴杰 等著

OpenNI作为一个成熟的、开源的体感应用开发框架,因为具备很多优势,所以非常受欢迎。在CNKinect社区乃至全球的体感应用开发社区,关于OpenNI的讨论和交流都非常多。由于OpenNI功能本身比较强大,技术更新也比较快,而且中文资料缺乏,所以它成为了CNKinect社区最火热的话题之一,经常有开发者提出各种各样的问题,但是很多问题得不到及时的回答,甚至是没有回答。本书的出版将会是体感应用开发者的福音,它不仅详细讲解了OpenNI的功能和原理,还讲解了如何基于它在主流的体感设备Xtion上开发体感应用。
—— 王峰 CNKinect创始人

本书的写作是在国内OpenNI社区、CNKinect社区和华硕官方等多方的支持下完成的,作者团队收集和分析了社区开发者在OpenNI的使用过程中遇到的各种问题,同时也吸收了社区开发者的集体智慧和经验,还参阅了华硕官方提供的一些权威的关于Xtion设备的相关信息。力争书的内容不仅要接地气,有针对性和实战性;而且要够权威、全面、系统、有深度。

前:
本书是国内首本关于OpenNI的实战性著作,也是首本基于Xtion设备的体感应用开发类著作。具有权威性,由国内体感应用开发领域的专家撰写,华硕官方和CNKinect社区提供支持;具有针对性,深入调研OpenNI社区开发者的需求,据此对内容进行编排;全面且系统地讲解了Xtion和OpenNI的功能使用、技术细节和工作原理,以及体感应用开发的各种知识和技巧;实战性强,包含多个有趣的综合性案例,详细分析和讲解案例的实现过程,确保读者通过本书掌握体感应用开发的技术和方法是本书的宗旨。
全书共19章,分为五个部分:基础篇(第1~3章)介绍了自然人机交互技术、Xtion硬件设备的功能和原理、OpenNI的功能和应用;准备篇(第4~6章)讲解了如何搭建OpenNI+Xtion的体感应用开发环境,以及OpenNI的一些基本功能;进阶篇(第7~13章)详细讲解了人体骨骼追踪、手势识别、手部追踪、录制与重播、生产节点的建立、声音数据的获取和使用、彩色图像数据的获取和贴图等OpenNI的重要功能及其应用方法;实战篇(第14~17章)详细讲解了4个有趣且具有代表性的案例,通过这部分内容读者将能掌握体感应用开发的流程与方法;高级篇(第18~19章)讲解了体感应用开发中会用到的多种高级功能,如运动捕捉和OpenNI Unity工具包等。

后:
如今,体感技术的应用已经非常广泛,游戏、娱乐、家居、医疗、零售、教育、环境治理等很多领域都具备可行性并有成功的应用。从技术和设备的角度来讲,体感技术相对来说已经比较成熟;但是从应用的角度来讲,现有的应用还远不能满足各行业的应用需求。OpenNI+Xtion是目前国内开发体感应用开发的最佳组合之一,本书从实战角度详细讲解了如何基于OpenNI技术在Xtion体感设备上开发游戏等多种类型的应用。

作者简介
任 侃 国内体感应用开发领域的先驱,博士毕业于英国萨里大学(University of Surrey),就职于南京理工大学电光学院。精通体感应用开发,对人机交互技术、体感技术、体感应用、体感设备等都有非常深入研究。在C++语言、视频和图像处理、用户体验研究等领域的实践经验也比较丰富。

图书前言

为什么要写这本书
  几年前,我在英国University of Surrey攻读人机交互领域博士学位的时候,不少朋友都建议我,试着玩玩当时最流行的体感交互游戏机,比如最早推出的任天堂的Wii主机,或者后来大红大紫的Xbox Kinect。于是我购买了这两部主机以及一些有针对性的体感游戏。开始体验这种全新的游戏操作方式时,我很快便意识到这种全新的人机交互方式所带来的用户体验的巨大提升,这种交互方式将很有可能改变世界,现在,继Xbox Kinect之后微软推出了Kinect 2.0,并与新一代的Xbox One主机捆绑销售;任天堂也推出了Wii U全新主机;SONY公司推出新主机PS4,这款主机支持全新的体感摄像头Play Station Camera。与此同时,快速发展的中国IT界也不甘落后,华硕公司推出了硬件架构与Kinect相同,开发却扎根于开源社区的体感摄像头Xtion,以此加入这一场激动人心的体感盛宴当中。
  5年的留学生活为我带来了许多美好的回忆,也为我提供了相对自由的学习、研究自己感兴趣领域的空间和时间。毕业后,我进入南京理工大学工作,成为一名教师。工作中,我偶然看到了一篇对公共场所人流状态监控的需求文章,而当时传统的视频监控存在着诸多问题,于是我想到利用体感传感器。而后我选择了华硕的Xtion进行相关项目的开发,自然而然地接触到开源的OpenNI。随着开发的进行,以及对OpenNI的深入了解,我才明白,OpenNI是我见过的开发平台中十分特别的一款,配合Xtion传感器能创造出很多令人激动的应用。
  体感程序的设计与开发体现了人与机器互动交流的最高目标:降低用户使用机器的学习成本,用最自然、最熟悉的方式操作机器,真正融入机器,轻松完成任务。在这个过程中,体感应用程序的开发者既是工程师也是用户,这也让他们能更多地参与到开源社区的建设中,在社区中反馈问题、发表经验,与其他用户交流,进而碰撞出创新的火花。这也是OpenNI如今能够发展得如此美妙的原因。
  体感应用开发者时常将开源的OpenNI与微软的Kinect SDK进行比较,从个人的角度而言,我更加欣赏OpenNI的折中模式,它更开放、更包容,说通俗点儿,更“接地气”。如果无法负担高昂的培训费,甚至被一套Kinect SDK的价格吓到,抑或是在一个人的盲目学习中感到失落与无助,那么你可以试着看看开源社区OpenNI和中文体感开发论坛“体感中国”,感受一下积极向上的气氛。在这里,你能接收到最新的资讯、最酷的创意,以及最热心的帮助与指点。
  作为OpenNI社区监制的第一本中文教程,社区网站openni.org和体感中国论坛cnkinect.com将为读者提供相应的体感程序开发知识,以及国内外最新的体感应用资讯。体感中国社区是非盈利性的民间组织,所有成员都是为了推动体感应用在国内的发展而自愿团结在一起的。体感中国为体感开发爱好者搭建一个开放交流的平台。在此感谢社区多年来对我的帮助,也对大家为开源事业做出贡献的精神表示由衷的感谢。
读者对象
  这里根据软件需求划分出使用OpenNI的用户团体。
  体感传感器用户
  体感程序开发者
  体感应用设计者
  OpenNI开源社区志愿者
  使用OpenNI平台进行项目开发的公司与集体
  开设相关课程的大专院校
如何阅读本书
  本书内容分为五部分,包括基础篇、准备篇、进阶篇、实战篇、高级篇。
  基础篇(第1~3章)介绍了自然人机交互的一些概念和基本应用,同时结合体感传感器Xtion,介绍了体感传感器的工作原理。学习完本部分之后,读者可以理解基于体感的人机交互的内涵以及体感应用开发的硬件基础。
  准备篇(第4~6章)介绍了在进行体感应用开发之前,需要进行的软件开发平台搭建的步骤,以及OpenNI软件最基本的一些功能。学习完本部分之后,读者能开始使用OpenNI软件,使用它的一些基本功能。
  进阶篇(第7~13章)进一步讨论体感应用开发中的知识。包括基本的手势识别,色彩与声音的获取与录制等。学习完本部分之后,读者可以开始尝试组合不同的功能组件,开发更具规模、更加智能的体感应用。
  实战篇(第14~17章)介绍了一些有趣的且很具有代表性的体感应用开发实例。通过本部分,读者将学习到真实的体感开发的过程与实现方法,进一步提升自身的实际开发水平。
  高级篇(第18~19章)介绍了一些体感开发应用中可能使用到的高级功能,包括运动捕捉和OpenNI Unity工具包。通过学习这些内容,读者能够掌握更加复杂和高级的体感应用开发技能。
  其中,从第四部分开始,通过接近实战的实例来讲解工程应用,相比前三部分更独立。如果你是一名经验丰富的资深用户,能够理解OpenNI的相关基础知识和使用技巧,那么可以直接阅读这部分内容。但是如果你是一名初学者,请从第1章开始学习。
勘误和支持
  由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有什么宝贵意见,也欢迎发送邮件至kanren2004@gmail.com,期待能够得到你们的真挚反馈。
  欢迎大家多多参与OpenNI开源社区的建设。
致谢
  首先要感谢PrimeSense公司,它为今天的体感应用发展打下了坚实的基础 。
  感谢南京理工大学电光学院的老师和同学们,是你们在工作中给予我指导与配合。
  感谢苏州华硕科技有限公司的很多好朋友,感谢你们长期对社区的支持和贡献。感谢周小瑞的协调,在你的努力下才促成了这本书的合作与出版。
  感谢机械工业出版社华章分社的编辑们,在这一年多的时间里始终支持我们的写作,是你们的鼓励和帮助引导我们顺利完成全部书稿。
  最后感谢我的爸爸、妈妈、外婆,感谢你们将我培养成人,并时时刻刻为我灌输着信心和力量!
  谨以此书献给我最亲爱的家人,以及众多热爱OpenNI的朋友们!

任 侃

上架指导

计算机\程序设计

封底文字

OpenNI作为一个成熟的、开源的体感应用开发框架,因为具备很多优势,所以非常受欢迎。在CNKinect社区乃至全球的体感应用开发社区,关于OpenNI的讨论和交流都非常多。由于OpenNI功能本身比较强大,技术更新也比较快,而且中文资料缺乏,所以它成为了CNKinect社区最火热的话题之一,经常有开发者提各种各样的问题,但是很多问题得不到及时的回答,甚至是没有回答。本书的出版将会是体感应用开发者的福音,它不仅详细讲解了OpenNI的功能和原理,还讲解了如何基于它在主流的体感设备Xtion上开发体感应用。
——王峰 CNKinect创始人
本书的写作是在国内OpenNI社区、CNKinect社区和华硕官方等多方的支持下完成的,作者团队收集和分析了社区开发者在OpenNI的使用过程中遇到的各种问题,同时也吸收了社区开发者的集体智慧和经验,还参阅了华硕官方提供的一些权威的关于Xtion设备的相关信息。力争书的内容不仅要接地气,有针对性和实战性;而且要够权威,全面、系统、有深度。

作者简介

任侃 曹越 吴杰 等著:暂无简介

图书目录

前 言
第一部分 基础篇
第1章 自然人机交互 2
1.1 什么是自然交互 2
1.2 科幻电影场景的人机交互 3
1.3 自然人机交互技术发展现状 4
1.4 本章小结 8
第2章 Xtion硬件设备 9
2.1 Xtion设备简介 9
2.1.1 Xtion设备的类型 9
2.1.2 Xtion设备的功能 10
2.1.3 Xtion设备的规格 10
2.2 Xtion设备的优势 11
2.2.1 Xtion和Kinect的区别 11
2.2.2 硬件设备的软件支持 12
2.3 深度感应器原理 14
2.3.1 感应器架构 14
2.3.2 深度感应器工作原理 15
2.3.3 深度精确度分析 16
2.3.4 无法侦测物体深度 17
2.4 本章小结 19
第3章 OpenNI开发方案 20
3.1 初识OpenNI 20
3.1.1 OpenNI架构 20
3.1.2 OpenNI支持的模块 22
3.1.3 OpenNI的功能 23
3.1.4 OpenNI中的对象 24
3.1.5 OpenNI版本更新说明 25
3.2 OpenNI生产节点 27
3.2.1 生产节点的类型 28
3.2.2 生产节点概念图 28
3.2.3 生成和读取数据 30
3.2.4 OpenNI接口的配置 31
3.3 OpenNI应用 31
3.3.1 Xtion Controller应用 31
3.3.2 INOUT应用 31
3.3.3 Artec Studio应用 31
3.3.4 体感技术在初音未来上的应用 33
3.4 本章小结 33
第二部分 准备篇
第4章 Xtion开发准备工作 36
4.1 下载OpenNI及相应程式 36
4.1.1 下载SDK 36
4.1.2 下载Middleware 37
4.1.3 下载OpenNI以及相应的NITE 38
4.2 安装OpenNI 38
4.2.1 Windows环境下的准备工作 38
4.2.2 OpenNI档案及相关环境 39
4.2.3 加载设备驱动 40
4.2.4 检测Xtion设备 40
4.2.5 NiViewer基本控制方法 41
4.3 使用Xtion的注意事项 41
4.4 本章小结 42
第5章 搭建基础的Xtion体感开发环境 43
5.1 创建控制台工程 43
5.2 配置工程OpenNI环境 45
5.3 本章小结 49
第6章 初识Xtion体感开发 50
6.1 OpenNI基础应用 50
6.1.1 上下文对象初始化 50
6.1.2 创建生产节点 51
6.1.3 使用XML文档中的生产节点 52
6.1.4 错误信息返回 53
6.1.5 开始产生数据 54
6.1.6 停止产生数据 54
6.1.7 上下文对象资源释放 55
6.1.8 更新数据 55
6.1.9 镜像设置 56
6.1.10 图像位置校正 57
6.2 图生成器 58
6.2.1 获取支持图输出模式 58
6.2.2 图生成器输出模式 59
6.2.3 获取和设置图输出模式 59
6.2.4 获取图像素字节数 60
6.3 深度生成器 61
6.3.1 获取深度元数据对象 61
6.3.2 获取深度图 61
6.3.3 获取设备最大深度 62
6.3.4 获取设备视野范围 62
6.3.5 绝对坐标和相对坐标转换 63
6.3.6 获取用户位置功能 64
6.4 用户生成器 64
6.4.1 获取用户数量 65
6.4.2 获取用户 65
6.4.3 获取用户质心 66
6.4.4 获取用户像素 66
6.4.5 注册用户回调函数 67
6.4.6 获取骨架功能 68
6.4.7 获取姿势侦测功能 68
6.5 场景分析器 69
6.5.1 获取场景元数据对象 69
6.5.2 获取场景地板 69
6.5.3 获取场景标识段 70
6.6 图生成器的概念及功能 70
6.6.1 图元数据对象 71
6.6.2 输出模式设定 72
6.7 OpenNI程序流程 73
6.7.1 初始化Context 75
6.7.2 建立Production Node 75
6.7.3 开始产生资料 75
6.7.4 更新、读取资料 76
6.7.5 处理读取的资料 76
6.7.6 结束和错误侦测 76
6.8 本章小结 77
第三部分 进阶篇
第7章 人体骨架追踪 80
7.1 坐标系 80
7.1.1 绝对坐标 80
7.1.2 相对坐标 81
7.1.3 相对坐标和绝对坐标的转换 81
7.2 关节 82
7.2.1 OpenNI可侦测的关节点 82
7.2.2 读取关节资料函数 83
7.2.3 关节位置的平滑化 84
7.3 人体骨架追踪流程 85
7.3.1 需要特定姿势的骨架追踪 85
7.3.2 不需要特定姿势的骨架追踪 86
7.3.3 使用现有校正资料 87
7.4 人体骨架追踪程序搭建流程 87
7.4.1 创建并初始化设备上下文 88
7.4.2 创建并设定生产节点 88
7.4.3 注册回调函数 89
7.4.4 开始侦测数据 92
7.4.5 更新数据 92
7.4.6 得到用户信息 93
7.5 人体骨架识别范例 94
7.6 本章小结 97
第8章 手势识别与手部追踪 98
8.1 手势识别原理 99
8.1.1 OpenNI支持的手势 99
8.1.2 遍历NITE支持的手势 99
8.1.3 添加手势与回调函数 99
8.1.4 手势识别范例 102
8.2 NITE控制 104
8.2.1 NITE Control函数详解 104
8.2.2 NITE Control范例 106
8.3 手部追踪原理 110
8.3.1 手心生成器回调函数注册 110
8.3.2 手部追踪初始化 110
8.4 本章小结 111
第9章 录制与重播 112
9.1 录制 112
9.1.1 创建录制器 113
9.1.2 设置录制目标档案 113
9.1.3 获取录制目标档案 113
9.1.4 添加录制节点 114
9.1.5 删除录制节点 114
9.2 重播 115
9.2.1 设置重复播放 115
9.2.2 设置和获取播放源资料 115
9.2.3 设置重播起始时间 116
9.2.4 获取当前播放位置信息 117
9.2.5 检索播放器中的节点 118
9.2.6 判断是否播放结束 118
9.2.7 注册播放到结尾事件回调函数 118
9.2.8 设置回放速率 119
9.3 本章小结 119
第10章 限制生产节点的建立条件 120
10.1 有条件地建立生产节点 120
10.1.1 添加限制条件 121
10.1.2 设置限制条件 121
10.1.3 建立生产节点 121
10.2 通过限制条件列举符合条件的生产节点 122
10.3 根据节点信息建立生产节点 122
10.4 本章小结 123
第11章 使用XML文档初始化 124
11.1 XML文档设定参数 124
11.1.1 XML文档基本架构 124
11.1.2 XML文档中的节点 126
11.1.3 XML文档使用范例 127
11.2 使用XML文档配置功能 128
11.2.1 强制录制ONI文档的XML配置 128
11.2.2 资料产生 129
11.3 本章小结 129
第12章 声音数据的获取与使用 130
12.1 声音生成器 130
12.1.1 创建声音生成器 130
12.1.2 获取声音数据 131
12.1.3 设置声音设备的输出模式 132
12.1.4 注意事项 132
12.2 声音数据的处理 132
12.2.1 声音录制 133
12.2.2 声音播放 134
12.3 本章小结 136
第13章 彩色图像的获取和贴图 137
13.1 OpenNI框架支持的图像格式 137
13.2 图像生成器 138
13.2.1 创建图像生成器 138
13.2.2 获取图像数据 139
13.2.3 设置及获取图像生成器的输出格式 140
13.3 获取RGB影像及贴出RGB影像 141
13.4 本章小结 143
第四部分 实战篇
第14章 体感鼠标模拟 146
14.1 手部追踪与鼠标模拟 146
14.2 程序编写前的准备工作 146
14.2.1 环境准备 146
14.2.2 界面准备 149
14.2.3 鼠标相关参数配置准备 149
14.3 初始化 149
14.3.1 对话框初始化 150
14.3.2 载入ini文档中的配置 151
14.3.3 OpenNI程序环境初始化 151
14.4 程序设计 154
14.4.1 获取深度图 154
14.4.2 获取用户数据 155
14.4.3 鼠标左右手模式的选择及切换 156
14.4.4 滚轮控制放大和缩小 157
14.4.5 左手控制鼠标 158
14.4.6 右手控制鼠标 159
14.4.7 鼠标事件指令发送 161
14.4.8 悬停状态设计 163
14.5 本章小结 165
第15章 Xtion玩《街头霸王》 166
15.1 用身体控制游戏人物 166
15.1.1 人物基本操控动作 167
15.1.2 通用招式动作设计 167
15.1.3 游戏人物的特有招式设计 168
15.2 创建工程、配置工程环境 169
15.3 初始化 171
15.3.1 读取深度数据 172
15.3.2 处理深度数据 172
15.3.3 获取骨架 173
15.3.4 骨架数据的初步处理 174
15.4 Ken人物动作的表述 176
15.4.1 轻拳 176
15.4.2 跳起 178
15.4.3 波动拳 180
15.4.4 神龙拳  183
15.5 虚拟按键机制 186
15.6 本章小结 188
第16章 体感方向盘玩赛车类游戏 189
16.1 体感方向盘设计 189
16.1.1 操控方向盘基本动作 189
16.1.2 虚拟线性手柄模拟方向盘 189
16.2 体感方向盘程序开发初始化 191
16.2.1 环境初始化 191
16.2.2 虚拟手柄初始化 193
16.3 模拟方向盘操控 196
16.3.1 获取用户信息 196
16.3.2 左右方向的控制 197
16.3.3 油门与刹车 199
16.3.4 发送指令给虚拟线性手柄 200
16.4 本章小结 201
第17章 Xtion控制机器人 202
17.1 体感控制机器人需求分析 202
17.1.1 了解机器人构造 202
17.1.2 如何用身体操控机器人 203
17.1.3 机器人操控程序界面设计 203
17.2 初始化 204
17.2.1 界面初始化 204
17.2.2 体感追踪初始化 206
17.2.3 回调函数 207
17.3 控制机器人 207
17.3.1 连接机器人 207
17.3.2 发送指令 208
17.4 机器人程序代码实现 209
17.4.1 骨骼数据的初步获取 209
17.4.2 左肩的体感控制 211
17.4.3 大臂转动的控制 213
17.4.4 肘部角度计算 215
17.4.5 手部角度计算 215
17.4.6 小手臂转动 222
17.5 本章小结 222
第五部分 高级篇
第18章 BVH骨架转换 224
18.1 运动捕捉技术简介 224
18.1.1 典型的运动捕捉设备组成 225
18.1.2 传统捕捉技术 225
18.1.3 运动捕捉技术应用 228
18.1.4 运动捕捉技术优缺点 229
18.2 动作捕获数据 230
18.2.1 解析BVH文件 230
18.2.2 骨架结构 231
18.2.3 解读数据 232
18.3 旋转 233
18.3.1 基础2D旋转 233
18.3.2 3D坐标轴旋转 234
18.4 欧拉角 237
18.4.1 从欧拉角转换到矩阵 238
18.4.2 从矩阵转换到欧拉角 238
18.4.3 从骨架数据中提取欧拉角 239
18.5 本章小结 241
第19章 OpenNI Unity工具包 242
19.1 准备工作 242
19.1.1 下载和安装 243
19.1.2 创建基本对象 244
19.2 开始游戏 247
19.2.1 查看控制台中初始化过程 247
19.2.2 查看传感器的深度视图 248
19.2.3 雷达视图侦测用户 249
19.3 添加骨架模型 250
19.3.1 导入士兵模型 251
19.3.2 加入人物模型 252
19.3.3 修复模型 252
19.3.4 连接骨骼控制器 252
19.3.5 骨架匹配 254
19.3.6 模型制成预制件 257
19.4 添加用户选择器 257
19.4.1 用户与玩家的选择 258
19.4.2 美化 259
19.5 本章小结 259
附录 BVH文件格式示例 260

教学资源推荐
作者: George Coulouris, Jean Dollimore, Tim Kindberg
作者: (美)Richard Johnsonbaugh;Martin Kalin 著
作者: 顾治华 陈天煌 孙珊珊 编著
作者: [英] 约翰·M. 斯图尔特(John M. Stewart) 著
参考读物推荐