s1091707 作業6

 作業說明:

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

執行環境:

  • windows11
  • Opencv 4.6.0
  • Python 3.10.2
  • Vscode
實作方法:
    將原本圖檔的資訊,如:寬高、bgr三顏色通道的資料用run-length壓縮儲存至成               容量較小的txt檔。
  • 壓縮: 
  1. 用shape紀錄寬高,再存進txt裡
  2. 用split分割出bgr三通道顏色向量資訊
  3. 將長寬大小的二維bgr向量flatten成一維,之後比較好計算
  4. 開始run-length,將連續同樣像素出現次數以及該像素值存進txt

    程式實作方式

    txt壓縮檔裡儲存的資訊

  • 從txt檔還原成圖檔:
  1. 先將txt檔中紀錄的連續同樣像素出現次數用for迴圈遞迴,再append像素值至新的list裡
  2. 利用txt檔中的第1、2row長寬資訊,將新list reshape回二維
  3. 再用merge函式還原成圖片檔


  • 計算壓縮率:
用os標準函式庫內建函數getsize得到檔案大小計算壓縮率,最後再三個相加除三算平均


執行結果:
  1. 三張圖及平均壓縮率: 



    留言

    這個網誌中的熱門文章

    rzwang Homework #1

    s1093350 Homework #2

    s1061637 作業6