s1093338 Homework #5

 1122 Digital Image Processing Assignment #5

學號:1093338    姓名:簡毓臻

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

專案目標:

  撰寫一個程式來基於Run-Length的 壓縮方法,對圖檔作無失真壓縮後儲存成新檔案,並計算三張圖的平均壓縮率(compression ratio)。

開發環境:

  • 用的作業系統:Windows
  • 開發環境:VScode
  • 用的套件:numpy, PIL
  • 程式語言:Python 3.12.0
程式架構與功能說明:
  • 讀入要壓縮的檔案及檔案大小
  • 將原始圖片分成 R、G、B三個通道,並加起三個通道的 size 以獲得原始圖片的 size
  • 壓縮方法:使用 Run-Length Encoding (RLE),是將連續出現的相同數據值替換為一個數據值和其出現的次數
    • channel.flatten() 將通道中的像素數據變成為一維數組
    • 遍歷像素數據中的每個像素,從第二個像素開始(因為第一個像素已經作為 prev_pixel 處理過了)
    • 如果當前像素與前一個像素相同,則增加計數器 count,直到最後一個像素
    • 儲存通道的 value 及 count,並將其寫成 bin 檔
    • 計算三個通道各自的 size ,並加起三個通道的 size 以獲得壓縮後的圖片的 size
    • 計算壓縮率
    • 將三個通道 merge 成一張圖片(decode)
    • 計算三張圖片的壓縮率
成果展示與討論:
  壓縮後圖片無失真。
  • img1.bmp 及壓縮後再解壓縮圖片



  • img2.bmp 及壓縮後再解壓縮圖片



  • img3.bmp 及壓縮後再解壓縮圖片


  • 壓縮率















留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6