2021年6月6日 星期日

s1071405 影像處理作業6

作業說明:

附件中為三張利用將高度以色彩視覺化後的圖片。 請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。 

操作環境: 

  • macOS Big Sur 
  • Python 3.8.5 
  • OpenCV 4.5.1 

程式說明: 

Encode 

  1. 使用cv2.imread() 和cv2.cvtColor() 讀取原始圖片 
  2. 建立輸出檔案.rle 
  3. 依序寫入圖片的高、寬、channel數量 
  4. 對圖片的RGB三個channel分別進行Run Length 壓縮,壓縮的同時寫入pixel值以及連續的數量,值的大小為1個byte,數量的大小為4個bytes 
Decode 

  1. 讀取.rle壓縮檔 
  2. 依序讀出高度、寬度、channel數量
  3. 依序讀出pixel值以及連續的數量,並進行重建 
  4. 讀出的結果拆成R G B
  5. 將R G B 疊起來 
  6. 輸出結果 

執行結果:

三張圖片壓縮並還原後的結果以及個別壓縮率
平均壓縮率:19327260/43995762 = 43.929822149687965%

沒有留言:

張貼留言