一、 作業說明
基於Run-Length的壓縮,對圖檔作無失真壓縮後儲存成新檔案
基於Run-Length的壓縮,對圖檔作無失真壓縮後儲存成新檔案
二、 作業環境
- MacOS Monterey 12.2
- PyCharm 2019.3.3
- Python 3.8
- OpenCV 4.5.5
三、 實作功能與方法
- Encode
基於Run-Length的壓縮,對圖檔作無失真壓縮後儲存成新檔案
使用cv2.imread()讀取圖片並利用cv2.split()將圖像分成B, G, R三個二維陣列
使用flatten()將二維轉成一維
分別進行RLE編碼存入npz檔案中
- 將原始[0, 0, 0, 255,255,255]編碼成[3, 3]與[0, 255]分別代表連續個數與像素之值
- 三通道編碼之值append()使用np.savez("image",compress_array)得到壓縮檔
利用原始圖檔數據長度與壓縮後編碼長度,計算圖片的壓縮率及平均壓縮率
- Decode
使用file.open()和file.read()讀取壓縮檔(.npz)
進行RLE解碼,將相對應之值放入一維陣列,得到R, G, B通道解碼
分別使用reshape(一維陣列, (w, h))將各通道資料轉成二維
使用np.dstack()將B, G, R通道合併,得到無失真壓縮解碼圖(.bmp)
沒有留言:
張貼留言