智能系统与技术丛书 深入理解OpenCV:实用计算机视觉项目解析(原书第3版)
作者:罗伊·希尔克罗特(Roy Shilkrot),大卫·米兰 著,唐灿 译
出版时间:2020年版
丛编项: 智能系统与技术丛书
内容简介
本书秉承“帮助计算机视觉工程师迈出掌握OpenCV的第一步”的初心,在保留必要的数学公式的情况下,针对当前热门的计算机视觉主题,如面部识别、关键点检测、姿态估计,以及基于深度卷积网络的车牌识别,展示了从构思到运行的全过程,并提供了完整的项目代码。无论你来自学术界还是工业界,都将从经验丰富的OpenCV专家那里学习如何轻松地实现计算机视觉产品和项目。通过多个完整的计算机视觉项目,你将熟悉API的功能,并深入了解在计算机视觉项目中如何设计和选型,不止讲解计算机视觉的基础,还从更高的层次上实现复杂的图像处理项目的解决方案。而且,你将能借助本书中的项目创建各种工作原型,对OpenCV 4的新功能做到烂熟于心。通过阅读本书,你将学会:使用有效的OpenCV代码对真实世界的计算机视觉问题进行建模发现OpenCV项目及维护的最佳实践探索用于复杂计算机视觉任务的算法设计方法使用OpenCV新的API(v4.0.0)从运动中理解3D场景结构和重建3D场景(SfM)使用ArUco模块进行相机标定并叠加AR物体
目录
译者序
前言
作者简介
审阅者简介
第1章 树莓派上的卡通化和皮肤颜色分析 1
1.1 访问摄像头 2
1.2 桌面应用程序的相机处理主循环 4
1.2.1 生成黑白素描 4
1.2.2 生成彩色绘画和卡通 6
1.2.3 用边缘滤波器来生成邪恶模式 8
1.2.4 用皮肤检测来生成外星人造型 9
1.3 皮肤变色器的实现 12
1.4 从桌面移植到嵌入式设备 19
1.4.1 用于开发嵌入式设备代码的设备配置 21
1.4.2 在嵌入式设备上安装OpenCV 27
1.5 小结 39
第2章 使用SfM模块从运动中恢复结构 40
2.1 技术要求 40
2.2 SfM的核心概念 41
2.2.1 相机标定和对极几何 42
2.2.2 立体重建和SfM 45
2.3 在OpenCV中实现SfM 48
2.3.1 图像特征匹配 48
2.3.2 找到特征轨迹 52
2.3.3 3D重建和可视化 55
2.3.4 用于稠密重建的MVS 57
2.4 小结 60
第3章 使用人脸模块进行人脸特征点及姿态检测 61
3.1 技术要求 61
3.2 背景和理论 63
3.2.1 主动外观模型与受约束的局部模型 63
3.2.2 回归方法 64
3.3 OpenCV中的人脸特征点检测 65
3.4 基于特征点的人脸方向估计 68
3.4.1 估计姿态计算 69
3.4.2 将姿态投影到图像上 70
3.5 小结 71
第4章 基于深度卷积网络的车牌识别 72
4.1 ANPR简介 72
4.2 ANPR算法 74
4.3 车牌检测 77
4.3.1 分割 78
4.3.2 分类 84
4.4 车牌识别 87
4.4.1 OCR分割 88
4.4.2 基于卷积神经网络的字符分类 89
4.5 小结 105
第5章 通过DNN模块进行人脸检测和识别 106
5.1 介绍人脸检测和人脸识别 106
5.1.1 人脸检测 108
5.1.2 人脸预处理 116
5.1.3 收集人脸并从中学习 127
5.1.4 人脸识别 138
5.1.5 收尾工作——保存和加载文件 141
5.1.6 收尾工作——制作一个漂亮的、交互体验好的GUI 141
5.2 小结 153
5.3 参考文献 154
第6章 Web计算机视觉之初识OpenCV.js 155
6.1 什么是OpenCV.js 155
6.2 编译OpenCV.js 157
6.3 OpenCV.js开发基础 159
6.4 访问摄像头流 165
6.5 图像处理和基本用户界面 169
6.5.1 阈值滤波器 170
6.5.2 高斯滤波器 170
6.5.3 canny滤波器 170
6.6 浏览器中的光流 174
6.7 在浏览器中使用Haar级联分类器进行人脸检测 178
6.8 小结 180
第7章 使用ArUco模块的Android相机校准和AR 182
7.1 技术要求 182
7.2 增强现实和姿态估计 183
7.2.1 相机校准 184
7.2.2 用于平面重建的增强现实标记 186
7.3 Android系统中的相机访问 188
7.4 使用ArUco进行相机校准 191
7.5 使用jMonkeyEngine实现增强现实 195
7.6 小结 196
第8章 带有拼接模块的iOS全景图 198
8.1 技术要求 198
8.2 全景图像拼接方法 199
8.2.1 全景图的特征提取和鲁棒匹配 200
8.2.2 变形图像,以便全景创建 203
8.3 项目概况 204
8.4 用CocoaPods设置iOS OpenCV项目 204
8.5 用于全景捕捉的iOS UI 205
8.6 Objective-C++包装器中的OpenCV拼接 209
8.7 小结 212
8.8 进一步阅读 212
第9章 为项目找到最佳OpenCV算法 213
9.1 技术要求 213
9.2 方案是否包含在OpenCV中 214
9.3 OpenCV中的算法选项 215
9.4 哪种算法最好 217
9.5 算法性能比较的示例 218
9.6 小结 223
第10章 避免OpenCV中的常见陷阱 224
10.1 OpenCV从v1到v4的历史 224
10.2 OpenCV中的历史算法 228
10.3 常见陷阱和建议解决方案 231
10.4 小结 236
10.5 进一步阅读 236