s1081414 作業6
主題:Run-Length Based Image Compression 練習
附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。
開發環境:
- Windows 10
- Visual Studio Code
- python 3.9.7
- OpenCV 4.7.0
說明:
Run-Length壓縮是一種無損壓縮算法,它基於將連續重複的像素值序列編碼成一個像素值和重複次數的對應關係,以減少數據的重複性。當需要還原圖像時,可以根據這個編碼關係進行解碼,還原出原始圖像。
程式中的 encode_channel_data
函式將每個顏色通道的像素數據進行編碼,返回編碼後的數據。decode_channel_data
函式則用於解碼編碼數據,還原出原始的像素數據。
在 compress_image
函式中,圖像的紅、綠、藍三個通道的像素數據被分割並分別進行編碼。然後,將編碼後的數據進行解碼,得到還原的像素數據。接著,這些數據被重新組合成一個三維數組,用於生成還原的圖像。最後,還原的圖像被保存並計算壓縮比例。
程式運行時,使用者需要提供輸入圖像的路徑 image_in
和輸出圖像的路徑 image_out
。這段程式中,有三個圖像進行壓縮,計算了每個圖像的壓縮比例,並計算了平均壓縮比例。
總結來說,這段程式實現了基於Run-Length的圖像壓縮方法,將圖像的像素數據進行編碼,減少數據的重複性,從而達到壓縮圖像的效果。
留言
張貼留言