s1091506 作業6
題目:
附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。
開發環境:
Window 11 + Python 3.10 + Vscode
執行方法:
用Run-Length進行壓縮
def run_length_encode(data):
encoded_data = [] # 儲存壓縮後的資料
count = 1 # 目前的重複計數器
for i in range(1, len(data)):
if data[i] == data[i-1]: # 若與前一個元素相同,增加重複計數器
count += 1
else:
encoded_data.append((count, data[i-1])) # 若不同,將前一個元素及計數器加入壓縮資料
count = 1 # 重設重複計數器
encoded_data.append((count, data[-1])) # 加入最後一個元素及計數器
return encoded_data
執行結果:
下面為壓縮前後對照圖
壓縮率=2.7618
壓縮率=1.6590
壓縮率=2.8970
平均壓縮率=2.2900
留言
張貼留言