概述
目录
- 走样 aliasing
- Sampling Artifacts
- 频域解释
- 傅里叶变换
- 走样
- 滤波
- 卷积
- 反走样
- 通过超采样来反走样 (MSAA)
走样 aliasing
上节的光栅化后会出现走样的结果,图像会出现锯齿,明显失真。
![](https://file2.kaopuke.com:8081/files_image/2023062421/20210325210023533.png)
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://file2.kaopuke.com:8081/files_image/2023062421/20210325212619705.png)
![](https://file2.kaopuke.com:8081/files_image/2023062421/2021032521274495.png)
![](https://file2.kaopuke.com:8081/files_image/2023062421/20210325212735667.png)
其他反走样的策略:
参考:https://blog.csdn.net/qq_36242312/article/details/105708455
https://www.cnblogs.com/marsggbo/p/12782082.html
最后
以上就是火星上外套为你收集整理的Games101 计算机图形学课程笔记: Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)走样 aliasingSampling Artifacts频域解释反走样的全部内容,希望文章能够帮你解决Games101 计算机图形学课程笔记: Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)走样 aliasingSampling Artifacts频域解释反走样所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复