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 rowsnumber of colsRun Length Encode data

Encode function


Decode:

1.      讀取img1.dat,讀取number of rowsnumber 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

沒有留言:

張貼留言