作業說明
請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。
作業環境
Windows 10
anaconda
python 3.8.5
OpenCV 4.5.1
實作方法
壓縮
1. 讀入彩色圖片後用split()把RGB分開
2. 將二維的RGB用flatten()轉為一維
3. 在一維的RGB後加上圖片大小的資料後,用RLE演算法做壓縮,得到三個陣列
4.將三個陣列以savez()壓縮成 .npz檔
解壓縮
1.用load()讀入 .npz檔
2.對RGB做RLE解壓縮得到三個一維資料
3.將一維資料後的圖片大小移除後,用reshape()還原成二維
4.用merge()將二維RGB合併成三維彩色圖檔
結果
壓縮前與壓縮後:
第一張:
第二張:
第三張:
壓縮率:
第三張圖壓縮率為:7963/14322=55.5%
平均壓縮率為70.2%
沒有留言:
張貼留言