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

データ圧縮方式

Info

Publication number
JP3388767B2
JP3388767B2 JP28744991A JP28744991A JP3388767B2 JP 3388767 B2 JP3388767 B2 JP 3388767B2 JP 28744991 A JP28744991 A JP 28744991A JP 28744991 A JP28744991 A JP 28744991A JP 3388767 B2 JP3388767 B2 JP 3388767B2
Authority
JP
Japan
Prior art keywords
byte
dictionary
character
counter
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.)
Expired - Fee Related
Application number
JP28744991A
Other languages
English (en)
Other versions
JPH05128100A (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 JP28744991A priority Critical patent/JP3388767B2/ja
Publication of JPH05128100A publication Critical patent/JPH05128100A/ja
Application granted granted Critical
Publication of JP3388767B2 publication Critical patent/JP3388767B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、1語が符号化するデー
タ単位より長い入力データをLZW符号に符号化して圧
縮するデータ圧縮方式に関する。近年、文字コード、ベ
クトル情報、画像など様々な種類のデータがコンピュー
タで扱われるようになっており、扱われるデータ量も急
速に増加してきている。大量のデータを扱うときは、デ
ータの中の冗長な部分を省いてデータ量を圧縮すること
で、記憶容量を減らしたり、速く伝送したりできるよう
になる。
【0002】様々なデータを1つの方式でデータ圧縮で
きる方法としてユニバーサル符号化が提案されている。
ここで、本発明の分野は、文字コードの圧縮に限らず、
様々なデータに適用できるが、以下では、情報理論で用
いられている呼称を踏襲し、データの1ワード単位を文
字と呼び、データが任意ワードつながったものを文字列
と呼ぶことにする。
【0003】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv-Lempel)符号がある(詳しくは、
例えば、宗像『Ziv-Lempelのデータ圧縮法』,情報処
理,Vol.26,No.1,1985年を参照のこと)。Ziv-Lempel符
号では ユニバーサル型と、 増分分解型(Incremental parsing ) の2つのアルゴリズムが提案されている。さらに、ユニ
バーサル型アルゴリズムの改良として、LZSS符号が
ある(T.C.Bell,“BetterOPM/L Text Compression ”,
IEEE Trans. on Commun., Vol.COM-34, No.12, Dec. 19
86 参照)。
【0004】また、増分分解型アルゴリズムの改良とし
ては、LZW(Lempel-Ziv-Welch)符号がある(T.A.We
lch,“A Technique for High-Performance Data Compre
ssion ”,Computer, June 1984参照)。これらの符号の
内、高速処理ができることと、アルゴリズムの簡単さか
らLZW符号が記憶装置のファイル圧縮などで使われる
ようになっている。
【0005】
【従来の技術】従来のLZW符号の符号化アルゴリズム
を図12に示す。LZW符号化は、書き替え可能な辞書
をもち、入力文字コードでなるデータ中を相異なる文字
列に分け、この文字列を出現した順に番号を付けて辞書
に登録すると共に、現在入力している文字列を辞書に登
録してある最長一致する文字列の辞書番号(インデック
ス)だけで表して符号化するものである。
【0006】尚、、増分分解型符号およびLZW符号の
技術は、特開昭59-231683 号、米国特許第 4,558,302号
で開示されている。図12のLZW符号化処理は次のよ
うになる。 [ステップS1]予め全文字につき一文字からなる文字
列を初期値として登録してから符号化を始める。辞書の
登録数nを文字種数Aと置く。カーソルをデータの先頭
の位置に置く。
【0007】[ステップS2]カーソルの位置からの文
字列に一致する辞書登録の最長文字列Sを見つける。 [ステップS3]文字列Sの辞書番号を「log2 n」
ビットで表して出力する。ただし、「log2 n」はl
og2 n以上の最小の整数を意味する。例えば辞書登録
数n=12では、「log2 12」はlog2 12以上
の最小の整数4を意味する。更に辞書登録数nを1つイ
ンクリメントする。
【0008】[ステップS4]符号化済み文字列Sにカ
ーソルの最初の文字Cを付加した文字列SCを辞書に登
録する。カーソルは不幸化済み文字列Sの後の文字に移
動させる。 [ステップS5]文字入力が終了していなければ再びス
テップS2に戻って処理を継続し、終了すれば一連の処
理を終える。
【0009】
【発明が解決しようとする課題】このような従来のLZ
W符号を用いたデータ圧縮方式にあっては、計算機処理
がしやすいように、処理対象とする全文字種を示すアル
ファベット・サイズAをA=256とし、8ビットのバ
イト単位にデータを扱って符号化している。しかしなが
ら、漢字コードや、RGB各5ビットのカラーコードな
ど2バイト単位のデータを、従来のバイト単位のLZW
符号化で圧縮する場合には、文字列の切れ目が1バイト
目と2バイト目でランダムに生じ、規則性をうまく取り
込めないため、圧縮率が低下するという問題点があっ
た。
【0010】この問題点を解決する方法として、2バイ
ト単位のデータ幅で扱うLZW符号化で圧縮すると、規
則性は取り込めるものの、辞書の初期値として64K通
りの文字種を登録することになるが、実際には出現し難
い文字種も初期値として保持しなければならないため、
辞書番号が増加して辞書検索が繁雑で圧縮率も悪くなる
問題があった。
【0011】また、他の方法として、2バイト単位のデ
ータ幅で扱い、辞書に予め初期値を登録しておかず、各
文字が最初に出現したときに登録する方法がある。この
方法では、初期値の符号語を「初期登録識別符号」と
「登録文字」の組で表すことになり、従来のLZW符号
の符号語が辞書番号だけで表せるのに対して、アルゴリ
ズムの簡潔さを損ない、処理が複雑になるという問題が
あった。
【0012】本発明は、このような従来の問題点に鑑み
てなされたもので、入力データのデータ長が符号化処理
におけるデータ長よりも長くとも簡潔な符号化アゴリズ
ムをそのまま適用して効率よく符号化できるデータ圧縮
方式を提供することを目的とする。
【0013】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、入力データの1語を所定ビッ
ト数毎、例えばバイト単位に区切った1又は複数の文字
で表現し、この文字単位にLZW符号に符号化して圧縮
するデータ圧縮方式を対象とする。
【0014】このようなデータ圧縮方式として本発明に
あっては、図1(a)に示すように、入力データの1語
を構成する複数の文字毎に設けた分割辞書10−1〜1
0−nと、入力文字Cの符号化時に、入力文字Cが前記
入力データの1言語を構成する複数文字の何番目かによ
って分割辞書10−iを指定する分割辞書指定手段12
と、分割辞書指定手段12で指定された分割辞書10−
iに登録された既に符号化済みの部分列の内、入力文字
Cを含む入力文字列に最大長一致する部分列Sを検索す
る辞書検索手段14と、辞書検索手段14で検索された
入力文字列に最大長一致する部分列Sの辞書番号を符号
語として出力する符号化手段16と、辞書検索手段14
で文字列の検索できなくなった時に、直前に符号化した
文字列Sの辞書番号に入力文字Cを加えた文字列SCを
新な辞書番号を付して検索に使用した分割辞書10−i
に登録する辞書登録手段18とを設けたことを特徴とす
る。
【0015】ここで入力データの1語をバイト数単位に
区切った1又は複数の文字で表現し、且つ入力データの
1語を構成するバイト数が固定の場合、分割辞書指定手
段12は、少なくとも1語中のバイト数が計数できるカ
ウンタ20を備え、符号化手段16で入力文字列を符号
化した後にカウンタ20で符号化済み文字列Sのバイト
数を計数し、カウンタ20の計数値に基づいて分割辞書
を指定することを特徴とする。
【0016】例えば図1(b)のuバイト文字(u=2
バイト)の場合、分割辞書指定手段12は、カウンタ2
0の計数値を入力データの1語を構成するバスト数uで
割った余りkに基づいて分割辞書10−iを指定する また図1(c)に示すように、入力データの1語をバイ
ト数単位に区切った1又は複数の文字で表現し、且つ入
力データの1語が2通りのバイト数u,vからなるuバ
イト文字とvバイト文字で表現され、更にu及びvバイ
ト文字は先頭バイトを示す識別コードを備えた場合、分
割辞書指定手段12は、uバイト文字又はvバイト文字
のバイト数を計数するカウンタ20を備え、符号化手段
16で入力文字列を符号化した後に符号化済み文字列S
のバイト数を計数し、計数中にuバイトまたはvバイト
文字の先頭バイトを検出した場合には、カウンタ20の
計数値kをそれぞれ0又はuに設定する共に、先頭バイ
ト以外のバイトを検出した場合には1つカウンタアップ
し、符号化済み文字列Sに続く次の入力文字Cの直前ま
で計数した時のカウンタ20の計数値kに基づいて次の
符号化に使用する分割辞書10−iを指定することを特
徴とする。
【0017】例えば入力データの1語がu=1バイトと
v=2バイトの2通りのバイト文字で表現され、更に各
バイト文字は先頭バイトを示す識別コードを備えた場
合、分割辞書指定手段12は、1バイト文字又は2バイ
ト文字のバイト数を計数するカウンタ20を備え、符号
化手段16で入力文字列を符号化した後に符号化済み文
字列Sのバイト数を計数し、この計数中に1バイトまた
は2バイト文字の先頭バイトを検出した場合には、カウ
ンタ20の計数値kをそれぞれ0又は1に設定する共
に、先頭バイト以外のバイトを検出した場合には1つカ
ウンタアップし、符号化済み文字列Sに続く次の入力文
字Cの直前まで計数した時のカウンタ20の計数値kが
k=0の時は1バイト文字又は2バイト文字の先頭バイ
トと判定して第1の分割辞書10−0を指定し、カウン
タ計数値kがk=1の時は2バイト文字の2バイト目と
判定して第2の分割辞書10−1を指定する。
【0018】
【作用】このような構成を備えた本発明のデータ圧縮方
式によれば、入力データの1語が何バイト単位からなる
か予想できる場合に、1語を構成するバイト毎に対応し
て設けた複数の分割辞書の中から入力データの各語の何
番目のバイトかを計数するカウンタの値によって特定の
分割辞書を選択して、辞書検索により入力文字を含む入
力文字列に最大長一致する文字列の辞書番号を求めて符
号語として表すことになる。このため1語のバイト長に
関わらずバイト単位に従来と同じLZW符号化ができ、
複数バイト長のデータであっても効率のよい簡潔な符号
化を可能にして圧縮率の向上を図る。
【0019】
【実施例】図2は本発明の一実施例を示した実施例構成
図である。図2において、22は制御手段としてのCP
Uであり、CPU22に対してはプログラムメモリ24
とデータメモリ28が接続される。プログラムメモリ2
4にはコントロールソフト26,分割辞書指定ソフト1
2,辞書検索ソフト14,符号化ソフト16及び辞書登
録ソフト18が設けられる。
【0020】一方、データメモリ28にはこれから符号
化しようとする入力データを格納するデータバッファ3
0と辞書10を構成する複数の分割辞書10−0,10
−2,・・・10−nが設けられる。分割辞書10−0
〜10−nの数は入力データの1語を構成する複数の文
字毎に設けられる。即ち本発明にあっては、LZW符号
化における処理単位を8ビットでなる1バイト単位の文
字とすると、入力データの1語は複数バイトで表現され
ている場合のLZW符号化を対象とする。例えば、入力
データの1語がuバイト文字で構成される場合にはu個
の分割辞書が設けられる。
【0021】プログラムメモリ24に設けた分割辞書指
定ソフト12は、入力文字の符号化時に入力文字が入力
データの1語を構成する複数文字の何番目かによって分
割辞書を指定する。この分割辞書指定ソフト12による
指定はコントロールソフト26に対して接続したカウン
タ20の計数値を用いて行う。カウンタ20の動作は後
の説明で明らかにする。
【0022】辞書検索ソフト14は分割辞書指定ソフト
12で指定された分割辞書に登録された既に符号化済み
の部分列の内、入力文字を含む入力文字列に最大長一致
する部分列を検索する。符号化ソフト16は辞書検索ソ
フト14で検索された入力文字列に最大長一致する部分
列の辞書番号(辞書インデックス)を符号語として出力
する。
【0023】更に、辞書登録ソフト18は辞書検索ソフ
ト14で文字列の検索ができなくなったときに、直前に
符号化した文字列の辞書番号にそのときの入力文字を加
えた文字列を新たな辞書番号を付して、検索に使用した
分割辞書に登録する。図3は入力データの1語がuバイ
ト文字から構成されるときの本発明によるLZW符号化
のアルゴリズムを示したフローチャートであり、以下の
手順に従って動作する。
【0024】[ステップS1]初期設定処理であり、入
力データの1語がuバイトで表現されることから、u個
の分割辞書Dj に初期値として1バイトの全パターンを
登録してから符号化を始める。ここで、1バイトを8ビ
ットとすると、各分割辞書Dj の登録数nj はnj =2
56となる。続いてカーソルを入力データの先頭の位置
にセットし、入力データ数を示す図2の実施例に示した
カウンタ20でなるバイト数カウンタbcountを0とお
く。
【0025】[ステップS2]次にバイト数カウンタbc
ountのモジュロuをとった値をkとする。即ち、このと
きのバイト数カウンタbcountを1語のバイト数uで割っ
たときの余りkを求める。尚、最初はバイト数カウンタ
bucount =0であることからk=0となる。このkの値
が分割辞書Dk を指定する。
【0026】[ステップS3]カーソルの位置からの入
力文字列に一致するkにより指定された分割辞書Dk
中の最大長一致する登録済み文字列Sを検索する。 [ステップS4]ステップS3で求めた登録済み文字列
Sの辞書番号nk を「log2k 」ビットで表わして
出力する。即ち、log2k 以上の最初の整数ビット
で表わして出力する。更に、分割辞書Dk の辞書番号n
k を1つインクリメントする。
【0027】[ステップS5]既に符号化済みの文字列
Sに現在カーソルをセットしているCを付加した文字列
SCを辞書番号nk を付して検索に使用した分割辞書D
k に登録する。また、バイト数カウンタbcountの計数値
を符号化済み文字列Sの文字数分(バイト数分)だけカ
ウントアップさせる。更に、カーソルを符号化済み文字
列Sの後ろの文字に移動させる。
【0028】[ステップS6]文字入力終了の有無をチ
ェックし、文字入力が終了しなければ再びステップS2
に戻って、ステップS5でカウントアップしたバイト数
カウンタbcountの計数値を用いて分割辞書Dkを指定す
る値kを求める。図4は入力データの1語がuバイトと
vバイトの2通りで表わされる場合の本発明によるLZ
W符号化を示したフローチャートである。
【0029】例えば、パソコンのMS−DOS等で用い
られているシフトJISデータの1語は、1バイトデー
タ(非漢字)と2バイトデータ(漢字)を用いて表わさ
れる。このシフトJISコードにあっては、漢字は1バ
イト目が必ず8IH〜9FH,EOH〜FCHで始まる
識別コードとなっており、シフトJISコードが1バイ
トデータであるか2バイトデータであるかが判るように
している。
【0030】このシフトJISコードのように1語が1
バイト=uバイト、またはvバイト=2バイトでなる場
合には、符号化しようとする入力文字がどちらのバイト
構成における何バイト目かによって分割辞書を選択して
符号化すればよい。図4のフローチャートにあっては、
入力データの1語がuバイト文字とvバイト文字の2通
りからなる一般化した状態でのLZW符号化を示してい
る。尚、バイト数uとvとの間にはu<vの関係があ
る。
【0031】図4における符号化の処理手順を示すと次
の動作となる。 [ステップS1]初期設定であり、(u+v)個の辞書
をもち、j=0〜(u+v−1)の分割辞書Dj に1バ
イトの全パターンを登録してから符号化を始める。例え
ば、uバイト=1バイト、vバイト=2バイトとした場
合には、j=2個の分割辞書D0,D1 に256の全パ
ターンを初期登録する。また、カーソルをデータの先頭
位置におき、カウンタの計数値kをk=0にセットす
る。
【0032】[ステップS2]カウンタ計数値kで指定
される分割辞書Dk を検索し、カーソルの位置からの入
力文字列に一致する既に登録済みの最大長一致する文字
列Sを検索する。 [ステップS3]検索した文字列Sの辞書番号nk
「log2k 」ビットで表わして出力し、また辞書番
号nk を1つインクリメントする。これを可変固定長符
号化と呼ぶことにする。
【0033】[ステップS4]符号化済み文字列Sにカ
ーソルをセットした最初の文字列Cを付加した文字列S
Cを検索を行った分割辞書Dk に辞書番号nk を付して
辞書登録する。 [ステップS5]カーソルを符号化済み文字列Sに沿っ
て移動させながらカウンタの計数値kのカウントアップ
を行う。このカーソルSの移動によるカウントアップ中
におけるカウント動作はuバイト文字またはvバイト文
字の先頭文字を検出したときにカウンタ計数値kをk=
0またはk=uとおき、先頭バイト以外の検出時には1
つずつカウントアップする。こうすることにより、符号
化済み文字列Sが前回までの文字のバイト位置によって
重み付けされ、次の符号化する入力文字の各バイトの直
前の位置に対応する分割辞書が選択されて符号化が行わ
れることになる。
【0034】[ステップS6]文字入力の終了の有無を
チェックし、文字入力が有れば再びステップS2に戻っ
て、ステップS5でカウントアップしたカウンタ計数値
kによる分割辞書Dkの指定で辞書検索を繰り返す。図
5は図4のステップS5におけるカウンタ動作を示した
説明図である。
【0035】図5においては、uバイト=1バイト、v
バイト=2バイトの各文字の符号化を対象としている。
図5(a)は符号化済み文字列Sに続く次の入力文字C
がu=1バイト文字であった場合を示しており、この場
合には、例えばカウンタ計数値k=0の初期設定が行わ
れる。入力文字Cがu=1バイト文字であることは、こ
の入力文字Cを検査することで検出できる。
【0036】図5(b)は符号化済み文字列Sに続いて
v=2バイト文字の1バイト目が入力文字Cとして存在
した場合を示す。この場合にも入力文字Cの第1バイ
ト、即ち先頭バイトであることが検出され、図6(a)
と同様にカウンタ計数値kはk=1に初期設定される。
図5(c)は符号化済み文字列Sに続く次の入力文字C
がv=2バイト文字の2バイト目であった場合を示す。
この場合には入力文字Cの第1バイトを見て2バイト文
字の2バイト目であることが検出され、この場合にはカ
ウンタ計数値kは1つカウントアップされたk=2とな
る。
【0037】図6は図5のカウンタ計数値kに対応した
分割辞書の指定を示した説明図である。図6において、
カウンタ20は図5に示したように次の入力文字Cの符
号化に先立ってカウンタ計数値kを計数して分割辞書指
定ソフト12に与える。分割辞書指定ソフト12に対し
ては、u=1バイト文字とv=2バイト文字の1バイト
目に共通に使用される分割辞書10−0と、v=2バイ
ト文字の2バイト目のみに使用される分割辞書10−
1,10−2の2つが設けられている。
【0038】そして、カウンタ計数値kがk=0のとき
分割辞書指定ソフト12は分割辞書指定ソフト10−0
を指定して辞書検索を行わせ、一方、カウンタ計数値k
=1の場合には分割辞書10−1を指定して辞書検索を
行わせるようになる。図7は図4で処理されるuバイト
文字とvバイト文字の他の具体例を示したもので、図7
(a)に示すようにuバイト文字として3バイト文字、
また図7(b)に示すようにvバイト文字として4バイ
ト文字を用いる入力データを例にとっている。
【0039】この3バイト文字及び4バイト文字の2種
類を対象としたLZW符号化におけるカウンタ動作とし
ては、3バイト文字及び4バイト文字の先頭バイト(1
バイト目)でカウンタ計数値はそれぞれk=0とk=3
にセットされ、それ以外のバイトについては各バイトの
順番毎に1つずつカウントアップされる。その結果、図
7(c)に示すように、カウンタ20の計数値kはk=
0〜6のいずれかの値をとり、分割辞書指定ソフト12
はカウンタ計数値kの値に基づき3バイト文字の1,
2,3バイト目に対応する分割辞書10−0,10−
1,10−2または4バイト文字の1,2,3,4バイ
ト目に対応する分割辞書10−3,10−4,10−
5,10−6のいずれかを指定して入力文字列に最大長
一致する登録済み文字列Sの辞書検索を行うようにな
る。
【0040】次に図3及び図4のステップS3にあって
は、検索できた辞書Dk の辞書番号nk を「log2
k 」ビットで表わす可変固定長符号化により辞書番号を
符号語として出力したが、他の実施例として辞書番号n
k をビット端数補償、PBC符号化(Phasing in Binar
y Codes )または多値算術符号で表わしてもよい。 (1)ビット端数補償による可変固定長符号化 図3及び図4のステップS3において、辞書番号nk
「log2k 」ビットで表わすと、 「log2k 」−log2k 分のビットロスが生ずる。このビットの端数のロスを減
らして辞書番号nk を表現することにより符号化効率を
向上させる方法としてビット端数補償がある。(例えば
「Ziv-Lempel符号の改良とシミュレーションによる評価
性能−(II)」電子通信学会技術研究報告C84-135, pp.
1-8, 1984 参照)。
【0041】ここで符号化する辞書番号nk をiとして
表わすと、ビット端数補償にあっては、最大辞書登録数
nに対応した最大辞書番号nk をi=nとしたときのビ
ット数pを p=「log2 n」 とし、また辞書番号iの最上位ビットを除く(p−1)
ビットで表わしたものをi* とする。同様に最大辞書番
号nの最上位ビットを除く(p−1)ビットで表わした
ものをn* とする。
【0042】このような条件のもとでビット端数補償に
よる辞書番号i(=nk )の可変長符号語は i* ≦n* のとき、i* で表わし、 i* >n* のとき、i* の後に最上位ビットを付けて
表わす。 ここで、最大辞書登録数n=12の辞書番号i=0〜1
1をビット端数補償で表わす例を図8に示す。
【0043】図8においては、 p=「log2 n」=「log2 12」=4ビット p−1=3ビット であり、 i* ≦3ビットのとき、i* で表わし、 i* >3ビットのとき、i* の後に最上位ビットを付
けて表わす。
【0044】即ち、辞書番号i=0〜11の4ビットの
2進表示は、前記の条件を満たす辞書番号i=4〜7
の4つについては、上位1ビットを除いた下位3ビット
*で表わす。一方、前記の条件を満たすi=0〜3
及びi=8〜11については、上位1ビットを除いた下
位3ビットi* の後に2進表示の上位1ビットを付けて
区別する。 (2)PBC可変長符号化 このPBC可変長符号化は、例えば「Text Compressio
n」,Prentice-Hall Inc. 1990 年, pp. 293-294 に記
載される。
【0045】PBC可変長符号化では i<2p −n−1のとき、i* で表わし、 i≧2p −n−1のとき、辞書番号i(=nk )に
(2p −n−1)を加えた値(i+2p −n−1)をp
ビットで表わす。最大辞書登録数n=12のときの辞書
番号i=0〜11についてのPBC符号化の具体例を図
9に示す。
【0046】図9において、前記の条件を満足するの
は辞書番号i=0〜3の場合であり、この場合にはp=
4ビットで表現されたi=0〜3の2進表示コードは最
上位ビットを除く3ビットでPBC表現される。また、
前記の条件を満足するには辞書番号i=4〜11の場
合であり、この場合にはp=4ビットで表現されたi=
4〜11の2進表示に4の2進表示「100」を加算し
た4ビットでPBC表現される。 (3)多値算術符号化 前記(1)(2)の可変長符号化は辞書番号iによって
pビットとp−1ビットで表わしており、辞書番号iの
1個ずつで見ると、ビットの端数のロスを減らすことが
できるものの辞書番号列全体として見ると冗長性がまだ
残る。
【0047】そこでビットのロスを更に削減するため、
辞書登録個数n個の文字列が等確率で出現するものと仮
定して辞書番号iを多値算術符号化する(多値算術符号
化については、例えば、文献“Arithmetic Coding for
Data Compression”, Communication of the ACM, June
1987, Vol. 30, No.6, pp.520-540参照)。図10
(a)(b)に複数個のシンボルの符号化に用いる多値
算術符号化の符号化及び復号化の概略フローを示す。
【0048】図10(a)の多値算術符号化は、データ
列を[0,1]の数直線上の一点に対応付けるものであ
り、シンボル毎に出現したシンボルの出現確率から求め
た累積出現確率によって[0,1]区間を逐次再分割す
るものである。図11は多値算術符号化の処理内容を示
したもので、1回目の辞書登録個数nをn=4とし、最
長文字列の出現番号iがi=2番目であったとすると、
上限=1と下限=0の間の4分割された区間の中のi=
2に対応するの区間が選択される。
【0049】次に2回目の辞書登録個数も同じn=4で
あり、この場合の最長文字列の辞書番号iがi=1であ
ったとすると、更に4分割された中のの区間が選択さ
れる。以下同様に選択された区間の再分割が進み、N回
目に最終文字列に基づく区間が選択されると、この区間
の中の任意の一点の値と区間の上限または下限を示す値
との組を符号語として出力する。
【0050】また、図10(a)の符号化アルゴリズム
ではシンボル列全体の符号化終了まで符号語が得られ
ず、また符号語全体が得られないと復号ができないよう
になっているが、実際の多値算術符号化では、有限桁の
固定長のレジスタで演算して、ビット単位に符号語を得
ることができる。即ち、図11の第1回目の符号化で
は、例えば上限が「001」であり、下限が「010」
であり、両者の最上位ビットは共に「0」であることか
ら、この最上位ビット「0」は出力してしまうようにす
る。2回目以降についても同様である。
【0051】尚、上記の実施例はLZW符号化のみにつ
いて示したが、辞書番号で文字列は一義的に指定されて
いるため、LZW復号化は符号化の逆の操作を行えば元
の文字列を復元することができる。また上記の実施例は
8ビットでなる1バイトの文字単位に符号化する場合を
例にとるものであったが、1文字を構成するデータ長は
1バイトに限定されず、例えば4ビット単位、7ビット
単位等の任意のビット数単位としてよい。
【0052】
【発明の効果】以上説明してきたように本発明によれ
ば、入力データの1語が符号化処理における複数の処理
単位、例えば複数バイトで表わされていても、入力デー
タの1語を構成する文字毎に割辞書を割り当てて文字単
位、例えばバイト単位で行う従来のLZW符号化と同じ
処理ができるため、アルゴリズムがシンプルで且つ入力
データの1語を構成するバイト数構成の規則性を取り込
むことができるために、高い圧縮率が得られる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の原理説明図
【図3】1語がuバイトからなる場合のLZW符号化を
示したフローチャート
【図4】1語がuバイトとvバイトの2種からなる場合
のLZW符号化を示したフローチャート
【図5】図4で1バイト文字と2バイト文字のLZW符
号化するときのカウンタ動作を示した説明図
【図6】図2のカウンタによる分割辞書の指定を示した
説明図
【図7】図4において3バイト文字と4バイト文字のL
ZW符号化するときの分割辞書の指定を示した説明図
【図8】本発明の符号化で行うビット端数補償による可
変長符号化の説明図
【図9】本発明の符号化で行うPBC可変長符号化の説
明図
【図10】本発明で用いる多値算術符号化及び復号化ア
ルゴリズムを示した説明図
【図11】本発明で用いる多値算術符号化の処理内容を
示した説明図
【図12】従来のLZW符号化を示したフローチャート
【符号の説明】
10:辞書 10−0〜10−n:分割辞書 12:分割辞書指定手段(分割辞書指定ソフト) 14:辞書検索手段(辞書検索ソフト) 16:符号化手段(符号化ソフト) 18:辞書登録手段(辞書登録ソフト) 20:カウンタ 22:CPU 24:プログラムメモリ 26:コントロールソフト 28:データメモリ 30:データバッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 昭59−231683(JP,A) 特開 平3−262331(JP,A) 特開 平4−149766(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 G06F 17/22 520 H03M 7/30

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】入力データの1語を所定ビット数毎に区切
    った1又は複数の文字で表現し、該文字単位にLZW符
    号に符号化して圧縮するデータ圧縮方式に於いて、 前記入力データの1語を構成する複数の文字毎に設けた
    分割辞書(10−1〜10−n)と、 入力文字(C)の符号化時に、該入力文字(C)が前記
    入力データの1言語を構成する複数文字の何番目かによ
    って前記分割辞書(10−i)を指定する分割辞書指定
    手段(12)と、 該分割辞書指定手段(12)で指定された分割辞書(1
    0−i)に登録された既に符号化済みの部分列の内、前
    記入力文字(C)を含む入力文字列に最大長一致する部
    分列(S)を検索する辞書検索手段(14)と、 該辞書検索手段(14)で検索された入力文字列に最大
    長一致する部分列(S)の辞書番号を符号語として出力
    する符号化手段(16)と、 前記辞書検索手段(14)で文字列の検索できなくなっ
    た時に、直前に符号化した文字列(S)の辞書番号に入
    力文字(C)を加えた文字列(SC)を新たな辞書番号
    を付して検索に使用した分割辞書(10−i)に登録す
    る辞書登録手段(18)と、を設けたことを特徴とする
    データ圧縮方式。
  2. 【請求項2】請求項1記載のデータ圧縮方式に於いて、 入力データの1語をバイト単位に区切った複数の文字で
    表現し、且つ入力データの1語を構成するバイト数が固
    定の場合、前記分割辞書指定手段(12)は、少なくと
    も1語中のバイト数が計数できるカウンタ(20)を備
    え、前記符号化手段(16)で入力文字列を符号化した
    後に前記カウンタ(20)で符号化済み文字列(S)の
    バイト数を計数し、該カウンタ(20)の計数値に基づ
    いて分割辞書を指定することを特徴とするデータ圧縮方
    式。
  3. 【請求項3】請求項2記載のデータ圧縮方式に於い
    て、、 前記分割辞書指定手段(12)は、前記カウンタ(2
    0)の計数値を入力データの1語を構成するバスト数
    (u)で割った余り(k)に基づいて分割辞書(10−
    i)を指定することを特徴とするデータ圧縮方式。
  4. 【請求項4】請求項1記載のデータ圧縮方式に於い
    て、、 入力データの1語をバイト数単位に区切った1又は複数
    の文字で表現し、且つ入力データの1語が2通りのバイ
    ト数(u,v)からなるuバイト文字とvバイト文字で
    表現され、更にu及びvバイト文字は先頭バイトを示す
    識別コードを備えた場合、前記分割辞書指定手段(1
    2)は、uバイト文字又はvバイト文字のバイト数を計
    数するカウンタ(20)を備え、前記符号化手段(1
    6)で入力文字列を符号化した後に符号化済み文字列
    (S)のバイト数を計数し、該計数中にuバイト文字ま
    たはvバイト文字の先頭バイトを検出した場合には、前
    記カウンタ(20)の計数値(k)をそれぞれ0又はu
    に設定する共に、先頭バイト以外のバイトを検出した場
    合には1つカウンタアップし、符号化済み文字列(S)
    に続く次の入力文字(C)の直前まで計数した時の前記
    カウンタ(20)の計数値(k)に基づいて次の符号化
    に使用する分割辞書(10−i)を指定することを特徴
    とするデータ圧縮方式。
  5. 【請求項5】請求項4記載のデータ圧縮方式に於い
    て、、 入力データの1語がu=1バイトとv=2バイトの2通
    りのバイト文字で表現され、更に各バイト文字は先頭バ
    イトを示す識別コードを備えた場合、前記分割辞書指定
    手段(12)は、1バイト文字又は2バイト文字のバイ
    ト数を計数するカウンタ(20)を備え、前記符号化手
    段1(16)で入力文字列を符号化した後に符号化済み
    文字列(S)のバイト数を計数し、該計数中に前記1バ
    イト文字または2バイト文字の先頭バイトを検出した場
    合には、前記カウンタ(20)の計数値(k)をそれぞ
    れ0又は1に設定すると共に、先頭バイト以外のバイト
    を検出した場合には1つカウンタアップし、符号化済み
    文字列(S)に続く次の入力文字(C)の直前まで計数
    した時の前記カウンタ(20)の計数値(k)が0の時
    は1バイト文字又は2バイト文字の先頭バイトと判定し
    て第1の分割辞書(10−0)を指定し、カウンタ計数
    値(k)が1の時は2バイト文字の2バイト目と判定し
    て第2の分割辞書(10−1)を指定することを特徴と
    するデータ圧縮方式。
JP28744991A 1991-11-01 1991-11-01 データ圧縮方式 Expired - Fee Related JP3388767B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28744991A JP3388767B2 (ja) 1991-11-01 1991-11-01 データ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28744991A JP3388767B2 (ja) 1991-11-01 1991-11-01 データ圧縮方式

Publications (2)

Publication Number Publication Date
JPH05128100A JPH05128100A (ja) 1993-05-25
JP3388767B2 true JP3388767B2 (ja) 2003-03-24

Family

ID=17717475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28744991A Expired - Fee Related JP3388767B2 (ja) 1991-11-01 1991-11-01 データ圧縮方式

Country Status (1)

Country Link
JP (1) JP3388767B2 (ja)

Also Published As

Publication number Publication date
JPH05128100A (ja) 1993-05-25

Similar Documents

Publication Publication Date Title
US5229768A (en) Adaptive data compression system
JP3241788B2 (ja) データ圧縮方式
JPH06168096A (ja) データ符号化方式及びデータ復元方式
JP3388767B2 (ja) データ圧縮方式
JP3105598B2 (ja) ユニバーサル符号を用いたデータ圧縮方式
JP3241787B2 (ja) データ圧縮方式
JP3127016B2 (ja) データ圧縮及び復元方法
JP2954749B2 (ja) データ圧縮方式
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP2000259646A (ja) 情報索引装置
JPH05241775A (ja) データ圧縮方式
JPH05152971A (ja) データ圧縮・復元方法
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3012677B2 (ja) Zl符号化方法
JP3388768B2 (ja) データ圧縮及び復元方式
JP3132774B2 (ja) データ圧縮・復元装置
JP2999561B2 (ja) データ圧縮及び復元装置
JP3051501B2 (ja) データ圧縮方法
JP3100206B2 (ja) データ圧縮方法
JP3088740B2 (ja) データ圧縮及び復元方式
JP3384813B2 (ja) データ圧縮方式
JP3115066B2 (ja) 辞書検索方法
JP3117760B2 (ja) データ復元方式
JP3015483B2 (ja) データ圧縮及び復元方式
JP3058711B2 (ja) データ圧縮及び復元方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20021210

LAPS Cancellation because of no payment of annual fees