反走样
根据像素点是否在三角形内进行采样会得到如下有锯齿的结果:
可以先对信号进行模糊然后再采样来进行反走样处理
为什么要先模糊再采样:
先模糊再采样,先改变了信号,降低了信号的走样。
先采样再模糊,样本依然走样, 模糊的也是走样的信号,称之为模糊走样。
下图模糊走样(左)和先模糊再采样的反走样(右)的对比图:
傅里叶变换
任何周期函数经过傅里叶变换可以展开成不同频率的余弦函数叠加,频率低的振幅大,频率高的振幅小。
下图为正弦波的傅里叶展开
如下图,同样的采样方法去采样不同频率的信号,频率越高的信号越难根据样本来恢复原本的信号,所以高频信号需要高的采样频率即采样频率要跟得上信号频率。
走样的定义
同样的采样方法采样两种频率截然不同的信号,得到的却是相同的结果,无法做出区分。如下图:
滤波
去掉特定频率的信号
时域、空域、频域
时域是信号时间时和信号值的关系。
空域是信号空间值和信号值的关系,空域可以转化为时域表示。
频域是信号频率值和信号振幅的关系。
信号频率和振幅
信号频率是代表信号变化的频繁度,并不代表信号振幅即信号值的变化范围大小。一般来说低频信号振幅大,高频信号振幅小。
反应到图像上就是低频信号颜色值变化频次低,但信号周期颜色变化范围大即振幅大。高频信号颜色变化频次高,但信号周期颜色变化范围小即振幅小。
频域
以下右图是左图的频谱图
频谱从中心往四周增大,可以看成横向和纵向频谱图的合成。
颜色是该频率信号振幅到灰度值的转换,颜色越亮振幅越大,该频率信号的颜色值变化幅度越大。
因为图像不是周期性的,在进行傅里叶展开时,相当于在水平和垂直方向上将图像不断重复,使其变成了周期性的。
十字形条纹产生的原因:
图形在水平方向重复时,边缘上从水平方向上来看颜色巨变,水平方向上产生强烈的高频信号,垂直方向与原来一致,所以水平轴就产生了一条亮线。
图形在垂直方向重复时,边缘上从水垂直向上来看颜色巨变,垂直方向上产生强烈的高频信号,水平方向与原来一致,所以垂直轴就产生了一条亮线。
高频信号代表图像的边缘即轮廓
下图滤波留下高频信号,显示图像轮廓。
低频信号代表图像的模糊主体内容
下图滤波留下低频内容,显示图像模糊主体内容。
下图滤波留下中频内容,可以看到留下的信号越接近高频轮廓就越明显。
信号卷积操作滤波
信号时域上的卷积等于频域上的乘积,信号时域上的乘积等于频域上的卷积
如下图对一幅图像进行卷积来模糊,等于将两者的频域的乘积进行信号还原。相当于对图像进行了低通滤波。
如图,卷积核越大,其频谱越集中在低频区。
因为卷积核越大计算一个像素所参与平均的像素就越多,就越模糊,即低通滤波程度就越强。
卷积核越小,其频谱越全面,如卷积核为一个元素,相当于卷积后像素保持原样。
采样是重复原始信号上的频谱
下图左是对信号进行采样即时域上的乘积, 图右是信号和采样函数在频域上的卷积
注意:是用信号源的去卷积采样函数的频域,即信号源的频域是卷积核。
采样频率跟不上信号频率导致的走样
采样频率越低其频谱越集中,采样频率越高其频谱越分散。
如下图,采样频率跟不上信号频率时,就会导致采样后的信号频谱产生混叠,这样就产生了走样。
反走样解决办法
1, 增加采样率,即增加显示器的分辨率,显示器的最高分辨率通常是固定的,所以不现实。
2,低通滤波,拿走高频信号。
低通滤波拿走高频信号来实现反走样
如下,信号源低通滤波拿走高频信号后,信号源频谱收窄,采样后的频谱就不再混叠了。
下图为对三角形进行低通滤波即模糊后采样
如何低通滤波即模糊
使用1像素宽度的卷积核,把像素内部其三角形所占面积平均到整个像素,其近似方法为MSAA。
超级采样抗锯齿SSAA(Super Sampling Anti-Aliasing)
原理是把当前分辨率成倍提高,然后再把画缩放到当前的显示器上。这样的做法实际上就是在显示尺寸不变的情况提高分辨率,让单个像素变得极小,这样就能够大幅减轻画面的锯齿感了。不过是由于对整个显示画面的放大,因此它消耗的显示资源也是非常大的。
多重采样抗锯齿MSAA(MultiSampling Anti-Aliasing)
寻找出物体边缘部分的像素,然后对它们进行缩放处理。
由于只是物体的外层像素进行缩放处理,忽略掉了不会产生锯齿的内部像素,所以显卡不会像处理SSAA(超级采样抗锯齿)那样需要庞大的计算量,因此MSAA比起SSAA来更有效。
模糊实际操作
课上虽然下面方法叫MSAA但个人觉得应该是SSAA。
把1个像素再划分成NxN个像素,然后用当前像素内被覆盖的子像素个数除以子像素总数来获取平均值。下面我们以1个像素划分成2x2个像素为例。