1. 作業說明:
Run-Length Based Image Compression練習
附件中為三張利用將高度以色彩視覺化後的圖片。
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
2. 作業環境、語言:
Windows 10 + PyCharm Community Edition 2020.3 x64 + OpenCV4.5.1,
python 3.8
3. 方法:
A. 壓縮:
(1)
讀取圖片,取得圖片大小&BGR三個channel值(split)
(2)
調整陣列(2D to 1D)
(2)
將BGR三個channel值分別做RLE演算法壓縮
(3)
壓縮完的BGR寫入.npz檔
B. 解壓縮
(4)
讀取.npz檔、取得三個被壓縮的BGR值
(5)
用逆向的RLE還原本來的BGR值
(6)
調整BGR陣列大小(reshape())
(7)
合併三個channel後寫出圖片
4. 執行結果:
img1.bmp
& img1_RLE.bmp(解壓縮後圖片)
Img2.bmp
& img2_RLE.bmp
Img3.bmp
& img3_RLE.bmp
壓縮率:
13.9/8.14
= 1.7076167076167
13.9/13.5 = 1.0296296296296
13.9/7.77
= 1.7889317889317
平均壓縮率 = (13.9/8.14 + 13.9/13.5 +
13.9/7.77)/3 = 1.5087260420593
沒有留言:
張貼留言