図1は,8×8画素の白黒の画像例である。この図に対して,白を0,黒を1として表すと,図2に示すように8ビットのビット列が8行あるディジタルデータとして,画像データを表現することができる。 文字データしか送れない通信で画像データを送ろうとする場合,画像データを文字データであるかのように変換して通信する必要がある。 また,文字データと比べてデータ量の大きい画像データを効率よく通信するために,データを圧縮して送るという工夫がなされる。図2のビット列を左上から順に見ていくと,0が10個続き,次に1が34個続き,その次に0が20個続いていることが分かる。この同じ値が続く個数のことをランレングスという。これを利用して画像データを圧縮する方法を考える。 次に示す画像データの表現方法は,画像データの情報量を圧縮することを目的とする変換である。図2に示す画像データは,何ビットで表現されるか。 〔画像データの表現方法〕 (1) 画像データをランレングスで表現し,それらの値を2進数で表現する。 (2) ランレングスの値を2進数で表現したときの値 n に対して,その n の桁数が m のとき,次の形式で,一つのランレングスを表現する。
| ①桁数の情報 | ②区切りの情報 | ③ランレングスの情報 |
|---|
①桁数の情報:(m-2)ビットの連続する1で表現。なお,m が0~2の場合は,“0”と表現 ②区切りの情報:区切りは“0”で表現 ③ランレングスの情報:n 例えば,ランレングスの値が20のとき,それを2進数で表現したときの値 n は“10100”となり,その桁数 m は5となる。したがって,m が5のとき,①は(5-2)ビットの連続する1なので“111”となり,これに区切りの“0”と n をつなげ,結果は“111010100”となる。 (3) (2)で求めた形式の値をつなげていく。このとき,画像データは必ず白から始まるものとし,もし,画像データが黒から始まる場合は,ランレングス0の白があるとして先頭に“000”を補う。