1. 程式人生 > >反走樣演算法

反走樣演算法

對直線、圓及橢圓這些最基本元素的生成速度和顯示質量的改進,在圖形處理系統中具有重要的應用價值,但它們生成的線條具有明顯的“鋸齒形”即會發生走樣現象

走樣:

“鋸齒”是“走樣”的一種形式。而走樣是光柵顯示的一種固有性質。產生走樣現象的原因是畫素本質上的離散性


走樣現象:

1、光柵圖形產生的階梯形(鋸齒形)

2、圖形中包含相對微小的物體時,這些物體在靜態圖形中易被丟棄或忽略。小物體可能因“走樣”而“消失”。在動畫序列中時隱時現,產生閃爍。


矩形從左向右移動,當其覆蓋某些畫素中心時,矩形被顯示出來,當未覆蓋畫素中心時,矩形不被顯示。

簡單的說,如果對一個快速變化的訊號取樣頻率過低,所得樣本表示的會是低頻變化的訊號:原始訊號的頻率看起來被較低的“走樣”頻率所代替


反走樣技術:

可採用解析度更高的顯示裝置,對解決走樣現象有所幫助,因為可使鋸齒相對物體更小一些


對於在白色背景中的黑色矩形,通過在矩形的邊界附近摻入一些灰色畫素,可以柔化從黑到白的尖銳變化。從遠處觀看時,人眼能把這些緩和變化的暗影融合在一起,從而看到更加平滑的邊界


兩種反走樣方法:

1、非加權區域取樣方法

根據物體的覆蓋率計算畫素的顏色。覆蓋率是指某個畫素區域被物體覆蓋的比例


把這個多邊形放在方格線中,其中每個正方形的中心對應顯示器上一個畫素中心。被多邊形覆蓋了一半的畫素賦為1/2,覆蓋三分之一的畫素賦值為1/3;以此類推。

如果幀緩衝區的每個畫素有4個位元位,那麼0表示黑色……15表示白色

缺點:

  • 畫素的亮度與相交區域的面積成正比,而與相交區域落在畫素內的位置無關,這仍然會導致鋸齒效應
  • 直線條上沿理想直線方向的相鄰兩個畫素有時會有較大的灰度差

2、加權區域取樣方法

這種方法更符合人視覺系統對影象資訊的處理方式,反走樣效果更好


將直線段看作是具有一定寬度的狹長矩形;當直線段與畫素有交時,根據相交區域與畫素中心的距離來決定其對畫素亮度的貢獻

直線段對一個畫素亮度的貢獻正比於相交區域畫素中心的距離

設定相交區域面積與畫素中心距離的權函式(高斯函式)反映相交面積對整個畫素亮度的貢獻大小

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

可利用離散計算方法:


將一個畫素劃分為n=3*3的子畫素,加權表可以取作:

加權方案:中心子畫素的加權是角子畫素的4倍,是其他畫素的2倍,對九個子畫素的每個網格所計算出的亮度進行平均,然後求出所有中心落在直線段內的子畫素,最後計算所有這些子畫素對原象素亮度貢獻之和