2022年6月2日 星期四

s1073522 作業 6

 一、作業說明                                    

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。

二、開發環境:

Ø  Windows 11

Ø  Pycharm

Ø  Python 3.9

Ø  OpenCV - 4.5.5.64

三、實作方法

  1. 將   header 資訊讀取出來
  2. 將所有   pixel 值存放在   list 
  3. 讓每一   pixel 之   RGB 分別與前一   pixel 之   RGB 比較,用三個   list 儲存各   pixel 的   RGB 分布
  4. 分別用   maxRmaxGmaxB 儲存最大的數量
  5. 分別算出算出至少需多少   bytes 儲存數字
  6. 存檔時,用   to_bytes() 將每個顏色數量轉成對應的   byte 數儲存
  7. 壓縮檔案儲存為   imgX_compress.bin

四、執行結果:

圖一原圖


 

圖一解壓縮後結果圖


 

圖二原圖


 

圖二解壓縮後結果圖


 

圖三原圖


 

圖三解壓縮後結果圖


 

壓縮率

 


  圖一壓縮率 : 14322 / 4168 = 3.436 

圖二壓縮率 : 14322 / 5369 = 2.667 

圖三壓縮率 : 14322 / 3982 = 3.596 

平均壓縮率 : (3.436 + 2.667 + 3.596) / 3 = 3.233

 

程式執行結果



沒有留言:

張貼留言