ランレングス:連続を回数で潰す
白黒ビット列をクリックでトグルすると、連続部分が (値, 回数) に置き換わり圧縮後の長さが変わります。連続が多いほど縮み、バラバラだと膨張します。
32
↓ 下のマスをクリックすると 0/1 が切り替わります。連続の切れ目が増えると圧縮後が長くなります。
元の長さ(ビット)
—
ラン数(連続の塊)
—
圧縮後の長さ
—
圧縮率
—
上:元のビット列(クリックで反転)/下:ランレングス符号 (値×回数)
ランレングス符号化(RLE)は、同じ値が連続する部分を「その値が何回続くか」という回数に置き換える圧縮法です。
たとえば
逆に
たとえば
0000011111(10ビット)は「0が5回、1が5回」なので (0,5)(1,5) と表せます。連続が長いほど大きく縮みます。逆に
0101010101 のように毎回切り替わると、塊(ラン)が増えてしまい、回数の情報を持つぶんかえって長くなることもあります。マスをクリックして、連続と圧縮後の長さの関係を確かめましょう。
いま何が起きている?
ここがポイント
- 連続を回数に置換 ── 同じ値の並びを
(値, 回数)1組にまとめるのが RLE。 - ラン数が鍵 ── 連続の塊(ラン)が少ないほど圧縮後は短く、多いほど長くなる。
- 膨張もありうる ── 縞模様のように毎回切り替わると、塊が増えて元より長くなる(可逆圧縮に万能はない)。
- 得意なデータ ── 白地に少しの図形、FAXやアイコンなど「同じ値が長く続く」データに強い。