2021年6月4日 星期五

s1061420 影像處理作業 6

 作業說明:

附件中為三張利用將高度以色彩視覺化後的圖片。

請設計一個基於Run-Length的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。

部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。

開發環境:

l   Windows 10

l   Visual Studio 2019

l   Python 3.8

l   OpenCV 4.5.1

程式說明:

    壓縮檔案:

1. 使用 cv2.split() 將各個 rgb 通道分離

2. 分別將各個通道 rgb 值用 Run-length encoding 轉成一維 uint8 陣列,以第一個為 rgb 值,第二個為出現次數的方式儲存

3. 若同一個數值數量超過 uint8 可以儲存的數量,則分為多個陣列儲存

4. 將步驟2. 得到的陣列以及圖片的寬高存入檔案,並命名為:圖片名字 + _compress.s1061420

    解壓縮檔案:

1. 得到各個 rgb 通道的值,並 reshape 為二維陣列

2. 將 rgb 通道 merge 為圖片

3. 將圖片存為:圖片名字 + _decompress.bmp

輸出結果:










        img1原圖


   








        img1 解壓縮後的圖  img1_decompress.bmp










        img2 原圖










         img2 解壓縮後的圖  img2_decompress.bmp










        img3原圖










         img3 解壓縮後的圖   img3_decompress.bmp


平均壓縮率 = ( 13.9 / 2.10 + 13.9 / 3.46 + 13.9 / 2.00 ) / 3 = 5.86






        img1比較  


由左至右分別為:原圖 -> 壓縮檔 -> 解壓縮後的圖






        img2比較






    

        img3比較

沒有留言:

張貼留言