2012年6月8日 星期五

影像壓縮使用 BTC 演算法

 Block Truncation Coding (BTC)
一個簡單又快速的影像壓縮方法

 BTC 的壓縮及解壓縮過程

先將影像切成4x4的小區塊

針對每個影像小區塊影像



求取區塊的平均值

壓縮後的二元影像 g

接著計算解壓縮所需的參數 ab
其中 q 代表 g(x)=1 的個數,
由於小區塊是4x4, 所以小區塊的像素總數為16


解壓縮後的影像 h

來看個小例子吧!

g(x)=1 共有9個, 所以 q=9

由於解壓縮後的影像值仍為整數,所以 a=120, b=160
接下來求解壓縮的影像 h 

完整程式如下:


第3行: 由於影像長寬不一定是4的倍數,
最多只要在最右邊及最下邊填補3個像素
第9行: STD的輸入一定要是INT 或DOUBLE, 原輸入影像資料是uint8

最後來實驗看看!



這是LENA(頭髮侷部)原圖與BTC解壓縮後的比較
解壓後在細微的部份變得比較模糊

--- END ---


沒有留言:

張貼留言