Operator PackbitsRLE

Operator Library: Prototype

[注意] 免責事項

Library: Prototype

このモジュールは Prototype ライブラリの一部です。 完全に暫定的な状態であり、大幅な変更や削除が行われる可能性があります。 そのため、本番設計にこのモジュールを使用しないでください。 テスト目的でのみ含まれています。

PackbitsRLE オペレーターは、パックビッツアルゴリズムを使用して、入力リンク I の画像ストリームのランレングス符号化圧縮(RLE)を実行します。 Packbits は最初に Apple によって導入されたもので、TIFF ファイルのロスレス圧縮に使用できる RLE 圧縮アルゴリズムの 1 つです。

Packbits アルゴリズム

ラスター画像ファイルは、ヘッダー(画像寸法、色深度などの情報を含む)と、各ピクセルの色を記述するデータで構成されています。 データは順番に書き込まれます。つまり、ピクセルの色情報は、左から右へ、上から下へ、ピクセル行として解釈される必要があります。

非圧縮モードでは、同じ色の n 個の隣接するピクセルの色情報が n 回書き込まれます。これにより冗長性が生じます。

例:

この図は、4×4 ピクセルの白黒画像を表しています。 非圧縮フォーマットでは、ピクセルは次のように表現されます(B=黒、W=白):BBWWWBBBBBBWWWWW この冗長性は、パックビッツ圧縮によって削減されます。

パックビッツデータストリームは、1 バイトのヘッダーとそれに続くデータで構成されるパケットで構成されます。 ヘッダーは符号付きバイトです。

データは各ピクセルを 1 バイトで記述します。ヘッダーに値 n(-127 ~ -1)が含まれている場合、ヘッダーの続くバイトは、展開された出力で -n+1 回繰り返されます。 したがって、冗長な情報(同一のピクセルカラー)は、Counter(ヘッダー)とともに 1 回保存されます。 たとえば、BBBBBB は -6B として保存されます。 別の色の最初のピクセルに対して、新しいヘッダーが生成されます。

ヘッダーに値 n(0 ~ 127)が含まれている場合、ヘッダーに続く n+1 バイトは非圧縮のまま(そのままコピー)になります。

圧縮できる最長のピクセルシリーズは 128 バイトです。

パックビッツで圧縮すると、上記のサンプル画像(BBWWWBBBBBBWWWWW)は -2B-3W-6B-5W になり、16 シンボル(バイト)ではなく 8 シンボル(バイト)で表現できるようになります。

[重要] 効率性

Packbits は、グレースケール、パレット、および白黒画像に使用されます。 連続する同一色のピクセル数が多いほど、オペレーターはより効率的にデータを圧縮できます。 最適な圧縮結果は、白黒画像で得られます。

(非常にシンプルな)パックビッツアルゴリズムの利点は、その速度と、Memory(256 バイト)および処理能力の要求が極めて低いことにあります。

I/O Property

Property 値
オペレータータイプ M
Input Link I, data input
Output Link O, data output

サポートされているリンクフォーマット

Link Parameter Input Link I Output Link O
Bit Width [4, 12] as I
Arithmetic {unsigned, signed} as I
Parallelism 1 as I
Kernel Columns any as I
Kernel Rows any as I
Img Protocol VALT_IMAGE2D as I
Color Format any as I
Color Flavor any as I
Max. Img Width any as I1
Max. Img Height any as I

1

出力画像の幅は 2^31 - 1 を超えてはなりません。

パラメーター

None

使用例

PackbitsRLE オペレータの使用方法は、以下の例に示されています。