s1083350 作業6

 

主題  Run-Length Based Image Compression 練習

一、題目說明

附件中為三張利用將晶片高度以色彩視覺化後的圖片。
請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率
(compression ratio)。

二、開發環境

OS:Windows 10
Editor:Visual Studio Code
Language:Python 3.9.13 
Package:OpenCV - 4.6.0


三、程式碼說明

    以cv2.imread()讀入圖片
   並以 cv2.split() 將其分成r,g,b三通道







Encoding(RLE) 對三通道分別編碼。
RLE的概念是,假設有一個像素序列 [255, 255, 255, 0, 0, 0, 0, 0],RLE壓縮的結果可能是 [(3, 255), (5, 0)],其中 (3, 255) 表示有3個連續的像素值255,(5, 0) 表示有5個連續的像素值0,以這編碼邏輯來將圖像壓縮成一串數碼。

















接著是RLE解碼(解壓縮),即照著編碼邏輯還原出圖像












壓縮後的編碼我將它存成文字檔










最後是三通道分別解碼後需要再用cv2.merge() 合併三通道以還原圖像






下圖由左而右為
img1的資訊及其內容,Run-Length壓縮的文字檔,還原的img1圖像 


img1的壓縮率為 
14,665,254(Byte)/5,940,073(Byte) = 2.4688676 約等於247%

下圖由左而右為
img2的資訊及其內容,Run-Length壓縮的文字檔,還原的img2圖像 



img2的壓縮率為 14,665,254/10,230,745 = 1.4334493 約等於143%

下圖由左而右為
img3的資訊及其內容,Run-Length壓縮的文字檔,還原的img3圖像 



img3的壓縮率為  14,665,254/ 5,450,422 = 2.6906640 約等於 269%

平均壓縮率為 (247+143+269)/3 約等於220%


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6