s1091403 作業6

主題: Run-Length Based Image Compression 練習

作業說明:

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



(平均壓縮率)



(壓縮檔)

開發環境:

Windows10

        Anaconda 3(22.9.0)

        Spyder 5.4.1

Python 3.9

Opencv(4.7.0)

Numpy(1.24.2)

 


程式片段(程式碼截圖在readme):

使用cv2.imread()輸入照片,接著進入Compression函式進行壓縮以及儲存壓縮檔。

Compression:

首先先透過cv2.split()取得三種顏色分別的數值(b,g,r),使用np.array()將其轉成array型態(np_b,np_g,np_r)並透過flitten()變成一維陣列(flt_b,flt_g,flt_r),接著分別進入run_length函式取得壓縮過後的array(res_b,res_g,res_r),再將其組合在一起(reslut)並儲存成txt檔。

run_length:

使用res儲存結果,先取得第一個數字存於temp中,透過count計算讀入該數字的數量,接下來每次讀入一個數字,若是與temp相同則count加一,若不同則把[count,temp]放入res中,temp變成當下的數字,count恢復成1

取得壓縮前後檔案大小並進入pr()函式中計算壓縮率並印出來,最後在計算平均壓縮率。       

pr:

        計算並印出及回傳壓縮率。


Demo影片: https://youtu.be/gDrkBWjGMrY

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6