2022年6月3日 星期五

s1073318 作業6

 一、 作業說明

請設計一個基於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

沒有留言:

張貼留言