2012年6月12日 星期二

AMBTC using Matlab

 BTC 的改良版
Absolute Moment Block Truncation Coding : AMBTC

 在 BTC 壓縮演算法中,需利用各區塊的標準差(standard deviation)來計算解壓縮後的還原值。由於標準差需要較複雜的計算,因此AMBTC改由平均值來取代標準差,
可以減少複雜的運算,並可提升影像品質。

AMBTC 的演算法
1.將影像切成4x4的區塊,每一區塊有16個像素 f(x1), f(x2), ..., f(x16),每一區塊的作法完全相同。
2.計算區塊的平均值




3.計算區塊中,亮區塊(影像值大於等於平均值的像素)的平均值H, 與暗區塊( 影像值小於平均值的像素)的平均值L


 其中K代表亮區塊的像素個數, 16-K就是暗區塊的像素個數

4. 每一區塊壓縮後的值 g(x1)...g(x16),分別為


所以每一區塊經AMBTC壓縮後,得到一個4X4的二元影像及兩個數值 H 和 L。
壓縮後每個像素需要


壓縮比就是 8 /2 = 4倍。

解壓縮的方法與 BTC 完全相同,也就是壓縮影像中像素值為1的,其解壓縮後的像素值為 H, 其它就是 L, 也就是




現在用matlab寫程式吧!


第12行:萬一區塊內像素值都一樣(檔k=16),避免除數為零,所以增加了一個 if 條件。
第15行:為了真實反應解壓縮後的像素值仍為八位元,所以H跟L要先四捨五入後再儲存。

實際執行一個例子吧!



可以自己拿計算機算算看數字對不對?

接下來show一下結果的侷部圖
其指令為:




左邊為原圖、右邊為解壓縮後的圖

--- end ---




沒有留言:

張貼留言