作業說明:
附件中為三張利用將高度以色彩視覺化後的圖片。請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
操作環境:
Window10
Visual Studio 2019
Python3.8
Visual Studio 2019
Python3.8
OpenCV 4.5.1
程式說明:
Encoding:
1.用cv2.imread()讀取.bmp圖片
2.用cv2.split()切分成b,g,r通道
3.用flatten()將r,g,b轉成1D array
4.利用Run-Length編碼,計算連續出現的值,依序以[value , quantity]的方式存入list
5.分別將b,g,r的list串接起來且前五項存入長、寬、rgb list的長度
6.輸出list成img_compress.3345檔
Decoding:
1.open()讀取.3345檔
2.將b,g,r資訊分別存入list
3.利用Run-Length的方式解碼,value*quantity
4.np.array()將list轉成array並改為uint8
5.用reshape()將array轉成(height, width, channel)
6.用cv2.merge()將b,g,r合併成img
7.用cv2.imwrite()輸出圖片
執行結果:
壓縮率:
沒有留言:
張貼留言