2010年8月10日 星期二

Aliasing 如何形成

資料來源 :  google search 所得來零零碎碎的資料綜合而成, 當中包括自己加入的一些想法, 未必百份百正確..

...由於 LCD 的 pixel 是四方形以及一行行咁排列的, 解像度有限, 雖然可以 "完美無瑕" 地顯示完全水平或垂直的線條, 但卻無法 "完美無瑕" 地顯示斜線或曲線而出現鋸齒現象(jagged edge), 另外若要顯示密集的黑白格仔或線條時, 亦會出現所謂的波紋現象(moire), 而對於動畫黎講, 亦會出現所謂的 flickering 現象 , 這些問題都稱為 Aliasing, 而解決這些問題的方法便稱為 Anti-aliasing...

.... 出現 jagged edge 的原因是由於 LCD 的 pixel 是四方形, 當顯示斜線時便只能用 "梯級線" 的方式來達成, 假設 LCD 的解像度是 100 x 100, 當顯示完全水平的直線時, 只需簡單地啟動打橫的 100 行 pixels 之中的其中一行便可(假設該直線的闊度是 1 pixel), 但若要顯示斜線的話(將完全水平的直線稍為轉動一兩度), 便要先啟動第一行的頭 10 個 pixels, 然後跳落下一行啟動 11 至 20 的 pixels, 再跳落下一行啟動 21 至 30 pixels , 如此類推...雖然 "梯級" 之間只有 1 pixel 的落差, 但由於 pixel 的 size 不夠微細, 令人類眼晴察覺到 "狗牙" 的存在 (若 pixel 是圓形的話可能會好 D, 但圓形之間會有空位, 除非可以做到互相重疊的圓形 pixel , 這時自己的諗法而已, 未必正確)....
.....另一個原因是由於線條上所有的 pixels 都用同一種顏色來顯示, 更加凸顯了 aliasing 的嚴重性, 假如 pixel 的顏色是跟據該線條所佔用的範圍平均計算出來的話 (即是 pixel 顏色有深淺變化), 便可將 "狗牙" 的嚴重程度減低, 雖然 pixel 的形狀及 size 並沒有改變, 但顏色的改變又會令人類眼晴察覺不到 "狗牙" 的存在(所以 anti-aliasing 方法亦是朝著這個方向進行)

沒有留言:

張貼留言