Operator Library: Prototype
![]() |
免責聲明 |
|---|---|
|
函式庫:Prototype 此模組屬於 Prototype 函式庫的一部分。 目前仍處於極為初步的階段,未來可能會進行大幅修改,甚至被移除。 因此,此模組絕不可用於正式設計。 其納入僅供測試之用。 |
PackbitsRLE 運算子會針對輸入鏈路 I 上的影像串流,使用 packbits 演算法進行跑長編碼(RLE)壓縮。 Packbits 最初由 Apple 提出,是可用於 TIFF 檔案無損壓縮的 RLE 壓縮演算法之一。
Packbits 演算法
柵格影像檔案由一個標頭(包含影像尺寸、色彩深度等資訊) 以及描述每個像素顏色的資料所組成。 這些資料是以順序方式寫入的,也就是說,像素顏色資訊必須從左至右、 從上至下,依像素行來解讀。
在未壓縮模式下,n 個相同顏色的相鄰像素的色彩資訊會被寫入 n 次。這會造成冗餘。
範例:

該圖示為一張 4 像素 × 4 像素的黑白圖像。 在未壓縮格式下,像素的表示方式如下(B=黑色,W=白色): BBWWWBBBBBBWWWWW 這種冗餘性可透過 packbits 壓縮技術加以減少。
packbits 資料流由一組封包組成,每個封包包含一個一位元組的標頭,後接資料。 該標頭為一個帶符號的位元組。
該資料以一個位元組來描述每個像素。若標頭包含一個值 n(範圍為 -127 至 -1),則標頭後面的那個位元組 會在解壓縮後的輸出中重複出現 -n+1 次。 因此,冗餘資訊(相同的像素顏色)僅儲存一次,並搭配一個計數器(標頭)。 例如,BBBBBB 將被儲存為 -6B。 當出現第一個不同顏色的像素時,便會產生一個新的標頭。
若標頭包含值 n {0 至 127},則標頭後接的 n+1 個位元組將保持未壓縮狀態(原樣複製)。
可壓縮的最長像素序列由 128 位元組組成。
經過 packbits 壓縮後,上方的範例圖像(BBWWWBBBBBBWWWWW)變成 -2B-3W-6B-5W,也就是說, 只需 8 個符號(位元組)即可表示,而非 16 個。
![]() |
有效性 |
|---|---|
|
Packbits 適用於灰階、色盤及二值圖像。 相同顏色的連續像素數量越多,該運算子就能越有效地壓縮資料。 二值圖像(例如黑白圖像)可獲得最佳的壓縮效果。 (相當簡單的)packbits 演算法的優勢在於其速度,以及 對記憶體(256 位元組)和處理能力的消耗極為有限。 |

![[注意]](../common/images/admon/caution.png)
![[重要]](../common/images/admon/important.png)

上一頁

