s1093345 作業6

    

 作業說明

  • 主題:Run-Length Based Image Compression 練習
  • 附件中為三張利用將晶片高度色彩視覺化後的圖片。請設計一個基於Run Length 的壓縮方法,對圖檔座無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。


圖一、Input Image

開發環境

  • macOS 13.2.1
  • Visual Studio Code 1.77.3
  • Python 3.8.3
  • OpenCV 4.6.0
  • Numpy 1.21.5

實作過程

  • 分離圖片的 RGB 通道
    • 使用 image.split() 將計算輸入圖片 image 分離 R, G, B 三個通道
    • 透過 np.array() 轉換成 numpy 的數據,並透過 flatten() 展開唯一維數據。
  • Run-Length 的編碼
    • 簡單說明一下 Run-Length 的編碼方式,假設輸入資料為 [1, 1, 1, 2, 2 ,3 ,3, 3, 3],進行編碼後就變為 [3, 1, 2, 2 ,4, 3],編碼後的數據顯示連續出現的數值及對應的數值。
    • 我這邊的實作方式就是透過 for 迴圈去判斷是否有連續且重複的數值出現,去每一個R, G, B的通道進行 Run-Length 的編碼。
    • 最終我將我壓縮過後的編碼存成 encoded_image.txt,以方便閱讀。存如的資料有原先圖片的 width, height, encoded Rencoded Gencoded B
圖二 、img1 壓縮後的編碼結果

圖三 、img2 壓縮後的編碼結果

圖四 、img3 壓縮後的編碼結果

    • img1, img2, img3 原先檔案大小為 14.32MB,經上述方法可分別得到 7.88MB, 13.46MB, 7.31MB 的大小。
  • 壓縮後還原圖像
      • 將先前的壓縮過後的3個通道 R, G, B 編碼數據,把它擴展回去。假設壓縮後的數據 [3, 1, 2, 2 ,4, 3],就將她擴展還原為原本的數據 [1, 1, 1, 2, 2 ,3 ,3, 3, 3]。
      • 透過 Image.merge() 義將先前解碼過後的 R, G, B 通道的數據合併為一個圖像,並使用 save() 儲存圖片。

                      執行結果

                      • 壓縮率以及壓縮大小

                      o   圖片讀取:程式碼中的 image_files = [ 'img1.bmp', 'img2.bmp', 'img3.bmp' ]更改所需讀取圖片路徑。

                      o   執行程式:python 1093345_hw5

                      平均壓縮率:1.6127038153077617



                      圖五 、個別壓縮率及平均壓縮率輸出解果



                      圖六 、個別檔案壓縮後輸出解果
                        • 壓縮還原之圖像(無失真,還原後檔案大小與原先一致)

                        o   圖片讀取:程式碼中的 image_files = [ 'img1.bmp', 'img2.bmp', 'img3.bmp' ]更改所需讀取圖片路徑。

                        o   執行程式:python 1093345_hw5


                        o   圖片1:

                        壓縮率:1.8163199790739013


                        圖七 、img1 還原圖像之輸出結果

                        o   圖片2:

                        壓縮率:1.063513632876747


                        圖八 、img2 還原圖像之輸出結果

                        o   圖片3:

                        壓縮率:1.9582778339726192




                        圖九 、img3 還原圖像之輸出結果



                        影片Demo


                        影片、程式Demo




                        留言

                        這個網誌中的熱門文章

                        rzwang Homework #1

                        s1093350 Homework #2

                        s1061637 作業6