JP2005521324A - 損失のないデータの圧縮および圧縮解除方法および装置 - Google Patents
損失のないデータの圧縮および圧縮解除方法および装置 Download PDFInfo
- Publication number
- JP2005521324A JP2005521324A JP2003579372A JP2003579372A JP2005521324A JP 2005521324 A JP2005521324 A JP 2005521324A JP 2003579372 A JP2003579372 A JP 2003579372A JP 2003579372 A JP2003579372 A JP 2003579372A JP 2005521324 A JP2005521324 A JP 2005521324A
- Authority
- JP
- Japan
- Prior art keywords
- predictor
- code
- code character
- unpredicted
- hash string
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本発明は、全般的に損失のないデータの圧縮および圧縮解除方法およびそれを実行する装置に関する。その方法は符号文字を1以上の幾つかの予測子テーブルと比較し、予測された符号文字を連続的にカウントし、したがって出力動作数を顕著に減少させることにより処理されるデータストリームの符号文字の予測に基づいている。予測子テーブルのアドレスは1または幾つかのハッシュストリングにより実行され、ハッシュストリングはそれぞれ入力データと相関する特有のハッシュ関数により形成されている。このような方法によるデータストリームの処理は取られた符号文字長にしたがって、圧縮率限定を除去することを可能にし、したがって圧縮率を増加し、同時にデータ処理時間を十分に減少させることを可能にする。
Description
本発明は、一般的に損失のないデータの圧縮および圧縮解除方法およびそれを実行する装置に関する。
データ圧縮方法は速度、圧縮率、必要なメモリスペース、構成の簡単さのような幾つかの重要なパラメータにより特徴付けされる。方法の適用と解決される問題にしたがって、これらのパラメータ間での妥協を見つけることが通常、必要である。現在のIT開発の段階では、圧縮速度と、ネットワークプロトコルレベルで圧縮するための圧縮方法の適切度はますます重要になっている。現在では、例えばLZベースおよび予測子方法のような広く使用されている幾つかの方法が知られている。
LZベースのデータ圧縮方法の論理的背景は、Abraham LempelとJacob Zivの文献IEEE Transactions on Information Theory、IT-23-3、1977年5月、337-343頁およびIEEE Transactions on Information Theory、IT-24-5、1978年9月、530-536頁に記載されている。データ圧縮および圧縮解除システムはLZWシステムとして知られ、モデムで使用される圧縮および圧縮解除において標準V.42ビスとして採択され、例えば米国特許第4,558,302号明細書に記載されている。
LZベースの方法は良好な圧縮率を与えるが、長い処理時間を必要とする複雑なデータ構造が使用されるために、比較的低速度であることが知られている。さらに、複雑なデータ構造のために、特殊化されたチップ形態のこの方法の実行は厄介であり、比較的高いメモリ容量がその応用で必要とされることに注意しなければならない。
予測子による方法を使用する論理的背景は、Timo RaitaとJukka Teuholaの文献(“Text compression using prediction”、1986 ACM Conference on Research and Development in Information Retrieval、1986年9月)と、(“Predictive text compression by hashing”、The Tenth Annual International ACM SIGIR Conference on Research and Development in Information Retrieval、1987年11月)に記載されている。このデータ圧縮および圧縮解除方法はまた米国特許第5,229,768号明細書に開示されている。
予測子方法はLZベース方法と比較して、非常に高速度で簡単であり、必要とするメモリスペースが少ないが、圧縮率は通常低い。この方法の特有の特徴は圧縮されるデータの特性にかかわりなく、圧縮率に制限があり、これは特定の構成で選択される符号文字の長さに依存している。典型的に符号文字の長さは経歴的に形成された状態により規定された8ビットとして取られる。この場合、最大の圧縮率は圧縮されるデータの特性が明白にさらに良好な結果の実現を可能にする場合でさえも8倍である。
それ故、十分に一般的で、既知の方法の欠点が除去される新しい損失のないデータ圧縮および圧縮解除方法が必要とされている。
驚くべきことに、符号文字を1以上の予測子テーブルに記憶された予測子と比較し、予測された符号文字を連続的にカウントし、したがって出力動作数を基本的に減少することにより処理されるデータストリームの符号文字の予測に基づいて、圧縮率制限を除去することが可能であり、取られた符号文字の長さに応じて、および同時にデータ処理速度を大幅に増加することが可能であることが発見されている。
本発明は圧縮された出力コードストリームを得るために入力データ符号文字ストリームをコード化する改良された方法を提供し、その方法は、
a)入力データ符号文字ストリームの符号文字を予測子テーブル中に記憶されハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および/または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数により形成され、
b)複数の連続的に予測された符号文字と、その連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
c)予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
d)ハッシュストリングを更新するステップを含んでいる。
a)入力データ符号文字ストリームの符号文字を予測子テーブル中に記憶されハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および/または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数により形成され、
b)複数の連続的に予測された符号文字と、その連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
c)予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
d)ハッシュストリングを更新するステップを含んでいる。
さらに、特別な方法の実行により必要とされるならば、前述のステップ(b)は本発明にしたがってさらに、
i)前記予測されていない符号文字を次の予測子テーブルに記憶された予測子と比較し、
ii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致するならば、複数の連続的に予測された符号文字と、前記次の予測子テーブルの識別子をコード化し、または、
iii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字と、その符号文字のすぐ後に続く予測されていない符号文字をコード化するステップを含んでいる。
i)前記予測されていない符号文字を次の予測子テーブルに記憶された予測子と比較し、
ii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致するならば、複数の連続的に予測された符号文字と、前記次の予測子テーブルの識別子をコード化し、または、
iii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字と、その符号文字のすぐ後に続く予測されていない符号文字をコード化するステップを含んでいる。
さらに、前記予測されていない符号文字と次の予測子テーブルに記憶された予測子とが一致しない場合(ステップiii)、本発明による方法は全ての存在する予測子テーブルが使用されるまで、ステップ(i)から(iii)が反復的に実行されることができるように行われる。
幾つかの予測子テーブルを使用する可能性は成功した予測ケースの数を増加し、したがってデータ圧縮率、速度も同様に増加する。
比較速度の増加は、入力データ符号文字ストリームの符号文字と2以上の既存の予測子テーブル中に記憶された予測子との並列比較を行う可能性によりかなり促進される。
圧縮されるデータに対する良好な適合を行い、それによってそれらの圧縮率をさらに増加させるために、1以上のハッシュストリングが種々の予測子テーブルの予測子をアドレスするために使用され、各ハッシュストリングは入力データと相関する特有のハッシュ関数により形成される。
さらに、特別な問題、例えばさらに高い速度への適合またはより良好な圧縮率へ調節することが必要ならば、本発明による方法は予め決定された方法にしたがって予測子テーブルを更新する選択的なステップを含むことができる。
プロセスの開始時に、本発明による方法はハッシュストリングを初期化する付加的なステップを含み、予め決定された値が前記ハッシュストリングに割当てられる。
本発明によれば、圧縮解除方法はオリジナルデータストリームを得るために、圧縮されたコードストリームを圧縮解除するために行われ、この方法は、圧縮方法の特定の実行のステップに適合するステップを含み、適切なデータ構造を含んでいる。本発明による方法は、正確に回復された初期データ符号文字ストリームが圧縮解除により得られることを確実にする。
前述の圧縮および圧縮解除方法は別にして、本発明の目的を達成するために、圧縮および圧縮解除方法のそれぞれのステップを実行するように構成された手段を具備する適切な圧縮および圧縮解除装置が提供される。
本発明による方法および装置は、予測子テーブル数、ハッシュ関数およびそれらの数、予測子テーブルの更新方法、取られた符号文字長、構成のタイプ(ソフトウェア、ハードウェア)等を変化することにより非常に広範囲の要求に適合されることができ、別々にまたは他の装置と共に、種々の応用、例えばデータのバックアップコピーの生成、オンラインデータ伝送システムのデータ圧縮、インターネットに位置する情報の圧縮、移動体装置およびポータブル装置でのデータの圧縮で使用されることができる。
本発明による方法の簡単なデータ構造の使用は、高い圧縮速度の実現と必要なメモリスペースの減少を助ける。
以下、実施形態の例に基づいて、添付図面を参照し、本発明を詳細に説明する。
本発明によるデータ圧縮方法は、圧縮速度、圧縮率、必要なメモリスペース、構成の簡単さのようなこのような要求にしたがって、多かれ少なかれ複雑な方法で実現されることができる。図1から図4を参照して、以下、本発明の基本的な考えを容易に明白および理解可能にするため、本発明の実施形態の1つを説明し、これは高い圧縮速度、必要とする少ないメモリスペース、最大の容易さに関する。
この本発明の実施形態では、1つのハッシュ関数が入力データ符号文字ストリームからハッシュストリングを形成するために使用される。この本発明による方法の実行は最大の速度と必要とするメモリスペースを少なくすることを目的とするので、ストリングの長さが1つの符号文字の長さに等しい簡単なハッシュ関数が選択されるが、ゼロ値が最初のステップのハッシュストリングに割当てられるプロセスの開始時を除いて、その現在値は常に先に処理された符号文字に等しい(HASH=LastChr)。図1は先に処理された符号文字の値120、121、122がそれぞれハッシュストリングに割当てられている連続的な処理による入力符号文字110、111、112を示している。
ハッシュストリングは特別な記憶領域のセル、即ち予測子テーブル100(図1)のアドレスに使用される。本発明のこの実施形態は高い圧縮速度、少ない必要なメモリスペース、簡単さを意図するものであり、1つのテーブルは予測子の記憶に使用される。データ処理システムでは1つの符号文字の長さが通常8ビットとして取られる経歴的な開発状態を考慮すると、符号文字の長さと予測子の長さは本発明の実施形態でも8ビットとして取られる。したがって、ハッシュストリングは256の異なる値を取ることができ、それ故、予測子テーブルでは256のセルをアドレスできる。それはテーブル100で必要なメモリスペースを規定し、これはこの特別なケースでは256バイトのみである。
圧縮プロセスの開始時、予測子テーブル100はセルをゼロで充填することにより開始される。入力データストリームの符号文字の処理中、これらは予測子テーブルのハッシュストリングによりアドレスされる対応する値、即ち予測子と比較される。図1では、入力符号文字110は予測子101と比較され、入力符号文字111は予測子102と比較され、入力符号文字112は予測子103と比較されることが認められる。それによって、入力符号文字の処理中、それらを予測する試みが行われる。連続的に予測された符号文字をカウントするために、ゼロ値がプロセスの開始時に割当てられるカウンタが使用される。
比較が結果がネガチブの場合、カウンタの現在値はイライアス(Elias)デルタコード(図3のB)によりコード化され、予測されない符号文字と共に出力される。予測子テーブルの内容もまた予測されない符号文字を同一のセルに記録することにより比較が行われた値で更新され、したがって入力データストリームについての情報のダイナミックな変更は予測子テーブルで累積される。
結果として、多数の連続的に予測された符号文字と予測されない符号文字のコード化された値を有する出力コードストリームが得られる。図3のAは入力データ符号文字ストリーム301、各符号文字の処理により得られる対応するカウンタ値302、コード化されたカウンタ値を出力するために必要とされるビット数304の簡単な例を示している。テーブル311、312、313では、予測子テーブルの状態が示されている。この簡単な例では3つの異なる符合が入力データ符号文字ストリームを処理するために使用されるので、ハッシュストリングもしたがって3つの値しか取ることができない。圧縮プロセスで累積された予測子は既に3つの可能なアドレス下で記憶され、さらに入力符号文字がハッシュストリングによりアドレスされる予測子に一致する連続が続くことがテーブル状態311から認められる。適合段に続いて入力符号文字の予測ケースの連続が後続する態様と、本発明にしたがったデータ圧縮方法の重要な原理がここで明白に示されている。例によれば、そこに示されている入力ストリームフラグメントは13の符号文字からなる(13*8=104ビット)。出力ストリームは6の予測されない符号文字(6*8=48ビット)とコード化されたカウンタ値(1+1+1+1+5+3=12ビット)からなる。1対1の回復可能なコード化された出力ストリームの60ビットが入力符号文字の104ビットから得られる圧縮プロセスの結果を明白に示している。
圧縮プロセスは図2で詳細に示されている。最初に、ステップ200が行われ、そこでゼロ値がハッシュストリングに割当てられる。このステップ200で、予測子テーブルはまたそのセルをゼロで充填することにより開始される。その後、ステップ210のセットが続き、多数の連続的に予測されたデータ符号文字が得られる。これは幾つかのステップからなる。ステップ211で、ゼロ値がカウンタに割当てられる。その後ステップ212の符号文字入力が続くが、ステップ213で、入力符号文字がハッシュストリングによりアドレスされる予測子値に一致するか否かがチェックされる。チェック結果がポジチブであるならば、ステップ214で、カウンタは1だけ増加され、ステップ215で使用される先に示されたハッシュ関数にしたがって、ハッシュストリングは処理されている予測された符号文字の値を割当てることにより更新される。その後、ステップ216で、次の符号文字入力が行われ、それに後続してチェックステップ213に戻される。ステップ213のチェック結果が否定的であるならば、ステップ220でカウンタ値はイライアスデルタコードによりコード化され、予測されない符号文字と共に出力され、したがって圧縮されたデータストリームを生成する。その後、ステップ230で予測子テーブルの内容は、予測されない符号文字を同じセルに記録することにより比較が行われた値で更新される。さらにステップ240で、ハッシュストリングはそれに予測されない符号文字の値を割当てることにより更新され、前述のステップ211への帰還が行われる。プロセスはループで継続し、結果として圧縮された1対1の回復可能なデータストリームが得られる。
圧縮解除プロセスでは、初期データストリームはカウンタ値と予測されない符号文字のストリームを処理することによりコード化に対応する復号の後に得られる。圧縮解除プロセスは図4に示されている。最初に、ステップ400が行われ、ハッシュストリングと予測子テーブルが初期化される。このステップ400では、同一値がハッシュストリングと、データ圧縮の初期ステップ200(図2)で使用された予測子テーブルのセルに割当てられ、これは本発明のこの実施形態ではゼロである。次のステップ410では、圧縮されたデータストリームは復号され、カウンタ値と予測されない符号文字が得られる。その後、ステップ421でカウンタ値がゼロに等しいか否かのチェックが行われる。チェックの結果が肯定的であるならば、ステップ430で、前記予測されない符号文字が出力される。その後、ステップ440で、予測子テーブルの内容はこの予測されない符号文字をハッシュストリングによりアドレスされたセルへ記憶することにより更新される。さらにステップ450で、ハッシュストリングは出力された予測されない符号文字の値をそれに割当てることにより更新され、前述のステップ410へ戻ることにより後続する。ステップ421のチェック結果が否定的であるならば、ステップ422でハッシュストリングによりアドレスされる予測子は予測子テーブルから出力される。ステップ432で、ハッシュストリングはそれにステップ422の予測子出力の値を割当てることにより更新される。さらにステップ424で、カウンタは1つデクリメントされ、カウンタ値をチェックするステップ421へ戻す動作が行われる。結果として、カウンタ値がゼロに到達するまで、ステップ420のセットを循環的に反復することによって、圧縮プロセスで連続的に予測された符号文字が出力される。このような方法で、初期データストリームは圧縮プロセスで予測された符号文字と予測されない符号文字とを出力することにより得られる。
さらに、本発明のさらに複雑な実施形態を説明し、その構成により、前述の実施形態と比較して実質的にさらに高い圧縮率が実現される。
図5のAに示されているように、本発明の第1の実施形態と異なって、4つの予測子テーブル501、502、503、504は予測子の記憶に使用され、2つのハッシュ関数はハッシュストリング1(520)とハッシュストリング2(521)をそれぞれ形成するために使用される。さらにハッシュストリング1(520)は一度に3つの予測子テーブル1、2、3(それぞれ501、502、503)でのアドレスに使用されるが、ハッシュストリング2(521)は1つの予測子テーブル4(504)でのアドレスに使用される。
1つのハッシュストリングによりアドレスされる幾つかの予測子テーブルを使用することにより、圧縮プロセスで、予測子のバリアントは前記予測子テーブル中に累積することが実現される。処理される符号文字とこれらのテーブル中の予測子との比較が連続して行われるならば、第1のテーブルから開始して、予測子テーブルの更新の適切な方法を適用することにより、圧縮プロセスで、予測子のバリアントは通常、最も頻繁に生じる予測子がテーブル1中に記憶され、他は発生頻度にしたがって、降順にテーブル2および3に記憶される方法で分配されることが実現される。
図5のBに示されているように、ハッシュ関数の1つは、1つの符合の3つの下位ビットと次の符号文字の3つの上位ビットとのXOR論理機能を行い、ゼロ値が初期化ステップのハッシュストリングに割当てられるときのプロセスの開始を除いて、その結果の15の下位ビットを維持することにより(HASH=(HASH<<5)^Last(Chr)&0×7FFF)、3つの先に処理された符号文字530、531、532からハッシュストリング1(540)(したがって図5のAの520)を形成する。
使用される第2のハッシュ関数は本発明の第1の実施形態と同一である。そのストリング(図5のAの521)の長さは1つの符号文字の長さに等しいが、ゼロ値が初期化ステップのハッシュストリング中に割当てられるときのプロセスの開始を除いて、その現在値は常に先に処理された符号文字に等しい(HASH=LastChr)。
特定の入力符号文字の処理中、現在のハッシュストリングは対応する予測子テーブル中の予測子をアドレスする。図5のAに示されているように、ハッシュストリング1(520)は予測子1(511)、予測子2(512)、予測子3(513)をアドレスし、一方、ハッシュストリング2(521)は予測子4(514)をアドレスする。本発明のこの実施形態の符号文字の長さが8ビットとして取られるので、ハッシュストリング1(520)の長さは15ビットであるが、ハッシュストリング2(521)の長さは8ビットである。これは予測子テーブルの容量を規定し、即ち予測子テーブル1、2、3は32キロバイトを必要とし、予測子テーブル4は256バイトを必要とする。
幾つかの異なるハッシュ関数を組合わせて使用することにより、種々のデータタイプに対するその適合速度と適切性の増加を確実にする。その結果として、これはデータストリームの高い圧縮率を得ることを可能にする。
段階的に圧縮プロセスの詳細が図6Aと6Bに示されている。最初に、初期化ステップ600が行われ、ゼロ値がハッシュストリングに割当てられる。ステップ600では、予測子テーブルはそれらのセルをゼロで充填することにより初期化される。さらにそれに続いてステップ610で、符号文字の入力が行われ、ステップ620でハッシュストリング1によりアドレスされる予測子1および予測子2がゼロに等しいか否かがチェックされる。ステップ620のチェック結果が否定的であるならば、即ち少なくとも1つのチェックされた予測子がゼロに等しくないならば、ステップセット630が行われ、それにおいて複数の連続的に予測された入力データ符号文字はカウンタにより得られる。ステップセット630はステップ631で開始され、ゼロ値がカウンタに割当てられる。さらにステップ632で、処理されている符号文字がハッシュストリング1によりアドレスされる予測子1と一致するか否かがチェックされる。それをチェックすることにより、処理される符号文字が予測子1と一致することが発見されたならば、ステップ633が行われ、カウンタが1だけ増加される。その後ステップ634で、ハッシュストリング1とハッシュストリング2の値はしたがって前述のハッシュ関数を使用して更新される。さらにステップ635で、次の符号文字入力は入力データストリームから後続し、ステップ632への帰還が行われる。したがって多数の連続的に予測されたデータ符号文字はカウンタ中に累積される。
ステップ632でのチェックにより、処理される符号文字と予測子1との間の不一致が発見されたならば、カウンタ値が6よりも大きいか否かをチェックするためにステップ650が行われる。チェックによって、カウンタの値が6よりも大きいことが発見されたならば、ステップ651が行われ、そこではコード257はコード化され出力され、その後、7だけ減少されたカウント値(カウンタ−7)がコード化され、出力される。
その後ステップ690が行われ、処理されている符号文字とハッシュストリング2によりアドレスされる予測子4との一致がチェックされる。チェック結果が肯定的であるならば、ステップ694が後続し、そこでコード256はコード化され出力される。さらにステップ693で、予測子テーブル1、予測子テーブル2、予測子テーブル3が更新される。更新プロセスでは、予測子テーブル2からハッシュストリング1によりアドレスされた予測子2は予測子テーブル3のセルへ転送され、これはハッシュストリング1によりアドレスされる。その後、ハッシュストリング1によりアドレスされたセル中の予測子テーブル2では、処理されている符号文字が記憶され、本発明のこの実施形態で選択された更新方法にしたがって、変化されない状態に保持される。さらに、ステップ699では前述のハッシュ機能の適切な使用により、ハッシュストリング1とハッシュストリング2は更新され、符号文字入力ステップ610への帰還が行われる。
ステップ690で行われるチェック結果が否定的であるならば、ステップ691が行われ、処理された符号文字はコード化され、予測されない符号文字として出力される。その後ステップ692が後続し、予測子テーブル4が更新される。予測子テーブル4の更新プロセスでは、ハッシュストリング2によりアドレスされる予測子4は前記予測されない符号文字により置換される。さらに、前述のステップ693、699が連続して実行され、符号文字入力ステップ610への帰還が行われる。
ステップ650でのチェックにより、カウンタ値が6以下であることが発見されたならば、ステップ660が行われ、処理されている符号文字とハッシュストリング1によりアドレスされる予測子2との間の一致がチェックされる。チェック結果がイエスであるならば、ステップ661が行われ、予測子テーブル1と予測子テーブル2の内容が更新される。この更新プロセスでは、ハッシュストリング1によりアドレスされる予測子1は予測子テーブル1から予測子テーブル2のセルへ転送され、これはハッシュストリング1によりアドレスされる。次にハッシュストリング1によりアドレスされるセルへの予測子テーブル1では、処理されている符号文字が記憶される。結果として、ハッシュストリング1によりアドレスされる予測子1と予測子2の値は相互に交換される。さらにステップ662が行われ、コード258+カウンタ*3がコード化され出力される。その後、ステップ699が後続し、そこで前述のハッシュ関数を適切に使用することによって、ハッシュストリング1とハッシュストリング2が更新され、符号文字入力ステップ610への帰還が行われる。
ステップ660で実行されたチェック結果がノーであるならば、ステップ670が行われ、処理されている符号文字と、ハッシュストリング1によりアドレスされる予測子3との一致がチェックされる。ステップ670で行われたチェック結果がイエスであるならば、ステップ671が行われ、予測子テーブル2と予測子テーブル3の内容が更新される。この更新プロセスでは、予測子テーブル2からハッシュストリング1によりアドレスされる予測子2は予測子テーブル3と、ハッシュストリング1によりアドレスされるセルへ転送される。ハッシュストリング1によりアドレスされるセルの予測子テーブル2では、処理されている符号文字が記憶される。結果として、ハッシュストリング1によりアドレスされる予測子2と予測子3の値は相互に交換される。さらにステップ672が行われ、コード259+カウンタ*3がコード化されて出力される。これにステップ699が後続し、前述のハッシュ関数を適切に使用することにより、ハッシュストリング1とハッシュストリング2が更新され、符号文字入力ステップ610への帰還が行われる。
ステップ670で行われたチェック結果がノーであるならば、ステップ680が行われ、コード260+カウンタ*3がコード化され出力される。さらに前述のステップ690および連続するステップが後続する。
圧縮プロセスの説明では、前述のステップ620へ戻り、ここでハッシュストリング1によりアドレスされた予測子1と予測子2がゼロに等しいか否かがチェックされる。ステップ620で行われたチェック結果がイエスであるならば、ステップ640が行われ、予測子テーブル1、予測子テーブル2、予測子テーブル3は、処理されている符号文字値がハッシュストリング1によりアドレスされる予測子1に割当てられ、符号文字の値‘‘(20H)が予測子2に割当てられ、予測子3には符号文字の値‘e’(65H)が割当てられる方法で更新される。さらに、前述のプロセス690および連続するステップが後続する。このようにして、潜在的に最も頻繁に発生する予め定められた符号文字の値は予測子テーブルのセルに割当てられ、プロセス開始の初期化後、さらなる圧縮プロセスにおいて占有されず、予測される符号文字の数を増加し、データストリームの圧縮率を改良する。
圧縮プロセスのステップ651、662、672、680、691、694では、情報はコード化され、出力され、したがって圧縮されたデータストリームを形成する。符号文字の長さが8ビットとして取られるとき、可能な符号文字コードは0から255の範囲内である。それ故、ステップ651、662、672、680、694の前述のコードでは、この範囲はコード256で開始する出力情報を形成するために使用され、したがって明白に圧縮プロセス中に行われるアクションを識別し、したがって圧縮解除プロセスで1対1でオリジナルデータストリームを再生する可能性を与える。
圧縮率を増加するため、処理された情報をコード化するためエントロピーコーダを使用することが有効であり、これはハフマン、距離または算術コーダ等の幾つかの広く知られているコーダの中から選択されることができる。したがって、ハフマンコーダはステップ651を除いて説明した本発明の実施形態の前述のステップでコード化のために使用される。ステップ651では、値257はハフマンコーダでコード化され、一方、値カウンタ−7はイライアスデルタコードでコード化される。これは値カウンタ−7がハフマンコーダが効率的ではなくなる大きな値に到達できるためである。ステップ650のカウンタ値のチェック(カウンタ>6)は使用されるアルファベットを限定する機会を与え、したがってハフマンコーダによるさらに効率的なコード化に適合する。
圧縮解除プロセスは本発明の第1の実施形態の開示により、詳細に説明されており、この例では、特定の圧縮の実行にしたがって、類似の方法で行われる。当業者に対しては、圧縮プロセスについての情報を使用して、前述の本発明の第2の実施形態の圧縮解除プロセスの実行と、本発明にしたがった方法を使用して他の圧縮および圧縮解除の多かれ少なかれ複雑なケースの実行に問題はない。
本発明の説明した実施形態では、入力データストリームが完了していないか否かをチェックするステップは詳細には説明されていない。これは通常の動作であり、当業者に良く知られているので、その説明を含めることは圧縮の説明の明白で容易な理解を邪魔するだけである。
本発明による方法を前述の本発明の実施形態により示し、説明したが、これは種々の可能な実行と本発明の技術的範囲を限定するものではない。
すなわち、例えば、本発明の説明した実施形態では、予測子テーブルは圧縮プロセスで更新されるが、圧縮されるデータの構造が既に知られているケースも可能であり、予測子テーブルを更新しない方法の実行はさらに効率的である。この場合、予測子テーブルの内容は予め準備され、圧縮プロセス中に更新されない。
さらに、予測子テーブルが前もって処理された内容を使用して圧縮プロセスの開始時に初期化され、さらに圧縮プロセス中に更新されるような別の方法が可能である。このような方法の変化は、圧縮されるデータの構造が部分的に知られているときに効率的である。
幾つかの予測子テーブルが使用されるとき、異なる予測子テーブルで異なる更新方法を適用することが可能である。このように方法の使用を組合わせることは種々の目的での本発明にしたがったデータ圧縮方法の応用を可能にする。本発明の前述の第2の実施形態では、予測子テーブルの更新中、予測子値はテーブル間で転送され、これは予測子テーブルのさらに頻繁に発生する値を記憶し、その値と処理された符号文字の比較が開始される。またこのような場合に、異なる方法の適用も可能であり、これは当業者が特定の目標を実現するために必然的にこれらを実行することに対して何等の問題も生じない。
さらに、本発明によれば、幾つかの異なるハッシュ関数が使用されることができ、その組合わせは圧縮される異なるタイプのデータに高い適合速度と良好な適合性を与える。結果として、これは高い圧縮率へ到達することを可能にする。
本発明の説明した実施形態では、プロセスのステップは連続して行われるが、ステップの少なくとも一部が並列して行われる方法を実行させることが可能である。例えば、処理されている現在の符号文字と幾つかの予測子との並列比較を行うことが可能であり、これはさらに高い圧縮速度を与えることを可能にする。
本発明による方法は他の方法とは別に、またはそれと共に使用されることができる。さらに、動作時間の高レベルの予測能力はこの方法の卓越した特性であり、即ち入力データストリームの符号文字にかかわりなく、その処理時間が予測可能であり、固定されることが可能である場合、その実行が可能である。
Claims (16)
- 圧縮された出力コードストリームを得るために入力データ符号文字ストリームをコード化する方法において、
a)入力データ符号文字ストリームの符号文字を予測子テーブル中に記憶され、ハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および/または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数により形成され、
b)複数の連続的に予測された符号文字と、その連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
c)予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
d)ハッシュストリングを更新するステップを含んでいる方法。 - ステップ(b)はさらに、
i)前記予測されていない符号文字を次の予測子テーブルに記憶された予測子と比較し、
ii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致するならば、複数の連続的に予測された符号文字と、前記次の予測子テーブルの識別子をコード化し、または、
iii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字と、その符号文字のすぐ後に続く予測されていない符号文字をコード化するステップを含んでいる請求項1記載の方法。 - 前記予測されていない符号文字が前記次の予測子テーブルに記憶された前記予測子と一致しない場合、全ての存在する予測子テーブルが使用されるまで、ステップ(i)から(iii)が反復的に実行される請求項2記載の方法。
- 2以上のハッシュストリングは種々の予測子テーブル中の予測子をアドレスするために使用され、各ハッシュストリングは入力データと相関する特有のハッシュ関数により形成されている請求項2または3記載の方法。
- さらに、予め決定された方法にしたがって予測子テーブルを更新する選択的なステップを含んでいる請求項2または3記載の方法。
- 入力データストリームの符号文字は2以上の既存の予測子テーブル中に記憶された予測子と並列で比較される請求項2または3記載の方法。
- さらに、プロセスの開始時に前記ハッシュストリングを初期化するステップを含み、予め決定された値が前記ハッシュストリングに割当てられる請求項1記載の方法。
- 圧縮されたコードストリームの圧縮解除方法において、
オリジナルデータストリームを得るために、前記圧縮方法のステップに適合したステップと、適切なデータ構造を含んでいる請求項1乃至7のいずれか1項記載の圧縮方法により得られる圧縮されたコードストリームの圧縮解除方法。 - 圧縮された出力コードストリームを得るため入力データ符号文字ストリームをコード化する装置において、
a)入力データ符号文字ストリームの符号文字を予測子テーブルに記憶され、ハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および/または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数の手段により形成されており、
b)複数の連続的に予測された符号文字およびその連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
c)予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
d)ハッシュストリングを更新するように構成された手段を含んでいる装置。 - 前記(b)のために構成された前記手段はさらに、
i)前記予測されていない符号文字を次の予測子テーブル中に記憶された予測子と比較し、
ii)前記予測されていない符号文字が前記次の予測子テーブル中に記憶された予測子と一致するならば、複数の連続的に予測された符号文字および前記次の予測子テーブルの識別子をコード化し、または、
iii)前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字およびその符号文字のすぐ後に続く予測されていない符号文字をコード化するために構成された手段を含んでいる請求項9記載の装置。 - 前記手段は、前記予測されていない符号文字が前記次の予測子テーブルに記憶された前記予測子と一致しない場合、全ての存在する予測子テーブルが使用されるまで、ステップ(i)から(iii)を反復的に実行されるように構成されている請求項10記載の装置。
- 2以上のハッシュストリングが種々の予測子テーブル中の予測子をアドレスするために使用されることができ、各ハッシュストリングが入力データと相関する特有のハッシュ関数により形成されるように構成されている請求項10または11記載の装置。
- さらに、予め決定された方法にしたがって予測子テーブルを更新する選択的な手段を含んでいる請求項10または11記載の装置。
- さらに、入力データストリームの符号文字を2以上の既存の予測子テーブルに記憶された予測子と並列で比較する手段を含んでいる請求項10または11記載の装置。
- さらに、予め決定された値を前記ハッシュストリングに割当てることにより、プロセスの開始時に前記ハッシュストリングを初期化する手段を具備している請求項9記載の装置。
- 圧縮されたコードストリームを圧縮解除する圧縮解除装置において、オリジナルデータストリームを得るために、前記圧縮手段に適合した手段を具備している請求項9乃至15のいずれか1項記載の圧縮手段を具備している装置で得られる圧縮されたコードストリームを圧縮解除する圧縮解除装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
LVP-02-45A LV13012B (en) | 2002-03-22 | 2002-03-22 | Method and apparatus for lossless compression and decompression of data |
PCT/LV2003/000002 WO2003081783A1 (en) | 2002-03-22 | 2003-03-21 | Method and apparatus for lossless compression and decompression of data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005521324A true JP2005521324A (ja) | 2005-07-14 |
Family
ID=28450151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003579372A Withdrawn JP2005521324A (ja) | 2002-03-22 | 2003-03-21 | 損失のないデータの圧縮および圧縮解除方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050193022A1 (ja) |
EP (1) | EP1488527A1 (ja) |
JP (1) | JP2005521324A (ja) |
AU (1) | AU2003208648A1 (ja) |
LV (1) | LV13012B (ja) |
WO (1) | WO2003081783A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7705753B2 (en) * | 2005-10-22 | 2010-04-27 | Sytex, Inc. | Methods, systems and computer-readable media for compressing data |
US8296484B2 (en) * | 2006-03-30 | 2012-10-23 | Harris Corporation | Alphanumeric data entry apparatus and method using multicharacter keys of a keypad |
KR101049699B1 (ko) * | 2009-07-17 | 2011-07-15 | (주)이스트소프트 | 데이터의 압축방법 |
US8990217B2 (en) * | 2011-07-13 | 2015-03-24 | International Business Machines Corporation | Lossless compression of high nominal-range data |
US10097201B1 (en) * | 2017-11-30 | 2018-10-09 | Intel Corporation | LZ77 compression of data with data runs |
US10454498B1 (en) * | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
CN111181569B (zh) * | 2019-12-31 | 2021-06-15 | 山东信通电子股份有限公司 | 一种时序数据的压缩方法、装置以及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
US5229768A (en) * | 1992-01-29 | 1993-07-20 | Traveling Software, Inc. | Adaptive data compression system |
US5805911A (en) * | 1995-02-01 | 1998-09-08 | Microsoft Corporation | Word prediction system |
US5748512A (en) * | 1995-02-28 | 1998-05-05 | Microsoft Corporation | Adjusting keyboard |
US6272624B1 (en) * | 1999-04-02 | 2001-08-07 | Compaq Computer Corporation | Method and apparatus for predicting multiple conditional branches |
-
2002
- 2002-03-22 LV LVP-02-45A patent/LV13012B/lv unknown
-
2003
- 2003-03-21 JP JP2003579372A patent/JP2005521324A/ja not_active Withdrawn
- 2003-03-21 WO PCT/LV2003/000002 patent/WO2003081783A1/en active Application Filing
- 2003-03-21 AU AU2003208648A patent/AU2003208648A1/en not_active Abandoned
- 2003-03-21 EP EP03707231A patent/EP1488527A1/en not_active Withdrawn
- 2003-03-21 US US10/508,770 patent/US20050193022A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
LV13012B (en) | 2003-06-20 |
US20050193022A1 (en) | 2005-09-01 |
EP1488527A1 (en) | 2004-12-22 |
WO2003081783A1 (en) | 2003-10-02 |
AU2003208648A1 (en) | 2003-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5867114A (en) | Method and apparatus for performing data compression | |
US5710562A (en) | Method and apparatus for compressing arbitrary data | |
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
US7051126B1 (en) | Hardware accelerated compression | |
US5877711A (en) | Method and apparatus for performing adaptive data compression | |
US5673042A (en) | Method of and an apparatus for compressing/decompressing data | |
JPH07104971A (ja) | ネットワークパケットに適用される小型辞書を用いた圧縮方法 | |
EP0903865A1 (en) | Method and apparatus for compressing data | |
US20220368345A1 (en) | Hardware Implementable Data Compression/Decompression Algorithm | |
US6304676B1 (en) | Apparatus and method for successively refined competitive compression with redundant decompression | |
JPH06224778A (ja) | マッチングストリング探索およびハフマン符合化を用いたデータ圧縮装置および方法 | |
JP2003524983A (ja) | 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置 | |
JPH11340838A (ja) | 符号化装置および復号装置 | |
JP2005521324A (ja) | 損失のないデータの圧縮および圧縮解除方法および装置 | |
EP0435802B1 (en) | Method of decompressing compressed data | |
US5010344A (en) | Method of decoding compressed data | |
Mathpal et al. | A research paper on lossless data compression techniques | |
EP0340039B1 (en) | Search tree data structure encoding for textual substitution data compression systems | |
Konecki et al. | Efficiency of lossless data compression | |
Ambadekar et al. | Advanced data compression using J-bit Algorithm | |
EP0340041B1 (en) | Start, step, stop unary coding for data compression | |
Ghuge | Map and Trie based Compression Algorithm for Data Transmission | |
Hoang et al. | Dictionary selection using partial matching | |
KR100462789B1 (ko) | 이진 산술 부호화를 이용한 다중 부호 데이터 압축 방법및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20061205 |