1. 程式人生 > >圖形學(7)反走樣技術

圖形學(7)反走樣技術

本模組內容絕大部分是在慕課上看中國農業大學網客時的筆記,因此算作轉載,在此鳴謝趙明、李振波兩位老師,感謝他們錄製該門課程供大家學習!

其實,在之前繪製直線演算法中,畫出來的直線經放大會有明顯的“鋸齒”,這就是俗稱的走樣(Liasing)現象。下面介紹如何通過特定演算法降低這種不友好現象的影響

反走樣技術

走樣

產生原因

光柵顯示器的固有性質,走樣產生的原因是畫素本質上的離散性。比如,想要用離散的點表示連續的直線,就必然會有“鋸齒”現象出現,這是走樣的形式之一。

走樣形式

除了上面的直線鋸齒之外,微小物體的顯示問題也是一個令人頭痛的事。如果圖形相對微小,一些部分佔不滿半個畫素,那麼就會被四捨五入

“舍”掉。而且,小物體在快速移動過程中的閃爍問題也是走樣的形式之一,具體情況如下圖所示:

 

反走樣技術

為了解決上述問題,研究人員開發出了一些用於減少或消除走樣效果的技術,稱為反走樣(Antialiasing)隨現在對圖形質量要求越來越高,幾乎所有圖形處理系統都需要對基本圖形進行反走樣處理

提高解析度

簡單粗暴,但是開銷巨大。比如顯示器長寬解析度各加一倍,則要以4(2*2)的儲存器代價和掃描轉換時間解決問題,且對硬體要求提高,無法適應更高要求的反走樣。

“模糊”

通過模糊,我們可以淡化鋸齒,從而產生更平滑的影象。比如在白色背景下繪製黑色直線時,可以通過在直線周圍新增一些灰色畫素來柔化黑色到白色的銳變。

“模糊”的方式有以下兩種。

非加權區域取樣方法

根據物體的覆蓋了吧計算畫素顏色,即某個畫素區域被物體覆蓋的比例決定顏色引數的大小。

這個方法計算較簡單,但缺點也比較明顯:

  1. 畫素亮度只與相交區域面積大小成正比,而與相交區域在畫素內的位置無關,這仍然會導致鋸齒的出現。
  2. 直線條上沿直線方向上的相鄰兩個畫素有時色差會很明顯

兩個不足之處出現的本質原因是每個畫素的權值相同

加權區域取樣方法

更符合人視覺系統對影象資訊的處理方式,效果更好。

將直線段看作具有一定寬度的狹長矩形。當直線段與畫素有交時,根據相交區域與畫素中心的距離(即通過計算一次點到直線距離)來決定其物件素亮度的貢獻。

  1. 畫素中心離直線段越近,權值越大,亮度就高;
  2. 設定相交區域面積與畫素中心距離的權函式(高斯函式)反映相交面積對整個畫素亮度的貢獻大小

這樣,利用權函式積分求相交區域面積,乘以畫素可設定的最大亮度值,就得到該畫素實際亮度。

加權區域取樣方法的計算

在計算時,由於畫素點的離散型,其實並不需要算出很精確的權值,可以將畫素分成3*3的子畫素,然後做出加權表如下:

 

這樣,在計算時只要求出所有中心位於直線狹長矩形的子畫素,然後加權計算就可以算出亮度權值了。

關於更多對反走樣技術的改進與研究,知網中有如下文章: