科技>计算机>计算机科学
计算机视觉40例从入门到深度学习(OpenCV-Python)  

计算机视觉40例从入门到深度学习(OpenCV-Python)  "

作者:李立宗
ISBN:9787121436857
定价:¥129.0
字数:930千字
页数:540
出版时间:2022-06
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。本书从基础知识、基础案例、机器学习、深度学习和人脸识别5个方面对计算机视觉的相关知识点进行了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有图像加密、指纹识别、车牌识别、缺陷检测等基于传统技术的计算机视觉经典案例,也有图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还有表情识别、驾驶员疲劳检测、易容术、性别和年龄识别等基于人脸识别的计算机视觉案例。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。本书适合计算机视觉领域的初学者阅读,也适合学生、教师、专业技术人员、图像处理爱好者阅读。

前言

前言 计算机视觉是目前最热门的研究领域之一,OpenCV-Python集成了OpenCV C++ API和Python的最佳特性,成为计算机视觉领域内极具影响力和实用性的工具。 近年来,我深耕计算机视觉领域,从事课程研发工作,在该领域,尤其是OpenCV-Python方面积累了一些经验,因此经常会收到与该领域相关的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把积累的知识以图文的形式分享给大家,我对该领域的知识点进行了系统的整理,编写了本书。希望本书的内容能够为大家在计算机视觉方面的学习提供帮助。 本书的主要内容 本书对计算机视觉涉及的知识点进行了全面、系统、深入的梳理,旨在帮助读者快速掌握该领域的核心知识点。全书包含5个部分,40余个计算机视觉经典案例,主要内容如下。 第1部分 基础知识导读篇 本部分对计算机视觉领域的基础内容进行了系统的梳理,以帮助初学者快速入门。本部分主要包含以下三方面内容: ? 数字图像基础(第1章) ? Python基础(第2章) ? OpenCV基础(第3章) 第2部分 基础案例篇 本部分主要为使用OpenCV-Python实现图像处理的经典案例,主要包含: ? 图像加密与解密(第4章) ? 数字水印(第5章) ? 物体计数(第6章) ? 缺陷检测(第7章) ? 手势识别(第8章) ? 答题卡识别(第9章) ? 隐身术(第10章) ? 以图搜图(第11章) ? 手写数字识别(第12章) ? 车牌识别(第13章) ? 指纹识别(第14章) 上述案例采用传统的图像处理方法解决问题,以帮助读者理解如下知识点: ? 图像预处理方法(阈值处理、形态学操作、图像边缘检测、滤波处理) ? 色彩空间处理 ? 逻辑运算(按位与、按位异或) ? ROI(感兴趣区域) ? 计算图像轮廓 ? 特征值提取、比对 ? 距离计算 第3部分 机器学习篇 本部分主要对机器学习基础知识及K近邻模块、SVM算法、K均值聚类模块进行了具体介绍。在上述基础上,使用OpenCV机器学习模块实现了下述案例: ? KNN实现字符(手写数字、英文字母)识别(第16章) ? 求解数独图像(第17章) ? SVM数字识别(第18章) ? 行人检测(第19章) ? K均值聚类实现艺术画(第20章) 第4部分 深度学习篇 本部分介绍了深度学习基础知识、卷积神经网络基础知识、深度学习案例。在第24章介绍了使用DNN模块实现计算机视觉的经典案例,主要有: ? 图像分类 ? 目标检测(YOLO算法、SSD算法) ? 语义分割 ? 实例分割 ? 风格迁移 ? 姿势识别 第5部分 人脸识别篇 本部分对人脸识别的相关基础、dlib库、人脸识别的典型应用进行了深入介绍。主要案例如下: ? 人脸检测(第25章) ? 人脸识别(第26章) ? 勾勒五官轮廓(第27章) ? 人脸对齐(第27章) ? 表情识别(第28章) ? 驾驶员疲劳检测(第28章) ? 易容术(第28章) ? 年龄和性别识别(第28章) 本书的主要特点 本书在内容的安排、组织、设计上遵循了如下思路。 1.适合入门 第1部分对计算机视觉的基础知识进行了全面的梳理,主要包括数字图像基础、Python基础、OpenCV基础。重点对计算机视觉中用到的基础理论、算法、图像处理,Python程序设计基础语法,OpenCV核心函数进行了介绍。该部分内容能够帮助没有计算机视觉基础的读者快速入门,也能够帮助有一定计算机视觉基础的读者对核心知识点进行快速梳理。 2.以案例为载体 按照知识点安排的教材的特点在于“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE),能够保证介绍的知识点“不重叠,不遗漏”。但是,跟着教材学习可能会存在如下问题:“了解了每一个知识点,但在遇到问题时感觉无从下手,不知道该运用哪些知识点来解决当前问题。” 知识点是一个个小石子,解决问题的思路是能够把许多石子串起来的绳子。绳子可以赋予石子更大的意义和价值,解决问题能够让知识点得以运用。 本书通过案例来介绍相关知识点,尽量避免将案例作为一个孤立的问题来看待,而是更多地考虑知识点之间的衔接、组合、应用场景等。例如,本书采用了多种不同的方式来实现手写数字识别,以帮助大家更好地从不同角度理解和分析问题。本书从案例实战的角度展开,将案例作为一根线,把所有知识点串起来,以帮助读者理解知识点间的关系并将它们组合运用,提高读者对知识点的理解和运用能力。 3.轻量级实现 尽量以简单明了的方式实现一个问题,以更好地帮读者搞清问题的核心和算法。用最简化的方式实现最小可用系统(Minimum Viable Product,MVP),用最低的成本和代价快速验证和迭代一个算法,这样更有利于理解问题、解决问题。在成本最低的前提下,利用现有的资源,以最快的速度行动起来才是最关键的。所以,本书尽可能简化每一个案例,尽量将代码控制在100行左右。希望通过这样的设计,让读者更好地关注算法核心。 4.专注算法 抽象可以帮助读者屏蔽无关细节,让读者能够专注于工具的使用,极大地提高工作效率。OpenCV及很多其他库提供的函数都是封装好的,只需要直接把输入传递给函数,函数就能够返回需要的结果。因此,本书没有对函数做过多介绍,而是将重点放在了实现案例所使用的核心算法上。 5.图解 一图胜千言。在描述关系、流程等一些相对比较复杂的知识点时,单纯使用语言描述,读者一时可能会难以理解。在面对复杂的知识点时,有经验的学习者会根据已有知识点绘制一幅与该知识点有关的图,从而进一步理解该知识点。因为图像能够更加清晰、直观、细致地将知识点的全局、结构、关系、流程、脉络等信息体现出来。本书配有大量精心制作的图表,希望能够更好地帮助读者理解相关知识点。 6.案例全面 本书涉及的40余个案例都是相关领域中比较典型的,涵盖了计算机视觉领域的核心应用和关键知识点。案例主要包括四个方面。 ? 基础部分:图像安全(图像加密、图像关键部位打码、隐身术)、图像识别(答题卡识别、手势识别、车牌识别、指纹识别、手写数字识别)、物体计数、图像检索、缺陷检测等。 ? 机器学习:KNN实现字符(手写数字、英文字母)识别、数独图像求解(KNN)、SVM手写数字识别、行人检测、艺术画(K均值聚类)等。 ? 深度学习:图像分类、目标检测(YOLO算法、SSD算法)、语义分割、实例分割、风格迁移、姿势识别等。 ? 人脸识别相关:人脸检测、人脸识别、勾勒五官轮廓、人脸对齐、表情识别、驾驶员疲劳检测、易容术、性别和年龄识别等。 感谢 首先,感谢我的导师高铁杠教授,感谢高教授带我走进了计算机视觉这一领域,以及一直以来给我的帮助。 感谢OpenCV开源库的所有贡献者让OpenCV变得更好,让计算机视觉领域更加精彩。 感谢本书的责任编辑符隆美老师,她积极促成本书的出版,修正了书中的技术性错误,并对本书内容进行了润色。感谢本书的封面设计老师为本书设计了精美的封面。感谢为本书出版而付出辛苦工作的每一位老师。 感谢合作单位天津拨云咨询服务有限公司为本书提供资源支持。 本书出版受天津职业技术师范大学教材支持项目(项目编号:XJJW1970)支持。 感谢家人的爱,我爱你们。 互动方式 限于本人水平,书中存在很多不足之处,欢迎大家提出宝贵的意见和建议,也非常欢迎大家跟我交流关于OpenCV的各种问题,我的邮箱是lilizong@gmail.com。 另外,大家也可以关注我的微信公众号“计算机视觉之光”(微信号cvlight)获取关于本书的配套资源。 李立宗 2022年5月27日于天津

目录

目录 第1部分 基础知识导读篇 第1章 数字图像基础 2 1.1 图像表示基础 2 1.1.1 艺术与生活 2 1.1.2 数字图像 3 1.1.3 二值图像的处理 5 1.1.4 像素值的范围 5 1.1.5 图像索引 7 1.2 彩色图像的表示 8 1.3 应用基础 9 1.3.1 量化 10 1.3.2 特征 10 1.3.3 距离 11 1.3.4 图像识别 13 1.3.5 信息隐藏 15 1.4 智能图像处理基础 16 1.5 抽象 18 第2章 Python基础 21 2.1 如何开始 21 2.2 基础语法 22 2.2.1 变量的概念 22 2.2.2 变量的使用 22 2.3 数据类型 24 2.3.1 基础类型 25 2.3.2 列表 25 2.3.3 元组 28 2.3.4 字典 29 2.4 选择结构 31 2.5 循环结构 35 2.6 函数 39 2.6.1 什么是函数 39 2.6.2 内置函数 41 2.6.3 自定义函数 42 2.7 模块 44 2.7.1 标准模块 44 2.7.2 第三方模块 45 2.7.3 自定义模块 46 第3章 OpenCV基础 47 3.1 基础 47 3.1.1 安装OpenCV 47 3.1.2 读取图像 49 3.1.3 显示图像 50 3.1.4 保存图像 51 3.2 图像处理 52 3.2.1 像素处理 52 3.2.2 通道处理 57 3.2.3 调整图像大小 60 3.3 感兴趣区域 62 3.4 掩模 63 3.4.1 掩模基础及构造 64 3.4.2 乘法运算 65 3.4.3 逻辑运算 66 3.4.4 掩模作为函数参数 68 3.5 色彩处理 69 3.5.1 色彩空间基础 69 3.5.2 色彩空间转换 71 3.5.3 获取皮肤范围 72 3.6 滤波处理 73 3.6.1 均值滤波 75 3.6.2 高斯滤波 78 3.6.3 中值滤波 82 3.7 形态学 84 3.7.1 腐蚀 85 3.7.2 膨胀 88 3.7.3 通用形态学函数 91 第2部分 基础案例篇 第4章 图像加密与解密 94 4.1 加密与解密原理 94 4.2 图像整体加密与解密 96 4.3 脸部打码及解码 98 4.3.1 掩模方式实现 98 4.3.2 ROI方式实现 101 第5章 数字水印 105 5.1 位平面 106 5.2 数字水印原理 114 5.3 实现方法 115 5.4 具体实现 119 5.5 可视化水印 121 5.5.1 ROI 121 5.5.2 加法运算 123 5.6 扩展学习 125 5.6.1 算术运算实现数字水印 125 5.6.2 艺术字 128 第6章 物体计数 131 6.1 理论基础 131 6.1.1 如何计算图像的中心点 131 6.1.2 获取图像的中心点 133 6.1.3 按照面积筛选前景对象 135 6.2 核心程序 138 6.2.1 核函数 138 6.2.2 zip函数 140 6.2.3 阈值处理函数threshold 140 6.3 程序设计 141 6.4 实现程序 142 第7章 缺陷检测 144 7.1 理论基础 144 7.1.1 开运算 144 7.1.2 距离变换函数distanceTransform 146 7.1.3 最小包围圆形 148 7.1.4 筛选标准 149 7.2 程序设计 150 7.3 实现程序 151 第8章 手势识别 153 8.1 理论基础 154 8.1.1 获取凸包 154 8.1.2 凸缺陷 156 8.1.3 凸缺陷占凸包面积比 159 8.2 识别过程 161 8.2.1 识别流程 162 8.2.2 实现程序 165 8.3 扩展学习:石头、剪刀、布的识别 167 8.3.1 形状匹配 167 8.3.2 实现程序 170 第9章 答题卡识别 173 9.1 单道题目的识别 173 9.1.1 基本流程及原理 173 9.1.2 实现程序 178 9.2 整张答题卡识别原理 180 9.2.1 图像预处理 180 9.2.2 答题卡处理 181 9.2.3 筛选出所有选项 189 9.2.4 将选项按照题目分组 190 9.2.5 处理每一道题目的选项 195 9.2.6 显示结果 195 9.3 整张答题卡识别程序 195 第10章 隐身术 201 10.1 图像的隐身术 201 10.1.1 基本原理与实现 201 10.1.2 实现程序 213 10.1.3 问题及优化方向 214 10.2 视频隐身术 215 第11章 以图搜图 217 11.1 原理与实现 218 11.1.1 算法原理 218 11.1.2 感知哈希值计算方法 220 11.1.3 感知哈希值计算函数 224 11.1.4 计算距离 224 11.1.5 计算图像库内所有图像的哈希值 225 11.1.6 结果显示 226 11.2 实现程序 228 11.3 扩展学习 230 第12章 手写数字识别 231 12.1 基本原理 232 12.2 实现细节 233 12.3 实现程序 235 12.4 扩展阅读 236 第13章 车牌识别 238 13.1 基本原理 238 13.1.1 提取车牌 238 13.1.2 分割车牌 240 13.1.3 识别车牌 242 13.2 实现程序 246 13.3 下一步学习 249 第14章 指纹识别 250 14.1 指纹识别基本原理 251 14.2 指纹识别算法概述 251 14.2.1 描述关键点特征 251 14.2.2 特征提取 252 14.2.3 MCC匹配方法 254 14.2.4 参考资料 258 14.3 尺度不变特征变换 258 14.3.1 尺度空间变换 260 14.3.2 关键点定位 266 14.3.3 通过方向描述关键点 267 14.3.4 显示关键点 271 14.4 基于SIFT的指纹识别 273 14.4.1 距离计算 273 14.4.2 特征匹配 274 14.4.3 算法及实现程序 277 第3部分 机器学习篇 第15章 机器学习导读 282 15.1 机器学习是什么 283 15.2 机器学习基础概念 284 15.2.1 机器学习的类型 284 15.2.2 泛化能力 289 15.2.3 数据集的划分 290 15.2.4 模型的拟合 291 15.2.5 性能度量 292 15.2.6 偏差与方差 293 15.3 OpenCV中的机器学习模块 294 15.3.1 人工神经网络 295 15.3.2 决策树 296 15.3.3 EM模块 300 15.3.4 K近邻模块 300 15.3.5 logistic回归 303 15.3.6 贝叶斯分类器 305 15.3.7 支持向量机 308 15.3.8 随机梯度下降 SVM 分类器 310 15.4 OpenCV机器学习模块的使用 312 15.4.1 使用KNN模块分类 312 15.4.2 使用SVM模块分类 314 第16章 KNN实现字符识别 317 16.1 手写数字识别 317 16.2 英文字母识别 319 第17章 求解数独图像 322 17.1 基本过程 322 17.2 定位数独图像内的单元格 323 17.3 构造KNN模型 327 17.4 识别数独图像内的数字 330 17.5 求解数独 332 17.6 绘制数独求解结果 334 17.7 实现程序 335 17.8 扩展学习 338 第18章 SVM数字识别 339 18.1 基本流程 339 18.2 倾斜校正 340 18.3 HOG特征提取 343 18.4 数据处理 348 18.5 构造及使用SVM分类器 351 18.6 实现程序 352 18.7 参考学习 354 第19章 行人检测 355 19.1 方向梯度直方图特征 355 19.2 基础实现 358 19.2.1 基本流程 359 19.2.2 实现程序 359 19.3 函数detectMultiScale参数及优化 360 19.3.1 参数winStride 360 19.3.2 参数padding 362 19.3.3 参数scale 364 19.3.4 参数useMeanshiftGrouping 366 19.4 完整程序 369 19.5 参考学习 370 第20章 K均值聚类实现艺术画 371 20.1 理论基础 371 20.1.1 案例 371 20.1.2 K均值聚类的基本步骤 373 20.2 K均值聚类模块 374 20.3 艺术画 377 第4部分 深度学习篇 第21章 深度学习导读 384 21.1 从感知机到人工神经网络 384 21.1.1 感知机 384 21.1.2 激活函数 385 21.1.3 人工神经网络 387 21.1.4 完成分类 388 21.2 人工神经网络如何学习 389 21.3 深度学习是什么 390 21.3.1 深度的含义 390 21.3.2 表示学习 391 21.3.3 端到端 392 21.3.4 深度学习可视化 393 21.4 激活函数的分类 394 21.4.1 sigmoid函数 394 21.4.2 tanh函数 395 21.4.3 ReLU函数 395 21.4.4 Leaky ReLU函数 396 21.4.5 ELU函数 396 21.5 损失函数 397 21.5.1 为什么要用损失值 397 21.5.2 损失值如何起作用 398 21.5.3 均方误差 399 21.5.4 交叉熵误差 400 21.6 学习的技能与方法 401 21.6.1 全连接 401 21.6.2 随机失活 402 21.6.3 One-hot编码 403 21.6.4 学习率 403 21.6.5 正则化 404 21.6.6 mini-batch方法 405 21.6.7 超参数 406 21.7 深度学习游乐场 406 第22章 卷积神经网络基础 407 22.1 卷积基础 407 22.2 卷积原理 409 22.2.1 数值卷积 409 22.2.2 图像卷积 410 22.2.3 如何获取卷积核 411 22.3 填充和步长 412 22.4 池化操作 413 22.5 感受野 414 22.6 预处理与初始化 416 22.6.1 扩充数据集 416 22.6.2 标准化与归一化 417 22.6.3 网络参数初始化 418 22.7 CNN 418 22.7.1 LeNet 418 22.7.2 AlexNet 419 22.7.3 VGG网络 420 22.7.4 NiN 420 22.7.5 GooLeNet 421 22.7.6 残差网络 423 第23章 DNN模块 426 23.1 工作流程 427 23.2 模型导入 428 23.3 图像预处理 429 23.4 推理相关函数 438 第24章 深度学习应用实践 440 24.1 图像分类 441 24.1.1 图像分类模型 441 24.1.2 实现程序 442 24.2 目标检测 443 24.2.1 YOLO 444 24.2.2 SSD 447 24.3 图像分割 450 24.3.1 语义分割 450 24.3.2 实例分割 453 24.4 风格迁移 458 24.5 姿势识别 460 24.6 说明 463 第5部分 人脸识别篇 第25章 人脸检测 466 25.1 基本原理 466 25.2 级联分类器的使用 469 25.3 函数介绍 470 25.4 人脸检测实现 471 25.5 表情检测 473 第26章 人脸识别 475 26.1 人脸识别基础 475 26.1.1 人脸识别基本流程 475 26.1.2 OpenCV人脸识别基础 476 26.2 LBPH人脸识别 478 26.2.1 基本原理 478 26.2.2 函数介绍 482 26.2.3 案例介绍 482 26.3 EigenFaces人脸识别 484 26.3.1 基本原理 484 26.3.2 函数介绍 485 26.3.3 案例介绍 485 26.4 FisherFaces人脸识别 487 26.4.1 基本原理 487 26.4.2 函数介绍 489 26.4.3 案例介绍 489 26.5 人脸数据库 491 第27章 dlib库 493 27.1 定位人脸 493 27.2 绘制关键点 494 27.3 勾勒五官轮廓 497 27.4 人脸对齐 500 27.5 调用CNN实现人脸检测 502 第28章 人脸识别应用案例 504 28.1 表情识别 504 28.2 驾驶员疲劳检测 507 28.3 易容术 511 28.3.1 仿射 511 28.3.2 算法流程 512 28.3.3 实现程序 514 28.4 年龄和性别识别 517

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个