新書推薦:
《
药食同源中药鉴别图典
》
售價:HK$
68.8
《
设计中的比例密码:建筑与室内设计
》
售價:HK$
89.7
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:HK$
55.8
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:HK$
78.2
《
汗青堂丛书144·决战地中海
》
售價:HK$
172.5
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:HK$
56.4
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:HK$
87.4
《
知宋·宋代之科举
》
售價:HK$
102.4
編輯推薦:
OpenCV的主要开发者和OpenCV社区的主要贡献者携手,深入解析OpenCV技术在计算机视觉项目中的应用,Amazon广泛好评
通过典型计算机视觉项目,系统讲解使用OpenCV技术构建计算机视觉相关应用的各种技术细节、方法和最佳实践,并提供全部实现源码,为读者快速实践OpenCV技术提供翔实指导
內容簡介:
OpenCV是一个开源的计算机视觉库,在计算机视觉的开发中扮演着重要的角色。它为计算机视觉应用开发提供了灵活、功能强大的开发接口,使其成为计算机视觉专业人员所依赖的重要开发工具。本书系统地介绍如何使用OpenCV来构建与计算机视觉相关的应用,如增强现实、车牌识别、人脸检测等。每章都会介绍一个典型的计算机视觉应用问题,并并提供相关的背景介绍及全部源代码,为快速解决实际计算机视觉项目遇到的问题提供系统实用指南。
全书共9章:第1章介绍Android系统上的卡通化和皮肤变换;第2章讲解如何针对iPhone或iPad设备来构建基于标记的增强现实AR应用;第3章讲解怎样开发无标记增强现实桌面应用;第4章介绍如何从2D图像重构3D几何结构,以及如何估计摄像机位置;第5章讲解如何通过模式识别算法来判断一幅图像是否为车牌;第6章构建一个动态人脸跟踪系统;第7章讲解如何根据AAM提供的拟和能力来匹配给定帧;第8章介绍基于特征脸或Fisher脸的人脸识别技术;第9章包含一个互动流体模拟器称为流体墙的完整开发流程。
關於作者:
Daniel Lélis Baggio 最初通过圣保罗的InCor(Instituto do Cora??o-心脏研究所)开始接触计算机视觉,在那里,他曾从事血管内超声图像分割。从那时起,他一直专注于GPGPU,并移植分割算法到NVIDIA的CUDA上工作。他也潜心研究个名为EHCI项目(http:code.google.compehci),该项目采用自然的用户界面来实现六自由度头部跟踪。他现在在巴西空军工作。
译者简介
刘波 博士,重庆工商大学计算机科学与信息工程学院教师,主要从事机器学习的理论、计算机视觉和最优化技术研究,同时爱好Linux平台的编程和Oracle数据库。
目錄 :
目 录
译者序
前 言
第1章 Android系统上的卡通化和皮肤变换 1
1.1 访问摄像机 2
1.2 桌面应用处理摄像机视频的主循环 3
1.3 生成黑白素描 4
1.4 生成彩色图像和卡通 5
1.5 用边缘滤波器来生成“怪物”模式 7
1.6 用皮肤检测来生成
“外星人”造型 8
1.6.1 皮肤检测算法 8
1.6.2 确定用户放置脸的位置 9
1.6.3 皮肤变色器的实现 10
1.7 把桌面应用移植到Android系统 14
1.7.1 安装使用OpenCV的Android项目 14
1.7.2 在Android NDK应用中添加卡通化代码 17
1.7.3 在Android系统中显示保存图像的消息 24
1.7.4 降低素描图像的随机椒盐噪声 27
1.8 总结 31
第2章 iPhone或iPad上基于标记的增强现实 32
2.1 使用OpenCV创建iOS项目 33
2.1.1 添加OpenCV框架 34
2.1.2 包含OpenCV头文件 35
2.2 应用程序的结构 36
2.3 标记检测 43
2.3.1 标记识别 44
2.3.2 标记编码识别 50
2.4 在三维空间放置标记 53
2.4.1 摄像机标定 53
2.4.2 标记姿态估计 54
2.5 渲染3D虚拟物体 56
2.5.1 创建OpenGL渲染层 56
2.5.2 渲染AR场景 59
2.6 总结 64
2.7 参考文献 64
第3章 无标记的增加现实 65
3.1 基于标记的AR与无标记的AR 65
3.2 使用特征描述符检测视频中的任意图像 66
3.2.1 特征提取 67
3.2.2 模式对象定义 69
3.2.3 特征点匹配 69
3.2.4 删除离群值 70
3.2.5 将示例项目各部分放在一起 76
3.3 模式姿态估计 77
3.3.1 PatternDetector.cpp 77
3.3.2 获取摄像机内矩阵 78
3.4 应用的基础架构 81
3.4.1 ARPipeline.hpp 82
3.4.2 ARPipeline.cpp 82
3.4.3 在OpenCV中启用三维可视化支持 83
3.4.4 使用OpenCV来创建OpenGL窗口 84
3.4.5 使用OpenCV捕获视频 85
3.4.6 渲染增强现实 85
3.4.7 演示应用程序 88
3.5 总结 91
3.6 参考文献 91
第4章 使用OpenCV研究从运动中恢复结构 92
4.1 从运动中恢复结构的概念 93
4.2 从两幅图像估计摄像机运动 94
4.2.1 通过丰富的特征描述符进行点匹配 94
4.2.2 通过光流进行点匹配 96
4.2.3 搜索摄像机矩阵 99
4.3 重构场景 102
4.4 从多视图中重构 105
4.5 重构的细化 108
4.6 用PCL来可视化3D点云 111
4.7 使用示例代码 113
4.8 总结 114
4.9 参考文献 115
第5章 基于SVM和神经网络的车牌识别 116
5.1 ANPR简介 116
5.2 ANPR算法 118
5.3 车牌检测 119
5.3.1 图像分割 120
5.3.2 分类 125
5.4 车牌号识别 127
5.4.1 OCR分割 127
5.4.2 特征提取 129
5.4.3 OCR分类 130
5.4.4 评价 133
5.5 总结 136
第6章 非刚性人脸跟踪 137
6.1 概述 138
6.2 实用工具 139
6.2.1 面向对象设计 139
6.2.2 数据收集:图像和视频标注 140
6.3 几何约束 145
6.3.1 Procrustes分析 146
6.3.2 线性形状模型 148
6.3.3 局部–全局相结合的表示 150
6.3.4 训练与可视化 152
6.4 面部特征检测器 154
6.4.1 相关性块模型 155
6.4.2 解释全局几何变换 159
6.4.3 训练与可视化 161
6.5 人脸检测与初始化 163
6.6 人脸跟踪 166
6.6.1 人脸跟踪实现 166
6.6.2 训练与可视化 168
6.6.3 通用与专用人脸模型 168
6.7 总结 169
6.8 参考文献 169
第7章 基于AAM和POSIT的
三维头部姿态估计 170
7.1 主动外观模型概述 171
7.2 主动形状模型概述 172
7.2.1 感受PCA 174
7.2.2 三角剖分 177
7.2.3 扭曲三角化结构 179
7.3 模型实例化——试试主动外观模型 180
7.4 主动外观模型搜索和拟合 181
7.5 POSIT算法 182
7.5.1 深入理解POSIT算法 183
7.5.2 POSIT与头部模型 185
7.5.3 对摄像机或视频文件进行跟踪 185
7.6 总结 187
7.7 参考文献 187
第8章 基于特征脸或Fisher脸的人脸识别 189
8.1 人脸识别与人脸检测介绍 189
8.1.1 第一步:人脸检测 191
8.1.2 检测人脸 194
8.1.3 第2步:人脸预处理 196
8.1.4 第3步:收集并训练人脸 204
8.1.5 第4步:人脸识别 212
8.1.6 收尾工作:保存和加载文件 215
8.1.7 收尾工作:制作一个漂亮的交互式GUI 215
8.2 总结 225
8.3 参考文献 225
內容試閱 :
第1章
Android系统上的卡通化和皮肤变换
本章将介绍如何针对Android智能手机和平板电脑编写图像处理滤波器,首先在台式机上(用CC++)实现,然后移植到Android 系统上(用CC++实现的代码与台式机一样,但GUI用Java来编写),这是移动设备开发所推崇的方式。本章的主要内容如下:
如何将现实生活中的图像转换为素描;
如何生成彩色图画并将素描叠加上去来生成卡通画;
用恐怖的“怪物”模式来创建坏人形象;
通过基本的皮肤检测器和皮肤变色器让人脸变成绿色“外星人”皮肤;
如何将桌面应用项目转换为移动设备上的应用程序。
下面的屏幕截图来自于运行在Android平板电脑上的卡通化应用程序。
本章希望摄像机拍摄的现实世界看起来像卡通画一样。其基本思路是用某种颜色来填充平整部分,然后用粗线来绘制图像较明显的边缘。也就是说,平整区域变得更加平,而边缘应变得更加明显。可先检测边缘并对平整区域进行平滑处理,然后增加边缘并从顶部开始来产生一个卡通或漫画效果。
当开发移动设备上的计算机视觉应用时,一种好的方法是先创建一个完整的桌面应用版本,再移植到移动设备上,因为开发和调试桌面应用程序比移动应用程序要容易!因此,本章将以一个完整的卡通化桌面应用开始,读者可用自己喜欢的IDE(如:Visual Studio、 XCode、Eclipse、QtCreator等)来编写该应用。当其在PC上正确运行后,我们将在最后一节介绍如何用Eclipse将其移植到Android (或iOS)系统中。因此会创建两个不同的项目,它们会共享绝大多数源代码,但有不同的图形用户界面。可创建两个项目都可使用的库,但为了简化起见,可将桌面项目和Android项目放在一起,让Android项目通过desktop文件夹来访问一些文件(cartoon.cpp和cartoon.h,它们包含了所有图像处理代码)。例如:
C:\Cartoonifier_Desktop\cartoon.cpp
C:\Cartoonifier_Desktop\cartoon.h
C:\Cartoonifier_Desktop\main_desktop.cpp
C:\Cartoonifier_Android\...
桌面应用有一个OpenCV GUI窗口,初始化摄像机,并在处理摄像机的每帧时都调用cartoonifyImage 函数,该函数包含了本章大多数代码。然后在GUI窗口显示被处理的图像。与之类似,Android应用程序也有一个Android GUI窗口,会用Java程序来初始化摄像机,并调用前面提到的那个用C++实现的cartoonifyImage 函数来处理摄像机的每一帧,除此之外还有Android 菜单并支持触摸输入。本章将从头开始介绍如何创建桌面应用程序,该Android应用基于其中的一个OpenCV Android示例项目。因此,首先在读者所熟悉的IDE中创建桌面应用程序,其中,用于保存GUI代码的main_desktop.cpp文件将在下一节给出,该文件包含主循环、摄像机功能以及键盘输入,同时,还应创建两个项目共享的cartoon.cpp文件。本章大多数代码都会放在函数cartoonifyImage 中,该函数保存在cartoon.cpp文件中。