作業說明:
請設計一個基於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()來讀取檔案資訊。
- 計算壓縮率 = 原圖大小/壓縮檔大小
執行結果:
解壓縮後輸出的圖片:
壓縮前後檔案內容比較:
沒有留言:
張貼留言