2021年6月7日 星期一

s1071221 影像處理作業 6

 

一、作業說明:

請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)

二、使用環境:

作業系統 : windows10
編譯軟體: Visual Studio Code
使用語言: python 3.9.2/opencv 4.1.2/numpy-1.20.1
 
三、方法:

壓縮

1.   split()切分成r,g,b通道

2.  flatten()r,g,b轉成1維陣列

3.  使用RLE方式對BGR做壓縮

4.  將壓縮好的資料以{heightwidth{數量1,字元1}{數量2,字元2}...}的方式儲存。

解壓縮

1.  讀取heightwidthBGR資料

2.  np.array()list轉換成uint8存入array

3.  reshape()array轉成(height, width, channel)

4.  merge()r,g,b合併成圖片


四、執行結果:



原圖:       





解壓縮率100%-(8535968/14665254*100%)=42%




原圖:







解壓縮還原:




解壓縮率100%(14234312/14665254*100%)=4%



原圖:








解壓縮還原:





解壓縮率 100%-(8153360/14665254*100%)=45%


平均壓縮率:(42% + 4% + 45%)/3 = 30%


沒有留言:

張貼留言