Block Truncation Coding (BTC)
一個簡單又快速的影像壓縮方法
一個簡單又快速的影像壓縮方法
BTC 的壓縮及解壓縮過程
先將影像切成4x4的小區塊
先將影像切成4x4的小區塊
針對每個影像小區塊影像

求取區塊的平均值

壓縮後的二元影像 g

接著計算解壓縮所需的參數 a 與 b
其中 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 ---
求取區塊的平均值
壓縮後的二元影像 g
接著計算解壓縮所需的參數 a 與 b
由於小區塊是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 ---
沒有留言:
張貼留言