Describe the workings of neighborhood operations
Convolution, spatial filtering, linear shift-invariant operations, border problem
Understand the effects of various filtering methods
Uniform filter, Gaussian filter, median filter, smoothing, differentiation, separability, pooling
Combine filtering operations to perform image enhancement
Sharpening, unsharp masking, gradient vector & magnitude, edge detection
对像素组使用空间滤波 Spatial Filtering on Groups of Pixels
使用输入图像中一个像素的灰度值以及其周围小区域内的灰度值来产生该像素在输出图像中的新灰度值。
这种方法也被称为滤波技术,因为根据应用于像素值的权重,它们可以抑制(滤除)或增强信息。
像素(x,y)的邻域通常是一个以(x,y)为中心的方形或矩形子图像,这个邻域可以被称为滤波器、掩膜、核、模板或窗口。
相关信息
在图像处理中,核(kernel)是用于图像滤波操作的一个小矩阵。核通常用来对图像进行卷积操作,以实现不同的图像处理效果,比如边缘检测、模糊、锐化等。每个核有特定的数值,这些数值决定了滤波操作的具体方式。
使用输入图像中一个像素的灰度值以及其周围小区域内的灰度值来产生该像素在输出图像中的新灰度值。
这种方法也被称为滤波技术,因为根据应用于像素值的权重,它们可以抑制(滤除)或增强信息。
像素 (x,y) 的邻域通常是一个以 (x,y) 为中心的方形或矩形子图像,这个邻域可以被称为滤波器、掩膜、核、模板或窗口。
典型的核大小是 3×3 像素、5×5 像素、7×7 像素,但也可以更大,并且可以有不同的形状(例如,圆形而不是矩形)。
边界问题解决方法 Fixing the Border Problem
通过扩展图像到原始边界之外来解决边界问题,可以使用以下几种方法:
填充(Padding):将所有附加像素设置为一个常数(通常为零)。这种方法会导致硬边界过渡,产生边界伪影(需要窗口化处理)。
夹持(Clamping):无限期地重复所有边界像素值。这种方法具有更好的边界表现,但任意性较强(没有理论基础)。
环绕(Wrapping):从相对一侧复制像素值。这种方法隐含用于快速傅里叶变换。
镜像(Mirroring):在边界处反射像素值。这种方法平滑、对称、周期性,没有边界伪影。
卷积空间滤波 Spatial Filtering by Convolution
输出图像o ( x , y ) o(x,y) o ( x , y ) 是输入图像 f ( x , y ) f(x,y) f ( x , y ) 和核 h ( x , y ) h(x,y) h ( x , y ) 经过离散卷积计算得到的:
o ( x , y ) = ∑ i = − n n ∑ j = − m m f ( x − i , y − j ) h ( i , j ) o(x,y) = \sum_{i=-n}^n\sum_{j=-m}^mf(x-i,y-j)h(i,j) o ( x , y ) = i = − n ∑ n j = − m ∑ m f ( x − i , y − j ) h ( i , j )
卷积是一种线性的、平移不变的操作:
线性(Linearity):如果输入f 1 ( x , y ) f_1(x,y) f 1 ( x , y ) 产生输出g 1 ( x , y ) g_1(x,y) g 1 ( x , y ) ,输入f 2 ( x , y ) f_2(x,y) f 2 ( x , y ) 产生输出g 2 ( x , y ) g_2(x,y) g 2 ( x , y ) ,那么输入的线性组合a 1 f 1 ( x , y ) + a 2 f 2 ( x , y ) a_1f_1(x,y)+a_2f_2(x,y) a 1 f 1 ( x , y ) + a 2 f 2 ( x , y ) 讲产生相同的输出组合a 1 g 1 ( x , y ) + a 2 g 2 ( x , y ) a_1g_1(x,y)+a_2g_2(x,y) a 1 g 1 ( x , y ) + a 2 g 2 ( x , y ) 。
平移不变性(Shift Invariance):如果输入f ( x , y ) f(x,y) f ( x , y ) 产生输出g ( x , y ) g(x,y) g ( x , y ) ,那么平移以后的输入f ( x − Δ x , y − Δ y ) f(x-\Delta x, y-\Delta y) f ( x − Δ x , y − Δ y ) 将产生平移以后的输出g ( x − Δ x , y − Δ y ) g(x-\Delta x, y-\Delta y) g ( x − Δ x , y − Δ y ) 。换句话说,该操作不区分空间位置。
卷积的性质
对于任意一组图像(函数)f i f_i f i ,卷积操作∗ * ∗ 应当满足于如下性质:
交换性(Commutativity):f 1 ∗ f 2 = f 2 ∗ f 1 f_1*f_2=f_2*f_1 f 1 ∗ f 2 = f 2 ∗ f 1
结合性(Associativity):f 1 ∗ ( f 2 ∗ f 3 ) = ( f 1 ∗ f 2 ) ∗ f 3 f_1*(f_2*f_3)=(f_1*f_2)*f_3 f 1 ∗ ( f 2 ∗ f 3 ) = ( f 1 ∗ f 2 ) ∗ f 3
分配性(Distributivity):f 1 ∗ ( f 2 + f 3 ) = f 1 ∗ f 2 + f 1 ∗ f 3 f_1*(f_2+f_3)=f_1*f_2+f_1*f_3 f 1 ∗ ( f 2 + f 3 ) = f 1 ∗ f 2 + f 1 ∗ f 3
可乘性(Multiplicativity):a ⋅ ( f 1 ∗ f 2 ) = ( a ⋅ f 1 ) ∗ f 2 = f 1 ∗ ( a ⋅ f 2 ) a \cdot (f_1*f_2)=(a\cdot f_1)*f_2=f_1*(a\cdot f_2) a ⋅ ( f 1 ∗ f 2 ) = ( a ⋅ f 1 ) ∗ f 2 = f 1 ∗ ( a ⋅ f 2 )
求导(Derivation):( f 1 ∗ f 2 ) ′ = f 1 ′ ∗ f 2 = f 1 ∗ f 2 ′ (f_1*f_2)'=f_1'*f_2=f_1*f_2' ( f 1 ∗ f 2 ) ′ = f 1 ′ ∗ f 2 = f 1 ∗ f 2 ′
定理(Theorem):f 1 ∗ f 2 ↔ f 1 ^ ⋅ f 2 ^ f_1*f_2 \leftrightarrow \hat{f_1} \cdot \hat{f_2} f 1 ∗ f 2 ↔ f 1 ^ ⋅ f 2 ^
最后一个定理说明了在空间域的卷积相当于在频域的乘法。下次会讲到。
最简单的平滑滤波器 Simplest Smoothing Filter
计算一个邻域 N N N 中像素的平均值,其中 ∣ N ∣ |N| ∣ N ∣ 是邻域中的像素数量,公示如下:
g ( x , y ) = 1 ∣ N ∣ ∑ ( i , j ) ∈ N f ( x + i , y + j ) g(x,y)=\frac{1}{|N|}\sum_{(i,j)\in N}f(x+i,y+j) g ( x , y ) = ∣ N ∣ 1 ( i , j ) ∈ N ∑ f ( x + i , y + j )
通常用于图像模糊和噪声减少。
减少由于图像采集中的干扰引起的波动。
邻域平均也会模糊图像中的物体边缘。
可以使用加权平均来使某些像素更重要。
也被称为均匀滤波器(Uniform Filter),因为它隐含地使用了均匀的核。
图片展示了不同核大小对图像的平滑效果,从左到右依次是原图、3x3滤波后的图像、5x5滤波后的图像和7x7滤波后的图像。可以看到,随着核的大小增加,图像变得越来越平滑。
高斯滤波器 Gaussian Filter
高斯滤波器是最重要的基本图像滤波器之一。公式为:
g σ ( x , y ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 g_\sigma(x,y)=\frac{1}{2\pi \sigma ^2}e^{-\frac{x^2+y^2}{2\sigma ^2}} g σ ( x , y ) = 2 π σ 2 1 e − 2 σ 2 x 2 + y 2
其中, σ \sigma σ 是标准差,决定了滤波器的宽度。
三维图像展示了高斯函数的三维形状,显示了其中心高、边缘低的钟形曲线特性。
图像展示了不同尺寸和不同σ \sigma σ 值的高斯核的图示,展示了高斯核的二维分布特性,核中心的值最大,离中心越远的值越小。
高斯滤波器的特性
它是唯一既可分离又圆对称的滤波器。
它在空间域和频域中具有最佳的联合定位能力。
高斯函数的傅里叶变换也是一个高斯函数。
任何低通滤波器的n次卷积都会收敛到一个高斯函数。
它是无限平滑的,因此可以被任意次微分。
它自然地按比例缩放(即σ \sigma σ ,并且允许一致的尺度空间理论。)
中值滤波器是一种排序统计滤波器(order-statistics filter),基于像素值的排序和排名。
计算邻域 N 中像素值的中值,其中 ∣N∣ 表示邻域中的像素数量。
一组有序值的中值 m 是中间值。
集合中最多一半的值小于m,另一半的值大于m。
如果值的数量为偶数,中值通常取两个中间值的算术平均值。
另外,还有一些滤波器。取最小值或最大值而不是中值,分别称为最小滤波(min-filtering)和最大滤波(max-filtering)。
中值滤波器的特性
强制具有不同强度的像素变得更像它们的邻居:
中值滤波器通过将像素值替换为邻域内的中值,使得孤立的极端值变得与周围像素更一致。
消除孤立的强度尖峰(如“椒盐”噪声):
中值滤波器特别有效地去除孤立的高强度或低强度噪声点,而不会显著模糊图像。
邻域通常是 n × n n \times n n × n 像素大小,其中 n = 3 , 5 , 7 , . . . n=3,5,7,... n = 3 , 5 , 7 , ... :
滤波器的窗口大小一般为奇数,以确保中值计算的对称性。
消除小于 n 2 / 2 n^2/2 n 2 /2 面积的像素簇(亮的或暗的):
中值滤波器不仅能去除单个噪声点,还能消除面积较小的噪声簇。
它不是卷积滤波器,而是非线性滤波器的一种:
与线性滤波器(如卷积滤波器)不同,中值滤波器基于排序操作,是一种非线性滤波器。
高斯滤波 VS 中值滤波
高斯滤波在保留小物体方面表现优越,因此在需要保留图像细节的小物体时使用高斯滤波效果更好。
中值滤波在去除小噪点方面表现出色,因此在需要消除图像中的小噪点时使用中值滤波效果更好。
通过反锐化掩模进行锐化 Sharpening by Unsharp Masking
输入图像:左上角是输入的原始图像。
高斯滤波:对输入图像进行高斯滤波,得到一个模糊的图像(左下角)。
高频成分提取:将输入图像减去高斯滤波后的图像,得到高频成分(中间的图像)。这个步骤提取了图像中的边缘和细节信息。
调整高频成分:对高频成分乘以一个系数 α \alpha α 以控制锐化的强度。
图像相加:将调整后的高频成分加回原始图像,得到锐化后的输出图像(右上角)。
效果对比:右下角的两个小图分别展示了原图(绿色框)和锐化后的图像(红色框)在细节上的区别,可以看到,锐化后的图像边缘更加清晰。
反锐化掩模通过去除图像的低频成分(模糊部分),并增强高频成分(细节部分)来实现图像锐化。这种方法可以有效提高图像的清晰度,使得边缘和细节更加突出。
池化 Pooling
池化结合了滤波(Flitering)和下采样(Downsampling)的操作:
池化操作同时进行数据的过滤和下采样,将图像尺寸缩小的同时减少计算量。
池化操作的例子包括最大池化、最小池化、中值池化和平均池化:
最大池化(max pooling):取池化窗口中的最大值。
最小池化(min pooling):取池化窗口中的最小值。
中值池化(median pooling):取池化窗口中的中值。
平均池化(average pooling):取池化窗口中的平均值。
池化使图像变小并减少计算量:
通过下采样,池化操作减少了特征图的尺寸,从而降低了后续处理的计算复杂度。
池化在深度卷积神经网络中非常流行:
池化层在卷积神经网络(CNN)中广泛使用,帮助模型在减少计算量的同时保留重要的特征。
导数滤波器 Derivative Filter
用于图像的梯度域滤波。
不同的有限差分法
前向差分 Forward Difference
∂ f ∂ x ≈ f ( x + 1 ) − f ( x ) \frac{\partial f}{\partial x} \approx f(x+1) - f(x) ∂ x ∂ f ≈ f ( x + 1 ) − f ( x )
核:[ 1 , − 1 ] [1, -1] [ 1 , − 1 ]
后向差分 Backward Difference
∂ f ∂ x ≈ f ( x ) − f ( x − 1 ) \frac{\partial f}{\partial x} \approx f(x) - f(x-1) ∂ x ∂ f ≈ f ( x ) − f ( x − 1 )
核:[ 1 , − 1 ] [1, -1] [ 1 , − 1 ]
中心差分 Central Difference
∂ f ∂ x ≈ f ( x + 1 ) − f ( x − 1 ) \frac{\partial f}{\partial x} \approx f(x+1) - f(x-1) ∂ x ∂ f ≈ f ( x + 1 ) − f ( x − 1 )
核:[ 1 , 0 , − 1 ] [1, 0, -1] [ 1 , 0 , − 1 ]
二阶空间导数
高斯函数及其一阶和二阶导数的离散近似
高斯函数 g ( x ) g(x) g ( x ) 用于平滑图像,表示为一个钟形曲线。
一阶导数用于检测图像中的边缘。
二阶导数用于检测图像中的变化率的变化,反映更细微的边缘信息。
高斯滤波器核扩展到二维和不同空间尺度的应用
这些二维高斯导数核可以在图像处理中检测不同方向和不同尺度上的边缘和特征。
较小的核(如σ=1.0)适用于检测图像中的细节,而较大的核(如σ=3.0)则适用于检测较大的结构。
Prewitt和Sobel核
用于图像边缘检测,通过在一个维度上进行差分,在另一个维度上进行平滑处理。
可分离滤波器核 Separable Filter Kernel
可分离滤波器核通过将二维卷积分解为两个一维卷积,显著减少了计算量。不同的滤波器核用于不同的图像处理任务,例如平滑和边缘检测。
通过分离滤波器核实现更高效的计算。
通过分离滤波器核,二维卷积可以分解为两个一维卷积。
通过将二维卷积分解为两个一维卷积,计算复杂度从17次操作每像素减少到10次操作每像素,实现了更高的计算效率。对于更大的核和三维图像,效率提升更加显著。
拉普拉斯滤波 Laplacian Filtering
拉普拉斯滤波是一种二阶导数滤波器,用于检测图像中的变化率。它的核是通过近似计算 f x x f_{xx} f xx 和 f y y f_{yy} f yy 的和来实现的。
注意,这里是直接暴力扩展:
f x x f_{xx} f xx 扩展后:
[ 0 0 0 1 − 2 1 0 0 0 ] \begin{bmatrix}
0 & 0 & 0 \\
1 & -2 & 1 \\
0 & 0 & 0
\end{bmatrix} ⎣ ⎡ 0 1 0 0 − 2 0 0 1 0 ⎦ ⎤
f y y f_{yy} f yy 扩展后:
[ 0 1 0 0 − 2 0 0 1 0 ] \begin{bmatrix}
0 & 1 & 0 \\
0 & -2 & 0 \\
0 & 1 & 0
\end{bmatrix} ⎣ ⎡ 0 0 0 1 − 2 1 0 0 0 ⎦ ⎤
拉普拉斯滤波的边缘检测
用拉普拉斯进行锐化 Sharpening using hte Laplacean
强度梯度向量 Intensity Gradient Vector
强度梯度向量表示图像中强度变化最剧烈的方向。数学上,它表示为二维向量:
[ f x ( x , y ) f y ( x , y ) ] \begin{bmatrix}
f_x(x,y) \\
f_y(x,y)
\end{bmatrix} [ f x ( x , y ) f y ( x , y ) ]
这两个指图像在x方向和y方向上的一阶导数。
梯度向量指向强度增加最快的方向。
梯度向量垂直于等值线(isophotes),即强度相同的线。
梯度幅值 Gradient Magnitude
梯度幅值表示梯度向量的长度,即局部强度变化的大小。数学上,它表示为:
∣ ∣ ∇ f ( x , y ) ∣ ∣ = f x ( x , y ) 2 + f y ( x , y ) 2 ||\nabla f(x,y)||= \sqrt{f_x(x,y)^2+f_y(x,y)^2} ∣∣∇ f ( x , y ) ∣∣ = f x ( x , y ) 2 + f y ( x , y ) 2
梯度幅值表示梯度向量的长度。
它是局部强度变化的大小。
图像表示
图像显示了梯度向量的方向和等值线(isophotes)。
红色等值线表示图像中的等强度线。
蓝色箭头表示梯度向量的方向,指向强度增加最快的方向,并垂直于等值线。
梯度幅值的边缘检测
梯度域编辑 Gradient Doamin Editing
选择合适的空间尺度
通过不同尺度的高斯导数核来计算图像的导数,可以得到不同细节层次的边缘信息。
第一行:通过阈值化局部最大值得到的边缘
σ=1:细节丰富,边缘较多,噪声较多。
σ=3:边缘信息减少,但仍有较多细节。
σ=5:边缘清晰,细节适中(推荐的参数)。
σ=7:边缘较粗,细节较少。
σ=9:边缘最粗,细节最少。
第二行:通过找到 ∇ 2 f ( x , y ) ∇^2f(x,y) ∇ 2 f ( x , y ) 的零交叉点得到的边缘
性质
较小的σ值(如σ=1)会捕捉到更多的细节和噪声。
较大的σ值(如σ=9)会平滑图像,减少细节和噪声,但可能会丢失重要的边缘信息。
傅立叶域中的微分 Differentiation in the Fourier Domain
考试例题 Example Exam Question
What is the effect of the 2D convolution kernel shown on the right when applied to an image?
A. It approximates the sum of first-order derivatives in x and y.
B. It approximates the sum of second-order derivatives in x and y.
C. It approximates the product of first-order derivatives in x and y.
D. It approximates the product of second-order derivatives in x and y.
答案选B。这个是拉普拉斯核的常见形式,用于近似计算图像的二阶导数之和,它是f x x f_{xx} f xx 和f y y f_{yy} f yy 经过二维暴力扩展后相加的产物。