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方式對B,G,R做壓縮

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

解壓縮:

1.  讀取height,width和B,G,R資料

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%


沒有留言:

張貼留言