1. 程式人生 > >【計算機圖形學】過取樣反走樣與區域取樣

【計算機圖形學】過取樣反走樣與區域取樣

過取樣反走樣與區域取樣

在光柵圖形顯示器上繪製非水平且非垂直的直線或多邊形邊界時,或多或少會呈現鋸齒狀或臺階狀外觀。這是因為直線、多邊形、色彩邊界等是連續的,而光柵則是由離散的點組成,在光柵顯示裝置上表現直線、多邊形等,必須在離散位置取樣。由於取樣不充分重建後造成的資訊失真,就叫走樣(aliasing)。

光柵圖形的走樣有如下幾種:

  1. 產生階梯或鋸齒形;
  2. 細節或紋理繪製失真;
  3. 狹小圖形遺失;
  4. 實時動畫忽隱忽現、閃爍跳躍。

反走樣原理:

對於能顯示兩級以上亮度(顏色或者灰度等級)的光柵系統,可以使用反走樣方法來修改影象亮度。通過適當地改變圖元邊界的畫素亮度,可以平滑邊界以減小鋸齒現象。

基本上反走樣方法可分為兩類:

第一類是提高解析度 即增加取樣點(提高取樣頻率)。然而,CRT光柵掃描裝置顯示非常精細光柵的能力是有限的,因此人們通常是在較高解析度上對光柵進行計算,然後採用某種平均演算法(濾除高頻分量)得到較低解析度的象素的屬性,並顯示在解析度較低的顯示器上 。這種方法稱為超取樣或後置濾波。
另一類反走樣是把畫素作為一個有限區域,對區域取樣來調整畫素的亮度,以光順邊界來減小鋸齒現象。這種方法等價於影象的前置濾波。

第一類是超取樣(過取樣)或稱後置濾波。這類演算法的基本思想著眼於提高解析度,雖然採用高解析度的光柵圖形顯示器也是一個選擇,但它受到客觀條件的限制,而且也不經濟。因此,我們往往採用軟體實現的方法,即:將低解析度的圖形畫素劃分為許多子畫素,在較高解析度上對各子畫素的顏色值或灰度值進行計算,然後採用某種平均演算法,將原畫素內的各子畫素的顏色值或灰度值的平均值作為該畫素顯示的顏色值或灰度值,在較低解析度的光柵圖形裝置上進行顯示。

通過適當地改變圖元邊界的畫素亮度,可以平滑邊界以減小鋸齒現象,從而減小直線的走樣現象。過取樣演算法原理如下:將每個畫素分成n×n個子畫素,然後在子畫素級對直線進行光柵化,這樣就可以得到每個畫素中被啟用的子畫素的個數。在n×n偽光柵上,可以光柵化的子畫素最多為n個。每個物理畫素的光強與其被啟用的子畫素數與n的比值成正比。假設一個物理畫素中被啟用的子畫素有m個,其可能的最大光強為Imax,則該畫素的光強(亮度)。I = n/m*Imax

第二類方法稱為前置濾波(區域取樣)。即:通過計算待顯示的每一個畫素在物件上的訃告區域,從而確定畫素亮度。畫素覆蓋區域通過確定物件邊界與單個畫素邊界的相交位置而得到。注意這時畫素是有幾何尺寸的。