数字图像处理与机器视觉:Visual C++与Matlab实现(第2版)
上QQ阅读APP看书,第一时间看更新

前言

图像处理与机器视觉是当今计算机科学中的一个热门研究方向,应用广泛,发展前景乐观。近年来,伴随着人工智能、模式识别学科以及人机智能接口技术的飞速发展,机器视觉的研究正在不断升温——从日常生活中与人类息息相关的光学字符识别(OCR)和汽车自动驾驶,到医学应用中的病灶检测与分析,再到未来人机智能交互领域中的人脸识别、情感计算等,图像处理作为机器视觉研究中必不可少的图像预处理环节是读者需要掌握的首要技术。

和图像相关的东西往往容易引起计算机初学者的兴趣,笔者在读本科的时候就觉得能让计算机理解所“看”到的东西是一件非常神秘和令人兴奋的事情;但同时它的理论性较强,门槛较高,在各个高校中,这门课程大多也是作为计算机专业研究生的选修课程。要理解该领域的知识,读者需要具有一定的数学基础,除此之外还涉及信号处理、统计分析、模式识别和机器学习等专业领域知识,因此令很多人望而却步。

其实“难以理解”的关键在于缺乏必要的先序知识,造成了读者在相关知识上难以跨越的鸿沟。在撰写本书过程中,对于可能造成读者理解困难的地方,均尽可能地给出了必要的基本知识,深入浅出,尽量定性地去描述,对于那些并不一目了然的结论均给出了思路和解释,必要的还提供了证明,对于某些非常专业已经超过本书讨论范围的相关知识在最后给出了参考文献,供有兴趣的读者进一步学习和研究。

本书的宗旨是在向读者介绍知识的同时,培养读者的思维方法,使读者知其然还要知其所以然,并在解决实际问题中能有自己的想法。

1.内容安排

本书在第一版的基础上,根据技术的发展和应用的需求进行改版,主要内容介绍如下。

第0~2章介绍了数字图像处理的基础知识和编程基础,使读者第一步能够建立起对于数字图像本质的正确认识,了解和掌握必要的术语和预备知识,并且熟悉本书自始至终需要使用的两大工具MATLAB和Visual C++,给出了功能强大的C++数字图像处理基类CImg及其派生类CImgProcess的框架。

第3~4章分别介绍了图像的灰度变换和几何变换。通过灰度变换可以有效改善图像的外观,并在一定程度上实现图像的灰度归一化;几何变换则主要应用在图像的几何归一化和图像校准当中。总体而言,这些内容大多作为图像的前期预处理工作的一部分,是图像处理中相对固定和程式化的内容。

第5~6章分别从空间域和频率域两个角度去考量图像增强的各个主要方面。图像增强作为数字图像处理中相对简单却最具艺术性的领域之一,可理解为根据特定的需要突出一幅图像中的某些信息,同时,削弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某种特定的应用来说,比原始图像更适用。

第7章小波变换继第6章之后继续在频率域中研究图像。傅里叶变换一直是频率域图像处理的基石,它能用正余弦函数之和表示任何分析函数,而小波变换则基于一些有限宽度的基小波,这些小波不仅在频率上是变化的,而且具有有限的持续时间。比如对于一个乐谱,小波变换不仅能提供要演奏的音符,而且说明了何时演奏等细节信息,但是傅里叶变换只提供了音符,局部信息在变换中丢失。

第8章图像复原与图像增强相似,其目的也是改善图像质量。但是图像复原是试图利用退化过程的先验知识使已被退化的图像恢复本来面目,而图像增强是用某种试探的方式改善图像质量,以适应人眼的视觉与心理。引起图像退化的因素包括由光学系统、运动等造成的图像模糊,以及源自电路和光学因素的噪声等。图像复原是基于图像退化的数学模型,复原的方法也建立在比较严格的数学推导上。

第9章是本书中相对独立的一章,以介绍色彩模型之间的相互转换以及彩色图像处理方面的基本概念和基本方法为主。随着基于互联网的图像处理应用在不断增长,彩色图像处理已经成为一个重要领域。

第10章图像压缩旨在减少表示数字图像时需要的数据量。主要介绍了图像压缩的基本原理、DCT变换、预测编码、霍夫曼编解码,以及算术编码和游程编码等知识,并给出了有关JPEG和JPEG2000压缩标准的内容。

第11~13章(形态学图像处理、图像分割、特征提取)是从单纯图像处理向图像识别(机器视觉)过渡,这一阶段的特点是输入是图像,输出则是在识别意义上读者感兴趣的图像元素。形态学处理是提取图像元素的有力技术,它在表现和描述形状方面非常有用;分割过程则将一幅图像划分为组成部分或目标对象;研究特征提取则是要将前面提取出来的图像元素或目标对象表示为适合计算机后续处理的数值形式,最终形成能够直接供分类器使用的特征。

第14章在前面知识的基础之上,引出了机器视觉的前导性内容,给出了解决识别问题的一般思路。

最后3章(人工神经网络、支持向量机和AdaBoost)介绍了3种十分强大的分类技术,并在手写数字字符识别、人脸识别和性别分类这样的经典案例中进行讲解。

2.读者对象

• 大学二年级以上(具备必要的数学基础)的相关专业的本科生、研究生。

• 工作在图像处理和识别领域一线的工程技术人员。

• 对于数字图像处理和机器视觉感兴趣的并且具备必要预备知识的所有读者。

3.在阅读本书之前,读者最好具有如下的预备知识

• 读者应该熟悉C++编程语言和面向对象的基本思想。书中的相当一部分示例是以C++语言描述的。

• 读者应具备一定的数学基础,主要的高等数学知识、少量的线性代数基本概念加上对于概率理论主要思想的理解(识别部分)。

4.附书光盘和读者反馈

本书所有Visual C++实例的源代码和大部分Matlab实例的源代码均可在随书附赠的光盘中找到。为了尽可能满足所有读者的需要,同时提供了C++代码的Visual C++ 6.0版本和Visual Studio 2010/2012版本。虽然本书中的所有例子都已经在Windows XP、Windows 2003和Windows7下测试通过,但由于许多算法比较复杂且笔者水平局限,也有存在缺陷的可能,即便正确也很可能存在更加优化的算法或更加合理的程序结构,如发现任何上述问题,欢迎读者通过以下方式联系本书作者,以便做出改进。

邮箱:book95_editor@qq.com

腾讯微博:@Book95_Aaron

5.致谢

首先要感谢我的授业恩师——南开大学的白刚教授和天津大学的赵政教授,是他们引导我进入了图像处理与机器视觉的研究领域。同时,他们在我写作过程中的指点和教诲确保了本书的权威性和严谨性。

感谢我的好友王烨阳提供并调试了许多实例代码;感谢徐超、陈明、张阳、李广鹏、马惠来、马宏、卞长迪、郑琦、王命达、杜强、陈香凝、苑春苗、宁升、李鸿鹏、李明剑等参与了本书部分章节的编写和修改;感谢罗小科先生为本书制作了很多插图;感谢我的兄长张钊为本书提供了部分照片;还要感谢朱毅、丁宗尧、刘群忠、贾万宏等为本书的编写提出了很多的宝贵意见和建议。

最后感谢我的妻子马宏、儿子张垚淼及我的父母家人,没有你们的鼓励和支持就不会有我的这部作品。

编著