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

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1