一、 作業說明
請設計一個基於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 | 









沒有留言:
張貼留言