Run-Length Based Image Compression練習
說明
附件中為三張利用將高度以色彩視覺化後的圖片。
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
執行環境
- OS: Arch Linux x86_64
- Editor: Visual Studio Code
- Python: 3.7.9
- OpenCV: 3.4.2
- Numpy: 1.19.2
壓縮方法
- 讀取圖片
- 分割BGR
- 扁平化資料成一維陣列
- 計算RLE(Run-Length Encoding)
- 將長、寬、BGR的RLE結果寫入檔案
解壓縮方法
- 讀取壓縮檔
- 還原資料
- 分割資料
- 組合成BGR
- 寫入圖片
過程截圖
結果
平均壓縮率 : (6.64 + 4.04 + 6.97) / 3 = 5.883
解壓縮驗證(SHA256)
781797f695ab9b0fa67992689b95c7ea69577e8111ed4701187ed12811aa8c47 img1.bmp
781797f695ab9b0fa67992689b95c7ea69577e8111ed4701187ed12811aa8c47 recover1.bmp
627d8e6119597a78a897560f08927da410ac63a551a532a2e8e6bd241923b3ab img2.bmp
627d8e6119597a78a897560f08927da410ac63a551a532a2e8e6bd241923b3ab recover2.bmp
d1fb5986bcf6059ad104779ed54c57e5ab575d5250b544049032f4874678cc15 img3.bmp
d1fb5986bcf6059ad104779ed54c57e5ab575d5250b544049032f4874678cc15 recover3.bmp
沒有留言:
張貼留言