s1093320 作業6
作業說明:
附件中為三張利用將晶片高度以色彩視覺化後的圖片。
請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率
開發環境:
window10, vscode, python3.11.1
程式實作:
- 對三個檔案進行壓縮。原始圖像的檔案名稱是 img1.bmp、img2.bmp 和 img3.bmp。壓縮檔案的輸出檔案名稱分別為 compressed_image1.bin、compressed_image2.bin 和 compressed_image3.bin。
- 開始遍歷 img_array 中的每一行。對於每一行,先建立一個空的列表 row_compressed,並將第一個像素的顏色值設定為當前值 current_value,並將計數器 count 初始化為 1。
- 進行run-length encoding,遍歷這一行的像素。對於每個像素,程式碼檢查其顏色是否和當前值current_value相等。如果相等,count+1,表示我們有更多連續的同色像素。如果不相等,代表到達了當前顏色的結尾,將計數count和當前顏色 current 作為添加到row_compressed。然後我們將新的顏色設為current_value,並將count重置為 1。
- 遍歷完一行後,添加最後一對count 和current_value。將row_compressed添加到compressed_data,並繼續處理下一行。
- 遍歷完所有行之後,就得到了壓縮後的圖像數據compressed_data。
- 壓縮比率:最後,程式會計算原始圖像大小與壓縮檔案大小的比率,即壓縮比率。
留言
張貼留言