JP3231663B2 - データ圧縮方法 - Google Patents

データ圧縮方法

Info

Publication number
JP3231663B2
JP3231663B2 JP15206597A JP15206597A JP3231663B2 JP 3231663 B2 JP3231663 B2 JP 3231663B2 JP 15206597 A JP15206597 A JP 15206597A JP 15206597 A JP15206597 A JP 15206597A JP 3231663 B2 JP3231663 B2 JP 3231663B2
Authority
JP
Japan
Prior art keywords
symbol
stream
sequence
code
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.)
Expired - Fee Related
Application number
JP15206597A
Other languages
English (en)
Other versions
JPH1065551A (ja
Inventor
マティアス ヨッシ
センク サヒナルプ スレイマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of JPH1065551A publication Critical patent/JPH1065551A/ja
Application granted granted Critical
Publication of JP3231663B2 publication Critical patent/JP3231663B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データの圧縮およ
び圧縮されたデータの復元に関する。
【0002】
【従来の技術】従来のデータ圧縮方式では、ディジタル
データのストリーム(流れ)を圧縮された符号ストリー
ムに符号化し、圧縮された符号ストリームを対応するも
とのデータストリームに復号化する。符号ストリームが
「圧縮されている」と呼ばれるのは、一般に符号ストリ
ームはもとのデータストリームに含まれる記号よりも少
ない個数の符号から構成されるためである。これらの少
数の符号は、もとのデータの場合よりも少ない量のメモ
リに格納されることが可能となる。さらに、圧縮された
符号ストリームは、圧縮されていないもとのデータの場
合よりも短い時間で、有線、無線または光ファイバシス
テムの受信器へ伝送されることが可能となる。
【0003】従来の圧縮技術を2つのクラスに分ける
と、特殊目的の技術と汎用の技術に分けられる。特殊目
的の圧縮技術は、特殊なタイプのデータを圧縮するため
に設計され、実装は安価であることが多い。特殊目的の
圧縮技術の例としては、ランレングス符号化、ゼロ抑制
符号化、ヌル抑制符号化およびパターン置換がある。こ
れらの圧縮方法は一般に共通の特性および冗長性を有す
るデータを圧縮するので、一般的に、圧縮率は比較的小
さい。圧縮率とは、圧縮された符号の長さの、もとのデ
ータの長さに対する比である。しかし、特殊目的の圧縮
方法は、そのような方法が利用する共通の特性を有しな
いさらに一般的な性質のデータを圧縮する際には有効で
はなくなる。
【0004】汎用の圧縮技術は、1つのタイプのデータ
を特別に圧縮するために設計されたものではなく、圧縮
プロセス中でさまざまなタイプのデータに適応する。こ
の種のデータ圧縮技術には、Huffman法、Lemple-Ziv-78
(LZ−78)法およびLempel-Ziv-Welch(LZW)法
がある。これらは、それぞれ、D. A. Huffman, "A Meth
od for the Construction of Minimum Redundancy Code
s", Proceedings IRE,Vol.40, No.10, pp.1098-1100
(1952年9月)、J. Ziv and A. Lempel, "Compres
sion of Individual Sequences Via Variable-Rate Cod
ing", IEEE Trans. on Info. Theory, Vol.IT-24, No.
5, pp.530-536(1978年9月)、および、米国特許
第4,558,302号に記載されている。Huffman符
号化法は、固定長のディジタルデータ系列を可変長の2
進(バイナリ)ワードに写像する。しかし、この圧縮方
法は、この方法が一度に処理する固定系列長よりも長い
ディジタルデータの系列に冗長性が存在するときに非効
率的になる。また、Huffman符号化法は、受信しながら
データストリームの記号を圧縮することができないとい
う点で不利である。この方法は、圧縮されるすべてのデ
ータ記号が処理時に利用可能であることを必要とする。
【0005】これに対して、LZ−78圧縮法は、入力
データキャラクタのストリームを解析し、この圧縮法の
実行中に生成される適応的に成長するルックアップテー
ブルあるいは辞書に基づいて、符号化された値に変換す
る。一般にはさらに小さい圧縮率を有するLZ−78法
の変形がLZW法である。LZ−78法およびLZW法
はいずれも、ストリング(文字列)テーブルの生成およ
び使用に基づいており、入力キャラクタのストリングを
固定長符号に写像する。さらに具体的には、これらの方
法は、キャラクタストリームをキャラクタの順に検索し
て、以前にテーブルに格納されているストリングのうち
できるだけ長いストリングに一致する遭遇した記号の系
列に基づいて符号を生成することによって、データキャ
ラクタのストリームを、圧縮された符号のストリームへ
と圧縮する。一致があり符号記号が生成されるごとに、
プロセスは、データストリーム中で一致した系列に、デ
ータストリーム中で遭遇した次のキャラクタ記号を付加
したものからなる新たなストリングエントリを辞書に格
納する。
【0006】それぞれの新たなテーブルエントリの結果
として、テーブルに保持されるストリングは、あらゆる
ストリングが、同じくテーブルのエントリである語頭(p
refix)ストリングを有するという性質を有する。このよ
うにして、テーブルエントリはデータストリーム中の冗
長性に適応する。その理由は、圧縮された符号信号の生
成のために後でマッチングを行うために使用されるテー
ブル内のストリングは、データストリームに基づいてい
るからである。
【0007】
【発明が解決しようとする課題】LZ−78法およびL
ZW法は有効なデータ圧縮を実現してはいるが、必要な
記憶領域および伝送時間を削減するためにさらに小さい
圧縮率が求められている。
【0008】
【課題を解決するための手段】本発明は、適応的なルッ
クアップテーブルを使用するとともに、「先読み」に基
づく現在の系列の符号化のためのデータストリーム中の
系列長を決定し、対応する次の系列の符号化可能長を推
定することによって、比較的小さい圧縮率が実現される
という発見に基づく。さらに具体的には、現在の系列を
処理する際に、本発明は、現在の系列に対するルックア
ップテーブル内のストリングに一致する最長系列を用い
たほうがより多くの記号が圧縮されるか、それとも、そ
れより短い一致系列を用いることによりデータストリー
ム内の次の系列に対応する符号が合わせてより多くの記
号を圧縮することになるかを判断する。この圧縮法は、
全体の圧縮比の縮小を達成するために、現在の系列に対
して、テーブルからの最長一致系列より短い系列に対応
する圧縮符号を使用したほうが有利な状況を識別する。
【0009】さらに、系列が符号化のために処理される
と、新たなストリングがルックアップテーブルに格納す
るためにデータストリームから識別される。その後、そ
のようなエントリは、データストリームからさらに系列
を符号化するために使用される。本発明は、以前にテー
ブルに格納されたストリングに基づいて、符号化系列長
の決定を行う。しかし、そのような決定の後、符号化系
列長の決定がルックアップテーブル内の増加したエント
リに基づいて後続の系列内の記号に対しても繰り返され
るように、現在の系列は圧縮される。
【0010】この有効な圧縮法は、特定の特性を有する
適応ルックアップテーブルを使用する際に、データ圧縮
の系列長決定のために、および、ルックアップテーブル
の新たなストリングエントリを識別するために、データ
ストリームの別個の解析を実行することができるという
認識に基づく。このような別個の解析により、本発明の
「先読み」動作が可能となる。特に、ルックアップテー
ブルは、テーブル内の各記号ストリングは語頭ストリン
グの記号と拡張記号を含むという特性を有する。語頭記
号ストリングはテーブルに以前に追加されたストリング
に対応する。拡張記号は、データストリーム中で以前に
遭遇した記号または最初に遭遇した記号とすることが可
能である。さらに、テーブル内の各ストリングには、圧
縮符号出力系列においてそのストリングを表すために使
用する圧縮符号が対応する。
【0011】本発明によって生成される圧縮データスト
リームは、復号のために「先読み」動作を用いる本発明
の対応する伸長法によって伸長される。具体的には、本
発明の伸長法は、圧縮符号ストリーム内の符号を復号
し、その結果得られる拡張伸長記号ストリームに基づい
て適応的にルックアップテーブルを構成する。一般に、
動作時には、この伸長法は、テーブルに以前に追加され
たストリングに対応する圧縮符号に遭遇する。しかし、
場合によっては、伸長したストリングがまだテーブルに
追加されていないような圧縮符号に遭遇する。圧縮法の
性質により、このように遭遇する圧縮符号は、テーブル
に追加されることになる次のエントリに対応する。「先
読み」を行いこの次の符号の伸長記号を決定するため
に、本発明の方法は、本発明の方法の最終反復中にテー
ブルに追加された復号記号ストリングを、復号系列の終
端に少なくとも1回追加して、次のテーブルエントリを
決定する。こうして、本発明の伸長法は、この新たなテ
ーブルエントリに基づいて圧縮符号を復号する。
【0012】本発明の圧縮法によれば、LZW法によっ
て達成されるよりも一般に10%〜15%低い圧縮率を
達成する。特に、本発明は、有線、無線もしくは光伝送
ネットワークまたはネットワークの集合(例えばインタ
ーネット)を通じて伝送される情報のデータ圧縮・伸長
や、磁気読み取り可能ディスクを含む磁気媒体やCD−
ROMを含む光読み取り可能媒体のような記録媒体上に
情報を記録するためのデータの圧縮に適している。
【0013】
【発明の実施の形態】本発明は、適応ルックアップテー
ブルを用いたデータ圧縮アルゴリズムが「先読み」を行
い、最長一致系列またはそれより短い一致系列のいずれ
を用いることによりデータ記号ストリーム中の現在の記
号系列を圧縮した場合の圧縮率が全体的に低下するかを
判定することができるという発見に基づく。この判定
は、現在の系列に対する異なる長さの使用に基づいて次
の系列の記号系列長を調べることによってなされる。こ
こで、データ記号ストリームとは、連続する記号のスト
リング(系列)のことであり、例えば、ASCIIテキ
ストファイル、実行可能プログラム、グラフィックファ
イル、あるいは、ビデオまたはオーディオ情報を含むフ
ァイルを表すことが可能である。
【0014】データを圧縮する際に、本発明は、実質的
にデータストリームを2度解析する。解析とは、記号か
らなるデータストリームから処理のために少なくとも1
つの記号からなる系列を分割することである。第1の解
析は、ストリングをルックアップテーブルに追加するた
めに実行される。第2の解析は、第1の解析とほとんど
同時にあるいは交錯して実行することが可能であるが、
対応する圧縮符号ストリームの生成のために前記の分割
識別を実行する。
【0015】本発明の「先読み」の特徴は、特定の特性
を有するルックアップテーブルを用いることによって実
現される。ルックアップテーブルでは、各記号ストリン
グは、語頭記号ストリングと拡張記号を含む特定の特性
を有する。語頭記号ストリングは以前にテーブルに追加
されたストリングに対応する。拡張記号は、データスト
リーム中で以前に遭遇した記号、または、最初に遭遇し
た記号であることが可能である。
【0016】さまざまなハードウェアおよびソフトウェ
アの構成が本発明の方法を実行可能である。図面ととも
に以下で説明する実施例の構成は単なる例示であり、本
発明を限定するものではない。図1に、本発明によるデ
ータ圧縮器5および伸長器25を用いた例示的なシステ
ム1を示す。システム1は、有線、無線または光ファイ
バのような伝送媒体を通じて情報を送受信するのに用い
ることができる。このような構成では、データ記号およ
び対応する圧縮符号は、電気信号、磁気信号または光信
号によって表すことが可能である。
【0017】あるいは、システム1は、コンピュータの
ディスクドライブのような磁気媒体や、CD−ROMの
ような光読み取り可能媒体に情報を記録するとともに、
そのような媒体から情報を読み出すために用いることも
可能である。その結果、データ圧縮・伸長方法は、例え
ばディスクドライブコントローラやCD−ROMドライ
ブのデータ読み出し部のような付属のメモリコントロー
ラにおいて実行可能である。
【0018】図1において、記号からなるデータストリ
ームの形式の情報DATA(例えば、ASCIIフォーマッ
トのデータ、あるいは、グラフィックまたはビデオのデ
ィジタルデータ)が、本発明により圧縮器5によって圧
縮され、圧縮符号ストリーム情報COMP_CODESを生成す
る。情報DATAは、記録または伝送されるデータの量を縮
小するために圧縮される。圧縮された情報COMP_CODES
は、次に、チャネル符号器10によって符号化され、チ
ャネル符号化情報CHAN_CODESが生成される。チャネル符
号化は、読み出しプロセスにおいて誤り検出・訂正を可
能にするための情報を圧縮情報に追加する。従来のチャ
ネル符号化法には、S. Lin and D. J. Costello, "Erro
r Control Coding", Prentice-Hall, Englewood Cliff
s, NJ, U.S.A.(1983)に記載されたリード・ソロモン符
号化法がある。リード・ソロモン符号化された情報は、
各記号が1ビット以上のデータビットによって表現され
た記号ストリングを含む。次に、これらの記号は符号器
15によって変調符号化され、伝送チャネル20を通じ
て(媒体20に)伝送(記録)されるチャネル系列を定
義するN記号の符号語MOD_CODESが生成される。
【0019】ノイズおよび干渉がしばしば伝送チャネル
または媒体20に導入される。変調復号器35およびチ
ャネル復号器30は、ノイズを有する変調符号化情報を
受信し、チャネル符号器10および変調符号器15の符
号化プロセスの逆を行う。チャネル復号器30によって
生成される復号情報は、圧縮器5によって生成された圧
縮情報COMP_CODESに対応する。復号された情報COMP_COD
ESは、次に、本発明の方法(詳細は図6および図7とと
もに後述)によって伸長され、圧縮器5によって受信さ
れたもとの情報DATAが生成される。
【0020】システム1の機能ブロック(例えば、圧縮
器ブロック5)は、そのブロックによって実行されるプ
ロセスを表し、このようなプロセスは、共用または専用
のハードウェアによって実行可能である。このようなハ
ードウェアには、ソフトウェア命令コードを実行可能な
ハードウェアが含まれるが、それに限定されるものでは
ない。例えば、本発明の圧縮・伸長法を、特定用途向け
IC(ASIC)、ディジタル信号プロセッサ(DS
P)およびプログラマブルロジックアレイのような回路
によって、あるいは、メモリに存在するソフトウェア命
令コードを実行するマイクロプロセッサ、マイクロコン
トローラ、コンピュータなどの計算装置によって、実現
することができる。システム1の構成は単なる例示であ
り、本発明の限定を意味するものではない。本発明のデ
ータ圧縮・伸長法は、チャネル符号化および変調符号化
の一方または両方なしで、あるいは他の符号化法ととも
に、使用することが可能である。
【0021】図1の例示的なデータストリームDATAの記
号105を図2に示す。データストリームDATA内の記号
105は、ASCIIフォーマットのテキストのような
英数字を表すディジタル信号であることが可能である。
ASCIIフォーマットの情報は一般に8個のディジタ
ル情報ビットを用いて256個の記号(文字)を表す。
あるいは、記号105は、画像もしくはオーディオデー
タまたはその他のタイプのデータのような非英数字情報
を表すことも可能である。さらに、このような記号はデ
ィジタルフォーマットである必要はなく、例えば音声、
グラフィックまたはビデオの情報を表すアナログ信号で
あることも可能である。
【0022】図示したデータストリームDATAにおいて、
記号105は、図1の圧縮器5によって受信される順
に、あるいは、処理される順に、ページの左から右へ配
列されている。ストリームDATA内での記号105の位置
は、説明を簡単にするために、位置番号110によって
示されている。この説明を通して、データストリームDA
TA内の特定の記号系列をDATA[x:y]で表すことにする。
ここで、xおよびyの値は系列の開始位置および終了位置
を表す。例えば、DATA[0:2]は、データストリームDATA
内の位置0から位置2までの系列、すなわち系列"aba"
を表す。便宜的に、表現DATA[x:x]あるいはDATA[x]で、
データストリームDATA内の位置xにある単一記号を表
す。
【0023】図示したデータストリームDATAにおける1
6個の記号は、本発明によって、図2の例示的な圧縮符
号ストリームCOMP_CODESに示した7ビットに圧縮され
る。この圧縮符号ストリームCOMP_CODESは、上記の従来
のLZW圧縮法によって生成される8個の記号よりも1
2.5%小さい。このような圧縮改善は、例えばキロビ
ットあるいはメガビットのオーダーの情報のような大量
の情報を圧縮する際には重要である。
【0024】本発明の実施例の圧縮法200を図3に示
す。この方法は、図1の圧縮器5が、例示したデータス
トリームDATAを対応する圧縮ストリームへと圧縮するた
めに使用することができる。図3において、まずステッ
プ205でルックアップテーブルが初期化され、ステッ
プ210でポインタI、J、J′、およびMが初期化さ
れる。ルックアップテーブルは、圧縮器5に付属するメ
モリ装置に保持することができる。ポインタI、J、
J′、およびMは、この圧縮法の動作中にデータストリ
ームDATA内の記号位置を指すために用いられる。テーブ
ル初期化ステップ205は、例えば、データストリーム
DATAが生成された既知の記号集合を含む複数の初期エン
トリを有するテーブルを設定することが可能である。例
えば、データストリームDATAを生成するのに用いられる
可能な記号集合はaおよびbである。このような2記号
集合は、説明を簡単にするという目的のためだけに使用
するものであり、さらに多くの記号を含む記号集合に対
して生成されるデータストリームも同様に本発明によっ
て圧縮することができる。動作時には、圧縮法200
は、新たなストリングをこのテーブルに追加する。
【0025】ルックアップテーブルおよびポインタをス
テップ205および210で初期化した後、方法200
は、ステップ215で、データストリームを解析し、デ
ータストリーム中で、テーブル300に含まれ、ポイン
タIとJの間の位置の記号から始まる系列で最後に遭遇
した記号まで延びる系列DATA[L:K]を識別する。記号位
置LおよびKは、それぞれ、識別される系列の系列開始
位置および系列終了位置に対応する。実際には、ステッ
プ215は、データストリーム中の位置Iから始まる現
在のできるだけ長い系列の符号化を、I+1からJまで
の位置から始まる次のできるだけ長い系列の符号化と
を、テーブルに以前に格納されたストリングに基づいて
比較する。このような比較により、比較的少数の符号化
記号を用いて比較的多数の記号を符号化することが可能
な分割配置を決定することができる。ステップ215の
詳細は、図2のデータストリームDATAの圧縮に関して後
述する。
【0026】ステップ215で系列DATA[L:K]が識別さ
れた後、ステップ220および225で、MAXKおよびMA
XLの値を、位置KおよびLの値とする。これらは、それ
ぞれ、系列中で最後および最初に遭遇した記号に対応す
る。次に、ステップ230で、ポインタIがデータスト
リームDATA内で値MAXLより前に遭遇した記号位置(すな
わち、より小さい位置の値)を指している場合、方法2
00はステップ235に進み、それ以外の場合、ステッ
プ250へ進む。ステップ235で、系列DATA[I:MAXL-
1]に対応するテーブル内のストリングを表す識別子符号
を取得し、ステップ240で、取得した符号を圧縮出力
系列COMP_CODESに追加する。
【0027】ステップ230における評価は、識別され
た系列DATA[L:K]あるいはDATA[MAXL:K]が現在の系列
(すなわち、データストリームDATA内の位置Iから始ま
る系列)または位置Iの後に遭遇した記号位置から始ま
る次の系列に対応するかどうか判断する。識別された系
列DATA[L:K]が次の系列である場合、ステップ235お
よび240で、DATA[I:MAXL-1]の対応する現在の系列に
対する符号を取得し、圧縮出力系列COMP_CODESに追加す
る。その後、ステップ245で、ポインタIを、ステッ
プ235および240で符号化された系列の最終記号の
直後の記号であるMAXLの位置を指すように更新する。
【0028】次に、ステップ250で、ポインタIおよ
びJが0に等しくない場合、方法200はステップ25
5に進み、それ以外の場合、方法200はステップ26
0へ進む。ステップ255で、データストリームDATA内
のポインタJ′とMの間の系列をルックアップテーブル
にエントリとして追加する。このルックアップテーブル
追加の詳細は図5に関して後述する。次に、ステップ2
60で、ポインタMをポインタJの位置にセットする。
次に、ステップ265および270は、データストリー
ム内で位置Jから始まりルックアップテーブルにない最
短の系列DATA[J:M]を判定する。データストリームを生
成するのに用いられる記号集合はテーブルに含まれてい
るため、データストリームで遭遇する最短の系列は、テ
ーブルに以前に追加されたストリングに対応する少なく
とも1個の記号の語頭ストリングと、拡張記号とを含
む。次に、ステップ275で、ポインタJ′およびJ
を、それぞれポインタJおよびMの位置に更新し、方法
200はステップ215に戻って、データストリーム内
の次の系列の識別および処理を行う。
【0029】方法200のステップは、データストリー
ムの長さにわたって次々と実行され、圧縮出力符号スト
リームが生成される。ステップ215〜245の連続実
行により、データストリームを符号化する第1の解析が
生成され、ステップ250〜275の連続実行により、
第1の解析と同時にあるいは交錯して第2の解析が生成
され、データストリーム内で遭遇した記号に基づいてル
ックアップテーブルにエントリが適応的に追加される。
この第2の解析中に、ステップ250および255は、
方法200の反復においてテーブルに追加するために識
別されたストリングが、方法200の次の反復までテー
ブルに追加されないように、ルックアップテーブルへの
ストリングの追加を遅延させる。このようなプロセスの
理由は、以下の例から明らかとなるであろう。
【0030】方法200の連続実行について、図2のデ
ータストリームDATAを、同じく図2に示したストリーム
COMP_CODESの7個の圧縮出力符号へと圧縮することに関
して説明する。各ポインタの値、テーブルエントリおよ
び方法200の連続実行中に生成される圧縮出力符号を
図5に示す。まず、ステップ205で、ルックアップテ
ーブルを初期化する。図2のデータストリームDATAに対
する例の初期化したテーブル300を図4に示す。ルッ
クアップテーブル300は、aおよびbのテーブルエン
トリ305、ならびに、圧縮符号ストリームCOMP_CODES
を生成するために用いられることになる対応する識別子
符号310を有する。識別子符号310をテーブル30
0に示したが、このような符号は、対応するストリング
エントリのテーブルアドレスを用いて、またはその他の
処理法によって決定することも可能である。
【0031】次に、ステップ210で、ポインタI、
J、J′およびMを記号位置0にセットする。これは図
2の記号aに対応する。ポインタIおよびJを図2に示
す。下付き添字「1」は、方法200の最初の反復にお
けるポインタ位置を表す。ポインタJ′は、方法200
の最初の反復の後におけるポインタJの直前の値に対応
するので、示されていない。ステップ215で、L=I
〜J(ここではL=I=0からJ=0まで)に対して最
後に遭遇した(最も後の)記号まで延びるデータストリ
ーム系列DATA[L:K]が識別される。これは、換言すれ
ば、位置0の記号aから開始して、データストリームDA
TAにおいてテーブル300内のストリングに一致する最
長の系列である。テーブル内でaで始まる唯一のストリ
ングはエントリ「0」すなわちaであるため、ステップ
215で系列DATA[L:K]はDATA[0:0]となり、ステップ2
20および225で、MAXKおよびMAXLの値はいずれも0
にセットされる。次に、ステップ230で、ポインタI
の値はMAXLの値より小さくないため、方法200はステ
ップ250に進む。
【0032】ステップ250で、ポインタIおよびJ配
置0に等しいため、方法200はステップ260に進
み、ポインタMがポインタJの位置(すなわち0)にセ
ットされる。次に、ステップ260および265は、デ
ータストリームDATAにおいて、位置DATA[J:M]から始ま
りテーブル300内にない最短の系列を決定する。ステ
ップ255および260の最初の反復では、系列DATA
[0:0]配置0における記号aであり、テーブル300内
のエントリ「0」に対応する。次の反復では、方法20
0は、abという系列DATA[0:1]はテーブル300内に
ないことを判定する。この識別されたストリングab
は、方法200の次の反復におけるステップ250およ
び255の次の実行までテーブルに追加されない。次
に、ポインタJ′およびJはそれぞれJおよびMの位置
(0および1)に更新される。従って、方法200の最
初の反復の終わりには、図5のAに示すように、圧縮出
力符号は生成されておらず、テーブルに追加するための
ストリングが識別されてはいるが、同じく図5のAに示
すように、実際には新たなエントリはテーブル300に
追加されていない。
【0033】次の反復では、ステップ215で、ポイン
タJ′およびJはそれぞれ位置0および1にセットさ
れ、ポインタIは依然として位置0にセットされる。こ
の反復でのポインタJを図2に示す。下付き添字「2
は、第2の反復でのポインタJの位置を表す。ステップ
215で、L=0および1に対して最後に遭遇した(最
も後の)記号まで延びる系列DATA[L:K]が決定される。
L=0に対しては、テーブル内の最長ストリングはDATA
[0:0]に対する第1エントリaであり、L=1に対して
は、テーブル内の最長一致ストリングはDATA[1:1]に対
する第2エントリbである。系列DATA[1:1]は、位置0
で終わるDATA[0:0]という系列に比べて後に遭遇する
(すなわち記号位置1)記号であるため、ステップ21
5で、系列DATA[1:1]が識別され、ステップ220およ
び225でMAXKおよびMAXLの値はそれぞれ1および0に
セットされる。ステップ230で、ポインタIは0に等
しく、これはMAXLの値1より小さいため、方法はステッ
プ235に進む。
【0034】方法200は、ステップ235で、テーブ
ル300から、DATA[I:MAXL-1]に等しいエントリ(DATA
[0:(1-1)]=DATA[0:0]=aすなわちルックアップテーブル
内のエントリ「0」)に対応する符号を取得する。次
に、ステップ240で、符号「0」が、図5のBに示す
ように、圧縮符号ストリームCOMP_CODESの一部として生
成される。次に、ステップ245で、ポインタIがMAXL
の値すなわち1にセットされる。ステップ250におい
て、ポインタIおよびJの値はいずれも1であり0では
ないため、方法200はステップ255に進み、系列DA
TA[J':m]すなわちDATA[0:1]="ab"が図5のBに示すよう
にエントリ「2」としてテーブル300に追加される。
次に、ステップ260で、ポインタMはポインタJの値
に更新された後、ステップ265および270は、デー
タストリームDATAにおいて、位置1から始まりテーブル
300内にない最短の遭遇した系列すなわちDATA[J:M]=
DATA[1:2]="ba"を決定する。次に、ポインタJ′および
JはそれぞれJおよびMの位置(1および2)に更新さ
れる。従って、第2の反復の終わりには、エントリ
「2」がテーブル300に追加され、圧縮出力符号COMP
_CODES記号「0」が図5に示すように生成されている。
【0035】方法200の第3の反復は、ポインタをI
=1、J=2、J′=1およびM=2として同様に実行
される。第3の反復のポインタIおよびJは図2では下
付き添字「3」で表されている。この反復では、ステッ
プ215は、L=1および2に対して系列DATA[L:K]を
評価する。その後、この反復は、データストリーム位置
1における記号bの符号化に対応する圧縮出力符号
「1」を生成する。この圧縮符号は、図5のCに示した
ように圧縮符号系列COMP_CODESに追加される。第2の反
復で識別されたストリングDATA[1:2]="ba"がエントリ
「3」としてテーブル300に追加され、系列DATA[2:
4]="aba"が、方法200の次の反復中に図5のCに示す
ようにテーブル300に追加するために識別される。
【0036】方法200の第4の反復は、ポインタをI
=2、J=4、J′=2およびM=4として第2および
第3の反復と同様に実行される。第4の反復のポインタ
IおよびJは図2では下付き添字「4」で表されてい
る。第4の反復は、データストリーム系列DATA[2:3]の
記号abの符号化に対応する圧縮出力符号「2」を生成
する。この圧縮符号は、図5のDに示したように圧縮符
号系列COMP_CODESに追加される。第3の反復で識別され
たストリングDATA[2:4]="aba"がエントリ「4」として
テーブル300に追加され、系列DATA[4:7]="abaa"が、
次の反復中に図5のDに示すようにテーブル300に追
加するために識別される。
【0037】方法200の第5の反復は、ポインタをI
=4、J=7、J′=4およびM=7として第4の反復
と同様に実行される。第5の反復のポインタIおよびJ
は図2では下付き添字「5」で表されている。第5の反
復は、データストリーム系列DATA[4:6]の記号abaの
符号化に対応する圧縮出力符号「4」を生成する。この
圧縮符号は、図5のEに示したように圧縮符号系列COMP
_CODESに追加される。第4の反復で識別されたストリン
グDATA[4:7]="abaa"がエントリ「5」としてテーブル3
00に追加され、系列DATA[7:11]="abaab"が、次の反復
中に図5のEに示すようにテーブル300に追加するた
めに識別される。
【0038】方法200の第6の反復は、ポインタをI
=7、J=11、J′=7およびM=11として第5の
反復と同様に実行される。第6の反復のポインタIおよ
びJは図2では下付き添字「6」で表されている。第6
の反復は、データストリーム系列DATA[7:9]の記号ab
aの符号化に対応する圧縮出力符号であるもう1つの
「4」を生成し、この圧縮符号は、図5のFに示したよ
うに圧縮符号系列COMP_CODESに追加される。第5の反復
で識別されたストリングDATA[7:11]="abaab"がエントリ
「6」としてテーブル300に追加され、系列DATA[11:
13]="baa"が、次の反復中に図5のFに示すようにテー
ブル300に追加するために識別される。
【0039】第7の反復では、ポインタの値はI=1
0、J=13、J′=11およびM=13である。第7
の反復のポインタIおよびJは図2では下付き添
字「7」で表されている。第7の反復中のステップ21
5で、L=I〜J(すなわちL=10,11,12およ
び13)に対して最後に遭遇した(最も後の)記号まで
延びる系列DATA[L:K]が決定される。L=10に対して
は、テーブル300内のストリングに対応する最長系列
はDATA[10:13]すなわち"abaa"であり、L=11に対し
ては、テーブル300内のストリングに対応する最長系
列はDATA[11:12]すなわち"ba"であり、L=12に対し
ては、テーブル300内のストリングに対応する最長系
列はDATA[12:12]すなわち"a"であり、L=13に対して
は、テーブル300内のストリングに対応する最長系列
はDATA[13:14]すなわち"ba"である。従って、位置L=
10および13から始まる対応する系列はいずれも位置
13まで延びる。本発明によれば、最も前に遭遇する位
置(すなわちこの例では位置10)のストリングが方法
200で用いられる。従って、ステップ220および2
25では、MAXKおよびMAXLはそれぞれ13および10に
セットされる。
【0040】次に、ステップ230で、IとMAXLが等し
いため、この方法はステップ235および240におけ
る対応する圧縮出力符号の生成を迂回して、テーブル構
成ステップ250〜265に直接進む。これらのステッ
プ中に、第6の反復で識別されたストリングDATA[11:1
3]="baa"がエントリ「7」としてテーブル300に追加
され、系列DATA[13:14]="aa"が、第8の反復中に図5の
Gに示すようにテーブル300に追加するために識別さ
れる。
【0041】第8の反復中に、ポインタの値はI=1
0、J=14、J′=13およびM=14にセットされ
る。第8の反復のポインタIおよびJは図2では下付き
添字「8」で表されている。この反復中のステップ21
5で、L=I〜J(すなわちL=10,11,12,1
3および14)に対して最後に遭遇した(最も後の)記
号まで延びる系列DATA[L:K]が決定される。L=10〜
13に対する対応する最長系列は以前の反復で列挙され
ており、L=13に対しては位置14である。L=14
から始まる最長系列は、位置15で終わる"ab"である。
従って、最後に遭遇した記号まで延びるテーブル300
内のストリングに対応するストリングはDATA[14:15]="a
b"である。従って、ステップ220および225では、
MAXKおよびMAXLはそれぞれ15および14にセットされ
る。
【0042】次に、ステップ230で、I=10はMAXL
=14よりも値が小さいため、この方法は、図5のHに
示すように、データストリーム系列DATA[10:13]="abaa"
に対する対応する一致する圧縮出力符号「5」を生成す
る。その結果、本発明の圧縮法は、テーブル300内の
ストリングに対応する遭遇したできるだけ長い系列に基
づくのではなく、「先読み」を行いデータストリームDA
TA内の可能な次の系列の対応する長さを検査して、より
短い系列を符号化することにより圧縮率を低くすること
ができるかどうかを判断することによって、圧縮出力符
号を生成する。
【0043】次に、第8の反復は、前の反復について既
に説明したのと同様にしてテーブル構成ステップ250
〜265を実行する。さらに、第9、第10および第1
1の反復も同様に実行し、図2に示した圧縮出力符号CO
MP_CODESを生成する。結果として得られる圧縮出力スト
リームCOMP_CODESは、データストリームDATAのもとの1
6ビットに比べて短い7個の記号を含むことになる。
【0044】テーブルの構成と圧縮出力ストリームの生
成のために別個にデータストリームを解析することによ
り、本発明の方法は、「先読み」を行い、符号化可能な
次の系列の長さに基づいて現在の系列に適した系列長が
いずれであるかを判定することができる。
【0045】図3の方法200は、ステップ215で相
対的に最も後に遭遇した記号まで延びる系列を識別した
が、本発明の別の実施例では、方法200は、ステップ
215で評価される別の系列のうちの少なくとも1つに
比べて、さらに後に遭遇する記号まで延びる系列を識別
することも可能である。このような識別された系列は、
必ずしも相対的に最も後に遭遇した記号である必要はな
い。このようにして、本発明は、前記のLZ法およびL
ZW法によって達成可能なものより低く、図3の方法2
00によって達成されるのと同程度に低い圧縮率を達成
する。
【0046】本発明による伸長法は、同様の「先読み」
動作を用いて、本発明のデータ圧縮法によって生成され
た圧縮符号ストリームを反復的に復号する。本発明の伸
長法は、圧縮符号ストリーム中の符号を順次復号し、生
成された伸長系列中の対応する生成したばかりの記号に
基づいて適応的にルックアップテーブルを構成する。一
般に、圧縮符号ストリームを復号する際に、本発明の方
法は、テーブルに以前に格納したエントリに対応する圧
縮符号に遭遇する。
【0047】しかし、ある場合には、テーブルに以前に
追加されていない符号に遭遇することがある。それにも
かかわらず、本発明による圧縮符号ストリームの性質に
よって、この符号に対応する欠けているストリングエン
トリは、テーブルに追加されるべき次のストリングエン
トリである。このような場合、本発明の伸長法は「先読
み」を行い、テーブルエントリの次のストリングを決定
する。この次のテーブルエントリを決定するために、本
発明によれば、この「先読み」決定は、本発明の方法の
最後の反復で識別された特定の復号系列を、少なくとも
1度、現在の復号記号系列の終端に追加することによっ
て実現される。ルックアップテーブルの前記の特性によ
り、このような「先読み」決定が可能となる。
【0048】図3の方法200によって生成された圧縮
符号を復号するための、本発明による例示的な伸長法5
00を図6に示す。方法500において、方法500の
ステップ515〜565は、圧縮符号系列COMP_CODES中
の圧縮符号の反復伸長に関係し、ステップ570〜59
5は、ルックアップテーブルの構成に関する。テーブル
構成ステップ570〜595は、図3のデータ圧縮法2
00のステップ265〜270のものと同様である。本
発明のデータ圧縮法および伸長法によって生成されるル
ックアップテーブルは、1つの非圧縮系列の対応する符
号化および復号に対して同一である。
【0049】伸長ステップ515〜565は、圧縮符号
系列COMP_CODES中の符号を順次処理し、与えられた符号
に対するエントリがルックアップテーブル内に存在する
場合には、方法500は伸長記号を取得し、それを対応
する伸長出力系列DCOMP_SEQに連結する。しかし、ある
場合には、テーブル内に対応するエントリがないことが
ある。そのような場合、本発明の圧縮法の特性によっ
て、この空エントリは常に、テーブルに追加されるべき
次のエントリである。方法500は「先読み」を行い、
伸長系列DCOMP_SEQに追加する最後のストリングを一時
的に連結することによってこの次のストリングを決定す
る。その後、ステップ575〜585は、この拡張系列
DCOMP_SEQに基づいてテーブルエントリを決定する。そ
の後、ステップ515〜565の次の反復で、一時的に
追加されたストリングはステップ545で除去され、正
しいテーブルエントリが存在することになるため、ステ
ップ555および560でそれを取得し伸長系列DCOMP_
SEQに追加することができる。
【0050】さらに具体的には、まず、方法500は、
圧縮法200の初期化ステップ205によって生成され
る図4の初期化テーブル300のように、ルックアップ
テーブルを初期化する。ルックアップテーブルは、圧縮
符号ストリームが形成されたもとの記号ストリームの構
成に用いられる記号集合に対応するエントリを有するよ
うに初期化することが可能である。次に、ステップ51
0で、ポインタ、フラグおよびストリングを初期化す
る。特に、ポインタI、JおよびKを位置0にセット
し、フラグFLAGをFALSE(偽)にセットし、ストリングS
UFFIXおよび伸長出力ストリームDCOMP_SEQを空ストリン
グにセットする。次に、ステップ515で、Mの値を、
圧縮符号系列COMP_CODES中の位置Iにおける符号にセッ
トする。
【0051】次に、ステップ520で、符号Mに対する
エントリがルックアップテーブル内に存在しない場合、
方法500はステップ525に進む。ステップ525
で、ストリングSUFFIXを記号系列DCOMP_SEQ[J:END]に連
結して、新たなストリングSUFFIXを形成する。位置END
は、生成される系列DCOMP_SEQの最後の記号を指す。次
に、ステップ530および535で、新たなストリング
SUFFIXを伸長系列DCOMP_SEQの終端に連結し、フラグFLA
GをTRUE(真)にセットした後、方法500はステップ
570に進む。
【0052】しかし、ステップ520で、方法500
は、値Mに対するエントリがルックアップテーブル内に
存在すると判定した場合、ステップ540に進む。ステ
ップ540で、フラグFLAGがTRUEにセット方法500は
ステップ545に進み、そうでない場合、ステップ55
5へ進む。ステップ545で、伸長系列DCOMP_SEQの終
端に以前に追加された、ストリングSUFFIXに対応する記
号の系列を削除する。次に、ステップ547で、ストリ
ングSUFFIXを空ストリングにリセットし、ステップ55
0で、フラグFLAGをFALSEにリセットする。
【0053】次に、ステップ555で、テーブルからの
伸長ストリングを、圧縮符号系列COMP_CODESの遭遇した
記号位置Iの値に対応するテーブル位置から取得する。
次に、ステップ560で、取得したストリングを伸長出
力系列DCOMP_SEQに追加する。次に、ステップ565
で、ポインタIをインクリメントした後、方法500は
ステップ570に進む。
【0054】ステップ570で、ポインタKをポインタ
Jの値にセットする。次に、ステップ575〜585
で、伸長出力系列DCOMP_SEQにおいて位置Jから始まり
ルックアップテーブル内にない最短の系列を決定する。
この決定は、図2のステップ265および270に関し
て前に説明したのとほぼ同一とすることが可能である。
伸長出力系列において遭遇する可能な記号集合はルック
アップテーブルに含まれているため、系列において遭遇
する最短の系列は、テーブルに以前に追加されたストリ
ングに対応する少なくとも1つの記号の語頭ストリング
と拡張記号とを含む。
【0055】次に、ステップ590において、ステップ
575で識別されたストリングがルックアップテーブル
に新たなエントリとして追加される。次に、ステップ5
95で、ポインタJはポインタKの値にセットされ、方
法500はステップ515に進み、圧縮ストリングCOMP
_CODES中の次の値を処理する。しかし、伸長系列におい
てルックアップテーブル内にない最短系列を識別する際
のステップ575〜585による決定の間に、ステップ
580で、方法500が、ポインタKが系列DCOMP_SEQ
中の最後の記号にあると判定した場合、この方法は、ス
テップ590でテーブルエントリの追加をせずにステッ
プ515に戻る。この場合、ポインタJと系列DCOMP_SE
Qの終端の間の系列はテーブルに含まれるエントリに対
応するため、最短系列は識別されない。
【0056】次に、伸長法500の動作を、図2の特定
の圧縮符号系列COMP_CODESの復号に関して説明する。方
法500の動作中の対応するポインタ値および系列を図
7に示す。まず、ステップ505で、ルックアップテー
ブルを、もとの非圧縮データストリームを生成するのに
用いた記号集合で初期化する。このような初期化テーブ
ルは図4に示されており、記号aおよびbはそれぞれエ
ントリ「0」および「1」に対応する。ステップ510
で、ポインタJおよびKを位置0にセットし、ストリン
グSUFFIXおよびDCOMP_SEQを空ストリングにセットす
る。ポインタJおよびKは伸長出力系列DCOMP_SEQ内の
位置に対応し、ポインタIは圧縮符号系列COMP_CODES内
の位置に対応する。
【0057】次に、ステップ515で、Mの値を、圧縮
符号系列COMP_CODESの位置I(すなわち位置0)の符号
(「0」)にセットする。テーブル内に、符号「0」に
対応するエントリ(記号a)が存在し、フラグFLAGはFA
LSEであるため、方法500はステップ555に進む。
ステップ555で、符号Mに対応するテーブル内の伸長
系列エントリを取得し、ステップ560で、取得した系
列を、図7のAに示すように、伸長DCOMP_SEQに追加す
る。次に、ステップ565で、ポインタIをインクリメ
ントする。次に、ステップ570〜580で、伸長系列
DCOMP_SEQ中でポインタJから始まり終端までの系列
(すなわち記号a)をルックアップテーブル内のエント
リである。従って、方法500は、ルックアップテーブ
ルに系列を追加せずに、次の反復のためにステップ51
5に戻る。
【0058】第2の反復は、第1の反復とほぼ同様に実
行される。ステップ515で、ポインタIは図2の圧縮
符号系列COMP_CODES内の位置1にあるため、Mの値は符
号「1」である。この符号「1」に対応するエントリ
(すなわち記号b)がルックアップテーブル内に存在
し、フラグFLAGは依然としてFALSEであるため、方法5
00はステップ555および560に進み、ルックアッ
プテーブル内の伸長エントリbを取得し、図7のBのよ
うに、伸長系列DCOMP_SEQに連結する。次に、ステップ
570〜590で、伸長系列DCOMP_SEQ[J:K]において位
置J(すなわち位置0)から始まりルックアップテーブ
ル内のエントリではない最短の系列を識別し、新たなエ
ントリとしてルックアップテーブルに追加する。識別さ
れる最短系列はDCOMP_SEQ[1:2]="ab"であり、これは、
同じく図7のBに示すように、エントリ「2」としてテ
ーブルに追加される。次に、ステップ595で、ポイン
タJをポインタKの値にセットする。
【0059】第3の反復は、第1および第2の反復とほ
ぼ同様に実行される。第3の反復のポインタIおよびJ
はそれぞれ系列位置2および1である。圧縮符号系列CO
MP_CODESの位置Iの符号は「2」である。符号「2」に
対応するエントリ(すなわち"ab")がテーブル内に存在
し、これは図7のCに示すように伸長系列DCOMP_SEQの
終端に連結される。さらに、ポインタJ=1からの伸長
ストリングDCOMP_SEQ(すなわち"ba")から新たなテー
ブルエントリが識別され、同じく図7のCに示すよう
に、エントリ「3」としてテーブルに追加される。次
に、ステップ595で、ポインタJはポインタK=2の
伸長系列位置にセットされる。
【0060】第4の反復で、Mの値は系列COMP_CODES内
の位置I=3の符号すなわち符号「4」とされる。符号
「4」に対応するエントリはルックアップテーブル内に
存在しない。テーブルに最後に追加されたストリングは
符号「3」に対応する。従って、方法500はステップ
525に進み、ストリングSUFFIXは、図7のCに示す現
在の伸長系列に基づいて、DCOMP_SEQ[J:END](J=2)
にセットされる。系列DCOMP_SEQの終端は位置3にある
ため、ストリングSUFFIX=SUFFIX||DCOMP_SEQ[J:END]=
{空ストリング}||DCOMP_SEQ[2:3]="ab"となる。次に、
ステップ530で、ストリングSUFFIXを系列DCOMP_SEQ
の終端に連結し、図7のDに示すように、拡張系列DCOM
P_SEQ||SUFFIX="abab"||"ab"="ababab"が生成される。
次に、ステップ535で、フラグFLAGをTRUEにセット
し、方法500はステップ570〜595に進み、拡張
された伸長系列DCOMP_SEQに基づいて新たなエントリを
識別しルックアップテーブルに追加する。従って、伸長
系列DCOMP_SEQで位置J=2から始まる最短系列はDCOMP
_SEQ[2:4]="aba"となり、図7のDに示すように、テー
ブルの符号「4」に対応するエントリ位置に追加され
る。
【0061】第5の反復で、ポインタJは4であり、ポ
インタI配置3のままである。その結果、ステップ51
5においてMの値は、第4の反復中に代入されたのと同
じ符号「4」すなわちDCOMP_SEQ[3]にセットされる。し
かし、この反復では、符号「4」に対するテーブルエン
トリが存在するため、方法500はステップ520から
ステップ540に進む。次に、フラグFLAGがTRUEにセッ
トされているため、方法500はさらにステップ545
に進む。ステップ545で、系列DCOMP_SEQは、前の反
復のステップ530の間にストリングSUFFIXの連結によ
って追加された系列の終端の記号を取り除くように修正
される。これらの一時的に追加された記号は、次のテー
ブルエントリを識別するための「先読み」を実行するた
めに系列DCOMP_SEQに追加されたものであり、今の伸長
ステップでは不要である。ステップ545で系列DCOMP_
SEQを修正した後、ステップ550で、フラグFLAGをFAL
SEにリセットする。
【0062】次に、ルックアップテーブル内の新たなエ
ントリ、すなわち、符号「4」に対応する系列"aba"を
取得し、図7のEに示したように、前の反復で説明した
のと同様にして伸長系列DCOMP_SEQに追加する。次に、
同様にして、方法500は、伸長系列DCOMP_SEQにおい
て位置J=4から始まりルックアップテーブル内のエン
トリではない最短系列を識別しようと試みる。しかし、
位置J=4から始まる系列すなわちaはテーブル内にあ
るため、方法500は、図7のEに示すように、ルック
アップテーブルにエントリを追加せずに次の反復のため
にステップ515に戻る。
【0063】第6の反復は、第1および第3の反復とほ
ぼ同様に実行される。第6の反復のポインタIおよびJ
はそれぞれ系列位置4および4である。圧縮符号系列CO
MP_CODESの位置Iの符号も「4」である。符号「4」に
対するテーブル内のエントリは"aba"であり、図7のF
に示すように、伸長出力系列DCOMP_SEQの終端に連結さ
れる。さらに、ポインタJ=4から始まる系列DCOMP_SE
Qから新たなテーブルエントリ"abaa"が識別され、同じ
く図7のFに示すように、エントリ「5」としてテーブ
ルに追加される。次に、ステップ595で、ポインタJ
をポインタK=7の伸長系列位置にセットした後、方法
500の次の反復を開始する。
【0064】第7および第8の反復は第6の反復とほぼ
同様に実行され、伸長符号系列DCOMP_SEQ="abababaabaa
baaab"が生成される。これは、図2のもとの記号ストリ
ームDATAに正確に対応する。
【0065】ステップ545は、一時的に追加されたス
トリングSUFFIXを伸長系列DCOMP_SEQから取り除き、そ
の後、ステップ560は、連結された後置ストリングSU
FFIXを用いて生成されたばかりのテーブルエントリを伸
長系列DCOMP_SEQに追加するが、これは単なる例示であ
る。その代わりに、それらのステップを組み合わせて、
伸長系列DCOMP_SEQの終端に連結されたストリングSUFFI
Xをそのまま残し、追加すべき新たなテーブルストリン
グの残りの部分を構成する欠けている記号のみを追加す
ることも可能である。例えば、第4の反復で追加された
ストリングSUFFIXは"ab"であり、対応する新たなテーブ
ルエントリは"aba"であったから、伸長系列DCOMP_SEQの
終端にストリングSUFFIXを残すことにより、所望のテー
ブルエントリを系列DCOMP_SEQに追加するためには記号
aのみを追加すればよい。
【0066】以上、本発明の実施例について詳細に説明
したが、さまざまな変形例が可能である。例えば、本発
明の圧縮法および伸長法の「先読み」の特徴は、ルック
アップテーブル内の各ストリングが、語頭記号ストリン
グの少なくとも2個の要素と拡張記号とを含むという特
性によっても実現される。
【0067】従って、このようなルックアップテーブル
を生成するために選択される特定の方法は本発明を実施
する際に重要ではない。テーブルは、図2および図6に
関して上記で説明したように生成することも可能であ
り、また、LZ−78圧縮法やLZW圧縮法で用いられ
るもののような他の方法を用いることによっても可能で
ある。さらに、他のテーブル構成法として、例えば、D.
Lelewer and D. Hirschberg, "Data Compression", AC
M Computer Surveys (1987)に記載されている方法のよ
うな、算術符号化法による方法も可能である。
【0068】
【発明の効果】以上述べたごとく、本発明によれば、適
応的なルックアップテーブルを使用するとともに、「先
読み」に基づく現在の系列の符号化のためのデータスト
リーム中の系列長を決定し、対応する次の系列の符号化
可能長を推定することによって、比較的小さい圧縮率が
実現される。
【図面の簡単な説明】
【図1】本発明によるデータ圧縮器および伸長器を用い
たシステムの例の概略ブロック図である。
【図2】非圧縮データストリームと、図1のデータ圧縮
器によって本発明に従って符号化された対応する圧縮符
号ストリームの例の図である。
【図3】図1のデータ圧縮器により使用可能な、本発明
によるデータ圧縮法の実施例の流れ図である。
【図4】図3の圧縮法とともに用いられる初期化された
ルックアップテーブルの例の図である。
【図5】図2の非圧縮データストリームに基づいて図3
の方法の動作中に得られる反復ポインタおよび圧縮デー
タ値の例の図である。
【図6】図1の伸長器により使用可能な、本発明による
データ伸長法の実施例の流れ図である。
【図7】図2の圧縮符号ストリームに対する図6の方法
の動作中に得られる反復ポインタおよび伸長値の例の図
である。
【符号の説明】
1 システム 5 圧縮器 10 チャネル符号器 15 変調符号器 20 チャネル/媒体 25 伸長器 30 チャネル復号器 35 変調復号器 300 ルックアップテーブル 305 テーブルエントリ 310 識別子符号
───────────────────────────────────────────────────── フロントページの続き (73)特許権者 596077259 600 Mountain Avenue, Murray Hill, New J ersey 07974−0636U.S.A. (72)発明者 スレイマン センク サヒナルプ アメリカ合衆国,20740 メリーランド, グリーンベルト,リッジ ロード 414 (56)参考文献 特開 昭60−116228(JP,A) 特開 平4−185118(JP,A) 特開 平5−113869(JP,A) 特開 平7−297728(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/46 H03M 7/42

Claims (21)

    (57)【特許請求の範囲】
  1. 【請求項1】 データ記号ストリームを処理して可変長
    圧縮符号ストリームを生成するデータ圧縮方法におい
    て、 前記記号ストリームを解析して、テーブルに格納された
    記号ストリングに対応する語頭記号ストリングと拡張記
    号とを含む複数の記号からなる前記記号ストリーム内で
    遭遇した各記号ストリングに符号を対応させて該テーブ
    ルに格納する第1解析ステップと、 前記記号ストリーム内の現在の記号系列に対する前記テ
    ーブル内のエントリに複数の異なる長さの記号系列が対
    応する場合に、前記記号ストリームにおいて前記テーブ
    ル内の記号ストリングに対応し前記記号ストリーム内の
    前記複数の異なる長さの記号系列の後の記号位置から始
    まる次の記号系列の最終遭遇記号位置を決定することに
    基づいて、前記記号ストリームにおける現在の記号系列
    の記号系列長を決定することにより前記記号ストリーム
    を順次分割し、各分割に対する記号ストリングに対応す
    るテーブル内の符号を識別する第2解析ステップと、 前記第2解析ステップで識別した符号を前記圧縮符号ス
    トリームとして出力するステップとからなることを特徴
    とするデータ圧縮方法。
  2. 【請求項2】 前記現在の記号系列の最初の記号位置
    は、前記第2解析ステップの前に前記第1解析ステップ
    によって解析されることを特徴とする請求項1の方法。
  3. 【請求項3】 前記第1および第2解析ステップはほぼ
    同時に実行されることを特徴とする請求項1の方法。
  4. 【請求項4】 前記第1解析ステップは前記第2解析ス
    テップと交錯して実行されることを特徴とする請求項3
    の方法。
  5. 【請求項5】 前記現在の記号系列に対して圧縮符号ス
    トリームとして出力される符号は、前記記号ストリーム
    内の対応する次の記号系列の最終記号が、異なる長さを
    有する現在の記号系列に対応する次の記号系列の少なく
    とも1つの最終記号よりも後に遭遇する記号ストリーム
    位置にあると判定されることに基づいて出力されること
    を特徴とする請求項1の方法。
  6. 【請求項6】 前記現在の記号系列に対して圧縮符号ス
    トリームとして出力される符号は、前記記号ストリーム
    内の対応する次の記号系列の最終記号が、相対的に最後
    に遭遇する記号ストリーム位置にあると判定されること
    に基づいて出力されることを特徴とする請求項5の方
    法。
  7. 【請求項7】 前記データ記号ストリームが生成された
    記号集合を含むように前記テーブルを初期化するステッ
    プをさらに有することを特徴とする請求項1の方法。
  8. 【請求項8】 前記第1解析ステップはLempel-Ziv-78
    法に従って実行されることを特徴とする請求項1の方
    法。
  9. 【請求項9】 前記第1解析ステップはLempel-Ziv-Wel
    ch法に従って実行されることを特徴とする請求項1の方
    法。
  10. 【請求項10】 データ記号ストリームを処理して可変
    長圧縮符号ストリームを生成するデータ圧縮方法におい
    て、該方法は、 前記記号ストリームを解析して、テーブルに格納された
    記号ストリングに対応する語頭記号ストリングと拡張記
    号とを含む複数の記号からなる前記記号ストリーム内で
    遭遇した各記号ストリングに符号を対応させて該テーブ
    ルに格納する第1解析ステップと、 i≦jとして、前記第1解析ステップが前記記号ストリ
    ームのj番目の記号の後の記号に遭遇した後または遭遇
    すると同時に前記記号ストリームのi番目の記号に遭遇
    するように前記記号ストリームを解析する第2解析ステ
    ップとからなり、該第2解析ステップは、 i番目の記号とj番目の記号の間のk番目の記号から始
    まり前記テーブル内に以前に格納された記号ストリング
    に対応する記号系列であって、i番目の記号とj番目の
    記号の間でk番目の記号とは異なる記号から始まり前記
    テーブル内に以前に格納された記号ストリングに対応す
    る少なくとも1つの他の記号系列よりも前記記号ストリ
    ームにおいて相対的に後で遭遇する記号まで延びる記号
    系列を識別する第1識別ステップと、 前記テーブルにおいて、i番目の記号から、識別された
    k番目の記号の直前の記号までの記号系列に対応する符
    号を識別する第2識別ステップと、 識別した符号を前記圧縮符号ストリームの一部として出
    力するステップとからなることを特徴とするデータ圧縮
    方法。
  11. 【請求項11】 前記第1識別ステップは、前記記号ス
    トリームにおいて相対的に最後に遭遇する記号まで延び
    る記号系列を識別することを特徴とする請求項10の方
    法。
  12. 【請求項12】 前記第1および第2解析ステップはほ
    ぼ同時に実行されることを特徴とする請求項10の方
    法。
  13. 【請求項13】 前記第1解析ステップは前記第2解析
    ステップと交錯して実行されることを特徴とする請求項
    12の方法。
  14. 【請求項14】 前記第1識別ステップは、前記j番目
    の記号が前記第1解析ステップによって処理された直後
    に実行されることを特徴とする請求項13の方法。
  15. 【請求項15】 前記第1解析ステップはLempel-Ziv-W
    elch法に従って実行されることを特徴とする請求項10
    の方法。
  16. 【請求項16】 前記データ記号ストリームが生成され
    た記号集合を含むように前記テーブルを初期化するステ
    ップをさらに有することを特徴とする請求項10の方
    法。
  17. 【請求項17】 記号ストリームを解析して、テーブル
    に格納された記号ストリングに対応する語頭記号ストリ
    ングと拡張記号とを含む前記記号ストリーム内で遭遇し
    た各記号ストリングに符号を対応させて該テーブルに格
    納する第1解析ステップと、 i≦jとして、前記第1解析ステップが前記記号ストリ
    ームのj番目の記号の後の記号に遭遇した後または遭遇
    すると同時に前記記号ストリームのi番目の記号に遭遇
    するように前記記号ストリームを解析する第2解析ステ
    ップと、 圧縮符号ストリームの符号を表す記録信号を記憶媒体に
    記録するステップとからなる方法によって製造される記
    憶媒体において、前記第2解析ステップは、 i番目の記号とj番目の記号の間のk番目の記号から始
    まり前記テーブル内に以前に格納された記号ストリング
    に対応する記号系列であって、i番目の記号とj番目の
    記号の間でk番目の記号とは異なる記号から始まり前記
    テーブル内に以前に格納された記号ストリングに対応す
    る少なくとも1つの他の記号系列よりも前記記号ストリ
    ームにおいて相対的に後で遭遇する記号まで延びる記号
    系列を識別する第1識別ステップと、 前記テーブルにおいて、i番目の記号から、識別された
    k番目の記号の直前の記号までの記号系列に対応する符
    号を識別する第2識別ステップと、 識別した符号を前記圧縮符号ストリームの一部として出
    力するステップとからなることを特徴とする記憶媒体。
  18. 【請求項18】 CD−ROMであることを特徴とする
    請求項17の記憶媒体。
  19. 【請求項19】 磁気フロッピーディスクであることを
    特徴とする請求項17の記憶媒体。
  20. 【請求項20】 圧縮符号ストリームを処理することに
    よってデータ記号ストリームを復元する方法において、
    該方法は、前記圧縮符号ストリームにおいて遭遇する符
    号を順次処理するステップからなり、各符号の処理は、 前記記号ストリームを生成するのに用いられる記号集合
    を初期記号ストリングエントリとして有するとともに各
    記号ストリングエントリにはそれぞれの符号が対応する
    テーブルに、前記符号に対する記号ストリングエントリ
    が存在するかどうかを識別するステップと、 前記記号ストリングエントリが前記テーブルに存在する
    場合、 a.前記符号に対応する記号ストリングエントリを前記
    テーブルから取得し、 b.取得した記号ストリングを前記記号ストリームに連
    結し、 c.生成された記号ストリーム内で前記テーブル内に存
    在しない最短の記号系列に対応する新たな記号ストリン
    グエントリに符号を対応させて前記テーブルに格納する
    ステップと、 前記記号ストリングエントリが前記テーブルに存在しな
    い場合、 a.直前に取得した記号ストリングを前記記号ストリー
    ムの終端に少なくとも1度連結して拡張記号ストリーム
    を生成し、 b.生成された拡張記号ストリーム内で前記テーブル内
    に存在しない最短の記号系列を識別し、 c.識別した最短の記号系列に対応する新たな記号スト
    リングエントリに符号を対応させて前記テーブルに格納
    し、 d.前記テーブルに追加された新たな記号ストリングエ
    ントリを連結する前の記号ストリームからなるように前
    記拡張記号ストリームを修正するステップとからなるこ
    とを特徴とする、圧縮符号ストリームを処理することに
    よってデータ記号ストリームを復元する方法。
  21. 【請求項21】 前記データ記号ストリームが生成され
    た記号集合を含むように前記テーブルを初期化するステ
    ップをさらに有することを特徴とする請求項20の方
    法。
JP15206597A 1996-06-14 1997-06-10 データ圧縮方法 Expired - Fee Related JP3231663B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US665188 1996-06-14
US08/665,188 US5703581A (en) 1996-06-14 1996-06-14 Method and apparatus for data compression and decompression

Publications (2)

Publication Number Publication Date
JPH1065551A JPH1065551A (ja) 1998-03-06
JP3231663B2 true JP3231663B2 (ja) 2001-11-26

Family

ID=24669086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15206597A Expired - Fee Related JP3231663B2 (ja) 1996-06-14 1997-06-10 データ圧縮方法

Country Status (3)

Country Link
US (1) US5703581A (ja)
JP (1) JP3231663B2 (ja)
IL (1) IL121034A0 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905986A (en) * 1997-01-07 1999-05-18 Hewlett-Packard Company Highly compressible representation of test pattern data
US6601111B1 (en) 1997-01-29 2003-07-29 Palmsource, Inc. Method and apparatus for unified external and interprocess communication
US5900875A (en) 1997-01-29 1999-05-04 3Com Corporation Method and apparatus for interacting with a portable computer system
KR100269808B1 (ko) * 1997-12-20 2000-10-16 전주범 압축률 편차를 보상하는 데이터 압축 시스템
KR100448289B1 (ko) * 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
US7025209B2 (en) * 1998-05-29 2006-04-11 Palmsource, Inc. Method and apparatus for wireless internet access
US6343318B1 (en) 1998-05-29 2002-01-29 Palm, Inc. Method and apparatus for communicating information over low bandwidth communications networks
US6397259B1 (en) * 1998-05-29 2002-05-28 Palm, Inc. Method, system and apparatus for packet minimized communications
KR100307700B1 (ko) * 1998-06-08 2001-10-19 오길록 리드솔로몬부호의서브코드를이용한부호화방법및연판정정보를이용한트렐리스복호화방법
US6611213B1 (en) 1999-03-22 2003-08-26 Lucent Technologies Inc. Method and apparatus for data compression using fingerprinting
US6172625B1 (en) * 1999-07-06 2001-01-09 Motorola, Inc. Disambiguation method and apparatus, and dictionary data compression techniques
US6236341B1 (en) 2000-03-16 2001-05-22 Lucent Technologies Inc. Method and apparatus for data compression of network packets employing per-packet hash tables
US6388584B1 (en) 2000-03-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for data compression of network packets
US6606040B2 (en) * 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
US6597301B2 (en) * 2001-10-03 2003-07-22 Shure Incorporated Apparatus and method for level-dependent companding for wireless audio noise reduction
KR100498457B1 (ko) * 2002-11-11 2005-07-01 삼성전자주식회사 메모리를 감소시키는 개선된 룩업 테이블 압축방법 및이를 이용하여 압축된 룩업 테이블을 가지는 비선형 함수발생장치 및 그 발생방법
JP4263627B2 (ja) * 2004-01-22 2009-05-13 株式会社エヌ・ティ・ティ・ドコモ 通信端末装置、受信装置、及び、プログラム
US20050273274A1 (en) * 2004-06-02 2005-12-08 Evans Scott C Method for identifying sub-sequences of interest in a sequence
US7102552B1 (en) * 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US20080017227A1 (en) * 2006-07-19 2008-01-24 Ward Barry D Walking aid apparatus
US20080288436A1 (en) * 2007-05-15 2008-11-20 Harsha Priya N V Data pattern matching to reduce number of write operations to improve flash life
US7809765B2 (en) * 2007-08-24 2010-10-05 General Electric Company Sequence identification and analysis
US9083708B2 (en) 2010-05-17 2015-07-14 Microsoft Technology Licensing, Llc Asymmetric end host redundancy elimination for networks
CN102122960B (zh) * 2011-01-18 2013-11-06 西安理工大学 一种针对二进制数据的多字符组合无损数据压缩方法
US9154157B2 (en) * 2012-09-27 2015-10-06 Intel Corporation Search unit to accelerate variable length compression/decompression
IN2013DE00400A (ja) * 2013-02-12 2015-06-19 Adarsh Jain
US9331712B1 (en) * 2015-05-11 2016-05-03 Qualcomm Incorporated Compressed caching in a virtual memory system
JP6742051B2 (ja) * 2016-02-10 2020-08-19 株式会社東芝 ゲートウェイ装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US5477550A (en) * 1993-03-08 1995-12-19 Crisler; Kenneth J. Method for communicating data using a modified SR-ARQ protocol
US5623423A (en) * 1994-12-12 1997-04-22 Univ. Of Texas Apparatus and method for video decoding

Also Published As

Publication number Publication date
JPH1065551A (ja) 1998-03-06
US5703581A (en) 1997-12-30
IL121034A0 (en) 1997-11-20

Similar Documents

Publication Publication Date Title
JP3231663B2 (ja) データ圧縮方法
CA2191403C (en) Method and apparatus for performing data compression
US5877711A (en) Method and apparatus for performing adaptive data compression
JP3009727B2 (ja) 改良形データ圧縮装置
CA2299902C (en) Method and apparatus for data compression using fingerprinting
US5874908A (en) Method and apparatus for encoding Lempel-Ziv 1 variants
JP3258552B2 (ja) データ圧縮装置及びデータ復元装置
JP3294026B2 (ja) 高速可変長復号化装置
US20020063641A1 (en) Dual mode data compression for operating code
KR100527891B1 (ko) 허프만 디코딩을 수행하는 방법
JP2001285075A (ja) パケットごとのハッシュテーブルを使用してネットワークパケットのデータを圧縮するための方法および装置
US6225922B1 (en) System and method for compressing data using adaptive field encoding
JP2004525537A (ja) ハフマン・コード長情報を生成する方法
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JP4191438B2 (ja) データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
JP3346626B2 (ja) データ圧縮装置
JPH08265165A (ja) 高速可変長符号復号化装置
JP2003318739A (ja) データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体
JP3100206B2 (ja) データ圧縮方法
JP3143029B2 (ja) データ圧縮方法及びその装置並びにデータ伸長方法及びその装置
JP3001519B1 (ja) データ圧縮方法およびデータ圧縮方式
JP3648944B2 (ja) データ符号化方法およびデータ符号化装置ならびにデータ復号化方法およびデータ復号化装置
JP3332630B2 (ja) 復号装置及びデコードテーブルの生成方法
JP2002344326A (ja) 合成インデックスによるデータ圧縮方法及び圧縮データの完全復元方法
JP2004247909A (ja) ディジタル信号符号化方法、復号化方法、符号器、復号器、符号化プログラム、及び復号化プログラム

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080914

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080914

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090914

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090914

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100914

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110914

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110914

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120914

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120914

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130914

Year of fee payment: 12

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees