s1081515 作業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(RL)
4.最後將其輸出到同一個.dat檔中,開頭會列出該圖的長寬(pixel) 每一個 channel的資訊都分別用"end"做區隔
Decode:
1.將壓縮後的.dat檔讀入
2.將每個channel中的資訊個別存取
3.Mat一張新的圖片並將讀取的資訊依序填入每個pixel得到沒有失 真的圖像
計算壓縮率:
1.使用stat()函式來取得檔案的資訊
2.計算 壓縮率 = 原圖大小/壓縮檔大小
3.輸出計算結果
執行結果:
解壓縮後得到的結果
沒有留言:
張貼留言