2022年5月30日 星期一

s1081516 作業6

 作業說明:

附件中為三張利用將晶片高度以色彩視覺化後的圖片。
請設計一個基於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)

執行結果:

原圖、壓縮檔、還原後的圖片









沒有留言:

張貼留言