Games101 计算机图形学课程笔记: Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)

本文探讨了图形学中的走样现象及其产生的原因,包括采样艺术ifacts,重点介绍了傅里叶变换在频域的解释。通过滤波和卷积操作来理解反走样过程,尤其是MSAA方法,通过超采样改善图像质量。涉及关键词:走样、采样艺术ifacts、傅里叶变换、MSAA、反走样、滤波、卷积。
摘要由CSDN通过智能技术生成

走样 aliasing

上节的光栅化后会出现走样的结果,图像会出现锯齿,明显失真。

Sampling Artifacts

在图形学中,artifacts指的是Errors / Mistakes / Inaccuracies,指一些不准确或者与预期不一样的结果。
SA有以下几种:

  • Jaggies (Staircase Pattern
  • Moiré Patterns in Imaging
  • Wagon Wheel Illusion (False Motion

主要原因是信号变化太快,而采样太慢。

一种反走样的思想是对原图做模糊处理(滤波),然后再进行采样,效果如下:

下面从频域解释原因。

频域解释

傅里叶变换

傅里叶变换将任何周期函数或周期信号分解成一个(可能由无穷个元素组成的)简单振荡函数的集合,即正弦函数和余弦函数(或者等价地使用复指数)。

走样

走样是因为信号变化太快,采样太慢,如下图。
随着信号变化速度提升,使用较少的采样点采样出的信息无法恢复原来的信号。

滤波

滤波表示去除某种特定的频率(如高频、低频)信息。
高通滤波将低频信息过滤掉,只留下的高频信息。
高频信息就是颜色变化剧烈的信息,一般都是边界处,因为边界的颜色或光亮变化剧烈。
低通滤波就是将高频信息过滤掉,只留下低频信息,也就是一个模糊的过程。

卷积

卷积就是加权求和,在高频滤波中,高频信息权重为1,其他权重为0.

时域上的卷积等于频域上的乘积,时域上的乘积等于频域上的卷积。比如对一张图片做卷积操作,等价于先把图片和卷积核通过傅里叶变换转化到频域上,然后在频域上将两者相乘(可以理解成乘了一个mask),最后将相乘的结果做逆傅里叶变换即可。

时域上的卷积核大小和频域上是负相关。
假设在时域上,卷积核大小是整张图的大小,那么简单理解就是把图片上所有像素的值做平均,这样得到的值肯定和原来像素值差别很大,最后得到的图片应该是非常模糊的,换句话说图片里很多信息都丢掉了。而前面说了,时域上的卷积等价于频域上的乘积,而这个乘积进一步可以简单理解成就是乘了一个mask,因为图片信息丢掉了很多,那就代表这个mask的非零值很少。总结来说就时域上卷积核越大,那么对应地频域上的卷积核就越小。

从卷积定理的角度来看采样,其实就可以得出采样实际上是在重复原函数的频域,下图a是原函数,图b是其频域上的形式,我们通过图c的信号对图a进行采样(做乘),本质上就是用图c的频域形式与图a的频域形式做卷积,最后得到的图f结果就是图b的重复(频率的重复):

密集采样会把原函数的频域形式分割的较好(恢复得比较好),反之稀疏采样就会恢复得比较差,对应的频谱复制就快,造成频谱重叠,这时就会产生走样,如下图:

如果通过滤波把一定范围的频率滤掉,其恢复结果可能就会产生得好一些(即在上图中如果把原函数的低频和高频滤掉)。而模糊本身也是一种滤波,它会把图像中的一些频率去掉,所以这其实也解释了我们在上面可以先滤波,再光栅化,会使得结果更好一些,如下图:

对三角形做模糊后结果如下。
以最左边的像素为例,黑色表示三角形覆盖的面积,可以看到大约是覆盖了1/8的面积,那么做平均之后这个像素对应的亮度值就是纯白色的7/8。

反走样

反走样方法可分为两类:

  • 通过提高分辨率即增加采样点(提高采样频率),比如先在较高分辨率上对光栅进行计算,然后采用某种下采样算法得到较低分辨率的象素的属性,并显示在分辨率较低的显示器上,这类方法有SSAA;
  • 把像素作为一个有限区域,对区域采样来调整像素的颜色或亮度,这种方法类似于图像中的前置滤波(blur等),这类方法有MSAA。

通过超采样来反走样 (MSAA)

上面对每个像素内部做平均计算不太好计算,所以一种改进的算法MSAA诞生了。
MSAA的大致思路是从逻辑上把一个像素点再细分,比如把一个像素点划分成4个child-points。
然后判断child-point有几个在三角形内,根据比例对颜色进行模糊。比如有三个点在三角形内,则该像素的颜色为原来的75%。

其他反走样的策略:

参考:https://blog.csdn.net/qq_36242312/article/details/105708455
https://www.cnblogs.com/marsggbo/p/12782082.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值