JP2823918B2 - データ圧縮方式 - Google Patents

データ圧縮方式

Info

Publication number
JP2823918B2
JP2823918B2 JP507990A JP507990A JP2823918B2 JP 2823918 B2 JP2823918 B2 JP 2823918B2 JP 507990 A JP507990 A JP 507990A JP 507990 A JP507990 A JP 507990A JP 2823918 B2 JP2823918 B2 JP 2823918B2
Authority
JP
Japan
Prior art keywords
code
dictionary
index
bits
code word
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 - Lifetime
Application number
JP507990A
Other languages
English (en)
Other versions
JPH03209923A (ja
Inventor
泰彦 中野
茂 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP507990A priority Critical patent/JP2823918B2/ja
Publication of JPH03209923A publication Critical patent/JPH03209923A/ja
Application granted granted Critical
Publication of JP2823918B2 publication Critical patent/JP2823918B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】 [概要] 文字等の入力コード系列に一致する辞書に登録された
既に符号化済みのコード列との最大一致長を求め、最大
一致長の開始位置と一致長を含む符号語に変換するデー
タ圧縮方式に関し、 辞書サイズの拡大に対し符号語を最小ビット数で表現
して圧縮率を向上することを目的とし、 新たな符号化済みコードを登録する際に辞書が一杯に
なっていたら、辞書サイズを1ビット増やして登録する
ように構成する。また符号語を作成する際に、現時点の
辞書サイズで決まるインデクス最大値から開始位置を示
すインデクスを差し引いて最新登録位置を初期値とする
コードインデクスを作成して開始位置を示す符号語と
し、更にコードインデクスのビット数を示す識別子を符
号語に付加するように構成する。
[産業上の利用分野] 本発明は、文字等の入力コード列を辞書に登録された
符号化済みのコード列の複製として圧縮符号化するデー
タ圧縮方式に関する。
文字等のコード列情報を伝送・蓄積する際には、デー
タ量を低減して伝送時間の短縮と記憶容量の低減を図る
ため、コード列情報を圧縮符号化している。この圧縮符
号化としては、過去のコード系列を登録した辞書の任意
の位置から入力コード列に一致する最大長の部分列を取
出し、この部分列の開始位置(インデクス)と一致長を
少なくとも含む符号語に変換して出力するユニバーサル
符号化が行われており、圧縮率を向上するためには可能
な限り符号語のビット数を小さくすることが望まれる。
[従来技術] 一般に蓄積、伝送すべきデータの容量が大きいとき、
通信回線や記憶装置の容量を有効に利用するため、デー
タ列を圧縮して伝送や蓄積し、再度、そのデータを使用
するときに元のデータ列に復元する方法が良く用いられ
る。
従来、文字コードを能率良く圧縮する方式としてZiv
−Lempel符号(以下ZL符号と呼ぶ)が知られている(例
えば、宗像清治著,「Ziv−Lempelデータ圧縮法」,情
報処理,pp,2〜6,Vol.26,No.1,1985を参照のこと)。
ZL符号には、 ユニバーサル型と、 増分分解型(Incremental persing) の2つのアルゴリズムが提案されている。
尚、データ圧縮は文字コードに限らず、一般のデータ
にも適用できるが、ここでは、情報理論等で使われてい
る呼称を踏襲し、データの1wordごとを文字と呼ぶこと
にする。
第10図にユニバーサル型のZL符号器の原理図を示す。
このユニバーサル型のアルゴリズムは、演算量は多い
が、高圧縮率が得られ、符号化データを過去のデータ系
列の任意の位置から一致する最大長の系列に区切り(部
分列)、過去の系列の複製として符号化する方式であ
る。
第10図において、辞書を構成するPバッファ10には符
号化済みの入力データが格納されており、Qバッファ12
にはこれから符号化するデータが入力されている。符号
化には、まずPバッファ10の系列をQバッファ12の系列
でサーチし、Pバッファ10中で一致する最大長の部分列
を求める。そして、Pバッファ10中の最大長部分列を指
定するため、次の情報の組を符号語として出力する符号
化を行う。
次にQバッファ12内の符号化した系列をPバッファ10
に登録して新たな辞書データを得る。以下、同様の操作
を繰り返し、データを部分列に分解して順次符号化す
る。
次に増分分割型アルゴリズムを説明する。
増分分解型アルゴリズムは、圧縮率はユニバーサル型
より劣るが、シンプルで、計算も容易であることが知ら
れている。増分分解型ZL符号化では、入力シンボルの系
列を x=aabababaa・・・ とすると、成分系列 x=X0X1X2・・・ への増分分解は次のようにする。
Xjを既成分の右端のシンボルを取り除いた最長の列と
し、 X=a・ab・aba・b・aa・・・ となる。
と分解できる。
増分分分解した各成分系列は、既成分系列を用いて次
のような組で符号化する。
増分分解型アルゴリズムは、符号化パターンについ
て、過去に分解した部分列の内、最大長一致するものを
求め、過去に分解した部分列の複製として符号化するも
のである。
即ち、ZL符号では現在の文字コードの系列を、符号化
済の過去の系列からの複製として符号化するものであ
る。ZL符号を用いた場合、文字コードの文書情報は、1/
2程度に圧縮できる。
[発明が解決しようとする課題] このようにZL符号化方式は、符号化対象の性質が未知
でも、それを学習しながら符号化していく圧縮法であ
り、アルゴリズムは既出のデータ列を辞書に登録してい
き、同じデータ列が現れた時には、その辞書の登録位置
もしくは登録番号等のインデクスを符号語として出力す
るというシンプルなものである。
しかし、参照辞書が符号化対象に比べて十分大きくな
いと、学習が十分にできずに高い圧縮率が期待できない
という欠点がある。そのため従来方式では参照辞書をで
きるだけ大きくとるようにしている。しかし、参照辞書
を単に大きく取っても、符号語中の一致位置を示すイン
デクスのビット数が増加して符号語が長くなってしま
い、参照辞書を大きくした分だけの圧縮率の向上が期待
できない問題があった。
本発明は、このような従来の問題点に鑑みてなされた
もので、辞書サイズの増加に対し符号語を最小ビットで
表現して圧縮率を向上するようにしたデータ圧縮方式を
提供することを目的とする。
[課題を解決するための手段] 第1図は本発明の原理説明図である。
まず本発明は、第1図(a)に示すように、辞書10に
登録された既に符号化済みのコード列の中の入力コード
列に一致する最大一致長部分を求め、この最大一致長部
分の開始位置と一致長を少なくとも含む部号語を作成し
て出力することで圧縮符号化し、辞書10に入力コード列
に一致する符号化済みコード列がない場合には、入力コ
ード列をそのまま符号語として出力すると共に、辞書10
に新たな符号化済みコード列として登録するデータ圧縮
方式を対象とする。
このようなデータ圧縮方式につき本発明にあっては、
第1図(a)(b)に示すように、新たな符号化済みコ
ード列の登録時に辞書10が一杯になったことを判別した
際には、辞書10のサイズを1ビット増やした後に登録
し、符号語中の開始位置を現時点の辞書サイズで決まる
最小ビット数で表現したものである。
また第1図(c)に示すように符号語を作成する際
に、現時点の辞書サイズで決まるインデクス最大値(Ma
x)から開始位置を示すインデクスを差し引いて最新登
録位置を初期値とするコードインデクスを作成して開始
位置を示す符号語とし、更に、コードインデクスのビッ
ト数を示す識別子を符号語に付加し、符号語を可変長に
して最小ビット数で表現したものである。
[作用] このような構成を備えた本発明のデータ圧縮方式によ
れば、次の作用が得られる。
従来のデータ圧縮方式では、辞書の大きさは予め決め
られた固定サイズであったが、本発明は辞書サイズを可
変する。具体的には、辞書サイズを、最初は小さいビッ
ト数で割り当てておき、辞書が一杯になったときに、随
時1ビットずつ伸ばしていくようにする。これで、登録
初期段階に於いても、辞書に割り当てられたビット数を
有効に使え、圧縮率向上を図ることができる。
このように1ビットずつ辞書を伸ばしていっても、符
号語中のインデクス長が、常にい現在使用されている辞
書サイズの最大ビット長で表されるため、インデクスの
小さいものを表すときは、大部分のビットが無駄になり
効率的でない。
そこで本発明は更に、開始位置を示すインデクスを、
登録の新しい方を初期位置として見たコードインデクス
で表現し、更にコードインデクスが何ビットであるのか
の識別子を符号語の先頭に付けてインデクスを最小ビッ
ト数で表す。
この手法は、辞書中で新しいものほど参照されやすい
という性質に基づき、新しい文字列が登録されている辞
書中の位置のインデクスほど短いビット数で表現するこ
とにより、圧縮率を向上させようとするものである。従
って、辞書を頻度順に並べかえてやると、さらに効果は
大きい。
[実施例] 第2図は本発明の実施例構成図であり、符号化対象と
なる入力コードはQバッファとしての入力バッファ12に
格納された後、処理装置14による辞書10の参照で辞書中
にある登録済みのコード列の最大一致長となる部分列が
求められる。処理装置14で入力コード列に一致する登録
済みコード列の最大一致長が求まると、その開始位置を
示すインデクスと一致長から符号語を作成してファイル
/伝送装置16等に出力する。
処理装置14にあっては、後の説明で明らかにする辞書
サイズの増加処理と、符号語中のインデクス(開始位
置)に識別子を付けて最小ビット数で表わす処理を行
う。
次に第3図の処理フロー図を参照して辞書サイズをビ
ット単位に随時増やす処理を説明する。
この第3図の処理により第4図(a)(b)(c)に
示すように、時系列に辞書10のサイズが増えて行く。
即ち、第4図(a)では辞書サイズが8ビットで、エ
ントリーはインデクス=200までの状態を示す。第4図
(b)は辞書サイズが8ビットの状態でエントリーはイ
ンデクス=255の最大位置まで登録された状態である。
この状態で次に文字を登録するには、第4図(c)のよ
うに辞書サイズを1ビット増やして9ビットとする。
このように、辞書のエントリーが一杯になる毎に、1
ビットずつ増やして辞書サイズ拡大していくようにす
る。
次に第3図の処理動作を説明する。
まずステップS1(以下「ステップ」は省略)でインデ
クスサイズ(辞書サイズ)に初期値を設定する。ここで
は、インデクスサイズ=8とする。次にS2で符号化対象
文字列を入力する。S3で符号化対象が無くなったことを
判別すると符号化を終了する。文字列の入力が続いてい
ればS4に進み、入力文字列が辞書10に有るかどうか検索
する。
もし辞書10に有れば、S5に進んでその位置を示すイン
デクス及び一致長を含む符号語を作成して出力した後、
S2に戻って次の入力文字列の符号化を行う。尚、S3で作
成されるインデクスのビット数は、現時点での辞書サイ
ズの最大ビット長となる。
S4で辞書10に入力文字列がなかった場合には、S6に進
んで辞書10にまだ登録スペースがあるかどうかを調べ
る。登録スペースがあればS7に進んで登録し、登録スペ
ースが無ければS8に進み、現在のインデクスが最大イン
デクスに達したか否か、即ち辞書10が一杯になったか否
か判別する。もし一杯であればS9に進んでインデクスサ
イズ(辞書サイズ)を1ビット増加させて9ビットと
し、S10で生データを登録しS2に戻る。
次に第5図の処理フローを参照して識別子の付加によ
り符号個を最小ビット数で表現するための処理を説明す
る。
まず第5図の処理によるインデクス構造及び概念は、
第6図に示すように、従来は辞書10のインデクスが古い
登録位置をインデクス初期値=0として新しい方に向け
て増加する値を取っていたが、本発明にあっては、逆に
最も新しい登録位置がインデクス初期値=0として古い
方に向けて増加するコードインデクスを新たに定義す
る。
即ち、コードインデクスは、 (コードインデクス)= (インデクス最大値)−(符号化インデクス値) と定義される。
更に第7図に示すように、符号語の先頭にコードイン
デクスのビット数を示す識別子を付加する。
第8図は本発明におけるコードインデクスと識別子の
対応関係を示しており、コードインデクスはその時の辞
書サイズで決まる8〜19ビットのいずれかのビット長で
あり、このコードインデクスに対し第8図の対応関係を
もつ1〜6ビットで変化する識別子が付加される。
そこで第5図の処理を説明すると、まずS1で符号化対
象となる文字列を入力し、文字列の入力の終了をS2で判
別すると符号化を終了する。
文字列の入力が継続しているとS3に進み、入力文字列
が辞書10に有るかどうか検索し、辞書10にあれば、S4に
進み、辞書10になければS6に進む。
S4にあっては、最大一致長の開始位置を符号化インデ
クスとして、その時の辞書サイズで決まるインデクス最
大値から差し引いてコードインデクスを求め、更に第8
図のリストからコードインデクスのビット数を示す識別
子を取り出し、S5で第7図に示した構造の符号語を作成
して出力する。
一方、S3からS6に進んだ場合には、辞書10にまだ登録
スペースがあるかどうかを調べ、登録スペースがあれ
ば、S7に進んで登録した後に、S8で入力文字列をそのま
ま生データとして出力する。もしS6で登録スペースがな
かった場合には、直接S8に進んで生データを出力する。
尚、S6で登録スペースないと判断された場合には、辞
書10が一杯になった場合であることから、第3図に示し
た処理により辞書サイズを1ビット増やした後に登録す
るようしても良い。
第9図は第5図の処理により得られた最大一致長の開
始位置が異なる2つの符号語を示す。
第9図において、コードインデクス=215の符号語
は、識別子が1ビット、コードインデクスが4ビットの
合計5ビットである。これに対し古い方に位置したコー
ドインデクス=2410の符号語は、識別個が6ビット、コ
ードインデクスが12ビットの合計18ビットとなり、登録
の新しい文字列程、一致する頻度が高い性質があるた
め、本発明により符号語のビット数が低減され、圧縮率
が向上できることが理解できる。
[効果] 以上説明したように本発明によれば、辞書サイズを最
小サイズから最大サイズに至るまで辞書が一杯になる毎
に1ビットずつ辞書サイズを増やしていくため、その時
の辞書サイズで符号語のインデクスのビット数が決ま
り、登録初期段階でインデクスのビット長さを小さくで
きるので符号語のビット数を低減して圧縮率を向上でき
る。
また辞書の最大一致長開始位置を示す符号語のインデ
クスとして、最新登録位置を初期値とした新しい方から
古い方に向けて増加するコードインデクスを作成し、且
つコートインデクスのビット数を示す識別子を符号語の
先頭に付加し、符号化における登録の新しいもの程、使
用頻度が高いという性質を有効に利用して符号語のビッ
ト数を低減して圧縮率を向上できる。
【図面の簡単な説明】
第1図は本発明の原理説明図; 第2図は本発明の実施例構成図; 第3図は本発明の第1実施例を示した処理フロー図; 第4図は第3図処理による辞書サイズを順次拡大する概
念の説明図; 第5図は本発明の第2実施例の処理フロー図; 第6図は第5図の処理におけるインデクス及びコードイ
ンデクスの構造説明図; 第7図は第5図の実施例による符号語構造図; 第8図は第5図の実施例におけるコードインデクスと識
別子の対応説明図; 第9図は第5図の処理による登録位置が異なった時の符
号語のサイズを示した説明図; 第10図はユニバーサル型ZL符号器の原理説明図である。 図中、 10:辞書(バッファ) 12:入力バッファ(Qバッファ) 14:処理装置 16:ファイル/伝送装置
フロントページの続き (58)調査した分野(Int.Cl.6,DB名) H03M 7/30

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】辞書(10)に登録された既に符号化済みの
    コード列中の入力コード列に一致する最大長一致部分を
    求め、該最大長一致部分の開始位置と一致長を少なくと
    も含む符号語を作成して出力することで圧縮符号化し、
    前記辞書(10)に入力コード列に一致する符号化済みコ
    ード列がない場合には、該入力コード列をそのまま符号
    語として出力すると共に、前記辞書に新たな符号化済み
    コード列として登録するデータ圧縮方式に於いて、 新たな符号化済みコードの登録時に前記辞書(10)が一
    杯になったことを判別した際には、該辞書(10)のサイ
    ズを1ビット増やした後に登録し、前記符号語中の開始
    位置を現時点の辞書サイズで決まるビット数で表現した
    ことを特徴とすることを特徴とするデータ圧縮方式。
  2. 【請求項2】辞書(10)に登録された既に符号化済のコ
    ード列の中の入力コード列に一致する最大一致長部分を
    求め、該最大一致長部分の開始位置及び一致長を少なく
    とも含む符号語を作成して出力することで圧縮符号化す
    るデータ圧縮方式に於いて、 新たな符号化済みコードの登録時に前記辞書(10)が一
    杯になったことを判別した際には、該辞書(10)のサイ
    ズを1ビット増やした後に登録し、前記符号語中の開始
    位置を現時点の辞書サイズで決まるビット数で表現し前
    記符号語を作成する際に、現時点の辞書サイズで決まる
    インデクス最大値から前記開始位置を示すインデクスを
    差し引いて最新登録位置を初期値とするコードインデク
    スを作成して前記開始位置を示す符号語とし、更に、前
    記コードインデクスのビット数を示す識別子を前記符号
    語に付加し、前記符号語を最小ビット数で表現するよう
    にしたことを特徴とするデータ圧縮方式。
JP507990A 1990-01-12 1990-01-12 データ圧縮方式 Expired - Lifetime JP2823918B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP507990A JP2823918B2 (ja) 1990-01-12 1990-01-12 データ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP507990A JP2823918B2 (ja) 1990-01-12 1990-01-12 データ圧縮方式

Publications (2)

Publication Number Publication Date
JPH03209923A JPH03209923A (ja) 1991-09-12
JP2823918B2 true JP2823918B2 (ja) 1998-11-11

Family

ID=11601384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP507990A Expired - Lifetime JP2823918B2 (ja) 1990-01-12 1990-01-12 データ圧縮方式

Country Status (1)

Country Link
JP (1) JP2823918B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
US6606040B2 (en) * 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
JP6614735B1 (ja) * 2019-05-07 2019-12-04 国立大学法人 筑波大学 データの圧縮及び解凍方法、データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ解凍方法、データ解凍装置、データ解凍プログラム

Also Published As

Publication number Publication date
JPH03209923A (ja) 1991-09-12

Similar Documents

Publication Publication Date Title
CN114244373B (zh) Lz系列压缩算法编解码速度优化方法
CN108768403B (zh) 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器
USRE41152E1 (en) Lempel-Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5374916A (en) Automatic electronic data type identification process
US5010345A (en) Data compression method
US7764202B2 (en) Lossless data compression with separated index values and literal values in output stream
WO1998006028A9 (en) A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases
JP3241788B2 (ja) データ圧縮方式
CN114520659A (zh) 结合rANS和LZ4编码的数据无损压缩、解码方法
JPH06168096A (ja) データ符号化方式及びデータ復元方式
JP2823918B2 (ja) データ圧縮方式
US5010344A (en) Method of decoding compressed data
JP3241787B2 (ja) データ圧縮方式
JP2940948B2 (ja) データ圧縮方式
JP3346626B2 (ja) データ圧縮装置
JP2823917B2 (ja) データ圧縮方式
Hoang et al. Dictionary selection using partial matching
US7750826B2 (en) Data structure management for lossless data compression
JPH05241775A (ja) データ圧縮方式
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JPH05152971A (ja) データ圧縮・復元方法
JP3555506B2 (ja) 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置
JP3384844B2 (ja) データ圧縮方法および装置並びにデータ復元方法および装置
JP3078601B2 (ja) データ圧縮方法
Klein et al. Parallel Lempel Ziv Coding