作業說明:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
開發環境:
- Windows 10
- Visual Studio Code
- Python 3.8.5
- OpenCV 4.4.0
實作:
- 將header資訊讀取出來
- 將所有pixel值存放在list中
- 讓每一pixel之RGB分別與前一pixel之RGB比較,用三個list儲存各pixel的RGB分布
- 分別用maxR、maxG、maxB儲存最大的數量
- bytesR、bytesG、bytesB算出至少需多少bytes儲存數字
- 存檔時,用.to_bytes(bytesR)將各顏色數量轉成對應的byte數儲存
- 壓縮檔案儲存為imgx_compress.bin
圖一原圖 圖一解壓縮後結果圖 圖二原圖 圖二解壓縮後結果圖 圖三原圖 圖三解壓縮後結果圖
圖一壓縮率 : 14322 / 4168 = 3.436
圖二壓縮率 : 14322 / 5369 = 2.667
圖三壓縮率 : 14322 / 3982 = 3.596
平均壓縮率 : (3.436 + 2.667 + 3.596) / 3 = 3.233
沒有留言:
張貼留言