第2版前言PREFACE

1. 为什么会有这样一本书?

在学习和研究图像处理算法时,特别是阅读一些经典论文时,很大的一个障碍就是数学概念太多。这是很多人近乎“刻骨铭心”的经历,当然也包括我本人。那些跟数学有关的公式甚至符号,有些似曾相识,有些则闻所未闻,但无论何种情况,都无疑给算法原理的理解带来了阻碍。例如,在介绍小波的文章里,你可能会遇到“紧支集”;在研究泊松融合时,你可能会遇到“散度”;在研究SIFT特征时,你可能会遇到“黑塞矩阵”等。

我在读论文或者看书的时候如果遇到这些概念,都会小心地将它们记了下来,并补充上必要的说明、必要的证明或者浅显的例题。天长日久,整理的东西逐渐多了起来,逐渐形成了脉络,并拥有了体系。

我慢慢地将其发布到我的技术博客上,并将这些文章收录到了“图像处理中的数学原理详解专栏”。事实上,本书中的绝大部分内容,网友仍然可以在该博客专栏中免费浏览。最初,我并没有要将其出版的计划,完完全全只是我个人的一个经验总结甚至学习笔记。但意想不到的是,很多网友纷纷留言或者私信我,询问这是哪本书或者如何购买之类的。再然后就是开始有出版社的编辑主动联系我希望可以获得该书的出版权。两相权衡,一边是有读者网友热切地劝谏我尽快付梓,另一边又有出版社编辑希望同我早日达成合作意向。尽管一切皆非计划,无奈盛情难却,便顺势而为罢了,于是本书的第1版便在2017年1月由清华大学出版社正式出版了。

2. 为什么你在研究图像处理时会一看到数学就感觉很吃力?

众所周知,数字图像处理技术的研究与开发对数学基础的要求很高,在一些不断涌现的新方法中,眼花缭乱的数学推导令很多期待深入研究的人望而却步。一个正规理工科学生大致已经具备了包括微积分、线性代数、概率论在内的数学基础。但在分析一些图像处理算法的原理时,感觉还是无从入手。实际中所涉及的问题主要归结为如下几个原因:

微积分、线性代数、概率论这些是非常重要的数学基础,但显然不是这些课程中所有的内容都在图像处理算法中有直接应用;

当你将图像处理和数学分开来学的时候,其实并没有设法建立它们两者的联系;

一些新方法或者所谓的高大上算法的基础已经超过了上面三个数学课程所探讨的基本领域,这又涉及偏微分方程、变分法、数值方法、泛函分析等;

如果你不是数学科班出身,要想自学上面所谈到的所有内容,工作量实在太过大,恐怕精力也难以顾及。

如果你正在为图像处理中的数学感到沮丧,笔者希望这本书能够带给你一些帮助。正如前面所讲的,图像处理研究和学习中所需的数学原理基础主要涉及微积分、向量分析、场论、泛函分析、偏微分方程、数值方法、变分法、概率与数理统计等。显然,如果要系统地学习上述这些数学理论的全部内容,对于一个非数学专业出身的人来说可能并不现实。于是笔者根据自己的实践,尝试总结、归纳、提取了上面这些数学课程在研究图像处理时最容易碰到也最需要知道的一些知识点,然后采取一种循序渐进的方式将它们重新组织到一起。结合具体的图像处理算法讨论讲解这些数学知识的运用,从而期望帮助广大读者建立数学知识与图像处理之间的一座桥梁。

3. 这是一本什么样的书?

本书在第1版基础上完善而成,系统地介绍了图像处理技术中所涉及的数学基础。全书共12章。在前5章中,笔者设法化繁为简,从众多繁冗的数学知识中萃取了在学习和研究图像处理技术时所必须的内容,以期有效地帮助读者筛选出最为必要的理论基础,包括场论、微积分、变分法、最优化、偏微分方程、数值方法、泛函分析、概率论和统计学等。在这些章节里,你并不会遇到任何具体的图像处理算法。

你可能会讶异,如果前5章都是不涉及图像处理算法的纯数学知识,那我何不直接买一本数学书?这里特别需要说明,前5章的意义在于:图像处理的深入研究,有赖于大量的数学知识,但是你不可能把数学专业的教材全借来从头到尾学一遍,那样你精力也不够用。本书前5章,是从各种数学领域挑出来跟图像研究最直接相关,也就是你最需要、最可能会用到的数学知识,所以这部分的意思在于给你限定了一个范围,就像考试之前画重点一样。如果这些数学知识你都掌握了,那么图像处理算法中涉及的所有公式你就都能看懂了。就像俞敏洪老师最为畅销的那本关于GRE词汇的“红宝书”一样。既然所有的英文单词词典里都有,为什么你不去直接背牛津高阶英语词典,而选择买“红宝书”呢?因为,红宝书里筛选的是GRE考试中最可能考到的单词!据我所知,高等数学上下册加起来就有1000多页,显然其中很多东西就图像处理这个话题来说并不常被用到。如果你真的从头到尾地啃,由此消耗掉的时间成本将不可估量。何况还有概率论、偏微分方程、变分法、泛函分析、数值方法和最优化在等着你。

当然只有理论你肯定会觉得空洞,所以为了锻炼你应用前5章数学知识的能力,笔者特别安排了后7章。自第6章起的每章围绕一个主题详尽地介绍了一些实际应用中的技术。这部分内容涉及的子话题和具体算法十分丰富,包括图像去雾、增强、降噪、压缩、融合等,其中很多都是当前研究的热点。更重要的是,在这些章节里,读者将反复用到本书前5章所介绍的数学原理和概念,例如梯度、散度、黑塞矩阵、高斯迭代法、欧拉-拉格朗日公式等,但是后面不会再解释这些数学概念,因为前5章里面已经讲过了。后7章的作用就在于让你巩固一下前面所学,然后自己实际感受一下这些数学的用武之地。事实上,作为本书的第2版,相较于之前的版本,最大的变化就是扩充了原书后半部分的内容。

但是谁也不可能把一整本图像处理书中所有的东西都拿来做例子,因为毕竟篇幅有限。所以后7章就相当于攫选了图像处理中的几个大的专题讲解,当然细分的话可能包括很多具体的算法(例如直方图均衡、暗通道去雾、贝叶斯抠图和基于频域变换的图像压缩,等等)。所以后7章并不能覆盖所有图像的话题,也不需要覆盖,例如可能图像处理中用到黑塞矩阵的地方有超过10个算法,作为例子我讲一两个也就足够了。后7章只是帮你巩固和体会前面数学知识在图像处理中的应用。所以你不能通过阅读本书掌握图像处理的所有话题,也不能用它作为图像处理的入门。但可以把这本书作为你学习图像处理中所需要的数学基础的一个指导。此外,在日后的研究中把它作为一本字典来用也是很不错的选择。

4. 如何使用本书?

在阅读本书时,有两种方式可供读者选择。如果你数学基础尚可,那么可以试着从第6章开始看起,如果对一些遇到的术语、公式不甚了解,可以再翻回前面的内容,做有针对性的查阅。如果你的数学基础略显薄弱,或者曾经学过,但眼下所剩无几,那么建议你从头看起,帮助自己建立一个相对完整而扎实的数学思维体系。当然由于本书的知识内容是高度凝练的,无法做到包山包海,因此仍然建议那些有一定微积分基础的人作为本书的目标读者。换言之,作为目标读者,你至少应该拥有普通大专院校所要求的工科数学基础。每位读者都应当明确,本书绝对不是“儿歌三百首”。你也不能期望在一本“数学”书中不出现任何公式。

总的来说,我不太喜欢翻开一本计算机方面的书籍,里面密密麻麻的全部都是代码。我希望能够在书中留下更多空间去讨论原理和思路。鉴于这并不是一本教导人们如何开发图像处理程序的书,或者更准确地说这是一本介绍数学在图像处理中的应用的书,所以这里并不要求读者阅读本书前已经掌握了某种特定的计算机语言。然而,在介绍某些比较晦涩的算法时,使用一些必要的代码辅助解释也是很有必要的,而且有时这也的确是最直截了当、最容易被接受的方式。所以本书中确实涉及某些用MATLAB编写的代码,但它们的占比是极其有限的。在有必要使用代码演示说明算法原理的时候,我们也仅是给出了算法核心部分的相关代码。所以,期望通过本书入门某种编程语言或者强化自己的编程能力,都是不现实的。

5. 最后一点说明

笔者在CSDN上开设技术博客中(白马负金羁)提供有很多图像处理、计算机视觉以及数学方面的文章,可作为本书的扩充。更重要的是,如果读者在阅读本书时遇到一些困难,或者有一些需要跟作者沟通的问题时,都可以在该博客上通过留言的方式与笔者进行交流。

无冥冥之志者,无昭昭之明,无惛惛之事者,无赫赫之功。我衷心地希望本书的读者能够在图像处理领域既有昭昭之明,亦有赫赫之功。

最后虽然有点俗套,但笔者还是想说:自知论道须思量,几度无眠一文章。由于时间和能力有限,书中纰漏在所难免,真诚地希望各位读者和专家不吝批评、斧正。

左 飞

2019年5月