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. 依序分成R、G、B三通道,並使用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:
留言
張貼留言