s1093320 作業6

作業說明:

附件中為三張利用將晶片高度以色彩視覺化後的圖片。

請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 

開發環境:

window10, vscode, python3.11.1

程式實作:

  1. 對三個檔案進行壓縮。原始圖像的檔案名稱是 img1.bmpimg2.bmp img3.bmp。壓縮檔案的輸出檔案名稱分別為 compressed_image1.bincompressed_image2.bin compressed_image3.bin
  2. 開始遍歷 img_array 中的每一行。對於每一行,先建立一個空的列表 row_compressed,並將第一個像素的顏色值設定為當前值 current_value,並將計數器 count 初始化為 1
  3. 進行run-length encoding,遍歷這一行的像素。對於每個像素,程式碼檢查其顏色是否和當前值current_value相等。如果相等,count+1,表示我們有更多連續的同色像素。如果不相等,代表到達了當前顏色的結尾,將計數count和當前顏色  current 作為添加到row_compressed。然後我們將新的顏色設為current_value,並將count重置為 1
  4. 遍歷完一行後,添加最後一對count current_value。將row_compressed添加到compressed_data,並繼續處理下一行。
  5. 遍歷完所有行之後,就得到了壓縮後的圖像數據compressed_data
  6. 壓縮比率:最後,程式會計算原始圖像大小與壓縮檔案大小的比率,即壓縮比率。
執行結果:





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6