Carved Marker

Antialiasing 的理論 [Part 1]

在這篇文章中,我們會從數位訊號處理的理論角度來看 3D 電腦繪圖中的 antialiasing 問題。當然,這並不是教科書(我也沒能力寫教科書 :P),所以我會儘可能避開數學式,而只是從觀念的角度來說明這個問題。

首先,我們從數位訊號的基礎來看。因為我們現在所用的電腦,幾乎都是數位電腦,所以它們當然也只能處理數位的資料。所謂的數位資料,其實就是一堆數字,或更正確的說,一堆整數。因為數位電腦只能處理 0 和 1,所以它們所能處理的東西,可以說都是有限的整數。當然,我們可以用一些整數來表示有理數(用分數來表示),所以數位電腦也可以用來處理一些小數。

不過,有很多東西不是用有理數就可以表示的。不過,這還不是最大的問題。最大的問題是,很多訊號都是連續的。這裡所謂的連續,並不是微積分裡面的那種連續,而只是說訊號就像一個實數函數一樣,在任何參數上都有值。這告訴我們,即使是隨便一小段訊號,都需要用無限多個數字才能表示。很明顯的,數位電腦是不能存放無限多個數字的。下圖是一個例子:

An example of a continuous signal

在上圖中,垂直方向是訊號的強度,在影像中就是 intensity。而水平方向則是訊號的位置,我們稱為 spatial domain。如果是聲音訊號的話,那它就不是位置,而是時間了,也就是 time domain。不過,因為我們這裡只討論影像,所以基本上水平方向就是 spatial domain。

不過,因為這樣的訊號是連續的,所以,就像前面所說的,需要無限多個數字才能存放這個訊號。但是電腦不能存放無限多個數字,所以,只好取其中的一些數字。比如說,如果上圖中垂直方向的虛線,就是 pixel 的邊界,那我們可以只取訊號中,在 pixel 正中間的值。這樣我們只需要存放八個數字。這就是所謂的取樣(sampling)。以上例來說,取樣得到的八個數字分別是 0.548、0.468、0.760、0.296、0.400、0.348、0.460、和 0.507。這些取樣得到的數字,就形成了數位訊號

這些數位訊號在經過處理後(所謂的處理,也許只是存放在某個地方,像是光碟片裡面),最後還是需要讓人看到結果。因為人是沒辦法光從一堆數字就看得出來那是什麼東西,所以,一定要設法把這些數位訊號,再轉換成連續的、人可以接受訊號(像是顯示在螢幕上,或是對聲音訊號來說,用喇叭發出聲音)。這個過程就稱為重建(reconstruction)。比如說,上面的數位訊號,利用 sample and hold 的方式重建的話(也就是說,在整個 pixel 的範圍中,都輸出該 pixel 的取樣值),會變成如下圖:

Reconstruction of the digital signal

不用說,這是一個蠻差的重建方式,因為它重建出來的訊號,和原來的訊號實在是相差太多了。不過,其實這也是沒辦法的事,因為對一個連續的訊號(原來需要無限多個數字才能表示),只用八個數字來表示,本來就會丟失很多資訊。不過,我們當然還是希望能夠儘可能達到最好的效果。這就是理論發揮作用的時候了。

[Part 1] [Page 2] [Page 3] [Page 4]

12/4/2001, Ping-Che Chen


Sorry, Traditional Chinese only. This page is encoded in UTF-8.

Copyright© 2000, 2001 Ping-Che Chen