• 沒有找到結果。

轉換編碼應用在影像方面,可以用一維或二維的方式來做,以目前來說,大 部分的轉換編碼都是採用二維的方式,我們先將N×N的影像,分割成不重疊的n×n 方塊,然後再對每個n×n方塊做單位轉換,所有的轉換都可以分解成兩個一維的 轉換,舉例來說,我們可以先對n×n方塊中的列做轉換,再把得到的結果對行做 轉換,最後得到的結果是與直接對n×n方塊做二維的轉換是一樣的。我們把n點的 單位轉換分為兩種來討論,一種是當成n×n維的座標轉換,另一種是分解成一組 n×n個相互正交的基底函數線性和。

我們假設對一個1×2的方塊做二維的轉換,在x1y1-座標系統上的每一個向量 V1代表一對相鄰的像素值,而這些相鄰的像素值相關性非常地高,所以大都沿著 45度線(即x1=y1)分佈,如果我們選擇直接計算MSE值(利用平均值即離均差計 算變異量)來重建影像,因為MSE太大,會得到很大的誤差,所以用座標旋轉是 最好的方法,我們使用一個單位轉換(unitary transform)將向量V1 旋轉45度 成為V2=(x2,y2),我們可以用數學式來表示:

 

 

 

 

= −

 

 

1 1 2

2

1 1

1 1 1 2

y x y

x

或者,

V2 = AV1

A為旋轉矩陣,這樣就產生了一個全新的座標,我們稱做單位轉換裡的正轉 換,如下圖所示:

圖 2-3-1 座標轉換圖

在轉換的過程中歐基里得距離(Euclidean distance)保持不變,這代表了 資料在轉換前後變異數是不變的,也就是能量不滅,即:

中,並不能達到資料壓縮的效果,只是將大部分的能量集中到少部分的轉換項而 已,而接下來的量化及編碼才是促成資料壓縮的原因,之前我們用平均值取代取 樣點就是一種量化的動作,適當的轉換會有利於我們的量化動作,比較粗糙的量 化動作,通常可以得到較高的壓縮比,但也降低了重建品質,所以我們常藉由量 化器的調整,來在壓縮比與重建品值之間取得平衡點。在做轉換時,角度會依當 時情況而改變,因此我們把二維的轉換用數學式子來代表:

 

 

 

 

= −

 

 

1 1 2

2

cos sin

sin cos

y x y

x

θ θ

θ θ

或者,

V2 = BV1

B為旋轉矩陣,而V2為轉換係數,每一個轉換係數可以把它視為某一特定頻 率波型上的能量值。只要在編碼過程中沒有產生誤差,那麼單位轉換是可逆的,

我們可以利用上述式子做一個逆轉換,就可以恢復原訊號了,在實際編碼時,因 為轉換係數會經過量化,一定會產生誤差,因此將量化完的數值逆轉換後,所得 到的就只能與原訊號近似了。

在之前我們介紹了二維的轉換,那如果是高維度的轉換呢?也是一樣的,只 是旋轉的方式不同罷了。在二維的旋轉裡,我們利用了B矩陣來進行座標轉換,

在B裡的每一個行向量,可以將它們視為一組數位正交的基底函數,那我們就可 以得到,不同的轉換只是在於所用的基底函數不同,也因此有許多人自行研發新 的基底函數,設計出其他的轉換,我們在這裡介紹一個應用在影像上最有名的轉 換,數位餘弦轉換(DCT),我們常用的JPEG系統就是採用這種轉換。

我們對一個n×n的方塊進行二維DCT的正轉換,其在數學上的定義如下: 嚴重的方塊效應(blocking effect),也就是當我們組成方塊時,方塊之間有 明顯的不連續區塊,DCT沒了這些多餘的高頻項,就能保持高編碼效能,降低方 塊效應,提高壓縮效能,再者只要用實數運算,不像DFT使用複數計算,所以連 JPEG系統也採用DCT轉換。

化與編碼的過程中,我們可以把每一個保留係數用固定的位元數,也可以依照頻 率的不同給定位元數,一旦區域與量化編碼之位元數確定了,編碼端與接收端可 以一起使用,額外的資訊就不用傳送了。另一個方法比較精密,我們將區域內的 係數使用不同的位元數,但是固定區域的總位元數,而且所給的位元數要與該係 數的方差值呈正比,這樣可以使整個量化誤差降到最低。使用這種方法編碼一張 影像,需要兩個步驟,第一步要將所有方塊同一位置的係數能量求出,接著取平 均值當作該係數的方差,這時要決定量化器的位元分配,以便量化器將每個係數 所得到的位元數傳送給接收端,第二步才是幫每一個方塊做編碼的工作。我們也 可以在計算方差時,藉由方差值來將方塊分類,之後再來分配量化位元數,這個 動作可以避免重建誤差,假設每一個方塊都使用同一種分配辦法,會使那些在方 塊中的離群值被忽略而產生很大的誤差。

區域取樣法最大缺點是在於只要是落在非選擇區內的係數,我們一概忽略,

這樣很容易會產生重建誤差,臨界值取樣法可以解決這個問題,我們事先設一個 臨界值,假如轉換係數高於此臨界值,則將予量化、編碼,反之便全部省略,因 為我們不知道那些大於臨界值的係數在哪個位置,所以我們必須將這些係數的位 置資訊連帶送出。為了方便控制係數所產生的誤差值,我們可以隨係數改變來調 整量化器架構,例如我們可以固定量化器,但每個係數都有所屬的放大縮小倍 數,在量化之前,所有的係數先乘以自己的放大縮小倍數來配合量化器的範圍,

如此,每個係數就可以使用相同的量化器了。

JPEG所提出之DCT演算法(Wallace 1991),基本上就是臨界取樣法DCT,它運 用了正常化矩陣的程序,雖然不是使用臨界值,但也能達到臨界取樣的效果。

相關文件