JP2003507920A - ルックアヘッド数学的ラン処理を使用するlzwデータ圧縮装置および方法 - Google Patents

ルックアヘッド数学的ラン処理を使用するlzwデータ圧縮装置および方法

Info

Publication number
JP2003507920A
JP2003507920A JP2001517707A JP2001517707A JP2003507920A JP 2003507920 A JP2003507920 A JP 2003507920A JP 2001517707 A JP2001517707 A JP 2001517707A JP 2001517707 A JP2001517707 A JP 2001517707A JP 2003507920 A JP2003507920 A JP 2003507920A
Authority
JP
Japan
Prior art keywords
code
run
data
character
data characters
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.)
Pending
Application number
JP2001517707A
Other languages
English (en)
Other versions
JP2003507920A5 (ja
Inventor
ビー.クーパー アルバート
Original Assignee
ユニシス コーポレーション
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 ユニシス コーポレーション filed Critical ユニシス コーポレーション
Publication of JP2003507920A publication Critical patent/JP2003507920A/ja
Publication of JP2003507920A5 publication Critical patent/JP2003507920A5/ja
Pending 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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/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

Abstract

(57)【要約】 開示されるデータコンプレッサは、LZWデータ圧縮を使用してデータ文字の入力ストリームを圧縮する。入力データ文字のランの発生が検出される時、ランは、ラン内に存在する連続した数値的に増加するセグメントを判定するために、入力を連続的にルックアヘッドすることと、連続した数値的に増加するランのセグメントに対応するコンプレッサコードカウンタからのコードを使用することによって処理される。代替案では、検出されたランは、ランの長さを判定することと、ランの長さから、ラン内に存在する連続した数値的に増加するセグメントに対応するコードカウンタからの、めいめいのコードを数学的に判定することによって処理される。具体的には、反復的な数学的アルゴリズムまたは2次方程式アルゴリズムが、ランの処理に使用される。

Description

【発明の詳細な説明】
【0001】 (関連出願の相互参照) Cooperによる米国特許出願第09/264,269号明細書、1999
年3月8日出願、表題「Data Compression Method A
nd Apparatus With Embedded Run−Lengt
h Encoding」。
【0002】 Cooperによる米国特許出願第09/300,810号明細書、1999
年4月27日出願、表題「Data Compression Method
And Apparatus With Embedded Run−Leng
th Encoding Using Mathematical Run P
rocessing」。
【0003】 Cooperによる米国特許出願第09/336,219号明細書、1999
年6月19日出願、表題「LZW Data Compression/Dec
ompression Apparatus And Method With
Embedded Run−Length Encoding/Decodi
ng」。
【0004】 上記米国特許出願第09/264,269号、第09/300,810号、お
よび第09/336,219号明細書は、参照によって本明細書に組み込まれる
【0005】 (発明の背景) 1.発明の分野 本発明は、LZWデータ圧縮に関し、詳細には、文字のラン(run)を処理す
る時の、辞書アクセス最小化に関連したLZWデータ圧縮に関する。
【0006】 2.従来の技術の説明 Abraham Lempel教授およびJacob Ziv教授が、現在広
範囲で使用されているLZデータ圧縮解凍システムの理論的基礎を提供した。彼
らの2本の独創的な論文が、IEEE Transactions on In
formation Theory、IT−23−3、1977年5月、pp.
337〜343およびIEEE Transactions on Infor
mation Theory、IT−24−5、1978年9月、pp.530
〜536に掲載された。V.42bisモデム圧縮解凍の標準規格として採用さ
れた、LZWとして既知の、至る所で使用されているデータ圧縮解凍システムが
、Welchによる米国特許第4,558,302号明細書、1985年12月
10日発行に記載されている。LZWは、GIFおよびTIFF画像通信プロト
コルに使用される圧縮解凍標準として採用された。
【0007】 LZ辞書ベース圧縮解凍システムのさらなる例が、Eastman他による米
国特許第4,464,650号明細書、1984年8月7日発行;Miller
他による米国特許第4,814,746号明細書、1989年3月21日発行;
Storerによる米国特許第4,876,541号明細書、1989年10月
24日発行;Clarkによる米国特許第5,153,591号明細書、199
2年10月6日発行;Lempel他による米国特許第5,373,290号明
細書、1994年12月13日発行に記載されている。
【0008】 ランレングス符号化(RLE)と称するもう1つのタイプのデータ圧縮解凍で
は、文字およびランの長さを示す圧縮されたコードを設けることによって、反復
する文字のランを圧縮する。したがって、RLEは、同一文字の長いストリング
の符号化に有効である。例えば、RLEは、データファイルの先頭に含まれる可
能性がある空白の長いシーケンスを圧縮するのに有効である。RLEは、地上と
空の画像の空の部分などの、画像が同一の値を有する連続する画素の長いランを
含む、画像圧縮にも有効である。
【0009】 上記の辞書ベースLZ圧縮システムが、文字のランに出会った時に、そのラン
に対応する圧縮されたコードを生成するために、多数の辞書アクセスが使用され
る。そのようなシステムで、辞書アクセスの数を最小にして、システム性能を強
化することが望ましい。
【0010】 従来技術では、ランレングス符号化は、O′Brien他による米国特許第4
,929,946号明細書、1990年5月29日発行;Hoffmanによる
米国特許第4,971,407号明細書、1990年11月20日発行;O′B
rienによる米国特許第4,988,998号明細書、1991年1月29日
発行;O′Brien他による米国特許第5,247,638号明細書、199
3年9月21日発行;Seroussi他による米国特許第5,389,922
号明細書、1995年2月14日発行;およびWelch他による米国特許第5
,861,827号明細書、1999年1月19日発行に例示されるように、L
Zシステムと組み合わされてきた。
【0011】 いくつかの従来技術のシステムでは、データをランレングスエンコーダに適用
した後に、ランレングス符号化されたデータをLZベースのシステムに適用する
ことによって、ランレングス符号化がLZシステムと組み合わされてきた。その
ようなアーキテクチャでは、ランレングスエンコーダが、コンプレッサ(compre
ssor)のフロントエンドで使用され、ランレングスデコーダが、デコンプレッサ
(decompressor)の出力端で使用される。そのようなシステムは、機器、出費、
制御のオーバーヘッド、および処理時間の増加という不利益をこうむる。米国特
許第4,971,407号明細書および米国特許第4,988,998号明細書
は、そのようなシステムの例である。
【0012】 米国特許第5,389,922号明細書のLZWベースのシステムでは、コン
プレッサからの一部の出力コードが、反復する入力データ文字のランが存在する
場合に抑制されるが、それでも多数の辞書アクセスが使用される。欠けているコ
ードを再生成するためには、デコンプレッサの入力に特殊なラン拡張エンジンが
必要である。
【0013】 米国特許第5,861,827号明細書のシステムのコンプレッサでは、部分
ストリングWおよび文字Cが見つかる時に、新しいストリングが、ストリングP
W上の拡張文字としてのCと共に格納され、このPは、最後の送出出力圧縮コー
ドで運ばれるストリングである。この圧縮アルゴリズムを用いると、文字のラン
は、その長さに無関係に2つの圧縮されたコードで符号化されるが、それでも、
多数の辞書アクセスが使用される。このシステムのデコンプレッサは、特殊な認
識されないコードのプロセスを使用して、コンプレッサとの同期を保つ。
【0014】 米国特許第4,929,946号明細書のシステムでは、所定の予約された基
準値とそれに続くランの反復カウントを送出することによって、ランが示される
。検出されるラン毎の圧縮ストリーム内の予約された基準値の使用という要件は
、圧縮を減らす傾向がある。米国特許第5,247,638号明細書は、米国特
許第4,929,946号明細書に類似した説明を提供する。
【0015】 データ文字のランの符号化を用いるもう1つのデータ圧縮システムが、上記の
米国特許出願第09/264,269号明細書で開示されている。この特許出願
のコンプレッサでは、連続する数値的に増加するセグメントがラン内に存在する
かどうかを判定するために、入力を連続的にルックアヘッド(look ahead)する
ことによって、ランが処理される。
【0016】 データ文字のランの符号化を用いるもう1つのデータ圧縮システムが、上記の
米国特許出願第09/300,810号明細書で開示されている。この特許出願
のコンプレッサでは、ランの長さから、ラン内に存在する連続する数値的に増加
するセグメントに対応するめいめいの出力コードを、数学的に判定することによ
って、ランが処理される。
【0017】 データ文字のランの処理を用いるもう1つのデータ圧縮解凍システムが、上記
の米国特許出願第09/336,219号明細書で開示されている。この特許出
願のシステムでは、ランレングス符号化/復号化は、LZWデータ圧縮/解凍シ
ステムに組み込まれ、コンプレッサおよびデコンプレッサのコードカウンタが、
文字のランに出会ったことを、知らせて検出するのに使用される。
【0018】 本発明の目的は、LZWデータ圧縮システムで文字のランの存在を検出し、ラ
ンを処理するために上記の米国特許出願第09/264,269号明細書および
米国特許出願第09/300,810号明細書に記載のラン処理手順をさまざま
に使用することである。これらのラン処理手順は、多数の辞書アクセスを必要と
しないので、性能改善がもたらされる。
【0019】 (発明の概要) 本発明は、入力データ文字のランが発生しようとする時を判定することによっ
て、周知のLZWデータ圧縮システムを機能強化する。ラン内に連続する数値的
に増加するセグメントが存在するかどうかを判定するために、入力を連続的にル
ックアヘッドすることと、数値的に増加する連続するランのセグメントに対応す
る数値的に増加する出力コードのシーケンスを生成することによって、ランを処
理する。代替案では、ランの長さを判定し、ランの長さから、ラン内に存在する
連続する数値的に増加するセグメントに対応するめいめいの出力コードを数学的
に判定することによって、ランを処理する。具体的に言うと、反復的な数学的ア
ルゴリズムまたは2次方程式アルゴリズムが、ランの処理に使用される。
【0020】 (好適実施形態の説明) 図1を参照すると、入力11に印加された入力データ文字のストリームを、出
力12の対応する圧縮コードのストリームに圧縮するデータコンプレッサ10が
示されている。コンプレッサ10には、カレント(current)文字レジスタ13
、カレントマッチ(match)レジスタ14、コードサイズレジスタ15、ルック
アヘッドバッファ16、およびnレジスタ17として示された、作業レジスタが
含まれる。コンプレッサ10には、さらに、これから説明する形で、ランのセグ
メントおよび非ランの文字ストリングを処理するのに使用される、コード値を順
次生成するためのコードカウンタ20が含まれる。
【0021】 コンプレッサ10には、さらに、ルックアヘッド比較および文字破棄ロジック
21が含まれる。ロジック21は、カレント文字レジスタ13内の文字とルック
アヘッドバッファ16内の文字の間の比較を実行し、これから説明する形で、ル
ックアヘッド文字を破棄する。ロジック21はまた、カレント文字レジスタ13
内の文字とルックアヘッドバッファ16の文字の間の比較を実行し、これからさ
らに説明する形で、ランが開始されようとしているかどうかを判定する。コンプ
レッサ10には、これから説明する形で、図2および3の動作の流れ図に従って
コンプレッサの動作を制御するコントロール22も含まれる。
【0022】 これから説明する形でコンプレッサ10と協力して文字ストリングを格納する
辞書25も含まれる。データは、コンプレッサ10と辞書25の間で、制御バス
27の制御の下で双方向データバス26を介して通信される。
【0023】 さらに、入力11で受け取られた入力データ文字ストリームをバッファリング
する入力文字バッファ30が含まれる。個々の入力データ文字は、これから説明
する動作に従って、入力文字バッファ30からバス31を介してカレント文字レ
ジスタ13およびルックアヘッドバッファ16に印加される。コンプレッサ10
は、制御バス32を介して、入力文字バッファ30からの入力データ文字の獲得
を制御する。
【0024】 簡単に言えば、コンプレッサ10の動作は次の通りである。入力データ文字が
、入力文字バッファ30から取り出され、ラン処理が実施されない時には、通常
のLZWデータ圧縮が実行され、出力12に圧縮されたコードストリームが供給
される。LZWデータ圧縮では、周知の形で、コードカウンタ20を漸次増分し
て、辞書25に格納される拡張ストリングにコード値を割り当てる。コンプレッ
サ10を本明細書では、当技術分野でよく理解されている可変長コードに関連し
て説明する。カレント文字レジスタ13、カレントマッチレジスタ14、コード
サイズレジスタ15、コードカウンタ20、および辞書25が、LZWデータ圧
縮を実行する際に使用される。LZWデータ圧縮アルゴリズムは、上記の米国特
許第4,558,302号明細書に詳細に記載されている。
【0025】 ルックアヘッドバッファ16およびロジック21を使用して、連続する入力文
字を検査し、次の2つのルックアヘッド文字が、カレント文字レジスタ13内の
文字と同一である場合に、LZW処理からラン処理に転ずる。使用されるラン処
理は、上記の米国特許出願第09/264,269号明細書に記載されているも
のである。簡単に言えば、文字のランが検出される場合に、カレント文字レジス
タ13内にある、ランを開始する文字と、コードカウンタ20内のコードを出力
する。その後、コードカウンタ20を1だけ増分する。その後、ランを検査して
、そのランに数値的に増加するランのセグメントが存在するかどうかを判定する
。具体的に言うと、3文字、4文字、5文字、6文字などの連続するランのセグ
メントが、カレント文字レジスタ13内の文字に続いてそれと一致する、2つの
ルックアヘッド文字に続いて、ランに存在するかどうかを判定する。そのような
検出されたランのセグメントのそれぞれについて、コードカウンタ20のコード
を出力し、コードカウンタ20を1だけ増分する。この処理は、ランに残ってい
る文字数が、シーケンス内に次のランのセグメントを取り込むのに不十分になる
まで継続される。これが発生した時には、やはりコードカウンタ20を1つ増や
す。
【0026】 カレント文字レジスタ13、コードサイズレジスタ15、ルックアヘッドバッ
ファ16、nレジスタ17、コードカウンタ20、およびロジック21は、図2
および3に関して、以下で説明する文字のラン処理を実行する際に使用される。
コントロール22は、動作の実行を制御する状態機械(state machine)などの
適当な回路を含むものとみなされる。
【0027】 以下で説明する実施形態は、説明のために、ASCIIの実施態様で例示され
る。ASCIIの環境では、256文字のアルファベットをサポートする8ビッ
ト文字サイズを使用する。
【0028】 図1の参照を継続しながら図2を参照すると、コンプレッサ10によって実行
される詳細な動作を示す制御の流れ図が示されている。図2の流れ図は、可変長
出力に基づいて述べられており、コードサイズレジスタ15は、この趣旨で使用
される。ASCII可変長コードの実施態様では、コードサイズを、9ビットか
ら開始し、コード512、1024、2048などのそれぞれで、順次10、1
1、12などに増やすことができる。
【0029】 したがって、ブロック40で、コードカウンタ20を、最初に使用可能なコー
ド、例えばASCIIの環境では258に初期化する。ブロック41で、コード
サイズレジスタ15を、開始コードサイズ、例えばASCIIの実施形態では9
ビットに初期化する。ブロック42で、最初の入力文字をカレント文字レジスタ
13に取り出し、ブロック43で、nレジスタ17に2をセットする。
【0030】 処理は、ブロック44で継続され、ここで、レジスタ13内のカレント文字を
、カレント文字に続く次のn個のルックアヘッド文字に対して吟味して、それら
が同一であるかどうかを判定する。この処理は、ルックアヘッドバッファ16に
取り出された適当な文字を使用して、ロジック21によって実行される。ブロッ
ク44で、カレント文字を、カレント文字に続く次のn個のルックアヘッド文字
と比較して、同一文字のランが開始されようとしているかどうかを判定する。カ
レント文字が、次のn個のルックアヘッド文字と同一である場合には、ブロック
44のYES分岐をたどってラン処理ブロック45に進む。ラン処理ブロック4
5の詳細を、図3に示す。
【0031】 上で説明したように、図2の流れ図は、図5および8の実施形態にも適用され
る。これらの実施形態について、ラン処理ブロック45の詳細を、それぞれ図6
および9に示す。
【0032】 n個のルックアヘッド文字の1つが、カレント文字と一致しない場合に、ブロ
ック44のNO分岐をたどって、通常のLZWデータ圧縮処理に継続する。
【0033】 ブロック44からのNO分岐をたどる時には、処理は、ブロック46で継続さ
れ、ここで、カレントマッチレジスタ14に、カレント文字レジスタ13内の文
字がセットされる。その後、ブロック47で、現在のカレント文字に続く次の入
力データ文字を、カレント文字レジスタ13にフェッチする。カレント文字レジ
スタ13内の次の文字と一緒に、カレントマッチレジスタ14の値は、当技術分
野で十分に理解される2文字ストリングを構成する(例えば、米国特許第4,5
58,302号明細書を参照されたい)。
【0034】 処理はブロック50で継続され、ここで、辞書25を検索して、カレントマッ
チにカレント文字を連結したものを含むストリングが辞書内にあるかどうかを判
定する。ブロック50の機能を実行するための辞書検索手順は、当技術分野で周
知である(例えば、米国特許第4,558,302号明細書および米国特許第5
,861,827号明細書を参照されたい)。
【0035】 ブロック50で、ストリングが辞書25内で見つかる場合には、ブロック50
のYES分岐をたどってブロック51に進む。ブロック51では、カレントマッ
チレジスタ14の内容を更新して、見つかったストリングの表示が含まれるよう
にする。当技術分野で周知のように、ストリングは、それに関連するコードを有
し、一般に、現在一致しているストリングのストリングコードが、カレントマッ
チレジスタ14にセットされる。ブロック51の機能に対する特定の実施態様の
詳細は、周知である(例えば、米国特許第4,558,302号明細書および米
国特許第5,861,827号明細書を参照されたい)。現在一致しているスト
リングを用いてカレントマッチレジスタ14を更新した後に、制御をブロック4
7に戻して、次の入力データ文字をカレント文字レジスタ13にフェッチする。
この形で、ブロック47、50、および51によって形成されるループで、入力
データ文字ストリームを辞書25に格納されたストリングと比較して、それらの
間の最長一致を見つける。
【0036】 ブロック50で、現在一致しているストリングと、ブロック47で取り出され
た次の文字との連結が、辞書25にない拡張ストリングをもたらす場合には、ブ
ロック50からのNO分岐をたどってブロック52に進む。ブロック52では、
辞書25で見つからなかったこの拡張ストリングは、辞書に入力され、コードカ
ウンタ20の現存コードが、この格納された拡張ストリングに割り当てられる。
ブロック52の機能に対する特定の実施形態の詳細は、周知である(例えば、米
国特許第4,558,302号明細書を参照されたい)。
【0037】 処理は、ブロック53で継続され、ここで、カレントマッチのコードを、コン
プレッサの出力12で供給される圧縮されたコードストリームの一部として出力
する。カレントマッチのコードは、カレントマッチレジスタ14によって供給さ
れる。カレントマッチが、複数文字のストリングである時には、そのストリング
のコードは、カレントマッチレジスタ14内に存在し、ブロック50に関して上
述したように、辞書25内で見つかった最長一致であった。ブロック53で出力
されるカレントマッチは、単一の文字にもなる可能性があることを理解されたい
。この場合の出力コードは、文字の値である。ブロック53の機能の実施の詳細
は、当技術分野で周知である(例えば、米国特許第4,558,302号明細書
および米国特許第5,861,827号明細書を参照されたい)。
【0038】 処理は、ブロック54に進み、ここで、コードカウンタ20のコードを吟味し
て、コードサイズの増加が必要であるかどうかを判定する。そうである場合には
、処理はブロック55に継続し、ここで、コードサイズレジスタ15を1だけ増
分する。ブロック54でコードサイズの増加が必要でない場合には、ブロック5
5をバイパスして、ブロック56での処理を継続する。ブロック56で、コード
カウンタ20を1だけ増分する。
【0039】 その後、制御は、前に説明したラン検出のブロック44に戻る。ランが検出さ
れない場合には、上で説明したように、新しいLZWデータ圧縮サイクルをブロ
ック46および47で開始し、ブロック46でカレントマッチレジスタ14にカ
レント文字をセットし、ブロック47でカレント文字レジスタ13に次のカレン
ト文字をフェッチする。ブロック46で、カレントマッチレジスタ14に、前の
処理で不一致をもたらした入力データ文字がセットされることを理解されたい。
ブロック46および47の機能性に対する実施態様の詳細は、当技術分野で周知
である(例えば、米国特許第4,558,302号明細書および米国特許第5,
861,827号明細書を参照されたい)。
【0040】 ブロック43〜45を除いて、図2の残りに、標準的なLZWデータ圧縮処理
が示されていることを理解されたい。したがって、LZWデータ圧縮のすべての
既知の実施態様を、本発明のLZWデータ圧縮態様の実施に使用することができ
る。
【0041】 ラン処理ブロック45に関して詳細に説明すると、ラン処理は、ブロック45
で処理されたランの文字に続く、次の文字のカレント文字レジスタ13へのフェ
ッチによって終了する。ラン処理ブロック45の出力が、ブロック43に返され
て、nが2にリセットされ、その後、ブロック44のラン検出に進む。したがっ
て、ブロック45のラン処理に続いて、ブロック44の吟味に応じて、さらなる
ラン処理が発生する可能性がある。言い換えると、ブロック45からブロック4
3への図示のリターン経路によって、LZW処理に対するラン処理の優先がもた
らされる。
【0042】 ブロック45からブロック43に戻る代わりに、ブロック46へのリターン経
路を作ることができ、これによって、代替構成をもたらすことができることを理
解されたい。ブロック45からブロック46への処理のリターンによって、何ら
かのLZWの最長一致を処理できるかどうかを判定するための辞書25の検索と
、ラン処理に入る前の辞書25の付随的更新を伴う出力とがもたらされる。言い
換えると、この接続によって、LZW処理の優先がもたらされる。この代替構成
では、ブロック56から、ブロック44ではなくブロック43に戻って、適当に
nレジスタ17がリセットされる。
【0043】 図1および2の参照を継続しながら図3を参照すると、図1の実施形態による
図2のブロック45のラン処理の詳細が示されている。図3のラン処理は、上記
の米国特許出願第09/264,269号明細書に詳細に記載されたラン処理と
実質的に同一であることを理解されたい。
【0044】 したがって、ブロック60で、カレント文字レジスタ13の文字を、コンプレ
ッサ10の出力12に供給する。この文字は、出力されるが、まだカレント文字
レジスタ13内に存在することを理解されたい。処理は、ブロック61で継続し
、ここで、コードカウンタ20内のコードが、コンプレッサ10の出力12に供
給される。制御フローのこの点では、潜在的なランの最初の3文字が処理済みで
ある。ランの最初の文字は、カレント文字レジスタ13内にあり、ブロック60
で出力済みである。「n」に、図2のブロック43で2がセットされているので
、図2のブロック44で、カレント文字が、カレント文字に続く2つのルックア
ヘッド文字と比較された。ブロック61で出力されるコードカウンタ20内のコ
ードは、図2のブロック44で使用された2つのルックアヘッド文字を表す。こ
れらの2つの文字が、カレント文字に続くランの最初のセグメントである。ブロ
ック62および63で、図2のブロック54および55に関して上記で説明した
コードサイズロジックが、実行される。
【0045】 ブロック64で、コードカウンタ20を1だけ増分して、ランの次のセグメン
トが発生する場合の、そのセグメントの処理のためにコードカウンタ20を準備
する。ブロック65で、処理されたばかりのn個のルックアヘッド文字を破棄す
る。破棄が行われるのは、これらの文字を表すコードが、ブロック61で出力さ
れたからである。文字の破棄は、適当な文字をルックアヘッドバッファ16から
クリアすることによって、ロジック21によって実行される。
【0046】 処理はブロック66で継続され、ここで、インデックスnをn+1に進める。
このアクションは、nレジスタ17に関して行われる。したがって、処理のこの
点では、前に2がセットされたnは、次の3個のルックアヘッド文字が、次の数
値的に増加するランのセグメントへのランを継続するかどうかの判定に備えて、
3に増やされる。
【0047】 したがって、判断ブロック67に入って、カレント文字レジスタ13内の文字
を、ブロック65で破棄された文字に続く次のn個のルックアヘッド文字に対し
て吟味する。この処理は、ルックアヘッドバッファ16に取り出された適当な文
字を使用して、ロジック21によって実行される。n個のルックアヘッド文字の
すべてがカレント文字と一致する場合に、YES分岐に進む。そうでない場合に
は、NO分岐に進む。
【0048】 ブロック67からYES分岐をたどる場合には、カレント文字レジスタ13内
の文字のランが、この、次のn文字のセグメントに続いている。制御をブロック
61に戻して、上述した処理を継続する。簡単に言うと、ブロック61で、この
n文字のランのセグメントを表すコードを出力し、この文字のランのセグメント
はブロック65で破棄される。その後、ブロック64でコードカウンタ20を進
める。ブロック66でインデックスnを進めて、もう1つの連続する数値的に増
加するランのセグメントが入力に存在するかどうかをさらに判定するために、文
字のランを調査する。
【0049】 ブロック67で、次のランのセグメントを取り込むのに不十分な、カレント文
字レジスタ13内の文字と同一の入力文字が存在すると判定される場合には、ブ
ロック67からNO分岐に進む。その後、図2のブロック54および55に関し
て上記で説明したコードサイズの吟味を、ブロック70および71で実行する。
ブロック72で、コードカウンタ20を1だけ増分する。ブロック73で、ロジ
ック21の制御の下で、ブロック65で破棄された文字に続く次の文字をカレン
ト文字レジスタ13にフェッチして、処理を継続する。したがって、その後、制
御は図2のブロック43に戻る。
【0050】 ブロック67からNO分岐をたどる時に、ブロック67の吟味を実行するのに
使用されるn個のルックアヘッド文字が、ルックアヘッドバッファ16内にある
ことを理解されたい。これらの文字は、ブロック73でカレント文字として使用
されるそのような文字の最初に関した処理を継続するのに使用される。その後、
ルックアヘッドバッファ16に格納された、カレント文字に続く文字を、図2の
ブロック44で、そこで必要なルックアヘッド文字として使用することができる
。ロジック21は、カレント文字レジスタ13およびルックアヘッドバッファ1
6を制御し、その結果、これらのアクションと、図2および3の他のアクション
とが、必要に応じて文字を使用し、フェッチし、破棄することによって適宜実行
されるようにする。
【0051】 図1〜3の参照を継続しながら図4を参照すると、図2および3の流れ図によ
るコンプレッサ10の動作の例が示されている。図4の最上部に、入力データ
文字ストリームが示されており、ここで、シーケンシャルな文字が、文字シーケ
ンス番号によって識別される。これは、例のステップを通じて文字の進行を追う
のを容易にするために行われたものである。シーケンス番号は、文字識別のため
に図示されており、実際のデータ文字ストリームには現れないことを理解された
い。
【0052】 この例は、大体見た通りに、実行されるアクションが、左の列に記され、アク
ションに参加する図2および3のブロックが、右の列に示されている。
【0053】 アクション1〜8では、標準のLZWデータ圧縮が、文字「a(5)」までの
入力データ文字に対して実行される。複数のLZW圧縮サイクルが実行され、各
サイクルで、右の列に注記されているように、ブロック44をトラバース(trav
erse)して、文字のランについて吟味する。ブロック44が、図2に示されたよ
うに処理の中で位置付けられている状態では、ラン処理が、LZW処理の実行の
前に行われ、LZW処理では、辞書25が、最長一致文字ストリングについて検
索される。したがって、ラン処理が、LZW処理に対する優先権を得る。上で説
明した代替構成を使用し、ラン処理ブロック45は、ブロック43ではなくブロ
ック46にリターンする場合には、LZW処理が、ラン処理より優先される。こ
の代替のアレンジでは、辞書25に存在するすべてのストリングは、ブロック4
4でラン処理を呼び出す前にブロック50で突き合わされる。
【0054】 アクション9で、図2のブロック44によって、図の最上部の入力データ文字
ストリームで観察されるように、カレント文字「a(5)」が次のn個のルック
アヘッド文字と同一であることが認識される。その後、制御は、ラン処理のブロ
ック45に進む。図示の文字「a」のランは「a(4)」から始まるが、文字「
a(4)」が、アクション7でのLZW処理に吸収されたことを理解されたい。
【0055】 アクション9で、文字「a(5)」が、図3のブロック60に従って出力され
る。ランは、アクション10〜12で文字「a(14)」まで処理される。文字
「a(15)」ないし「a(17)」からなるランの残りは、図2および3の図
示のブロックによって、アクション13および14で処理される。
【0056】 同様の形で、文字「b」のランが、アクション15〜18で処理される。アク
ション19で、制御がLZW処理に戻る。
【0057】 図2および3のブロックに対する図4のアクションのより詳細な説明は、容易
に明白であり、提供は略する。
【0058】 図1および2の参照を継続しながら図5を参照すると、本発明の代替の好適実
施形態の概略ブロック図が示されている。図5には、図1に関して上で説明した
ものと同一の、図1と同符号を与えられた、多くの構成要素を有するデータコン
プレッサ80が示されている。図1に関して上記で提供したこれらの同一の構成
要素の説明は、図5に適用可能である。コンプレッサ80には、ルックアヘッド
バッファ81、ランバッファ82、Rレジスタ83、およびDレジスタ84と示
された作業レジスタも含まれる。
【0059】 コンプレッサ80には、さらに、図1および2に関して上述したように、ラン
が開始されようとしているかどうかを判定するために、カレント文字レジスタ1
3内の文字とルックアヘッドバッファ81内の文字との間の比較を実行する、ル
ックアヘッド比較ロジック85も含まれる。コンプレッサ80には、さらに、ロ
ジック85によって検出されるランに従って、カレント文字に続くランの文字を
獲得しカウントするラン獲得ロジック86も含まれる。ロジック86によってカ
ウントされるランの文字の数は、Rレジスタ83に格納される。ランバッファ8
2は、これらの機能を実行する際に必要なすべてのバッファリングを提供する。
【0060】 コンプレッサ80には、これから説明する形で、獲得されたランを処理する際
に使用されるR、n、およびD計算ロジック87も含まれる。コンプレッサ80
には、さらに、ランの処理済みの文字を破棄する文字破棄ロジック88が含まれ
る。コンプレッサ80には、さらに、これから説明する形での図2および6の動
作の流れ図により、コンプレッサ80の動作を制御するコントロール89が含ま
れる。
【0061】 入力文字バッファ30に関して、個々の入力データ文字が、これから説明する
動作に従って、入力文字バッファ30からバス31を介してカレント文字レジス
タ13、ルックアヘッドバッファ81、およびラン獲得ロジック86に印加され
る。
【0062】 簡単に言うと、コンプレッサ80の動作は、LZWデータ圧縮の実行および文
字のランが検出された時のラン処理への転換に関して、上述のコンプレッサ10
の動作と同一である。図5の実施形態で使用されるラン処理は、その図1〜3の
実施形態に関して、上記の米国特許出願第09/300,810号明細書に記載
された処理に基づく。具体的に言うと、文字のランが検出された場合に、そのラ
ンを開始する、カレント文字レジスタ13に存在する文字が、出力され、カレン
ト文字に続く、カレント文字と同一であるランの文字の数が、Rレジスタ83に
セットされる。その後、ラン処理ロジックを呼び出して、そのランに存在する数
値的に増加するランのセグメントを数学的に判定する。具体的に言うと、2文字
、3文字、4文字、5文字などの連続するランのセグメントが、カレント文字レ
ジスタ13の文字に続くランに存在するかどうかを判定する。そのような検出さ
れたランのセグメントのそれぞれについて、コードカウンタ20のコードを出力
し、コードカウンタ20を1だけ増分する。この処理は、シーケンス内の次のラ
ンのセグメントを取り込むのに不十分な文字が残るまで、ランの文字の数から各
連続するセグメントの文字数を繰り返して減算することによって実施される。
【0063】 これが発生し、処理すべき文字が3文字以上残っている時に、カレント文字レ
ジスタ13に存在する文字を出力し、コードカウンタ20を1つ進める。反復処
理は、2文字のランのセグメントにリセットされ、この処理は、残りのランの文
字が3つ未満になるまで継続される。
【0064】 レジスタ13、15、17、83、および84と、バッファ81および82と
、コードカウンタ20と、ロジック85〜88が、図2および6に関して説明さ
れるような文字のラン処理の実行に使用される。図2および6の制御の流れ図に
、本発明によるデータ圧縮を実行するためにコンプレッサ80によって実行され
る詳細な動作を示す。コントロール89は、動作の実行を制御する状態機械など
の適当な回路を含むものとみなされる。
【0065】 図1に関して上記で説明したように、図2の制御の流れ図は、図5の実施形態
にも適用され、ラン処理ブロック45は図6の制御の流れ図によって実施される
。図1の実施形態に関して上記で示した図2の説明は、図5の実施形態にもあて
はまる。
【0066】 図2および5の参照を継続しながら図6を参照すると、図5の実施形態で使用
される図2のラン処理ロジック45の詳細を示す制御の流れ図が示されている。
上述および上記の米国特許出願第09/300,810号明細書で説明したよう
に、ランは、カレント文字レジスタ13に保持されたその最初の文字と、それに
続く同一文字の連続した数値的に増加するセグメントからなると考えられる。し
たがって、ブロック100で、カレント文字レジスタ13内の文字を出力12に
供給する。この文字は、出力されるが、まだカレント文字レジスタ13内に存在
することを理解されたい。ブロック101で、カレント文字に続き、カレント文
字レジスタ13内の文字と同一である、シーケンシャルな文字の数RをRレジス
タ83にセットする。ブロック102で、nレジスタ17のインデックスnに2
をセットする。その後、ブロック103で、破棄されるランの文字の数Dを0に
初期化する。
【0067】 これから説明するロジックでは、インデックスnが、反復して1つずつ増分さ
れ、R(処理されるランに残っている文字の数)がn(次に続く連続するランの
セグメントに必要な文字の数)未満になるまで、反復してRから減算される。ラ
ン内に存在することが数学的に発見されたそのようなランのセグメントのそれぞ
れについて、コードカウンタ20のコードを出力し、コードカウンタ20を1だ
け増分する。さらに、Dレジスタ84の量Dを、各セグメントが処理される際に
nだけ増分し、その結果、適当な数のランの文字が、ラン処理の終了時に破棄さ
れるようにする。
【0068】 したがって、処理は、ブロック104で継続され、ここで、Rがn未満である
かどうかを判定する。そうでない場合には、制御をブロック105に移し、ここ
で、コードカウンタ20内のコードを出力する。ブロック106および107で
、ブロック54および55に関して上記で説明したコードサイズロジックを実行
する。ブロック108で、コードカウンタ20を1だけ増分して、Rがセグメン
トを取り込むのに十分に大きいままである場合の、ランの次のセグメントの処理
のためにコードカウンタ20を準備する。
【0069】 ブロック109〜111で、DにD+nをセットし、RにR−nをセットし、
インデックスnにn+1をそれぞれセットする。これらのアクションは、それぞ
れレジスタ84、83、および17に関して実行される。その後、制御をブロッ
ク104に戻して、nの増やされた値に対してRの減らされた値を吟味する。ブ
ロック102〜104および109〜111でR、n、およびDに関して実行さ
れる計算および比較が、図5のロジック87によって実行されることを理解され
たい。
【0070】 Rが減らされ、nが増やされ、Rがn未満になった時に、ブロック104から
のYES分岐をたどってブロック120に進む。ブロック120では、Rが3未
満であるかどうかを判定する。Rが3以上である場合には、ブロック104〜1
11によって表されるループをリセットしてランの残りのR文字を処理するのに
、十分な文字がラン内に残っている。
【0071】 したがって、Rが3以上である時に、ブロック120のNO分岐をたどって、
ブロック121および122に進み、ここで、上記でブロック54および55に
関して述べたコードサイズロジックを実行する。ブロック123で、コードカウ
ンタ20を1だけ増分して、圧縮されたコード出力との同期を維持する。
【0072】 ランの残りのR文字の処理に備えて、ブロック124で、カレント文字レジス
タ13内の文字を出力する。したがって、ブロック125で、Rレジスタ83の
Rの値にR−1をセットし、ブロック126で、Dレジスタ84のDの値にD+
1をセットする。ブロック127で、nレジスタ17のインデックスnを2にリ
セットし、制御はブロック104にリターンする。
【0073】 ブロック104〜111からなるループの1回または複数回の反復の後に、R
が、3未満の値まで減る。制御がブロック120に入り、Rが3未満である時に
、ブロック120のYES分岐をたどってブロック130に進む。
【0074】 処理のこの点で、図6の上述のロジックによって処理されていない文字が、2
個、1個、または0個だけランに残っていることを理解されたい。ブロック13
0で、カレント文字に続くランのD文字を破棄する。文字破棄ロジック88は、
この趣旨で使用される。これらの文字が、ランバッファ82内に保持されている
場合には、ロジック88が、Dレジスタ84内の値を使用して、適当な文字を破
棄する。その後、上記でブロック54および55に関して説明したコードサイズ
吟味を、ブロック131および132で実行する。ブロック133で、コードカ
ウンタ20を1だけ増分する。ブロック134で、ロジック88の制御の下で、
ブロック130で破棄された文字に続く次の文字をカレント文字レジスタ13に
フェッチして、処理を継続する。したがって、制御は図2のブロック43に戻る
【0075】 図2、5、および6の実施形態の代替構成は、図6のブロック120〜127
を除去し、ブロック104のYES分岐をブロック130に直接リターンするこ
とによってもたらすことができる。処理すべきランの文字が3つ以上残っている
場合には、制御は、図2のブロック43および44をトラバースした後に、図6
のブロック100に再入する。
【0076】 図2、5、および6の参照を継続しながら図7を参照すると、図2および6の
流れ図によるコンプレッサ80の動作の例が示されている。図7のフォーマット
は、図4のフォーマットに類似し、上記で図4に関して示した説明を適用可能で
ある。図4に示されたものと同一のデータ文字ストリームを、図7で使用する。
【0077】 図7のアクション1〜8は、図4のアクション1〜8と同一であり、上記で図
4に関して示した説明を適用可能である。
【0078】 アクション9〜12では、ランの文字「a(5)」ないし「a(14)」が、
図6のブロック104〜111からなるループを使用して処理される。アクショ
ン13および14では、ランの残りが、図3のブロック120〜127を使用し
て処理され、アクション14で、文字「a(6)」ないし「a(17)」が破棄
される。
【0079】 同様の形で、文字「b」のランが、アクション15〜18で処理される。
【0080】 アクション19では、制御がLZW処理に戻る。
【0081】 図2および6のブロックに対する図7のアクションのより詳細な説明は、容易
に明白であり、提供は略する。
【0082】 図1、2、および5の参照を継続しながら図8を参照すると、本発明の代替の
好適実施形態の概略ブロック図が示されている。図8には、図1および5に関し
て上述したものに類似する、図1および5と同一の符号を与えられた、多くの構
成要素を有するデータコンプレッサ140が示されている。図1および5に関し
て上記で示したこれらの構成要素の説明は、概ね図8に適用可能である。
【0083】 コンプレッサ140には、図9に関して説明する形でコンプレッサ140の動
作に使用される変数を保持する、Lレジスタ141およびTレジスタ142と示
された作業レジスタも含まれる。コンプレッサ140には、さらに、図9に関し
て説明する形でランを処理するための、n計算ロジック143、L計算ロジック
144、T計算ロジック145、およびD計算ロジック146が含まれる。コン
プレッサ140には、これから説明する形で図2および9の動作の流れ図により
コンプレッサ140の動作を制御する、コントロール147も含まれる。
【0084】 簡単に言うと、コンプレッサ140の動作は、ラン処理が実行される形を除い
て、コンプレッサ10および80に関して上述した動作と全般的に同一である。
上述したように、図2の動作の流れ図は、コンプレッサ140にも適用され、ラ
ン処理ロジック45が、図9の動作の流れ図によって実施される。ランは、ラン
に存在するセグメントの数を判定するために、ラン内の文字数に式を適用するこ
とによって処理される。もう1つの式を使用して、コードカウンタ20が達成す
るカウントを判定して、これらのセグメントを表すコードを提供する。2次形式
のもう1つの式を適用して、処理される文字数を判定し、これによって、破棄さ
れる文字数の基礎を提供する。コードカウンタ20が式によって決定されたカウ
ントを達成するまで、コードカウンタ20を順次増分し、それに含まれるコード
を出力する。
【0085】 この処理を実行した後に、処理された文字の計算された数を、ランの文字数か
ら引き、処理されなければならない文字が3文字以上残っている場合に、カレン
ト文字レジスタ13に存在する文字を出力し、コードカウンタ20を1だけ進め
る。計算処理は、残りのランの文字が3個未満になるまで、ランの残りの文字の
数を式に適用することによってリセットされる。
【0086】 レジスタ13、15、17、84、141、および142と、バッファ81お
よび82と、コードカウンタ20と、ロジック85、86、88、および143
〜146が、図2および9に関して以下で説明するように、文字のラン処理の実
行に使用される。図2および9の制御の流れ図に、本発明によるデータ圧縮を実
行するためにコンプレッサ140によって実行される詳細な動作を示す。上記で
図2に関して示した説明も、ラン処理ロジック45が図9の動作の流れ図によっ
て実行されることを除いて、コンプレッサ140に適用される。コントロール1
47は、動作の実行を制御する状態機械などの適当な回路を含むものとみなされ
る。
【0087】 図2および8の参照を継続しながら図9を参照すると、図8の実施形態で使用
されるラン処理ロジック45の詳細を示す制御の流れ図が示されている。図9の
詳細を説明する前に、図示の計算が、次のように最初のn個の数を合計する式に
基づくことを理解されたい。 S(n)=1+2+3+4+...+n=[(n(n+1))/2]
【0088】 上述のように、ランは、単一文字の最初のセグメントがカレント文字レジスタ
13に保持される、連続する数値的に増加するランのセグメントからなるものと
見なすことができる。カレント文字に続くのが、2文字、3文字、4文字、…、
n文字の連続するランのセグメントである。さらなる文字がラン内に存在するこ
とができるが、さらなる文字の数が、n+1未満でなければならないことを理解
されたい。したがって、ラン内の文字数Rは、S(n)とさらなる文字の数の合
計に等しいことを理解されたい。さらに、上記で与えたnの2次方程式を、その
根を得るための2次方程式の解を使用して、Sに関してnについて解くことがで
きることを理解されたい。この式の1つの根が次式である。 n=[((8S+1)1/2−1)/2]
【0089】 nに関するこの式を、ラン内の文字数に適用する時に、式の右辺の整数部分が
、ラン内に存在するセグメントの連続するシーケンス内の最長のランのセグメン
トをもたらすことが観察される。これから説明する形で、この数を使用して、コ
ードカウンタからのコードのシーケンスを得て、ランのめいめいの連続するセグ
メントを表す。この数は、これから説明する形でランの残りの文字を処理する際
にも使用される。図9のラン処理は、図2、6、および7の実施形態に関して上
記の米国特許出願第09/300,810号明細書に詳細に記載されたラン処理
に基づく。
【0090】 図9の参照を継続すると、ブロック160で、カレント文字レジスタ13内の
文字を、出力12に供給する。この文字は、出力されるが、まだカレント文字レ
ジスタ13内に存在することを理解されたい。
【0091】 処理はブロック161に進み、ここで、Rレジスタ83に、カレント文字に続
く、カレント文字と同一のシーケンシャルな文字の数+1をセットする。ラン獲
得ロジック86が、この機能の実行に使用される。ラン獲得処理に必要なバッフ
ァリングは、ランバッファ82によって提供される。ランの文字が、ラン獲得ロ
ジック86によって、制御バス32を使用するコンプレッサ140の制御の下で
バス31を介して入力文字バッファ30から獲得されることを理解されたい。し
たがって、ブロック161で、図2のブロック44で検出されるランの文字数が
、Rレジスタ83に入力される。カレント文字レジスタ13は、ランの文字の値
を保持する。
【0092】 制御はブロック162で継続され、ここで、Dレジスタ84が0に初期化され
る。図9の処理では、Dレジスタ84によって、処理された後に破棄されるラン
の文字の数が累算される。
【0093】 処理はブロック163に進み、ここで、図8のロジック143を使用して、上
記のnに関する式中でRを使用して、下記を提供する。 n=[((8R+1)1/2−1)/2]の整数部分
【0094】 したがって、ブロック163では、ランの連続するセグメントシーケンスに存
在する最長の文字のセグメントの文字数を提供し、ランを構成するそのようなセ
グメントの数の表示も提供する変数nが生成される。nの値は、nレジスタ17
に存在する。
【0095】 ブロック164で、nを使用して、これから説明する形でコードカウンタ20
からのコードがランの連続するめいめいのセグメントに割り当てられた後に、次
に使用可能なコードカウンタ20内のコードを表す変数Lを導出する。図8のロ
ジック144が、次のようにLを導出するのに使用される。 L=[(code+n)−1]
【0096】 ここで、codeは、制御がブロック164に入った時にコードカウンタ20
内に存在するコードである。Lの値は、Lレジスタ141に存在する。
【0097】 処理はブロック165に進み、ここで、変数Tを、図8のロジック145を使
用して導出する。変数Tは、ブロック163から得られた変数nから導出される
、現在処理されているラン内の文字数を表す。したがって、変数Tは、1文字、
2文字、3文字、4文字、…、n文字を含む連続するランのセグメント内のラン
の文字の合計を表す。ロジック145は、次のようにTを供給する。 T=[(n(n+1))/2]
【0098】 変数Tは、これから説明する形で、ラン内のさらなる文字を処理し、破棄され
なければならない処理済みのランの文字の数を表す変数Dを生成するのに使用さ
れる。変数Tは、図8のTレジスタ142に存在する。
【0099】 処理は、ブロック166に進み、ここで、図8のロジック146を使用して変
数Dを導出する。ロジック146は、次のようにDを提供する。 D=D+(T−1)
【0100】 変数Tは、ブロック160でのカレント文字の出力を考慮に入れるために1だ
け減らされる。変数Dは、図8のDレジスタ84に存在し、図9のロジックの反
復が実行される際に破棄されなければならない処理済みの文字を累算するのに使
用される。
【0101】 処理はブロック170に進み、ここで、コードカウンタ20内のコードを出力
する。このコードは、処理中のラン内のセグメントの1つを表す。その後、図2
のブロック54および55に関して上述したコードサイズ吟味を、ブロック17
1および172で実行する。ブロック173で、コードカウンタ20を1だけ増
分する。
【0102】 ブロック174で、コードカウンタ20内のコードをLと比較して、コードの
すべてがランのめいめいのセグメントに割り当てられたかどうかを判定する。コ
ードカウンタ20内のコードがLと等しくない場合には、NO分岐によってブロ
ック170に戻って、処理を継続する。
【0103】 ブロック170〜174からなるループは、検出されたランに存在するとブロ
ック163〜166で数学的に判定されたセグメントのシーケンスをそれぞれ表
す、コードのシーケンスを出力することを理解されたい。コードカウンタ20内
のコードが値Lに達した時に、ブロック174からのYES分岐をたどってブロ
ック180に進む。
【0104】 ブロック180では、Rレジスタ83内の変数RにR−Tをセットする。この
ように、ランの残りの文字を数学的に処理するために変数Rがリセットされる。
【0105】 したがって、ブロック181で、Rを3と比較する。Rが3以上である場合に
は、検出されたランのさらなる処理を、ブロック163〜166および170〜
174を使用して実行することができる。したがって、Rが3以上である場合に
は、ブロック181からのNO分岐をたどってブロック182に進み、ここで、
Dレジスタ84内の変数Dを1だけ増分する。制御は、ブロック183および1
84に進み、ここで、ブロック54および55に関して上記で述べたコードサイ
ズロジックを実行する。ブロック185で、コードカウンタ20を1だけ増分し
、ブロック186で、カレント文字レジスタ13内の文字を出力する。変数Dが
、ブロック186で出力されるカレント文字を考慮に入れるためにブロック18
2で1だけ増分されることを理解されたい。
【0106】 制御は、その後、ブロック163に戻され、ここで、ブロック180で導出さ
れたRの値が、上記でブロック163〜166および170〜174に関して説
明したように使用されて、ラン内のセグメントに対応するさらなるコードが生成
される。しかし、制御がブロック186からブロック163〜166および17
0〜174に戻る時に、これらのブロックの数学的処理は、長さR−Tのランに
適用されることを理解されたい。
【0107】 変数Rが、ブロック180で3未満の値に減らされる時には、ブロック181
からのYES分岐をたどってブロック190に進む。ブロック190〜194で
は、図6のブロック130〜134に関して上述したものと同一の機能が実行さ
れ、それに関して上記で示した説明が、図9のブロック190〜194にも適用
可能である。簡単に言うと、カレント文字に続くD文字を破棄し、上記で述べた
コードサイズロジックを実行し、コードカウンタ20を1だけ増分し、破棄され
た文字に続く次の文字をカレント文字レジスタ13にフェッチする。
【0108】 図6に関して上述したものに類似する形で、ブロック180〜186を除去し
、ブロック174からのYES分岐をブロック190に直接に接続することによ
って、もう1つの実施形態をもたらすことができる。
【0109】 図2、8、および9の参照を継続しながら図10を参照すると、図2および9
の流れ図によるコンプレッサ140の動作の例が示されている。図10のフォー
マットは、図4および7のフォーマットに類似し、図4および7に関して上記で
示した説明が、適用可能である。図4および7に示したものと同一のデータ文字
ストリームを、図10で使用する。アクション1〜8および19〜22は、図4
および7の類似する符号を付されたアクションに関して上述したLZW処理を表
す。アクション9〜18のラン処理は、それぞれ図4および7で使用されたよう
な図3および6のラン処理ではなく、図9の2次方程式処理が図10で使用され
ることを除いて、図4および7の類似する符号を付されたアクションのラン処理
と類似する。
【0110】 図2および9のブロックに対する図10のアクションのより詳細な説明は、容
易に明白であり、提供は略する。
【0111】 さらに図4、7、および10を参照すると、同一の入力データ文字ストリーム
が、例示された3つの異なるアルゴリズムについて同一の出力の圧縮されたコー
ドストリームをもたらすことに留意されたい。アクション9〜18のラン処理に
関して、辞書アクセスが行われないことに留意されたい。
【0112】 上述の実施形態のすべてが、可変長出力に基づく。実施形態を、周知のように
例えば12ビットの固定長コード出力に基づくものとすることができることを理
解されたい。そのような実施形態では、コードサイズレジスタ15ならびに図2
のコードサイズ吟味ブロック54および55と図3、6、および9の対応するブ
ロックとが使用されなくなる。
【0113】 上述の実施形態では、図2のブロック43でnレジスタ17にセットされるn
の値によって、システムのラン検出感度が決定されることを理解されたい。変数
nには、少なくとも2をセットしなければならない。nにセットされる数が少な
いほど、文字のランの存在検出に関してシステムが敏感になる。
【0114】 しかし、図1〜3の実施形態で、ブロック43でnに2をセットしなければな
らないことに留意されたい。これは、図3の流れ図の動作が、カレント文字に続
く2文字のランのセグメントに対応する、コードのブロック61での出力に基づ
くからである。図2、5、および6の実施形態と、図2、8、および9の実施形
態では、図2のブロック43で、nに2以上をセットすることができる。これは
、図6のブロック102で、nが2にリセットされて、後続の図6のロジックの
正しい処理が保証されるからである。また、図9のブロック163で、nに適当
な値がセットされる。
【0115】 上記から、図1のルックアヘッドバッファ16およびロジック21が、図5お
よび8のルックアヘッドバッファ81およびロジック85と多少異なる形で動作
することを理解されたい。図1の実施形態では、ルックアヘッド機能は、図2の
ブロック44のラン検出機能と、図3のブロック67のラン検出ロジックの両方
で使用される。図5および図8の実施形態では、ルックアヘッド機能は、図2の
ブロック44のラン検出だけに使用される。
【0116】 図5および図8の実施形態に関して、ランバッファ82、Rレジスタ83、お
よびラン獲得ロジック86が、同一の符号を与えられているが、上記で図6およ
び9に関して述べたように、わずかな機能的な差が存在する。ランが検出され、
図6のロジックが使用される時に、Rに、カレント文字に続く、カレント文字と
同一の連続したランの文字の数がセットされる。これは、図6のブロック101
に示されている。しかし、図9のロジックが使用される時には、Rに、図9のブ
ロック161に示されているように、カレント文字を含むラン内の文字数がセッ
トされる。この動作の差に対処するために、図5および図8のこれらの構成要素
の間にわずかな差が存在することは、容易に明白である。
【0117】 同期して動作するコンプレッサ10、80、または140の圧縮された出力を
受け取って、それに対応する入力データ文字を回復する、互換性のあるデコンプ
レッサを簡単に提供できることを理解されたい。図4、7、および10の「出力
」列に示されている、出力コードのシーケンスが、デコンプレッサによって処理
される場合に、その図に示された入力データ文字ストリームが回復される。
【0118】 デコンプレッサのプロトコルを、コンプレッサのプロトコルとの互換性を有す
るものにしなければならないことを理解されたい。図4、7、および10の例で
は、8ビットによってサポートされるASCIIアルファベットが前提である。
ASCIIアルファベットは、256個の文字からなる。コードカウンタ20は
、図2のブロック40で、258のコードに初期化される。コード257は、例
えば、当技術分野で周知のように、制御コードとして使用することができる。デ
コンプレッサは、コンプレッサと同一の、アルファベットサイズと、初期コード
カウンタ値および初期コードサイズなどの初期条件とを有しなければならない。
さらに、当技術分野でよく理解されるように、本発明のコンプレッサ実施形態の
コードサイズと、デコンプレッサのコードサイズは、前もって互いに関して同期
化されなければならない。
【0119】 周知のように、コンプレッサとデコンプレッサは、すべての単一の文字ストリ
ングまたは単一の文字を、そのめいめいの値によって、圧縮されたコードから区
別できるように、初期化することができる。ASCII文字は、256以下の値
を有するが、図4、7、および10のASCII例では、圧縮されたコードが、
258以上の値を有する。さらに、他の単一文字コードプロトコルも使用できる
ことが周知である。本発明のコンプレッサ実施形態で使用される単一文字コード
プロトコルは、デコンプレッサでも使用されなければならない。
【0120】 コードカウンタ20が、上述したように増分されて、ラン処理と非ラン処理の
間の同期が維持されることを理解されたい。これは、特に、上述の図面のブロッ
ク64、72、108、123、133、173、185、および193に示さ
れている。
【0121】 上記の実施形態では、入力データ文字のストリームが圧縮される。入力データ
文字は、対応する文字ビットサイズを有する任意のサイズのアルファベット上の
文字とすることができる。例えば、データ文字は、8ビット文字の256文字A
SCIIアルファベットのような、アルファベット上の、ASCII文字などの
テキストとすることができる。入力データは、1ビットサイズ文字を有する2文
字2進アルファベット1および0上の、2進文字とすることもできる。テキスト
データを、基礎となる2進データの2文字アルファベット上でも圧縮できること
を理解されたい。
【0122】 本発明の上述の実施形態を、ハードウェア、ファームウェア、ソフトウェア、
またはこれらの組合せで実施できることを理解されたい。さまざまな説明された
機能を実行するためのディスクリート回路構成要素を、容易に実施することがで
きる。ソフトウェア実施形態では、上述の流れ図から容易に生成されるコーディ
ングを用いてプログラミングされた、適当なモジュールを使用することができる
【0123】 図3、6、および9のラン処理アルゴリズムは、上記では、LZWデータ圧縮
システムでの使用に関して説明された。これらのアルゴリズムは、本質的にシス
テム独立であり、単独でまたはさまざまなシステムと組み合わせて使用できるこ
とを理解されたい。
【0124】 好適実施形態で本発明を説明してきたが、使用された言葉が、制限ではなく説
明の言葉であることと、最も広い態様での本発明の真の範囲および趣旨から逸脱
せずに、特許請求の範囲内で変更を行えることを理解されたい。
【図面の簡単な説明】
【図1】 本発明の代替の好適実施形態を提供するデータコンプレッサの概略ブロック図
である。
【図2】 本発明によるデータ圧縮を実行するために、図1、5、および8のコンプレッ
サによって実行される動作を示す、制御の流れ図である。
【図3】 本発明の図1の実施形態の反復ルックアヘッドアルゴリズムによるラン処理を
実行するために、図2の流れ図で使用されるラン処理のロジックを示す制御の流
れ図である。
【図4】 図2および3の制御の流れ図による、図1のコンプレッサの動作を例示する図
である。
【図5】 本発明の代替の好適実施形態を提供するデータコンプレッサの概略ブロック図
である。
【図6】 本発明の図5の実施形態の反復的な数学的アルゴリズムによるラン処理を実行
するために、図2の流れ図で使用されるラン処理のロジックを示す制御の流れ図
である。
【図7】 図2および6の制御の流れ図による図5のコンプレッサの動作を例示する図で
ある。
【図8】 本発明の代替の好適実施形態を提供するデータコンプレッサの概略ブロック図
である。
【図9】 本発明の図8の実施形態の2次方程式数学的アルゴリズムによるラン処理を実
行するために、図2の流れ図で使用されるラン処理のロジックを示す制御の流れ
図である。
【図10】 図2および9の制御の流れ図による図8のコンプレッサの動作を例示する図で
ある。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,MZ,SD,SL,SZ,TZ,UG ,ZW),EA(AM,AZ,BY,KG,KZ,MD, RU,TJ,TM),AE,AG,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,BZ,C A,CH,CN,CR,CU,CZ,DE,DK,DM ,DZ,EE,ES,FI,GB,GD,GE,GH, GM,HR,HU,ID,IL,IN,IS,JP,K E,KG,KP,KR,KZ,LC,LK,LR,LS ,LT,LU,LV,MA,MD,MG,MK,MN, MW,MX,MZ,NO,NZ,PL,PT,RO,R U,SD,SE,SG,SI,SK,SL,TJ,TM ,TR,TT,TZ,UA,UG,UZ,VN,YU, ZA,ZW

Claims (58)

    【特許請求の範囲】
  1. 【請求項1】 データ文字の入力ストリームを圧縮されたコードの出力スト
    リームに圧縮するデータ圧縮方法であって、前記方法は、LZWデータ圧縮処理
    を含み、前記LZWデータ圧縮処理は、データ文字のストリングを格納すること
    と、前記格納されたストリングにコードカウンタからの各々のコードを割り当て
    ることと、前記格納されたストリングのそれぞれについて前記コードカウンタを
    増分することとを含み、 前記入力ストリームの所定の数の隣接するデータ文字が互いに関して同一であ
    る時を検出することによって、データ文字のランが前記入力ストリーム内で発生
    する時を検出するステップであって、 前記検出されたランは、連続する数値的に増加するセグメントを含み、セグメ
    ントは、前記検出されるランの次の続く隣接セグメントより1つ少ないデータ文
    字を有する、検出するステップと、 前記検出されたランの前記連続するセグメントにそれぞれ対応する、前記コー
    ドカウンタからの連続コードを判定するステップと、 前記格納されたストリングとの最長一致を判定するために前記入力ストリーム
    を前記格納されたストリングと比較することと、これによってLZW圧縮された
    コードを提供するためにそれに割り当てられた前記コードを供給することとによ
    って、ランが前記入力ストリーム内で発生することを検出されない時に、前記入
    力ストリームを圧縮するために前記LZWデータ圧縮処理を使用するステップと
    、 前記出力ストリームを提供するために、前記検出されたランのデータ文字およ
    び前記連続するセグメントに対応する前記連続コードを出力し、前記LZW圧縮
    されたコードを出力するステップと を備えたことを特徴とするデータ圧縮方法。
  2. 【請求項2】 前記判定ステップは、 前記ランが検出される時に、前記ラン内に存在する前記連続する数値的に増加
    するセグメントを検出するために、前記入力ストリームをルックアヘッドするス
    テップと、 前記コードカウンタからの前記連続コードを、それぞれ、前記検出された連続
    するセグメントに割り当てるステップと を備えたことを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記検出されたランは、前記検出されたランの前の隣接する
    セグメントより1つ多いデータ文字を有する最終セグメントを含み、 前記最終セグメントに続く前記入力ストリームが、次の続く隣接するセグメン
    トを取り込むのに不十分な数の、前記検出されたランのデータ文字と同一である
    隣接データ文字を含むことを検出するステップと、 前記不十分な数のデータ文字を検出した後に、前記コードカウンタを次の続く
    コードまで増分するステップと をさらに含むことを特徴とする請求項2に記載の方法。
  4. 【請求項4】 割り当てられたコードが出力される、前記検出されたランの
    前記セグメントのそれぞれのデータ文字を破棄するステップ をさらに含むことを特徴とする請求項3に記載の方法。
  5. 【請求項5】 前記最終セグメントの破棄された文字に続く前記入力ストリ
    ームの次のデータ文字を用いて前記方法を継続するステップ をさらに含むことを特徴とする請求項4に記載の方法。
  6. 【請求項6】 前記所定の数の前記隣接するデータ文字は、3データ文字を
    含むことを特徴とする請求項1に記載の方法。
  7. 【請求項7】 前記判定するステップは、 前記検出されたラン内のデータ文字の数を表す代表数を判定するステップと、 前記代表数を使用する数学的アルゴリズムによって、前記検出されたランの前
    記連続するセグメントに各々対応する、前記コードカウンタからの前記連続コー
    ドを数学的に判定するステップと を備えたことを特徴とする請求項1に記載の方法。
  8. 【請求項8】 前記検出されたランは、前記連続するセグメントに続くさら
    なるデータ文字を含み、前記さらなるデータ文字は、さらなる連続する数値的に
    増加するセグメントを含むランを形成し、前記方法は、 前記検出されたランのデータ文字を出力するステップと、 次の続くコードまで前記コードカウンタを増分するステップと、 さらなるデータ文字の前記数を使用して、前記さらなる連続するセグメントに
    それぞれ対応する、前記コードカウンタからのさらなる連続コードを数学的に判
    定するために、前記数学的アルゴリズムを再帰的に使用するステップと、 前記さらなる連続コードを出力するステップと をさらに含むことを特徴とする請求項7に記載の方法。
  9. 【請求項9】 前記数学的に判定するステップおよび前記出力するステップ
    は、 セグメント内のデータ文字の数を表すインデックスを初期化するステップと、 前記コードカウンタ内のコードを出力し、次の続くコードまで前記コードカウ
    ンタを増分するステップと、 前記インデックスをそれから減算することによって、前記代表数を減らすステ
    ップと、 前記インデックスを1だけ増分するステップと、 前記減らされた代表数を前記増分されたインデックスと比較するステップと、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力することから前記減らされた代表数を前記増
    分されたインデックスと比較することまでの、上記の所与のステップを繰り返す
    ステップと を含むことを特徴とする請求項7に記載の方法。
  10. 【請求項10】 前記減らされた代表数が、前記増分されたインデックス未
    満であるが、3未満でない時に、 次の続くコードまで前記コードカウンタを増分するステップと、 前記検出されたランの前記データ文字を出力するステップと、 前記インデックスを再初期化するステップと、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力することから前記減らされた代表数を前記増
    分されたインデックスと比較することまでの、前記ステップを繰り返すステップ
    と をさらに含むことを特徴とする請求項9に記載の方法。
  11. 【請求項11】 前記減らされた代表数を1だけ減少するステップをさらに
    含むことを特徴とする請求項10に記載の方法。
  12. 【請求項12】 対応するコードが出力される前記検出されたランの前記セ
    グメントのデータ文字を破棄するステップと、 前記コードカウンタを次の続くコードまで増分するステップと、 前記破棄されたデータ文字に続く前記入力ストリームの次のデータ文字を用い
    て前記方法を継続するステップと をさらに含むことを特徴とする請求項7に記載の方法。
  13. 【請求項13】 前記数学的に判定するステップおよび前記出力するステッ
    プは、 セグメント内のデータ文字の数を表すインデックスを初期化するステップと、 破棄数を初期化するステップと、 前記コードカウンタ内のコードを出力し、前記コードカウンタを次の続くコー
    ドまで増分するステップと、 前記破棄数を、それに前記インデックスを加算することによって増やすステッ
    プと、 前記代表数を、それから前記インデックスを減算することによって減らすステ
    ップと、 前記インデックスを1だけ増分するステップと、 前記減らされた代表数を前記増分されたインデックスと比較するステップと、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力することから前記減らされた代表数を前記増
    分されたインデックスと比較することまでの、上記の所与のステップを繰り返す
    ステップと を含み、前記方法は、 前記破棄数に従って前記検出されたランのデータ文字を破棄するステップと、 前記コードカウンタを次の続くコードまで増分するステップと、 前記破棄されたデータ文字に続く、前記入力ストリームの次のデータ文字を用
    いて前記方法を継続するステップと をさらに含むことを特徴とする請求項7に記載の方法。
  14. 【請求項14】 前記減らされた代表数が、前記増分されたインデックス未
    満であるが、3未満でない時に、 前記コードカウンタを次の続くコードまで増分するステップと、 前記検出されたランの前記データ文字を出力するステップと、 前記インデックスを再初期化するステップと、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力することから前記減らされた代表数を前記増
    分されたインデックスと比較することまでの、前記ステップを繰り返すステップ
    と をさらに含むことを特徴とする請求項13に記載の方法。
  15. 【請求項15】 前記減らされた代表数を1つ減少するステップをさらに含
    むことを特徴とする請求項14に記載の方法。
  16. 【請求項16】 前記破棄数を1だけ増分するステップをさらに含むことを
    特徴とする請求項15に記載の方法。
  17. 【請求項17】 前記数学的に判定するステップおよび前記出力するステッ
    プは、 第1の方程式を使用して、前記代表数に関する前記検出されたランに含まれる
    前記連続する数値的に増加するセグメントの数を計算する、第1の計算を実行す
    るステップと、 前記連続するセグメントの前記数を前記コードカウンタ内のコードへ加算する
    ことを含む、第2の方程式を使用して、限界を計算する第2の計算を実行するス
    テップと、 前記次の続くコードが前記限界と等しくなるまで、前記コードカウンタ内の前
    記コードを出力し、前記コードカウンタを次の続くコードまで増分するステップ
    と を含むことを特徴とする請求項7に記載の方法。
  18. 【請求項18】 前記第1の計算で計算された数に関して破棄数を計算する
    、第3の方程式を使用する第3の計算を実行するステップ をさらに含むことを特徴とする請求項17に記載の方法。
  19. 【請求項19】 前記次の続くコードが前記限界に等しい時に、 前記代表数を前記破棄数だけ減らし、前記減らされた代表数が3未満でない時
    に、 前記検出されたランのデータ文字を出力するステップと、 前記コードカウンタを次の続くコードまで増分するステップと、 前記第1の計算を再計算するために、前記第1の方程式で前記減らされた代
    表数を使用するステップと、 前記再計算された第1の計算の結果に適用される前記第2の方程式を使用し
    て前記限界を再計算するステップと、 前記次の続くコードが前記再計算された限界と等しくなるまで、前記コード
    カウンタ内のコードを出力し、前記コードカウンタを次の続くコードまで増分す
    るステップと を実行するステップをさらに含むことを特徴とする請求項18に記載の方法。
  20. 【請求項20】 前記再計算された第1の計算の結果に適用される前記第3
    の方程式を使用して前記破棄数を再計算するステップ をさらに含むことを特徴とする請求項19に記載の方法。
  21. 【請求項21】 前記第1の方程式は、 n=[((8R+1)1/2−1)/2]の整数部分 から成り、ここで、nは、前記検出されたランに含まれる連続するセグメント
    の前記数であり、Rは、前記代表数であり、 前記第2の方程式は、 L=[(code+n)−1] から成り、ここで、Lは、前記限界であり、codeは、前記コードカウンタ
    内の前記コードであり、 前記第3の方程式は、 T=[(n(n+1))/2] から成り、ここで、Tは、前記破棄数である ことを特徴とする請求項18に記載の方法。
  22. 【請求項22】 前記数学的に判定するステップおよび前記出力するステッ
    プは、 累算される破棄数を初期化するステップと、 前記累算される破棄数を、前記第3の計算によって計算された前記破棄数だけ
    増やすステップと をさらに含むことを特徴とする請求項18に記載の方法。
  23. 【請求項23】 前記数学的に判定するステップおよび前記出力するステッ
    プは、 累算される破棄数を初期化するステップと、 前記累算される破棄数を、前記破棄数および前記再計算された破棄数だけ増や
    すステップと をさらに含むことを特徴とする請求項20に記載の方法。
  24. 【請求項24】 前記次の続くコードが、前記限界と等しく、前記減らされ
    た代表数が、3未満でない時に、前記数学的に判定するステップおよび前記出力
    するステップは、 前記累算される破棄数を1だけ増分するステップ をさらに含むことを特徴とする請求項23に記載の方法。
  25. 【請求項25】 前記累算される破棄数に従って、前記検出されたランのデ
    ータ文字を破棄するステップと、 前記コードカウンタを次の続くコードまで増分するステップと、 前記破棄されるデータ文字に続く前記入力ストリームの次のデータ文字を用い
    て前記方法を継続するステップと をさらに含むことを特徴とする請求項22に記載の方法。
  26. 【請求項26】 前記累算される破棄数に従って、前記検出されたランのデ
    ータ文字を破棄するステップと、 前記コードカウンタを次の続くコードまで増分するステップと、 前記破棄されるデータ文字に続く前記入力ストリームの次のデータ文字を用い
    て前記方法を継続するステップと をさらに含むことを特徴とする請求項24に記載の方法。
  27. 【請求項27】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項7に記載の方法。
  28. 【請求項28】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項15に記載の方法。
  29. 【請求項29】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項26に記載の方法。
  30. 【請求項30】 データ文字の入力ストリームを圧縮されたコードの出力ス
    トリームに圧縮するデータ圧縮装置であって、前記装置は、LZWデータコンプ
    レッサを含み、前記LZWデータコンプレッサは、データ文字のストリングを格
    納する辞書と、前記格納されたストリングに各々のコードを割り当てるコードカ
    ウンタと、前記格納されたストリングのそれぞれについて前記コードカウンタを
    増分する手段とを含み、 前記入力ストリームの所定の数の隣接するデータ文字が互いに関して同一であ
    る時を検出することによって、データ文字のランが前記入力ストリーム内で発生
    する時を検出する手段であって、 前記検出されたランは、連続する数値的に増加するセグメントを含み、セグメ
    ントは、前記検出されるランの次の続く隣接セグメントより1つ少ないデータ文
    字を有する、検出する手段と、 前記検出されたランの前記連続するセグメントにそれぞれ対応する、前記コー
    ドカウンタからの連続コードを判定する手段と、 前記格納されたストリングとの最長一致を判定するために前記入力ストリーム
    を前記格納されたストリングと比較することと、これによってLZW圧縮された
    コードを提供するためにそれに割り当てられた前記コードを供給することとによ
    って、ランが前記入力ストリーム内で発生することを検出されない時に、前記入
    力ストリームを圧縮するように動作可能である前記LZWデータコンプレッサと
    、 前記出力ストリームを提供するために、前記検出されたランのデータ文字およ
    び前記連続するセグメントに対応する前記連続コードを出力し、前記LZW圧縮
    されたコードを出力する手段と を備えたことを特徴とするデータ圧縮装置。
  31. 【請求項31】 前記判定手段は、 前記ランが検出される時に、前記ラン内に存在する前記連続する数値的に増加
    するセグメントを検出するために、前記入力ストリームをルックアヘッドする手
    段と、 前記コードカウンタからの前記連続コードを、それぞれ、前記検出された連続
    するセグメントに割り当てる手段と を備えたことを特徴とする請求項30に記載の装置。
  32. 【請求項32】 前記検出されたランは、前記検出されたランの前の隣接す
    るセグメントより1つ多いデータ文字を有する最終セグメントを含み、 前記最終セグメントに続く前記入力ストリームが、次の続く隣接するセグメン
    トを取り込むのに不十分な数の、前記検出されたランのデータ文字と同一である
    隣接データ文字を含むことを検出する手段と、 前記不十分な数のデータ文字を検出した後に、前記コードカウンタを次の続く
    コードまで増分する手段と をさらに含むことを特徴とする請求項31に記載の装置。
  33. 【請求項33】 割り当てられたコードが出力される、前記検出されたラン
    の前記セグメントのそれぞれのデータ文字を破棄する手段 をさらに含むことを特徴とする請求項32に記載の装置。
  34. 【請求項34】 前記入力ストリームの前記圧縮を継続するために、前記破
    棄されたデータ文字に続く前記入力ストリームの次のデータ文字をフェッチする
    手段 をさらに含むことを特徴とする請求項33に記載の装置。
  35. 【請求項35】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項30に記載の装置。
  36. 【請求項36】 前記判定する手段は、 前記検出されたラン内のデータ文字の数を代表数を判定する手段と、 前記代表数を使用する数学的アルゴリズムによって、前記検出されたランの前
    記連続するセグメントに各々対応する、前記コードカウンタからの前記連続コー
    ドを数学的に判定する手段と を備えたことを特徴とする請求項30に記載の装置。
  37. 【請求項37】 前記検出されたランは、前記連続するセグメントに続くさ
    らなるデータ文字を含み、前記さらなるデータ文字は、さらなる連続する数値的
    に増加するセグメントを含むランを形成し、前記装置は、 前記検出されたランのデータ文字を出力する手段と、 次の続くコードまで前記コードカウンタを増分する手段と、 さらなるデータ文字の前記数を使用して、前記さらなる連続するセグメントに
    それぞれ対応する、前記コードカウンタからのさらなる連続コードを数学的に判
    定するために、前記数学的アルゴリズムを再帰的に使用する手段と、 前記さらなる連続コードを出力する手段と をさらに含むことを特徴とする請求項36に記載の装置。
  38. 【請求項38】 前記数学的に判定する手段および前記出力する手段は、 セグメント内のデータ文字の数を表すインデックスを初期化する動作と、 前記コードカウンタ内のコードを出力し、次の続くコードまで前記コードカウ
    ンタを増分する動作と、 前記インデックスをそれから減算することによって、前記代表数を減らす動作
    と、 前記インデックスを1だけ増分する動作と、 前記減らされた代表数を前記増分されたインデックスと比較する動作と、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力する動作から前記減らされた代表数を前記増
    分されたインデックスと比較する動作までの、上記の所与の動作を繰り返す動作
    と を実行する反復手段を含むことを特徴とする請求項36に記載の装置。
  39. 【請求項39】 前記減らされた代表数が、前記増分されたインデックス未
    満であるが、3未満でない時に、 次の続くコードまで前記コードカウンタを増分する動作と、 前記検出されたランの前記データ文字を出力する動作と、 前記インデックスを再初期化する動作と、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力する動作から前記減らされた代表数を前記増
    分されたインデックスと比較する動作までの、前記動作を繰り返す動作と を実行する再帰手段をさらに含むことを特徴とする請求項38に記載の装置。
  40. 【請求項40】 前記再帰手段は、前記減らされた代表数を1つ減少する手
    段をさらに含むことを特徴とする請求項39に記載の装置。
  41. 【請求項41】 対応するコードが出力される前記検出されたランの前記セ
    グメントのデータ文字を破棄する手段と、 前記コードカウンタを次の続くコードまで増分する手段と、 前記入力ストリームの前記圧縮を継続するために、前記破棄されたデータ文字
    に続く前記入力ストリームの次のデータ文字をフェッチする手段と をさらに含むことを特徴とする請求項36に記載の装置。
  42. 【請求項42】 前記数学的に判定する手段および前記出力する手段は、 セグメント内のデータ文字の数を表すインデックスを初期化する動作と、 破棄数を初期化する動作と、 前記コードカウンタ内のコードを出力し、前記コードカウンタを次の続くコー
    ドまで増分する動作と、 前記破棄数を、それに前記インデックスを加算することによって増やす動作と
    、 前記代表数を、それから前記インデックスを減算することによって減らす動作
    と、 前記インデックスを1だけ増分する動作と、 前記減らされた代表数を前記増分されたインデックスと比較する動作と、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内のコードを出力する動作から前記減らされた代表数を前記増分さ
    れたインデックスと比較する動作までの、上記の所与の動作を繰り返す動作と を実行する反復手段を含み、前記装置は、 前記破棄数に従って前記検出されたランのデータ文字を破棄する手段と、 前記コードカウンタを次の続くコードまで増分する手段と、 前記入力ストリームの前記圧縮を継続するために、前記破棄されたデータ文字
    に続く、前記入力ストリームの次のデータ文字をフェッチする手段と をさらに含むことを特徴とする請求項36に記載の装置。
  43. 【請求項43】 前記減らされた代表数が、前記増分されたインデックス未
    満であるが、3未満でない時に、 前記コードカウンタを次の続くコードまで増分する動作と、 前記検出されたランの前記データ文字を出力する動作と、 前記インデックスを再初期化する動作と、 前記減らされた代表数が前記増分されたインデックス未満になるまで、前記コ
    ードカウンタ内の前記コードを出力する動作から前記減らされた代表数を前記増
    分されたインデックスと比較する動作までの、前記動作を繰り返す動作と を実行する再帰手段をさらに含むことを特徴とする請求項42に記載の装置。
  44. 【請求項44】 前記再帰手段は、前記減らされた代表数を1つ減少する手
    段をさらに含むことを特徴とする請求項43に記載の装置。
  45. 【請求項45】 前記破棄数を1だけ増分する手段をさらに含むことを特徴
    とする請求項44に記載の装置。
  46. 【請求項46】 前記数学的に判定する手段および前記出力する手段は、 第1の方程式を使用して、前記代表数に関する前記検出されたランに含まれる
    前記連続する数値的に増加するセグメントの数を計算する第1の計算と、 前記連続するセグメントの前記数を前記コードカウンタ内のコードへ加算する
    ことを含む、第2の方程式を使用して、限界を計算する第2の計算と、 前記次の続くコードが前記限界と等しくなるまで、前記コードカウンタ内の前
    記コードを出力し、前記コードカウンタを次の続くコードまで増分する動作と を実行する数学的方程式手段を含むことを特徴とする請求項36に記載の装置
  47. 【請求項47】 前記数学的方程式手段は、 前記第1の計算で計算された数に関して破棄数を計算する、第3の方程式を使
    用する第3の計算 の動作を実行するようにさらに動作することを特徴とする請求項46に記載の
    装置。
  48. 【請求項48】 前記次の続くコードが前記限界に等しい時に、 前記代表数を前記破棄数だけ減らし、前記減らされた代表数が3未満でない時
    に、 前記検出されたランのデータ文字を出力する動作と、 前記コードカウンタを次の続くコードまで増分する動作と、 前記第1の計算を再計算するために、前記第1の方程式で前記減らされた代
    表数を使用する動作と、 前記再計算された第1の計算の結果に適用される前記第2の方程式を使用し
    て前記限界を再計算する動作と、 前記次の続くコードが前記再計算された限界と等しくなるまで、前記コード
    カウンタ内のコードを出力し、前記コードカウンタを次の続くコードまで増分す
    る動作と を実行する動作を実行する再帰手段をさらに含むことを特徴とする請求項47
    に記載の装置。
  49. 【請求項49】 前記再帰手段は、 前記再計算された第1の計算の結果に適用される前記第3の方程式を使用して
    前記破棄数を再計算する手段 をさらに含むことを特徴とする請求項48に記載の装置。
  50. 【請求項50】 前記第1の方程式は、 n=[((8R+1)1/2−1)/2]の整数部分 から成り、ここで、nは、前記検出されたランに含まれる連続するセグメント
    の前記数であり、Rは、前記代表数であり、 前記第2の方程式は、 L=[(code+n)−1] から成り、ここで、Lは、前記限界であり、codeは、前記コードカウンタ
    内の前記コードであり、 前記第3の方程式は、 T=[(n(n+1))/2] から成り、ここで、Tは、前記破棄数である ことを特徴とする請求項47に記載の装置。
  51. 【請求項51】 前記数学的方程式手段は、 累算される破棄数を初期化する手段と、 前記累算される破棄数を、前記第3の計算によって計算された前記破棄数だけ
    増やす手段と をさらに含むことを特徴とする請求項47に記載の装置。
  52. 【請求項52】 前記数学的方程式手段は、 累算される破棄数を初期化する手段と、 前記累算される破棄数を、前記破棄数および前記再計算された破棄数だけ増や
    す手段と をさらに含むことを特徴とする請求項49に記載の装置。
  53. 【請求項53】 前記数学的方程式手段は、前記次の続くコードが、前記限
    界と等しく、前記減らされた代表数が、3未満でない時に、前記累算される破棄
    数を1だけ増分するように動作することを特徴とする請求項52に記載の装置。
  54. 【請求項54】 前記累算される破棄数に従って、前記検出されたランのデ
    ータ文字を破棄する手段と、 前記コードカウンタを次の続くコードまで増分する手段と、 前記入力ストリームの前記圧縮を継続するために、前記破棄されるデータ文字
    に続く前記入力ストリームの次のデータ文字をフェッチする手段と をさらに含むことを特徴とする請求項51に記載の装置。
  55. 【請求項55】 前記累算される破棄数に従って、前記検出されたランのデ
    ータ文字を破棄する手段と、 前記コードカウンタを次の続くコードまで増分する手段と、 前記入力ストリームの前記圧縮を継続するために、前記破棄されるデータ文字
    に続く前記入力ストリームの次のデータ文字をフェッチする手段と をさらに含むことを特徴とする請求項53に記載の装置。
  56. 【請求項56】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項36に記載の装置。
  57. 【請求項57】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項44に記載の方法。
  58. 【請求項58】 前記所定の数の前記隣接するデータ文字は、3データ文字
    を含むことを特徴とする請求項55に記載の方法。
JP2001517707A 1999-08-12 2000-08-11 ルックアヘッド数学的ラン処理を使用するlzwデータ圧縮装置および方法 Pending JP2003507920A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/372,483 US6188333B1 (en) 1999-08-12 1999-08-12 LZW data compression apparatus and method using look-ahead mathematical run processing
US09/372,483 1999-08-12
PCT/US2000/022137 WO2001013523A1 (en) 1999-08-12 2000-08-11 Lzw data compression apparatus and method using look-ahead mathematical run processing

Publications (2)

Publication Number Publication Date
JP2003507920A true JP2003507920A (ja) 2003-02-25
JP2003507920A5 JP2003507920A5 (ja) 2007-09-27

Family

ID=23468314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001517707A Pending JP2003507920A (ja) 1999-08-12 2000-08-11 ルックアヘッド数学的ラン処理を使用するlzwデータ圧縮装置および方法

Country Status (7)

Country Link
US (2) US6188333B1 (ja)
EP (1) EP1208649B1 (ja)
JP (1) JP2003507920A (ja)
AU (1) AU6637300A (ja)
CA (1) CA2381381C (ja)
DE (1) DE60002218T2 (ja)
WO (1) WO2001013523A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307488B1 (en) * 2000-05-04 2001-10-23 Unisys Corporation LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses
US6384751B1 (en) * 2000-12-22 2002-05-07 Unisys Corporation Data compression/decompression circuit and method
US6426711B1 (en) * 2001-05-14 2002-07-30 Unisys Corporation Character table implemented data compression method and apparatus
US7068398B2 (en) * 2001-11-07 2006-06-27 International Business Machines Corporation System and method for efficient tile generation from complex raster data
US6653954B2 (en) 2001-11-07 2003-11-25 International Business Machines Corporation System and method for efficient data compression
US7043077B2 (en) * 2001-11-07 2006-05-09 International Business Machines Corporation System and method for efficient compression of raster image data
US7370120B2 (en) * 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
US6674908B1 (en) 2002-05-04 2004-01-06 Edward Lasar Aronov Method of compression of binary data with a random number generator
WO2004008771A1 (en) * 2002-07-17 2004-01-22 Koninklijke Philips Electronics N.V. 3d wavelet video coding and decoding method and corresponding device
US6756923B1 (en) * 2003-05-30 2004-06-29 Unisys Corporation Data compressor utilizing switched input coincidence elements arranged in virtual levels
US7289045B1 (en) 2006-06-21 2007-10-30 Honeywell International Inc. Two-stage codec for frame-based program images
US7696906B2 (en) * 2008-08-13 2010-04-13 International Business Machines Corporation LZW data compression algorithm
WO2014097359A1 (ja) * 2012-12-19 2014-06-26 富士通株式会社 圧縮プログラム、圧縮方法、圧縮装置およびシステム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06233141A (ja) * 1992-09-03 1994-08-19 Hewlett Packard Co <Hp> メモリの最小化のための適応型データ圧縮方法
JPH07249996A (ja) * 1983-06-20 1995-09-26 Unisys Corp 圧縮符号復元方法及び装置
WO1998004045A1 (en) * 1996-07-24 1998-01-29 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
JP2002539663A (ja) * 1999-03-08 2002-11-19 ユニシス コーポレーション 埋込みランレングス符号化によるデータ圧縮方法および装置
JP2002543657A (ja) * 1999-04-27 2002-12-17 ユニシス コーポレーション 数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置
JP2003502930A (ja) * 1999-06-19 2003-01-21 ユニシス コーポレーション ランレングス符号化/復号化が組み込まれているlzwデータ圧縮装置と方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US4929946A (en) 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
US4971407A (en) 1989-08-09 1990-11-20 Unisys Corp. Two stage run and string data compressor providing doubly compressed output
US4988998A (en) 1989-09-05 1991-01-29 Storage Technology Corporation Data compression system for successively applying at least two data compression methods to an input data stream
US5247638A (en) 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5389922A (en) 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5369605A (en) * 1993-07-07 1994-11-29 Dell Usa, L.P. Incremental search content addressable memory for increased data compression efficiency
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression
GB2301252A (en) * 1995-05-23 1996-11-27 Ibm Run length data compression
US5610603A (en) * 1995-09-28 1997-03-11 International Business Machines Corporation Sort order preservation method used with a static compression dictionary having consecutively numbered children of a parent
US5798718A (en) * 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07249996A (ja) * 1983-06-20 1995-09-26 Unisys Corp 圧縮符号復元方法及び装置
JPH06233141A (ja) * 1992-09-03 1994-08-19 Hewlett Packard Co <Hp> メモリの最小化のための適応型データ圧縮方法
WO1998004045A1 (en) * 1996-07-24 1998-01-29 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
JP2002539663A (ja) * 1999-03-08 2002-11-19 ユニシス コーポレーション 埋込みランレングス符号化によるデータ圧縮方法および装置
JP2002543657A (ja) * 1999-04-27 2002-12-17 ユニシス コーポレーション 数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置
JP2003502930A (ja) * 1999-06-19 2003-01-21 ユニシス コーポレーション ランレングス符号化/復号化が組み込まれているlzwデータ圧縮装置と方法

Also Published As

Publication number Publication date
DE60002218T2 (de) 2004-02-19
EP1208649A1 (en) 2002-05-29
AU6637300A (en) 2001-03-13
WO2001013523A1 (en) 2001-02-22
US6172624B1 (en) 2001-01-09
DE60002218D1 (de) 2003-05-22
EP1208649B1 (en) 2003-04-16
CA2381381A1 (en) 2001-02-22
US6188333B1 (en) 2001-02-13
CA2381381C (en) 2005-11-01

Similar Documents

Publication Publication Date Title
KR100332709B1 (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
US5293379A (en) Packet-based data compression method
US6169499B1 (en) LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
JP2003507920A (ja) ルックアヘッド数学的ラン処理を使用するlzwデータ圧縮装置および方法
CA2446952C (en) Character table implemented data compression method and apparatus
EP1183783B1 (en) Data compression method and apparatus with embedded run-length encoding using mathematical run processing
JP2004525567A (ja) 動的に変更可能なまれに出会う列の組込みフィルタリングを有するデータ圧縮伸長の方法および装置
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
US6166665A (en) Data compression method and apparatus with embedded run-length encoding
JP3839604B2 (ja) データ処理方法
GB2360915A (en) Run length compression encoding of selected bits of data words
US6724330B1 (en) Prefix table implemented data compression method and apparatus utilizing string code reassignment
US6756923B1 (en) Data compressor utilizing switched input coincidence elements arranged in virtual levels
JPH07264075A (ja) データ圧縮装置
JPH06291677A (ja) データ圧縮装置及びデータ復元装置
JPH08297564A (ja) データ圧縮装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070809

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070809

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100420