2022年5月31日 星期二

s1081543 作業6

 作業說明:

  • 請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案,並計算三張圖的平均壓縮率

開發環境:

  •       Window10   
  •       Microsoft Visual Studio 2019
  •       C++
  •       OpenCv 4.5.5

程式說明:

    Encode:

        1.將讀入的圖片使用split()把三個channel分離並

           存入vector中

        2.接下來將分離出的三個cahnnel從二維降成一

           維,也將其分別存入不同vector

        3.對每個一維的陣列個別做Run-length encoding

                ex:11122333 ----> 3,1,2,2,3,3

        4.最後將其輸出到同一個.dat檔中,每一個 

           channel的資訊分別用"end"做區隔

    Decode:

        1.將壓縮後的.dat檔讀入

        2.將每個channel的資訊個別存取

        3.Mat一張新的圖片並將讀取的資訊依序填入每個

           pixel得到無失真的圖像

    計算壓縮率:

        1.使用stat()來取的檔案的資訊

        2.計算 壓縮率 = 原圖大小/壓縮檔大小

        3.輸出計算結果

               

執行結果:

       解壓縮之結果

(因圖片太大張有使用resize()調整輸出大小)






壓縮率



檔案資訊


.dat檔內容





沒有留言:

張貼留言