JP3631144B2 - 数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置 - Google Patents
数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置 Download PDFInfo
- Publication number
- JP3631144B2 JP3631144B2 JP2000614563A JP2000614563A JP3631144B2 JP 3631144 B2 JP3631144 B2 JP 3631144B2 JP 2000614563 A JP2000614563 A JP 2000614563A JP 2000614563 A JP2000614563 A JP 2000614563A JP 3631144 B2 JP3631144 B2 JP 3631144B2
- Authority
- JP
- Japan
- Prior art keywords
- run
- code
- character
- characters
- sequence
- 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
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/46—Conversion 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- 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
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)
- Image Processing (AREA)
Description
(関連出願の相互参照)
1999年3月8日出願のCooperの「Data Compression Method And Apparatus With Embedded Run−Length Encoding」という名称の米国特許出願第09/264,269号を参照することにより、その出願が本明細書に組み込まれる。
【0002】
(発明の背景)
(1.発明の分野)
本発明は、データ圧縮に関し、特に、今まで従来技術において開発されていない埋込み型ランレングス符号化(embedded run−length encoding)を用いたデータ圧縮実施形態を提供することに関する。
【0003】
(2.従来技術の説明)
Abraham Lempel教授およびJacob Ziv教授は、LZデータ圧縮(data compression)および圧縮解除(decompression)システムのための理論的な基礎を提供しており、これが今日、幅広く使用されている。彼らの独創性に富んだ2点の論文は、「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 bisモデム圧縮および圧縮解除のための規格として採用され、これが、1985年12月10日発行のWelchの米国特許第4,558,302号において記載されている。LZWは、GIFおよびTIFF画像通信プロトコルにおいて使用される圧縮および圧縮解除の規格として採用されている。
【0004】
別のタイプのデータ圧縮および圧縮解除は、ランレングス符号化(RLE)と呼ばれ、繰り返し文字ラン(repeating character run)を、文字およびランの長さを示す圧縮コードを提供することによって、圧縮する。したがって、RLEは、同じ文字の長い文字列の符号化に効果的である。たとえば、RLEは、長い空白のシーケンスの圧縮に効果的であり、これはデータファイルの開始部分に含まれる可能性がある。RLEは、陸空画像(land−sky image)の空部分(sky portion)など、画像が、同じ値を有する連続ピクセルの長いランを含む場合の、画像圧縮にも効果的である。
【0005】
従来技術では、ランレングス符号化がLZシステムと結合されており、これを、データをランレングス符号器に適用し、次いでランレングス符号化されたデータをLZベースのシステムに適用することによって行われていた。このようなアーキテクチャでは、ランレングス符号器が圧縮器(compressor)のフロントエンドで利用され、ランレングス復号器が圧縮解除器(decompressor)の出力側で利用される。このようなシステムは、装置、費用、制御オーバーヘッドおよび処理時間の増大の欠点を被る。
【0006】
ランレングス符号化は、1995年2月14日発行のSeroussi他の米国特許第5,389,922号のLZWベースのシステムにも含まれている。この特許のシステムでは、圧縮器からのある出力コードが、繰り返し入力データ文字のランの前で抑制される。特殊なラン拡張エンジンが、圧縮解除器の入力側で利用されて、損失コード(missing code)が再生成(regenarate)される。
【0007】
データ文字ランの符号化を含む、別のデータ圧縮および圧縮解除システムが、1999年1月19日発行のWelch他の米国特許第5,861,827号において開示されている。このシステムの圧縮器では、部分文字列Wおよび文字Cが見つかったとき、新しい文字列が、Cを拡張文字として、文字列PW上に格納され、Pは、最後に伝送された出力圧縮コードにおいて搬送された文字列であった。この圧縮アルゴリズムでは、文字のランが、その長さに関わらず、2つの圧縮コードにおいて符号化される。このシステムの圧縮解除器は、特殊な、認識されないコード処理を使用して、圧縮器との同期を維持する。
【0008】
データ文字ランの符号化を含む、別のデータ圧縮システムは、前記米国特許出願第09/264,269号において開示されている。この特許出願の圧縮器では、順に入力をルックアヘッドして、隣接する数値的に増大するセグメントがランにおいて存在するかどうかを決定することによって、ランが処理される。
【0009】
本発明の目的は、ランレングス符号化を利用したさらなるデータ圧縮実施形態を提供することにある。ランにおける文字数をカウントするのみで、そのための適切な出力コードを提供する実施形態を提供することが特に望ましい。
【0010】
(発明の概要)
本発明に係る圧縮器(compressor)は、入力データ文字(input data characters)のランにおける文字数(number of characters)を決定し、ランの数値的に増大する隣接したセグメントにそれぞれ対応する、数値的に増大する出力コードのシーケンスを数学的に生成する。複数の実施形態を開示しており、これらは反復的な数学的アルゴリズムおよび二次式アルゴリズムをそれぞれ利用して、ランを処理する。互いに異なる連続文字が、直接的に、かつ、圧縮器コードカウンタ(compressor code counter)の増分との同期において、伝送される。
【0011】
(好適実施形態の説明)
図面を詳細に論ずる前に、図2に示した流れ図は、図1および図6の実施形態に汎用的に用い得ることを知ることが有用である。図1の実施形態では、図2のラン処理論理が図3の流れ図によって実施され、図6の実施形態では、図2のラン処理論理が図7の流れ図によって実施される。図1および図6の実施形態では、図2の残余ラン処理論理が、図4の流れ図によって実施される。図1および図6の実施形態は、非格納構成(non−storage configuration)である。
【0012】
図9および図10の実施形態は、格納構成(storage configuration)を利用し、図11の流れ図に従って制御される。この実施形態は、図3の反復的な数学的アルゴリズム(iterative mathematical algorithm)を利用する。
【0013】
続く説明から、図1および図6の実施形態の原理構成において、ラン全体が入力から吸収(absorbed)され、それに対応する適切なコードが、さらなる入力取り出し(input fetching)を行うことなく、ランにおける文字数が確立された後に出力されることが明らかになるであろう。ランは、図3および図7に詳述された数学的アルゴリズムによって「オフライン」で効果的に処理される。
【0014】
以下に記載されたすべての実施形態は、可変長出力において予見され、各実施形態のコードサイズレジスタ(Code Size register)が利用されて、これが実施される。よく知られているように、たとえば、8ビットのアルファベットを有するASCII実施において、コードサイズが9ビットで開始し、順次に10、11、12などのビットへ、それぞれコード512、1024、2048などで、増大することができる。実施形態を、たとえば、よく知られているように、12ビットの固定長コード出力において予見できることも、さらに理解されたい。
【0015】
図1を参照すると、データ圧縮器(data compressor)10が例示され、これは、入力11で加えられた入力データ文字のストリームを、対応する圧縮コードのストリームに、出力12で圧縮する。圧縮器10は、現在文字(Current Character)レジスタ13、コードサイズレジスタ14、ルックアヘッド(Look−Ahead)バッファ15、ランバッファ16、R−レジスタ17、T−レジスタ18およびn−レジスタ19として示された、作業レジスタ(working register)を含む。圧縮器10はさらに、ランおよび非ラン文字(non−run character)を、以下に記載される方法において処理するために使用されるコード値を順次生成するための、コードカウンタ(Code Counter)22を含む。
【0016】
圧縮器10はさらに、現在文字レジスタ13における文字と、ルックアヘッドバッファ15における文字の間の比較を実行して、さらに記載される方法においてランが開始直前であるか否かを決定する、ルックアヘッド比較論理(look−ahead comparison logic)23を含む。圧縮器10はさらに、ランの文字を、論理23によって検出中のランに従って、獲得(acquiring)かつカウント(counting)するためのラン獲得論理(run acquisition logic)24を含む。ランにおける文字の数は、論理24によってカウントされたとき、R−レジスタ17に格納される。ランバッファ16は、これらの機能の実行において必要とされた、いかなるバッファリングも提供する。
【0017】
圧縮器10はまた、R、Tおよびn計算論理25も含み、これらが、以下で説明される方法における、獲得されたラン(acquired run)の処理において利用される。圧縮器10はさらに、処理されたランの文字を廃棄(discarding)するための文字廃棄論理(character discard logic)26を含む。さらに、圧縮器10に含まれたものは、圧縮器10の動作を制御するための制御27であり、これは、図2〜4の動作流れ図に従って、以下で記載される方法において行われる。
【0018】
また、入力11で受信された入力データ文字ストリームをバッファリングする、入力文字バッファ(Input Character Buffer)30も含まれる。個別の入力データ文字が、入力文字バッファ30から、バス31を介して、現在文字レジスタ13、ルックアヘッドバッファ15およびラン獲得論理24へ、以下で記載される動作に従って加えられる。圧縮器10は、入力データ文字を、入力文字バッファ30から制御バス32を介して獲得することを制御する。
【0019】
簡単に述べると、圧縮器10の動作は以下の通りである。入力データ文字が、入力文字バッファ30から現在文字レジスタ13へ、かつ、ルックアヘッドバッファ15へ取り込まれ、論理23が現在文字(Current Character)と次の2つのルックアヘッド文字(next two look−ahead characters)の間の比較を実行することが可能となる。3つの文字が同じである場合、ラン処理が実行される。そうでない場合、現在文字レジスタ13における文字が出力され、現在文字の後に続く次の文字が、現在文字レジスタ13に取り込まれる。
【0020】
文字ランが検出された場合、ランにおける文字の数が決定され、ランを開始して現在文字レジスタ13に存在する文字が出力される。次いで、ラン処理論理が呼び出されて、ランにおいて存在する、数値的に増大するランセグメントが数学的に決定される。具体的には、現在文字レジスタ13における文字の後に続く、2文字、4文字、5文字などの隣接したランセグメントが、ランにおいて存在するかどうかが決定される。このような検出された各ランセグメントについて、コードカウンタ22におけるコードが出力され、コードカウンタ22が1だけ増分される。この処理は、各隣接したセグメントにおける文字の数を、ランにおける文字の数から、シーケンスにおける次のランセグメントを入れるために不十分な文字が残るまで、反復的に減算することによって実施される。
【0021】
これが起こり、3文字以上が処理されるために残ったとき、現在文字レジスタ13において存在する文字が出力され、コードカウンタ22が再度1だけ進められる。反復処理が、2文字のランセグメントにリセットされ、処理が、3つより少ないラン文字が残るまで、継続される。これが起こったとき、残余ラン処理論理(residual run processing logic)が呼び出される。
【0022】
残余ラン処理(residual run processing)では、すべての検出されたラン文字が処理されるまで、残余ラン文字(residual run character)が非ラン文字(non−run character)として処理される。
【0023】
現在文字レジスタ13、バッファ15および16、レジスタ17〜19、コードカウンタ22および論理23〜26は、文字ラン処理を実行することにおいて利用され、これは図2〜4に関して以下で説明されるように行われる。図2〜4の制御流れ図は、圧縮器10によって、本発明によるデータ圧縮を実行するために実行される、詳述された動作を例示する。制御27は、状態機械など、動作の実行を制御するための適切な回路を含むものとみなされる。
【0024】
図2を参照し、図1を引き続き参照すると、ブロック40で、コードカウンタ22が、最初の使用可能コード、たとえば、ASCII環境においては258に初期化される。ブロック41で、コードサイズレジスタ14が、開始コードサイズ、たとえば、ASCII実施形態においては9ビットに初期化される。
【0025】
ブロック42で、最初の入力文字が現在文字レジスタ13に取り込まれ、ブロック43で、現在文字レジスタ13における文字が出力12に提供される。この文字が出力されていても、これがなお現在文字レジスタ13において存在することを理解されたい。
【0026】
処理がブロック44に進行し、レジスタ13における現在文字が、現在文字の後に続く次の2つのルックアヘッド文字に対して検査されて、これらが同じかどうかが決定される。この処理は、論理23によって、ルックアヘッドバッファ15に取り込まれた適切な文字を利用して行われる。
【0027】
ブロック44が、現在文字を、現在文字の後に続く次の2つのルックアヘッド文字と比較して、同じ文字のランが開始直前であるかどうかを決定する。現在文字が、次の2つのルックアヘッド文字と同じである場合、ブロック44のYES分岐を取ることによって、ラン処理が開始する。2つのルックアヘッド文字のうち1つが現在文字と合致しなかった場合、ブロック44のNO分岐が取られて、非ラン処理が実行される。
【0028】
図2の論理において、ブロック44が、文字ランが発生する直前であると決定したとき(YES分岐)、現在文字レジスタ13における文字が出力されるべきであることを理解されたい。同様に、ブロック44が、ランが発生する直前でないと決定したとき(NO分岐)、再度、現在文字が出力されるべきである。節約のため、現在文字が、どの分岐が取られるかに関係なく、出力されるので、ブロック43が、ブロック44の判断の前にアクションを実行する。
【0029】
ブロック44から非ラン処理のNO分岐が取られた場合、現在文字がすでにブロック43で出力されている。ブロック45で、コードカウンタ22におけるコードが検査されて、コードサイズにおける増大が必要とされるかどうかが決定される。そうであった場合、処理がブロック46に進行し、コードサイズレジスタ14が1だけ増分される。コードサイズにおける増大が必要とされなかった場合、ブロック46が迂回されて、処理がブロック47に進行する。ブロック47で、コードカウンタ22が1だけ増分されて、ブロック43の現在文字出力との同期が維持される。
【0030】
処理がブロック48に進行し、現在文字の後に続く文字が現在文字レジスタ13に取り込まれる。次いで、制御がブロック43に戻り、入力データの処理が継続される。
【0031】
ブロック44の判断が、同じ文字のランが開始することを示したとき、YES分岐が取られてブロック50へ進行する。ブロック50で、R−レジスタ17が、1に、現在文字の後に続いて現在文字と同じである一連の文字の数を加えたものに、設定される。ラン獲得論理24が利用されて、この動作が実行される。ラン獲得処理において必要とされるいかなるバッファリングも、ランバッファ16によって提供される。ランの文字が、ラン獲得論理24によって、入力文字バッファ30から、バス31を介して、圧縮器10の制御下で、制御バス32を利用して、獲得されることを理解されたい。したがって、ブロック50は、R−レジスタ17に、ブロック44で検出されたランにおける文字の数を入れる。現在文字レジスタ13は、ラン文字の値を保持する。
【0032】
制御がブロック54に進行し、これは、ランを表現する圧縮コードのシーケンスを計算するためのラン処理論理を、概略的に表現する。図1の実施形態では、ラン処理論理54が、図3の制御流れ図を利用して実施される。多くともランの2文字を除いてすべてを処理した後、残余ラン処理論理ブロック58に、これらの残余の1文字または2文字が、収容されるように入れられる。ブロック58の残余ラン処理論理は、図4の制御流れ図を利用して実施される。
【0033】
ランが処理された後、制御がブロック60に進行し、現在文字の後に続くランのR−1個の文字が廃棄される。文字廃棄論理26が利用されて、これが実施される。これらの文字がランバッファ16において保持された場合、論理24がバッファをクリアする。ラン文字自体がブロック54および58内で利用されないので、ブロック60の機能を単に、次に処理された文字がランの後に続く文字であるようにフラグ(図示せず)をセットすることのみにすることができる。その後、上でブロック45および46に関して記載されたコードサイズ検査が、ブロック61および62で実行される。ブロック63で、コードカウンタ22が1だけ増分される。ブロック64で、論理26の制御下で、ブロック60で廃棄された文字の後に続く次の文字が、現在文字レジスタ13に取り込まれて、処理が継続される。したがって、次いで、制御がブロック43に戻る。
【0034】
図3および図4に関して記載された方法において、ラン処理論理54および残余ラン処理論理58が、ラン全体の処理を提供することを理解されたい。図2のブロック60および64に従って、すべてのラン文字がその後廃棄され、処理が、ランの後に続く現在文字により継続されることを、さらに理解されたい。
【0035】
要約すると、判断ブロック44がランの発生を検出し、ランが、ブロック50、54および58で処理されることを理解されたい。非ランデータの処理は、ブロック45〜48によって実行される。ブロック60〜64は、ランが吸収され処理された後に続く処理を実行する。
【0036】
図3を参照し、図1および図2を引き続き参照すると、図1の実施形態において利用されたラン処理論理54の詳細を例示する、制御流れ図が例示される。上で論じたように、図2のブロック44で検出されたランは、論理24によって、ブロック50でR−レジスタ17に設定された文字の数Rにより獲得された、R個の文字からなる。上で、かつ、前記第09/264,269号でさらに論じられたように、ランは、現在文字レジスタ13において保持されたその最初の文字と、その後に続く、隣接する数値的に増大する同じ文字のセグメントからなると見なされる。ブロック70で、T−レジスタ18における変数TがR−1に設定される。ブロック71で、n−レジスタ19におけるインデックスnが2に設定される。
【0037】
記載された論理において、インデックスnが反復的に1ずつ増分され、T(ランにおいて残っている、処理される文字の数)がn(次に続く隣接したランセグメントにおいて必要とされた文字の数)より小さくなるまで、反復的にTから減算される。ランにおいて存在することが数学的に判明したこのような各ランセグメントについて、コードカウンタ22におけるコードが出力され、コードカウンタ22が1ずつ増分される。
【0038】
したがって、処理がブロック72に進行し、Tがnより小さいか否かが決定される。そうでなかった場合、制御がブロック73に進行し、コードカウンタ22におけるコードが出力される。ブロック74および75で、ブロック45および46に関して上で論じられたコードサイズ論理が実行される。ブロック76で、コードカウンタ22が1だけ増分されて、Tがセグメントに入れるために依然として十分大きい状態であるべきであった場合、コードカウンタ22が、ランの次のセグメントの処理のために準備される。
【0039】
したがって、ブロック77において、TがT−nに設定され、ブロック78では、インデックスnがn+1に設定される。これらのアクションは、レジスタ18および19に関して、それぞれ実行される。制御がブロック72に戻り、減少されたTの値を、増分されたnの値に対して検査する。R、Tおよびnに関して、ブロック70〜72、ブロック77および78で実行された計算および比較が、図1の論理25によって実行されることを理解されたい。
【0040】
Tが減少され、nが増加されて、Tがnより小さいポイントになったとき、ブロック72からYES分岐が取られて、ブロック80へ進行する。ブロック80が、Tが3より小さいかどうかを決定する。Tが3以上であった場合、ブロック71〜78によって表されたループをリセットして、ランのこれらの残りのT個の文字を処理するために、十分な文字がランにおいて残っている。
【0041】
したがって、Tが3以上であったとき、ブロック80からNO分岐が取られて、ブロック81および82へ進行し、上でブロック45および46に関して論じられたコードサイズ論理が実行される。ブロック83で、コードカウンタ22が1だけ増分されて、圧縮コード出力の同期が維持される。
【0042】
ランの残りのT個の文字を処理するための準備において、ブロック84で、現在文字レジスタ13における文字が出力され、したがって、ブロック85で、T−レジスタ18におけるTの値がT−1に設定される。次いで、制御がブロック71に戻り、n−レジスタ19におけるインデックスnが2にリセットされる。
【0043】
ブロック71〜78からなるループの1つまたは複数の反復の後、Tは、3より小さい値に減少する。制御がブロック80に入り、Tが3より小さいとき、ブロック80のYES分岐が取られて、ラン処理論理54が終了する。次いで、処理が、図4において詳述された残余ラン処理論理58に進行する。
【0044】
図4を参照し、図1〜3を引き続き参照すると、図2の残余ラン処理論理58の詳細が例示される。ブロック90において、Tがゼロと比較され、Tがゼロと等しくなかった(Tが1または2となる)場合、ブロック90からNO分岐が取られる。残余ラン文字は、それらが非ラン文字であるかのように、効果的に処理される。
【0045】
したがって、ブロック91および92において、上でブロック45および46に関して論じられたコードサイズ論理が実行される。ブロック93で、コードカウンタ22が1だけ増分され、ブロック94において、現在文字レジスタ13における文字が出力される。
【0046】
ブロック95では、T−レジスタ18におけるTの値がT−1に設定され、処理がブロック90に戻る。この方法において、ランの1つまたは複数の残余文字が処理され、圧縮器10の出力12で提供される。
【0047】
ブロック90において、Tがゼロに等しいとき、ランのすべての文字が処理される。これが起こったとき、ブロック90からYES分岐が取られて、処理が図2のブロック60に進行する。
【0048】
図3および図4において、R、Tおよびnに関して、ブロック70〜72,77,78,80,85,90および95で実行された計算および比較が、図1の論理25によって実行されることを理解されたい。
【0049】
上記のことから、ランは、図2〜4によって表された動作によって完全に処理されることを理解されたい。あるいは他の実施形態として、ブロック80〜85および90〜95を、ブロック72からのYES分岐が図2のブロック60に直接戻された場合、なくすことができる。さらに別の代替実施形態を、ブロック90〜95をなくすこと、およびブロック80のYES分岐を図2のブロック60に直接戻すことによって、実施することができる。これらの代替実施形態では、ブロック60および64において廃棄された文字がR−1ではなくR−(T+1)となる。
【0050】
図5を参照し、図1〜4を引き続き参照すると、図2〜4の流れ図に従った、圧縮器10の動作の一例が例示される。図の上部では、入力データ文字ストリームが示され、各文字ランの文字が文字シーケンス番号(character sequence number)によって識別される。これが行われることにより、例のステップを通じて文字の進行をたどることが容易になる。これらのシーケンス番号は、文字識別(character identification)のために示されており、実際のデータ文字ストリーム中には現れないことを理解されたい。
【0051】
この例は、主として自明のものであり、実行されたアクションが左側の列において示され、アクションにおいて関与する図2〜4のブロックが、右側の列において示される。文字「b」のランが90文字の長さであることに留意されたい。
【0052】
アクション1において、図2のブロック40および41では、コードカウンタおよびコードサイズが初期化され、ブロック42では、最初の文字「a(1)」が現在文字に取り込まれ、ブロック43で出力される。ブロック44において、文字「a」のランが、次の2つのルックアヘッド文字「a(2)」および「a(3)」が現在文字と同じであることを決定することによって、検出される。ブロック50において、パラメータRが13に設定され、これは、ランにおける文字の数であり、ブロック70および71において、変数Tおよびnが設定される。
【0053】
アクション2〜4において、図3のブロック72〜78からなるループが、ランを、文字「a(10)」まで処理する。アクション5および6において、ランの残りが、図3のブロック80〜85を含むループを利用して処理される。アクション6において、文字「a(2)」〜「a(13)」が廃棄される。
【0054】
アクション7〜11において、図2のブロック43〜48からなるループを主として利用して、非ラン処理が実行される。
【0055】
アクション12〜23において、文字「b」からなる90文字のランが、示されたように処理される。アクション12〜17では、図3のブロック72〜78からなるループを利用して、ランの77文字を吸収することに留意されたい。アクション18〜21は、ブロック80〜85によりリセットされたときの、ブロック72〜78からなるループの再帰的な利用を例示する。アクション22および23は、図4のブロック90〜95の残余ラン処理を利用した、90文字のランの残りの処理を例示する。
【0056】
図2〜4のブロックに対する、図5のアクションのより詳細な説明は、容易に分かり、簡潔にするため、以下では提供されない。
【0057】
図6を参照し、図1を引き続き参照すると、本発明の好ましい代替実施形態の概略的ブロック図が例示される。図6は、データ圧縮器100であり、図1に関して上で記載されたものと同じである、いくつかの構成要素を有し、これらには図1と同じ参照番号が与えられる。図1に関して上で提供されたこの説明が、図6に適用可能である。
【0058】
圧縮器100は、L−レジスタ101およびD−レジスタ102として示された作業レジスタも含み、これは、図7に関して記載される方法における圧縮器100の動作において使用される変数を保持するためのものである。圧縮器100はさらに、n−計算論理103、T−計算論理104、L−計算論理105およびD−計算論理106を含み、これらは、図7に関して記載される方法においてランを処理するためのものである。圧縮器100は、圧縮器100の動作を、図2、図4および図7の動作流れ図に従って、以下で記載される方法において制御するための制御装置107も含む。
【0059】
簡単に述べると、圧縮器100の動作は、圧縮器10に関して上に記載された動作と同じであるが、ラン処理が実行される方法において異なる。上述のように、図2の動作流れ図は、図7の動作流れ図によって実施されるラン処理論理54を有する圧縮器100にも適用される。ランは、ランにおける文字の数に式を適用して、ランにおいて存在するセグメントの数を決定することによって、処理される。さらなる式が利用されて、コードカウンタ22のためのカウントが、これらのセグメントを表現するためのコードを提供するように到達するように決定される。さらなる式は二次タイプであり、これが適用されて、処理かつしたがって廃棄される文字の数が決定される。コードカウンタ22が順次増分され、コードカウンタ22が、式によって決定されたカウントに到達するまで、その中のコードが出力される。
【0060】
この処理を実行した後、計算された、廃棄される文字の数が、ランの文字の数から減算され、処理される文字が3つ以上残っていた場合、現在文字レジスタ13において存在する文字が出力され、コードカウンタ22が再度1だけ進められる。ランにおいて残っている文字の数を、3つより少ないラン文字が残るまで、式に適用することによって、計算的な処理がリセットされる。これが起こったとき、図4に関して上で記載された残存ラン処理論理が呼び出される。
【0061】
現在文字レジスタ13、バッファ15および16、レジスタ17〜19、101、102、コードカウンタ22および論理23、24、26および103〜106が、図2、図4および図7に関して以下で説明されるような文字ラン処理を実行することにおいて、利用される。図2、図4および図7の制御流れ図は、圧縮器100によって、本発明によるデータ圧縮を実行するために実行される、詳述された動作を例示する。図2および図4に関して上記の記載は、圧縮器100にも適用されるが、ラン処理論理54が図7の動作流れ図によって実行されることが異なる。制御装置107は、状態機械など、動作の実行を制御するための適切な回路を含むものとみなされる。
【0062】
図7を参照し、図2、図4および図6を引き続き参照すると、図6の実施形態において利用されたラン処理論理54の詳細を例示する制御流れ図が例示される。図7の詳細を記載する前に、例示された計算が、以下のような最初のn個の数の合計についての式に基づくことを理解されたい。
【0063】
S(n)=1+2+3+4+...+n=[(n(n+1))/2]
【0064】
上述のように、ランを、隣接する数値的に増大するランセグメントからなるものと見なすことができ、単一の文字の最初のセグメントが現在文字レジスタ13において保持される。後に続く現在文字は、2文字、3文字、4文字、...、n文字の隣接したランセグメントである。さらなる文字がランにおいて存在することができるが、さらなる文字の数はn+1より小さくなることを理解されたい。したがって、Rはランにおける文字の数であり、これがS(n)にさらなる文字の数を加えたものに等しくなることを理解されたい。さらに、nにおける上記の所与の二次式を、nについて、Sに関して、その根を得るための二次式の解法を利用して解くことができることを理解されたい。式の1つの根は、以下の通りである。
【0065】
n=[((8S+1)1/2−1)/2]
【0066】
nについてのこの式が、ランにおける文字の数に適用されるとき、式の右側の整数部が、ランにおいて存在する隣接したセグメントのシーケンスにおける最長のランセグメントを生じることが認められた。以下に記載される方法において、この数が使用されて、コードのシーケンスがコードカウンタから得られて、ランの隣接した各セグメントが表現される。この数が、以下で記載される方法においてランの残りの文字を処理することにおいても、使用される。
【0067】
図7を引き続き参照すると、ブロック120で、T−レジスタ18における変数TがRに設定される。したがって、この時点で、変数Tは、図2のブロック44で検出されたランにおける文字の数を表す。
【0068】
処理がブロック121に進行し、図6の論理103を使用して、Tが、上のnについての式において利用されて、以下のようになる。
【0069】
n=[((8T+1)1/2−1)/2]の整数部
【0070】
よって、ブロック121が、ランの隣接したセグメントシーケンスにおいて存在する、文字の最長セグメントにおける文字の数を提供する変数nを生成し、ランを含むこのようなセグメントの数の指示も提供する。
【0071】
したがって、ブロック122においては、nが利用されて、コードカウンタ22におけるコードを表す変数Lが導出され、これは、コードがコードカウンタ22からランの隣接した各セグメントに、以下で記載される方法において割り当てられた後で、次に使用可能である。図6の論理105が利用されて、以下のようにLが導出される。
【0072】
L=[(コード+n)−1]
【0073】
ここで、コードは、制御がブロック122に入るときに、コードカウンタ22において存在するコードである。
【0074】
処理がブロック123に進行し、変数Dが、図6の論理106を利用して導出される。変数Dは、現在処理中であるランにおける文字の数を表す。したがって、Dは、1文字、2文字、3文字、4文字、...、n文字を含む隣接したランセグメントにおけるランの文字の和を表す。論理106は、Dを以下のように提供する。
【0075】
D=[(n(n+1))/2]
【0076】
変数Dが、以下に記載される方法において利用されて、ランにおけるさらなる文字が処理される。
【0077】
処理がブロック124に進行し、コードカウンタ22におけるコードが出力される。このコードは、処理中のランにおけるセグメントの1つを表す。その後、上でブロック45および46に関して記載されたコードサイズ検査が、ブロック125および126で実行される。ブロック127で、コードカウンタ22が1だけ増分される。
【0078】
ブロック128において、コードカウンタ22におけるコードがLと比較されて、すべてのコードがランの各セグメントに割り当てられたか否かが決定される。コードカウンタ22におけるコードがLに等しくなかった場合、NO分岐がブロック124へ戻り、処理を継続する。
【0079】
ブロック124〜128からなるループは、ブロック121〜123において、検出されたランにおいて存在すると数学的に決定されたセグメントのシーケンスをそれぞれ表す、コードのシーケンスを出力することを理解されたい。コードカウンタ22におけるコードが値Lに到達したとき、ブロック128からYES分岐が取られて、ブロック140へ進行する。
【0080】
ブロック140において、T−レジスタ18における変数TがT−Dに設定される。したがって、変数Tがリセットされて、ランにおいて残っている文字が数学的に処理されるようにする。
【0081】
したがって、ブロック141では、Tが3と比較される。Tが3以上であった場合、検出されたランのさらなる処理を、ブロック121〜128を利用して実行することができる。したがって、Tが3以上であった場合、ブロック141からNO分岐が取られてブロック142および143に進行し、上でブロック45および46に関して論じられたコードサイズ論理が実行される。ブロック144で、コードカウンタ22が1だけ増分され、ブロック145において、現在文字レジスタ13における文字が出力される。次いで、制御がブロック121に戻り、ブロック140で導出されたTの値が、上でブロック121〜128に関して記載されたように利用されて、ランにおけるセグメントに対応するさらなるコードが生成される。しかし、制御がブロック145からブロック121〜128に戻ったとき、これらのブロックの数学的処理が、長さT−Dのランに適用されることを理解されたい。
【0082】
ブロック141〜145は、上で図3のブロック80〜84に関して記載されたものと類似の機能を実行することを理解されたい。
【0083】
ブロック140において、変数Tは、3より小さい値に減少されたとき、ブロック141からYES分岐が取られて、図4の残余ラン処理論理58に進行する。残余ラン処理は、上で図2〜4に関して記載されたように実行される。
【0084】
上記図1〜4の実施形態に関して述べたものと類似の手法において、図2、図4、図6および図7の実施形態は、図7のブロック140〜145および図4のブロック90〜95をなくし、ブロック128のYES分岐を図2のブロック60に戻すことによって、さらなる実施形態を提供することができる。この実施形態では、ブロック60および64の廃棄された文字が、R−1ではなくD−1となる。
【0085】
再度、上述と類似の手法において、図4のブロック90〜95をなくし、ブロック141のYES分岐を図2のブロック60に戻すことによって、なおさらなる実施形態を実現することができる。この実施形態では、ブロック60および64の廃棄された文字が、R−1ではなくR−(T+1)となる。
【0086】
図8を参照し、図2、図4、図6および図7を引き続き参照すると、図2、図4および図7の流れ図に従った、圧縮器100の動作の一例が例示される。図8のフォーマットは、図5のものと類似しており、上で図5に関して与えられた記載が適用可能である。図5において例示された同じデータ文字ストリームが、図8において利用される。
【0087】
アクション1において、初期化が一般的に、図5に関して記載されたように起こり、ブロック50において、ランレングスパラメータRが設定される。ブロック120において、パラメータTがRに設定され、パラメータn、LおよびDが、ブロック121〜123の式を利用して設定される。
【0088】
アクション2〜4において、「a」ランが文字「a(10)」まで処理される。処理は、ブロック124〜128からなるループの反復によって実施される。アクション4において、コードカウンタ22が値Lに到達し、ブロック128が制御をブロック140に移す。アクション5および6において、「a」ランの残りが、例示されたように処理される。アクション7〜11は、上で図5に関して記載されたような非ラン処理を示す。
【0089】
アクション12〜23において、文字「b」からなる90文字のランが、図示されたように処理される。アクション12において、処理のための最初のパラメータが、示されたように数学的に確立される。アクション12〜16は、ブロック124〜128からなるループを反復的に利用することによって、ランの77文字を吸収することに留意されたい。ループの動作は基本的に、コードカウンタがLに等しくなるまで、コードカウンタを増分かつ出力することである。アクション17は、ランをアクション18および19においてさらに処理するために、ループを再初期化する。アクション21および22は、図4のブロック90〜95の残余ラン処理を利用した、90文字のランの残りの処理を例示する。
【0090】
図2、図4および図7のブロックに対する、図8のアクションのより詳細な説明は、容易に分かり、簡潔にするため、以下では提供されない。
【0091】
上で適用可能な動作流れ図と共に記載された図1および図6の実施形態は、2つの明確に異なるアルゴリズムを利用する。図1の実施形態は、記載された反復処理を利用するのに対し、図6の実施形態は、上述の二次式の実施形態を利用する。図5および図8に関して、同じ入力データ文字ストリームが、両方の実施形態において、同じ圧縮コード出力ストリームの結果となることに留意されたい。
【0092】
図9を参照し、図1〜4を引き続き参照すると、本発明の好ましい代替実施形態の概略的ブロック図が例示される。図9は、データ圧縮器200であり、上で図1に関して記載されたものと同じである、いくつかの構成要素を有し、これらには図1と同じ参照番号が与えられる。上で図1に関して提供されたその記載が、図9に適用可能である。
【0093】
圧縮器200は、ルックアヘッドバッファ201、ランバッファ202、ルックアヘッド比較論理203、ラン獲得論理204および文字廃棄論理205を含む。構成要素201〜205は、上で図1に関して記載されたような各構成要素15、16、23、24および26に類似している。これらの構成要素のための追加の機能性が、図9の圧縮器200において必要とされ、これが、以下で図11に関して記載される。圧縮器200はさらに、D−レジスタ206およびM−レジスタ207およびT−レジスタ208として示された作業レジスタを含み、これは、図11に関して記載される方法における圧縮器200の動作において使用される変数を保持するためのものである。
【0094】
圧縮器200はまた、R、T、D、n、およびM計算論理210を含み、これらは、図11に関して記載される計算を実行するためのものである。圧縮器200は、圧縮器の動作を、図11の動作流れ図に従って、以下で記載される方法において制御するための制御215も含む。
【0095】
圧縮器200は、ラン処理アルゴリズムを利用し、これは、上で図1に関して記載され、図3において例示された、反復的な数学的アルゴリズムに類似している。図1の圧縮器10とは異なり、図9の圧縮器200はテーブルおよびフラグ220を含み、これは、ランセグメントカウントおよびコードを格納し、以下で記載される方法において第1遭遇フラグを提供するためのものである。テーブルおよびフラグ220とのデータ通信は、双方向バス221によって実施される。データ転送の制御は、制御バス222によって実施される。テーブルおよびフラグ220の詳細は、図10において提供される。
【0096】
図10を参照すると、テーブルおよびフラグ220が、ランセグメントテーブル225および第1遭遇フラグ226を、圧縮が発生中のアルファベットの各文字について含む。たとえば、「文字1」用のランセグメントテーブル225が、データ文字入力において遭遇する「文字1」のランのランセグメントのカウントおよびコードを格納する。最初に、すべての第1遭遇フラグ226がセットされる。「文字1」のランに最初に遭遇したとき、「文字1」のための第1遭遇フラグ226がリセットされる。図10のテーブルおよびフラグ220の使用の詳細は、以下で図11に関して記載される。
【0097】
簡単に述べると、圧縮器200の動作は、以下の通りである。圧縮器200は一般に、上で圧縮器10に関して記載されたものと同じラン処理アルゴリズムを利用するが、圧縮器200においては、ランのセグメントが数学的に決定されたとき、ランセグメントデータがテーブル225に格納されることが異なる。後に、同じ文字のランに遭遇(encounter)したとき、格納されたデータが利用されて、圧縮が拡張される。格納されたデータの使用を最適化するため、図3の再帰的制御ブロック(recursive control block)80〜85および図4の残余ラン処理論理が、図11では利用されない。代わりに、ランに最初に遭遇したとき、図3のブロック71〜78に類似した論理が利用されて、ランセグメントデータが、ランの残りを有するランの大部分について、図11に関して説明される方法において、格納されたデータを利用して、処理かつ格納される。
【0098】
動作における違いに起因して、圧縮器200のラン検出論理は、圧縮器10のラン検出論理とは幾分異なるように動作する。圧縮器200では、現在文字が、次に続く文字と同じでなかった場合、非ラン処理が、圧縮器10の非ラン動作と実質的に同じ方法において実行される。次の文字が現在文字と同じである場合、現在文字のための第1遭遇フラグ(First Encounter Flag)が検査される。圧縮器200が、現在文字のランに初めて遭遇している場合、圧縮器10のものに類似したラン処理が実行されるが、ランセグメントデータの格納およびアルゴリズムの非再帰的使用を含む。この場合、現在文字および次の2つの文字が同じとなる。しかし、この現在文字の遭遇したランが、最初のそのようなランでなかった場合、現在文字のためのランセグメントテーブル225が、ランの処理において調べられる。
【0099】
現在文字レジスタ13、コードカウンタ22、バッファ201および202、R−レジスタ17、D−レジスタ206、n−レジスタ19、M−レジスタ207、T−レジスタ208、および論理203〜205および210が、図11に関して以下で記載されるような文字ラン処理を実行することにおいて、利用される。
【0100】
図11を参照し、図9および図10を引き続き参照すると、制御流れ図が例示され、圧縮器200によって実行される、詳述された動作が示される。制御215は、動作の実行を制御するための適切な回路を含むものと見なされる。上で記載された方法において、図11の流れ図は、可変長出力において予見される。図11のブロックの多数は図2および図3のブロックと同じであり、同じ参照番号によって示される。上で図2および図3のこれらのブロックに関して与えられた記載は、図11の同様に付番されたブロックにも適用可能である。図11のブロックのうち、図2および図3のブロックとは異なるもののみが、後に続く図11の記載において強調される。
【0101】
図11のブロック40〜42において、コードカウンタ22およびコードサイズレジスタ23が初期化され、最初の文字が現在文字レジスタ13に取り込まれる。ブロック230で、第1遭遇フラグ226のすべてが、文字のランに第1遭遇ための準備においてセットされる。
【0102】
処理がブロック231に進行し、現在文字レジスタ13における文字が、次に続く文字と比較されて、これらが同じであるか否かが決定される。ルックアヘッドバッファ201および論理203が使用されて、この機能が実行される。文字が同じでなかった場合、ブロック231からNO分岐が取られて、非ラン処理が実行される。2つの文字が同じである場合、ブロック231からYES分岐が取られてブロック232に進行し、現在文字レジスタ13における文字のための第1遭遇フラグ(First Encounter Flag)226の状態が検査される。第1遭遇フラグがリセットされていた場合、ブロック232からYES分岐が取られて、現在文字のラン処理が実行され、ただし、この文字のランに先に遭遇しており、ランデータがこの文字のためのランセグメントテーブル225に格納されている。
【0103】
現在文字のための第1遭遇フラグ226がなおセットされていた場合、ブロック232からNO分岐が取られてブロック44に進行する。ブロック44は、現在文字および次の2つのルックアヘッド文字が同じであるか否かを決定する。ルックアヘッドバッファ201および論理203が利用されて、この機能が実行される。現在文字のための第1遭遇フラグがなおセットされているので、この文字のためのランデータがまだ格納されていない。これらの状態において、ブロック44からYES分岐が取られた場合、図3のものに類似したラン処理が実行される。ブロック44からNO分岐が取られた場合、非ラン処理が実行される。
【0104】
したがって、ブロック44、231および232は、以下の方法においてランを検出するように機能することを理解されたい。現在文字が、後に続く文字と異なった場合、非ラン処理が実行される。現在文字が、後に続く文字と同じであり、この文字のためのランが先に処理されていた場合、ラン処理は、先に格納されたデータを利用して実行される。文字のランにまだ遭遇しておらず、処理されていなかった場合、ラン処理が、現在文字が次の2つの文字と同じである場合に実行され、そうでなかった場合、非ラン処理が実行される。
【0105】
ブロック44またはブロック231からNO分岐が取られた場合、非ラン処理が実行される。ブロック233において、現在文字レジスタ13における文字が出力される。その後、ブロック45〜48の非ラン処理が、上で図2に関して記載された方法において実行される。ブロック48において、処理はブロック231に戻る。
【0106】
現在文字の3文字のランが最初に検出されたとき、ブロック44からYES分岐が取られる。処理がブロック234に進行し、現在文字のための第1遭遇フラグがリセットされる。ブロック235において、T−レジスタ208が、現在文字の後に続いて現在文字と同じである一連の文字の数に設定される。ラン獲得論理204およびランバッファ202が利用され、この機能が実行される。処理がブロック236および237に進行し、それぞれ、現在文字レジスタ13における文字が出力され、D−レジスタ206における変数Dがゼロに設定される。D−レジスタ206における変数Dは、以下で記載される方法において廃棄される文字のカウントを維持する。
【0107】
次いで、制御は、ランのセグメントを数学的に処理するためのループに入り、これは、上で図3のブロック71〜78に関して記載された方法において行われるが、2つの違いがある。図11では、ブロック240がブロック73および74の間に挿入され、ブロック241がブロック76および77の間に挿入される。ブロック240において、コードカウンタ22からのコードおよびnに等しいカウントは、現在文字のためのランセグメントテーブル225に格納される。ブロック241において、変数DがD+nに設定される。
【0108】
したがって、ブロック72〜78、240および241からなるループの反復によって、ランの、隣接した、数値的に増大するセグメントが処理される。ブロック73において、各セグメントを表すコードが出力され、ブロック240において、各セグメントのコードおよび文字カウントがランセグメントテーブルに格納される。ブロック241において、処理された各セグメントにおける文字の数がDに加算され、ループの処理が終了したとき、処理されたセグメントの文字が廃棄されるようにする。ループの処理は、ブロック72で検出されたとき、Tがnより小さいときに終了される。
【0109】
したがって、ブロック72からのYES分岐が、処理をブロック245に向けて送り、現在文字の後に続くD個の文字が廃棄される。処理がブロック246および247に進行し、コードサイズの検査が、上でブロック45および46に関して論じられたように実行される。ブロック248において、コードカウンタ22が1だけ増分されて、非ラン処理との同期が維持される。ブロック249において、ブロック245で廃棄されたD個の文字の後に続く文字が、現在文字レジスタ13に取り込まれる。ブロック245の文字廃棄処理、およびブロック249の現在文字取り込みが、論理205および図9のバッファ202によって実行され、D−レジスタ206におけるDの値を使用して適切な文字を廃棄し、指示されたように適切な文字を取り込む。その後、制御がブロック231に戻り、入力データ文字ストリームの処理が継続される。
【0110】
図10を参照し、図11を引き続き参照すると、図11のブロック71〜73、240および241を、図10において示されたような「文字1」のランによって例証することができる。「文字1」は、現在文字レジスタ13にあり、これが「文字1」の3文字のランの第1遭遇ものである。ブロック72〜78、240および241を含む図11のループの連続の反復は、「文字1」のためのランセグメントテーブル225における、コード258〜267のエントリの結果となる。したがって、ブロック78でnが進められたとき、「文字1」のランの数値的に増大するセグメントが、テーブル225において例示されたように格納されたランセグメントデータにより、数学的に処理される。上述のように、ブロック73で、ランの各セグメントを表すコードが出力されることを理解されたい。
【0111】
したがって、この例証された「文字1」のランが、現在文字レジスタ13における現在文字と、その後に続く、コード258によって表された2文字のランセグメントと、その後に続く、コード259によって表された3文字のランセグメントなど、最大でコード267によって表された11文字のセグメントからなることがわかる。したがって、このランは、66文字と77文字の間からなる。
【0112】
ブロック231において、2文字のランに遭遇し、この文字のための第1遭遇フラグがリセットされていたとき、ブロック232からYES分岐が取られてブロック260に進行し、文字のランのラン処理を開始し、ただし、この文字のための先のランデータが格納されている。パラメータRが、1に、現在文字の後に続いて現在文字と同じである一連の文字の数を加えたものに、設定される。したがって、Rが、遭遇したばかりの現在文字のランにおける文字の数に等しい。ラン獲得論理204が、ランバッファ202と共に、ブロック260の機能性を実行することにおいて利用され、Rの値がR−レジスタ17において保持される。
【0113】
処理はブロック261に進行し、パラメータMが、現在文字レジスタ13における文字のためのランセグメントテーブルにおける最大カウントに設定される。Mは、図10の適切なランセグメントテーブル225から、テーブルの底部にスクロールしてMのこの最大カウントを決定することによって、決定される。次いで、M−レジスタ207においてMが保持される。
【0114】
処理がブロック262に進行し、R−レジスタ17における値は、M−レジスタ207における値と比較される。RがMより大きかった場合、ブロック262からYES分岐が取られ、RがM以下であった場合、ブロック262からNO分岐が取られる。YES分岐が取られた場合、現在遭遇している現在文字のランは、関連付けられたランセグメントテーブル225に格納された最大ランセグメントより大きい。NO分岐が取られた場合、現在遭遇している現在文字のランは、関連付けられたランセグメントテーブルに格納された最大ランセグメント以下である。
【0115】
ブロック262からNO分岐が取られた場合、処理はブロック263に進行し、関連付けられたランセグメントテーブルから、Rに等しいカウントのためのコードが、圧縮器200によって出力される。ブロック263の機能は、R−レジスタ17における値を、関連付けられたランセグメントテーブルにおけるカウントと関連して比較することによって実行される。Rがテーブルに位置したとき、対応するコードが位置付けられており、出力される。別法として、テーブルに格納されたカウントの簡単な順序付けを利用して、カウントがRに等しい適切な場所を見つけることができる。
【0116】
次いで、処理はブロック264に進行し、D−レジスタ206における変数Dの値がR−1に設定される。その後、制御はブロック245に進行し、D個の文字が、先に記載されたように廃棄される。
【0117】
現在遭遇している現在文字のランが、関連付けられたランセグメントテーブル225に格納された最長ランセグメントより大きかった場合、ブロック262からYES分岐が取られる。処理はブロック265に進行し、Mに対応するコードが、関連付けられたランセグメントテーブルから出力される。Mは、M−レジスタ207に格納された値である。関連付けられたランセグメントテーブルには、このMの値によりアクセスされるか、たとえば、関連して、あるいは、Mのカウントについて対応するコードを位置付けて出力するために走査することによって、アクセスされる。
【0118】
処理はブロック266に進行し、D−レジスタ206における変数DがM−1に設定され、これらの文字を、処理がブロック245に入ったときに上述のように廃棄できるようにする。現在文字レジスタ13における文字と共に廃棄されたM−1個の文字は、現在遭遇している現在文字のランのセグメントを含む。これらのM文字を表すコードは、ブロック265で出力されている。
【0119】
ランの残りは、ブロック267においてT−レジスタ208におけるTをR−Mに設定することによって、かつ、ブロック268においてn−レジスタ19におけるnをM+1に設定することによって、処理される。ブロック267の機能は、M−レジスタ207におけるMをR−レジスタ17におけるRから減算し、この値をT−レジスタ208に転送することによって実行される。ブロック268の機能は、レジスタ207におけるMの値を1だけ増分し、この値をn−レジスタ19に転送することによって実行される。次いで、制御がブロック72に移り、ランの処理が、先に記載されたように継続される。
【0120】
図11を引き続き参照すると、ブロック233は、非ラン処理の入口であり、ブロック234は、最初に遭遇した文字のランの処理の入口であることを理解されたい。ブロック260は、文字のランの処理の入口であり、ただし、先の文字のランが処理され、格納されている。このようなランについて、ブロック262は、格納された最大ランセグメントより大きいか、あるいは、格納された最大ランセグメント以下である、ランの処理のための、分岐点である。
【0121】
図11において、図3のブロック80〜85によってリセットされたときの、ブロック72〜78からなるループの再帰的再エントリが利用されないことを理解されたい。これが行われることにより、残りの文字が、次の数値的に増大するランセグメントに入れるために不十分であった場合、最初に遭遇したランの格納されたデータが、ランの残りの文字について有利に利用される。圧縮における拡張が、この手法によって実現されるべきである。
【0122】
図11は、ブロック231、232および44からなるラン検出論理に関して記載されている。ブロック231をなくすことができ、ブロック44および232の処理順序を逆にして、格納された長さ2のランセグメントがランセグメントテーブル225においてアクセスされない結果にすることができることを理解されたい。
【0123】
図9〜11に関して説明された本発明の実施形態は、ランセグメントデータの格納を利用し、図3の反復的な数学的アルゴリズムに関して記載されている。類似の格納実施形態を、図7の二次式実施形態を利用して実現できることを理解されたい。このような実施形態では、ランセグメントテーブルが、所与の式を利用して数学的に生成される。
【0124】
図12を参照し、図9〜11を引き続き参照すると、図11の流れ図に従った圧縮器200の動作の一例が例示される。図12のフォーマットは、図5のものと類似しており、上で図5に関して与えられた記載が適用可能である。図12では、示された入力データ文字ストリームが文字「a」のランを利用して、格納動作を例示する。図12が図5と主として異なるところは、ランセグメントテーブルに格納され、後にランを処理するために使用されるランセグメントデータが例示されており、パラメータDおよびM、ならびに、第1遭遇フラグのセットおよびリセットが図示されていることである。加えて、上述のように、図11のブロック72〜78の処理ループが、図3におけるように再帰的に使用されない。
【0125】
アクション1において、初期化は、セットされた第1遭遇フラグ、および現在文字に取り込まれた最初の文字「a(1)」で起こる。文字「a」のランに最初に遭遇したので、アクション2は、第1遭遇フラグがリセットされ、現在文字が出力され、パラメータT、Dおよびnが、上で図11のブロック234〜237および71に関して記載されたように設定された状態を例示する。アクション3〜5で、ランが文字「a(10)」まで処理され、これは、ブロック72〜78、240および241からなるループを反復的に利用して行われる。アクション3〜5は、ランセグメントデータの格納を例示する。
【0126】
アクション6は、ランの残りの文字「a(11)」および「a(12)」の処理を例示し、これは、対応するコードの258を有する2カウントセグメントのためのランセグメントテーブルにアクセスすることによって行われる。
【0127】
図12のアクション7〜10における非ラン処理は、図5のアクション7〜11と実質的に同じものであるが、図12では、非ラン判断が1つのルックアヘッド文字に基づいて行われるのに対し、図5では、この判断が2つのルックアヘッド文字に基づいて行われる。
【0128】
図12のアクション11および12は、文字「a」のランに第2に遭遇するときの検出および処理を例示する。このランは、文字「a(13)」から「a(21)」として例示され、したがって、9文字からなる。アクション5で、「a」文字のランの最大セグメントが、4のランセグメントカウントにより、格納された。アクション11で、格納されたセグメントのためのコード260が出力され、図11のブロック260〜268で、パラメータR、T、D、nおよびMが、示されたような値で設定される。アクション12は、図11のブロック72〜78、240、241および245の処理を例示し、適切なコードが出力され、ランセグメントデータが格納され、文字「a(14)」から「a(21)」が廃棄されて、ランの処理が完了される。
【0129】
図12のアクションと図11のブロックとの相関は、図12の右側の列において示されたように、上記の記載に類似しており、図12の特定の例と図11のブロックの機能性との比較によって、容易に分かる。
【0130】
同じ入力について、上で記載された非格納実施形態が同じ出力を提供することを理解されたい。これは、先に図5および図8に関して論じられている。同じ観察を、上述のように構成された格納実施形態に関して行うことができる。さらに、同じ入力について、前記第09/264,269号の格納および非格納実施形態も、それぞれ同じ出力を提供することを理解されたい。これは、本出願の図12と前記第09/264,269号の図7との比較によって、理解される。
【0131】
互換性のある圧縮解除器を容易に提供することができ、これは、圧縮器10、100または200の圧縮出力を受信し、それらとの同期において、それに対応する入力データ文字を回復するように動作するものであることを理解されたい。
【0132】
図5、図8および図12の「出力」列において示されたような、出力コードのシーケンスが、圧縮解除器によって処理された場合、図面において例示された入力データ文字ストリームが回復される。圧縮解除器のプロトコルが、圧縮器のものと互換性を持つべきであることを理解されたい。図5、図8および図12の例では、8ビットによってサポートされたASCIIアルファベットが仮定された。ASCIIアルファベットは、256文字からなる。図2および図11のブロック40で、コードカウンタ22がコード258に初期化される。コード257を、たとえば、制御コードとして予約することができ、これは当技術分野においてよく理解されている。圧縮解除器は、初期コードカウンタ値および初期コードサイズなど、圧縮器と同じアルファベットサイズおよび初期状態を有するべきである。さらに、当技術分野においてよく理解されるように、本発明の圧縮器の実施形態のコードサイズおよび圧縮解除器のコードサイズは、たとえば、上で図2〜4に関して記載されたように、互いに関する同期において進められるべきである。
【0133】
よく知られているように、圧縮器および圧縮解除器を、単一文字列のすべてにより初期化することができ、あるいは、単一文字を、その各値によって圧縮コードから区別することができる。ASCII文字が、256以下である値を有するのに対し、図5、図8および図12のASCIIの例では、圧縮コードが258以上の値を有する。さらに、他の単一文字コードプロトコルも利用できることは、よく知られている。
【0134】
本発明に係る圧縮器の実施形態において使用される単一文字コードプロトコルは、圧縮解除器においても利用されるべきである。
【0135】
コードカウンタ22が、上述のように増分されて、ランおよび非ラン処理の間の同期が維持されることを理解されたい。これは特に、上述の図のブロック47、63、76、83、93、127、144および248でわかる。たとえば、図2において、ブロック47で、コードカウンタ22が1だけ増分されて、ブロック43の現在文字出力との同期が維持される。
【0136】
上記の実施形態は、入力データ文字のストリームを圧縮する。入力データ文字は、対応するいかなる文字ビットサイズを有するいかなるサイズのアルファベットを介することもできる。たとえば、データ文字を、8ビット文字の256文字ASCIIアルファベットなどのアルファベットを介して、ASCII文字などのテキストにすることができる。入力データを、1ビットサイズの文字を有する2文字の2進アルファベット1および0を介して、2進文字にすることもできる。テキストデータを、その下にある2進データの2文字のアルファベットを介して圧縮することもできることを理解されたい。
【0137】
本発明に係る上述の実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実施できることを理解されたい。個別回路構成要素(discrete circuit component)は、記載された様々な機能を実行するために容易に使用することができる。ソフトウェアの実施形態では、上述の流れ図から容易に生成されたコーディングによりプログラムされた、適切なモジュールを利用することができる。
【0138】
本発明を、その好ましい実施形態において記載したが、使用された言葉は、限定するためのものではなく説明の言葉であり、付属の特許請求の範囲の範囲内で、その幅広い態様において、本発明の範囲および精神から逸脱することなく、変更を行うことができることを理解されたい。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態を提供するデータ圧縮器の概略的ブロック図であり、図1の実施形態は、反復的な数学的アルゴリズムを利用して、文字ランに遭遇するたびに文字ランが新たに処理される非格納構成である。
【図2】本発明によるデータ圧縮を実行するための、図1の圧縮器によって実行される動作を例示する制御流れ図である。
【図3】本発明の反復的な数学的アルゴリズムによる、データ圧縮を実施するための、図2の流れ図において利用されるラン処理論理を例示する、制御流れ図である。
【図4】残余ラン処理を実行するための、図2の流れ図において利用される制御流れ図である。
【図5】図2、図3および図4の制御流れ図による、図1の圧縮器の動作を例示する図である。
【図6】本発明のさらに好ましい実施形態を提供するデータ圧縮器の概略的ブロック図であり、図6の実施形態は、二次式アルゴリズムを利用して、文字ランに遭遇するたびに文字ランが新たに処理される非格納構成であり、図2も、図6の圧縮器によって実行される動作を例示するが、ただし、図2のラン処理論理部分が図7において詳述された論理を利用する。
【図7】本発明の二次式の数学的アルゴリズムによるデータ圧縮を実行するための、図6の実施形態において利用されたときの、図2のラン処理論理を例示する制御流れ図であり、図4の残余ラン処理論理も、ラン処理が図7に従って実行されたときに図2の制御流れ図において利用される。
【図8】図2、図4および図7の制御流れ図による、図6の圧縮器の動作を例証する図である。
【図9】本発明の別の好ましい実施形態を提供するデータ圧縮器の概略的ブロック図であり、図9の実施形態は、格納を使用して文字ランデータを保存し、これを、文字ランに再度遭遇したときに再利用することができ、図9の実施形態は、図1〜4によって開示された実施形態において利用された反復的な数学的アルゴリズムに基づく。
【図10】図9のテーブルおよびフラグの詳細を例示するデータ構造図である。
【図11】本発明によるデータ圧縮を実行するための、図9および図10の圧縮器によって実行される動作を例示する制御流れ図である。
【図12】図11の制御流れ図による、図9および図10の圧縮器の動作を例証する図である。
Claims (17)
- データ文字の入力ストリームを出力ストリームに変換する方法であって、前記入力ストリームは、同じデータ文字の少なくとも1つのランを含み、前記方法は、
前記入力ストリームにおける所定の数の隣接するデータ文字が同じであるときを検出することにより、前記入力ストリームでランが発生するときを検出するステップを含み、
ここで、同じデータ文字の検出されたランは、隣接するランセグメントの長さが1文字分異なるように文字長が増加する複数の連続するランセグメントを含み、さらに、前記方法は、
前記検出されたランにおけるデータ文字の数を表す数を決定するステップと、
前記表す数に数学的アルゴリズムを適用して、前記検出されたランの前記連続するセグメントにそれぞれ対応する、数値的に増大する数値コードのシーケンスを決定するステップと、
検出されたランごとに、前記検出されたランの前記連続するランセグメントに対応するコードを出力するステップと、
前記入力ストリームにおける所定の数の隣接するデータ文字が同じでないときを決定することにより、前記入力ストリームでランが発生しないときを検出するステップと、
検出されたランの一部でないデータ文字の表現を出力するステップと
を含み、
ここで、前記出力ストリームは、前記検出されたランのそれぞれの出力されたコードと、非ラン文字の出力された表現を含む、
ことを特徴とする方法。 - 前記検出されたランは、前記連続するランセグメントの後に続くさらなるデータ文字を含み、前記さらなるデータ文字は、さらなる連続するランセグメントを含むランを形成し、前記方法は、さらに加えて、
前記さらなるデータ文字の数を決定するステップと、
前記さらなるデータ文字の数を使用した前記数学的アルゴリズムを再帰的に利用して、前記さらなる連続するランセグメントにそれぞれ対応する、前記シーケンスのさらなるコードを決定するステップと、
前記さらなるコードを出力するステップと、
を含むことを特徴とする請求項1に記載の方法。 - 前記数学的アルゴリズムを適用するステップ、および、前記コードを出力するステップは、
ランセグメントにおけるデータ文字の数を示すインデックスを初期化するステップと、
前記シーケンスの現存コードを出力し、前記シーケンスを、前記シーケンスの次に続くコードに進めるステップと、
前記表す数を、前記インデックスをそこから減算することによって、減少させるステップと、
前記インデックスを1だけ増分するステップと、
前記減少された表す数を、前記増分されたインデックスと比較するステップと、
前記現存コードを出力するステップから、前記減少された表す数を前記増分されたインデックスと比較するステップに至る上記ステップを、前記減少された表す数が前記増分されたインデックスより小さくなるまで、繰り返すステップと、
を含むことを特徴とする請求項1に記載の方法。 - 前記数学的アルゴリズムを適用するステップ、および、前記コードを出力するステップは、
第1の式を利用して、前記表す数に関して前記検出されたランに含まれる前記連続するランセグメントの数を計算する、第1の計算を実行するステップと、
前記連続するランセグメントの数を前記シーケンスの現存コードに加算することを含む第2の式を使用して、限界を計算する第2の計算を実行するステップと、
前記シーケンスの現存コードを出力し、前記シーケンスを、前記シーケンスの次に続くコードに進め、前記次に続くコードが前記限界に等しくなるまでこれを行うステップと、
を含むことを特徴とする請求項1に記載の方法。 - 前記第1の式は、
n=[((8T+1)1/2−1)/2]の整数部
を含み、
ここで、nは前記検出されたランに含まれる前記連続するセグメントの数、Tは前記表す数であり、
前記第2の式は、
L=[(コード+n)−1]
を含み、
ここで、Lは前記限界、コードは前記限界が計算されたときの前記シーケンスの現存コードである、
ことを特徴とする請求項4に記載の方法。 - 前記ランセグメントにおけるデータ文字の数を、それに対応する各コードと共に含む、ランセグメントデータを格納するステップと、
前記格納されたランセグメントデータにアクセスして、現在検出されたランが、格納されたランセグメントのデータ文字の数を含むか否かを決定するステップと、
前記格納されたランセグメントに対応する格納されたコードを出力するステップと、
をさらに含む、ことを特徴とする請求項1に記載の方法。 - 検出されたランに対して、ランのデータ文字を出力するステップをさらに含み、前記出力ストリームはランの出力された文字を含む、ことを特徴とする請求項1に記載の方法。
- 非ラン文字の出力された表現のそれぞれに対して、前記シーケンスを、前記シーケンスの次に続くコードに進めるステップをさらに含む、ことを特徴とする請求項1に記載の方法。
- データ文字の入力ストリームを出力ストリームに変換する装置であって、前記入力ストリームは、同じデータ文字の少なくとも1つのランを含み、前記装置は、
前記入力ストリームにおける所定の数の隣接するデータ文字が同じであるときを検出することにより、前記入力ストリームでランが発生するときを検出する手段を含み、
ここで、同じデータ文字の検出されたランは、隣接するランセグメントの長さが1文字分異なるように文字長が増加する複数の連続するランセグメントを含み、さらに、前記装置は、
前記検出されたランにおけるデータ文字の数を表す数を決定する手段と、
前記表す数に数学的アルゴリズムを適用して、前記検出されたランの前記連続するランセグメントにそれぞれ対応する、数値的に増大する数値コードのシーケンスを決定する手段と、
各検出されたランについて前記連続するランセグメントに対応するコードを出力する手段と、
前記入力ストリームにおける所定の数の隣接するデータ文字が同じでないときを検出することにより、前記入力ストリームでランが発生しないときを検出する手段と、
検出されたランの一部でないデータ文字の表現を出力する手段と
を含み、
ここで、前記出力ストリームは、前記検出されたランのそれぞれの出力されたコードと、前記非ラン文字の出力された表現を含む、
ことを特徴とする装置。 - 前記検出されたランは、前記連続するランセグメントの後に続くさらなるデータ文字を含み、前記さらなるデータ文字は、さらなる連続するランセグメントを含むランを形成し、前記装置は、さらに加えて、
前記さらなるデータ文字の数を決定する手段と、
前記さらなるデータ文字の数を使用した前記数学的アルゴリズムを再帰的に利用して、前記さらなる連続するランセグメントにそれぞれ対応する、前記シーケンスのさらなるコードを決定する手段と、
前記さらなるコードを出力する手段と、
を含むことを特徴とする請求項9に記載の装置。 - 前記数学的アルゴリズムを適用する手段、および、前記コードを出力する手段は、
ランセグメントにおけるデータ文字の数を示すインデックスを初期化する動作と、
前記シーケンスの現存コードを出力し、前記シーケンスを、前記シーケンスの次に続くコードに進める動作と、
前記表す数を、前記インデックスをそこから減算することによって、減少させる動作と、
前記インデックスを1だけ増分する動作と、
前記減少された表す数を、前記増分されたインデックスと比較する動作と、
前記現存コードを出力する前記動作から、前記減少された表す数を前記増分されたインデックスと比較する前記動作までを、前記減少された表す数が前記増分されたインデックスより小さくなるまで、繰り返す動作と、
を実行することを特徴とする請求項9に記載の装置。 - 前記数学的アルゴリズムを適用する手段、および、前記コードを出力する手段は、
第1の式を利用して、前記表す数に関して前記検出されたランに含まれる前記連続するランセグメントの数を計算する、第1の計算を実行する手段と、
前記連続するランセグメントの数を前記シーケンスの現存コードに加算することを含む第2の式を使用して、限界を計算する第2の計算を実行する手段と、
前記シーケンスの現存コードを出力し、前記シーケンスを、前記シーケンスの次に続くコードに進め、前記次に続くコードが前記限界に等しくなるまでこれを行う手段と、
を含むことを特徴とする請求項9に記載の装置。 - 前記第1の式は、
n=[((8T+1)1/2−1)/2]の整数部
を含み、
ここで、nは前記検出されたランに含まれる前記連続するセグメントの数、Tは前記表す数であり、
前記第2の式は、
L=[(コード+n)−1]
を含み、
ここで、Lは前記限界、コードは前記限界が計算されたときの前記シーケンスの現存コードである、
ことを特徴とする請求項12に記載の装置。 - 前記ランセグメントにおけるデータ文字の数を、それに対応する各コードと共に含む、ランセグメントデータを格納する手段と、
前記格納されたランセグメントデータにアクセスして、現在検出されたランが、格納されたランセグメントのデータ文字の数を含むか否かを決定する手段と、
前記格納されたランセグメントに対応する格納されたコードを出力する手段と、
をさらに含む、ことを特徴とする請求項9に記載の装置。 - 検出されたランのデータ文字を出力する手段をさらに含み、前記出力ストリームはランの出力された文字を含む、ことを特徴とする請求項9に記載の装置。
- 非ラン文字の出力された表現のそれぞれに対して、前記シーケンスを、前記シーケンスの次に続くコードに進める手段をさらに含む、ことを特徴とする請求項9に記載の装置。
- 数値的に増大する数値コードのシーケンスを生成するコードカウンタをさらに含み、
前記シーケンスの現存コードは、前記コードカウンタの既存コードにより提供され、
前記コードカウンタに1を加算することによって、前記シーケンスの次に続くコードに前記シーケンスが進められる、
ことを特徴とする請求項11または12に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/300,810 | 1999-04-27 | ||
US09/300,810 US6137428A (en) | 1999-04-27 | 1999-04-27 | Data compression method and apparatus with embedded run-length encoding using mathematical run processing |
PCT/US2000/010241 WO2000065724A1 (en) | 1999-04-27 | 2000-04-18 | Data compression method and apparatus with embedded run-length encoding using mathematical run processing |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002543657A JP2002543657A (ja) | 2002-12-17 |
JP3631144B2 true JP3631144B2 (ja) | 2005-03-23 |
Family
ID=23160681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000614563A Expired - Fee Related JP3631144B2 (ja) | 1999-04-27 | 2000-04-18 | 数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6137428A (ja) |
EP (2) | EP1183783B1 (ja) |
JP (1) | JP3631144B2 (ja) |
AU (1) | AU4463400A (ja) |
CA (1) | CA2371720C (ja) |
DE (1) | DE60008871T2 (ja) |
WO (1) | WO2000065724A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6166665A (en) * | 1999-03-08 | 2000-12-26 | Unisys Corporation | Data compression method and apparatus with embedded run-length encoding |
US6188333B1 (en) * | 1999-08-12 | 2001-02-13 | Unisys Corporation | LZW data compression apparatus and method using look-ahead mathematical run processing |
JP2001357622A (ja) * | 2000-06-13 | 2001-12-26 | Sony Corp | コンテンツデータ、データ記録媒体、データ記録方法及び装置、データ再生方法及び装置 |
US7952499B1 (en) | 2010-01-29 | 2011-05-31 | Microsoft Corporation | Random access in run-length encoded structures |
CN103702133B (zh) * | 2013-12-19 | 2017-10-24 | Tcl集团股份有限公司 | 一种图像压缩展示方法及其装置 |
CN107436848B (zh) * | 2017-08-03 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种实现用户数据和压缩数据间转换的方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US5861827A (en) * | 1996-07-24 | 1999-01-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
-
1999
- 1999-04-27 US US09/300,810 patent/US6137428A/en not_active Expired - Lifetime
-
2000
- 2000-04-18 CA CA002371720A patent/CA2371720C/en not_active Expired - Fee Related
- 2000-04-18 EP EP00926036A patent/EP1183783B1/en not_active Expired - Lifetime
- 2000-04-18 WO PCT/US2000/010241 patent/WO2000065724A1/en active IP Right Grant
- 2000-04-18 DE DE60008871T patent/DE60008871T2/de not_active Expired - Lifetime
- 2000-04-18 AU AU44634/00A patent/AU4463400A/en not_active Abandoned
- 2000-04-18 JP JP2000614563A patent/JP3631144B2/ja not_active Expired - Fee Related
- 2000-04-18 EP EP03028629A patent/EP1453207A2/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US6137428A (en) | 2000-10-24 |
CA2371720A1 (en) | 2000-11-02 |
CA2371720C (en) | 2005-03-29 |
DE60008871T2 (de) | 2005-03-10 |
EP1183783A1 (en) | 2002-03-06 |
EP1453207A2 (en) | 2004-09-01 |
EP1183783B1 (en) | 2004-03-10 |
AU4463400A (en) | 2000-11-10 |
JP2002543657A (ja) | 2002-12-17 |
WO2000065724A1 (en) | 2000-11-02 |
DE60008871D1 (de) | 2004-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100332709B1 (ko) | 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터 | |
CN112615628B (zh) | 硬件友好地数据压缩 | |
JP2000315954A (ja) | 入力データストリームの圧縮方法とその装置 | |
EP1195010B1 (en) | Lzw data compression/decompression apparatus and method with embedded run-length encoding/decoding | |
US6188333B1 (en) | LZW data compression apparatus and method using look-ahead mathematical run processing | |
JP3631144B2 (ja) | 数学的ラン処理を使用した埋込み型ランレングス符号化を用いたデータ圧縮方法および装置 | |
CA2446952C (en) | Character table implemented data compression method and apparatus | |
JP3653226B2 (ja) | 埋込みランレングス符号化によるデータ圧縮方法および装置 | |
JP2003318739A (ja) | データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040319 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040621 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040702 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040921 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040921 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041215 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |