次頻帶編碼
在訊號處理中,次頻帶編碼(sub-band coding, SBC)是一種轉換編碼。其作法是把訊號分成許多頻帶(通常使用快速傅里葉變換)後獨立編碼,通常是將資料做壓縮的第一步,可應用於聲音、多媒體、影像訊號的壓縮。
次頻帶編碼常用於包括MP3演算法在內的許多常見有損音頻壓縮演算法中。
應用於聲音頻號
基本理論
次頻帶編碼在聲音頻號上利用聽覺遮蔽(auditory masking)且符合人耳的聽覺系統。一般而言,人耳可聽到一定頻率範圍的聲音,若在某特定頻率的訊號強度很大時,人耳對於該特定頻率附近的頻率辨別率幾乎為0,我們稱強度很大的訊號遮蔽弱的訊號。次頻帶編碼的基本概念即是捨去那些被遮蔽的頻帶,這部分為「失真編碼」,與原本的訊號不同,但其捨去的訊號經過分析後,仍可以不被人耳所辨別。
應用
最常用於數碼化編碼的方法是脈衝編碼調變(pulse-code modulation),這種方法也適用於CD和錄音帶。數碼化轉換將原本的連續訊號取樣後,並用最接近的整數bits表示,及量子化(quantization),但這樣的方法會產生取捨誤差(rounding error),並在取樣域產生截斷誤差(truncation error)。
為了減少誤差,必須要增加每個代表取樣的位元數,如此一來便造成過大的位元率(像是CD audio的頻道就超過700 kbits/s)。實際上,用過的位元表示並沒有考慮人耳的聽覺系統的敏感度。其改善的方法是用非線性脈衝編碼調變,如µ-law編碼,適用聽覺感知曲線,其截斷誤差是與訊號能量大小做調變。
其中太陽電腦(Sun Microsystems)的Au file format是廣為人知的µ-law編碼方式,使用8位元µ-law編碼可使CD audio的頻道減低至350 kbits/s,但效果與原本相比,較為遜色。
次頻帶編碼應用的另一個例子是G.722(第一個用於16KHz採樣率的寬頻語音編碼演算法),它利用次頻帶可適性差分脈衝編碼調變(sub-band adaptive differential pulse code modulation, SB-ADPCM),位元率在64 kbits/s。SB-ADPCM將頻帶切成兩次頻帶,每個次頻帶再分別用ADPCM。
影像訊號
介紹影像之前,先以一個一維訊號為例,如圖一所示
圖一中,上圖表示兩頻帶的子帶編碼及解碼,輸入訊號,分別經過兩個分析濾波器(analysis filter)、。它們個別的頻率響應如下圖、。其中為低通濾波器,所得到的是訊號的低頻部分,其輸出為原訊號大略的特徵(approximation);為高通濾波器,輸出所得到的是訊號的細節(detail)。經過降取樣(downsampling)來達到壓縮的效果。而圖一上圖的右半部、分別是合成濾波器(synthesis filter),先將、,升採樣(upsampling)後還原原本的訊號。
接着介紹二維子帶編碼,如圖二所示,二為訊號分經過低通、高通濾波器後對橫列降取樣,此時會得到兩張長度約為原本二分之一的圖。再分別對這兩張圖個別經過低通、高通濾波器後對行方向降取樣,可得到四張圖。如圖三所示
圖三從左至右、上至下分別對應到圖二的,代表粗略次頻帶(approximation subband)、,表示水平的細節、,表示垂直方向的細節、,表示對角線方向的細節,即是角落(corner)的部分。若針對粗略子帶繼續經過更多次的低通、高通濾波器,便達到壓縮的效果,最廣泛的應用就是JPEG2000,其主要的演算法小波轉換的基本概念即是上面所述。
應用
在20世紀八十年代開始,MPEG(動態影像專家小組)制定了音頻和影片的編碼標準。例如MP3演算法的核心就是次頻帶編碼技術。
次頻帶編碼被用於G.722編解碼器,它在64kbit/s的位元速率內使用子帶自適應差分脈衝編碼調製(SB-ADPCM)。在SB-ADPCM技術中,頻帶被分成兩個子帶(高頻部分和低頻部分),每個子帶的訊號都使用ADPCM進行編碼。
參考
- sub-band coding tutorial https://web.archive.org/web/20070613152917/http://www.otolith.com/otolith/olt/sbc.html
- Rafael C. Gonzalez, Richard E. Woods, "Digital Image Processing", 2nd 2002, ISBN 0-20-118075-8