辅助知识1:图形学中的采样、走样分析和处理方法

计算机生成图像实际就是信号的采样和重建过程。问题可以抽象为:

给定连续信号 g ( x ) g(x) g(x),我们采样得到信号 g s ( x ) g_s(x) gs(x),我们能否通过 g s ( x ) g_s(x) gs(x)来完整表达 g ( x ) g(x) g(x)呢?如果可以的话,如何重建?

采样和傅里叶变换

给定空间域信号 g ( x ) g(x) g(x), 对应的频率信号为 G ( f ) G(f) G(f),则二者之间可以通过傅里叶变换得到:

G ( f ) = ∫ − ∞ + ∞ g ( x ) e − i 2 π f x d x G(f) = \int_{-\infty}^{+\infty}g(x)e^{-\boldsymbol{i}2\pi fx}\boldsymbol{d}x G(f)=+g(x)ei2πfxdx
x表示空间位置,f代表对应频率。一种可能的情况如下图:
辅助知识1:图形学中的采样、走样分析和处理方法_第1张图片
可以看出有效频率主要在 ∣ f m a x ∣ |f_{max}| fmax之间。这种情况下称为bandlimited,带限。

采样过程主要用脉冲函数实现,即

s ( x ) = ∑ n = − ∞ ∞ δ ( x − n T s ) s(x)=\sum_{n=-\infty}^{\infty}\delta(x-nT_s) s(x)=n=δ(xnTs)
T s T_s Ts就是采样周期。采样信号和原信号的关系是:
g s ( x ) = g ( x ) s ( x ) g_s(x)=g(x)s(x) gs(x)=g(x)s(x)
而空间域的乘积对应于频率域的卷积,脉冲信号的傅里叶变换为:
∑ n = − ∞ ∞ δ ( x − n T ) ⟷ f s ∑ k = − ∞ ∞ δ ( f − k f s ) \sum_{n=-\infty}^{\infty}\delta(x-nT) \longleftrightarrow f_s\sum_{k=-\infty}^{\infty}\delta(f-kf_s) n=δ(xnT)fsk=δ(fkfs)
其中 f s = 2 π / T f_s = 2\pi/T fs=2π/T
最终可以求得采样信号和原始信号频率域的关系:
G s ( f ) = f s ∑ n = − ∞ ∞ G ( f − n f s ) G_s(f) = f_s\sum_{n=-\infty}^{\infty}G(f-nf_s) Gs(f)=fsn=G(fnfs)
采样信号的频率域包含了原始信号频率域的方法,并进行比例缩放。同时,以 f s f_s fs为周期对 G ( f ) G(f) G(f)进行全频空间叠加,加入了高频部分。
辅助知识1:图形学中的采样、走样分析和处理方法_第2张图片

重建和理想滤波

要想完美重建,关键是去掉高频部分干扰。例如上图我们就可以找到一个理想滤波器来精确过滤中间部分信号来达到完美重建。但是有的时候 ∣ G s ( f ) ∣ |G_s(f)| Gs(f)会有频率上面的重叠,这种情况无论如何都不可能完美重建原始信号。为了能完美重建,必须满足下面条件:

1.原始信号必须是带限的。否则 G s ( f ) G_s(f) Gs(f)会向两边无线拓展,必然会有重叠
2.采样频率必须不低于原始信号最大频率 f m a x f_{max} fmax的两倍(Niquist rate)。否则 ∣ G s ( f ) ∣ |G_s(f)| Gs(f)不同频率之间的距离过小同样会发生重叠。

如果满足上面条件,则理论上可以构建完美函数来重建

H ( f ) = { 1 , ∣ f ∣ < f m a x 0 , ∣ f ∣ ≥ f m a x H(f) = \begin{cases} 1, |f| < f_{max} \\ 0, |f| \ge f_{max} \end{cases} H(f)={1,f<fmax0,ffmax
H(f)称为理想低通滤波器。
辅助知识1:图形学中的采样、走样分析和处理方法_第3张图片
H ( f ) 对 应 到 空 间 域 是 称 为 s i n c ( x ) 的 函 数 H(f)对应到空间域是称为sinc(x)的函数 H(f)sinc(x)
s i n c ( x ) = s i n ( π x ) π x sinc(x)= \frac{sin(\pi x)}{\pi x} sinc(x)=πxsin(πx)
辅助知识1:图形学中的采样、走样分析和处理方法_第4张图片
采样空间域操作的对应关系是:
g ( x ) = s i n c ( x ) ∗ g s ( x ) = ∫ − ∞ + ∞ s i n c ( λ ) g s ( x − λ ) d λ g(x) = sinc(x) * g_s(x) = \int_{-\infty}^{+\infty}sinc(\lambda)g_s(x-\lambda)\boldsymbol{d}\lambda g(x)=sinc(x)gs(x)=+sinc(λ)gs(xλ)dλ
这里可以看出,对于某个采样点x,如果完美重建需要计算x周围无限多个相邻采样点的累积。这当然不可能做到。因而实际只能使用非理想滤波函数。

非理想滤波

非理想滤波保留了一部分高频信号,损失了一部分低频信号。这都是在可接受范围程度内的损失。
辅助知识1:图形学中的采样、走样分析和处理方法_第5张图片
上面的 H r ( f ) H_r(f) Hr(f)就是一个例子。一般来说我们在目标点周围一定区域添加核函数来近似无线采样。其空间域重建核函数 h ( x ) h(x) h(x)可以理解为权重。

f ( x ) = ∑ k = 0 K − 1 f ( x k ) h ( x − x k ) f(x) = \sum_{k=0}^{K-1}f(x_k)h(x-x_k) f(x)=k=0K1f(xk)h(xxk)

一般来说有以下核函数:

  1. Box Filter

h ( x ) = { 1 , − 0.5 < x < 0.5 0 , o t h e r w i s e h(x) = \begin{cases} 1, -0.5<x<0.5 \\ 0, otherwise \end{cases} h(x)={1,0.5<x<0.50,otherwise辅助知识1:图形学中的采样、走样分析和处理方法_第6张图片
这是最简单的一种滤波器。重建的时候由于目标点的估计值只采用若干采样点中的一个,没有多个采样点的差值,所以重建效果较差,有很明显的锯齿。
辅助知识1:图形学中的采样、走样分析和处理方法_第7张图片

  1. Triangle Filter(Tent Filter)

h ( x ) = { 1 − ∣ x ∣ , 0 ≤ ∣ x ∣ < 1 0 , 1 ≤ x h(x) = \begin{cases} 1 - |x|, 0 \le |x|<1 \\ 0, 1 \le x \end{cases} h(x)={1x,0x<10,1x
辅助知识1:图形学中的采样、走样分析和处理方法_第8张图片
效果比Box Filter好一点,但是还是有锯齿边缘,这是由于差值力度不够,或者说 H ( f ) 对 于 f m a x 的 高 频 部 分 抑 制 不 够 H(f)对于f_{max}的高频部分抑制不够 H(f)fmax
辅助知识1:图形学中的采样、走样分析和处理方法_第9张图片

  1. Cubic Convolution
    以三阶多项式的方法对 s i n c ( ) sinc() sinc()近似。

在这里插入图片描述
辅助知识1:图形学中的采样、走样分析和处理方法_第10张图片
辅助知识1:图形学中的采样、走样分析和处理方法_第11张图片
由于采样之间采用了更高阶的插值计算,效果更好。

下面介绍一些窗口函数,这些窗口函数的作用是应用于sinc函数上,从而将无线采样变成有限。
4. Hann Hamming
在这里插入图片描述
N用来控制窗口中采样点的数量,a用来控制窗口函数曲线的形状
辅助知识1:图形学中的采样、走样分析和处理方法_第12张图片
5. Blackman
在这里插入图片描述
辅助知识1:图形学中的采样、走样分析和处理方法_第13张图片
6. Lanczos
在这里插入图片描述
辅助知识1:图形学中的采样、走样分析和处理方法_第14张图片

走样与反走样(Aliasing and Anti-Aliasing)

当信号不满足上面可以完美重建的两个要求时,那么滤波器肯定不能完全重建原始信号。这就是走样的根本原因。
在图像上面,Niquist采样率是由像素显示的最高频率决定的,也就是2 pixels / cycle,对应的频率则为0.5,所以 f m a x f_{max} fmax为1。这意味着无走样渲染时的最低频率不应该 < 1。
反走样方法也就是要尽量满足上面两个条件。一个就是原始信号在带限上处理使其尽量降低(Prefiltering),另外一个就是增大采样频率。Prefiltering的方法有两种:Edge Antialiasing和Texture Antialiasing。
Edge Antialiasing主要利用Area Sampling的手段实现,将目标输出像素与原始信号中的一个子区域对应,然后用低筒滤波器对子区域滤波,这样就可以整体降低图像数据源的带限。
辅助知识1:图形学中的采样、走样分析和处理方法_第15张图片
诸如Supersampling,Multisampling等都是这个原理。首先得到一个比屏幕分辨率大的颜色缓冲区,然后将目标输出点与颜色缓冲区的一个子区域对应。
Texture Antialiasing主要应用于纹理贴图的走样。当像素采样频率不足的时候容易发生纹理贴图走样。典型应用Mipmap。

你可能感兴趣的:(计算机视觉,渲染技术)