2022年6月2日 星期四

s1081502 作業6

作業說明:

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

開發環境:

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

程式功能:

壓縮:

  • 將讀入的圖片透過split()分割成三個channel。
  • 再將三個channel在每個點的值,分別存放在b,g,r的三個vector中。
  • 之後再對b,g,r做Run-length encoding。
  • 最後將結果輸出到同一個.dat檔中,並在b,g,r中間用"next"做間隔。
解壓縮:
  • 將壓縮後的.dat檔讀入。
  • 將每個channel的資訊存下來。
  • 最後宣告一個新圖片,將存取的資訊放入每個pixel。
計算壓縮率:
  • 使用stat()來讀取檔案資訊。
  • 計算壓縮率 = 原圖大小/壓縮檔大小

執行結果:

解壓縮後輸出的圖片:




壓縮前後檔案內容比較:

壓縮率與平均壓縮率:

沒有留言:

張貼留言