s1083319 作業6

題目敘述

 

附件中為三張利用將晶片高度以色彩視覺化後的圖片。

請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。

部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率

(compression ratio)

 

開發環境

l   Windows 11

l   Visual Studio Code

l   Python 3.11

l   OpenCV 4.7.0.72

 

Import

 

l   cv2

l   os

l   PIL Image

 

功能說明

 

1. 讀取影像

bmp_image = Image.open(image_path)

src = list(bmp_image.getdata())

 

2. 計算原圖長寬

imgSize1 = bmp_image.size[0] * bmp_image.size[1]

 

3. 切割BGR Channel到另一張img

splitBGR2IMG()#自訂

方法:

 

原圖:

255

28

0

255

28

0

255

28

0

255

27

0

255

27

0

255

27

0

 

        切割完:

255

255

255

255

255

255

28

28

28

26

26

26

0

0

0

0

0

0

 

4. RLE的方式壓縮BMP圖像

前後一樣count++

前後不同就存入(pixel, count)

 

5. 寫入RLE圖像

with open(output_file, "w") as file:

    for pixel, count in imgEncoded:

        file.write(f"{pixel},{count}\n")

 

6. 計算並印出壓縮率

        先讀取

original_size = os.path.getsize("")

compressed_size = os.path.getsize("")

後計算

ratio = (original_size / compressed_size) * 100

 

執行結果

Hw06

img1.jpg

原圖


 

壓縮後

 

img2.jpg

原圖

 

壓縮後


img3.jpg

原圖


壓縮後


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1