JPH0969784A - データ圧縮制御方法 - Google Patents
データ圧縮制御方法Info
- Publication number
- JPH0969784A JPH0969784A JP22347995A JP22347995A JPH0969784A JP H0969784 A JPH0969784 A JP H0969784A JP 22347995 A JP22347995 A JP 22347995A JP 22347995 A JP22347995 A JP 22347995A JP H0969784 A JPH0969784 A JP H0969784A
- Authority
- JP
- Japan
- Prior art keywords
- block
- compression
- cluster
- data
- compressed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【目的】 適応的データ圧縮方式において、一定の伝搬
制御能力を有しかつ優れた圧縮率を得られるデータ圧縮
制御方法を提供する。 【構成】 圧縮するブロックがクラスタの先頭であるか
どうかを判断する(S1)。クラスタの先頭ブロックで
あったら圧縮に使用するモデルの初期状態は予め決めら
れた状態に設定する(S2)。クラスタの先頭ブロック
でない場合には、そのブロックの属するクラスタの先頭
ブロックの圧縮を終了した状態にモデルを設定する(S
3)。モデルの初期状態が決まったら、各ブロックの圧
縮を行う(S4)。圧縮をする仮定でモデルは順次更新
されていく。次のブロックに移行する前に、圧縮するデ
ータがまだ存在するのかどうかを確認する(S5)。も
し存在する場合には次のブロックの圧縮に移行し(S
6)、存在しない場合は圧縮を終了する。
制御能力を有しかつ優れた圧縮率を得られるデータ圧縮
制御方法を提供する。 【構成】 圧縮するブロックがクラスタの先頭であるか
どうかを判断する(S1)。クラスタの先頭ブロックで
あったら圧縮に使用するモデルの初期状態は予め決めら
れた状態に設定する(S2)。クラスタの先頭ブロック
でない場合には、そのブロックの属するクラスタの先頭
ブロックの圧縮を終了した状態にモデルを設定する(S
3)。モデルの初期状態が決まったら、各ブロックの圧
縮を行う(S4)。圧縮をする仮定でモデルは順次更新
されていく。次のブロックに移行する前に、圧縮するデ
ータがまだ存在するのかどうかを確認する(S5)。も
し存在する場合には次のブロックの圧縮に移行し(S
6)、存在しない場合は圧縮を終了する。
Description
【0001】
【発明の属する技術分野】本発明はデータ圧縮処理の制
御方法に関する。
御方法に関する。
【0002】
【従来の技術】データを効率良く保管、通信するために
はデータ圧縮処理が有効である。データ圧縮はデータの
統計的性質を利用することにより達成される。このデー
タの統計的性質を保持するデータ構造を“モデル”と呼
ぶ。適応的データ圧縮方式ではこのモデルを圧縮が進む
につれて動的に更新していく。圧縮処理の進行とともに
データの性質をよりよく捉えたモデルを用いて圧縮が行
えるようになるので、適応的データ圧縮方式は圧縮が進
むにつれて優れた圧縮率を得られるようになる。多くの
種類のデータに対して有効な圧縮方式であるユニバーサ
ル圧縮方式は、データの性質を動的に捉える必要がある
ために適応的データ圧縮方式であることがほとんどであ
る。元のデータを完全に復元できる、無歪みなユニバー
サル圧縮方式としてはレンペル・ジブ方式や文脈木と算
術符号を組み合わせた方式などが知られている。これら
の方式もモデルを動的に更新する適応的データ圧縮方式
である。
はデータ圧縮処理が有効である。データ圧縮はデータの
統計的性質を利用することにより達成される。このデー
タの統計的性質を保持するデータ構造を“モデル”と呼
ぶ。適応的データ圧縮方式ではこのモデルを圧縮が進む
につれて動的に更新していく。圧縮処理の進行とともに
データの性質をよりよく捉えたモデルを用いて圧縮が行
えるようになるので、適応的データ圧縮方式は圧縮が進
むにつれて優れた圧縮率を得られるようになる。多くの
種類のデータに対して有効な圧縮方式であるユニバーサ
ル圧縮方式は、データの性質を動的に捉える必要がある
ために適応的データ圧縮方式であることがほとんどであ
る。元のデータを完全に復元できる、無歪みなユニバー
サル圧縮方式としてはレンペル・ジブ方式や文脈木と算
術符号を組み合わせた方式などが知られている。これら
の方式もモデルを動的に更新する適応的データ圧縮方式
である。
【0003】レンペル・ジブ方式の場合には、モデルは
辞書もしくはバッファという形態である。辞書を使用す
る方式はLZ78型、バッファを使用する方式はLZ7
7型と呼ばれている。
辞書もしくはバッファという形態である。辞書を使用す
る方式はLZ78型、バッファを使用する方式はLZ7
7型と呼ばれている。
【0004】LZ78型における辞書は入力データ中の
文字列を一定の規則に従って切り出し、インデックスを
割り振る構造になっている。辞書中の文字列が再び現れ
た場合には、その文字列を辞書中のインデックスで置き
換えることにより圧縮が達成される。
文字列を一定の規則に従って切り出し、インデックスを
割り振る構造になっている。辞書中の文字列が再び現れ
た場合には、その文字列を辞書中のインデックスで置き
換えることにより圧縮が達成される。
【0005】LZ77型におけるバッファは既に圧縮を
終えた最新の入力文字列を蓄える構造となっている。バ
ッファ内の文字列が再び現れた場合には、その文字列が
始まる位置(符号化している位置より何文字前から始ま
るか?)と長さという二つの数の組から成るインデック
スで置き換えることにより圧縮が達成される。LZ77
型では基本的にこのようにバッファがあれば処理が可能
となる。しかし、圧縮処理の高速化のためにはバッファ
内の文字列検索を高速化するためのデータ構造が必要で
あり、そのデータ構造を辞書と呼ぶこともある。
終えた最新の入力文字列を蓄える構造となっている。バ
ッファ内の文字列が再び現れた場合には、その文字列が
始まる位置(符号化している位置より何文字前から始ま
るか?)と長さという二つの数の組から成るインデック
スで置き換えることにより圧縮が達成される。LZ77
型では基本的にこのようにバッファがあれば処理が可能
となる。しかし、圧縮処理の高速化のためにはバッファ
内の文字列検索を高速化するためのデータ構造が必要で
あり、そのデータ構造を辞書と呼ぶこともある。
【0006】レンペル・ジブ方式の詳細については米国
で発行された単行本テキストコンプレッション(Tex
t Compression,1990年,Prent
ice Hall社,pp.206−243)に記述さ
れている。辞書やバッファの初期状態は基本的に空とし
て圧縮を開始し、圧縮が進むにつれて辞書には新しい文
字列が登録され、データの性質をよく捉えた辞書が生成
されていく。
で発行された単行本テキストコンプレッション(Tex
t Compression,1990年,Prent
ice Hall社,pp.206−243)に記述さ
れている。辞書やバッファの初期状態は基本的に空とし
て圧縮を開始し、圧縮が進むにつれて辞書には新しい文
字列が登録され、データの性質をよく捉えた辞書が生成
されていく。
【0007】一方、文脈木を用いた方式は、モデルは文
脈木と各文脈の下での各文字の出現頻度という形態であ
る。実際の符号化は出現頻度を元に各文字を算術符号化
することにより行われる。文脈木は文脈の集合で、新し
い文脈が現れる度に必要に応じて文脈木に新しい文脈が
登録される。各文脈が入力データ中に現れたときには、
その文脈における文字の出現頻度をその次に現れた文字
に従って更新する。
脈木と各文脈の下での各文字の出現頻度という形態であ
る。実際の符号化は出現頻度を元に各文字を算術符号化
することにより行われる。文脈木は文脈の集合で、新し
い文脈が現れる度に必要に応じて文脈木に新しい文脈が
登録される。各文脈が入力データ中に現れたときには、
その文脈における文字の出現頻度をその次に現れた文字
に従って更新する。
【0008】文脈木を用いた方式は、上述の単行本テキ
ストコンプレッション(pp.140−166)に詳述
されている。文脈木は基本的には空として圧縮を開始
し、圧縮が進むにつれて文脈木には新しい文脈木が追加
され、各文脈の下での文字の出現頻度も更新され、デー
タの性質をよく捉えた文脈木が生成されていく。
ストコンプレッション(pp.140−166)に詳述
されている。文脈木は基本的には空として圧縮を開始
し、圧縮が進むにつれて文脈木には新しい文脈木が追加
され、各文脈の下での文字の出現頻度も更新され、デー
タの性質をよく捉えた文脈木が生成されていく。
【0009】以上に述べた適応的データ圧縮方式におい
ては、データの圧縮が進行するにつれて良いモデルが構
築されていくことになるため、データの圧縮を開始した
時点よりも、ある程度処理が進んでからの方が有効な圧
縮が可能となる。
ては、データの圧縮が進行するにつれて良いモデルが構
築されていくことになるため、データの圧縮を開始した
時点よりも、ある程度処理が進んでからの方が有効な圧
縮が可能となる。
【0010】適応的データ圧縮方式で圧縮されたデータ
の復元時には、圧縮時と同じモデルを使用しなければ正
しく復元を行うことができない。そのために、モデルの
初期状態を圧縮時と等しく設定し、圧縮時と同様にモデ
ルを更新する必要がある。
の復元時には、圧縮時と同じモデルを使用しなければ正
しく復元を行うことができない。そのために、モデルの
初期状態を圧縮時と等しく設定し、圧縮時と同様にモデ
ルを更新する必要がある。
【0011】
【発明が解決しようとする課題】適応的データ圧縮方式
は優れた圧縮率を得られる圧縮方式であるが、圧縮デー
タ中にビット反転などのエラーが発生すると、それ以降
のデータが全く復元できなくなるという問題点がある。
圧縮符号語が可変長の場合には、ビット反転により圧縮
符号語の境界に誤りが生じる可能性があり、この場合に
はデータは壊滅的な被害を受け得る。また、ある一つの
圧縮符号語のみが誤ったまま復元された場合でも、それ
に対応する復元データが異なるものとなり、適応的デー
タ圧縮方式の場合にはその誤って復元されデータを元に
モデルを更新してしまうため、誤りは留まることなく伝
搬していく恐れがある。誤り訂正符号化を組み合わせる
ことにより、誤りの発生をある程度抑えることができる
が、それでも多量のエラーが発生した場合には訂正不可
能になる。
は優れた圧縮率を得られる圧縮方式であるが、圧縮デー
タ中にビット反転などのエラーが発生すると、それ以降
のデータが全く復元できなくなるという問題点がある。
圧縮符号語が可変長の場合には、ビット反転により圧縮
符号語の境界に誤りが生じる可能性があり、この場合に
はデータは壊滅的な被害を受け得る。また、ある一つの
圧縮符号語のみが誤ったまま復元された場合でも、それ
に対応する復元データが異なるものとなり、適応的デー
タ圧縮方式の場合にはその誤って復元されデータを元に
モデルを更新してしまうため、誤りは留まることなく伝
搬していく恐れがある。誤り訂正符号化を組み合わせる
ことにより、誤りの発生をある程度抑えることができる
が、それでも多量のエラーが発生した場合には訂正不可
能になる。
【0012】このような問題に対して、従来、図2に示
したように、データを小さなブロックに分割し、ブロッ
ク毎に独立に圧縮するといった方法が採られてきた。一
つのブロックの復元に失敗しても、残りのブロックは正
しく復元することが可能となる。各ブロックの圧縮開始
時点でモデルを予め定められた初期状態に戻すことによ
り、各ブロックを独立に圧縮することができる。特開平
05−252047号公報、特開平05−252048
号公報に開示されている方法は、本質的にこれと同種の
方法である。通信システムへの応用に際しては復元側で
は誤りが検出されたブロックのみの再送を要求すれば済
み、データ全体を最初から復元しなくても済む。
したように、データを小さなブロックに分割し、ブロッ
ク毎に独立に圧縮するといった方法が採られてきた。一
つのブロックの復元に失敗しても、残りのブロックは正
しく復元することが可能となる。各ブロックの圧縮開始
時点でモデルを予め定められた初期状態に戻すことによ
り、各ブロックを独立に圧縮することができる。特開平
05−252047号公報、特開平05−252048
号公報に開示されている方法は、本質的にこれと同種の
方法である。通信システムへの応用に際しては復元側で
は誤りが検出されたブロックのみの再送を要求すれば済
み、データ全体を最初から復元しなくても済む。
【0013】しかし、適応的データ圧縮方式の場合には
モデルを構築しながら圧縮を行うため、モデルを十分に
成長させることができる大きなデータに対して初めて優
れた圧縮率を達成する。小さなブロック単位で独立に圧
縮を行う場合には、ブロックの先頭で予め決められた初
期状態に設定されるため、そのデータに合ったモデルが
構築できず、十分な圧縮率が得られないという問題点が
あった。一方、ブロックを大きくすると、そのブロック
が復元できなくなったときの損失データが大きくなると
いう問題点がある。
モデルを構築しながら圧縮を行うため、モデルを十分に
成長させることができる大きなデータに対して初めて優
れた圧縮率を達成する。小さなブロック単位で独立に圧
縮を行う場合には、ブロックの先頭で予め決められた初
期状態に設定されるため、そのデータに合ったモデルが
構築できず、十分な圧縮率が得られないという問題点が
あった。一方、ブロックを大きくすると、そのブロック
が復元できなくなったときの損失データが大きくなると
いう問題点がある。
【0014】
(1)本発明は、データの統計的性質を表すデータ構造
であるモデルを利用し、前記モデルを動的に更新しなが
ら圧縮を行う適応的データ圧縮方式におけるデータ圧縮
制御方法において、入力データをいくつかのブロックに
分割し、該ブロック単位で圧縮を行い、隣接する該ブロ
ックを一定数まとめたクラスタを形成し、異なる該クラ
スタは独立に圧縮を行い、該クラスタ内の先頭の該ブロ
ックを圧縮する場合には、前記モデルの初期状態は予め
定められた設定とし、該クラスタの先頭以外の該ブロッ
クを圧縮する場合には、前記モデルの初期状態は該ブロ
ックが属する該クラスタの先頭の該ブロックを用いて決
定される設定とすることを特徴とする。
であるモデルを利用し、前記モデルを動的に更新しなが
ら圧縮を行う適応的データ圧縮方式におけるデータ圧縮
制御方法において、入力データをいくつかのブロックに
分割し、該ブロック単位で圧縮を行い、隣接する該ブロ
ックを一定数まとめたクラスタを形成し、異なる該クラ
スタは独立に圧縮を行い、該クラスタ内の先頭の該ブロ
ックを圧縮する場合には、前記モデルの初期状態は予め
定められた設定とし、該クラスタの先頭以外の該ブロッ
クを圧縮する場合には、前記モデルの初期状態は該ブロ
ックが属する該クラスタの先頭の該ブロックを用いて決
定される設定とすることを特徴とする。
【0015】(2)また、該ブロックの大きさを一定と
することを特徴とする。
することを特徴とする。
【0016】(3)また、該ブロックの大きさは可変で
あり、該ブロックを圧縮したときの大きさが等しくなる
ように該ブロックの大きさを制御することを特徴とす
る。
あり、該ブロックを圧縮したときの大きさが等しくなる
ように該ブロックの大きさを制御することを特徴とす
る。
【0017】(4)また、本発明は、前記モデルとして
既に圧縮を終えた入力データを蓄えるバッファを用い、
前記バッファ内の文字列が入力データ中に再び現れた場
合には、前記文字列の開始位置、長さを表すインデック
スの組を前記文字列に対する符号語とし、前記バッファ
を、常に圧縮を終えた最新のデータが格納するように更
新し、該クラスタの先頭の該ブロックを圧縮する場合に
は、前記バッファの初期状態は予め定められた設定と
し、該クラスタの先頭以外の該ブロックを圧縮する場合
には、前記バッファの初期状態は該ブロックが属する該
クラスタの先頭の該ブロックの圧縮が終了したときの前
記バッファの状態とすることを特徴とする。
既に圧縮を終えた入力データを蓄えるバッファを用い、
前記バッファ内の文字列が入力データ中に再び現れた場
合には、前記文字列の開始位置、長さを表すインデック
スの組を前記文字列に対する符号語とし、前記バッファ
を、常に圧縮を終えた最新のデータが格納するように更
新し、該クラスタの先頭の該ブロックを圧縮する場合に
は、前記バッファの初期状態は予め定められた設定と
し、該クラスタの先頭以外の該ブロックを圧縮する場合
には、前記バッファの初期状態は該ブロックが属する該
クラスタの先頭の該ブロックの圧縮が終了したときの前
記バッファの状態とすることを特徴とする。
【0018】(5)また、本発明は、前記モデルとして
既に圧縮を終えた入力データ中の文字列にインデックス
を対応させる辞書を用い、前記辞書内の文字列が再び現
れた場合には、前記文字列の前記辞書におけるインデッ
クスを前記文字列に対する符号語とし、前記辞書を、入
力データ中に新たに現れた文字列にインデックスを割り
当て、登録することによって更新し、該クラスタの先頭
の該ブロックを圧縮する場合には、前記辞書の初期状態
は予め定められた設定とし、該クラスタの先頭以外の該
ブロックを圧縮する場合には、前記辞書の初期状態は該
ブロックが属する該クラスタの先頭の該ブロックの圧縮
が終了したときの前記辞書の状態とすることを特徴とす
る。
既に圧縮を終えた入力データ中の文字列にインデックス
を対応させる辞書を用い、前記辞書内の文字列が再び現
れた場合には、前記文字列の前記辞書におけるインデッ
クスを前記文字列に対する符号語とし、前記辞書を、入
力データ中に新たに現れた文字列にインデックスを割り
当て、登録することによって更新し、該クラスタの先頭
の該ブロックを圧縮する場合には、前記辞書の初期状態
は予め定められた設定とし、該クラスタの先頭以外の該
ブロックを圧縮する場合には、前記辞書の初期状態は該
ブロックが属する該クラスタの先頭の該ブロックの圧縮
が終了したときの前記辞書の状態とすることを特徴とす
る。
【0019】(6)また、本発明は、前記モデルとして
入力データ中に現れた文字列である文脈の集合と前記文
脈の下での入力データ中の各文字の出現頻度を対応させ
る構造を用い、前記文脈の下での前記出現頻度を元に入
力データ中の各文字を符号化し、前記文脈の集合を、入
力データ中に新たに現れた文字列を前記文脈の集合に加
えることによって更新し、また、前記出現頻度を、入力
データ中で前記文脈の下で文字が現れる度に更新し、該
クラスタの先頭の該ブロックを圧縮する場合には、前記
文脈の集合および文脈の下での各文字の出現頻度の初期
状態は予め定められた設定とし、該クラスタの先頭以外
の該ブロックを圧縮する場合には、該ブロックが属する
該クラスタの先頭の該ブロックの圧縮を終了したときに
得られる前記文脈の集合および文脈の下での各文字の出
現頻度の初期状態とすることを特徴とする。
入力データ中に現れた文字列である文脈の集合と前記文
脈の下での入力データ中の各文字の出現頻度を対応させ
る構造を用い、前記文脈の下での前記出現頻度を元に入
力データ中の各文字を符号化し、前記文脈の集合を、入
力データ中に新たに現れた文字列を前記文脈の集合に加
えることによって更新し、また、前記出現頻度を、入力
データ中で前記文脈の下で文字が現れる度に更新し、該
クラスタの先頭の該ブロックを圧縮する場合には、前記
文脈の集合および文脈の下での各文字の出現頻度の初期
状態は予め定められた設定とし、該クラスタの先頭以外
の該ブロックを圧縮する場合には、該ブロックが属する
該クラスタの先頭の該ブロックの圧縮を終了したときに
得られる前記文脈の集合および文脈の下での各文字の出
現頻度の初期状態とすることを特徴とする。
【0020】
【作用】本発明を用いた場合、一定数のブロックの集合
であるクラスタ単位では独立に圧縮を行うため、一つの
クラスタの復元に失敗しても残りのクラスタを正しく復
元することが可能である。また、クラスタ内の先頭ブロ
ックの復元に失敗した場合には、そのクラスタの残りの
ブロックの復元も行うことができないが、クラスタ内の
先頭以外のブロックの復元に失敗しても、残りのブロッ
クは正しく復元できる。クラスタの先頭以外ブロックの
圧縮に際しては、先頭ブロックを利用してモデルをある
程度構築してから圧縮が行われるため、ブロックの大き
さに比して優れた圧縮率を得ることができる。
であるクラスタ単位では独立に圧縮を行うため、一つの
クラスタの復元に失敗しても残りのクラスタを正しく復
元することが可能である。また、クラスタ内の先頭ブロ
ックの復元に失敗した場合には、そのクラスタの残りの
ブロックの復元も行うことができないが、クラスタ内の
先頭以外のブロックの復元に失敗しても、残りのブロッ
クは正しく復元できる。クラスタの先頭以外ブロックの
圧縮に際しては、先頭ブロックを利用してモデルをある
程度構築してから圧縮が行われるため、ブロックの大き
さに比して優れた圧縮率を得ることができる。
【0021】
【発明の実施の形態】本発明は、データの統計的性質を
表すデータ構造であるモデルを利用し、モデルを動的に
更新しながら圧縮を行う適応的データ圧縮方式に適用さ
れる。モデルはある初期状態から圧縮の進行とともに更
新されていく。モデルは例えば辞書や出現頻度表といっ
た形態で実現される。
表すデータ構造であるモデルを利用し、モデルを動的に
更新しながら圧縮を行う適応的データ圧縮方式に適用さ
れる。モデルはある初期状態から圧縮の進行とともに更
新されていく。モデルは例えば辞書や出現頻度表といっ
た形態で実現される。
【0022】本発明の大きな特徴は基本的にブロック単
位の圧縮を行うが、隣接する一定数のブロックをまとめ
たクラスタを形成する点にある。クラスタ内のブロック
数をKとし、クラスタ内の各ブロックに順に0から(K
−1)までの番号を割り振り、これをブロック番号と呼
ぶことにする。
位の圧縮を行うが、隣接する一定数のブロックをまとめ
たクラスタを形成する点にある。クラスタ内のブロック
数をKとし、クラスタ内の各ブロックに順に0から(K
−1)までの番号を割り振り、これをブロック番号と呼
ぶことにする。
【0023】本発明の実施例を図を参照しながら述べ
る。図1は本発明の処理の流れを示すフローチャートで
ある。
る。図1は本発明の処理の流れを示すフローチャートで
ある。
【0024】まず、圧縮するブロックがクラスタの先頭
であるかどうかを判定する(ステップS1)。これは圧
縮するブロックのブロック番号が0かどうかで判断でき
る。圧縮開始時のブロック番号は0とする。
であるかどうかを判定する(ステップS1)。これは圧
縮するブロックのブロック番号が0かどうかで判断でき
る。圧縮開始時のブロック番号は0とする。
【0025】クラスタの先頭のブロック(ブロック番号
=0)であったらモデルの初期状態は予め決められた状
態に設定する(ステップS2)。モデルとして各文字の
出現頻度表を用いる場合、例えば各文字の出現頻度を1
に設定する。
=0)であったらモデルの初期状態は予め決められた状
態に設定する(ステップS2)。モデルとして各文字の
出現頻度表を用いる場合、例えば各文字の出現頻度を1
に設定する。
【0026】クラスタの先頭ブロックでない場合には、
そのブロックの属するクラスタの先頭ブロックの圧縮が
終了した状態にモデルを設定する(ステップS3)。モ
デルとして各文字の出現頻度表を用いる場合、先頭ブロ
ックの圧縮が進むにつれて出現頻度表も更新され、先頭
ブロック圧縮終了時点での出現頻度表を初期状態として
そのブロックの圧縮を開始する。この初期状態設定処理
の方法は二通り考えられる。一つの方法は、クラスタの
先頭ブロックの圧縮が終了した時点で、そのときのモデ
ルを別の領域に格納しておき、クラスタ内の残りのブロ
ックの圧縮に際しては、格納しておいたモデルを圧縮に
使用するモデルの領域にコピーする方法である。もう一
つの方法は、各ブロックを圧縮する前にクラスタの先頭
ブロックの圧縮処理を行いモデルを更新していき、先頭
ブロック圧縮終了の状態になったらそれぞれのブロック
の圧縮を開始する方法である。ただし、この先頭ブロッ
ク圧縮処理の過程ではモデルの更新を行うのみで実際に
符号語は出力しない。図2に示した従来の方法と比較し
て、前者の方法では余分なメモリーが必要となり、後者
の方法は圧縮時間が2倍になる。メモリーが大容量で安
価になってきている現在では前者の方法が有効であると
思われる。
そのブロックの属するクラスタの先頭ブロックの圧縮が
終了した状態にモデルを設定する(ステップS3)。モ
デルとして各文字の出現頻度表を用いる場合、先頭ブロ
ックの圧縮が進むにつれて出現頻度表も更新され、先頭
ブロック圧縮終了時点での出現頻度表を初期状態として
そのブロックの圧縮を開始する。この初期状態設定処理
の方法は二通り考えられる。一つの方法は、クラスタの
先頭ブロックの圧縮が終了した時点で、そのときのモデ
ルを別の領域に格納しておき、クラスタ内の残りのブロ
ックの圧縮に際しては、格納しておいたモデルを圧縮に
使用するモデルの領域にコピーする方法である。もう一
つの方法は、各ブロックを圧縮する前にクラスタの先頭
ブロックの圧縮処理を行いモデルを更新していき、先頭
ブロック圧縮終了の状態になったらそれぞれのブロック
の圧縮を開始する方法である。ただし、この先頭ブロッ
ク圧縮処理の過程ではモデルの更新を行うのみで実際に
符号語は出力しない。図2に示した従来の方法と比較し
て、前者の方法では余分なメモリーが必要となり、後者
の方法は圧縮時間が2倍になる。メモリーが大容量で安
価になってきている現在では前者の方法が有効であると
思われる。
【0027】モデルの初期状態が決まったら、各ブロッ
クの圧縮を行う(ステップS4)。圧縮をする過程でモ
デルは順次更新されていく。
クの圧縮を行う(ステップS4)。圧縮をする過程でモ
デルは順次更新されていく。
【0028】次のブロックに移行する前に、圧縮するデ
ータがまだ存在するのかどうかを確認する(ステップS
5)。もし存在する場合にはブロック番号を1インクリ
メントし(Kになった場合は0とする)、次のブロック
の圧縮に移行する(ステップS6)。存在しない場合は
圧縮を終了する。
ータがまだ存在するのかどうかを確認する(ステップS
5)。もし存在する場合にはブロック番号を1インクリ
メントし(Kになった場合は0とする)、次のブロック
の圧縮に移行する(ステップS6)。存在しない場合は
圧縮を終了する。
【0029】ブロックの大きさの決め方は二通り考えら
れる。一つは、圧縮前の各ブロックを同じ大きさにする
方法であり、もう一つは圧縮後の各ブロックを同じ大き
さにする方法である。クラスタは一定数のブロックから
なるため、必然的に、前者は圧縮前のクラスタは同じ大
きさになり、後者は圧縮後のクラスタは同じ大きさにな
る。なお、実際に圧縮データを媒体に書き込むときには
リードソロモン符号などを用いた誤り訂正符号化や誤り
検出符号化などを行う。リードソロモン符号などの誤り
訂正符号に関しては単行本「符号理論」(1990年,
電子情報通信学会,pp.151−187)などに詳述
されている。リードソロモン符号などを用いた誤り訂正
符号化ではブロック単位で符号化を行うが、誤り訂正符
号化の単位となるブロックの大きさと圧縮におけるブロ
ックは無関係でよい。
れる。一つは、圧縮前の各ブロックを同じ大きさにする
方法であり、もう一つは圧縮後の各ブロックを同じ大き
さにする方法である。クラスタは一定数のブロックから
なるため、必然的に、前者は圧縮前のクラスタは同じ大
きさになり、後者は圧縮後のクラスタは同じ大きさにな
る。なお、実際に圧縮データを媒体に書き込むときには
リードソロモン符号などを用いた誤り訂正符号化や誤り
検出符号化などを行う。リードソロモン符号などの誤り
訂正符号に関しては単行本「符号理論」(1990年,
電子情報通信学会,pp.151−187)などに詳述
されている。リードソロモン符号などを用いた誤り訂正
符号化ではブロック単位で符号化を行うが、誤り訂正符
号化の単位となるブロックの大きさと圧縮におけるブロ
ックは無関係でよい。
【0030】圧縮前のブロックの大きさを一定とする場
合、圧縮処理が容易であり、クラスタ単位での並列圧縮
処理にも適する。入力データの最後のブロックだけは他
のブロックと異なる大きさになることがある。
合、圧縮処理が容易であり、クラスタ単位での並列圧縮
処理にも適する。入力データの最後のブロックだけは他
のブロックと異なる大きさになることがある。
【0031】圧縮後のブロックの大きさを一定とする場
合、圧縮データがその大きさに達したときに、原データ
におけるそのブロックの大きさが確定し、次のブロック
の圧縮に移行する。最後の圧縮ブロックだけ他の圧縮ブ
ロックと異なる大きさとなることがある。この方式は、
クラスタ単位の並列復元処理に適するとともに、圧縮ブ
ロックが固定長のため、ブロックにエラーが発生した場
合でも常に次のブロック、クラスタへ移行できるという
大きな利点を持つ。図3に圧縮ブロックの大きさが一定
の場合の原データと圧縮データのフォーマットの例を示
す。図3においてクラスタは4つのブロックから成る。
ブロック番号0である先頭ブロック(block0)の
圧縮時にはモデルの初期状態を予め定められた設定と
し、圧縮を行う。圧縮データの大きさが所定の大きさに
達したら、そこでブロックを区切り、続くデータからは
次のブロックとなる。ブロック番号2,3,4のブロッ
ク(block1,block2,block3)の圧
縮時には、各クラスタのブロック番号0のブロック(b
lock0)の圧縮を終了したときのモデルの状態を初
期状態として、圧縮を開始する。
合、圧縮データがその大きさに達したときに、原データ
におけるそのブロックの大きさが確定し、次のブロック
の圧縮に移行する。最後の圧縮ブロックだけ他の圧縮ブ
ロックと異なる大きさとなることがある。この方式は、
クラスタ単位の並列復元処理に適するとともに、圧縮ブ
ロックが固定長のため、ブロックにエラーが発生した場
合でも常に次のブロック、クラスタへ移行できるという
大きな利点を持つ。図3に圧縮ブロックの大きさが一定
の場合の原データと圧縮データのフォーマットの例を示
す。図3においてクラスタは4つのブロックから成る。
ブロック番号0である先頭ブロック(block0)の
圧縮時にはモデルの初期状態を予め定められた設定と
し、圧縮を行う。圧縮データの大きさが所定の大きさに
達したら、そこでブロックを区切り、続くデータからは
次のブロックとなる。ブロック番号2,3,4のブロッ
ク(block1,block2,block3)の圧
縮時には、各クラスタのブロック番号0のブロック(b
lock0)の圧縮を終了したときのモデルの状態を初
期状態として、圧縮を開始する。
【0032】次に、本発明で圧縮されたデータの復元処
理について説明する。図4はこの処理の流れを示す図で
ある。クラスタ内のブロック数はKとする。
理について説明する。図4はこの処理の流れを示す図で
ある。クラスタ内のブロック数はKとする。
【0033】各圧縮ブロックを復元する前に、その圧縮
ブロック中にエラーが混入しているかどうかを判別する
(ステップT1)。これは誤り訂正符号化方法、誤り検
出符号化方法を用いて行うことができる。これらの手法
は前述の単行本「符号理論」に詳述されている。
ブロック中にエラーが混入しているかどうかを判別する
(ステップT1)。これは誤り訂正符号化方法、誤り検
出符号化方法を用いて行うことができる。これらの手法
は前述の単行本「符号理論」に詳述されている。
【0034】圧縮ブロックに訂正不可能なエラーが混入
していることが判明した場合には、まず、そのブロック
がクラスタの先頭ブロックかどうかを判別する(ステッ
プT2)。これも圧縮時と同様にブロック番号が0であ
るかどうかで判別できる。復元開始時のブロック番号は
0とする。
していることが判明した場合には、まず、そのブロック
がクラスタの先頭ブロックかどうかを判別する(ステッ
プT2)。これも圧縮時と同様にブロック番号が0であ
るかどうかで判別できる。復元開始時のブロック番号は
0とする。
【0035】クラスタの先頭ブロックでエラーの混入が
判明した場合には、その情報を知らせ(ステップT
3)、そのクラスタの復元は中断し、次のクラスタの復
元に移行する(ステップT5)。ブロック番号は0とす
る。クラスタの先頭でないブロックでエラーの混入が判
明した場合には、その情報を知らせ(ステップT4)、
次のブロックの復元に移行する(ステップT6)。ブロ
ック番号は1インクリメントする(このときブロック番
号=Kとなった場合には、ブロック番号は0とする)。
圧縮ブロックの大きさを一定とした場合には常に次のブ
ロック、クラスタの復元に移ることが可能となる。
判明した場合には、その情報を知らせ(ステップT
3)、そのクラスタの復元は中断し、次のクラスタの復
元に移行する(ステップT5)。ブロック番号は0とす
る。クラスタの先頭でないブロックでエラーの混入が判
明した場合には、その情報を知らせ(ステップT4)、
次のブロックの復元に移行する(ステップT6)。ブロ
ック番号は1インクリメントする(このときブロック番
号=Kとなった場合には、ブロック番号は0とする)。
圧縮ブロックの大きさを一定とした場合には常に次のブ
ロック、クラスタの復元に移ることが可能となる。
【0036】ブロックにエラーが混入していないことが
判明した場合にも、まず、そのブロックがクラスタの先
頭ブロックかどうか判別する(ステップT7)。ブロッ
クがクラスタの先頭ブロックであったら、モデルは予め
決められた初期状態に設定する(ステップT8)。モデ
ルとして各文字の出現頻度表を用いる場合、例えばすべ
て1に設定する。ブロックがクラスタの先頭ブロックで
ない場合には、クラスタの先頭ブロックが復元されたと
きのモデルの状態にモデルを設定する(ステップT
9)。モデルとして各文字の出現頻度表を用いる場合、
先頭ブロックの復元が進むにつれて出現頻度表も更新さ
れ、先頭ブロック復元終了時点での出現頻度表を初期状
態としてそのブロックの復元を開始する。この処理にお
いて、圧縮時と同様に二通りの手法が考えられる。先頭
ブロックの復元終了時点でのモデルの状態を別の領域に
保持しておく方法と、先頭ブロックを再び復元していく
方法である(復元データの出力は行わない)。モデルの
初期状態が決まったら、圧縮ブロックの復元を行い(ス
テップT10)、次のブロックの復元に移る(ステップ
T11)。ブロック番号は1インクリメントする(この
ときブロック番号=Kとなった場合には、ブロック番号
は0とする)。
判明した場合にも、まず、そのブロックがクラスタの先
頭ブロックかどうか判別する(ステップT7)。ブロッ
クがクラスタの先頭ブロックであったら、モデルは予め
決められた初期状態に設定する(ステップT8)。モデ
ルとして各文字の出現頻度表を用いる場合、例えばすべ
て1に設定する。ブロックがクラスタの先頭ブロックで
ない場合には、クラスタの先頭ブロックが復元されたと
きのモデルの状態にモデルを設定する(ステップT
9)。モデルとして各文字の出現頻度表を用いる場合、
先頭ブロックの復元が進むにつれて出現頻度表も更新さ
れ、先頭ブロック復元終了時点での出現頻度表を初期状
態としてそのブロックの復元を開始する。この処理にお
いて、圧縮時と同様に二通りの手法が考えられる。先頭
ブロックの復元終了時点でのモデルの状態を別の領域に
保持しておく方法と、先頭ブロックを再び復元していく
方法である(復元データの出力は行わない)。モデルの
初期状態が決まったら、圧縮ブロックの復元を行い(ス
テップT10)、次のブロックの復元に移る(ステップ
T11)。ブロック番号は1インクリメントする(この
ときブロック番号=Kとなった場合には、ブロック番号
は0とする)。
【0037】残りの圧縮ブロックがもう存在しない場合
には、復元処理を終了する(ステップT12)。
には、復元処理を終了する(ステップT12)。
【0038】次に、本発明のデータ圧縮制御方法と具体
的な圧縮方式との組み合わせの例を述べる。
的な圧縮方式との組み合わせの例を述べる。
【0039】本発明にLZ77型を圧縮方式として適用
した場合について述べる。LZ77型ではバッファをモ
デルとして用いる。
した場合について述べる。LZ77型ではバッファをモ
デルとして用いる。
【0040】まず、LZ77型の説明を行う。入力デー
タをx(0)x(1)x(t)…x(n)とする。この
ときLZ77型による圧縮は次のように行われる。 (1)バッファを初期状態にする。j=0 (2)次の処理を繰り返す: (i)x(j)x(j+1)…とバッファ内の文字列と
の間でマッチングをとり最長一致列を求める。
タをx(0)x(1)x(t)…x(n)とする。この
ときLZ77型による圧縮は次のように行われる。 (1)バッファを初期状態にする。j=0 (2)次の処理を繰り返す: (i)x(j)x(j+1)…とバッファ内の文字列と
の間でマッチングをとり最長一致列を求める。
【0041】(ii)・最長一致列の長さmが閾値より
も小さかったら先頭の一文字x(j)をそのまま出力す
る。m=1とする。
も小さかったら先頭の一文字x(j)をそのまま出力す
る。m=1とする。
【0042】・最長一致列の長さmが閾値よりも大きか
ったら、最長一致列の始まる位置(符号化地点より何文
字前か?)と長さmを表すインデックスをx(j)x
(j+1)…x(j+m−1)に対する符号語として出
力する。
ったら、最長一致列の始まる位置(符号化地点より何文
字前か?)と長さmを表すインデックスをx(j)x
(j+1)…x(j+m−1)に対する符号語として出
力する。
【0043】(iii)バッファ内の文字列をm文字シ
フトし、符号化を終えた文字列x(j)…x(j+m−
1)をバッファ内に挿入する。
フトし、符号化を終えた文字列x(j)…x(j+m−
1)をバッファ内に挿入する。
【0044】(iv)j←j+m。
【0045】(v)j>nとなったら終了。 (2)の(iii)の処理によって、バッファは圧縮を
終えた最新の入力データを格納するように更新される。
(2)の(ii)において、符号語が文字そのものなの
か、位置・長さを表すインデックスなのかを判別するた
めにフラグを用いる等の工夫が必要となる。
終えた最新の入力データを格納するように更新される。
(2)の(ii)において、符号語が文字そのものなの
か、位置・長さを表すインデックスなのかを判別するた
めにフラグを用いる等の工夫が必要となる。
【0046】本発明をこの圧縮方式に適用する場合を述
べる。
べる。
【0047】まず、圧縮するブロックがクラスタの先頭
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
【0048】クラスタの先頭ブロックの圧縮に際して
は、バッファの初期状態は予め定められた状態、例えば
図5(a)のようにバッファを空の状態に設定する(ス
テップS2)。クラスタの先頭でないブロックの圧縮に
際しては、クラスタの先頭ブロックが圧縮を終了した状
態にバッファを設定する(ステップS3)。このため
に、先頭ブロック圧縮終了時点のバッファの状態を別の
領域に格納しておく必要がある。先頭ブロックがx
(s)x(s+1)…x(t)とし、バッファが十分に
大きければ、バッファ内には図5(b)のように先頭ブ
ロックがそのまま格納されている形態となる。なお、バ
ッファ内の文字列を検索する手段も先頭ブロックの圧縮
が終了したときの状態に設定する必要がある。
は、バッファの初期状態は予め定められた状態、例えば
図5(a)のようにバッファを空の状態に設定する(ス
テップS2)。クラスタの先頭でないブロックの圧縮に
際しては、クラスタの先頭ブロックが圧縮を終了した状
態にバッファを設定する(ステップS3)。このため
に、先頭ブロック圧縮終了時点のバッファの状態を別の
領域に格納しておく必要がある。先頭ブロックがx
(s)x(s+1)…x(t)とし、バッファが十分に
大きければ、バッファ内には図5(b)のように先頭ブ
ロックがそのまま格納されている形態となる。なお、バ
ッファ内の文字列を検索する手段も先頭ブロックの圧縮
が終了したときの状態に設定する必要がある。
【0049】バッファの設定が終わったら、圧縮を開始
する(ステップS4)。
する(ステップS4)。
【0050】ブロックの圧縮が終了したら、残りのデー
タが存在するかどうか判別する(ステップS5)。残り
のデータが存在する場合には、ブロック番号を1インク
リメントし(ステップS6)、次のブロックの圧縮に移
行する。
タが存在するかどうか判別する(ステップS5)。残り
のデータが存在する場合には、ブロック番号を1インク
リメントし(ステップS6)、次のブロックの圧縮に移
行する。
【0051】本発明にLZ78型を圧縮方式として適用
した場合について述べる。LZ78型では辞書をモデル
として用いる。
した場合について述べる。LZ78型では辞書をモデル
として用いる。
【0052】まず、LZ78型の説明を行う。入力デー
タをx(0)x(1)x(t)…x(n)とする。この
ときLZ78型による圧縮は次のように行われる。 (1)辞書を初期状態にする。j=0 (2)次の処理を繰り返す: (i)x(j)x(j+1)…と辞書内の文字列との間
でマッチングをとり最長一致列を求める。
タをx(0)x(1)x(t)…x(n)とする。この
ときLZ78型による圧縮は次のように行われる。 (1)辞書を初期状態にする。j=0 (2)次の処理を繰り返す: (i)x(j)x(j+1)…と辞書内の文字列との間
でマッチングをとり最長一致列を求める。
【0053】(ii)・最長一致列(x(j)x(j+
1)…x(m)とする)の辞書におけるインデックスを
符号語として出力する。
1)…x(m)とする)の辞書におけるインデックスを
符号語として出力する。
【0054】(iii)x(j)x(j+1)…x
(m)x(m+1)に新たなインデックスを割り振り、
辞書に登録する。
(m)x(m+1)に新たなインデックスを割り振り、
辞書に登録する。
【0055】(iv)j←m+1。
【0056】(v)j>nとなったら終了。 (2)の(iii)の処理は、辞書に登録されている文
字列を1文字拡張した文字列を辞書に新たに登録するこ
とによって辞書を更新していることを意味する。。
字列を1文字拡張した文字列を辞書に新たに登録するこ
とによって辞書を更新していることを意味する。。
【0057】本発明をこの圧縮方式に適用する場合を述
べる。文字の集合を{a,b,c,d}とする。
べる。文字の集合を{a,b,c,d}とする。
【0058】まず、圧縮するブロックがクラスタの先頭
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
【0059】クラスタの先頭ブロックの圧縮に際して
は、辞書の初期状態は予め定められた状態、例えば図6
(a)のように辞書にはすべての文字が登録されている
状態とする(ステップS2)。クラスタの先頭でないブ
ロックの圧縮に際しては、クラスタの先頭ブロックが圧
縮を終了した時点に辞書を設定する(ステップS3)。
このために、先頭ブロック圧縮終了時点の辞書の状態を
別の領域に格納しておく必要がある。先頭ブロックがa
bbcbbcbacという文字列であったら、図6
(b)に示した状態が、このブロックを圧縮したときの
辞書の状態であり、先頭以外のブロックはこの辞書をこ
の状態に設定してから圧縮を開始するのである。
は、辞書の初期状態は予め定められた状態、例えば図6
(a)のように辞書にはすべての文字が登録されている
状態とする(ステップS2)。クラスタの先頭でないブ
ロックの圧縮に際しては、クラスタの先頭ブロックが圧
縮を終了した時点に辞書を設定する(ステップS3)。
このために、先頭ブロック圧縮終了時点の辞書の状態を
別の領域に格納しておく必要がある。先頭ブロックがa
bbcbbcbacという文字列であったら、図6
(b)に示した状態が、このブロックを圧縮したときの
辞書の状態であり、先頭以外のブロックはこの辞書をこ
の状態に設定してから圧縮を開始するのである。
【0060】辞書の設定が終わったら、圧縮を開始する
(ステップS4)。
(ステップS4)。
【0061】ブロックの圧縮が終了したら、残りのデー
タが存在するかどうか判別する(ステップS5)。残り
のデータが存在する場合には、ブロック番号を1インク
リメントし(ステップS6)、次のブロックの圧縮に移
行する。
タが存在するかどうか判別する(ステップS5)。残り
のデータが存在する場合には、ブロック番号を1インク
リメントし(ステップS6)、次のブロックの圧縮に移
行する。
【0062】本発明に、文脈とその下での文字の出現頻
度を対応させたデータ構造をモデルとした適応的データ
圧縮方式を適用した場合について述べる。文脈の集合を
動的に更新することが可能であるが、ここでは文脈の集
合は1文字から成る集合に固定したモデル(1次マルコ
フモデル)について説明する。このモデルは各文字に対
して出現頻度表を対応させた構造で、出現頻度数はその
文字の下での各文字の出現回数をカウントするカウンタ
の集合である。
度を対応させたデータ構造をモデルとした適応的データ
圧縮方式を適用した場合について述べる。文脈の集合を
動的に更新することが可能であるが、ここでは文脈の集
合は1文字から成る集合に固定したモデル(1次マルコ
フモデル)について説明する。このモデルは各文字に対
して出現頻度表を対応させた構造で、出現頻度数はその
文字の下での各文字の出現回数をカウントするカウンタ
の集合である。
【0063】まず、1次マルコフモデルを利用した適応
的データ圧縮方式の説明を行う。今、入力データの文字
の集合が{a,b,c,d}の4文字から成るとする。
{a,b,c,d}のそれぞれに対して、その文字の次
に現れた文字の出現回数をカウントするカウンタから成
る出現頻度表を用意する。c(x,y)でxという文字
の次にyという文字が現れた回数で表すとする。例えば
aに対しては、c(a,a)、c(a,b)、c(a,
c)、c(a,d)の値を格納する4個のカウンタから
なる出現頻度表を対応させる。
的データ圧縮方式の説明を行う。今、入力データの文字
の集合が{a,b,c,d}の4文字から成るとする。
{a,b,c,d}のそれぞれに対して、その文字の次
に現れた文字の出現回数をカウントするカウンタから成
る出現頻度表を用意する。c(x,y)でxという文字
の次にyという文字が現れた回数で表すとする。例えば
aに対しては、c(a,a)、c(a,b)、c(a,
c)、c(a,d)の値を格納する4個のカウンタから
なる出現頻度表を対応させる。
【0064】入力データx(0)x(1)…x(n)の
符号化は次のような流れで行われる。 (1)カウンタを初期状態に設定する。j=0 (2)次の処理を繰り返す: (i)c(x(j−1),a),c(x(j−1),
b),c(x(j−1),c),c(x(j−1),
d)を用いてx(j)を算術符号化する。(x(j)の
出願確率をc(x(j−1),x(j))/c(x(j
−1))とする。ここで、c(x(j−1))=c(x
(j−1),a)+c(x(j−1),b)+c(x
(j−1),c)+c(x(j−1),d)である。) (ii)c(x(j−1),x(j))←c(x(j−
1)),x(j))+1 (iii)j←j+1。
符号化は次のような流れで行われる。 (1)カウンタを初期状態に設定する。j=0 (2)次の処理を繰り返す: (i)c(x(j−1),a),c(x(j−1),
b),c(x(j−1),c),c(x(j−1),
d)を用いてx(j)を算術符号化する。(x(j)の
出願確率をc(x(j−1),x(j))/c(x(j
−1))とする。ここで、c(x(j−1))=c(x
(j−1),a)+c(x(j−1),b)+c(x
(j−1),c)+c(x(j−1),d)である。) (ii)c(x(j−1),x(j))←c(x(j−
1)),x(j))+1 (iii)j←j+1。
【0065】(iv)j>nとなったら終了。 ここで、x(−1)は予め定められた文字(例えばaと
する)。(2)−(ii)の処理によって出現頻度表が
更新される。(2)−(i)の算術符号化に関しては前
述の単行本「テキストコンプレッション」(pp.10
2−139)に詳述されている。
する)。(2)−(ii)の処理によって出現頻度表が
更新される。(2)−(i)の算術符号化に関しては前
述の単行本「テキストコンプレッション」(pp.10
2−139)に詳述されている。
【0066】本発明の方式をこの圧縮方式に適用する場
合を述べる。
合を述べる。
【0067】まず、圧縮するブロックがクラスタの先頭
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
であるかどうかを判断する(ステップS1)。これは図
1の説明のときと同様にブロック番号から判別できる。
【0068】クラスタの先頭ブロックの圧縮に際して
は、各文字の出現頻度の初期状態は予め定められた設定
とする。例えば図7(a)のようにカウンタをすべて1
にセットする(ステップS2)。文脈木自身も動的に更
新する場合は、例えば文脈木も空の状態に設定する。ク
ラスタの先頭以外のブロックの圧縮に際しては、各文字
の出現頻度の初期状態は図7(b)のようにカウンタを
先頭ブロックが終了した状態に設定する(ステップS
3)。図7(b)において、c0(x,y)は先頭ブロ
ック圧縮終了時のカウンタの値(c(x,y))であ
る。文脈木自身も動的に更新する場合は、文脈木も先頭
ブロックの圧縮が終了したときの文脈木を初期状態とす
る。
は、各文字の出現頻度の初期状態は予め定められた設定
とする。例えば図7(a)のようにカウンタをすべて1
にセットする(ステップS2)。文脈木自身も動的に更
新する場合は、例えば文脈木も空の状態に設定する。ク
ラスタの先頭以外のブロックの圧縮に際しては、各文字
の出現頻度の初期状態は図7(b)のようにカウンタを
先頭ブロックが終了した状態に設定する(ステップS
3)。図7(b)において、c0(x,y)は先頭ブロ
ック圧縮終了時のカウンタの値(c(x,y))であ
る。文脈木自身も動的に更新する場合は、文脈木も先頭
ブロックの圧縮が終了したときの文脈木を初期状態とす
る。
【0069】カウンタの設定が終わったら、圧縮を開始
する(ステップS4)。圧縮の進行に連れてカウンタの
値も更新されていく。
する(ステップS4)。圧縮の進行に連れてカウンタの
値も更新されていく。
【0070】ブロックの圧縮が終了したら、残りのデー
タが存在するかどうかを判別する(ステップS5)。残
りのデータが存在する場合には、ブロック番号を1イン
クリメントし(ステップS6)、次のブロックの圧縮に
移行する。
タが存在するかどうかを判別する(ステップS5)。残
りのデータが存在する場合には、ブロック番号を1イン
クリメントし(ステップS6)、次のブロックの圧縮に
移行する。
【0071】
【発明の効果】次の二つの仮定を置く。
【0072】・圧縮ブロックに訂正不可能なビット(エ
ラー)が現れたときには、そのブロック全体の復元(圧
縮ブロックを元に戻す操作)が不可能。
ラー)が現れたときには、そのブロック全体の復元(圧
縮ブロックを元に戻す操作)が不可能。
【0073】・訂正不可能なビットはランダムに発生、
その確率は十分小さい。
その確率は十分小さい。
【0074】・圧縮ブロックの大きさを一定とする。
【0075】この仮定の下で、本発明を用いた場合の復
元不可能なビット数の平均値は、従来のブロック単位に
独立に圧縮を行うデータ圧縮制御方式で、圧縮ブロック
の大きさを本発明の圧縮ブロックの大きさを2倍にした
ときの値とほぼ一致する。つまり、本発明の圧縮制御に
よる誤り伝搬制御能力は、ブロック単位に独立に圧縮を
行う従来の圧縮制御で圧縮ブロックの大きさを2倍にし
たときの誤り伝搬制御能力と同程度である。
元不可能なビット数の平均値は、従来のブロック単位に
独立に圧縮を行うデータ圧縮制御方式で、圧縮ブロック
の大きさを本発明の圧縮ブロックの大きさを2倍にした
ときの値とほぼ一致する。つまり、本発明の圧縮制御に
よる誤り伝搬制御能力は、ブロック単位に独立に圧縮を
行う従来の圧縮制御で圧縮ブロックの大きさを2倍にし
たときの誤り伝搬制御能力と同程度である。
【0076】圧縮方式としてLZ77型(1文字=1バ
イト、バッファサイズ=8192、一致列の最大値=3
2、ポインタ値は等長符号化)を使用して実験を行っ
た。本発明では圧縮ブロックの大きさを1024バイト
とし、クラスタ内のブロック数は16とした。また、こ
のLZ77型を組み込んだ、ブロック単位に独立に圧縮
を行う従来のデータ圧縮制御方法では圧縮ブロックの大
きさを2倍の2048バイトとした。両者の圧縮率を比
較したところ、本発明の方が2〜5ポイント程度優れて
いることが多かった。つまり、本発明を用いることによ
り、同程度の誤り伝搬制御能力で従来よりも2〜5ポイ
ント程度優れた圧縮率が得られるのである。
イト、バッファサイズ=8192、一致列の最大値=3
2、ポインタ値は等長符号化)を使用して実験を行っ
た。本発明では圧縮ブロックの大きさを1024バイト
とし、クラスタ内のブロック数は16とした。また、こ
のLZ77型を組み込んだ、ブロック単位に独立に圧縮
を行う従来のデータ圧縮制御方法では圧縮ブロックの大
きさを2倍の2048バイトとした。両者の圧縮率を比
較したところ、本発明の方が2〜5ポイント程度優れて
いることが多かった。つまり、本発明を用いることによ
り、同程度の誤り伝搬制御能力で従来よりも2〜5ポイ
ント程度優れた圧縮率が得られるのである。
【0077】また、圧縮方式としてLZ78型(1文字
=1バイト)を使用して実験を行った。LZ78型で使
用する辞書のサイズは十分大きくとった。圧縮ブロック
の大きさは、LZ77型の場合と同様に本発明では10
24バイトとし、従来のデータ圧縮制御方法では2倍の
2048バイトとした。本発明におけるクラスタ内のブ
ロック数もLZ77型の場合と同様に16とした。両者
の圧縮率を比較したところ、本発明の方が1〜4ポイン
ト程度優れていることが多かった。つまり、本発明を用
いることにより、同程度の伝搬制御能力で従来よりも1
〜4ポイント程度優れた圧縮率が得られるのである。
=1バイト)を使用して実験を行った。LZ78型で使
用する辞書のサイズは十分大きくとった。圧縮ブロック
の大きさは、LZ77型の場合と同様に本発明では10
24バイトとし、従来のデータ圧縮制御方法では2倍の
2048バイトとした。本発明におけるクラスタ内のブ
ロック数もLZ77型の場合と同様に16とした。両者
の圧縮率を比較したところ、本発明の方が1〜4ポイン
ト程度優れていることが多かった。つまり、本発明を用
いることにより、同程度の伝搬制御能力で従来よりも1
〜4ポイント程度優れた圧縮率が得られるのである。
【図1】本発明の圧縮処理制御の流れを示す図である。
【図2】従来の圧縮処理制御の流れを示す図である。
【図3】本発明において圧縮ブロックを等長化した場合
の原データと圧縮データのフォーマットを示す図であ
る。
の原データと圧縮データのフォーマットを示す図であ
る。
【図4】本発明の制御の下で圧縮したデータの復元処理
の流れを示す図である。
の流れを示す図である。
【図5】本発明において、圧縮方式としてLZ77型を
使用した場合のバッファの初期状態を示す図である。
使用した場合のバッファの初期状態を示す図である。
【図6】本発明において、圧縮方式としてLZ78型を
使用した場合の辞書の初期状態を示す図である。
使用した場合の辞書の初期状態を示す図である。
【図7】本発明において、圧縮方式として文脈モデル
(1次マルコフモデル)を使用した場合のカウンタの初
期状態を示す図である。
(1次マルコフモデル)を使用した場合のカウンタの初
期状態を示す図である。
なし
Claims (6)
- 【請求項1】データの統計的性質を表すデータ構造であ
るモデルを利用し、前記モデルを動的に更新しながら圧
縮を行う適応的データ圧縮方式におけるデータ圧縮制御
方法において、 入力データをいくつかのブロックに分割し、該ブロック
単位で圧縮を行い、隣接する該ブロックを一定数まとめ
たクラスタを形成し、異なる該クラスタは独立に圧縮を
行い、 該クラスタ内の先頭の該ブロックを圧縮する場合には、
前記モデルの初期状態は予め定められた設定とし、 該クラスタの先頭以外の該ブロックを圧縮する場合に
は、前記モデルの初期状態は該ブロックが属する該クラ
スタの先頭の該ブロックを用いて決定される設定とする
ことを特徴とするデータ圧縮制御方法。 - 【請求項2】該ブロックの大きさを一定とすることを特
徴とする、請求項1に記載のデータ圧縮制御方法。 - 【請求項3】該ブロックの大きさは可変であり、該ブロ
ックを圧縮したときの大きさが等しくなるように該ブロ
ックの大きさを制御することを特徴とする請求項1に記
載のデータ圧縮制御方法。 - 【請求項4】前記モデルとして既に圧縮を終えた入力デ
ータを蓄えるバッファを用い、 前記バッファ内の文字列が入力データ中に再び現れた場
合には、前記文字列の開始位置、長さを表すインデック
スの組を前記文字列に対する符号語とし、 前記バッファを、常に圧縮を終えた最新のデータが格納
するように更新し、 該クラスタの先頭の該ブロックを圧縮する場合には、前
記バッファの初期状態は予め定められた設定とし、 該クラスタの先頭以外の該ブロックを圧縮する場合に
は、前記バッファの初期状態は該ブロックが属する該ク
ラスタの先頭の該ブロックの圧縮が終了したときの前記
バッファの状態とすることを特徴とする請求項1に記載
のデータ圧縮制御方法。 - 【請求項5】前記モデルとして既に圧縮を終えた入力デ
ータ中の文字列にインデックスを対応させる辞書を用
い、 前記辞書内の文字列が再び現れた場合には、前記文字列
の前記辞書におけるインデックスを前記文字列に対する
符号語とし、 前記辞書を、入力データ中に新たに現れた文字列にイン
デックスを割り当て、登録することによって更新し、 該クラスタの先頭の該ブロックを圧縮する場合には、前
記辞書の初期状態は予め定められた設定とし、 該クラスタの先頭以外の該ブロックを圧縮する場合に
は、前記辞書の初期状態は該ブロックが属する該クラス
タの先頭の該ブロックの圧縮が終了したときの前記辞書
の状態とすることを特徴とする請求項1に記載のデータ
圧縮制御方法。 - 【請求項6】前記モデルとして入力データ中に現れた文
字列である文脈の集合と前記文脈の下での入力データ中
の各文字の出現頻度を対応させる構造を用い、 前記文脈の下での前記出現頻度を元に入力データ中の各
文字を符号化し、 前記文脈の集合を、入力データ中に新たに現れた文字列
を前記文脈の集合に加えることによって更新し、また、
前記出現頻度を、入力データ中で前記文脈の下で文字が
現れる度に更新し、 該クラスタの先頭の該ブロックを圧縮する場合には、前
記文脈の集合および文脈の下での各文字の出現頻度の初
期状態は予め定められた設定とし、 該クラスタの先頭以外の該ブロックを圧縮する場合に
は、該ブロックが属する該クラスタの先頭の該ブロック
の圧縮を終了したときに得られる前記文脈の集合および
文脈の下での各文字の出現頻度の初期状態とすることを
特徴とする請求項1に記載のデータ圧縮制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22347995A JP2827982B2 (ja) | 1995-08-31 | 1995-08-31 | データ圧縮制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22347995A JP2827982B2 (ja) | 1995-08-31 | 1995-08-31 | データ圧縮制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0969784A true JPH0969784A (ja) | 1997-03-11 |
JP2827982B2 JP2827982B2 (ja) | 1998-11-25 |
Family
ID=16798785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22347995A Expired - Lifetime JP2827982B2 (ja) | 1995-08-31 | 1995-08-31 | データ圧縮制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2827982B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009057459A1 (ja) * | 2007-10-30 | 2009-05-07 | Nec Corporation | データ圧縮方法 |
CN117278054A (zh) * | 2023-11-21 | 2023-12-22 | 湖北华中电力科技开发有限责任公司 | 一种智慧电网监控数据存储方法及*** |
-
1995
- 1995-08-31 JP JP22347995A patent/JP2827982B2/ja not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009057459A1 (ja) * | 2007-10-30 | 2009-05-07 | Nec Corporation | データ圧縮方法 |
US8532415B2 (en) | 2007-10-30 | 2013-09-10 | Nec Corporation | Data compression method |
CN117278054A (zh) * | 2023-11-21 | 2023-12-22 | 湖北华中电力科技开发有限责任公司 | 一种智慧电网监控数据存储方法及*** |
CN117278054B (zh) * | 2023-11-21 | 2024-02-02 | 湖北华中电力科技开发有限责任公司 | 一种智慧电网监控数据存储方法及*** |
Also Published As
Publication number | Publication date |
---|---|
JP2827982B2 (ja) | 1998-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3273119B2 (ja) | データ圧縮・伸長装置 | |
US5229768A (en) | Adaptive data compression system | |
US8643515B2 (en) | Compressing data using an encoding table | |
EP0375221B1 (en) | Data compression | |
EP1307967B1 (en) | System and method for incremental and continuous data compression | |
JP3006766B2 (ja) | 圧縮された状態におけるデータをエンコードし、デコードし、伝送する方法と装置 | |
US6400289B1 (en) | System and method for performing lossless data compression and decompression | |
US10938410B2 (en) | Hardware friendly data compression | |
US8872677B2 (en) | Method and apparatus for compressing data-carrying signals | |
JP2006262462A (ja) | データ圧縮方法及びシステム | |
JPS6037834A (ja) | 誤り訂正符号の復号方法および復号器 | |
KR19990029626A (ko) | 적응형 데이터 압축을 수행하는 방법 및 장치 | |
JPS6356726B2 (ja) | ||
JPH05241777A (ja) | データ圧縮方式 | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JP2827982B2 (ja) | データ圧縮制御方法 | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
JP3132774B2 (ja) | データ圧縮・復元装置 | |
JPH05241776A (ja) | データ圧縮方式 | |
KR101906036B1 (ko) | Lz78 압축 데이터의 오류 검출 방법 및 이를 이용한 인코더 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JPH0527943A (ja) | データ圧縮方式 | |
JP3442105B2 (ja) | データ圧縮および復元方式 | |
KR100245036B1 (ko) | 개선된 모뎀용 부호화 시스템 및 그 코드워드 생성방법 | |
JP2825960B2 (ja) | データ圧縮方法及び復元方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19980818 |