1. 作業說明:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
2.
作業環境、語言:
l Python3.9
l OpenCV4.5.1
l Windows10
l Visual Studio Code
3.
實作過程:
RLE壓縮:
(1)
先讀入bmp圖檔,先read head出來並且使用struct.unpack得到長、寬
(2)
將剩餘的data read出來,用np.reshape成numpy格式
(3)
接著對r、g、b三個通道分別進行RLE的壓縮,將資料放進對應的list中
(4)
將三個list以及長寬在append新的list,寫成1504的格式檔案
RLE解壓縮:
(1)
將1504的檔案讀入
(2)
取出前面的長寬,並且用設計RLE的方式,反過來取回原本的RGB資料
(3)
創建出一個空白的np 2D array,再把RGB值填入
(4) 圖片以1504.bmp重新輸出
解壓縮還原的bmp檔案
Img1.1504.bmp(解壓縮後還原圖)
解壓縮還原後的bmp檔
Img2.1504.bmp(解壓縮後)
解壓縮還原後的bmp檔
Img3.1504.bmp(解壓縮後)
平均壓縮率:(2.45+1.42+2.67)/3=2.18
沒有留言:
張貼留言