计算机图形学基础(9.3)

318 阅读5分钟

Category:Higher Mathematics & Computer Graphics Application

正文

9 信号处理

9.2 卷积

9.2.4 连续函数卷积

虽然离散序列是我们在计算机程序中实际使用的序列,但这些采样序列应该代表连续的函数,并且通常需要数学上对连续功能进行推理,以找出该怎么做。因此,定义连续函数之间以及连续函数和离散函数之间的卷积很有用。

两个连续函数的卷积是方程式的明显概括(9.2),其积分取代了总和:

image.png

解释此定义的一种方法是,在参数x上进行评估的F和G的卷积是我们移动G之后两个函数曲线下的区域,因此G(0)与F(T)。就像在离散情况下一样,卷积是移动平均线,过滤器为平均值提供权重(请参见图9.10)。

image.png

像离散卷积一样,连续函数的卷积是可交换的和关联的,并且在加法上是分布的。同样与离散情况一样,连续卷积可以看作是滤波器副本的总和,而不是加权平均值的计算。除了,在这种情况下,过滤器 g 有无限多个副本:

image.png

示例(两个框函数的卷积)。设 f 为盒函数:

image.png

那么 f * f 是什么?定义(公式 9.3)给出

image.png

图 9.11 显示了这个积分的两种情况。当 x ≤ −1 或 x ≥ 1 时,这两个框可能有零重叠;在这种情况下,结果为零。

当 -1 <x< 1 时,重叠取决于两个框之间的间隔,

image.png

是|x|;结果是 1 - |x|。所以

image.png

这个函数,称为 tent 函数,是另一个常见的过滤器(参见第 9.3.1 节)。

狄拉克三角函数

在离散卷积中,我们看到离散脉冲 d 充当恒等式:d a = a。在连续情况下,还有一个恒等函数,称为狄拉克脉冲或狄拉克δ函数,记为 δ(x)。

直观地说,delta 函数是一个非常窄、非常高的尖峰,其宽度非常小,但面积仍然等于 1(图 9.12)。 delta 函数的关键定义属性是,将它乘以一个函数会选择恰好为零的值:

image.png

image.png

Delta函数在0时没有定义明确的值(您可以将其值松散地认为为∞),但是它确实具有所有x != 0的值δ(x)= 0。

image.png

从这个选择单个值的性质,可以得出 delta 函数是连续卷积的恒等式(图 9.13),因为将 δ 与任何函数 f 卷积都会产生

image.png

因此δ * f = f(并且由于交换性f *δ= f)。

9.2.5 离散-连续卷积

有两种方法可以连接离散世界和连续世界。一种是采样:我们通过在所有整数参数处写下函数的值并忘记其余的来将连续函数转换为离散函数。给定一个连续函数 f(x),我们可以对其进行采样以转换为离散序列 a[i]:

image.png

反过来,从离散函数或序列到连续函数,称为重构。这是使用另一种形式的卷积来完成的,即离散连续形式。在这种情况下,我们使用连续滤波器 f(x) 对离散序列 a[i] 进行滤波:

image.png

x 处的重构函数 a f 的值是 x 附近 i 值的样本 a[i] 的加权和(图 9.14)。权重来自过滤器 f,它在一组相隔一个单位的点上进行评估。例如,如果 x = 5.3 且 f 的半径为 2,则 f 的计算值为 1.3、0.3、-0.7 和 -1.7。请注意,对于离散连续卷积,我们通常首先编写序列,然后编写滤波器,以便总和超过整数。

image.png

与离散卷积一样,如果我们知道滤波器的半径 r,我们可以对总和设置界限,消除 x 和 i 之间的差值至少为 r 的所有点:

image.png

请注意,如果一个点正好落在与 x 的距离 r 处(即,如果 x - r 结果是一个整数),它将被排除在总和之外。这与离散情况相反,我们在 i - r 处包括点。

用代码表示,这是:

image.png

与其他形式的卷积一样,离散连续卷积可以看作是对滤波器的移位副本求和(图 9.15):

image.png

image.png

离散连续卷积与花纹密切相关。对于均匀的花键(例如,均匀的B型单频),样条的参数化曲线正是与控制点序列的样条基函数的卷积(请参阅第15.6.2节)。

9.2.6 多维卷积

到目前为止,我们所说的关于采样和重建的一切都是一维的:存在单个变量 x 或单个序列索引 i。然而,图形中采样和重建的许多重要应用都应用于二维函数——尤其是二维图像。幸运的是,采样算法和理论从 1D 到 2D、3D 等的推广在概念上非常简单。

从离散卷积的定义开始,我们可以通过将和变为双和来将其推广到二维:

image.png

如果 b 是一个半径为 r 的有限支持滤波器(即,它有 (2r+1)2 个值),那么我们可以写出这个有界的和(图 9.16):

image.png

image.png

代码表示为:

image.png

可以以与1D情况相同的方式来解释该定义:每个输出样本都是输入区域的加权平均值,使用2D滤波器作为“掩码”来确定平均值中每个样本的权重。

继续概括,我们可以在2D中编写连续连续(图9.17)和离散连续(图9.18)的卷积:

image.png

image.png

在每种情况下,特定点的结果是该点附近输入的加权平均值。对于连续连续的情况,它是当时中心的区域上的加权积分,在离散连续的情况下,它是落在该点附近的所有样品的加权平均值。

image.png

一旦我们从 1D 到 2D,应该相当清楚如何进一步推广到 3D 甚至更高维度。