大容量計測データの実時間圧縮技法??

2004年5月27日(木)NIFS

奥村晴彦(三重大学)

なぜ圧縮?

いつの時代も CPU は I/O より速い

圧縮の種類

情報理論

Shannon (1948): A Mathematical Theory of Communication

m 個の文字がそれぞれ出現確率 p1, p2, …, pm で独立に現れるとすると,平均して
(エントロピー)H = Σ pi log2 (1 / pi)
ビット/文字より縮めることはできない。

つまり,2k 回に1回出現する文字は,k ビットで符号化するのが最適である(可変長符号化)

LZ77の仲間

Jacob Ziv and Abraham Lempel, A universal algorithm for sequential data compression. IEEE Transactions on Information Theory, IT-23(3), 337-343, 1977.

一つのインプリメント:

「マハリクマハリタ」を次のように符号化する(文字を8ビットと仮定)

フラグ
(1ビット)
文字
(8ビット)
戻り距離長さ
0  
0  
0  
0  
1 43
0  

LHA,ZIP,gzipのアルゴリズム(奥村,1988〜1989):↑を↓のように整理する。

フラグ
(1ビット)
文字または長さ
(8ビット)
戻り距離
(≧12ビット)
0 
0 
0 
0 
134
0 
9ビット

可変長符号化
12ビット超

可変長符号化

gzipのアルゴリズムをハードウェア化したもの もある(PCI,32MB/s)。 Webのトラフィック(テキストベース,繰返し多)などには非常に効果があるが,これを単にADC出力に接続するのは不適

画像・信号圧縮

画像の例: Mona Lisa

DCT

予測誤差符号化

Golomb

Wavelet

浮動小数点データの圧縮

浮動小数で予測誤差(例:差分)を求めても桁数は減らない

Lossy → 整数化(量子化)してから上の方法を使う

Lossless → ビットパターンが同じ整数に変換する

たとえば IEEE 754 single は

                                                               
1823

指数仮数

このビットパターンを24ビット整数と見ても,大小関係は元の浮動小数点と同じ。

                                                               
MSB ← 32ビット → LSB

[2006-06-25追記] 説明が不十分でしたが,負数の場合は符号ビット以外を反転させます。これを符号付き整数と見れば,大小関係が保たれ,しかも絶対値が同じ正負の数を(符号付き整数として)加えれば 0 になります。

圧縮テクニック

似たデータをまとめる

例: データベースの column-wise compression

XML では XMill

モデル化し,予測誤差に変換


奥村晴彦

Last modified: 2006-06-25 21:04:50