上一節課,我們學習了兩個主要知識
Viewing:View + Projection + Viewport
Rasterinig Triagles
今天我們重點學習Antialiasing(反走樣或者叫抗鋸齒)。
我們先看看這張圖的問題.
首先我們回顧一下採樣這個概念,它本質就是把圖像的不同位置進行離散化,變成像素。採樣本身存在一些問題:叫做採樣瑕疵(Sampling Artifacts)。
上圖的鋸齒就是一種artifact(這裡artifact翻譯成瑕疵)。下圖是另外一種採樣的Artifact,叫做摩爾紋。
接下來我們看另外一個採樣問題:Wagon Wheel Illusion.
下圖中這個圓盤其實是順時針旋轉的,但是有些內部的圓環看起來又像是逆時針旋轉。這其實也是採樣的瑕疵,問題出在我們的人眼。人眼的採樣速度跟不上圓輪旋轉的速度。我們生活中也會經常遇到這樣的問題。例如我們經常看到路上跑的車的輪子,有些輪子看起來像是往迴轉的。
所以採樣是具有很多瑕疵的,以上只是我們舉出的幾個例子。我們來總結一下:
其走樣的本質就是信號的變化太快,以至於採樣的速度跟不上它,也至於造成採樣的走樣。這就是採樣的artifact。
在採樣之前做個模糊,也叫做Filtering(濾波)。
我們還是以三角形為例:在沒有做模糊時,我們採樣是紅和白,如下圖:
那我們先做一個模糊處理,然後再針對這個模糊的三角形做採樣:
那我們來看一下結果的對比。
抗鋸齒處理前:
抗鋸齒處理後:
看到以上效果後,我們來回顧一下我們的上面的內容:
為什麼採樣會出現走樣?
為什麼Filtering然後再採樣可以反走樣
為了徹底理解這兩個問題:我們先來科普一下Frequence Domain,這裡需要先科普一些頻率方面的知識。
大家還記得高中時期學的正弦函數和餘弦函數嗎?兩者的區別就是他們的相位略有不同。
那什麼是頻率呢?如果我們引入一個f,當我們調整f的值,就會發現,波的頻率不同。所以這裡的f就是表示頻率,表示這個餘弦波的變化有多快。那麼有了f,就可以來定義周期T,周期就是表示每隔多久重複一次。
這裡要給大家介紹另一個數學概念:傅立葉基數展開。
傅立葉基數展開:任何一個周期函數,都可以寫成一系列正弦和餘弦函數的線性組合加上一個常數。
例如下圖,我們想要描述圖中的黑色的框框形狀的函數,可以通過疊加多個正弦和餘弦函數來無限接近的描述這個框框形狀的周期函數
傅立葉基數展開跟另外一個概念:傅立葉變換有著緊密相連。什麼是傅立葉變換呢?看下邊的 一個公式:圖左邊有個函數f(x),右邊有一個函數F(X),左邊和右邊兩個函數可以經過中間一個非常複雜的函數來回變換。這裡中間這個複雜的操作函數暫且不需要理解。
那我們介紹傅立葉基數展開,和變換有什麼用呢?
大家可以注意到,傅立葉基數展開都可以由不同的正弦函數和餘弦函數展開。那我們可以留意到這樣一個細節,在傅立葉函數展開過程中,有1tw,2tw,3tw..。這些數字看起就很像我們之前介紹的頻率。
那我們就可以總結出這樣一個規律:任何一個周期性函數,都可以分解成不同頻率,由從低到高的頻率展開。那麼,這裡就可以結合傅立葉變換了。
例如,我們有五個這樣的函數:
我們用同一種採樣的方式來對這五個函數採樣,首先我們採樣頻率低的f(x),當我們連起來採樣的點,這些連起來的點還可以基本描述出這個函數的形狀。但是當我們用同樣的方法採樣頻率高的函數f5(x)時,我們的採樣點明顯跟不上採樣的頻率,那麼我們就無法通過採樣點來恢復f5這個函數。
思考:那我們學習了頻率,傅立葉基數展開,和傅立葉變換,那跟我們採樣走樣有什麼關係?
答案:通過頻率這個概念,我們就可以明白,當對兩個完全不同的頻率的函數進行同樣的採樣方法,如果採樣點來描述出的函數不是唯一的,那麼這就是採樣走樣的出現的根本原因。例如下圖:我們有兩個函數,藍色函數和黑色函數。我們對其都做了同樣間隔的採樣點。但是這些採樣點即在藍色函數上,也在黑色函數上,雖然採樣結果相同,但是同樣的採樣法無法區分藍色函數和黑色函數,這種現象就是採樣走樣。
Filtering: Getting Rid of certain frequency contents. 所謂,(filtering)濾波,就是去掉一些頻率。
所以,傅立葉變換幫我們理解了這些採樣的問題的本質。它幫著一個函數或者圖像從時域變成了頻域。
我們來看下邊這張圖:
上圖中左邊是個正常的照片,我們稱作時域圖;
上圖中右邊的是左邊這張圖的頻域圖。在頻域圖的中間我們定義成低頻率區域;周圍我們定義為高頻區域。在不同位置的信息多少用亮度來表示。亮度越高說明信息越多。 這個圖中表示的是大部分信息都集中在圖的中間,就是低頻信息最多。
這種頻率的描述圖,也稱作頻譜。
那我們再接下來下邊這個實驗:我們把右邊的頻譜圖的低頻的區域去掉,然後通過傅立葉還原成原來的圖,我們就得到左邊的圖,這個時候,我們就會發現,左邊的圖大概只剩下了衣服的一些輪廓。這種濾波手法叫做高通濾波器。
接下來我們再做第二個試驗:我們只留下低頻信息,抹掉所有高頻信息,還原後,我們得到了左邊的圖。這種手法叫做低通濾波器。
最後我們再做一個試驗:我們把高和低的頻率都去掉,然後留下中間一部分頻率後再做還原得到了左邊的圖片是長這個樣子的。
接下來我們再來介紹卷積。
卷積定理
Sampling = Repeating Frequency Contents
經過前面的鋪墊,方便了我們理解為什麼要先模糊,再採樣。也就是說,懂了頻率後,我們理解它實際的本質是:先把高頻信息拿掉,然後再採樣。
我們來看一個例子:
上邊的圖中我們就可以發現,經過對高頻的濾波,那麼交叉的部分就被幹掉了,這樣就減少了不必要的幹擾。之後再進行採樣就可以達到反走樣的效果。
那麼今天,在工業內,抗鋸齒的方案有很多種:我們這節課只介紹了其中的基本原理。感興趣的同學可以自己進行更多的拓展學習。