s1101415 Homework #5

 1122 Digital Image Processing Assignment #5 報告


主題: Run-Length Based Image Compression影像壓縮練習

專案目標:

        使用Opencv函式庫及Python撰寫程式,利用Run-Length方法將圖片壓縮成.txt檔,再解壓縮檢查是否與原圖片相同。

發環境:Microsoft Windows 10, Visual Studio Code, OpenCV 4.9.0, Python3.12

 

程式架構與說明:

1.     專案內有一個資料夾image用來存放圖片,使用迴圈輪流讀進三張原始圖片,並輸出他們的檔案大小,及記錄其長寬,供解壓縮圖片時使用。

2. 依序分成RGB三通道,並使用faltten()將其轉換成一維,這樣更好計算。接著對三通道分別做解碼,將解碼後的內容存成.txt檔。儲存的格式是[次數 色值]為單位的長字串,若相同的色值連續出現,就將次數+1,直到色值變更,則重新從1開始計算。最後輸出壓縮後的.txt檔大小。

3. 讀取剛剛壓縮後的檔案,並進行解壓縮。先將壓縮後的檔案用空格分隔,以每兩個為一單位,第一個數字是次數,第二個是色值,解壓縮時要讓色值重複出現相應的次數。

4. 使用自定義函式,將解壓縮後的三個字串重新結合成與原先長寬相同的圖片輸出,圖片會儲存在output資料夾內。

5. 計算每張圖片的壓縮率 (Compression ratio),計算方式是原本的檔案大小除以壓縮後的檔案大小,然後輸出相應圖片的壓縮率。因為最後要呈現平均壓縮率,所以這邊在每次算完一張圖片後就會將值加入sum(有在前面設定初始值為0)。最後,將sum除以3來得到平均壓縮率。


成果展示與討論:

實作影片連結:https://www.youtube.com/watch?v=KSJILrFGF0A


壓縮值: 平均壓縮率約為2.1977


(以下圖片皆為原圖/解壓縮後圖片)

執行範例1

範例圖片:img1.bmp,壓縮率約為2.4689

 

執行範例2

範例圖片:img2.bmp,壓縮率約為1.4334

 

執行範例3

範例圖片:img3.bmp,壓縮率約為2.6907 

 






留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1