s1081429 作業6

 

主題:Run-Length Based Image Compression 練習

作業說明

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

開發環境:

  • Windows11
  • PyCharm
  • Python 3.9
  • opencv_python-4.70.72-cp37
  • numpy-1.24.2-cp39

程式說明: 

1. 定義run_length_encode函數

  • 函數接受一個通道(如 B、G 或 R 通道)的數組作為參數,返回編碼後的數據。
  • 函數遍歷數組,計算每個連續重複像素值的出現次數,並將結果保存在 encoded_data 列表中。



2. 定義compress_image函數

使用 imread() 讀入圖像,並透過split()拆分b,g,r三個通道,並將各通道壓縮並編碼為Run-Length

  • 接著,將壓縮數據寫入壓縮檔案中。
  • 最後,計算原始圖像的大小和壓縮後檔案的大小,並返回兩者的值。

執行壓縮並計算壓縮率,並輸出在終端機中

執行結果:
img1從14332KB壓縮到6843KB,壓縮率為209.29%
img2從14322KB壓縮到11729KB,壓縮率為122.11%
img3從14322KB壓縮到6318KB,壓縮率為226.68%
相加除3後得平均壓縮率為186.03%
終端機輸出結果:














留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1