一、 作業說明
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
二、 作業環境
Windows 10
OpenCV 4.5.5
Visual Studio 2017
三、 實作方法
Encode:
1. 讀取圖片,使用split()得到圖片的三個channel。
2. 分別對三個channel處理,把pixel value轉換成(number of pixel, value of pixel),(0,0)為end of line、(0,1)為end of image。
3. 新增檔案img1.dat,寫入number of rows、number of cols、Run Length Encode
data。
Encode function |
Decode:
1. 讀取img1.dat,讀取number of rows、number of cols並建一個cv::Mat::zeros(row, col, CV_8UC3);
2.
讀取Run Length Encode
data依照資料assign value。
3.
顯示decode後圖片。
Decode function |
Compression rate:
Img1: 14322/6068=2.36
Img2: 14322/10254=1.40
Img3: 14322/5579=2.57
Avg: (2.36+1.40+2.57)/3=2.11
四、執行結果
Img1 |
Img1 decoded |
Img2 |
Img2 decoded |
Img3 |
Img3 decoded |
File size compare |
沒有留言:
張貼留言