s1091550 作業6

 

題目敘述:

附件中為三張利用將晶片高度以色彩視覺化後的圖片。 
請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。

開發環境:

  • Windows 10
  • Visual Studio 2019 C++
  • OpenCV 4.2.0

說明

  • 壓縮

    1. imread()讀入影像
    2. 以split()切分b,g,r三通道
    3. 用reshape()分別對b,g,r三通道進行轉換,存入二維vector1
    4. 使用RLE對b,g,r做運算
    5. 將資料以pair<int,int>的型態存入二維vector2
      • p.first = 數值
      • p.second = 數量
    6. 將圖片之長、寬及vector2資料輸出成txt檔做儲存
txt檔

  • 解壓縮
    1. 讀取txt檔資料
    2. 將b,g,r三通道值存入二維vector3
    3. img.at<Vec3b>(x, y) = Vec3b(b值, g值, r值)將每個點賦值
    4. imshow()顯示解壓縮後圖像

執行結果:

  • 圖像

img1 原圖 / 解壓縮後圖片
img2 原圖 / 解壓縮後圖片
img3 原圖 / 解壓縮後圖片
  • 壓縮率compression ratio
img1, img2, img3 原先檔案大小為14,322KB
經RLE壓縮後分別為5,611KB \ 8,356KB \ 5,214KB

img1: (14322 / 5611) => 2.55248

img2(14322 / 8356) => 1.71397

img3(14322 / 5214) => 2.74683

平均(2.55248+1.71397+2.74683) / 3 => 2.33776

 
















留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1