一、作業說明:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
二、使用環境:
python3.8
openCV 4.5.1
windows 10
三、方法:
壓縮:
1. 以 split()切分成r,g,b通道
2. 用flatten()將r,g,b轉成1維陣列
3. 對B,G,R做RLE
4. 壓縮好的資料以{數量1,字元1},{數量2,字元2}...}的方式儲存。
5.存成指定的格式
解壓縮:
1. 讀取height,width和B,G,R資料,要用UTF-8f = open("D:/img1.1071242", "r",encoding='UTF-8')不然會error
2. 用reshape()將array轉成(height, width, channel)
3. 用merge()將r,g,b合併成圖片
4.show圖片出來
執行結果
圖一 解壓縮率:43
圖二 解壓縮率:3
圖三 解壓縮率:46
平均壓縮率 =(43+3+46)/3=30
沒有留言:
張貼留言