關於此實驗
繪製一張圖片,其中最小的方格以調色盤索引的形式儲存。變更解析度和色彩深度、檢視二進位碼,並比較未壓縮資料大小與簡單游程表示的大小。將精確的像素格線匯出為 PNG,看看影像資訊與實際檔案格式有何不同。
學習目標
- 將影像像素連結至數字調色盤索引。
- 根據尺寸和每像素位元數計算原始儲存量。
- 測試哪些排列適合使用游程編碼進行壓縮。
使用方法
- 1繪製一張 8×8 的圖片,並讀取像素內顯示的二進位調色盤碼。
- 2將每像素位元數從 3 改為 1。比較可用色彩和原始儲存量。
- 3比較一張空白圖片和一張帶有垂直條紋的圖片。保持尺寸和色深不變,並說明連續段數量。
- 4使用「復原」比較編輯內容,記錄測得的承載資料數量,然後匯出 PNG。
模型
假設
- 像素會逐列由左至右讀取,再由上至下讀取。每個像素都使用所選的固定位元數。
- RLE 模型會將每個連續段儲存為一個色彩索引和一個長度,各使用 ceil(log2(像素數 + 1)) 個位元。連續段可能會跨越列界限。
- 調色盤表、尺寸、檔案標頭和填充皆不計入承載資料數量。PNG 使用不同的壓縮方式,因此下載的檔案大小不一定等於這些數量。
在課堂上試試這個實驗
- Q1為什麼尺寸相同的兩張圖片可能需要不同大小的 RLE 承載資料?
- Q2為什麼寬度和高度都加倍時,原始儲存量會變成四倍?
常見問題
RLE 一定能讓圖片變小嗎?
不一定。色彩頻繁變化會產生許多連續段,所需位元數可能比原始點陣資料更多。
PNG 檔案為什麼會比顯示的酬載更大或更小?
檔案包含標頭並使用 PNG 壓縮,而此實驗計算的是刻意簡化的像素或 RLE 酬載。