作業說明:
請設計一個基於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.輸出計算結果
沒有留言:
張貼留言