一、作業說明
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
二、開發環境:
Ø Windows 11
Ø Pycharm
Ø Python 3.9
Ø OpenCV - 4.5.5.64
三、實作方法
- 將 header 資訊讀取出來
- 將所有 pixel 值存放在 list 中
- 讓每一 pixel 之 RGB 分別與前一 pixel 之 RGB 比較,用三個 list 儲存各 pixel 的 RGB 分布
- 分別用 maxR、maxG、maxB 儲存最大的數量
- 分別算出算出至少需多少 bytes 儲存數字
- 存檔時,用 to_bytes() 將每個顏色數量轉成對應的 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
程式執行結果
沒有留言:
張貼留言