光栅化Rasterization(反走样)(笔记)


五、反走样Antialiasing

采样误差/瑕疵(Sampling Artifact)
锯齿,摩尔纹,车轮幻觉,还有更多。这些都是Artifacts,走样瑕疵的本质是信号改变的太快而采样太慢了。

反走样思想
在这里插入图片描述
在采样前事先做模糊(滤波)工作,再进行采样。不能反过来先采样再做滤波。

六、频域Frequency Domain

频率(Frequencies)
在这里插入图片描述

傅里叶变换(Fourier Transform)
在这里插入图片描述
用傅里叶函数展开就可以把函数描绘成由若干不同频率的正弦余弦函数项的和。
在这里插入图片描述
傅里叶变换可以将空间域函数(spatial domain 时域?)变为频域函数(雾)。同样可以通过逆变换变回去。
在这里插入图片描述
更高的频率需要更快的采样
在这里插入图片描述
欠采样(Underdamping)产生了Frequence Aliases

七、滤波Filtering

滤波(Filtering)
在这里插入图片描述
在这里插入图片描述
从频率的角度来讲,滤波的意思是将特定的频率抹掉。滤波 = 卷积(Convolution) = 平均(Averaging)。

高通滤波(High-pass filter)
在这里插入图片描述在这里插入图片描述
上图展现了将一张图片的低频过滤掉(也就是高通滤波)的效果。

图像中的边界简单来说,当图像某处(频率)发生了突变(就变化很大),我们就认为这是边界。边界就是一种高频信息(因为变化非常大),这就是为什么高通滤波保留的是图片中的边界部分(上一个图)。

低通滤波(Low-pass filter)
在这里插入图片描述
将高频信息抹掉,边界就看不清楚了,我们要的模糊就成了。

卷积(Convolution)操作
在这里插入图片描述
在这里插入图片描述

第一行格子是信号(Signal),第二行格子是滤波器(Filter),滤波器的三个格子就像一个滑动窗口,每次移动一格,和三个信号做一次点乘,得到的结果放在滤波器中间那个格子对应的第三行格子——结果(Result)格子中。这样一个操作就叫做卷积操作(当然 并非数学上的定义)。

卷积定理(Convolution Theorem)
在这里插入图片描述
空间域上的卷积等于频域上的乘法,反过来也一样。所以我们可以直接在空间域中进行卷积,或者将空间域傅里叶变换到频域再乘以卷积核(Convolution Kernel)(也就是滤波器)的傅里叶变换,再通过逆傅里叶变换将结果转换回去。
在这里插入图片描述
在上图中,我们将图片中的任何一个像素变成他周围3X3像素的平均,我们可以直接拿原图进行卷积,或者将原图进行傅里叶变换后的频域与卷积核进行傅里叶变换的频域相乘,将得到的结果逆傅里叶变换。
我们可以发现在频域的操作实际上就是对原图的频域进行了一个低通滤波(当然也有些Artifact)。
在这里插入图片描述
刚刚使用到的盒型滤波器,作用是取到9个像素再除以9,也就是求平均。也就等于之前提到的低通滤波器。
在这里插入图片描述
在这里插入图片描述
当使用更宽的卷积核,也就是更大的盒型滤波器时,我们得到了频率更低的低通滤波器,也就得到了更模糊的图像。
可以想象如果我们用一个超级大的盒型滤波器,那最后所有像素都会变成基本上一样,因为我们每次都基本上相加了所有像素。或者反过来如果我们用一个超级小的盒型滤波器,那就相当于没做滤波。

八、通过之前的内容再聊一聊采样和反走样

从频率上解释采样
在这里插入图片描述
采样就是重复频率上的内容(Sampling = Repeating Frequency Contents)。
确切的说,在时域上我们有一个原始信号(a),将(a)乘以一系列冲激函数(只在一个点有值),就能得到采样结果。
从频域上看,相当于把原始信号的频谱复制了若干遍。也就是说,采样就是在重复原始信号的频谱。

为什么会产生走样现象
在这里插入图片描述
走样也就是频谱产生了混合,如果我采样不够快,频谱叠在了一起,也就产生了走样。也就是说,走样 = 频谱在复制时发生了重叠(Aliasing = Mixed Frequency Contents)

如何降低走样错误
在这里插入图片描述
1.增加采样率。但是这并不是反走样的思路,比如显示器不可能为了采样率做到很高的分辨率。
在这里插入图片描述
2.反走样,先做模糊。模糊也就是将信号的高频信息过滤掉。再以原采样率进行采样,如上图,去掉高频信号以后,频谱不会再发生堆叠。
在这里插入图片描述
模糊做完以后再做采样,得到的结果就准确一些了。

三角形实际的模糊操作
在这里插入图片描述
对于三角形,对每个像素被三角形覆盖的值求平均。可以说在做一个像素大小的卷积操作。然后我们再采样。但是如果真的这样做,计算量会非常大。

多重采样反走样(Multisampling anti-aliasing MSAA)
在这里插入图片描述
这是一种对反走样的近似方法,并不能完全解决反走样要解决的问题。将一个像素划分成几个小的像素,比如4X4,再判断这些小像素在不在三角形内,这样可以得到三角形在大像素中的近似。
在这里插入图片描述
在每个像素中获取N X N个样本。
在这里插入图片描述
平均每个像素“内”的N X N个样本值。
在这里插入图片描述
得到结果。这就是相应的显示信号。这样也就达到了抗锯齿的效果。
需要再提一嘴的是,MSAA并不是增加了采样率,而是通过这种方式得到近似的三角形覆盖。

课程的最后

MSAA的代价是什么?
当然是增加了计算量。但是人们使用一些合适的特殊像素分布方式减小了计算量。接下来在讲光线追踪时会提到。

另外两种抗锯齿方案

  • FXAA(Fast Approximate AA)快速近似抗锯齿,不采用多重样本,使用图像后期处理来达到抗锯齿(还记得之前提到的吗?先采样再进行滤波(模糊)是不正确的)。简单来说,FXAA会识别图片中的锯齿边界,再将锯齿边界换成没有锯齿的边界,效率极高,与采样无关。
  • TAA(Temporal AA)时间抗锯齿,利用前几帧的信息来进行抗锯齿,简单高效,但是会造成运动模糊。可以理解为将MSAA的效果使用在多个帧上。

超分辨率/超采样(Super Resolution/Super Sampling)
将图像从低像素拉伸到高像素,同样会遇到样本不够的问题,产生锯齿。DLSS(Deep Learning Super Sampling)通过深度学习“猜测”出拉伸之后的图像细节,来实现超分辨率/超采样。

猜你喜欢

转载自blog.csdn.net/qq_37856544/article/details/113093567