GAMES101笔记(03)
前几个月忙着拯救地球所以有比较长时间的空档
这次笔记对应的是games101内容的第六课,至于为什么跳过第五课因为第五课我感觉也没啥需要记笔记的,基本就是光栅化的一些基本概念以及最基本的一些实现理念,视频最后讲到了关于锯齿和走样的一些东西,第六课开头即紧接着这部分进行讲解
采样是光栅化过程中普遍需要进行的一个操作,要用函数判断某个像素的中心是否在区域内
Artifacts
意为出现的不正常的现象,中文译名为瑕疵
提到的采样方面的这类现象主要举了三个例子
1.锯齿现象
2.摩尔纹
3.车轮效应,当车轮转速较高时有时会产生错觉认为轮子在倒着转的错觉,这是人眼在时间上的采样速度跟不上车轮转动的速度造成的结果
前两条是在空间上采样引发的现象,第三条是在时间上采样
产生这些走样的原因是由于信号变化过快导致采样速度跟不上
傅里叶级数展开
一切周期函数都可以用一系列正余弦函数组合以及常数项来表示、
傅里叶变换
给定一个函数,可以对其进行某个操作让其变化为另一个函数
操作公式无需记忆
将右边函数进行一个逆操作得到原函数,叫作逆傅里叶变换
这两种的共同思想,大概就是将一个函数表示为不同频率的函数相组合
大概就是这个样子
说回采样,当采样用的是固定的频率,在遇到变化频率较高的信号时就很容易误判,甚至两个完全不同的信号如果采样方式相同可能得到的是相同的结果,然后就走样了
滤波------filtering
可以过滤掉一定范围频率的信号
如何防止走样或者说减轻走样的影响?
给出一种方案,例如一张图,要对其采样时减轻走样,先对其进行模糊处理,然后再采样
至于为什么要这么做
我们可以对一张图片进行傅里叶变换,将其分为不同频率
右图为频率,中心的频率低,越靠外频率越高,可以看到这张图的频率主要集中在低频段
用滤波将低频段过滤后,图片将基本只显示图片轮廓
这样是因为在图形边缘处,颜色变化较快,因此频率也较高
反之,如果边缘较为模糊,则频率也会随之降低
抹去高频段后图片如下
相当于对原图进行了模糊处理
卷积Convolution
在图形学上,可以大致理解为用一个滤波器对一个信号进行某种操作
第一行为信号,第二行为滤波器
红色列对应的结果为将两行中对应部分进行点乘运算,如上图,第二列的运算结果为
将滤波器向右移动,可以依次得到第三列第四列等等结果
我们可以看到,由于信号的每一列在与滤波器进行运算时都要使用到周围的数字,也就是加权平均值前面的操作,所以最终得到的结果会比较平均
试想,若将这种操作应用于图像上会如何?
在该图像上方,展示的是对于一个图形的每个像素(以及与其相邻的像素)都与中间的滤波器进行卷积运算,最终得到的每个像素都受到周围的影响趋于平均,因此边界感减弱,图像变得模糊
这是第一行内容
我们也可以将图像先进行傅里叶变换后得到频域,滤波器也变成频域,两个相乘后得到的结果再逆傅里叶变换得到图像,效果一致。
这是使用到的滤波器,每次计算时与九个像素进行运算
至于为什么乘上九分之一,是为了不改变原来像素的整体颜色,相当于求加权平均值
然后是相对比较难理解的部分
给一个函数如图a,将其傅里叶变换得到图b
图c是一个冲激函数,冲激函数是只在某个时刻有值并且极大的函数-------
至于为什么要用这么个函数
经过一定的(非常速成的)查阅后,我得到了如下信息
首先冲激函数的定义是
也就是仅在某时刻有很大的值,其余均为0
同时呢它又有这么一个性质
证明比较困难,所以我也懒得再继续查资料论述了,直接当结论记
记输入的信号函数为f(t),如果我们将f(t)和冲激函数相乘并求积分,
并且由于冲激函数仅在t=0处有值,故可以只考虑t=0,可以推出
连续函数f(t)在相乘求积分后只剩下了t等于0的部分
于是我们可以进行扩展将t=0扩展到t等于任意时间
具体扩展方式就不赘述了,只知道可以这样就行
再回到我们这个图,这个c图显然就是冲激函数,与a相乘后可以将连续的a离散化,这就达到了采样的效果
这是时域上的情况,时域上的乘积对应的是频域上的卷积。
d是经过傅里叶变换的d,仍然由冲激函数组成。卷积结果如f,同样得到采样结果
然后我们发现f由多个采样前的频谱组成
因此得出暴论(不是):采样是将原始频谱进行多次复制粘贴
补充一个概念:冲激函数在频域里的间隔是时域里的倒数,因此时域越宽频域越窄
然后又谈到走样的问题,上图的b中频率有一定范围,f也是如此,如果采样频率较低,两次采样中间差的时间多,也就是在时域上间隔宽,那在频域上间隔就会窄
当频率低到一定程度,在频域上就会出现两次采样在频域上重叠的情况,如下图
因此便产生了走样
分析了走样原因,自然要继续探讨反走样方式
1.提高采样率
最直接粗暴有效的方法,但如果能这么简单的就提高采样率的话,谁还会研究反走样呢
2.MSAA,先做模糊再采样,模糊在频率上可以表现为低通滤波,减弱边界感。在频域上表现出来是这么个效果
至于具体实现,上面有提到过是利用卷积的方式求加权平均值,但是对每个像素计算平均颜色
但这个实际上计算量也很大,实现比较困难
所以人们发明了近似的办法叫MSAA,增加更多的采样点,但这个并不能完全达到反走样效果
他的方法是将一个像素分为若干个小部分,通过判断每个部分是否与图像重合,通过每个像素内重合的小像素数量来加权计算平均颜色(可能有点绕,多看两遍)
3.FXAA,先得到有锯齿的图像,然后通过寻找匹配锯齿边界将其替换为没有锯齿的边界
4.TAA,最初步骤类似MSAA,但后续每一帧在对像素颜色处理时沿用部分之前已经处理过的结果,因此在处理静态图像时效果拔群
本节课到此为止
啊累死我了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!