写作背景
写本书的初衷,源自作者学习数字图像处理的经历。
作者在专业创新教育课程中选择的教材是冈萨雷斯的《数字图像处理(第四版)》,学习的开始阶段非常困难。教材的开篇介绍绪论和数学工具,作者看得似懂非懂,似乎还不涉及编程;接下来的章节是灰度变换、空间滤波和频域滤波,涉及的内容丰富、方法繁多,作者试着编了几个程序就编不下去了。
于是,作者开始学习OpenCV,这是当下十分流行的计算机视觉软件库。作者找了几本学习教程,顺利运行了第一个例程。但是,接下来面对每个模块中几十个算法函数的讲解,作者又觉得“头大”了。而且,即便这些算法函数既有说明又有例程,作者还是不明所以,并不能真正理解和掌握。于是,对于OpenCV的学习也面临着半途而废的风险。
面对这种情况,作者回过头来,老老实实按照数字图像处理的知识体系,使用OpenCV对课程中的问题逐一编程实现。作者在CSDN网站开设了博客专栏“youcans的OpenCV例程”,把学习OpenCV数字图像处理的笔记整理为博客,迄今已经发布了260多篇文章。通过学习,作者深深体会到:①学习数字图像处理,一定离不开编程实践,否则连纸上谈兵都算不上;②学习OpenCV,要理解数字图像处理的知识体系,否则只是知其然,不知其所以然,开始很快乐,但是越往后越糊涂。
作者觉得数字图像处理与OpenCV就像左右手一样,是相辅相成、互为表里的。但是,在作者查阅的十几种数字图像处理教材和关于OpenCV的图书中,它们似乎分属两个门派,各自自成体系、泾渭分明,鲜有图书能将其融为一体,很难让像作者这样的“菜鸟”轻松入门、快速进阶。于是,作者决心自己写一本书,作为学习数字图像处理与OpenCV的桥梁。
本书适合学习数字图像处理课程的同学,不仅可以作为课程参考资料,而且可以让你轻松入门OpenCV;本书也适合OpenCV的初学者。本书比官方文档中的例程更加容易,会让初学者对数字图像处理的理解更加深入。对于有一定基础的读者,完全可以把本书作为OpenCV的常用函数手册,在需要时查阅。
主要内容
本书基于OpenCV-Python,介绍数字图像处理的基本方法和高级应用。全书共18章,分为四部分。
第一部分介绍OpenCV-Python的基本操作,包括第1~4章。
第1章介绍图像的基本操作,包括图像的读取、保存和显示方法等。
第2章介绍图像的数据格式,包括图像的创建、复制、裁剪、拼接、拆分、合并等基本方法。
第3章介绍彩色图像处理,包括图像的颜色空间转换、图像的伪彩色处理等。
第4章介绍绘图与鼠标交互,主要介绍其操作方法。
第二部分介绍图像处理的基本方法,包括第5~9章。
第5章介绍图像的算术运算,包括加、减、乘、除运算和位运算等。
第6章介绍图像的几何变换,包括图像的平移、图像的缩放和图像的旋转等。
第7章介绍图像的灰度变换,包括线性灰度变换和非线性灰度变换等。
第8章介绍图像的直方图处理,通过调控直方图来改善图像质量。
第9章介绍图像的阈值处理,包括OTSU阈值算法、多阈值处理算法等。
第三部分介绍图像处理的高级方法,包括第10~13章。
第10章介绍图像卷积与空间滤波,实现图像模糊和图像锐化。
第11章介绍傅里叶变换与频域滤波,设计更加丰富的滤波器。
第12章介绍形态学图像处理,包括基本操作、常用算法和典型应用。
第13章介绍图像变换、重建与复原,包括霍夫变换、雷登变换、图像重建和退化图像复原等。
第四部分介绍计算机视觉,包括第14~18章。
第14章介绍边缘检测与图像轮廓,包括边缘检测之梯度算子、LoG算子、DoG算子等。
第15章介绍图像分割,包括分水岭算法、图割分割算法和均值漂移算法等。
第16章介绍特征描述,包括特征描述之傅里叶描述符、特征描述之区域特征描述等。
第17章介绍特征检测与匹配,包括Harris、SIFT、SURF、FAST、ORB和MSER算法等。
第18章介绍机器学习,包括主成分分析、k均值聚类算法、k近邻算法、贝叶斯分类器、支持向量机和人工神经网络算法等。