计算机视觉基础 2. 滤波器

1. 简介

模糊滤波器是低通滤波器。它们从图像中去除高空间频率内容,只留下低频空间分量。结果是图像失去了细节,看起来很模糊。图像模糊在计算机图形学和计算机视觉中有许多应用。它可用于降低噪声(如图17.1所示),揭示不同尺度下的图像结构,或用于对图像进行上采样和下采样。

Blur是通过计算输入像素值的小邻域上的局部平均值来实现的。这可以通过卷积来实现。然而,有非线性方法可以去除图像细节,如各向异性扩散[385]和双边滤波[376]。当我们想在去除噪声的同时保留一些图像细节(如轮廓)时,这些非线性模糊技术非常有用。

在本章中,我们将重点介绍用于图像模糊的线性滤波器。我们将描述三种流行的模糊滤波器系列,讨论其特性和局限性。

2. Box Filter

让我们从一个非常简单的低通滤波器开始,箱式滤波器。在第16.6.3节中,我们介绍了box函数。盒滤波器使用盒函数作为卷积核。盒子卷积核可以写成:

N=M=1的Box Filter为:

使用Box Filter 输入图像 ℓ i n ℓ_{in} ℓin,结果如下:

也就是说,每个位置(n,m)的输出值是该位置周围矩形内输入像素的总和。

从视觉上看,使用框过滤器过滤图像会导致图片模糊。图17.2显示了一些框式滤波器和相应的输出图像(在将框式滤波器系数归一化为1后)。图17.2(a)显示了与平方盒核卷积的图像(即N =M).

图17.2(b)和17.2(c)显示了仅在一个方向上模糊的结果。模糊在现实生活中经常发生。当我们看远处的东西时,或者看图片中的一些细节时,或者当我们摘下眼镜(或戴一些不是我们的眼镜)时,就会发生这种情况。

2.1 特性

Box Filter是一种低通滤波器。也就是说,它衰减了输入图像的高空间频率内容。

正如我们在第16.6.3节中提到的,二维(2D)盒滤波器是可分离的,因为它可以写成两个1D核的卷积: b o x N , M [ n , M ] = b o x N , 0 ⋅ b o x 0 , M box_{N,M}[n,M]=box_{N,0} · box_{0,M} boxN,M[n,M]=boxN,0⋅box0,M。当盒子很大时,可以使用积分图像有效地实现。

低通滤波器的一个重要特性是直流增益,即它对恒定值输入(即最低可能的输入频率)的增益。如果输入信号是一个常数,即 ℓ [ n , m ] = a ℓ[n,m]=a ℓ[n,m]=a,其中a是实数,则用box filter h N , m h_{N,m} hN,m卷积图像的结果也是一个常数:

一般来说,任意滤波器 h [ n , m ] h[n, m] h[n,m]的直流增益(DC gain)是其核值的总和,

在盒式滤波器(box filter)的例子中,当 N = 1 N=1 N=1时,直流增益为3。

在频率域中,滤波器的直流增益指的是其在频率为0时的增益。这个增益由 H [ 0 , 0 ] H[0, 0] H[0,0]表示,其中H是对滤波器的核h应用离散傅里叶变换(DFT)的结果。这可以通过检查DFT的定义并将空间频率设置为零来轻松证明。可以在图17.3中验证, ∣ B o x 1 [ 0 ] ∣ |Box1[0]| ∣Box1[0]∣的值是3。滤波器的直流增益会改变输入信号的均值。

在设计模糊核(低通滤波器)时,我们通常希望直流增益为1。原因是,如果我们有一张灰度级在0到256之间且平均值约为128的图像,我们希望输出图像保持相同的均值。因此,在大多数应用中,我们将对核值进行归一化,使它们的和为1。对于盒式滤波器,这意味着将核值除以 ( 2 N + 1 ) ( 2 M + 1 ) (2N + 1)(2M + 1) (2N+1)(2M+1)。

2.2 局限性

盒式滤波器实现和理解起来都很简单,但它有一些局限性:

• 盒式滤波器不是完美的模糊滤波器。模糊滤波器应该衰减高频空间频率,并且对于更高的空间频率应该有更强的衰减。然而,如果你考虑最高的空间频率,它将是一个依次取值为1和-1的振荡信号:[..., 1, -1, 1, -1, 1, -1, ...],当用盒式滤波器box1进行滤波时,结果仍然是相同的振荡信号!然而,如果你过滤一个较低频率的波,如[..., 0.5, 0.5, -1, 0.5, 0.5, -1, ...],那么结果是[..., 0, 0, 0, 0, ...]。因此,衰减不是随空间频率单调变化的,如图17.3所示。这不是模糊滤波器所期望的行为,它可能会导致伪影出现。这可以通过使用偶数大小的盒式滤波器[1, 1]来解决。然而,偶数盒式滤波器不是以原点为中心的,输出图像将有半个像素的平移。因此,奇数滤波器尺寸是首选的。

振荡信号

与核[1, 1,

1]卷积的结果是:

• 如果你将两个盒式滤波器进行卷积,你不会得到一个盒式滤波器。相反,你会得到一个三角形滤波器。你可以通过卷积两个盒式滤波器来轻松检查这一点。例如,在简单的情况下, N = 1 , M = 0 N=1,M=0 N=1,M=0:

输出是一个长度为 2 × L − 1 2×L-1 2×L−1的三角形滤波器,其中 L = 3 L=3 L=3是盒式滤波器的长度。当卷积两个不同长度的盒式滤波器时,结果将是一个截断的三角形。尽管这乍一看并不是问题,但它意味着如果你用盒式滤波器对图像进行两次模糊,你所得到的并不是用更大的盒式滤波器进行一次模糊的效果。

下一个低通滤波器解决了这两个问题。

3 .高斯滤波器

计算机视觉中重要的模糊(低通)滤波器之一是高斯滤波器。高斯滤波器很重要,因为它是许多自然发生滤波器的良好模型。它还具有一些我们将在这里讨论的独特性质。

高斯分布在连续变量中定义。在一维中:

在二维中:

参数σ调整高斯的空间范围。归一化常数设置为使函数积分为1。高斯核是正的和对称的(零相位滤波器)。

3.1 离散化

为了在实践中使用这个滤波器,我们需要考虑离散位置,并且还需要用有限支持函数来近似这个函数。实际上,我们只需要考虑在三个标准差x∈(-3σ,3σ)内的样本。在3σ处,高斯滤波器的幅度约为其中心值的1%。不幸的是,高斯滤波器的许多性质在连续域中才成立,并且在使用其离散形式时只是近似成立。

对于给定的标准差参数σ,离散化高斯核g[n, m; σ]为:

我们已经去除了归一化常数,因为离散高斯的总和与连续函数的积分不同。因此,在这里我们更喜欢定义原点处值为1的形式。在实践中,我们应该通过其值的总和来归一化离散高斯,以确保直流增益为1。

一维高斯(σ=1)及其离散化版本:

通过调整高斯的标准差σ,可以调整出现在模糊图像中的图像细节水平。图17.4显示了窄宽度和宽宽度高斯应用于图像的结果。

n维高斯滤波器具有额外的计算优势,因为它可以作为一维高斯滤波器的串联来应用。这可以通过将二维高斯方程(17.8)写入卷积方程(15.14)中来看出。让 g x g^x gx和 g y g^y gy分别是水平和垂直方向上的一维高斯卷积核(即, g x [ n ] = g [ n , 0 ] ,和 g y [ m ] = g [ 0 , m ] g^x[n]=g[n, 0],和g^y[m]=g[0, m] gx[n]=g[n,0],和gy[m]=g[0,m]),我们有

这可以节省大量的计算时间。如果二维卷积核是N×N个样本,那么直接卷积那个二维核的比例是 N 2 N^2 N2,因为方程(17.9)要求每个图像位置每个核样本进行一次乘法。使用两个一维核的串联,得到一个相同大小的等效二维滤波器,其比例是2N。

模糊的另一个应用是去除分散注意力的高分辨率图像细节。图17.5显示了一个高斯低通滤波器应用于去除图像中不需要的细节(块状伪影)的例子。

3.2 连续高斯的性质

• n维高斯是唯一完全圆形对称且可分离的算子。

• 连续傅里叶变换(FT)的高斯也是高斯。对于一维高斯,其傅里叶变换为:

在二维中,傅里叶变换为:

注意,这个函数对于增加的频率幅度是单调递减的,并且它也是径向对称的。

• 高斯傅里叶变换的宽度随σ减小(这与空间域中的高斯行为相反)。

• 两个n维高斯的卷积是一个n维高斯。

其中结果的方差是两个方差之和。这是高斯滤波器的显著性质,并且是后面第23章中将看到的高斯金字塔的基础。为了证明这个性质,人们可以使用高斯的傅里叶变换和卷积是傅里叶变换的乘积这一事实。

• 高斯是热方程的解。

• 任何集中在原点的函数的重复卷积都会产生高斯(中心极限定理)。

• 在极限σ→0下,高斯变成一个脉冲。这个性质也被许多其他函数共享,但它是一个有用的性质。

3.3 局限性

然而,这些性质中只有连续版本的高斯才成立,并不适用于通过直接在离散位置采样高斯值而得到的其离散近似 g [ n , m ; σ ] g[n, m; σ] g[n,m;σ]。为了看到这一点,让我们看一个一维的例子。让我们考虑一个方差 σ 2 = 1 / 2 σ^2=1/2 σ2=1/2的高斯。它可以通过五个样本来近似。我们将这个近似称为 g 5 g_5 g5,它取值为:

你可以检查,如果你计算 σ 2 = 1 σ2=1 σ2=1时的高斯近似,通过离散化高斯得到的结果不等于做 g 5 ◦ g 5 g_5◦g_5 g5◦g5。因此,随着你连续应用离散化高斯,误差会累积。也就是说,离散化高斯的卷积不再是高斯。

注意, g 5 [ n ] g_5[n] g5[n]与波[1, -1, 1, -1, ...]的卷积不是零。这可以从高斯FT的形式中预期到。这不是一个强烈的限制,并且在许多应用中并不重要。然而,在一些情况下,完全取消最高频率是很重要的(比如在我们稍后将看到的应用抗锯齿滤波器时)。

下一个低通滤波器解决了盒式和高斯滤波器的局限性。

4 二项式滤波器

在实践中,有非常有效的离散近似高斯滤波器,对于某些σ值,它们比使用离散化高斯具有更好的性质。高斯滤波器的一个常见近似是使用二项式系数[77]。二项式滤波器是通过连续卷积盒式滤波器[1, 1]得到的。

二项式系数使用中心极限定理来近似高斯作为非常简单函数的连续卷积。二项式系数形成帕斯卡三角形,如图17.6所示。

4.1 性质

  • 二项式系数仅使用整数提供高斯系数的紧凑近似。请注意, b 2 b_2 b2的值与 g 5 g_5 g5不同,尽管两者都将用作具有相同方差 σ 2 = 1 / 2 σ_2=1/2 σ2=1/2的高斯函数的近似值。需要注意的是, g 5 g_5 g5的方差并不是真正的 σ 2 = 1 / 2 σ_2=1/2 σ2=1/2,尽管它是通过将高斯函数离散化得到的。
  • 每个二项式滤波器bn的所有系数(直流增益)之和为 2 n 2n 2n,其空间方差为 σ 2 = n / 4 σ_2=n/4 σ2=n/4。 二项式滤波器的一个显著特性是 b n ◦ b m = b n + m b_n◦b_m=b_{n+m} bn◦bm=bn+m,因此,这类似于连续域中的高斯性质。也就是说,两个二项式滤波器的卷积是另一个二项式滤波器。
  • 高斯滤波器最简单的近似值是3-tap二项式核:

    这个滤波器很有趣,因为它是均匀的(因此它可以应用于图像而不会产生任何平移),它的离散傅里叶变换(DFT)是:

    频率增益如图17.7(b)所示。增益随空间频率u单调下降(没有波纹),在最高频率 G 3 [ 10 ] = 0 G_3[10]=0 G3[10]=0时变为零。
  • 所有偶数二项式滤波器都可以写成具有核[1,2,1]的连续卷积。因此,它们的傅里叶变换是滤波器[1,2,1]的傅里叶变换的幂,因此它们也是单调的:

    滤波器传递函数B2n为实数且为正。这是一个零相位滤波器。
  • 对于所有二项式滤波器bn,当它们与波[1,-1,1,-1,...]卷积时,结果是零信号[0,0,0,O,...]。这是二项式滤波器的一个非常好的特性,稍后在讨论图像降采样时将变得非常有用

4.2 2D二项式滤波器

2D中的高斯滤波器可以使用可分性近似为两个二项式滤波器(一个垂直,另一个水平)的卷积。

例如:

二维二项式滤波器:

滤波器 b 2 , 2 b_{2,2} b2,2的直流增益为16,因此我们将卷积输出除以16,使输出图像与输入图像具有相似的对比度。

图17.8显示了被高频棋盘图案噪声破坏的图像。接下来的两幅图像是用3×3箱式滤波器(中间)和 b 2 , 2 b_{2,2} b2,2二项式滤波器对噪声图像进行滤波的结果。3×3箱式滤波器不能完全消除噪声,而二项式滤波器可以完全消除这种棋盘噪声。方框和二项式滤波器都降低了输入图像的分辨率。

5 结论

高斯和二项式滤波器在计算机视觉中得到了广泛的应用。特别是二项式滤波器 [ 1 , 2 , 1 ] / 4 [1,2,1]/4 [1,2,1]/4(这里归一化,使其DC增益为1)及其2D扩展是非常有用的内核,可以在许多情况下使用,例如需要去除高频噪声或将图像降采样2倍时。模糊核在构建图像金字塔时很有用,或者在执行不同的池操作或调整特征图大小时在神经网络中很有用。

将2D二项式滤波器放在身边:

相关推荐
方世恩3 分钟前
孙怡带你深度学习(1)--神经网络
人工智能·python·深度学习·神经网络
赋创小助手11 分钟前
AMD EPYC 9004服务器内存配置深度分析:为何全通道填充是关键?
运维·服务器·图像处理·人工智能·深度学习
weighless112916 分钟前
小程序语音识别报错:No valid data found in input audio
人工智能·小程序·语音识别
Wils0nEdwards16 分钟前
在COD领域,图像中提取的高频和低频信息分别代表什么?
人工智能·计算机视觉
计算机科研之友(Friend)20 分钟前
计算机视觉(一)—— 特刊推荐
数据库·人工智能·计算机网络·搜索引擎·计算机视觉
YummyJacky30 分钟前
解决Linux服务器上下载pytorch速度过慢的问题
人工智能·pytorch·python
水花花花花花33 分钟前
pytorch使用技巧
人工智能·神经网络·机器学习
Wils0nEdwards36 分钟前
通俗地类比计算机视觉中各种层或操作的作用
人工智能·计算机视觉
吕小明么44 分钟前
北大&阿里:新出炉的LLM偏好对齐方法综述
人工智能·算法·语言模型·aigc·agi
新加坡内哥谈技术1 小时前
Google推出Data Commons解决AI“幻觉”
人工智能·语言模型·自然语言处理·chatgpt