作業說明
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
操作環境
Windows 10
Python 3.8.5
openCV 4.5.1
matplotlib 3.4.1
實作方法
RLE Encode
- 讀取照片
- 利用split將RGB通道各別取出
- 以RLE方式壓縮,分別處理每一個通道裡面的值 (e.g. 0002335 就要換成 30122315 )
- 將圖片的圖片大小、長、寬、channel及壓縮結果合併為一個list
- 將一維的list寫入bin file中
RLE Decode
- 讀檔
- 將檔案復原成一個一維的list
- 將list的資料還原成圖片大小、長、寬、channel及R通道、G通道、B通道等資料
- 利用merge合併RGB通道
執行結果
img1.bmp解壓縮還原後
img1壓縮率 = (4.08/13.9)*100% = 29.35%
img2.bmp解壓縮還原後
img2壓縮率 = (6.80/13.9)*100% = 48.92%
img3.bmp解壓縮還原後
沒有留言:
張貼留言