作業說明:
附件中為三張利用將晶片高度以色彩視覺化後的圖片。
請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。
開發環境:
Windows
11
Anaconda
4.10.3
Python
3.9.7
numpy
1.20.3
opencv-python
4.5.5.62
程式說明:
encode.py
1.
讀入圖片分割成RGB 三個Chanel
2. 將分割後的Chanel變成一維,做Run-Length 壓縮,每組資料的儲存格式 => (值,長度)
type = np.uint8,如果長度 > 255,用多組資料儲存
3.
將壓縮後的資料(包含r,g,b三個chanel壓縮後的值以及原圖片的長寬(h,w))儲存成另一個檔案(.npz)
4. 輸出原圖片(.bmp)、壓縮後(.npz)的檔案大小以及壓縮率
- 若還有圖片要壓縮,重新執行步驟1~4
5.
輸出平均壓縮率
decode.py
1.
讀入壓縮檔(.npz)
2.
將r,g,b三個chanel各自解壓縮
3.
將2.的結果reshape成(h,w)
4.
把3的結果merge成圖片,並用astype(np.uint8)設定圖片格式
5.
產生透過壓縮檔產生的圖片(.bmp)
執行結果:
原圖、壓縮檔、還原後的圖片
沒有留言:
張貼留言