深入理解OpenCV
出版信息
[巴西]Daniel Lelis Baggio / 刘波 / 机械工业出版社 / 2014-9 / 59
内容简介
opencv是最常见的计算机视觉库之一,它提供了许多经过优化的复杂算法。本书对已掌握基本opencv技术同时想提高计算机视觉的实践经验的开发者来讲是一本非常好的书。每章都有一个单独的项目,其背景也在这些章节中进行了介绍。因此,读者可以依次学习这些项目,也可以直接跳到感兴趣的项目进行学习。
《深入理解opencv:实用计算机视觉项目解析》详细讲解9个实用的计算机视觉项目,通过本书的学习,读者可以创建各种可运行的项目原型,例如,实时的移动应用、增强现实、从视频中获得三维形状、跟踪人脸和眼睛、车牌识别等。
作者简介
视觉是人类获取信息的主要来源。图像、视频等视觉信息载体也是当今大数据时代最大的数据源之一,在计算机工程、通信、生物学、医学、军事等领域有着广泛应用。由于计算机视觉涉及多个领域的专业知识,以及视觉对象的复杂性和视觉任务的多样,这使计算机视觉研究很困难。
OpenCV是开源、跨平台的计算机视觉库,其全称是Open Source Computer Vision Library。它是由英特尔公司发起并参与开发的,可在商业和研究领域中免费使用。OpenCV能开发实时的图像处理、运动跟踪、目标检测等程序。
但目前通过实际应用项目来介绍OpenCV的书很少。本书通过8个典型的计算机视觉项目来介绍OpenCV强大、高效的功能。这8个项目涵盖了计算视觉的如下领域:基于iPhone或iPad的增强现实;从运动中得到3D结构;车牌识别;人脸识别与跟踪;三维头部姿态估计等。这些项目均用C/C++实现,对于关键代码,作者给出非常详细的介绍。在每章中,作者不但介绍项目的应用背景、整体框架、软件设计方法,同时也深入浅出地介绍了与项目相关的机器学习理论。毫不夸张地讲,这是一本用OpenCV来实践计算机视觉应用难得的好书。
翻译本书的过程也是我学习的过程,虽然辛苦但也不觉得累。为了做到专业词汇准确权威,书本内容正确,意译部分既不失原著意境又无偏差, 在翻译过程中查阅了大量相关资料。但由于时间和能力有限,书中内容难免存在纰漏。若有问题,读者可通过电子邮件liubo7971@173.com与我联系,欢迎一起探讨,共同进步。
本书翻译过程得到如下项目资助:(1)重庆市教委研究项目“多核正则化机器学习理论研究”,项目号:KJ130709;(2)重庆工商大学研究项目“基于多核学习的高维数据分析研究”,项目号:2013-56-09;(3)大数据稀疏表示判别字典学习及其应用技术研究项目号:KJ1400612。
感谢河南工业大学信息科学与工程学院的靳小波博士对本书翻译的支持与鼓励,也感谢我的家人,特别感谢我妻子杨雪莉和女儿刘典。虽然翻译本书占用了本应陪她们的大量时间,但她们一直包容并支持我。
目录
《深入理解opencv:实用计算机视觉项目解析》
译者序
前 言
第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 局部�C全局相结合的表示 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