作業說明:
附件中為三張利用將高度以色彩視覺化後的圖片。請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。
開發環境:
Window 10、Anaconda Navigator 2.0.1、Spyder 5.0.0、OpenCV 4.0.1
程式說明:
rle_輸出.py:
- 用imread()讀取圖片
- 以 split()切分成r,g,b通道
- 用flatten()將r,g,b轉成1維陣列
- 利用Run-Length計算,依序以(數值,個數)的方式存入list
- 分別將r,g,b的list各自串接,存成.dat檔。
rle_還原.py:
- 以opem()讀取.dat檔
- 將r,g,b資訊存入list
- 利用Run-Length計算解碼還原
- 以np.array()將list轉換成uint8存入array
- 用reshape()將array轉成(height, width, channel)
- 用merge()將r,g,b合併成圖片
- 以imwrite()將結果輸出。
程式執行畫面及結果:
Img1壓縮率:7.7/13.9*100% = 55.40%
原圖
壓縮後的圖
Img2壓縮率:13.1/13.9*100% = 94.24%
原圖
壓縮後的圖
Img3壓縮率:7.14/13.9*100% = 51.37%
原圖
壓縮後的圖
沒有留言:
張貼留言