数字图像处理(4版)——第 3 章——(图像的)强度变换和空间滤波(Rafael C.Gonzalez&Richard E. Woods)

第3章 (图像的)强度变换和空间滤波

(Intensity Transformations and Spatial Filtering)

目录

3.1 背景(background)

3.1.1 强度变换和空间滤波的基础(The basics of intensity transformations and spatial filtering)

3.1.2 关于本章中的示例(About the examples in this chapter)

3.2  一些基本的强度变换函数(Some basic intensity transformation functions)

3.2.1 图像取反(或图像反转)(Image negatives)

3.2.2  对数变换(Log transformations)

3.2.3  幂律(Γ)变换(Power-law (gamma) transformations)

3.2.4  分段线性变换函数(Piecewise linear transformation functions)

3.2.4.1  对比度拉伸(Contrast Stretching)(扩展强度)

3.2.4.2  强度等级分片(Intensity-Level Slicing)

3.2.4.3  位平面分片(Bit-Plane Slicing)

3.3  直方图处理(Some Histogram processing)

3.3.1  直方图均衡化(Histogram equalization)

3.3.2  直方图匹配(规定化)(Histogram matching (specification))

3.3.3  局部直方图处理( Local histogram processing)

3.3.4  使用直方图统计进行图像增强(Using histogram statistics for image enhancement)

3.4  空间滤波基础(Fundamentals of spatial filtering)

3.4.1  线性空间滤波机制(The mechanics of linear spatial filtering)

3.4.2  空间相关性和卷积(Spatial correlation and convolution)

3.4.3  可分离滤波核(Separable filter kernels)

3.4.4  空间域和频域滤波的一些重要比较(Some important comparisons between filtering in the spatial and frequency domains)

3.4.5  关于如何构建空间滤波器核的说明(A word about how spatial filter kernels are constructed)

3.5  平滑[低通]空间滤波(Smoothing (lowpass) of spatial filters)

3.5.1  箱式滤波器核(Box filter kernels)

3.5.2  低通Gauss滤波器核(Lowpass gaussian filter kernels)

3.5.3  顺序统计(非线性)滤波器(Order-statistic (nonlinear) filters)

3.6  锐化(高通)空间滤波器(Sharpening (highpass) spatial filters)

3.6.1  基础(Foundation)

3.6.2  使用二阶导数进行图像锐化——Laplace算子(Using the second derivative for image sharpening—the laplacian)

3.6.3  反锐化蒙版和高增强滤波——Laplace算子(Unsharp masking and highboost filtering)

3.6.4  使用一阶导数进行图像锐化——梯度(Using first-order derivatives for image sharpening—the gradient)

3.7   基于低通滤波器的高通、带阻、和带通滤波器(Highpass, bandreject, and bandpass filters from lowpass filters)

3.8   组合空间增强方法(Combining spatial enhancement methods)


术语空间域(spatial domain)”是指图像平面本身此类别中的图像处理方法是基于对图像中像素的直接操作这与变换域(transform domain)中的图像处理形成对比,正如我们将在第 4 章和第 6 章中讨论的那样,变换域中的图像处理首先涉及将图像(从空间域)变换到变换域再在那里进行处理然后再通过逆变换将结果带回空间域。空间处理的两个主要类别是强度变换和空间滤波。强度变换对图像的单个像素进行操作,以执行对比度操作和图像阈值处理等任务。空间滤波对图像中每个像素的邻域执行操作。空间滤波的例子包括图像平滑和锐化。在以下章节中,我们将讨论强度变换和空间滤波的许多“经典”技术。

3.1 背景(background)

本章讨论的所有图像处理技术都是在空间域中实现的(译注:这里的空间域指的是图像的平面空间),从第 2.4 节的讨论中我们知道,空间域是指包含图像像素的平面。空间域技术直接对图像的像素进行操作,而在频域(第 4 章的主题)中,操作是在图像的Fourier变换上执行的。正如你将在阅读本书的过程中了解到的那样,一些图像处理任务在空间域中更容易或更有意义地实现,而其他图像处理任务则最适合其他方法

3.1.1 强度变换和空间滤波的基础(The basics of intensity transformations and spatial filtering)

    我们在本章中所讨论的空间域处理基于表达式

(3-1)               g(x,y) = [f(x,y)]。                          

其中,(x,y)是输入图像,g(x,y)是输出图像,T是一个加于 f 上的运算符(简称算符),基于点(x,y)的邻域定义。 该算符可以应用于单幅图像的像素(本章的重点)或一组图像的像素,例如对一系列图像执行元素求和以降低噪声,如第 2.6 节所述。图 3.1 显示了公式 (3-1) 在单幅图像上的基本实现。所显示的点 (x_{0},y_{0})  位于图中任意位置,所显示的微小区域是点 (x_{0},y_{0}) 的一个领域(neighborhood),如第 2.6 节所解释。典型的领域是矩形其中心位于  (x_{0},y_{0})  ,尺寸比图像小。

图 3.1 所示的过程包括将邻域中心从一个像素移动到另一个像素,并将算符 T 应用于邻域中的像素,以在该位置产生输出值。因此,对于任何特定位置 (x_{0},y_{0})  ,输出图像 g 在这些坐标处的值等于将 T 应用于 f 中原点为 (x_{0},y_{0})  的邻域的结果。例如,假设邻域是一个大小为 3 × 3 的正方形,并且算子 T 定义为“计算邻域中像素的平均强度”。考虑图像中的任意位置,例如 (100,150)。输出图像中该位置的结果 (100,150) 是 f (100,150) 及其 8 个邻域的总和除以 9。然后将邻域的中心移动到下一个相邻位置,并重复该过程以生成输出图像 g 的下一个值。通常,该过程从输入图像的左上角开始,以水平(垂直)扫描逐个像素这样进行,一次一行(列)。我们将从第 3.4 节开始讨论这种类型的邻域处理。

-------------------------------图 3.1 :图像中关于点 (x_{0},y_{0})  的 3 × 3 邻域。邻域在图像中从一个像素移动到另一个像素,以生成输出图像。回想一下第 2 章,位置 (x_{0},y_{0})  处像素的值是 f (x_{0},y_{0}) ,即该位置处图像的值。-------------------------

(注:该算法取决于图像的大小和其位置,部分领域可能位于图像之外。有两种方法处理这个问题:(1) 忽略图像之外的值,或 (2) 填充图像,如第 3.4 节所述。第二种方法更可取。)

    最小可能的邻域大小为 1 × 1。在这种情况下,g 仅取决于单个点 (x, y) 处的 f 值,而公式 (3-1) 中的 T 变为强度(intensity)(也称为灰度级(gray-level)或映射(mapping))变换函数,其形式为

(3-2)                        s = T(r)

其中,为了简化符号,我们分别使用 sr 表示任意点 (x, y) 处 gf 的强度。例如,如果 T(r) 具有图 3.2(a) 中的形式,则将变换应用于 f 中的每个像素以生成 g 中的相应像素的结果将产生一幅对比度高于原始图像的图像方法是使 k 以下的强度级别变暗使 k 以上的级别变亮。在这种有时称为对比度拉伸(contrast stretching)(参见第 3.2 节)的技术中,低于 kr 值会降低(变暗) s 的值,使其趋向黑色。高于 kr 值则相反。观察强度值 r_{0}  是如何映射以获得相应的值 s_{0} 的。在图 3.2(b) 所示的极限情况下,T(r) 产生一个两级(二进制)图像。这种形式的映射称为阈值函数(thresholding function)。一些相当简单但功能强大的处理方法可以用强度变换函数来制定。在本章中,我们主要使用强度变换来增强图像在第 10 章中,我们将使用它们进行图像分割。结果仅取决于某一点的强度的方法有时被称为点处理技术(point processing),这与上一段讨论的邻域处理技术相反。

--------------图 3.2 :强度变换函数: (a)对比度拉伸函数。(b)阈值函数。---------

3.1.2 关于本章中的示例(About the examples in this chapter)

尽管强度变换和空间滤波方法涵盖了广泛的应用,但本章中的大多数示例都是图像增强的应用。增强(Enhancement)是处理图像的过程,以使结果比原始图像更适合特定应用。特定(specific)”一词很重要,因为它从一开始就确立了增强技术是面向问题的。因此,例如,一种对增强 X 射线图像非常有用的方法可能不是增强红外图像的最佳方法。没有通用的图像增强“理论”。当对图像进行视觉解释时,观察者是判断特定方法效果的最终标准。在处理机器感知时,增强更容易量化。例如,在自动字符识别系统中,最合适的增强方法是产生最佳识别率的方法,而不用考虑其他因素(例如一种方法相对于另一种方法的计算要求)。无论使用何种应用程序或方法,图像增强都是图像处理中最具视觉吸引力的领域之一。图像处理初学者通常会发现增强应用程序很有趣,而且相对容易理解。因此,使用图像增强中的示例来说明本章中开发的空间处理方法,不仅可以节省书中关于图像增强的额外章节,而且更重要的是,这是一种向新手介绍空间域图像处理技术的有效方法。随着你阅读本书的其余部分,你会发现本章中开发的材料的范围远不止图像增强。

3.2  一些基本的强度变换函数(Some basic intensity transformation functions)

强度变换是所有图像处理技术中最简单的一种。如上一节所述,我们分别用 rs 表示处理前后的像素值。这些值通过变换 T 关联,如公式 (3-2) 所示,该变换将像素值 r 映射到像素值 s。由于我们处理的是数字量,因此强度变换函数的值通常存储在表中,并且从 rs 的映射通过查找表(table lookups)实现。对于 8 位图像,包含 T 值的查找表有 256 个条目。

作为强度变换的导引,请考虑图 3.3,其中显示了图像处理中经常使用的三种基本类型的函数线性(负变换和恒等变换)、对数(对数变换和逆对数变换)和幂律(power-law)(n 次方和 n 次根变换)。恒等函数是输入和输出强度相同的这种简单情况。

---------------------------------图3.3:一些基本的强度变换函数。每条曲线都经过了独立缩放,因此所有曲线都适合同一张图。我们的兴趣在于曲线的形状,而不是它们的相对值。----------------------------------------------------------------------  

3.2.1 图像取反(或图像反转)(Image negatives)

    使用图 3.3 所示的反转变换函数可获得强度级别在 [0,L − 1] 范围内的图像的反转,其形式为:

(3-3)                        s = L - 1 - r

以这种方式反转数字图像的强度级别会产生与照片底片(photographic negative)相同的效果。例如,这种处理可用于增强嵌入在图像暗区中的白色或灰色细节,尤其是当黑色区域占主导地位时。图 3.4 显示了一个例子。原始图像是显示小病变的数字乳房 X 光检查。尽管两幅图像中的视觉内容相同,但一些观众发现使用底片更容易分析乳房组织的精细细节。

--------------------------图3.4:(a)数字乳房 X 光检查。(b)使用公式 (3-3) 获得的底片。(图片 (a) 由通用电气医疗系统提供。)-----------------------------------

3.2.2  对数变换(Log transformations)

    图 3.3 中对数变换的通用格式为

(3-4)                        s=c\log{(1+t)}

其中 c是一个常量 ,并假设 c ≥ 0 。图 3.3 中的对数曲线的形状表明,这种变换将输入中较窄范围的低强度值映射到较宽范围的输出等级。例如,请注意 [0, L/4] 范围内的输入等级如何映射到 [0, 3L/4] 范围内的输出级别。相反,输入级别的较高值会映射到输出中的较窄范围。我们使用这种类型的变换来扩展图像中暗像素的值,同时压缩较高等级的值。逆对数(指数)变换则相反。

    任何具有图 3.3 中所示的对数函数的一般形状的曲线都可以实现图像中强度等级的扩展/压缩,但下一节中讨论的幂律变换对此目的更加通用。对数函数具有压缩像素值动态范围的重要特性。像素值具有较大动态范围的一个例子是Fourier光谱,我们将在第 4 章中讨论它。遇到范围从 0 到 10^{6}  或更高的光谱值并不罕见。处理这样的数字对计算机来说没有问题,但图像显示无法忠实地再现如此宽的值范围。净效应(net effect)是强度细节可能会在典型Fourier光谱的显示中丢失。

图 3.5(a) 显示了Fourier光谱,其值在 0 到 1.5 \times 10^{6}  范围内。当这些值在 8 位系统中线性缩放以显示时,最亮的像素将占据显示主导地位,而牺牲了光谱中较低(同样重要)的值。图 3.5(a) 中图像中相对较小且不被视为黑色的区域生动地说明了这种主导性的影响。如果我们不以这种方式显示值,而是首先将公式 (3-4)(在这种情况下 c = 1)应用于光谱值,则结果的值范围将变为 0 到 6.2。以这种方式转换值可以在显示屏上显示更大范围的强度。图 3.5(b) 显示了将强度范围线性缩放到区间 [0, 255] 并在相同的 8 位显示中显示光谱的结果。从这两幅图像中可以看出,与未修改的光谱显示相比,此图像中可见的细节水平明显提高。图像处理出版物(包括本书)中的大多数 Fourier 光谱都以这种方式缩放

-----------------------图3.5:(a)显示为灰度图像的Fourier频谱。 (b)在公式 (3-4) 中应用 c = 1 的对数变换的结果。 两个图像都缩放到范围 [0, 255]。-------------

3.2.3  幂律(Γ)变换(Power-law (gamma) transformations)

    幂律变换(译注:即一个量的变化引另一个量按与幂呈正比的关系产生相对变化)的格式为

(3-5)                s = cr^{\gamma}

其中 c γ 是正常量。有时候,公式(3-5)记为  s = c(r+\epsilon)^{\gamma} 以便于解释偏移(offset)(即,当输入是0时的一个可测输出)。但是,偏移通常是显示校准的问题,因此在公式 (3-5) 中通常会忽略它们。图 3.6 显示了 s 作为 r 的函数对于各种γ取值的图像片段。与对数变换一样,具有 γ 分数值的幂律曲线将较窄范围的暗输入值映射到较宽范围的输出值中,而对于较高的输入电平值则相反。另请注意,在图 3.6 中,只需通过改变γ即可获得一系列变换。使用γ > 1 的值生成的曲线与使用γ < 1 的值生成的曲线具有完全相反的效果。当 c = γ = 1 时,公式 (3-5) 简化为恒等变换。

用于图像捕获、打印和显示的许多设备的响应都遵循幂律按照惯例,幂律等式中的指数称为γ(gamma)[因此我们在公式 (3-5) 中使用此符号]。用于校正这些幂律响应现象的过程称为γ校正(gamma correction)或γ编码(gamma encoding)。例如,阴极射线管 (CRT——cathode ray tube) 设备的强度-电压响应是一个幂函数,γ指数从大约 1.8 到 2.5 不等。如图 3.6 中 γ = 2 5 的曲线所示,此类显示系统往往会产生比预期更暗的图像。图 3.7 说明了这种效果。图 3.7(a) 是γ为 2.5 的显示器中显示的强度斜坡图像。正如预期的那样,显示器的输出看起来比输入更暗,如图 3.7(b) 所示。

-----------------------图3.6:γ 公式 s = cr^{\gamma} 的图,其中 γ 为各种值(在所有情况下 c = 1)。每条曲线都经过独立缩放,以便所有曲线都适合同一张图。我们的兴趣在于曲线的形状,而不是它们的相对值。--------------------------------------------------

------------------------------图3.7:(a) 强度斜坡图像。(b) 在γ值为 2.5 的模拟显示器上查看的图像。(c) γ校正图像。(d) 在同一显示器上查看的校正图像。比较 (d) 和 (a)。---------------------------------------------------------------------

在这种情况下,γ  校正通过利用变换  s = r^{1/2.5} = r^{0.4}  以在将图像输入显示器之前对其进行预处理来实现。图 3.7(c) 是结果。当输入到同一台显示器时,经过γ校正的图像产生的输出在外观上与原始图像接近,如图 3.7(d) 所示。类似的分析也适用于其他成像设备,例如扫描仪和打印机,区别在于γ值与设备相关 (Poynton [1996])。 

例 3.1  使用幂律强度变换来增强对比度。(Contrast enhancement using power-law intensity transformations)

    除了γ 校正之外,幂律变换对于通用的对比度处理也非常有用。图 3.8(a) 显示了一幅人体上胸椎骨折脱位的磁共振图像 (MRI)。骨折在圆圈突出显示的区域中可见。由于图像主要为暗色,因此需要扩展强度级别。这可以使用带有分数指数的幂律变换来实现。图中所示的其他图像是通过使用公式 (3-5) 中的幂律变换函数处理图 3.8(a) 获得的。值图像 (b) 至 (d) 对应的 γ 值分别为 0.6,0.4 和 0.3(所有情况下 c = 1)。观察发现,随着 γ 值从 0.6 降至 0.4,更多细节变得清晰可见。进一步将 γ 值降至 0.3 后,背景细节略有增强,但对比度开始降低,直至图像出现轻微的“褪色”效果,尤其是在背景部分。当 g = 0.4 时,对比度和可辨别细节的效果最佳。g = 0.3 是一个近似极限,低于该值,此特定图像的对比度将降低到不可接受的水平。

--------------------------------图 3.8:(a)人体脊柱骨折的磁共振图像 (MRI)(骨折区域被圆圈圈出)。(b)-(d)应用公式 (3-5) 中的变换的结果,其中 c = 1,g = 0.6、0.4 和 0.3。(原始图像由范德堡大学医学中心放射学和放射科学系的 David R. Pickens 博士提供。)--------------------------------------------

例 3.2  幂律变换的另一个例证。(Another illustration of power-law transformations)

    图 3.9(a) 显示了与图 3.8(a) 相反的问题。待处理的图像现在呈现出褪色的效果,表明需要对灰度等级进行压缩。这可以通过公式 (3-5) 使用大于 1 的 γ 值来实现。图 3.9(b) 至 (d) 分别显示了 γ = 3.0,4.0 和 5.0 时处理图 3.9(a) 的结果。使用 3.0 和 4.0 的 γ 值获得了合适的结果。后者的结果由于对比度更高而更具吸引力。使用 γ = 5.0 时获得的结果也是如此。例如,图 3.9(d) 中靠近图像中间的机场跑道比其他三幅图像中的任何一幅都更清晰。

------------------------------图 3.9 :(a)航空图像。(b)–(d)应用公式(3-5)中的变换的结果,其中g分别= 3.0,4.0和5.0。(所有情况下c = 1。)(原始图像由NASA提供。)-------------------------------------------------

3.2.4  分段线性变换函数(Piecewise linear transformation functions)

    与前三节讨论的方法互补的一种方法是使用分段线性函数。这些函数相对于迄今为止讨论的函数的优势在于,它们的形式可以是任意复杂的。事实上,正如你稍后将见到的那样,一些重要变换的实际实现只能用分段线性函数来表示这些函数的主要缺点在于,它们的规范要求大量的用户输入

3.2.4.1  对比度拉伸(Contrast Stretching)(扩展强度)

    图像对比度低可能是由于照明不足、成像传感器动态范围不足,甚至图像采集过程中镜头光圈设置错误造成的。对比度拉伸可以扩展图像的强度范围,使其覆盖记录介质或显示设备的理想全强度范围。(译注:对比度拉伸又称‌对比度增强‌或‌反差增强‌,其核心是通过重新映射图像的亮度值范围,将原始图像中较暗的像素变得更暗、较亮的像素变得更亮,从而扩大图像强度的动态范围,提升视觉细节的清晰度。)

图 3.10(a) 显示了用于对比度拉伸的典型变换。点 ( r_{1}, s_{1}) 和 ( r_{2}, s_{2}) 控制了变换函数的形状。若 r_{1} = s_{1} 且 r_{2} = s_{2}  ,则变换是一个不产生强度变化的线性函数。若 r_{1} = r_{2} , s_{1}=0  且 s_{2}=L-1  ,则变换成了一个阈值函数(thresholding function),其创建了一幅二值图像[见图 3.2(b)]。( r_{1}, s_{1})  和 ( r_{2}, s_{2})  的中间值输出图像的强度等级会产生不同程度的扩散, 因此影响其对比度。通常假设   r_{1} \leq r_{2}  且  r_{2} \leq s_{2}  以使得函数是单值的且单调递增的。这样可以保留强度级别的顺序,从而防止产生强度伪影(artifacts)图 3.10(b) 显示了一幅低对比度的 8 位图像。图 3.10(c) 显示了对比度拉伸的结果,通过设置 (r_{1} , s_{1})=(r_{min},0)    和   (r_{2} , s_{2})=(r_{max},L-1)  而获得,其中 r_{min}  和 r_{max}  分别表示输出图像中的最小和最大强度等级,变换将强度等级线性地拉伸全强度范围( [0,L - 1] )。最后,图 3.10 (d) 显示了应用阈值函数后的结果,且 ( r_{1}, s_{1}) = (m,0)  而  ( r_{2}, s_{2}) = (m , L - 1)  ,其中 m 是图像中的均值强度等级。

-----------------------------图 3.10:对比度拉伸展 (a) 分段线性变换函数。(b) 低对比度电子显微镜下的花粉图像,放大 700 倍。(c) 对比度拉伸结果。(d) 阈值处理结果。(原始图像由澳大利亚堪培拉澳大利亚国立大学生物科学研究院的 Roger Heady 博士提供。) --------------------------------------------------------------------

3.2.4.2  强度等级分片(Intensity-Level Slicing)

    在某些应用中,突出显示图像中特定强度范围的效果会比较显著。例如,增强卫星图像中的特征(例如水体)以及增强 X 射线图像中的瑕疵。这种方法称为强度级别分片,可以通过多种方式实现,但大多数是两个基本主题的变体。一种方法是将目标范围内的所有值都显示为一个值(例如,白色),将所有其他强度值显示为另一个值(例如,黑色)。这种变换如图 3.11(a) 所示,生成二值图像。第二种方法基于图 3.11(b) 中的变换,使目标强度范围变亮(或变暗)但保持图像中所有其他强度级别不变

--------------------图 3.11:(a)此变换函数突出显示范围 [A,B],并将所有其他强度降低到较低水平。(b)此函数突出显示范围 [A,B],并保持其他强度不变。-------------

例 3.3  强度等级分片。

    图 3.12(a) 是肾脏区域附近的主动脉血管造影图(有关此图像的详细信息,请参见 1.3 节)。本例的目的是使用强度级分片来增强由于注射造影剂而显得比背景更亮的主要血管。图 3.12(b) 显示了对图 3.11(a) 中的图像进行变换的结果。所选波段位于强度等级的顶部附近,因为感兴趣的范围比背景更亮。这种变换的最终结果是,血管和肾脏部分呈现白色,而所有其他强度区域呈现黑色。这种增强类型会生成二值图像,可用于研究造影剂流动的形状特征(例如,检测阻塞情况)。

    如果我们关注的是感兴趣区域的实际强度值,可以使用图 3.11(b) 所示形式的变换。图 3.12(c) 展示了使用这种变换的结果,其中,平均强度周围的中灰色区域中的一段强度被设置为黑色,而所有其他强度保持不变。由此可见,主要血管和部分肾脏区域的灰度色调保持不变。当我们关注的是测量图像序列中造影剂的实际流量随时间的变化时,这样的结果可能很有用。

---------------------------------图 3.12:(a)主动脉血管造影图。(b) 使用图 3.11(a) 所示分片变换的结果,其中感兴趣的强度范围选择在灰阶的上端。(c)使用图 3.11(b) 所示变换的结果,其中选定的范围设置为接近黑色,以便保留血管和肾脏区域的灰色。(原图由密歇根大学医学院的 Thomas R. Gest 博士提供。)--------------------

3.2.4.3  位平面分片(Bit-Plane Slicing)

    像素值是由位组成的整数。例如,一幅 256 级灰度图像中的值由 8 位(一个字节)组成。我们可以像 3.3 中那样,重点突出灰度级范围,而不是突出特定位对整体图像外观的贡献。如图 3.13 所示,一幅 8 位图像可以看作是由八个一位平面组成,其中平面 1 包含图像中所有像素的最低位,平面 8 包含所有最高位。

-----------------------------图 3.13:一个8位图像的位平面------------------------------------

图 3.14(a) 显示一幅 8 位灰度图像,图 3.14(b) 至 (i) 分别表示其八个 1 位平面,其中图 3.14(b) 对应最高位。观察发现,四个高位平面(尤其是前两个)包含了大量视觉上重要的数据。低位平面则贡献了图像中更精细的亮度细节。原始图像有一个亮度为 194 的灰色边框。请注意,某些位平面对应的边框为黑色(0),而其他位平面对应的边框为白色(1)。为了理解其中的原因,我们不妨考虑一下图 3.14(a) 下边框中间的一个像素。位平面中对应的像素(从最高阶平面开始)的值为 1 1 0 0 0 0 1 0,这是十进制数 194 的二进制表示。原始图像中任何像素的值,都可以类似地通过将 8 位二进制序列转换为十进制数,从位平面中对应的二进制值像素重建出来。

    一幅8位图像的第8个位平面的二值图像,可以通过对输入图像进行阈值处理来获得,该阈值将0映射到0到127之间的强度值,将1映射到128到255之间的强度值。图3.14(b)中的二值图像就是通过这种方式获得的。获取用于生成其他位平面的变换函数留作练习(参见问题3.3)。

    将图像分解成位平面有助于分析图像中每个位的相对重要性,这有助于确定用于量化图像的位数是否合适。此外,这种分解方法也适用于图像压缩(第8章的主题),在图像压缩中,用于重建图像的平面少于所有平面。例如,图3.15(a)显示了使用上述分解中的位平面8和7重建的图像。重建是通过将第n个平面的像素乘以常数2n - 1来完成的。这会将第n个有效二进制位转换为十进制。每个位平面都乘以相应的常数,然后将所有得到的平面相加,得到灰度图像。因此,为了得到图3.15(a),我们将位平面8乘以128,位平面7乘以64,然后将这两个平面相加。虽然原始图像的主要特征得以恢复,但重建图像显得较为平淡,尤其是在背景部分。这并不奇怪,因为两个平面只能产生四个不同的强度级别。如图 3.15(b) 所示,在重建中添加平面 6 有助于改善这种情况。请注意,此图像的背景存在明显的伪轮廓。如图 3.15(c) 所示,在重建中添加第 5 个平面可以显著降低这种影响。在重建中使用更多平面不会显著影响此图像的外观。因此,我们得出结论,在本例中,存储四个最高阶位平面可以让我们以可接受的细节重建原始图像。存储这四个平面而不是原始图像所需的存储空间可以减少 50%。

-------------------------------图 3.14:(a)一幅 550 × 1192 像素的 8 位灰度图像。(b) 至 (i) 的 8 至 1 的位平面,其中位平面 1 对应于最低有效位。每个位平面都是一幅二进制图像。---------------------------------------------------------

-------------------------------图 3.15:从位平面重建的图像:(a) 8 和 7;(b)8、7 和 6;(c)8、7、6 和 5。------------------------------------------------

3.3  直方图处理(Some Histogram processing)

令 r_{k} (k = 0, 1 ,2 ,…, L - 1) 表示一个 L 级数字图像f (x , y)的强度。F 非标准化直方图(unnormalized histogram)定义为

(3-6)                h(r_{k}) = n_{k}(k = 0, 1 ,2 ,..., L - 1)

其中,n_{k} 是 f 中具有强度 r_{k} 的像素的数量,其中强度等级(intensity scale)的细分称为直方图桶(histogram bins)(bucket)。类似地,f归一化直方图(normalized histogram,或称正规化直方图标准化直方图)(注:消除量纲)定义为

(3-7)                   \displaystyle p(r_{k})=\frac{h(r_{k})}{MN}=\frac{n_{k}}{MN}

其中,照例,MN 分别表示图像像素的行数和列数。在大部分情况下,我们使用归一化直方图,我们简称为直方图或图像直方图。对于所有的 k , p(r_{k})  的和总是 1 。p(r_{k})  的分量是对图像中强度级别出现的概率的估计。正如你将在本节中了解到的,直方图操作是图像处理中的一个基本工具。直方图计算简单,也适合快速硬件实现,因此基于直方图的技术成为实时图像处理的常用工具

直方图的形状与图像外观相关。例如,图 3.16 显示了具有四种基本强度特征的图像:暗、亮、低对比度和高对比度;图中还显示了图像直方图。我们注意到,在暗图像中,最密集的直方图区间集中在强度等级的低端(暗)。同样,在亮图像中,最密集的区间偏向强度等级的高端。低对比度图像的直方图较窄,通常位于强度等级的中间,如图 3.16(c) 所示。对于单色图像,这意味着图像呈现出暗淡、褪色的灰色外观。最后,我们看到,高对比度图像的直方图成分覆盖了强度等级的广泛范围,像素分布也较为均匀,只有少数区间比其他区间高得多。直观地讲,如果一幅图像的像素往往覆盖所有可能的亮度级范围,并且分布均匀,那么可以合理地得出这样的结论:该图像将呈现高对比度,并呈现出丰富的灰度色调。最终效果是,该图像将展现出丰富的灰度细节,并具有较高的动态范围。你很快就会看到,可以开发一个转换函数,仅使用输入图像的直方图即可自动实现此效果。

----------------------------图像 3.16:四种图像类型及其相应的直方图。(a)暗;(b)亮;(c)低对比度;(d)高对比度。-------------------------------------

3.3.1  直方图均衡化(Histogram equalization)

    假设图像处理在初始时使用的是连续的强度值,并令变量 r 表示一幅被处理图像的强度。照例,我们假设 位于 [0 ,L - 1] ,r = 0 表示白色而 r = L – 1 表示白色。对于满足这些条件的 r ,我们首先聚集形如

(3-8)                s = T(r) (0 \leq r \leq L - 1)

的变换(强度映射),此变换对于输入图像中的一个强度值 r ,产生一个输出强度值 s 。我们假设

(a)   T() 在区间 0 ≤ rL – 1 中是一个单调递增函数(注:对于函数 T) ,若对于  r_{2}>r_{1} 有 T(r_{2}) \leq T(r_{1}) ,则函数 T() 是单调递增的 。 若对于  r_{2}>r_{1}  有  T(r_{2}) > T(r_{1})  ,则称函数T(r) 是严格单调递增的。类似的定义也适用于单调增减函数。);和 

(b)   0  ≤ T() ≤ L - 1 ( 对于  0 \leq r \leq L - 1 )。

在一些即将讨论的公式中,我们使用反变换公式

(3-9)                 r = T^{-1}(s) (0 \leq r \leq L - 1)

在这种条件下,我们将条件 (a) 变更为

a^{'} )                  T) 在区间 0 ≤ rL – 1 中是一个严格单调递增函数。

(a) 中的条件是 T() 单调递增,这保证了输出强度值永远不会因为输入强度值变大反而小于,从而避免了因强度反转而产生的伪影(译注:原书这里表述疑似不当)。条件 (b) 保证了输出强度的范围与输入相同。最后,条件  (a^{'}) 保证了从 sr 的映射是一对一的,从而避免了歧义。

图 3.17(a) 显示了满足条件 (a) 和 (b) 的函数。由此可见,多个输入值可以映射到单个输出值,并且仍然满足这两个条件。也就是说,单调变换函数执行的是一对一或多对一的映射。当从 r 映射到 s 时,这完全没问题。然而,如果我们想从映射值中唯一地恢复 r 的值,图 3.17(a) 就会出现问题(逆映射可以通过反转箭头的方向来直观地实现)。对于图 3.17(a) 中的 s_{k} 的逆映射,就会是这种情况,但 s_{q} 的逆映射是一个值范围,当然,其通常阻止我们从导致 s_{q} 的 r 的原值恢复。如图 3.17(b) 所示,要求 T() 严格单调,可以保证逆映射为单值(即,映射在两个方向上都是一对一的)。这是一个理论上的要求,它将使我们能够在本章后面推导一些重要的直方图处理技术。由于图像使用整数强度值存储,因此我们不得不将所有结果四舍五入到最接近的整数值。这通常会导致不满足严格单调性,这意味着逆变换可能不唯一。幸运的是,这个问题在离散情况下并不难处理,正如本节中的示例 3.7 所示。

-----------------------------图 3.17:(a)单调增函数,展示多个值如何映射到单个值。(b)严格单调增函数。这是双向的一对一映射。--------------------------------

一幅图像的强度可以视为是区间 [0 ,L - 1] 中的一个随机变量。令 p_{r}(r) 和 p_{s}(s) 为两幅不同图像中的强度值 rs 的 PDFs(概率密度函数)。p上的下标表示 p_{r} 和 p_{s} 是不同的函数。根据概率论可得出的一个基本结论是,若  p_{r} 和 T(r)  已知,且 T(r) 在兴趣值的域上连续且可微,则变换(映射)变量 s 的 PDF 可通过

(3-10)                        \displaystyle p_{s}(s)=p_{r}(r) \left \vert \frac{dr}{ds} \right \vert

获得。因此,我们看到输出强度变量 s 的 PDF 由输入强度的 PDF 和所使用的变换函数决定[ 回想一下,r  和 sT() 关联 ]。

    在图像处理中特别重要的一个变换是

(3-11)                        \displaystyle s = T(r) = (L - 1)\int_{0}^{r}p_{r} (w)dw

其中,w 是一个积分虚变量(即积分变量)。右边的积分是随机变量 r累积分布函数 (CDF——cumulative distribution function)。由于概率密度函数 (PDF) 始终为正,而函数的积分是函数下的面积,因此,公式 (3-11) 中的变换函数满足条件 (a)。这是因为,函数下的面积不会随着 r 的增加而减小。当该公式的上限为 r = (L − 1) 时,积分结果为 1,正如概率密度函数 (PDF) 所必然的那样。因此,s 的最大值是 L - 1,条件 (b) 也得到满足。

我们用公式(3-10)来求取与刚讨论的变换相对应的 p_{s}(s) 。我们从微积分中的Leibniz 法则得知,一个定积分对其上限的导数是被积函数在极限处的值。即,

(3-12)                       \begin{array}{rl}\displaystyle \frac{ds}{dr}&\displaystyle=\frac{dT(r)}{dr}\\ \\ &\displaystyle=(L-1)\frac{d}{dr}\left [\int_{0}^{r}p_{r}(w)dw \right ] \\\\ &\displaystyle=(L-1)p_{r}(r) \end{array}

在公式 (3-10) 中用这个结果替换 dr/ds ,并注意到所有概率值都是正值,则得到结果

(3-13)                        \begin{array}{rl}\displaystyle p_{s}(s)&\displaystyle=p_{r}(r)\left \vert \frac{dr}{ds} \right \vert \\ \\ &\displaystyle=p_{r}(r)\left \vert \frac{1}{(L-1)p_{r}(r)} \right \vert \\\\ &\displaystyle=\frac{1}{(L-1)}(0 \leq r \leq L-1) \end{array}

我们将这个公式中最后一行的 p_{s}(s) 的这种形式视为一致概率密度函数(uniform probability density function)。因此, 执行公式 (3-11) 中的这个密度变换就得到一个随机变量 s ,其由一致 PDF 刻画。重要的是公式 (3-13) 中的 p_{s}(s) 总是一致的,且与 p_{r}(r)  的形式无关。图 3.18 及下述例子说明了这些概念。

----------------------图 3.18:(a) 任意 PDF。(b)将公式 (3-11) 应用于输入 PDF 的结果。得到的 PDF 始终是均匀的(一致的),与输入的形状无关。-------------------

例 3.4  公式 (3-11)和(3-13) 例释。

    假设一幅图像中的这些(连续)强度值具有 PDF

\displaystyle p_{r}(r)=\left \{ \begin{array}{lrc}\displaystyle \frac{2r}{(L-1)^{2}} (\text{if} \;0 \leq r \leq L-1) \\ \\ 0(\text{otherwise}) \end{array} \right .

则根据公式 (3-11) 有

\displaystyle s = T(r) = (L - 1)\int_{0}^{r}p_{r} (w)dw = \frac{2}{L-1}\int_{0}^{r}wdw = \frac{r^{2}}{L-1}

假设我们通过这种变换获得一幅强度为s的新图像;也就是说,s 值是通过对输入图像相应强度值求平方,然后除以L - 1得到的。我们可以在新图像中验证强度值 p_{s}(s)  的 PDF 是一致的,用  p_{r}(r) 代入公式 (3-13)并利用事实  s = r^{2}/(L - 1)  可得;即

\begin{array}{rlc} \displaystyle p_{s}(s)\!\!\!&\displaystyle=p_{r}(r)\left \vert \frac{dr}{ds} \right \vert =\frac{2r}{(L-1)^{2}}\left \vert \left [ \frac{dr}{ds} \right ]^{-1} \right \vert \\ \\ &\displaystyle =\frac{2r}{(L-1)^{2}}\left \vert \left [ \frac{d}{dr}\frac{r^{2}}{L-1} \right ]^{-1} \right \vert =\frac{2r}{(L-1)^{2}}\left \vert \left [ \frac{(L-1)}{2r}\right ] \right \vert =\frac{1}{L-1} \end{array}

最后一步根据 r 非负且 L > 1 推断。正如预期,此结果是一个一致的 PDF 。

    对于离散值,我们用概率求和代替概率密度函数积分(但之前提到的单调性要求仍然适用)。回顾一下,一幅数字图像中强度等级 r_{k}  出现的概率是通过

(3-14)                \displaystyle p_{r}(r_{k}) = \frac{n_{k}}{MN}

来近似的,其中 MN 是图像中像素的总数,n_{k} 表示具有强度  r_{k} 的像素数,正如本节开头所述, p_{r}(r_{k}) ( r_{k} {\in}[0 ,L - 1]   )  通常指一个归一化图像直方图。

公式 (3-11) 的这个变换的离散形式为(译注:对应累积概率密度函数,即累积分布函数)

(3-15)              \displaystyle s_{k} = T(r_{k}) = (L - 1)\sum_{j=0}^{k}p_{r} (r_{j}) (k = 0, 1, 2,..., L - 1)

其中,如前一样,L 表示图像中可能的强度等级数(例如,8位图像有256个强度等级)。因此,一幅处理(输出)图像可通过应用等式(3-15)将输入图像中具有强度等级 r_{k}  的每一个像素映射到输出图像中具有强度等级  r_{k}  的对应像素而获得,这称为直方图均衡化(histogram equalization)或直方图线性变换(histogram linearization transformation)。不难证明(见问题3.9),这种变换满足本节前述指出的条件 (a) 和 (b) 。

例 3.5  直方图均衡化的机制例释。

通过一个简单的例子来理解会很有帮助。假设一幅3位图像(L = 8),大小为64 × 64像素(MN = 4096),其强度分布如表3.1所示,其中强度等级是[0,L - 1] = [0, 7]范围内的整数。该图像的直方图如图3.19(a)所示。直方图均衡变换函数的值可使用公式(3-15)获得。例如: 

\displaystyle s_{0} = T(r_{0}) = 7\sum_{j=0}^{0}p_{r} (r_{j}) = 7 p_{r}(r_{0}) = 1.33

类似地, s_{1} = T(r_{1}) = 3.08 ,s_{2} = 4.55 ,s_{3} = 5.67 ,s_{4} = 6.23 ,s_{5} = 6.65 ,,s_{6} = 6.86 ,  和  s_{7} = 7.00  。该变换函数具有图 3.19(b) 所示的阶梯形状。

--------------------------------表 3.1 :3 位、64 × 64 数字图像的强度分布和直方图值。------------------------------------------------

----图 3.19 :直方图均衡化。(a) 原始直方图。(b) 变换函数。(c) 均衡化直方图。---

此时, s 值是分数,因为它们是通过对概率值求和生成的,所以我们将它们四舍五入为 [0, 7] 范围内最接近的整数值:

s_{0} = 1.33 \rightarrow 1  , s_{2} = 4.55 \rightarrow 5  , s_{4} = 6.23 \rightarrow 6 , s_{6} = 6.86 \rightarrow 7

s_{1} = 3.08 \rightarrow 3 , s_{3 }= 5.67 \rightarrow 6 , s_{5} = 6.65 \rightarrow 7 , s_{7} = 7.00 \rightarrow 7 

这些是均衡后直方图的值。观察一下,变换仅产生了五个不同的强度等级。由于 r_{0}=0 被映射到 s_{0}=1 ,因此直方图均衡后的图像中有 790 个像素具有该值(参见表 3.1)。此外,有 1023 个像素的值为 s_{1}=3 ,有 850 个像素的值为 s_{2}=5 。然而, r_{3} 和 r_{4} 都被映射到同一个值 6,因此均衡后的图像中有 (656 + 329) = 985 个像素具有该值。同样,直方图均衡后的图像中有 (245 + 122 + 81) = 448 个像素的值为 7。将这些数字除以 MN = 4096,得到图 3.19(c) 中的均衡直方图。

由于直方图是对概率密度函数 (PDF) 的近似,并且在此过程中不会创建新的允许强度等级,因此在使用上述方法进行直方图均衡化的实际应用中,完全平坦的直方图很少见。因此,与连续直方图不同,通常无法证明使用公式 (3-15) 的离散直方图均衡化会产生均匀的直方图(我们将在本节后面介绍一种消除此限制的方法)。然而,正如你稍后将看到的,使用公式 (3-15) 通常会扩展输入图像的直方图,从而使均衡后图像的强度等级涵盖更宽的强度范围。最终结果是对比度增强。

   

我们之前讨论过亮度值覆盖整个灰度级的优势。刚刚推导的方法能够生成具有这种趋势的亮度值,并且还具有全自动的优势。换句话说,直方图均衡化过程完全由公式 (3-15) 的实现组成,该公式基于可从给定图像中直接提取的信息,无需任何参数指定。这种自动化、“无需干预”的特性非常重要。

    从 s 逆变换回 r 的逆变换表示为

(3-16)          r_{k} = T^{-1}(s_{k})   

可以证明(参见问题 3.9),仅当输入图像中存在所有强度等级时,此逆变换才满足先前定义的条件 (a^{'})   和 (b)。这意味着图像直方图中不存在空箱。虽然逆变换在直方图均衡化中没有用到,但它在以下示例之后开发的直方图匹配方案中起着核心作用。

例 3.6  直方图均衡化。

图 3.20 左列显示了图 3.16 中的四幅图像,中间一列显示了对每幅图像执行直方图均衡化的结果。从上到下的前三个结果显示出显著的改善。正如预期的那样,直方图均衡化对第四幅图像没有太大影响,因为其强度几乎已经覆盖了整个范围。图 3.21 显示了用于生成图 3.20 中均衡图像的变换函数。这些函数使用公式 (3.15) 生成。观察到变换 (4) 几乎是线性的,这表明输入被映射到几乎相等的输出。图中显示了输入值 r_{k} 到相应输出值 s_{k} 的映射。在本例中,该映射针对的是图像 1(图 3.21 左上角),表明较暗的值被映射到更亮的值,从而增加了输出图像的亮度。

图 3.20 中的第三列显示了均衡后图像的直方图。虽然所有直方图都不同,但直方图均衡后的图像本身在视觉上非常相似。这并不完全出乎意料,因为左列图像之间的基本差异在于对比度,而非内容。由于图像内容相同,直方图均衡化带来的对比度提升足以使均衡后图像之间的任何强度差异在视觉上难以区分。鉴于原始图像中对比度差异范围很大,此示例展示了直方图均衡化作为一种​​自适应、自主的对比度增强工具的强大功能。

----------------------------图 3.20:左列:图 3.16 中的图像。中间列:相应的直方图均衡化图像。右列:中间列图像的直方图(与图 3.16 中的直方图进行比较)。---------------------------------

----------------------------图 3.21:直方图均衡化的变换函数。变换式(1)至(4)是利

用公式(3-15)和图 3.20 左列图像的直方图获得的。图中显示了图像 1 中一个强度值 r_{k} 到其对应值 s_{k} 的映射。---------------------------------

3.3.2  直方图匹配(规定化)(Histogram matching (specification))

    如上一节所述,直方图均衡化会产生一个变换函数,旨在生成具有均匀直方图的输出图像。当需要自动增强时,这是一种值得考虑的好方法,因为该技术的结果可预测,并且方法易于实现。然而,在某些应用中,直方图均衡化并不适用。具体来说,有时能够指定我们希望处理后图像具有的直方图形状会很有用。用于生成具有指定直方图的图像的方法称为直方图匹配或直方图指定。

    考虑一下连续强度 rz,照例,我们将其视为分别具有 PDF 的 p_{r}(r) 和 p_{z}(z)  的随机变量。此处,rz 分别表示输入和输出(处理后的)图像的强度等级。我们可以根据已知输入估算 p_{r}(r)   ,而 p_{z}(z)  是我们希望输出图像所有的具体 PDF 。

s 为一个随机变量,其具有属性

(3-17)                        \displaystyle s = T(r) = (L - 1)\int_{0}^{r}p_{r} (w)dw

其中,是一个积分变量。这与等式 (3-11) 相同,我们在这里重复只是为了方便。

    基于变量 z 定义一个函数 G ,其具有属性

(3-18)                        \displaystyle G(z) = (L - 1)\int_{0}^{z}p_{z} (v)dv = s

其中,v 是一个积分变量。从前面两个等式可推导出 G(z) = s =  T(r) ,从而 z 一定满足条件

(3-19)                          z = G^{-1}(s) = G^{-1}[T(r)]

变换函数可以在使用输入图像估算出 p_{r}(r) 后再通过等式(3-17)计算而获得。类似地,函数 G(z) 可通过 等式(3-18) 获得,因为 p_{z}(z)  已知。公式 (3-17) 至 (3-19) 表明,可以使用以下过程获得强度等有具有指定 PDF 的图像

(1) 使用等式 (3-17) 根据输入图像获得 p_{r}(r)  。

(2) 在 p_{z}(z)  已知的情况下,根据指定的 PDF 使用(3-17) 获得函数 G(z) 。

(3) 计算逆变换 z = G^{-1}(s)  ;这是从 sz 的一个映射,后者是具有指定 PDF 的值。

(4) 首先使用公式 (3-17) 均衡输入图像,得到输出图像;该图像中的像素值为 s 值。对于均衡图像中值为 s 的每个像素,执行逆映射 z = G^{-1}(s)  以获得输出图像中的对应像素。当所有像素都经过此变换处理后,输出图像的概率密度函数 p_{z}(z) 将等于指定的概率密度函数。

因为 s r 通过 T)  关联,所以从 s 得到 z 的映射可以直接用 r 表示。然而,一般来说,找到 G^{-1}  的解析表达式并非易事。幸运的是,处理离散量时,这不是问题,你很快就会看到。

和之前一样,我们必须将刚刚得到的连续结果转换为离散形式。这意味着我们处理的是直方图而不是概率密度函数(PDF)。与直方图均衡化一样,转换过程中我们无法保证结果具有精确指定的直方图。尽管如此,即使使用近似值,也能获得一些非常有用的结果。

公式 (3-17) 的离散公式是公式 (3-15) 中的直方图均衡变换,为了方便起见,我们在此重复一遍:

(3-20)                      \displaystyle s_{k} = T(r_{k}) = (L - 1)\sum_{j=0}^{k}p_{r} (r_{j}) (k = 0, 1, 2,..., L - 1)

其中,该等式的分量与前面相同。类似地,给定 s_{k} 的特定值,公式(3-18)的离散公式涉及对于一个 值计算变换函数

(3-21)                        \displaystyle G(z_{q}) = (L - 1)\sum_{i=0}^{q}p_{z} (z_{i})

使得

(3-22)                        G(z_{q}) = s_{k}

其中,p_{z}(z_{i}) 是指定直方图的第 i 个值。最后,我们根据逆变换获得预期的 z_{q}  :

(3-23)                         z_{q} = G^{-1}(s_{k})

当对所有像素执行时,这是从直方图均衡图像中的 s 值到输出图像中相应的 z 值的映射。

    实际上,无需计算 G 的逆。因为我们处理的强度等级是整数,所以使用公式 (3-21) 计算 q = 0, 1 , 2,…,L - 1 时 G 的所有可能值很简单。这些值会被四舍五入为 [0 , L - 1] 范围内最接近的整数值,并存储在查找表中。然后,给定  s_{k}  的一个特定值,我们在表中寻找最接近的匹配项。例如,如果表中的第 27 个条目是与 s_{k}  最接近的值,则 q = 26(回想一下,我们从 0 开始计算强度),并且 z_{26} 是公式 (3-23) 的最佳解。因此,给定值 s_{k}  将映射到 z_{26}  。因为 z 是 [0, L - 1] 范围内的整数,所以  z_{0} = 0,z_{L-1} = L - 1  ,并且通常 z_{q}=q  。因此, z_{26}  等于强度值 26 。我们重复此过程,找到从每个值    s_{k}  到表中与其最接近的匹配值 z_{q}  的映射。这些映射就是直方图规定化问题的解。

已知一幅输入图像,一个指定的直方图 p_{z}(z_{i})  ( i = 0, 1, 2,…, L - 1),并回顾一下,s_{k}  到表中与其最接近的匹配值 z_{q}  的映射。这些映射就是直方图规定化问题的解。

已知一幅输入图像,一个指定的直方图 p_{z}(z_{i})( i = 0, 1, 2,..., L - 1)  ,并回顾一下, s_{k}  是根据 (3-20) 得出的值,我们可以将离散直方图规定化的过程概括如下:

(1)   计算输入图像的直方图 p_{r}(r)  并代入等式 (3-20) 以将输入图像的强度值映射到直方图均衡图像中的强度。将计算的结果值 s_{k}  四舍五入到整数范围 [0 , L - 1] 。

(2)   应用等式 (3-21)( q = 0, 1, 2,…, L - 1) 计算所有函数值 G(z_{q})  ,其中 p_{z}(z_{i})  是指定的直方图值。将 G 四舍五入到整数范围 [0 , L - 1] 。将 G 的四舍五入值存入一个查找表中。

(3)   对于每一个 s_{k}  (k = 0, 1, 2,…, L - 1),使用来自第(2)步存储的 G 值求得相应的 z_{q}  值,其使得 G(z_{q}) 最接近 s_{k}  。存储这些从 sz 的映射。当有多余1 个 z_{q} 值给出相同的匹配(即匹配不唯一)时,按约定选择最小的值。

(4)   使用在步骤 (3) 中求得的映射,将每个值为 s_{k} 的均衡像素映射到直方图指定图像中值为 z_{q}  的对应像素,从而形成直方图指定图像。

与连续情况一样,均衡输入图像的中间步骤是概念性的。可以通过组合两个变换函数 T 和 G^{-1} 来跳过该步骤,如下面的示例 3.7 所示。

我们在直方图均衡化讨论的开头提到,除了条件 (b) 之外,逆函数(在本讨论中为 G^{-1}  )必须严格单调才能满足条件 (a)。根据公式 (3-21),这意味着指定直方图中的 p_{z}(z_{i})  值都不能为零(参见问题 3.9)。如果不满足此条件,我们将使用步骤 (3) 中的“变通”程序。以下示例以数值方式说明了这一点。

例 3.7  直方图规定化机制例释。

    假设示例 3.5 中有一个 64 × 64 的假想图像,其直方图如图 3.22(a) 所示。我们需要对该直方图进行变换,使其具有表 3.2 第二列中指定的值。图 3.22(b) 展示了该直方图。

-------------------------------图 3.22:(a) 3 位图像的直方图。(b) 指定的直方图。(c) 根据指定的直方图获取的变换函数。(d) 直方图指定的结果。比较 (b) 和 (d) 中的直方图。----------------------------------------------------------------

----------------------------表 3.2 :指定和实际的直方图(第三列中的值是在示例 3.7 中计算的)。-------------------------------------------

第一步是获取直方图均衡值,我们在示例 3.5 中就是这样做的:

s_{0} = 1 ; s_{1} = 3; s_{2} = 5 ; s_{3} = 6 ; s_{4} = 6; s_{5} = 7; s_{6} = 7 ; s_{7} = 7

在下一步,我们利用来自等式 (3-21) 中的表 3.2 中的 p_{z}(z_{q})  的值计算  G(z_{q}) 的值:

G(z_{0}) = 0.00 \hspace{0.5cm} G(z_{2}) = 0.00 \hspace{0.5cm} G(z_{4}) = 2.45\hspace{0.5cm} G(z_{6}) = 5.95

G(z_{1}) = 0.00 \hspace{0.5cm} G(z_{3}) = 1.05 \hspace{0.5cm} G(z_{5}) = 4.55\hspace{0.5cm} G(z_{7}) = 7.00

如例 3.5 中一样,这些分数值被四舍五入为 [0, 7] 范围内的整数:

G(z_{0}) = 0.00 \rightarrow 0 \hspace{0.5cm} G(z_{4}) = 2.45 \rightarrow 2

G(z_{2}) = 0.00 \rightarrow 0 \hspace{0.5cm} G(z_{5}) = 4.55 \rightarrow 3

G(z_{1}) = 0.00 \rightarrow 0 \hspace{0.5cm} G(z_{6}) = 5.95 \rightarrow 6

G(z_{3}) = 1.05 \rightarrow 1 \hspace{0.5cm} G(z_{7}) = 7.00 \rightarrow 7

这些结果总结在表 3.3 中。变换函数 G(z_{q})  如图 3.23(c) 所示。由于其前三个值相等,因此 G 不是严格单调的,从而违反了条件 (a)。因此,我们使用算法步骤 3 中概述的方法来处理这种情况。根据此步骤,我们找到 z_{q}  的最小值,使得 G(z_{q})  的值最接近 s_{k}  。我们对  s_{k} 的每个值都执行此操作,以创建从 sz 的所需映射。例如, s_{0}=1  ,我们看到 G(z_{3}) = 1  ,在这种情况下这是一个完美匹配,因此我们有对应关系 s_{0}=z_{3}  。直方图均衡图像中值为 1 的每一个像素都将映射到直方图指定图像中值为 3 的像素。继续以这种方式,我们得到表 3.4 中的映射。

------------------------表 3.3:变换函数 G(z_{q})的四舍五入值-----------------

    在该过程的最后一步,我们使用表 3.4 中的映射关系,将直方图均衡后图像中的每个像素映射到新创建的指定直方图图像中的对应像素。生成的直方图值列于表 3.2 的第三列,直方图如图 3.22(d) 所示。 p_{z}(z_{q}) 的值是使用与示例 3.5 中相同的步骤获得的。例如,在表 3.4 中, s_{k}=1 映射到 z_{q}=3 ,直方图均衡后图像中有 790 个像素的值为 1。因此, p_{z}(z_{3}) = 790/4096 = 0.19  。

-------------------------表 3.4:将 s_{k} 映射到 z_{q}  ----------------------------

虽然图 3.22(d) 中的最终结果与指定的直方图并不完全匹配,但将强度移向强度等级高端的总体趋势确实实现了。如前所述,获取直方图均衡图像作为中间步骤有助于解释该过程,但这不是必需的。我们可以将 rs 以及 s 到 z 的映射列在一个三列表格中。然后,我们使用这些映射将原始像素直接映射到直方图指定的图像的像素中。

例 3.8  直方图均衡化与直方图规定化之间的比较。

    图 3.23(a) 显示了美国宇航局火星全球探测器拍摄的火星卫星火卫一的图像。图 3.23(b) 显示了图 3.23(a) 的直方图。该图像主要由大片暗区组成,导致直方图的特征是灰度暗区像素大量集中。乍一看,人们可能会认为直方图均衡化是增强该图像的一种好方法,可以使暗区的细节更加清晰可见。但接下来的讨论将证明,事实并非如此。

--------------------------图 3.23:(a)图像;(b)其直方图。-------------------

图 3.24 (a) 展示了使用图 3.23 (b) 中的直方图得到的直方图均衡变换 [公式 (3-20)]。该变换函数最显著的特征是它从强度级 0 上升到接近 190 的速度非常快。这是因为输入直方图中大量像素的强度等级接近于 0。当将此变换应用于输入图像的各级以获得直方图均衡结果时,最终效果是将一小段非常窄的暗像素区间映射到输出图像灰度级的上端。由于输入图像中许多像素的强度级恰好位于这一区间,因此我们预期结果图像会呈现出一种褪色的亮色效果。如图 3.24(b) 所示,情况确实如此。该图像的直方图如图 3.24(c) 所示。请注意,所有强度等级都偏向灰度级的上半部分。

-----------------------------图 3.24:(a)利用图 3.23(b) 中的直方图进行直方图均衡化变换。(b)直方图均衡化图像。(c)均衡化图像的直方图。------------------------

图 3.24(a) 中变换函数的问题是由于原始图像中色阶接近于 0 的像素大量集中造成的,因此一种合理的方法是修改该图像的直方图,使其不再具有此特性。图 3.25(a) 显示了一个手动指定的函数,该函数保留了原始直方图的大致形状,但在灰阶的暗区中色阶过渡更平滑。将该函数采样为 256 个等距离散值,便得到了所需的指定直方图。使用公式 (3-21) 从该直方图获得的变换函数 G(z_{q})  在图 3.25(b) 中标记为变换 (1)。类似地,公式 (3-23) 中的逆变换 G^{-1}(s_{k}) (使用前面讨论的分步过程获得)在图 3.25(b) 中标记为变换 (2)。图 3.25(c) 中的增强图像是通过对图 3.24(b) 中直方图均衡后图像的像素应用变换 (2) 获得的。通过比较这两幅图像,可以明显看出,直方图均衡后的图像比直方图均衡后的图像有了显著的改善。值得注意的是,只需对原始直方图进行相当小的改动,就能获得显著的外观改善。图 3.25(d) 展示了图 3.25(c) 中的直方图。该直方图最显著的特征是其低端如何向右移动,朝向灰阶的较亮区域(但移动幅度不大),这与预期相符。

----------------------------------图 3.25 :直方图指定。(a) 规定的直方图。(b) 变换 G(z_{q}) ,标记为 (1),以及 G^{-1}(s_{k}) ,标记为 (2)。(c) 直方图指定的结果。(d) 图像 (c) 的直方图。------------------------------------------------

3.3.3  局部直方图处理( Local histogram processing)

到目前为止讨论的直方图处理方法是全局的,即通过基于整幅图像强度分布的变换函数来修改像素。这种全局方法适用于整体增强,但在增强图像中小区域细节时通常会失效。这是因为小区域中的像素数量对全局变换的计算影响微乎其微。解决方案是设计基于像素邻域强度分布的变换函数。

先前描述的直方图处理技术可以应用于局部增强该过程是定义一个邻域,并将其中心沿水平或垂直方向逐个像素移动。在每个位置,计算邻域内点的直方图,并获取直方图均衡化或直方图规定化变换函数。该函数用于映射邻域中心像素的强度。然后将邻域中心移动到相邻像素位置,并重复该过程。由于邻域中每移动一个像素,邻域中只有一行或一列发生变化,因此可以使用每次移动步骤引入的新数据更新先前位置获得的直方图(参见问题 3.14)。与每次移动邻域一个像素位置时重复计算邻域区域内所有像素的直方图相比,这种方法具有明显的优势。有时用于减少计算量的另一种方法是利用不重叠的区域,但这种方法通常会产生不良的“块状”效果。

例 3.9  局部直方图均衡化。

图 3.26(a) 是一幅 8 位、512 × 512 个像素的图像,由浅灰色背景上的五个黑色方块组成。图像略有噪点,但噪点几乎难以察觉。暗色方块中嵌入了一些物体,但实际上它们是不可见的。图 3.26(b) 是全局直方图均衡化的结果。与平滑、噪点区域进行直方图均衡化时常见的情况一样,这幅图像的噪点明显增强。然而,除了噪点之外,图 3.26(b) 并没有显示出原始图像中任何新的重要细节。图 3.26(c) 是对图 3.26(a) 进行局部直方图均衡化得到的,邻域大小为 3 × 3。在这里,我们可以看到所有暗色方块中的重要细节。这些物体的强度值与暗方块的强度过于接近,而且它们的尺寸太小,不足以对全局直方图均衡化产生足够显著的影响,从而无法显示这种程度的强度细节。

--------------------------------图 3.26:(a)原始图像。(b)全局直方图均衡化结果。(c)局部直方图均衡化结果。-----------------------------------------------

3.3.4  使用直方图统计进行图像增强(Using histogram statistics for image enhancement)

    直接从图像直方图获取的统计数据可用于图像增强。设 r 表示一个离散随机变量,其强度值在 [0,L - 1] 范围内;设 p(r_{i})   表示与强度值 r_{i}  对应的归一化直方图分量。如前所述,我们可以将 p(r_{i})  视为强度值 r_{i}  在获取直方图的图像中出现的概率估计值。

对于其强度等级位于 [0,L - 1] 范围内的一幅图像,r 关于其均值 mn 阶矩(moment)(译注:在数学和统计学中,矩(moment)是对变量分布和形态特点的一组度量。阶矩被定义为一变量的n次方与其概率密度函数(Probability Density Function, PDF)之积的积分)定义为

(3-24)                  \displaystyle \mu_{n} = \sum_{i=0}^{L-1}(r_{i}-m)^{n} p(r_{i})

其中 m 由下列公式得出,即

(3-25)                \displaystyle m = \sum_{i=0}^{L-1}r_{i} p(r_{i}) 

均值是平均强度和方差(variance)(或标准偏差(standard deviation) σ )的度量,其由下列公式得出,即

(3-26)                \displaystyle {\sigma}^{2} = \mu_{2} = \sum_{i=0}^{L-1}(r_{i}-m)^{2} p(r_{i})

这是一个图像对比测度。

    我们考虑了均值和方差在增强方面的两种用途。全局均值和方差[公式 (3-25) 和 (3-26)] 是针对整幅图像计算的,可用于对整体强度和对比度进行粗略调整。这些参数的更强大的用途是局部增强,其中局部均值和方差被用作根据图像中每个像素邻域内的图像特征进行更改的基础。

令 (x, y) 表示已知图像中任意像素的坐标,S_{xy}  表示以 (x, y) 为中心的指定大小的邻域。该邻域内像素的平均值计算方法为

(3-27)                \displaystyle S_{xy} = \sum_{i=0}^{L-1}r_{i} p_{S_{xy}}(r_{i})

其中,p_{S_{xy}}  是区域 S_{xy}  中像素的直方图,这个直方图有 L 个箱(bins),其对应输入图像中 L 个可能的强度值。然而,话多箱的记数为 0 ,具体取决于  S_{xy} 的大小。例如,如果邻域的大小为 3 × 3,且 L = 256,则邻域直方图的 256 个区间中,只有 1 到 9 个区间非零(3 × 3 区域中可能存在的最大不同强度数为 9,最小为 1)。这些非零值对应于  S_{xy}  中不同强度的数量。

邻域内像素的方差的计算公式同样为

(3-28)                \displaystyle {\sigma}_{S_xy}^{2} = \sum_{i=0}^{L-1}(r_{i}-m_{S_xy})^{2} p_{S_xy}(r_{i})

如前一样,局部均值是领域  S_{xy}  中平均强度的一个度量,局部方差(或称标准偏差)是在那个领域中强度对比的一个度量。

如下例所示,使用局部均值和方差进行图像处理的一个重要方面是,这些参数在开发简单但强大的增强规则方面具有灵活性,这些规则基于与图像外观具有密切、可预测对应关系的统计度量。

例 3.10  利用方差统计进行局部增强。

图 3.27(a) 与图 3.26(a) 是同一幅图像,我们使用局部直方图均衡化对其进行了增强。如前所述,深色方块包含几乎不可见的嵌入符号。与之前一样,我们希望增强图像以突出这些隐藏的特征

我们可以利用本节提出的概念来构建一种增强相似强度背景中低对比度细节的方法。当前的问题是如何增强图像暗区的低对比度细节同时保持亮区背景不变

判断某个区域在点 (x, y) 处是相对较亮还是较暗的一种方法是,将平均局部强度  m_{S_{xy}}  与平均图像强度(全局平均值,记为 m_{G} )进行比较。我们使用公式 (3-25) 和整幅图像的直方图计算 m_{G}  。由此,我们得到了增强方案的第一个元素:若  k_{0} m_{G} \leq m_{S_{xy}} \leq k_{1} m_{G}  ( 其中 ,  k_{0}  和 k_{1} 是非负常量且 k_{0}<k_{1}   ),则我们将位于点 (x, y) 处的像素考虑为一个待处理的像素。例如,如果我们关注的是暗于平均强度四分之一的区域,我们会选择  k_{0}=0  而 k_{1}=0.25  。

因为我们感兴趣的是增强对比度低的区域,所以我们还需要一个衡量标准来确定某个区域的对比度是否使其成为待增强区域。若  k_{2} {\sigma}_{G} \leq {\sigma}_{S_{xy}} \leq k_{3} \sigma_{G}   (  其中 ,  \sigma_{G}   是根据等式(3.26)用整幅图像的直方图计算而获得的标准偏差, k_{2}  和 k_{3}  是非负常量且 k_{2}<k_{3}  ),则我们将位于点 (x, y) 处的像素考虑为一个待处理的像素。例如,为了增强低对比度的暗区,我们可以选择 k_{2}=0 而 k_{3} = 0.01  。满足所有上述局部增强条件的像素将通过乘以指定常数 C 进行处理以增加(或减少)其相对于图像其余部分的强度值不满足增强条件的像素则不会改变

------------------------------图 3.27:(a)原始图像。(b)基于局部直方图统计的局部增强结果。比较(b)和图 3.26(c)。----------------------------------------

我们将上述方法总结如下:令 f (x, y) 表示图像在任意图像坐标 (x, y) 处的值,令 g (x, y) 表示增强图像中该坐标处的对应值。则对于 x = 0 , 1 ,2 ,… ,M – 1 和 y = 0 , 1 , 2 ,… ,N – 1,有

(3-29)        g (x, y) =\left \{ \begin{array} {lc} Cf(x,y)(\text{if} \;\; k_{0}m_{G}\leq m_{S_{xy}} \leq k_{1}m_{G}\;\;\text{and}\;\; k_{2}\sigma_{G}\leq m_{\sigma_{xy}} \leq k_{3}\sigma_{G})\\\\ f(x,y)(\text{otherwise}) \end{array} \right .

其中,如上所述,C , k_{0} ,k_{1} , k_{2}  ,和  k_{3}  是指定常量, m_{G}  是一个输入图像的全局均值,而 \sigma_{G}  是其标准偏差。参数  m_{S_{xy}}  和  \sigma_{S_{xy}}  分别是局部均值和标准偏差,其随着每一个局部 (x, y) 而变化。照例,M N 分别表示输入图像中的(像素)的行数和列数。

在选择公式 (3-29) 中的参数时,诸如全局平均值和相对于待增强区域的方差等因素起着关键作用,待增强区域与其背景之间的强度差异范围也起着关键作用。在图 3.27 (a)的情况中, m_{G} = 161  ,  \sigma_{G} = 103  。图像和待增强区域的最大强度值分别为 228 和 10,最小值均为 0 。

我们希望增强特征的最大强度值与图像的最大强度值相同,因此我们选择 C ​​= 22.8 。待增强区域相对于图像的其余部分非常暗,并且它们所占图像面积不到三分之一;因此,我们预计暗区的平均强度将远低于全局平均值。基于此,我们令  k_{0}=0  和 k_{1} = 0.1  。由于待增强区域的对比度非常低,因此我们令  k_{2}=0    。对于标准偏差的可接受值的上限,我们设定  k_{3}=0.1    ,这相当于全局标准偏差的十分之一。图 3.27(b) 是使用这些参数运用公式 (3-29) 的结果。通过将此图与图 3.26(c) 进行比较,我们发现基于局部统计的方法检测到的隐藏特征与局部直方图均衡化相同。但本方法提取的细节明显更多。例如,我们看到所有物体都是实体,但局部直方图均衡化只检测到了边界。此外,请注意,物体的强度并不相同,左上角和右下角的物体比其他物体更亮。此外,左下角正方形中的水平矩形的强度显然也不同。最后,请注意,图 3.27(b) 中图像和暗正方形的背景与原始图像几乎相同;相比之下,图 3.26(c) 中相同区域出现了更明显的噪声,并且丢失了灰度内容。因此,在这种情况下,使用局部统计方法所需的额外复杂性,却产生了优于局部直方图均衡化的结果。

3.4  空间滤波基础(Fundamentals of spatial filtering)

    本节将讨论空间滤波器在图像处理中的应用。空间滤波在图像处理应用中应用广泛,因此扎实理解滤波原理至关重要。正如本章开头所述,本节中的滤波示例主要涉及图像增强。空间滤波的其他应用将在后续章节中讨论。

    “滤波器(filter)”这个名称借用自频域处理(第四章的主题),其中“滤波”指的是通过、修改或拒绝图像中特定的频率成分。例如,允许低频通过的滤波器被称为低通滤波器。低通滤波器产生的净效应是通过模糊图像来平滑图像。我们可以通过使用空间滤波器直接在图像本身上实现类似的平滑。

    空间滤波通过将每一个像素的值替换为该像素及其邻域像素值的函数来修改图像如果对图像像素执行的操作是线性的,则该滤波器称为线性空间滤波器。否则,该滤波器称为非线性空间滤波器。我们将首先关注线性滤波器,然后介绍一些基本的非线性滤波器。第 5.3 节包含更全面的非线性滤波器及其应用列表。

3.4.1  线性空间滤波机制(The mechanics of linear spatial filtering)

    线性空间滤波器在图像 f 和滤波器核 w 之间执行乘积和运算。核是一个数组其大小定义了运算的邻域其系数决定了滤波器的性质(译注:此系数有时又称为权重)。用于指称空间滤波器核的其他术语包括掩模(mask)、模板(template)和窗口(window)。我们使用术语“滤波器核(filter kernel)”或简称为“(kernel)”(译注:因为核(或称算子)的性质就决定了邻域处理的结果,因此称其为核)。

    图 3.28 展示了使用 3 × 3 核的线性空间滤波机制。在图像中的任意一点 (x, y),滤波器的响应 g(x, y) 是核系数与该核所包含的图像像素的乘积之和:

(3-30)                 g(x, y) = w(-1,-1)f(x - 1,y - 1) + w(-1,0)f(x - 1,y) + ... + \\\\ + w(0,0)f(x, y) +... + w(1,1)f(x + 1, y + 1)

随着坐标 xy 的变化,核的中心从一个像素移动到另一个像素,从而在此过程中生成滤波图像 g 。(注:滤波后的像素值通常会被赋值到新图像中用于保存滤波结果的相应位置。滤波后的像素很少会替换原始图像中相应位置的值,因为这会在执行滤波时改变原图像的内容。)

    观察到核的中心系数 w(0, 0) 与位置 (x, y) 处的像素对齐。对于大小为 m × n 的核,我们假设 m = 2a + 1 且 n = 2b + 1,其中 ab 为非负整数。这意味着我们关注的是两个坐标方向上大小均为奇数的核(译注:这样它才有一个中心)。一般而言,对大小为 M × N 的图像进行线性空间滤波,其核大小为 m × n,表达式如下:

(3-31)                \displaystyle g(x, y) = \sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t)

其中 xy 是可变的,使得核的中心(原点)访问 f 中的每一个像素一次。对于 (x, y) 的固定值,公式 (3-31) 实现了公式 (3-30) 所示形式的乘积和,但适用于任意奇数大小的核。正如你将在下一节中了解到的那样,该公式是线性滤波的核心工具

3.4.2  空间相关性和卷积(Spatial correlation and convolution)

    空间相关性如图 3.28 所示,其数学描述见公式 (3-31)。相关性计算包括:在图像上移动核的中心,并计算每一个位置的乘积和。空间卷积的机制与之相同只是相比相关性其核旋转了 180°。因此,当核的值关于其中心对称时,相关性和卷积的结果相同。旋转核的原因将在以下讨论中阐明。解释这两个概念之间差异的最佳方式是通过示例。

    我们从一维实例开始,在这种情况下等式 (3-31) 成为

(3-32)                \displaystyle g(x) = \sum_{s=-a}^{a}w(s)f(x+s)   (译注:相关性只移动)

---------------------图 3.28:使用 3 × 3 核进行线性空间滤波的原理。为了简化图形,像素显示为正方形。请注意,图像的原点位于左上角,但核的原点位于其中心。将原点置于空间对称核的中心可以简化线性滤波表达式的书写。---------------------------

图 3.29(a) 显示了一维函数 f 和一个核 w。核的大小为 1 × 5,因此在这种情况下,a = 2,b = 0。图 3.29(b) 显示了用于执行相关运算的起始位置,其中 w 的中心系数与 f 的原点重合。

------------------------图 3.29:核函数 w 与函数 f 的一维相关性与卷积示意图,函数 f 包含一个离散单位脉冲。注意,相关性与卷积都是变量 x 的函数,x 的作用是将一个函数相对于另一个函数进行位移。对于扩展的相关性与卷积结果,起始配置将核函数最右边的元素与 f 的原点重合。必须使用额外的填充。(译注:开始的时候,核的中心对准像素位置,左侧空出的不足空间用0填充,核的数量是奇数,因此有一个中心位置)----------------------------

第一个相关性值是此初始位置的乘积之和,使用公式 (3-32) 对 x = 0 计算:

\displaystyle g(0) = \sum_{s=-2}^{2}w(s)f(s+0) = 0

该值位于图 3.29(g) 中相关性结果的最左侧位置。

    为了获得第二个相关性值,我们将 wf 的相对位置向右移动一个像素[即,在公式 (3-32) 中取 x = 1],然后再次计算乘积和。结果为 g(1) = 8,如图 3.29(g) 最左侧的非零位置所示。当 x = 2 时,我们得到 g(2) = 2。当 x = 3 时,我们得到 g(3) = 4 [见图 3.29(e)]。以此方式继续,每次移动 x 一次,我们“构建”出图 3.29(g) 中的相关性结果。注意,需要 8 个 x 值(即 x = 0,1, 2,…, 7)才能将 w 完全移动超过 f,因此 w 的中心系数访问了 f 中的每个像素。有时,让 w 的每个元素访问 f 中的每个像素很有用。为此,我们必须以 w 的最右边元素与 f 的原点重合为起点,并以 w 的最左边元素与 f 的最后一个元素重合为终点(这需要额外的填充)。图 3.29(h) 显示了这种扩展(或称完整)相关的结果。如图 3.29(g) 所示,我们可以通过裁剪图 3.29(h) 中的完整相关性来获得“标准”相关性。

    前面的讨论中有两点需要注意。首先,相关性是滤波器核相对于图像的位移函数换言之,第一个相关性值对应于核的零位移第二个相关性值对应于一个单位位移,依此类推。(注:实际上,在公式 (3-32) 中,每次 x 递增时,我们都会将 f 移到 w 的左侧。然而,更直观的做法是,将较小的核想象成在较大的数组 f 上向右移动。两者的运动是相对的,因此,无论用哪种方式看待运动都是可以接受的。我们递增 f 而不是 w 的原因是,这样对相性关和卷积等式进行索引会更容易(也更清晰),尤其是在处理二维数组时。)第二点需要注意的是,将核 w 与一个包含全 0 和一个 1 的函数进行相关性运算,会得到 w 的一个副本,但旋转了 180°。包含一个 1 且其余值均为 0 的函数称为离散单位脉冲(discrete unit impulse)。将核与离散单位脉冲进行相关性运算,会得到在脉冲位置旋转后的核版本

    图 3.29 的右侧显示了执行卷积的步骤序列(我们稍后会给出卷积的公式)。这里唯一的区别在于,在执行移位/乘积求和运算之前,核会预先旋转 180°。如图 3.29(o) 中的卷积所示,预先旋转核的结果是,我们在单位脉冲的位置获得了核的精确副本。事实上,线性系统理论的一个基础是,将一个函数与一个脉冲进行卷积,会在脉冲的位置获得该函数的副本。我们将在第四章中广泛使用这一性质。

    刚刚讨论的一维概念很容易扩展到图像,如图 3.30 所示。对于大小为 m × n 的核,我们在图像的顶部和底部填充至少 (m − 1) 行 0,在左侧和右侧填充至少 (n − 1) 列 0。在本例中,mn 等于 3,因此我们在 f 的上下填充一行 0,在左侧和右侧填充一列 0,如图 3.30(b) 所示。图 3.30(c) 显示了执行相关性运算的核的初始位置,图 3.30(d) 显示了 w 的中心访问 f 中的每一个像素并在每个位置计算乘积之和后的最终结果。与之前一样,结果是核的副本,旋转了 180°。我们稍后将讨论扩展的相关性运算结果。

    对于卷积,我们像之前一样预旋转核,并重复刚才解释的乘积滑动之和。图 3.30(f) 至 (h) 展示了结果。你再次看到,函数与脉冲的卷积会将函数复制到脉冲的位置。如前所述,如果核值关于中心对称,相关性和卷积会产生相同的结果

----------------------------图 3.30:二维核函数与包含离散单位脉冲的图像的相关性(中间行)和卷积(最后一行)。为了简化视觉分析,0 以灰色显示。注意,相关和卷积是 xy 的函数。随着这些变量的变化,它们会将一个函数相对于另一个函数位移。有关完全相关性和卷积,请参阅公式 (3-36) 和 (3-37) 的讨论。(译注:逆时针旋转180°,即从右上往左旋转。)---------------------------

脉冲的概念是线性系统理论的基础,本书多次使用。位于坐标 (x_{0},y_{0})  处的强度(振幅)为 A 的离散脉冲定义为

(3-33)                \delta(x-x_{0},y-y_{0})=\left \{ \begin{array}{lc} A(\text{if}\;\; x=x_{0}\;\; \text{and}\;\; y=y_{0}) \\ \\ 0(\text{otherwise}) \end{array} \right .

例如,图 3.29(a) 中的单位脉冲在上式的一维版本中表示为 δ(x - 3)。类似地,图 3.30(a) 中的脉冲表示为 δ(x - 2, y - 2)(记住,原点位于 (0,0))。

    将前面的讨论以等式形式总结,一个大小为 m × n 的核 w 与图像 f (x, y) 的相关性,记为 (wf )( x, y),由公式 (3-31) 给出,为方便起见,我们在此重复该公式:

(3-34)                  (wf )( x, y)  \displaystyle = \sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t) f(x+s,y+t)

由于我们的核函数不依赖于(x, y),我们有时会通过将上式左边写为 wf (x, y) 来明确地表达这一点。(3-34)式针对位移变量xy的所有值进行求值,使得 的中心点访问f中的每一个像素(注:如前所述,二维相关性所需的最小填充元素数量为 f 上下 (m - 1) 行,左右 (n - 1) 列。使用此填充,假设 f 的大小为 M × N ,则获得完全相关性所需的 xy 值为 x = 0, 1 , 2 ,… , M - 1 和 y = 0 , 1 , 2 , … , N - 1。这假设初始配置使得核的中心与图像的原点重合,我们将其定义为图像的左上角(见图 2.19)),其中我们假设f已被适当填充。如前所述,a = (m - 1)/2 ,b = (n - 1)/2,我们假设 mn 是奇数。

    按照相同的方式,一个大小为 m × n 的核 w 与图像 f (x, y) 的卷积(记为 (wf )( x, y)) 定义为

(3-35)                        \displaystyle (w {\bigstar} f )( x, y) = \sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t) f(x-s,y-t)

其中负号表示当其中一个函数旋转 180°后,fw 的坐标对齐(见习题 3.17)。该等式实现了乘积求和过程,我们在本书中将其称为线性空间滤波。也就是说,线性空间滤波和空间卷积是同义词

    由于卷积是可交换的(见表 3.5),因此 w f 是否旋转并不重要,但按照惯例会进行核的旋转。我们的核不依赖于 (x, y),有时我们会通过将公式 (3-35) 的左边写成 wf (x, y) 来明确这一点。当含义明确时,我们默认前两个等式对 xy 的依赖性,并使用简化的符号 wfwf 。与相关性一样,公式 (3-35) 针对位移变量 xy 的所有值进行求值,使得 w 的中心访问 f 中的每一个像素(我们假设这些像素已被填充)。实现完全卷积所需的 xy 的值为 x = 0 ,1 , 2 ,…, M - 1 和 y = 0 , 1 , 2 ,… , N - 1。结果的大小为 M × N

    我们可以定义相关性和卷积,使得 w 的每一个元素(而不仅仅是其中心)访问 f 中的每一个像素。这要求起始配置使得核的右下角与图像的原点重合。类似地,结束配置将是核的左上角与图像的右下角重合。如果核和图像的大小分别为 m × nM × N,则填充必须增加到在图像上方和下方填充 (m - 1) 个元素,在左侧和右侧填充 (n - 1) 个元素。在这些条件下,最终的完整相关性或卷积数组的大小将为 S_{v} \times S_{h}  ,其中(参见图 3.30(e) 和 (h),以及问题 3.19),

(3-36)                S_{v} = m + M - 1

(3-37)                S_{h} = n + N - 1

空间滤波算法通常基于相关性,因此只需实现公式 (3-34)即可。要使用相关性算法,我们需要输入 w ;要使用卷积算法,我们需要输入旋转 180°后的 w 。对于实现公式 (3-35) 的算法,情况正好相反。因此,可以通过旋转滤波器核,使公式 (3-34) 或公式 (3-35) 执行另一个函数。但请记住,输入到相关性算法中的函数顺序确实会有所不同,因为相关性既不满足交换律也不满足结合律(参见表 3.5)。

------------表 3.5:卷积和相关的一些基本性质。破折号表示该性质不成立。--------

图 3.31 显示了两个用于平滑图像强度的核。要使用其中一个核对图像进行滤波,我们以刚才描述的方式对核与图像进行卷积。在讨论滤波和核时,你可能会遇到卷积滤波器、卷积掩模或卷积核等术语,它们用来表示我们一直在讨论的那种滤波器核通常,这些术语在文献中用于表示空间滤波器核,并不一定意味着该核用于卷积。同样,“将核与图像进行卷积”通常用于表示我们刚才解释的滑动乘积之和过程,并不一定区分相关和卷积。相反,它泛指这两种运算中的任何一种。这种不精确的术语经常引起混淆在本书中,当我们使用术语“线性空间滤波”时,指的是将核与图像进行卷积。

-------------图 3.31: 平滑核的示例:(a)是箱核;(b)是Gauss核。--------------

有时,图像会分阶段进行顺序滤波(即卷积),每阶段使用不同的核。例如,假设图像 f 先用核 w_{1} 进行滤波,然后使用核 w_{1} 行滤波,最后使用第三个核进行滤波,以此类推,共 Q 阶段。根据卷积的交换律,这个多阶段滤波可以通过单个滤波运算 wf 来完成,其中

(3-38)                 w = w_{1} {\bigstar} w_{2} {\bigstar} w_{3} {\bigstar} ... {\bigstar} w_{Q}

w 的大小是通过依次应用公式 (3-36) 和 (3-37)而从各个核的大小得出的。如果所有核的大小均为 m × n,则根据这些公式,w 的大小为

(3-39)                W_{v} = Q × (m - 1) + m

(3-40)                W_{h} = Q × (n - 1) + n

这些等式假设核的每一个值都会访问上一步卷积所得数组中的每一个值。也就是说,初始和最终配置如公式 (3-36) 和 (3-37) 中所述。

3.4.3  可分离滤波核(Separable filter kernels)

    如 2.6 节所述,如果二维函数 G(x, y) 可以写成两个一维函数 G_{1}(x) 和 G_{2}(x)  的乘积,即 G(x, y) = G_{1}(x)G_{2}(y) ,则称该函数为可分离函数。一个空间滤波核是一个矩阵,而可分离核则可以表示为两个向量的外积(outer product)。例如,2 × 3 核

w=\begin{bmatrix} 1&1&1\\ 1&1&1 \end{bmatrix}

是可分离的,因为它可以表示为两个向量的外积(译注:叉积,向量积),即表示为

c=\begin{bmatrix} 1\\1 \end{bmatrix}  和  r=\begin{bmatrix} 1\\1\\1 \end{bmatrix}

之外积。即

\text{cr}^{T}=\begin{bmatrix} 1\\1 \end{bmatrix}\begin{bmatrix} 1&1&1\end{bmatrix}=w

一个大小为 m × n 的分离核可以表示为两个向量 v 和 w 的外积:

(3-41)                        w=\text{v}\rm{w}^{T}

其中 v 和 w 分别是大小为 m × 1 和 n × 1 的向量。对于一个大小为 m × m 的平方核,我们记为

 (3-42)                        w = \text{vv}^{T}

事实证明,列向量和行向量的乘积(译注:外积)与向量的二维卷积相(参见问题 3.24)。

    可分离核的重要性在于,它能够带来计算优势,而这得益于卷积的结合律。假设我们有一个核 w,它可以分解成两个更简单的核,使得  w = w_{1} \bigstar w_{2}  ,那么根据表 3.5 中的交换律和结合律,可以得出:

(3-43)         w {\bigstar} f = (w_{1} {\bigstar} w_{2}) {\bigstar} f = (w_{2} {\bigstar} w_{1}) {\bigstar} f = w_{2} {\bigstar} ( w_{1} {\bigstar} f ) \\ \\= ( w_{1} {\bigstar} f ) {\bigstar} w_{2}

这个等式表明,用一个可分离核与一幅图像进行卷积运算,与先用 w_{1}  与 f 进行卷积然后再将其结果与 w_{2}  进行卷积是一样的。

对于一幅大小为 M × N 的图像,等式 (3-35) 的实现要求基于 MNmn 的乘法和加法次序。这是因为从该等式可直接得出,输出(滤波)图像中的每一个像素都取决于滤波器核中的所有系数。但若核是可分离的且我们应用等式(3-43),则第一个卷积 w_{1}{\bigstar} f  要求大约 MNm 次乘法和加法运算,因为w_{1} 的大小为 m × 1 。结果是大小为 M × N 的矩阵,因此 w_{2}  与结果的卷积为要求MNn 次这样的运算,合总数 MN(m + n) 次乘法和加法运算。因此,使用可分离核(而非不可分离核)进行卷积的计算优势值(computational advantage)定义为

(3-44)                 \displaystyle C=\frac{MNmn}{MN(m+n)}=\frac{mn}{m+n}

对于中等大小的核,例如 11 × 11,计算优势值(以及由此带来的执行时间优势)高达 5.2 倍。对于包含数百个元素的核,执行时间可以缩短(译注:相对于不可分离核)一百倍甚至更多,这是非常显著的。我们将在示例 3.16 中演示如何使用如此大的核。

    我们从矩阵理论得知,由列向量和行向量乘积得到的矩阵的秩(rank)始终为 1。根据定义,可分离核由这样的乘积构成。因此,要判断一个核是否可分离,我们只需要确定它的秩是否为 1 即可。通常,我们使用计算机语言中预编程的函数(pre-programmed)(译注:内置函数)来计算矩阵的秩。例如,如果你使用 MATLAB,使用函数 rank 就可以完成这项工作。

    一旦确定核矩阵的秩为 1,就不难找到两个向量 v 和 w,使得它们的外积 \text{vw}^{T}   等于核。该方法仅包含三个步骤:

(1) 求得核中的任意非零元素,并用 E 表示其值。

(2) 形成向量 c 和 r,分别等于包含步骤 1 中求得的元素的核中的列和行。

(3) 根据等式 (3-41) 令 v = c 和 \text{w}^{T} =\rm{ r/E} 。

这个简单的三步法之所以有效,是因为秩为 1 的矩阵的行和列是线性相关的也就是说,行和列之间只有一个常数乘数的差异列和行之间也是如此。使用较小的核函数来推导此过程的机制很有指导意义(参见习题 3.20 和 3.22)。

    正如我们上述所解释的那样,为了实现一维总面积,我们的目标是求得两个一维核 \rm{w}_{1}  和 \rm{w}_{2}  。根据前述记法,\rm{w}_{1} = c = v  而  \rm{w}_{2} = r/E = w^T  。对于圆对称核,通过核中心的列描述整个核;即 w = \rm{vv}^T/c  ,其中 c 是中心系数的值,则一维分量分别是 w_{1} =\rm{ v}  和 w_{2} = \rm{v}^{T}/c

3.4.4  空间域和频域滤波的一些重要比较(Some important comparisons between filtering in the spatial and frequency domains)

    虽然频域滤波是第 4 章的主题,但我们在此介绍一些频域中的重要概念,这将有助于你掌握接下来的内容。

    空间域和频域处理之间的联系纽带是Fourier变换。我们使用Fourier变换从空域转换到频域;要返回空间域,我们使用Fourier变换。这将在第4章详细介绍。本文重点介绍与空间域和频域相关的两个基本属性:

(1) 卷积是空间域滤波的基础它相当于频域中的乘法反之亦然

(2) 空间域中强度为 A 的脉冲是频域中值等于 A 的常数,反之亦然。

    如第四章所述,满足某些温和条件(mild conditions)的函数(例如,图像)可以表示为不同频率和振幅的正弦波之和(译注:或余弦波之和,说法都一样)。因此,图像的外观取决于其正弦波分量的频率——改变这些分量的频率,就会改变图像的外观这一概念之所以如此强大,是因为它能够将某些频带与图像特征关联起来。例如,图像中强度变化缓慢的区域(例如,房间图像中的墙壁)以低频正弦波为特征。类似地,边缘和其他急剧的强度过渡以高频为特征。因此,降低图像的高频分量往往会使图像变得模糊

    线性滤波关注的是求得合适的方法来修改图像的频率成分在空间域中,我们通过卷积滤波来实现这一点在频域中,我们通过乘法滤波器来实现这一点后者是一种更直观的方法,这也是为什么如果没有一些基本的频域知识,几乎不可能真正理解空间滤波的原因之一

--------------------------图 3.32:(a)频域中的理想一维低通滤波器传递函数。(b)空域中相应的滤波器核。--------------------------------------------

举个例子有助于阐明这些思想。为简单起见,考虑一个一维函数(例如,穿过图像的强度扫描线),并假设我们想要消除所有高于截止值 u_{0}  的频率,同时“传送(passing)”所有低于该值的频率。图 3.32(a) 显示了一个用于实现此目的的频域滤波函数。(术语“滤波器转移函数(filter transfer function)”用于表示频域中的滤波函数——这类似于我们在空间域中使用术语滤波器核”。) 图 3.32(a) 中的函数被恰当地称为低通滤波器转移函数。事实上,这是一个理想的低通滤波器函数,因为它消除了所有高于 u_{0}  的频率,同时传递了所有低于该值的频率。(注:我们感兴趣的所有频域滤波器都是关于原点对称的并且包含正频率和负频率,我们将在4.3节中解释(见图4.8)。为了简单起见,我们暂时只展示一维滤波器的右侧(正频率)。) 换言之,滤波器在低频和高频之间的转换是瞬时的。此类滤波函数无法用物理元件实现,并且在数字实现时存在“振铃”问题。然而,理想滤波器对于说明许多滤波现象非常有用,正如你将在第 4 章中了解到的那样。

为了在频域中对空间信号进行低通滤波,我们首先通过计算其 Fourier 变换将其转换到频域然后将结果乘以图 3.32(a) 中的滤波器传递函数,以消除值高于   u_{0}  的频率分量。为了返回到空间域,我们对滤波后的信号进行逆Fourier变换。结果将是一个模糊的空间域函数。

    由于空间域和频域之间的对偶性我们可以通过将等效空间域滤波器核(equivalent spatial domain filter kernel)与输入空间函数进行卷积,在空间域中获得相同的结果。等效空间滤波器核是频域滤波器传递函数的逆 Fourier 变换。图 3.32(b) 显示了与图3.32(a) 中的频域滤波器传递函数相对应的空间滤波器核。图中可以清楚地看到该核的振铃特性。数字滤波器设计理论的核心主题是获得对理想频域滤波器的陡峭截止的忠实(且实用)近似,同时降低其振铃特性

3.4.5  关于如何构建空间滤波器核的说明(A word about how spatial filter kernels are constructed)

在本章的后续章节中,我们将讨论三种构建空间滤波器的基本方法。一种方法是基于数学特性制定滤波器。例如,计算邻域内像素平均值的滤波器会使图像模糊。计算平均值类似于积分。相反,计算图像局部导数的滤波器会使图像清晰化。我们将在后续章节中给出许多这种方法的示例。

第二种方法是基于对形状具有所需特性的二维空间函数进行采样。例如,我们将在下一节中展示,Gauss 函数的样本可用于构建加权平均(低通)滤波器。这些二维空间函数有时是由频域中指定的二维滤波器的逆 Fourier 叶变换生成的。我们将在本章和下一章中给出几个这种方法的示例。

第三种方法是设计具有指定频率响应的空间滤波器。该方法基于上一节讨论的概念,属于数字滤波器设计领域。通常使用滤波器设计软件,获得具有所需响应的一维空间滤波器。一维滤波器值可以表示为向量 v,然后使用公式 (3-42) 获得二维可分离核。或者,可以将一维滤波器绕其中心旋转,以生成近似于圆对称函数的二维核。我们将在 3.7 节中演示这些技术。

演示这些技术。

3.5  平滑[低通]空间滤波(Smoothing (lowpass) of spatial filters)

平滑(也称为平均(averaging))空间滤波器用于减少强度的急剧变化由于随机噪声通常由强度的急剧变化组成,因此平滑的一个显而易见的应用是降噪在图像重采样之前进行平滑处理以减少混叠(aliasing)(这将在4.5节中讨论)也是一种常见的应用。平滑用于减少图像中不相关的(irrelevant)细节,其中“不相关的”是指相对于滤波器核的大小较小的像素区域另一个应用是平滑由于图像中使用的强度级别数量不足而导致的伪轮廓,如2.4 节所述。平滑滤波器与其他图像增强技术结合使用,例如 3.3节中讨论的直方图处理技术和本章后面讨论的反锐化掩模(masking)技术。我们将从详细讨论线性平滑滤波器开始讨论平滑滤波器。我们将在本节后面介绍非线性平滑滤波器。

正如我们在 3.4 节中讨论的那样,线性空间滤波包括将图像与滤波器核进行卷积。将平滑核与图像进行卷积会使图像模糊模糊程度由核的大小及其系数值决定。低通滤波器除了在无数图像处理应用中有用之外,它还是一个基础滤波器,因为其他重要的滤波器,包括锐化(高通)、带通和带阻滤波器,都可以从低通滤波器推导而来,我们将在 3.7 节中展示这一点。

本节我们将讨论基于盒核和 Gauss 核的低通滤波器,这两种核都是可分离的。由于Gauss 核具有众多有用的特性和广泛的适用性,因此大部分讨论将集中在 Gauss 核上。我们将在第 4 章和第 5 章介绍其他平滑滤波器。

3.5.1  箱式滤波器核(Box filter kernels)

    最简单的可分离低通滤波器核是箱式核其系数具有相同的值(通常为 1)。“符式核”这个名称来自于常数核,它在 3 维视图中看起来像一个箱子。在图 3.31(a) 中,我们展示了一个 3×3 的箱式滤波器。一个 m×n 箱式滤波器是一个 m×n 的值为 1 的数组,前面有一个归一化常数,其值是 1 除以系数值之和(即,当所有系数都是 1 时为 1 /mn)。我们将这种标准化应用于所有低通核,它有两个目的。首先,强度恒定的区域的平均值将等于婆滤图像中的强度,这是理所当然的其次,以这种方式对核进行规范化可以防止在滤婆过程中引入偏差;也就是说,原始图像和滤波后的图像中的像素总和将相同(参见问题 3.31)。因为在箱式核中所有行和列都是相同的,所以这些核的秩为 1,正如我们之前讨论过的那样,这意味着它们是可分离的。

例子 3.11:具有一个箱式核的低通滤波器。

图 3.33(a)显示了大小为 1024 × 1024 像素的测试图案图像。图 3.33(b)-(d)是使用大小为 m × m 的箱式滤波器获得的结果,其中 m 分别等于 3,11 和 21。对于 m = 3,我们注意到图像整体模糊,其尺寸与核尺寸相当的图像特征受到的影响更大。这些特征包括图像中较细的线条和图像右侧框中包含的噪声像素。经过滤波的图像还具有细的灰色边框,这是在滤波之前对图像进行零填充的结果。如前所述,填充扩展了图像的边界,以避免在滤波过程中核的部分位于图像边界之外时出现未定义的操作。当使用零(黑色)填充时,边界处或边界附近的平滑最终结果是深灰色边界,这是由于在平均过程中包括了黑色像素引起的。使用 11 × 11 核会导致整个图像的模糊更加明显,包括更突出的深色边框。使用 21×21 核的结果显示图像的所有组成部分都明显模糊,包括某些组成部分的特征形状的丢失,例如左上角的小方块和左下角的小字符。由零填充产生的深色边框比以前更厚。我们在这里使用了零填充,并且还会使用几次,以便你熟悉它的效果。在例子 3.14 中,我们讨论了另外两种填充方法,它们可以消除通常由零填充导致的暗边框伪影(artifact)。

-----------------图 3.33:(a)尺寸为 1024 × 1024 像素的测试图案。 (b)-(d)分别使用大小为3×3,11×11 和 21×21 的箱式核进行低通滤波的结果。----------------

3.5.2  低通Gauss滤波器核(Lowpass gaussian filter kernels)

由于箱式滤波器简单,适合快速实验,并且通常可产生视觉上可接受的平滑结果。当需要减少平滑对边缘的影响时,它们也很有用(参见示例 3.13)。然而,箱式滤波器具有局限性,使得它们在许多应用中成为不良选择。例如,散焦镜头通常被建模为低通滤波器,但箱式滤波器无法很好地近似镜头的模糊特性(参见问题 3.33)。另一个限制是箱式滤波器倾向于沿垂直方向模糊。在涉及高细节水平或强几何成分的图像的应用中,箱式滤波器的方向性通常会产生不良结果。(例 3.13 说明了这个问题。)这只是箱式滤波器不适用的两个应用。

在刚才提到的应用中,选择的核是圆对称的(也称为各向同性(isotropic),意味着它们的响应与方向无关)。事实证明,形如

(3-45)                \displaystyle w(s ,t) = G(s ,t ) = \displaystyle Ke^{\displaystyle \frac{s^{2}+t^{2}}{2{\sigma}^{2}}}{}

Gauss 核是唯一的可分离的圆对称核(Sahoo [1990])。因此,由于这种形式的Gauss核是可分离的,高斯滤波器享有与箱式滤波器相同的计算优势,但具有一系列额外的特性,使其成为图像处理的理想选择,你将在下面的讨论中了解到这些特性。等式(3-45)中的变量 st 是实数(通常是离散的)。

通过令 r = (s^{2}+t^{2} )^{1/2}  ,我们可以将等式 (3-45) 写成

(3-46)                 G(r ) = K{\displaystyle}e^{ \displaystyle \frac{r^{2}}{2{\sigma}^{2}}}

这种等价形式简化了本节中后续表达式的推导。这种形式还提醒我们该函数是圆对称的。变量 r 是从中心到函数 G 上任意点的距离。图 3.34 使用 st 的整数值显示了几种核大小的 r 值。因为我们通常使用奇数大小的核,所以这种核的中心落在整数值上,因此 r^{2}  的所有值也都是整数。你可以通过图 3.34 中的值的平方来看到这一点。(正式证明请参见 Padfield [2011])。特别要注意的是,对于大小为 m × m 的核,到角点的距离距离平方为

(3-47)                    \displaystyle r_{max}^{2}=\left [\frac{(m-1)\sqrt{2}}{2} \right ]^{2}=\frac{(m-1)^{2}}{2}

------------------------图 3.34:各种尺寸的方形核与中心的距离。----------------

图 3.31(b) 中的核是通过对等式(3-45)(其中,K = 1 且 σ = 1) 进行采样获得的。图 3.35(a) 显示了 Gauss 函数的透视图,并说明用于生成该核的样本是通过指定 s t 的值,然后“读取”这些坐标处的函数值获得的。这些值就是核的系数。通过将核的系数除以系数之和来对核进行归一化,从而完成核的规范化。对核进行规范化的原因与箱式核中的讨论相同。因为 Gauss 核是可分离的,所以我们可以简单地沿横截面取样通过中心并使用样本形成等式(3-42)中的向量 v ,由此我们获得二维核 。

-------------------------图 3.35:(a) 对 Gauss 函数进行采样以获得离散 Gauss 核。所示的值是针对 K = 1 和 s = 1 的 。(b) 得到的 3×3 核[这与图 3.31(b) 相同]。--------------------------------------------

可分离性是圆对称 Gauss 核的众多基本属性之一。例如,我们知道,Gauss 函数在距均值大于 3σ 处的值足够小,可以忽略不计。这意味着如果我们选择 Gauss 核的大小为 ⌈ 6σ ⌉ × ⌈ 6σ ⌉(符号 ⌈ c ⌉  表示 c 的上限;即不小于 c 的最小整数),我们可以保证获得与使用任意大的 Gauss 核基本相同的结果。从另一个角度来看,这个性质告诉我们,对于图像处理使用大于 ⌈ 6σ ⌉ × ⌈ 6σ ⌉ 的 Gauss 核不会有任何好处。因为我们通常处理奇数维数的核,所以我们会使用满足此条件的最小奇数整数(例如,若 σ = 7,则为 43×43 核)。

    Gauss 函数的另外两个基本性质是——两个 Gauss 函数的乘积和卷积也是 Gauss 函数。表 3.6 显示了两个一维 Gauss 函数 fg 的乘积和卷积的均值和标准偏差(请记住,由于可分离性,我们只需要一个一维 Gauss 函数来形成圆对称的二维函数)。均值和标准偏差完整地定义了 Gauss 分布,因此表 3.6 中的参数告诉了我们所有关于 Gauss 乘法和卷积所得函数的知识。如等式 (3-45) 和 (3-46) 所示,Gauss 的均值为零,因此我们这里感兴趣的是其标准偏差

-----------------------------------表 3.6:两个一维 Gauss 函数 fg 的乘积 (×) 与卷积 (★) 的均值和标准偏差。这些结果可直接推广到两个及以上一维 Gauss 函数的乘积与卷积(见问题 3.25)。 -------------------------------------------------

卷积结果在滤波中尤为重要。例如,我们在与等式 (3-43) 相关的地方提到过,滤波有时是在连续的阶段中完成的并且可以通过使用由各个核的卷积形成的复合核进行一级滤波来获得相同的结果。如果核函数是 Gauss 函数,我们可以使用表 3.6 中的结果(如前所述,该结果直接推广到使用两个及以上的函数)来计算复合核的标准偏差(从而完全定义它),而实际上不必执行所有单个核的卷积。

例子 3.12 :带有一个 Gauss 核的低通滤波器。

为了比较 Gauss 核滤波和箱式核滤波,我们使用 Gauss 核重复示例 3.11。Gauss 核滤波器必须大于箱式滤波器才能达到相同程度的模糊(译注:指核的维度大小)。这是因为,尽管箱式核为所有像素分配相同的权重,但 Gauss 核系数的值(以及它们的影响)随着与核中心的距离增大而减小。正如前面所解释的那样,我们使用等于最接近 ⌈ 6σ ⌉ × ⌈ 6σ ⌉  的奇数整数的大小。因此,对于大小为 21 × 21 的 Gauss 核(这是我们用来生成图 3.33(d) 的核的大小),我们需要 σ = 3.5 。图 3.36(b) 显示了使用该核对测试模式进行低通滤波的结果。将此结果与图 3.33(d) 进行比较,我们发现 Gauss 核导致的模糊明显减少。经过一些实验就会发现,我们需要 σ = 7 才能获得可比的结果。这意味着Gauss 核的大小为 43 × 43 。图 3.36(c) 显示了使用该核对测试模式进行滤波的结果。与图 3.33(d) 相比,我们发现结果确实非常接近。

---------------------------------------图 3.36:(a)尺寸为 1024 × 1024 的测试模式。(b)使用尺寸为 21 × 21 的 Gauss 核对模式进行低通滤波的结果,标准差 σ = 3.5。(c)使用大小为 43×43 的核(σ = 7)的结果。该结果与图 3.33(d) 相当。在所有情况下我们都使用 K = 1。-----------------------------------------

我们之前提到过,使用大于 ⌈ 6σ ⌉ × ⌈ 6σ ⌉  的 Gauss 核几乎没有什么好处。为了证明这一点,我们再次使用 σ = 7 的 Gauss 核对图 3.36(a) 中的测试模式进行了滤波,但大小为 85 × 85。图 3.37(a) 与图 3.36(c) 相同,后者是我们使用满足 ⌈ 6σ ⌉ × ⌈ 6σ ⌉ 条件的最小奇数核( 43 × 43,对于 σ = 7)生成的。图 3.37(b) 是使用 85×85 核的结果,该核的大小是另一个核的两倍。正如你所见,没有出现明显的额外模糊。事实上,图 3.37(c) 中的差异图像表明这两幅图像几乎相同,它们的最大差异为 0.75 (译注:应该指的是图像的强度差) ,小于 256 个强度级别中的 1 个强度级别(这些是 8 位图像)。

-----------------------------------图 3.37:(a)使用大小为 43 × 43 的 Gauss 核(σ = 7)对图 3.36(a) 进行滤波的结果。 (b)使用大小为 85 × 85 的核( σ 值相同) 的结果。 (c)差异图像。---------------------------------------------------------

例子 3.13 :Gauss 和箱式滤波器平滑特性之对比

例子 3.11 和 3.12 中的结果表明模糊方面几乎没有视觉差异。尽管如此,还是存在一些乍一看不明显的细微差别。例如,试比较图 3.33(d)和 3.36(c)中的大写字母“a” ;后者的边缘更加光滑。图 3.38 更清楚地显示了箱式核和 Gauss 核之间的这种不同行为。使用图中列出的尺寸和参数的箱式核和 Gauss 核对矩形的图像进行平滑处理。选择这些参数是为了给出宽度和高度大致相同的模糊矩形,以便在可比的基础上显示滤波器的效果。如强度分布图所示,箱式滤波器产生线性平滑,从黑色到白色(即在边缘处)的过渡具有斜坡形状。这里的重要特征是坡道起点和终点处的硬过渡当需要较少的边缘平滑度时,我们会使用这种类型的滤波器相反,Gauss 滤波器产生边缘过渡处的效果明显更加平滑当需要均匀平滑时,我们会使用这种类型的滤波器

---------------------------------图 3.38:(a)黑色背景上的白色矩形图像,以及沿扫描线的虚线水平强度分布。(b) 使用大小为 71×71 的箱式核对该图像进行平滑的结果,以及相应的强度分布。(c)使用大小为 151 × 151 的 Gauss 核对图像进行平滑的结果,其中 K = 1 和 σ = 25。注意(c)中的轮廓与(b) 中的轮廓相比更加平滑。图像和矩形的尺寸分别为 1024 × 1024 和 768 × 128 像素。-----------------------------------

如例子 3.11,3.12 和 3.13 中的结果所示,对图像进行零填充会在滤波结果中引入暗边框边框的粗细取决于所用滤波核的大小和类型。前面在讨论相关性和卷积时,我们提到了另外两种图像填充方法:镜像(mirror)(也称为对称)填充其中图像边界之外的值是通过在图像边界上镜像反射图像来获得的;以及复制填充(replicate padding),其中边界外的值被设置为等于最接近的图像边界值当图像边界附近的区域保持不变时,后一种填充很有用。相反,当边界附近的区域包含图像细节时,镜像填充更适用。换句话说,这两种填充试图将图像的特征“扩展”到其边界之外

图 3.39 说明了这些填充方法,同时也展示了更积极的平滑效果。图 3.39(a) 到 3.39(c) 分别显示了使用大小为 187 × 187 个元素的 Gauss 核(其中 K = 1,σ = 31)对图 3.36(a) 进行滤波的结果,并分别使用了零填充、镜像填充和重复填充。使用零填充的图像的结果边框与其他两个的结果边框之间的差异是显而易见的,并且表明镜像和复制填充通过消除零填充导致的暗边框产生了更具视觉吸引力的结果。

---------------------------------图 3.39:使用(a)零填充,(b)镜像填充和(c)复制填充对图 3.36(a)中的测试模式进行滤波的结果。在这三种情况下都使用了大小为 187 × 187 的 Gauss 核,其中 K = 1 和 σ = 31。-------------------------------------

例子 3.14 :平滑性能作为内核和图像大小的函数。

    由一个已知大小的平滑核产生的相对模糊量直接取决于图像大小。为了说明这一点,图 3.40(a) 显示了之前使用的相同测试模式,但尺寸为 4096 × 4096 像素,每个维度都比之前大四倍。图 3.40(b) 显示了使用图 3.39(b) 中的相同 Gauss 核和填充对该图像进行滤波的结果。相比之下,对于相同尺寸的滤波器,前一个图像的模糊程度明显较小。事实上,图 3.40(b) 看起来更像图 3.36(d) 中的图像,后者使用了 43 × 43 的 Gauss核进行滤波。为了获得与图 3.39(b) 相当的结果,我们必须将 Gauss 核的大小和标准差增加四倍,这与图像尺寸的增加幅度相同。这给出了一个大小为(奇数) 745 × 745 的核(其中 K = 1 和 σ = 124)。图 3.40(c) 显示了使用该核和镜像填充的结果。该结果与图 3.39(b) 非常相似。事后看来,这似乎是一个微不足道的观察,但你可能会惊讶地发现,不理解核大小和图像中物体大小之间的关系会导致空间滤波算法的性能低下

--------------------------------图 3.40:(a)尺寸为 4096 × 4096 像素的测试图案。(b)使用与图 3.39 相同的 Gauss 核对测试模式进行滤波的结果。(c) 使用大小为 745 × 745 个元素的 Gauss 核对模式进行过滤的结果,其中 K = 1 和 σ = 124 。始终使用镜像填充。--------------------------------------------------------------

例子 3.15 :使用低通滤波和阈值进行区域提取。

    图 3.41(a) 是哈勃望远镜拍摄的 Hickson紧致群(Hickson Compact Group)的 2566 × 2758 图像(见图片说明),其强度被缩放到范围 [0,1]。我们的目标是说明低通滤波结合强度阈值来消除图像中不相关的细节。在当前语境中,“不相关”是指与核大小相比较小的像素区域

    图 3.41(b) 是用大小为 151 × 151 的 Gauss 核对原始图像进行滤波的结果(约占图像宽度的 6% ),标准差 σ = 25。我们选择这些参数值是为了生成比我们在之前的例子中使用的更清晰、更有选择性的 Gauss 核形状。滤波后的图像显示出四个主要明亮的区域。我们希望仅从图像中提取这些区域。图 3.41(c) 是用阈值 T = 0.4 对滤波后图像进行阈值处理的结果。 (我们将在第 10 章讨论阈值选择)。如图所示,该方法有效地提取了四个感兴趣的区域,并消除了在该应用中被认为不相关的细节

------------------------------图 3.41:(a) 哈勃望远镜拍摄的Hickson紧致群的 2566 × 2758 图像。(b)采用 Gauss 核的低通滤波的结果。 (c) 对滤波图像进行阈值处理的结果(强度缩放到范围 [0, 1])。Hickson紧致群包含聚集在一起的矮星系,形成了数千个新的星团。(原始图片由 NASA 提供。)---------------------------------------

例子 3.16 :使用低通滤波进行阴影校正。

    图像阴影的主要原因之一是照明不均匀阴影校正(Shading correction)(也称为平场校正(flat-field correction))很重要因为阴影是导致错误测量、自动图像分析算法性能下降以及人类图像解释困难的常见原因。我们在示例 2.7 中介绍了阴影校正,其中我们通过将阴影图像除以阴影图案来校正阴影图像。在这个例子中,给出了阴影图案。但实际情况往往并非如此,我们必须直接从可用的阴影图像样本中估计模式。低通滤波是一种估算阴影图案的简单而有效的方法

    考虑图 3.42(a) 中的 2048×2048 棋盘格图像,其内部方格大小为 128×128 像素。图 3.42(b) 是使用 512 × 512 Gauss 核(四个乘以正方形的大小),K = 1 和 σ = 128(等于正方形的大小)。这个内核刚好足够模糊正方形(正方形三倍大小的内核太小,不足以充分模糊正方形)。该结果与图 3.42(a) 中可见的阴影图案非常接近。最后,图 3.42(c) 是 (a) 除以 (b) 的结果。尽管结果并不是完全平坦的,但与阴影图像相比肯定有所改进。

    在第 3.4 节中关于可分离核的讨论中,我们指出,对于大核来说,可分离核的计算优势可能非常显著。从等式(3-44)可知,本例中使用的核(当然是可分离的)的计算优势是 262 比 1。考虑计算时间,如果使用 Gauss 核的两个一维可分离分量处理一组类似于图 3.42(b) 的图像需要 30 秒,那么使用不可分离的低通核或直接使用二维 Gauss 核(不将其分解为可分离部分)则需要 2.2 小时才能达到相同的结果。

-----------------------------图 3.42:(a)以 −45° 方向为导向的阴影图案所遮蔽的图像。(b)使用低通滤波获得的阴影图案估计。(c)将(a)除以(b)的结果。(有关阴影校正的形态学方法,请参见第 9.8 节)。--------------------------------------------

3.5.3  顺序统计(非线性)滤波器(Order-statistic (nonlinear) filters)

顺序统计滤波器是非线性空间滤波器其响应是基于对滤波器所涵盖区域内包含的像素的排序(排列(ranking))平滑是通过将中心像素的值替换为由排列结果确定的值此类别中最著名的滤波器是中值滤波器(median filter),顾名思义,它用中心像素邻域内强度值的中值替换该像素的值(在计算中值时包含中心像素的值)。中值滤波器对于某些类型的随机噪声具有出色的降噪能力,并且与类似大小的线性平滑滤波器相比,模糊程度要小得多。中值滤波器在存在脉冲噪声(impulse noise)(有时称为椒盐噪声(salt-and-pepper noise),表现为图像上叠加的白点和黑点)时特别有效。

    一组值的中值 ξ 是这样的:该集合中一半的值小于或等于 ξ ,另一半的值大于或等于 ξ 为了对图像中的某一点进行中值滤波,我们首先对邻域内像素的值进行排序,确定它们的中值,并将该值分配给滤波后图像中对应于邻域中心的像素。例如,在 3×3 邻域中,中位数是第 5 最大值,在 5×5 邻域中,中位数是第 13 最大值,依此类推。当一个邻域内有几个值相同时,所有相等的值都会被分组。例如,假设 3×3 邻域具有值 (10, 20, 20, 15, 20, 20, 25, 100)。这些值的排序为(10, 15, 20, 20, 20, 20, 20, 25, 100),得出中值为 20。因此,中值滤波器的主要功能是强制点更像它们的邻居。相对于相邻像素而言较亮或较暗的孤立像素簇,其面积小于 m^{2}/2  (滤波器面积的一半),通过 m × m 中值滤波器强制其具有邻域内像素的中值强度值(参见问题 3.36)。

中值滤波器是迄今为止图像处理中最有用的顺序统计滤波器,但并不是唯一的滤波器。中值代表一组经过排序的数字中的第 50 个百分位数,但排序本身还具有许多其他可能性。例如,使用第 100 个百分位数会产生所谓的最大滤波器(max filter),这对于查找图像中最亮点或侵蚀与亮区相邻的暗区很有用。 3×3 最大滤波器的响应由 R =\rm{max} \{ z_{k} | k = 1, 2, 3,..., 9\} 给出 。第 0 个百分位数滤波器是最小滤波器,用于相反的目的。中值、最大值、最小值和其他几个非线性滤波器将在第 5.3 节中详细讨论

例子 3.17 :中值滤波。

    图 3.43(a) 显示了受到椒盐噪声严重破坏的电路板的 X 射线图像。为了说明在这种情况下中值滤波相对于低通滤波的优越性,我们在图 3.43(b) 中展示了使用 Gauss 低通滤波器对噪声图像进行滤波的结果,并在图 3.43(c) 中展示了使用中值滤波器的结果。低通滤波器使图像模糊,并且降噪性能较差。在这种情况下,中值滤波在各方面优于低通滤波的优势是显而易见的。

----------------------------图 3.43:(a)电路板的 X 射线图像,受到椒盐噪声的影响。(b)使用 19×19 Gauss 低通滤波器核(σ = 3)进行降噪。(c)使用 7×7 中值滤波器进行降噪。(原始图片由 Lixi, Inc. 的 Joseph E. Pascente 先生提供。)---------------

3.6  锐化(高通)空间滤波器(Sharpening (highpass) spatial filters)

    锐化突出了强度的转变图像锐化的用途范围从电子印刷和医学成像到工业检查和军事系统中的自主制导。在第 3.5 节中,我们看到图像模糊可以在空间域中通过邻域像素平均(平滑)来实现。因为平均类似于积分,所以可以合理地得出这样的结论:锐化可以通过空间微分来实现。事实上,情况确实如此,下面的讨论涉及通过数字微分来定义和实现锐化运算符的各种方法。导数算子的响应强度与应用该算子的点的强度的不连续的大小成正比。因此,图像微分增强了边缘和其他不连续性(例如噪声),并弱化了强度缓慢变化的区域。如第 3.5 节所述,平滑通常被称为低通滤波,这是从频域处理中借用的术语类似地,锐化通常被称为高通滤波。在这种情况下,高频(负责精细细节)会被传递,而低频会被衰减或拒绝。

3.6.1  基础(Foundation)

    在接下来的两节中,我们将分别详细讨论基于一阶和二阶导数的锐化滤波器。不过,在继续讨论之前,我们先来看看这些导数在数字背景下的一些基本性质。为了简化解释,我们首先关注一维导数。我们特别关注这些导数在恒定强度区域、不连续性(阶跃(step)和斜坡间断性(ramp discontinuities))的起始和终止处以及强度斜坡(intensity ramps)方向上的行为。正如你在第十章中看到的,这些类型的间断性可用于模拟图像中的噪声点、线和边缘。

    数字函数的导数是用差值来定义的(译注:推导的数,不要与数学上的导数混淆)。定义这些差值的方法有很多种。但是,我们要求对一阶导数的任何定义都必须满足:

(1) 在强度恒定的区域必须为零。

(2) 在强度阶跃或强度斜坡开始时必须为非零。

(3) 强度斜坡期间必须为非零。

类似地,二阶导数的任何定义必须满足:

(1)  在强度恒定的区域必须为零。

(2)  在强度阶跃或强度上升的开始和结束时必须为非零

(3)  在强度斜波期间必须为零

我们处理的是数值有限的数字量。因此,最大可能的强度变化也是有限的,并且相邻像素之间发生这种变化的最短距离也是有限的。

    一维函数 f (x) 的一阶导数的基本定义是

(3-48)                        \displaystyle \frac{\partial f}{\partial x} = f (x + 1) - f (x)

这里我们使用偏导数是为了保持符号的一致性,因为当我们考虑一个包含两个变量的像函数 f (x, y) 时,我们将讨论沿两个空间轴的偏导数。显然,当函数中只有一个变量时,∂f /∂x = df/dx ;二阶导数也是如此。

    我们将 f (x) 的二阶导数定义为差值

(3-49)                       \displaystyle \frac{\partial^{2} f}{\partial x^{2}} = f (x + 1) +f(x-1)- 2f (x)

这两个定义满足上述条件,如图 3.44 所示,我们还考察了数字函数一阶导数和二阶导数之间的异同。

------------------------------图 3.44:(a) 图像中水平扫描线的一段,显示斜坡和阶跃边缘,以及恒定线段。(b) 扫描线及其导数的值。(c) 导数图,显示零交叉。(a) 和 (c) 中的点用虚线连接,以辅助视觉效果。--------------------------------------- 

图 3.44(a) 中小方块表示的值是沿水平强度分布的强度值(图中连接方块的虚线是为了方便可视化)。扫描线的实际数值显示在图 3.44(b) 中的小方框内。如图 3.44(a) 所示,扫描线包含三个部分,分别为:强度恒定段、强度斜坡段和强度阶跃段。圆圈表示强度转变的开始或结束。使用前面两个定义计算的一阶和二阶导数显示在图 3.44(b) 中扫描线值下方,并绘制在图 3.44(c) 中。计算位置 x 处的一阶导数时,我们会从下一个点减去该位置处的函数值,如公式 (3-48) 所示,因此这是一个“向前看”的操作。类似地,为了计算 x 点的二阶导数,我们使用前一个点和后一个点进行计算,如公式 (3-49) 所示。为了避免前一个点或后一个点超出扫描线范围的情况,我们在图 3.44 中展示了从序列中的第二个点到倒数第二个点的导数计算。

    当我们从左到右遍历该剖面时,我们首先会遇到一个强度恒定的区域,如图 3.44(b) 和 (c) 所示,这两个导数在该区域均为零,因此两个导数都满足条件 (1)。接下来,我们遇到一个强度斜坡,随后是阶跃,我们注意到,一阶导数在斜坡和阶跃的起始处不为零;同样,二阶导数在斜坡和阶跃的起始和终止处都不为零;因此,两个导数都满足性质(2)。最后,我们看到两个导数也满足性质 (3),因为一阶导数在斜坡上不为零,而二阶导数为零。注意,二阶导数的符号在阶跃或斜坡的起始和终止处会发生变化。事实上,我们在图 3.44(c) 中看到,在阶跃过渡中,连接这两个值的一条线与横轴相交,位于两个极值之间的中点。这个零交叉特性对于定位边缘非常有用,正如你将在第 10 章中看到的那样。

    数字图像的边缘通常呈现斜坡状的强度过渡,在这种情况下,图像的一阶导数会导致边缘较粗,因为导数沿斜坡方向不为零。另一方面,二阶导数会产生一个像素厚的双边,由零分隔。由此,我们得出结论,二阶导数比一阶导数更能增强精细细节,这一特性非常适合锐化图像。此外,二阶导数比一阶导数需要更少的运算来实现,因此我们首先关注的是前者。

3.6.2  使用二阶导数进行图像锐化——Laplace算子(Using the second derivative for image sharpening—the laplacian)

本节将讨论二维二阶导数的实现及其在图像锐化中的应用。该方法包括定义二阶导数的离散公式,然后基于该公式构建滤波器核。与 3.5 节中 Gauss 低通核的情况一样,我们这里关注各向同性核(isotropic kernels)(或称迷向核),其响应与应用滤波器的图像中强度间断性的方向无关

可以证明(Rosenfeld 和 Kak [1982]),最简单的各向同性导数算子(operator)(或称算符)(核)是 Laplace 算子,对于二元函数(图像)f (x, y),其定义为

(3-50)                \displaystyle \bigtriangledown^{2}f = \frac{\partial^{2} f}{\partial x^{2} }{} + \frac{\partial^{2} f}{\partial y^{2} } 

由于任何阶的导数都是线性运算,因此 Laplace 算子是线性算子。为了以离散形式表示该公式,我们使用公式 (3-49) 中的定义,同时注意,我们现在有了第二个变量。在 x 方向上,我们有

(3-51)                \displaystyle \frac{\partial^{2} f}{​{\partial}x^{2}} = f (x + 1 ,y) + f (x - 1,y) - 2 f (x,y)

类似地,在 y 方向,我们有

(3-52)                 \displaystyle \frac{\partial^{2} f}{​{\partial}y^{2}} = f (x ,y+ 1) + f (x,y - 1) - 2 f (x,y)

从前面三个公式可以看出,两个变量的离散 Laplace 算子是

(3-53)

  \displaystyle \bigtriangledown^{2}f(x,y) = f (x + 1,y) + f (x -1,y)+ f (x ,y + 1)+ f ( x ,y - 1)- 4 f (x,y)

该公式可以通过与图 3.45(a) 中的核进行卷积来实现;因此,图像锐化的滤波机制与 3.5 节中对低通滤波的描述相同;我们只是在这里使用了不同的系数。

    图 3.45(a) 中的核对于相对于 x 轴和 y 轴以 90° 为增量的旋转是各向同性的。通过在公式 (3-53) 中再添加四个项,可以将对角线方向合并到数字 Laplace 算子的定义中。由于每个对角线项都包含一个 - 2 f (x ,y)  项,因此现在从差分项中减去的和将是 -8 f (x ,y)。图 3.45(b) 显示了用于实现此新定义的核。该核以 45° 为增量产生各向同性结果。图 3.45(c) 和 (d) 中的核也用于计算 Laplace 算子。它们是通过二阶导数的定义获得的,这些导数是我们在此处使用的二阶导数的负值。它们产生等效的结果,但在将经过 Laplace 滤波的图像与另一幅图像合并时,必须注意符号的差异。

--------------------------图 3.45:(a) 用于实现公式 (3-53) 的 Laplace 核。(b)用于实现包含对角线项的该公式扩展的核。(c)和(d)另外两个拉普拉斯核。---------------

由于 Laplace 算子是一个导数算子,因此它会突出图像中急剧的强度过渡,并弱化强度变化缓慢的区域。这往往会产生带有灰度边缘线和其他不连续性的图像,这些不连续性叠加在黑暗、毫无特征的背景上。通过将 Laplace 算子图像添加到原始图像中,可以“恢复”背景特征,同时仍然保留 Laplace 算子的锐化效果。如上一段所述,务必记住所使用的 Laplace 算子的定义。如果使用的定义的中心系数为负,则我们从原始图像中减去 Laplace 算子图像,以获得锐化结果。因此,我们使用 Laplace 算子进行图像锐化的基本方法是

(3-54)                g(x,y) = f (x,y) + c[\bigtriangledown^{2} f (x ,y)]

其中 f (x ,y) 和 g (x ,y) 分别为输入图像和锐化图像。如果使用图 3.45(a) 或 (b) 中的 Laplace 核,则 c = -1 ;如果使用其他两个核中的任意一个,则 c = 1。

例子 3.18:使用 Laplace 算子的图像锐化(Image sharpening using the Laplacian)

图 3.46(a) 显示了一张略微模糊的月球北极图像,而图 3.46(b) 则是直接使用图 3.45(a) 中的 Laplace 核对该图像进行滤波的结果。该图像的大部分区域都是黑色的,因为 Laplace 图像同时包含正值和负值,而所有负值都被显示器截断为 0

图 3.46(c) 显示了使用公式 (3-54) 获得的结果,其中 c = -1,因为我们使用了图 3.45(a) 中的核来计算 Laplace 算子。这幅图像中的细节明显比原始图像更清晰锐利。将Laplace 算子添加到原始图像中恢复了图像的整体强度变化。添加 Laplace 算子增加了强度不连续处的对比度。最终结果是图像中的小细节得到了增强,并且背景色调得到了合理的保留。最后,图 3.46(d) 显示了重复相同过程但使用图 3.45(b) 中的核的结果。在这里,我们注意到清晰度比图 3.46(c) 有显著提高。这并不意外,因为使用图 3.45(b) 中的核在对角线方向上提供了额外的微分(锐化)。图 3.46(c) 和 (d) 中的结果使得 Laplace 算子成为锐化数字图像的首选工具

--------------------------------图 3.46:(a)月球北极的模糊图像。(b) 使用图 3.45(a) 中的核函数获得的拉普拉斯图像。(c)使用公式 (3-54) 锐化后的图像,其中 c = -1。(d) 使用相同步骤锐化的图像,但使用了图 3.45(b) 中的核函数。(原始图像由 NASA 提供。)---------------------------------------------------------------

由于 Laplace 图像往往较暗且缺乏特征,因此缩放这些图像以便显示的一种典型方法是使用公式 (2-31) 和 (2-32)。这会将最小负值变为 0,并显示所有强度范围。图 3.47 是以这种方式处理图 3.46(b) 的结果。该图像的主要特征是边缘和明显的强度不连续性。由于缩放,背景之前是黑色的,现在也变成了灰色。这种灰色是经过适当缩放的Laplace 图像的典型特征。

-----------------------------------图 3.47: 图 3.46(b) 中的Laplace图像,已缩放至 [0, 255] 范围内的强度值。黑色像素对应于未缩放 Laplace 图像中的最大负值,灰色对应于中间值,白色像素对应于最大正值。-----------------------------------------

在图 3.45 中观察到,每个核的系数之和为零。基于卷积的滤波实现了乘积的和,因此,当导数核包含图像中的某个恒定区域时,该位置的卷积结果必定为零。使用系数之和为零的核可以实现这一点。

    在 3.5 节中,我们对平滑核进行了归一化,使其系数之和为 1。使用这些核滤波后的图像中的常数区域,在滤波后的图像中也为常数。我们还发现,原始图像和滤波后图像的像素之和相同,从而避免了滤波引入的偏差(参见问题 3.31)。当使用系数之和为零的核对图像进行卷积时,滤波后图像的像素之和也为零(参见问题 3.32)。这意味着用此类核滤波后的图像将具有负值,有时需要额外处理才能获得合适的视觉效果。将滤波后的图像添加到原始图像中(就像我们在公式 (3-54) 中所做的那样),就是这种额外处理的一个例子。

3.6.3  反锐化蒙版和高增强滤波——Laplace算子(Unsharp masking and highboost filtering)

    从原始图像中减去非锐化(平滑)版图像是印刷出版行业自 20 世纪 30 年代以来一直使用的一种处理方法,可以锐化图像。此过程称为非锐化掩膜处理,包含以下步骤:

(1) 对原始图像进行模糊处理。

(2) 从原始图像中减去非锐化(平滑)版图像(所得的差值称为掩模(mask))

(3) 将掩模添加到原始图像中。

令  \overline{f}(x,y)  表示模糊图像,掩模的等式形式为:

(3-55)                g_{mask}(x ,y) = f (x ,y) - \overline{f}(x ,y)

然后我们将掩模的加权部分添加回原始图像:

(3-56)                 g (x ,y) = f (x ,y) + kg_{mask}(x ,y)

其中,为了通用,我们包包含了一个权重 k ≥ 0 。当 k = 1 时,我们有如上所定义的反锐化掩模(3-55)。当 k > 1 时,这个过程是指高增强滤波(highboost filtering)。

    图 3.48 展示了反锐化掩模(unsharp masking)的原理。(a) 部分是水平强度分布图,横跨垂直斜坡边缘,由暗过渡到亮。图 3.48(b) 显示了模糊扫描线叠加在原始信号(虚线)上。图 3.48(c) 是从原始信号中减去模糊信号后得到的掩模。将此结果与图 3.44(c) 中对应于图 3.44(a) 中斜坡的部分进行比较,我们注意到图 3.48(c) 中的反锐化掩模与使用二阶导数得到的结果相似。图 3.48(d) 是最终的锐化结果,是将掩模添加到原始信号后得到的。信号中斜率发生变化的点现在被强调(锐化)。请注意,原始信号中添加了负值。因此,如果原始图像中存在任何零值,或者 k 值选择得足够大,使得掩模的峰值被强调到比原始信号最小值更大的程度,那么最终结果就有可能出现负强度。负值会导致边缘周围出现暗晕,如果 k 值过大,可能会产生令人不快的效果。

-----------------------------------图 3.48:反锐化掩模机制的一维图示。(a) 原始信号。(b) 模糊信号,原始信号以虚线显示以供参考。(c) 反锐化掩模。(d) 将 (c) 加到 (a) 后获得的锐化信号。--------------------------------------------------------

例子 3.19:反锐化掩膜和高增强滤波(Unsharp masking and highboost filtering.)

    图 3.49(a) 显示了深灰色背景上白色文本略微模糊的图像。图 3.49(b) 是使用大小为 31 × 31, σ = 5 的 Gauss 平滑滤波器获得的。如我们之前关于 Gauss 低通核的讨论中所述,此处使用的核大小是不小于 6σ × 6σ 的最小奇数。图 3.49(c) 是使用公式 (3-55) 获得的反锐化掩模。为了获得图 3.49(d) 中的图像,我们使用了公式 (3-56) 中的反锐化掩模表达式,其中 k = 1。这幅图像比图 3.49(a) 中的原始图像清晰得多,但我们可以做得更好,如下一段所示。

    图 3.49(e) 显示了使用公式 (3-56) 并取 k = 4.5 的结果。这个值几乎是我们可以使用的极限值,而不会在图像中引入一些严重的伪影。伪影是字符边框周围出现暗淡的、几乎是黑色的光晕。这是由于图 3.48(d) 中下方的“光晕”变为负值造成的,正如我们之前解释的那样。当缩放图像使其仅显示正值时,负值要么被截断为 0,要么被缩放以使最负的值变为 0,具体取决于所使用的缩放方法。无论哪种情况,光晕都将是图像中最暗的值。

    图 3.49(d) 和 3.49(e) 中的结果很难使用前面解释过的传统胶片摄影技术生成,它说明了在数码摄影领域图像处理的强大功能和多功能性。

---------------------------------图 3.49:(a) 原始图像尺寸为 600 × 259 像素。(b) 使用 31 × 31 高斯低通滤波器( σ = 5)模糊后的图像。(c) 蒙版(mask)。(d)使用公式 (3-56) 进行反锐化掩模处理的结果( k = 1)。(e )使用高增强滤波的结果( k = 4.5)。---------------------------------------------------------------------

3.6.4  使用一阶导数进行图像锐化——梯度(Using first-order derivatives for image sharpening—the gradient)

图像处理中的一阶导数是用梯度的幅值来实现的。图像 f  在坐标 (x, ) 处的梯度定义为二维列向量

(3-57)                \displaystyle \bigtriangledown f=\text{grad}(f)=\begin{bmatrix}g_{x}\\g_{y} \end{bmatrix}=\begin{bmatrix}\frac{\partial f}{\partial x}\\\\ \frac{\partial f}{\partial y}\end{bmatrix}  

该向量具有重要的几何性质,即它指向位置 (x, y) 处 f  变化率最大的方向。

    向量  \bigtriangledown f  大小(magnitude)(即长度)表示为 M(x, y) ( 有时候也常用向量范数符号   \Vert \bigtriangledown f \Vert  表示) ,其中

(3-58)                \displaystyle M(x, y) =\Vert \bigtriangledown f \Vert = \text{mag}(\bigtriangledown f ) = \sqrt{​{g_{x}}^{2}+{g_{y}}^{2}}

是梯度向量方向变化率在点 (x, y) 处的值 。注意:M(x, y) 是一幅与原始图像大小相同的图像,当 xy 可以在 f 的所有像素位置上变化时创建。通常将此类图像称为梯度图像(或者在含义清晰时简称为梯度)。

    由于梯度向量的分量是导数,因此它们是线性算子然而,由于平方和平方根运算,该向量的幅值并非线性算子。在另一方面,公式 (3-57) 中的偏导数不是旋转不变的,但梯度向量的幅值是旋转不变的。

    在一些实现中,用绝对值来近似平方和平方根运算在计算上更为合适(译注:即将非线性转化为近似线性来处理):

(3-59)                \displaystyle M(x, y) \approx |g_{x}| + |g_{y}|

该表达式仍然保留了强度的相对变化,但各向同性通常会丢失。然而,与 Laplace 算子的情况一样,下一段定义的离散梯度的各向同性仅在有限数量的旋转增量内保留,这些增量取决于用于近似导数的核。事实证明,用于近似梯度的最常用核在 90°的倍数处是各向同性的。这些结果与我们使用公式 (3-58) 还是公式 (3-59) 无关,因此,如果我们选择使用后者,不会丢失任何重要信息。

    与 Laplace 算子的情况类似,我们现在定义前述等式的离散近似,并由此推导出适当的核函数。为了简化接下来的讨论,我们将使用图 3.50(a) 中的符号来表示 3 × 3 区域中像素的强度。例如,中心点 z_{5}  表示 f (x, y) 在任意位置 (x, y) 处的值; z_{1}  表示 f ( x –1 , y - 1) 的值;如此等等。如公式 (3-48) 所示,满足本节开头所述条件的一阶导数的最简单近似是:

(3-60)                g_{x} = (z_{9} - z_{5})    和    g_{y} = (z_{8} - z_{6})  

若我们应用公式 (3-58)(3-60) ,我们计算出的梯度图像为

(3-61)                M(x, y) = [(z_{9} - z_{5})^{2}+(z_{8} - z_{6})^{2} ]^{1/2}

若我们应用公式(3-59)(3-60) ,我们计算出的梯度图像为

(3-62)                M(x, y) \approx |z_{9} - z_{5}| + |z_{8} - z_{6}|

其中,xy 按照前面描述的方式在图像维度上变化。公式 (3-60) 中所需的差分项可以用图 3.50(b) 和 (c) 中的两个核来实现。这些核被称为 Roberts 交叉梯度算子(Roberts cross-gradient operators)。

    如前所述,我们倾向于使用奇数大小的核,因为它们具有唯一的(整数)空间对称中心。我们感兴趣的最小核的大小为 3 × 3 。使用一个中心位于 z_{5}  的 3 × 3 领域的 g_{x}  和 g_{y}  的近似如下:

(3-63)                \displaystyle g_{x} = \frac{\partial f}{\partial x} = (z_{7} + 2z_{8} + z_{9}) - (z_{1} + 2z_{2} + z_{3})

(3-64)                \displaystyle g_{y} = \frac{\partial f}{\partial x} = (z_{3} + 2z_{6} + z_{9}) - (z_{1} + 2z_{4} + z_{7})

这些公式可以使用图 3.50(d) 和 (e) 中的核来实现。3 × 3 图像区域第三行与第一行之间的差值近似于 x 方向的偏导数,可以使用图 3.50(d) 中的核来实现。第三列与第一列之间的差值近似于 y 方向的偏导数,可以使用图 3.50(e) 中的核来实现。图像中所有点的偏导数都是通过将图像与这些核进行卷积得到的。然后,我们可以像之前一样得到梯度的幅值。例如,将 g_{x} 和 g_{y} 代入公式 (3-59) 中可得

(3-65)

\begin{array}{rlc} M(x, y) &= [g_{x}^{2}+g_{y}^{2}]^{1/2} \\ \\ &=\left [ [(z_{3} + 2z_{6} + z_{9} )- (z_{1} + 2z_{4} + z_{7} )]^{2}+[(z_{3} + 2z_{6} + z_{9}) - (z_{1} + 2z_{4} + z_{7})]^{2} \right ]^{1/2} \end{array}

该公式表明,任意图像坐标 (x, y) 处的 M 值,都是通过对两个核与该坐标处的图像 f 的卷积值求平方,将两个结果相加,然后取平方根得出的。

    图 3.50 (d) 和 (e) 中的核被称为 Sobel 算子。中心系数使用权重值 2 的背后思想是通过赋予中心点更多权重来实现一定的平滑效果(我们将在第 10 章中详细讨论这一点)。图 3.50 中所有核的系数总和为零,因此它们在强度恒定的区域会给出零响应,这与导数算子的预期一致。如前所述,当图像与系数总和为零的核进行卷积时,生成的滤波图像的元素总和也为零,因此,与图 3.50 中的核进行卷积的图像通常具有负值。

如上所述,g_{x}  和 g_{y}  的计算是线性运算,并使用卷积实现。梯度锐化的非线性方面是 M(x, y) 的计算,涉及平方和平方根,或者使用绝对值,所有这些都是非线性运算。这些运算是在生成  g_{x}   和  g_{y}  的线性过程(卷积)之后执行的。

-----------------------------图 3.50:(a) 图像的一个 3 × 3 区域,其中 z 轴为强度值。(b)–(c) Roberts 交叉梯度算子。(d)–(e) Sobel 算子。所有核系数之和为零,正如导数算子的预期。------------------------------------------------------

例子 3.20  利用梯度进行边缘增强(Using the gradient for edge enhancement)

    梯度在工业检测中经常使用,要么用于辅助人类检测缺陷,要么更常见的是,作为自动化检测的预处理步骤。我们将在第10章中对此进行更详细的讨论。不过,现在先考虑一个简单的例子来说明如何使用梯度来增强缺陷并消除缓慢变化的背景特征,这将很有启发性。

    图 3.51(a) 是隐形眼镜的光学图像,其照明装置旨在突显瑕疵,例如镜片边界上 4 点钟和 5 点钟位置的两个边缘缺陷。图 3.51(b) 显示了使用公式 (3-65) 和图 3.50(d) 和 (e) 中的两个 Sobel 核获得的梯度。边缘缺陷在该图像中也清晰可见,但额外的优势在于消除了恒定或缓慢变化的灰度,从而大大简化了自动检测所需的计算任务。梯度还可用于突显灰度图像中不易察觉的小斑点(这些斑点可能是异物、辅助溶液中的气穴或镜片中的微小瑕疵)。能够增强原本平坦的灰度场中的细小间断性是梯度的另一个重要特性

-------------------------图 3.51:(a)隐形眼镜图像(注意 4 点钟和 5 点钟方向边界上的缺陷)。(b) Sobel 梯度。(原始图像由 Perceptics Corporation 提供。)-------------------------------------------

3.7   基于低通滤波器的高通、带阻、和带通滤波器(Highpass, bandreject, and bandpass filters from lowpass filters)

    空间域和频域线性滤波器分为四大类:低通滤波器和高通滤波器(我们在第 3.5 节和 3.6 节中介绍过),以及带通滤波器和带阻滤波器(我们将在本节中介绍)。我们在第 3.5 节的开头提到,其他三类滤波器都可以由低通滤波器构成。本节将探讨实现此目的的方法。此外,我们还将说明第 3.4 节末尾讨论的第三种获取空间滤波器核的方法。也就是说,我们使用滤波器设计软件包生成一维滤波器函数。然后,我们利用这些函数通过公式 (3-42) 生成二维可分离滤波器函数,或者通过绕其中心旋转一维函数来生成二维核。旋转后的版本是圆对称(各向同性)函数的近似值。

    图 3.52(a) 显示了频域中一维理想低通滤波器的转移函数(与图 3.32(a) 相同)。从本章前面的讨论中我们知道,低通滤波器会衰减或消除高频,同时允许低频通过。高通滤波器的行为恰恰相反。如图 3.52(b) 所示,高通滤波器会消除或衰减所有低于截止值 u_{0}   的频率,并允许所有高于该值的频率通过。比较图 3.52(a) 和 (b),我们发现高通滤波器的转移函数是通过从 1 中减去一个低通函数得到的。此操作是在频域中进行的。正如你从 3.4 节中所知,频域中的常数在空间域中就是一个脉冲。因此,我们通过从与核中心相同的单位脉冲中减去一个低通滤波器核,在空间域中得到一个高通滤波器核。使用此核滤波的图像与从原始图像中减去低通滤波图像后的图像相同。公式 (3-55) 定义的反锐化掩模正是这种操作。因此,公式 (3-54) 和 (3-56) 实现了等效的操作(参见问题 3.42)。

图 3.52(c) 显示了带阻滤波器的转移函数。该转移函数可以由截止频率不同的低通函数和高通函数之和构成(高通函数可以由不同的低通函数构成)。图 3.52(d) 中的带通滤波器传递函数可以通过从 1(空域中的单位脉冲)中减去带阻函数得到。带阻滤波器也称为陷波滤波器(notch filters),但后者往往更注重局部特性,我们将在第 4 章中对此进行阐述。表 3.7 总结了前面的讨论。

    图 3.52 和表 3.7 的关键点在于,所有所示的转移函数都可以从低通滤波器传递函数开始获得。这一点很重要。同样重要的是,我们是通过频域中简单的图形解释得出这一结论的。而基于空域卷积得出同样的结论则要困难得多。

-----------------------------图 3.52:频域中理想一维滤波器的转移函数(u 表示频率)。(a) 低通滤波器。(b) 高通滤波器。(c) 带阻滤波器。(d) 带通滤波器。(与之前一样,为了简单起见,我们只显示正频率。)----------------------------------------

----------------------------表 3.7:以低通滤波器表示的四种主要空间滤波器类型的总结。单位脉冲的中心与滤波器核的中心重合。---------------------------------------

例子 3.21:高通、低通、带阻和带通滤波器 

    本例中,我们将演示如何从使用软件包生成的一维低通滤波器转移函数入手,然后基于本节介绍的概念,使用该转移函数生成空间滤波器核。我们还将研究这些核的空间滤波特性。

    图 3.53 展示了所谓的区域板(zone plate)图像,该图像常用于测试滤波方法的特性。区域板有多种版本;图 3.53 中的区域板是使用以下公式生成的

(3.66)                \displaystyle z(x , y) = \frac{1}{2} [ 1 + \cos( x^{2} + y^{2} )]

xy 的变化范围为 [-8.2 ,8.2 ] ,按 0.0275 的幅度递增。这产生了一张尺寸为 597 × 597 像素的图像。边界黑色区域是通过将距离图像中心大于 8.2 的所有像素设置为 0 生成的。区域板的关键特性是其空间频率会随着距离中心的距离而增加,正如你所看到的,环越靠近中心,环就越窄。这一特性使区域板成为展示刚才讨论的四种滤波器类型行为的理想图像。

--------------------图 3.53:尺寸为 597 × 597 像素的区域板图像。-------------

图 3.54(a) 展示了一个使用 MATLAB 设计的一维、128 元素空间低通滤波器函数(与图 3.32(b) 比较)。如前所述,我们可以使用此一维函数基于公式 (3-42) 构建一个二维可分离低通滤波器核,或者可以将其绕中心旋转以生成一个二维各向同性核。图 3.54(b) 中的核是使用后一种方法获得的。图 3.55(a) 和 (b) 分别是使用可分离核和各向同性核对图 3.53 中的图像进行滤波的结果。这两个滤波器都允许区域板的低频通过,同时显著衰减高频。然而,可以观察到,可分离滤波器核​​在通过的频率上产生了“近似方形”(非径向对称)的结果。这是使用非各向同性的可分离核对图像进行垂直方向滤波的结果。使用各向同性的核会产生在所有径向方向上均匀的结果。这符合预期,因为滤波器和图像都是各向同性的。

-----------------------------图 3.54:低通滤波器函数。(b)通过绕中心旋转一维轮廓获得的二维核。------------------------------------

-----------------------------图 3.55:(a)经可分离低通核滤波的区域板图像。(b)经各向同性低通核滤波的图像,如图 3.54(b) 所示。--------------------------

图 3.56 显示了使用表 3.7 中描述的四种滤波器对区域板进行滤波的结果。我们使用图 3.54(b) 中的二维低通核作为高通滤波器的基础,并使用类似的低通核作为带阻滤波器的基础。图 3.56(a) 与图 3.55(b) 相同,为了方便起见,我们重复了图 3.55(b)。图 3.56(b) 是高通滤波后的结果。请注意低频被有效地滤除。与高通滤波图像一样,黑色区域是由于显示器将负值限幅为 0 造成的。图 3.56(c) 显示了使用公式 (2-31) 和 (2-32) 缩放的同一图像。在这里,我们清楚地看到,只有高频信号通过了滤波器。由于高通核的构造使用了与生成图 3.56(a)时相同的低通核,因此通过比较两个结果可以明显看出,高通滤波器通过了被低通滤波器衰减的频率。

    图 3.56(d) 显示了带阻滤波后的图像,其中频率中带的衰减非常明显。最后,图 33.56(e) 显示了带通滤波的结果。该图像也包含负值,因此在图 3.56(f) 中进行了缩放。由于带通核是通过从单位脉冲中减去带阻核而构建的,因此我们看到带通滤波器允许被带阻滤波器衰减的频率通过。我们将在第 4 章中给出更多带通和带阻滤波的示例。

---------------------------------图 3.56:区域板图像的空间滤波。(a)低通结果;与图 3.55(b) 相同。(b)高通结果。(c)强度缩放后的图像 (b)。(d)带阻结果。(e)带通结果。(f)强度缩放后的图像 (e)。------------------------------------------------

3.8   组合空间增强方法(Combining spatial enhancement methods)

除少数例外,例如将模糊与阈值相结合(图 3.41),我们迄今为止主要关注的是单个空间域处理方法。通常,一项给定的任务需要应用几种互补的技术才能获得可接受的结果。在本节中,我们将说明如何结合本章迄今为止开发的几种方法来处理一项困难的图像增强任务。

    图 3.57(a) 中的图像是核素(nuclear)全身骨扫描,用于检测骨骼感染和肿瘤等疾病。我们的目标是通过锐化图像并呈现更多骨骼细节来增强此图像。由于灰度级的动态范围狭窄且噪声含量较高,因此难以增强此图像。我们将采用的策略是利用 Laplace 算子突出精细细节,并使用梯度增强突出边缘。出于稍后将解释的原因,我们将使用平滑的梯度图像来掩模 Laplace 算子图像。最后,我们将尝试使用灰度变换来增加灰度级的动态范围。

    图 3.57(b) 显示了使用图 3.45(d) 中的核函数获得的原始图像的 Laplace 算子。该图像使用与图 3.47 相同的技术进行了缩放(仅供显示)。根据公式 (3-54),我们只需将图 3.57(a) 和 (b) 相加,即可获得此时的锐化图像。仅从图 3.57(b) 中的噪声水平来看,如果将图 3.57(a) 和 (b) 相加,我们就会得到一个噪声很大的锐化图像。图 3.57(c) 的结果证实了这一点。一种立即想到的降低噪声的方法是使用中值滤波器。然而,中值滤波是一种激进的非线性过程,会去除图像特征。这在医学图像处理中是不可接受的。

    另一种方法是使用由原始图像梯度的平滑版本形成的掩模。该方法基于我们在解释图 3.44 时讨论过的一阶和二阶导数的性质。Laplace 算子是一个二阶导数算子,其显著优势在于它能够更好地增强精细细节然而,这也导致它产生比梯度更噪的结果。这种噪点在平滑区域最为明显,因为这些区域的噪点往往更明显。在强度变化显著(斜坡和阶跃)的区域,梯度的响应比 Laplace 算子更强。梯度对噪点和精细细节的响应低于 Laplace 算子,并且可以通过使用低通滤波器平滑梯度来进一步降低。因此,我们的想法是平滑梯度,并将其乘以 Laplace 算子图像。在这种情况下,我们可以将平滑后的梯度视为掩模图像。该乘积将保留强区域的细节,同时降低相对平坦区域的噪点。这个过程可以粗略地理解为结合 Laplace 算子和梯度的最佳特征。将结果添加到原始图像中,以获得最终的锐化图像。

图 3.57(d) 显示了原始图像的 Sobel 梯度,使用公式 (3-59) 计算得出。分量 g_{x}  和  g_{y}  分别使用图 3.50(d) 和 (e) 中的核函数获得。正如预期的那样,该图像中的边缘比 Laplace 图像中的边缘更加突出。图 3.57(e) 中的平滑梯度图像是使用大小为 5 × 5 的盒式滤波器获得的。图 3.57(d) 和 (e) 比图 3.57(b) 明亮得多,这进一步证明,具有显著边缘内容的图像的梯度值通常高于 Laplace 图像。

图 3.57(f ) 显示了 Laplace 算子与平滑梯度图像的乘积。请注意,强边缘占据主导地位,可见噪声相对较少,这就是用平滑梯度图像掩模 Laplace 算子的原因。将乘积图像添加到原始图像中,得到了图 3.57(g) 中的锐化图像。与原始图像相比,该图像的大部分细节都得到了提升,包括肋骨、脊髓、骨盆和头骨。如果仅使用 Laplace 算子或梯度图像,则无法实现这种改进。

刚才讨论的锐化过程对图像强度级的动态范围没有显著影响。因此,我们增强任务的最后一步是增加锐化图像的动态范围。正如我们在 3.2 和 3.3 节中详细讨论的那样,有几种强度变换函数可以实现此目标。对于直方图以暗部和亮部为特征的图像,直方图处理并不是一种好的方法,而本例就是这种情况。我们处理的图像的暗部特征更适合幂律变换。由于我们希望扩展强度级,因此公式 (3-5) 中的 γ 值必须小于 1。经过几次试验,我们得到了图 3.57(h) 中 γ = 0.5 的结果。且 c = 1。将此图与图 3.57(g) 进行比较,我们注意到图 3.57(h) 中出现了大量新的细节。手腕、手、脚踝和脚周围的区域就是很好的例子。骨骼结构也更加明显,包括手臂和腿部骨骼。请注意身体轮廓和身体组织的模糊轮廓。通过扩大强度级的动态范围来呈现此类细节也增强了噪点,但图 3.57(h) 比原始图像有了显著的视觉改善。

----------------------------------图 3.57:(a) 全身骨扫描图像。(b) (a) 的Laplace 算子。(c) 将 (a) 和 (b) 相加得到的锐化图像。(d) (a) 图像的 Sobel 梯度。(原始图像由 G.E. Medical Systems 提供。)------------------------------------

----------------------------------图 3.57:(续)(e) 用 5 × 5 盒式滤波器平滑的 Sobel 图像。(f) 由 (b)和 (e)的乘积形成的掩模图像。(g) 将图像 (a) 和 (f)相加得到的锐化图像。(h) 对 (g)应用幂律变换得到的最终结果。将图像 (g) 和 (h)与 (a)进行比较。(原图由 GE Medical Systems 提供。)-------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值