这节课听的一脸懵逼 总之先随便记记吧= =
继续昨天的锯齿/走样来说
三种常见的采样导致的问题:
锯齿
摩尔纹(手机拍电视)
车轮倒转(高速看车轮转动感觉像是逆时针转)
本质都是因为信号变化过快,以至于采样速度跟不上
如何做反走样:
在采样之前,对原始的函数/信号做一个模糊/滤波
这边课程开始讲起了傅里叶变换
大致解释了这两个问题:
为什么采样不足会导致锯齿?
为什么先模糊后采样能够抗锯齿,而先采样后模糊不行?
下图中黑色点为采样点,在频率越来越大的时候,就越无法根据采样点来还原原本的函数
同样的采样方法,采样两种频率不同的函数,得到的结果可能相同,无法区分。
继续说边界模糊是怎么做的:
滤波器
通过滤波器抛弃特定频率的内容
左边是原图,右边是转换成频域的图(?一脸懵逼)
高通滤波器
通过这么一种滤波器,可以让图片只剩下高频
某一个地方,附近突然发生了剧烈的变化,比如黑衣服和白背景交界的位置。这就相当于信号发生了剧烈的变化,这个信号就处在高频的位置
低通滤波器
低频反之,只去掉了边界处
中通滤波器
最高的频率去掉,低频去掉,留下了接近边界的部分
圈再大一点,留下更多的高频的部分,更接近高频
(以上内容想深入去看:数字图像处理)
滤波=卷积=平均
下图为卷积操作:
很明白了:信号在任何一个地方,在它周围的区域,做了一次平均操作
上半部分:拿到一张图,任何一个像素,都是周围3*3像素的平均,理所当然它现在模糊了
或者
下半部分:拿到一张图,先把它做傅里叶变换,做成频域上的的结果,卷积和本身也可以在频域上表示出来,进行乘法运算后,将得到的频域图,逆傅里叶变换,就会得到相同的结果
时域的卷积=频域的乘积
另外:卷积核就是求图像上某一点周围像素的平均值,然后将最后得到的结果作为中心点的像素,上图中取9个格子的平均数,所以要求为了不让图像变亮或者变暗,才取系数为1/9
时域变大了,频域变小
时域上对 a×c的操作得e,频域上b和d进行卷积得f
采样:采样就是重复一个原始信号的频谱(笔者懵逼了已经)
接下来闫令琪继续阐述了走样产生的原因,大致就是:
采样的频率不够时,频谱的移动范围就会变小,最终导致频谱混叠
反走样
1.提升硬件水平
2.先把一个信号高频信息去掉,再进行采样
回到最开始:先把高频信号去掉(边界去掉,用一定大小的低通滤波器进行卷积),然后进行采样
MSAA
通过MSAA对信号做模糊,然后再进行采样
将一个像素划分成好多小的像素:多加采样点
计算过程:
然后再进行采样。
缺点:
增大计算量(工业上其实已经做了很多的优化,比如采样点根据某些图案取分布,使计算上更有效率,有一些点还会被附近的像素所复用等等)
另外还提到了其它抗锯齿手段:
FXAA (Fast Approximate AA):先得到有锯齿的图,从图像层面上,先将边界找到(通过图像匹配),然后将边界换成没有锯齿的边界,速度很快
TAA (Temporal AA):对于静止的物品,复用上一帧感知的结果
超分辨率
把一张小图拉大又不想看到锯齿
DLSS:通过深度学习,给出足够经验的东西,让它给缺的地方补上去