
本书将图像处理基础理论论述与以MATLAB为主要工具的软件实践方法相对照,集成了冈萨雷斯和伍兹所著《数字图像处理》一书中的重要内容和MathWorks公司的图像处理工具箱,特色在于重点强调了怎样通过开发新代码来增强这些软件工具的功能。全书在介绍MATLAB编程基础知识后,讲述了图像处理的主要内容,具体包括灰度变换、线性和非线性空间滤波、频率域滤波、图像复原与重建、彩色图像处理、图像压缩、图像分割、区域和边界表示与描述等。
前 言 像此前的版本一样,本书的关注点基于这样一个事实,即在数字图像处理领域求解时通常要求广泛的实验工作,包括软件模拟和大量样本图像的测试。虽然典型算法的开发是以理论支撑为基础的,但这些算法的实际实现几乎总是要求估计参数,并常常进行算法的修正和候选解决方案的比较。这样,灵活的选择、全面的理解及由许多资料证明的软件开发环境就是关键因素,这些因素在成本、开发时间和图像处理求解的可移植性上都具有重要意义。 尽管这些很重要,但却很少有以教材形式编写的涉及数字图像处理的理论原理和软件实现方面的材料。2004年所写的本书的第一版正好满足了这一需要。本书的新版本继续秉承这一宗旨,它的主要目标是提供一个可用现代软件工具实现图像处理算法的基础。本书自成体系,并且对具有数字图像处理、数学分析及计算机编程基本背景的人来说更易阅读,所有这些内容在技术学科初级或高级课程中都可以找到。同时,也希望读者具备MATLAB的初级知识。 为了实现这一目的,需要满足两个关键因素。第一个因素是选择图像处理素材,它在该领域涵盖在正规课程中。第二个因此是选择被充分支持和证明的软件工具,并在现实社会中有广泛的应用。 为了满足第一个因素,后续章节中的多数理论概念选自冈萨雷斯和伍兹所著的《数字图像处理》一书,该书在40多年中被全世界教师选为引领性教材。所选择的软件工具来自MATLAB图像处理工具箱,它在教育和工业应用中同样占有类似的地位。在本书当前版本的准备中,所遵循的基本策略是,继续提供已为大家接受的理论概念和软件工具的实现技巧。 本书沿用《数字图像处理》一书的主线组织。通过这种方法,读者很容易参考所讨论的数字图像处理概念,并且作为进一步阅读的最新参考。 遵循这种方法使我们有可能以简明扼要的方法提供理论材料,从而集中精力解决图像处理问题的软件实现。因为图像处理工作在MATLAB计算环境下,所以图像处理工具箱提供了极大的便利,不仅体现在计算工具的宽泛性上,而且体现在它支持今天所用的大多数操作系统上。本书的突出特点是强调如何开发新的代码来增强已有的MATLAB和工具箱,这在图像处理领域中是一个重要的特性,正如此前提到的那样,这是大量算法开发和实验工作所需要的特点。 介绍MATLAB函数和编程基础后,本书致力于图像处理的主流领域论述。涵盖的主要领域包括灰度变换、线性和非线性空间滤波、频率域滤波、图像复原和重建、彩色图像处理、图像压缩、图像分割、区域和边界表示与描述。这些内容是如何用MATLAB和工具箱函数求解图像处理问题的补充。在没有所需函数的情况下,编写一个新函数也是本书教学所关注的一部分。在后续章节中包含了120多个新函数。这些函数使得图像处理工具箱的可用范围增加了近45%,同时,如何求解新的图像处理问题也进一步说明了这一重要目的。 这些以教材形式出现的内容不能作为软件手册。虽然本书自成体系,但我们还是建成了一个综合网站,该网站被设计用于支持许多领域(见1.5节)。对于学生来说,为便于跟踪课程学习或者其他从事编程的人员自学,网站包括了背景材料的辅导和综述,以及项目方案和本书包括的所有图像的数据库。对于教师来说,网站包含课堂讲授材料和本书所用的所有图像、图形的PPT。个别熟悉图像处理和工具箱基础的人员会发现该网站包含最新参考、最新技术及在其他地方不容易找到的许多热点支持材料。购书者可以免费下载本书开发的所有新函数的可执行文件。 如大多数这种类型的作品那样,在手稿完成前,我们一直努力地修改它。因此,我们在内容的取舍方面已尽了最大努力,我们相信这些内容均是基本内容,读者在了解这些内容后就可以尽快地掌握相关知识。我们相信,本书的读者将从这些努力中受益,并因此可以及时找到有用的材料。 Rafael C. Gonzalez Richard E. Woods Steven L. Eddins
目 录 第1章 绪言 1 本章概述 1 1.1 背景 1 1.2 什么是数字图像处理 2 1.3 MATLAB和图像处理工具箱基础 2 1.4 本书涵盖的图像处理范围 3 1.5 本书的网站 4 1.6 符号 4 1.7 基本原理 4 1.7.1 MATLAB桌面 5 1.7.2 使用MATLAB编辑器/调试器 6 1.7.3 获取帮助 6 1.7.4 保存和检索工作会话数据 6 1.7.5 数字图像表示 7 1.7.6 图像的输入/输出和显示 8 1.7.7 类和图像类型 9 1.7.8 M函数编程 11 1.8 怎样组织本书的参考文献 21 小结 22 第2章 灰度变换与空间滤波 23 本章概述 23 2.1 背景 23 2.2 灰度变换函数 23 2.2.1 函数imadjust和stretchlim 24 2.2.2 对数及对比度拉伸变换 26 2.2.3 指定任意灰度变换 27 2.2.4 用于灰度变换的一些实用M函数 28 2.3 直方图处理与函数绘图 32 2.3.1 生成并绘制图像直方图 32 2.3.2 直方图均衡 36 2.3.3 直方图匹配(规定化) 38 2.3.4 函数adapthisteq 42 2.4 空间滤波 43 2.4.1 线性空间滤波 43 2.4.2 非线性空间滤波 48 2.5 图像处理工具箱的标准空间滤波器 50 2.5.1 线性空间滤波器 50 2.5.2 非线性空间滤波器 53 小结 54 第3章 频率域滤波 55 本章概述 55 3.1 二维离散傅里叶变换 55 3.2 在MATLAB中计算和观察二维DFT 58 3.3 频率域滤波 60 3.3.1 基础 60 3.3.2 DFT滤波的基本步骤 64 3.3.3 用于频率域滤波的M函数 65 3.4 从空间滤波器获得频率域滤波器 66 3.5 在频率域中直接生成滤波器 69 3.5.1 创建用于实现频率域滤波器的网格数组 69 3.5.2 低通(平滑)频率域滤波器 70 3.5.3 绘制线框图和表面图 72 3.6 高通(锐化)频率域滤波器 75 3.6.1 一个用于高通滤波的函数 75 3.6.2 高频强调滤波 77 小结 78 第4章 图像复原与重建 79 本章概述 79 4.1 图像退化/复原处理的模型 79 4.2 噪声模型 80 4.2.1 使用函数imnoise对图像添加噪声 80 4.2.2 使用规定分布生成空间随机噪声 81 4.2.3 周期噪声 86 4.2.4 估计噪声参数 89 4.3 仅有噪声的复原——空间滤波 92 4.3.1 空间噪声滤波器 93 4.3.2 自适应空间滤波器 96 4.4 使用频率域滤波降低周期噪声 97 4.5 退化函数建模 97 4.6 直接逆滤波 99 4.7 维纳滤波 100 4.8 由投影重建图像 102 4.8.1 背景 102 4.8.2 平行射线束投影和雷登变换 104 4.8.3 傅里叶切片定理与滤波反投影 105 4.8.4 滤波器实现 107 4.8.5 使用扇形射线束滤波反投影的重建 108 4.8.6 函数radon 108 4.8.7 函数iradon 110 4.8.8 处理扇形射线束数据 113 小结 118 第5章 彩色图像处理 119 本章概述 119 5.1 MATLAB中彩色图像的表示 119 5.1.1 RGB图像 119 5.1.2 索引图像 121 5.1.3 处理RGB和索引图像的函数 123 5.2 彩色空间转换 125 5.2.1 NTSC彩色空间 125 5.2.2 YCbCr彩色空间 126 5.2.3 HSV彩色空间 126 5.2.4 CMY和CMYK彩色空间 127 5.2.5 HSI彩色空间 128 5.2.6 与设备无关的彩色空间 133 5.3 彩色图像处理基础 139 5.4 彩色变换 140 5.5 彩色图像的空间滤波 146 5.5.1 彩色图像平滑 146 5.5.2 彩色图像锐化 148 5.6 直接在RGB向量空间的处理 149 5.6.1 使用梯度进行彩色边缘检测 149 5.6.2 在RGB向量空间中进行图像分割 152 小结 155 第6章 图像压缩 156 本章概述 156 6.1 背景 156 6.2 编码冗余 159 6.2.1 霍夫曼码 161 6.2.2 霍夫曼编码 165 6.2.3 霍夫曼解码 169 6.3 空间冗余 175 6.4 不相关信息 179 6.5 JPEG压缩 181 6.5.1 JPEG 181 6.5.2 JPEG 2000 186 6.6 视频压缩 192 6.6.1 MATLAB图像序列和电影 192 6.6.2 时间冗余和运动补偿 195 小结 201 第7章 图像分割 202 本章概述 202 7.1 点、线和边缘检测 202 7.1.1 点检测 203 7.1.2 线检测 204 7.1.3 使用函数edge检测边缘 205 7.2 使用霍夫变换进行线检测 212 7.2.1 背景知识 212 7.2.2 工具箱霍夫函数 213 7.3 阈值处理 216 7.3.1 基础知识 216 7.3.2 基本的全局阈值处理 217 7.3.3 使用Otsu方法进行最佳全局阈值处理 219 7.3.4 使用图像平滑改进全局阈值处理 222 7.3.5 使用边缘改进全局阈值处理 223 7.3.6 基于局部统计的可变阈值处理 226 7.3.7 使用移动平均的图像阈值处理 229 7.4 基于区域的分割 231 7.4.1 基本表达式 231 7.4.2 区域生长 231 7.4.3 区域分离与聚合 234 7.5 使用分水岭变换的分割 238 7.5.1 使用距离变换的分水岭分割 239 7.5.2 使用梯度的分水岭分割 240 7.5.3 标记符控制的分水岭分割 241 小结 243 第8章 表示与描述 244 本章概述 244 8.1 背景 244 8.1.1 提取区域及其边界的函数 245 8.1.2 本章中使用的其他MATLAB和工具箱函数 248 8.1.3 一些基本的实用M函数 249 8.2 表示 250 8.2.1 链码 250 8.2.2 使用最小周长多边形的多边形近似 252 8.2.3 标记 258 8.2.4 边界线段 260 8.2.5 骨骼 260 8.3 边界描绘子 262 8.3.1 一些简单的描绘子 262 8.3.2 形状数 262 8.3.3 傅里叶描绘子 263 8.3.4 统计矩 266 8.3.5 拐角 267 8.4 区域描绘子 272 8.4.1 函数regionprops 273 8.4.2 纹理 274 8.4.3 不变矩 282 8.5 使用主分量进行描述 285 小结 292 附录A M函数汇总 293 附录B ICE和MATLAB图形用户界面 309 附录C 附加的自定义M函数 328 参考文献 372 索引 375