JPH0527943A - データ圧縮方式 - Google Patents
データ圧縮方式Info
- Publication number
- JPH0527943A JPH0527943A JP17909791A JP17909791A JPH0527943A JP H0527943 A JPH0527943 A JP H0527943A JP 17909791 A JP17909791 A JP 17909791A JP 17909791 A JP17909791 A JP 17909791A JP H0527943 A JPH0527943 A JP H0527943A
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- character
- character string
- appearance frequency
- data compression
- 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.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【目的】ユニバーサル符号の一種である増分分解型の改
良として知られたLZW符号によるデータ圧縮方式に関
し、無駄のない辞書を作成し、辞書検索が高速にでき且
つ高い圧縮率を得ることを目的とする。 【構成】入力文字列中の各文字の出現頻度を計数し、こ
の出現頻度から推定した出現確率の累算値が予め定めた
一定値となる全ての文字列を登録格納した辞書10を作
成し、入力文字列を前記辞書10内の最大長一致する文
字列の辞書登録番号で表わして圧縮符号化する。
良として知られたLZW符号によるデータ圧縮方式に関
し、無駄のない辞書を作成し、辞書検索が高速にでき且
つ高い圧縮率を得ることを目的とする。 【構成】入力文字列中の各文字の出現頻度を計数し、こ
の出現頻度から推定した出現確率の累算値が予め定めた
一定値となる全ての文字列を登録格納した辞書10を作
成し、入力文字列を前記辞書10内の最大長一致する文
字列の辞書登録番号で表わして圧縮符号化する。
Description
【0001】
【産業上の利用分野】本発明は、ユニバーサル符号の一
種である増分分解型の改良として知られたLZW符号に
よるデータ圧縮方式に関する。近年、文字コード、ベク
トル情報、画像など様々な種類のデータがコンピュータ
で扱われるようになっており、扱われるデータ量も急速
に増加してきている。大量のデータを扱うときは、デー
タの中の冗長な部分を省いてデータ量を圧縮すること
で、記憶容量を減らしたり、速く伝送したりできるよう
になる。
種である増分分解型の改良として知られたLZW符号に
よるデータ圧縮方式に関する。近年、文字コード、ベク
トル情報、画像など様々な種類のデータがコンピュータ
で扱われるようになっており、扱われるデータ量も急速
に増加してきている。大量のデータを扱うときは、デー
タの中の冗長な部分を省いてデータ量を圧縮すること
で、記憶容量を減らしたり、速く伝送したりできるよう
になる。
【0002】このように様々なデータを1つの方式でデ
ータ圧縮できる方法としてユニバーサル符号化が提案さ
れている。ここで、本発明の分野は、文字コードの圧縮
に限らず、様々なデータに適用できるが、以下では、情
報理論で用いられている呼称を踏襲し、データの1ワー
ド単位を文字と呼び、データが任意ワードつながったも
のを文字列と呼ぶことにする。
ータ圧縮できる方法としてユニバーサル符号化が提案さ
れている。ここで、本発明の分野は、文字コードの圧縮
に限らず、様々なデータに適用できるが、以下では、情
報理論で用いられている呼称を踏襲し、データの1ワー
ド単位を文字と呼び、データが任意ワードつながったも
のを文字列と呼ぶことにする。
【0003】
【従来の技術】従来、バイト単位のファイル圧縮に用い
るユニバーサル符号の代表的な方法として、(1)ジブ
−レンペル(Ziv-Lempel)符号(例えば、宗像『Ziv-Le
mpelのデータ圧縮法』,情報処理,Vol.26,No.1,1985
年)、(2)算術符号の2つがある。
るユニバーサル符号の代表的な方法として、(1)ジブ
−レンペル(Ziv-Lempel)符号(例えば、宗像『Ziv-Le
mpelのデータ圧縮法』,情報処理,Vol.26,No.1,1985
年)、(2)算術符号の2つがある。
【0004】ジブーレンペル符号では
ユニバーサル型と、
増分分解型(Incremental parsing )
の2つのアルゴリズムが提案されている。更に、ユニバ
ーサル型アルゴリズムの改良として、LZSS符号があ
る(T.C.Bell, “Better OPM/L Text Compression ”,I
EEETrans. on Commun., Vol.COM-34,No.12,Dec.1986参
照)。
ーサル型アルゴリズムの改良として、LZSS符号があ
る(T.C.Bell, “Better OPM/L Text Compression ”,I
EEETrans. on Commun., Vol.COM-34,No.12,Dec.1986参
照)。
【0005】また、増分分解型アルゴリズムの改良とし
ては、LZW(Lempel-Ziv-Welch)符号がある(T.A.We
lch,“A Technique for High-Performance Data Compre
ssion ”,Computer,June 1984 参照)。これらの符号の
内、高速処理ができることと、アルゴリズムの簡単さか
らLZW符号が記憶装置のファイル圧縮などで使われる
ようになっている。
ては、LZW(Lempel-Ziv-Welch)符号がある(T.A.We
lch,“A Technique for High-Performance Data Compre
ssion ”,Computer,June 1984 参照)。これらの符号の
内、高速処理ができることと、アルゴリズムの簡単さか
らLZW符号が記憶装置のファイル圧縮などで使われる
ようになっている。
【0006】LZW符号の符号化アルゴリズムを図8に
示す。LZW符号化は、書き替え可能な辞書をもち、入
力文字列の中を相異なる文字列に分け、この文字列を出
現した順に識別番号(辞書登録番号)を付けて辞書に登
録すると共に、現在入力している文字列を辞書に登録し
てある最長一致文字列の参照番号だけで表して符号化す
るものである。
示す。LZW符号化は、書き替え可能な辞書をもち、入
力文字列の中を相異なる文字列に分け、この文字列を出
現した順に識別番号(辞書登録番号)を付けて辞書に登
録すると共に、現在入力している文字列を辞書に登録し
てある最長一致文字列の参照番号だけで表して符号化す
るものである。
【0007】尚、増分分解型符号およびLZW符号の技
術は、特開昭59-231683 号、米国特許第4,558,302 号で
開示されている。図8のLZW符号化処理は次のように
なる。 [ステップS1]初期化のステップである。予め全文字
につき一文字からなる文字列を初期値として登録してか
ら符号化を始める。辞書の登録数nを文字種数Aと置
く。カーソルをデータの先頭の位置に置く。
術は、特開昭59-231683 号、米国特許第4,558,302 号で
開示されている。図8のLZW符号化処理は次のように
なる。 [ステップS1]初期化のステップである。予め全文字
につき一文字からなる文字列を初期値として登録してか
ら符号化を始める。辞書の登録数nを文字種数Aと置
く。カーソルをデータの先頭の位置に置く。
【0008】[ステップS2]カーソルの位置からの文
字列に一致する辞書登録の最長文字列Sを見つける。 [ステップS3]文字列Sの識別番号を「log2 n」
ビットで表して出力する。ただし、「log2 n」はl
og2 n以上の最小の整数を意味する。例えば、辞書登
録数n=12では「log2 12」はlog2 12以上
の最小の整数4を意味する。
字列に一致する辞書登録の最長文字列Sを見つける。 [ステップS3]文字列Sの識別番号を「log2 n」
ビットで表して出力する。ただし、「log2 n」はl
og2 n以上の最小の整数を意味する。例えば、辞書登
録数n=12では「log2 12」はlog2 12以上
の最小の整数4を意味する。
【0009】[ステップS4]文字列Sのカーソルの最
初の文字Cとおく。カーソルは文字列Sの後の文字に移
動させる。 [ステップS5]辞書登録数nが辞書の最大アドレスNM
AXより小さいか調べる。もし、小さければステップS6
に移り、小さくなければステップS7に移る。
初の文字Cとおく。カーソルは文字列Sの後の文字に移
動させる。 [ステップS5]辞書登録数nが辞書の最大アドレスNM
AXより小さいか調べる。もし、小さければステップS6
に移り、小さくなければステップS7に移る。
【0010】[ステップS6]辞書登録数nを一つイン
クリメントし、文字列Sに文字Cを付加した文字列SC
を辞書に登録し、ステップS2に戻る。 [ステップS7]圧縮率の変化をチェックし、もし、圧
縮率が悪化していれば、ステップS1に戻って辞書を初
期化する。もし、圧縮率が悪化していなければ、ステッ
プS2に戻る。このように従来のLZW符号化によるデ
ータ圧縮方式は、辞書に文字列を登録していって、辞書
が一杯(辞書の最大アドレスまで登録)になったとき、
辞書への登録を止めて数100キロバイト単位に圧縮率
をチェックしている。
クリメントし、文字列Sに文字Cを付加した文字列SC
を辞書に登録し、ステップS2に戻る。 [ステップS7]圧縮率の変化をチェックし、もし、圧
縮率が悪化していれば、ステップS1に戻って辞書を初
期化する。もし、圧縮率が悪化していなければ、ステッ
プS2に戻る。このように従来のLZW符号化によるデ
ータ圧縮方式は、辞書に文字列を登録していって、辞書
が一杯(辞書の最大アドレスまで登録)になったとき、
辞書への登録を止めて数100キロバイト単位に圧縮率
をチェックしている。
【0011】このとき圧縮率が前回チェックしたときと
比べ悪化する方向に動いていれば、辞書がデータの統計
的性質とズレができていると判断し、辞書を初期化す
る。この場合の辞書の初期化方法は、今までの学習結果
をクリアしてしまうので、次から学習し直さなければな
らず、効率が低下する。これを防ぐ方法として、辞書に
登録した文字列の実際に使用した回数を計数しておき、
出現頻度の高い文字列のみ残して辞書のスペースを空け
る方法が本願発明者らによって提案されている。
比べ悪化する方向に動いていれば、辞書がデータの統計
的性質とズレができていると判断し、辞書を初期化す
る。この場合の辞書の初期化方法は、今までの学習結果
をクリアしてしまうので、次から学習し直さなければな
らず、効率が低下する。これを防ぐ方法として、辞書に
登録した文字列の実際に使用した回数を計数しておき、
出現頻度の高い文字列のみ残して辞書のスペースを空け
る方法が本願発明者らによって提案されている。
【0012】次に算術符号化について、図9(a)に複
数個のシンボルの符号化に用いる多値算術符号化の符号
化アルゴリズムを示し、また図9(b)に復号化アルゴ
リズムを示す。この算術符号化の詳細は、I.H.Witten
他,“Arimetic Coding forData Compression”,Commu
m.of ACM, Vol.30,No.6, 1987年に示される。多値算術
符号化は、データ列を、[0,1]の数直線上の一点に
対応付けるものであり、シンボルごとに、出現したシン
ボルの出現確率から求めた累積出現確率によって[0,
1]区間を逐次、細分割し、最後の区間の[区間幅(r
ange)]と[上限(High)又は下限(Lo
w)]を符号語として出力する。
数個のシンボルの符号化に用いる多値算術符号化の符号
化アルゴリズムを示し、また図9(b)に復号化アルゴ
リズムを示す。この算術符号化の詳細は、I.H.Witten
他,“Arimetic Coding forData Compression”,Commu
m.of ACM, Vol.30,No.6, 1987年に示される。多値算術
符号化は、データ列を、[0,1]の数直線上の一点に
対応付けるものであり、シンボルごとに、出現したシン
ボルの出現確率から求めた累積出現確率によって[0,
1]区間を逐次、細分割し、最後の区間の[区間幅(r
ange)]と[上限(High)又は下限(Lo
w)]を符号語として出力する。
【0013】図9(a)の符号化アルゴリズムでは、シ
ンボル列全体の符号化が終了するまで符号語が得られ
ず、また、符号語全体が得られないと復号ができないよ
うになっている。しかし、実際の多値算術符号化では、
有限桁の固定長のレジスタで演算して、ビット単位に符
号語を得ることができる。また、算術符号化では、多重
の履歴からの条件付確率を符号化することによって、高
圧縮にする方法が発表されている(例えば、D.M. Abram
son,“An Adaptive Dependancy Source Model for Data
Compression”,Commun. ofACM, Vol.30, No.6,1987
年,または、J.G. Cleary 他,“Data Compression Usi
ngAdaptive Coding and Partial String Macthing”,C
ommun. of ACM,Vol.30, No.6, 1987 年)。
ンボル列全体の符号化が終了するまで符号語が得られ
ず、また、符号語全体が得られないと復号ができないよ
うになっている。しかし、実際の多値算術符号化では、
有限桁の固定長のレジスタで演算して、ビット単位に符
号語を得ることができる。また、算術符号化では、多重
の履歴からの条件付確率を符号化することによって、高
圧縮にする方法が発表されている(例えば、D.M. Abram
son,“An Adaptive Dependancy Source Model for Data
Compression”,Commun. ofACM, Vol.30, No.6,1987
年,または、J.G. Cleary 他,“Data Compression Usi
ngAdaptive Coding and Partial String Macthing”,C
ommun. of ACM,Vol.30, No.6, 1987 年)。
【0014】この多値算術符号化によってバイト単位の
データを処理するフローチャートを図10及び図11に
示す。図10は履歴を使用しない場合の多値算術符号化
を示したフローチャートである。
データを処理するフローチャートを図10及び図11に
示す。図10は履歴を使用しない場合の多値算術符号化
を示したフローチャートである。
【0015】[ステップS1]初期化処理である。辞書
Dの各スロットD(i)に処理対象とする全ての一文字
iを割当てる。各文字i参照番号I(i)を付ける。各
文字iの出現頻度freq(i) を1に初期化する。各文字i
の累積出現頻度 cum freq(i) を一文字の全数Aからi
を引いた値に初期化する。
Dの各スロットD(i)に処理対象とする全ての一文字
iを割当てる。各文字i参照番号I(i)を付ける。各
文字iの出現頻度freq(i) を1に初期化する。各文字i
の累積出現頻度 cum freq(i) を一文字の全数Aからi
を引いた値に初期化する。
【0016】[ステップS2]1文字kを入力する。
[ステップS3]文字kの番号j=I(k)を求め、番
号jを多値算術符号化する。この多値算術符号化では、
番号jの出現頻度freq(j) を累積出現頻度cum freq(j)
で割った累積確率を使用して区間幅及び上下限の値を求
める。また辞書スロットD(j)を文字iとする。
号jを多値算術符号化する。この多値算術符号化では、
番号jの出現頻度freq(j) を累積出現頻度cum freq(j)
で割った累積確率を使用して区間幅及び上下限の値を求
める。また辞書スロットD(j)を文字iとする。
【0017】[ステップS4]出現頻度順に辞書を置き
換える。 [ステップS5]出現頻度及び累積出現頻度を1つイン
クリメントしてステップS2に戻る図11は、一重履歴
を用いた多値算術符号化のフローチャートであり、文字
iに対する直前文字pを履歴として取り入れ、(p,
i)の出現頻度及び累積出現頻度を計数して多値算術符
号化を行うようにしている。符号化の処理は直前文字p
を履歴として取り入れている以外は図10と同じであ
る。
換える。 [ステップS5]出現頻度及び累積出現頻度を1つイン
クリメントしてステップS2に戻る図11は、一重履歴
を用いた多値算術符号化のフローチャートであり、文字
iに対する直前文字pを履歴として取り入れ、(p,
i)の出現頻度及び累積出現頻度を計数して多値算術符
号化を行うようにしている。符号化の処理は直前文字p
を履歴として取り入れている以外は図10と同じであ
る。
【0018】
【発明が解決しようとする課題】しかしながら、従来の
増分分解型ジブ−レンペル符号、例えばLZW符号で
は、辞書内の文字と入力文字との照合によって圧縮が行
えるため、処理が高速である利点があるものの、辞書に
めったに出現しない文字列も取り込むため、辞書が不要
に増加して検索に時間がかかり、また符号語として出力
する識別番号が大きくなることで圧縮率が低下する問題
点があった。
増分分解型ジブ−レンペル符号、例えばLZW符号で
は、辞書内の文字と入力文字との照合によって圧縮が行
えるため、処理が高速である利点があるものの、辞書に
めったに出現しない文字列も取り込むため、辞書が不要
に増加して検索に時間がかかり、また符号語として出力
する識別番号が大きくなることで圧縮率が低下する問題
点があった。
【0019】また、辞書への登録が一杯になった後、デ
ータの統計的性質が変化した場合には辞書をクリアした
後に再学習が必要となるが、このとき高頻度で出現する
文字列を辞書に残すなどして今までの学習結果を役立て
ようとすると処理に時間がかかる欠点があった。一方、
算術符号化では、一文字ごとに各文字の平均的な出現確
率に基づいて精密な符号化が行えるため、高圧縮率が得
られるものの、一文字毎の処理となるために処理量が多
く、符号化に時間にかかる問題があった。
ータの統計的性質が変化した場合には辞書をクリアした
後に再学習が必要となるが、このとき高頻度で出現する
文字列を辞書に残すなどして今までの学習結果を役立て
ようとすると処理に時間がかかる欠点があった。一方、
算術符号化では、一文字ごとに各文字の平均的な出現確
率に基づいて精密な符号化が行えるため、高圧縮率が得
られるものの、一文字毎の処理となるために処理量が多
く、符号化に時間にかかる問題があった。
【0020】本発明は、このような従来の問題点に鑑み
てなされたもので、無駄のなく辞書を作成し、辞書検索
が高速にでき且つ高い圧縮率も得られるデータ圧縮方式
を提供することを目的とする。
てなされたもので、無駄のなく辞書を作成し、辞書検索
が高速にでき且つ高い圧縮率も得られるデータ圧縮方式
を提供することを目的とする。
【0021】
【課題を解決するための手段】図1は本発明の原理説明
図である。図1に示すように、本発明のデータ圧縮方式
は、入力文字列中の各文字の出現頻度を計数し、この出
現頻度から推定した出現確率の累算値が予め定めた一定
値となる全ての文字列を登録格納した辞書10を作成す
る辞書作成手段12と、入力文字列を辞書10内の最大
長一致する文字列の辞書登録番号(識別番号)で表わし
て圧縮符号化する符号化部14とを備えたことを特徴と
する。
図である。図1に示すように、本発明のデータ圧縮方式
は、入力文字列中の各文字の出現頻度を計数し、この出
現頻度から推定した出現確率の累算値が予め定めた一定
値となる全ての文字列を登録格納した辞書10を作成す
る辞書作成手段12と、入力文字列を辞書10内の最大
長一致する文字列の辞書登録番号(識別番号)で表わし
て圧縮符号化する符号化部14とを備えたことを特徴と
する。
【0022】ここで辞書作成手段12は、入力文字列中
の各文字の条件付出現頻度を計数し、計数した条件付出
現頻度から推定した条件付出現確率の累算値が予め定め
た一定値となる全ての文字列を格納登録した辞書10を
作成する。一例として辞書作成手段12は、入力文字列
中のある文字iの次に他の文字jが出現する条件付き出
現頻度を計数し、この出現頻度から推定した出現確率の
累算値が予め定めた一定値となる全ての文字列を登録格
納した辞書10を作成する。
の各文字の条件付出現頻度を計数し、計数した条件付出
現頻度から推定した条件付出現確率の累算値が予め定め
た一定値となる全ての文字列を格納登録した辞書10を
作成する。一例として辞書作成手段12は、入力文字列
中のある文字iの次に他の文字jが出現する条件付き出
現頻度を計数し、この出現頻度から推定した出現確率の
累算値が予め定めた一定値となる全ての文字列を登録格
納した辞書10を作成する。
【0023】また他の例として辞書作成手段12は、特
定文字rで終る直前文字列を仮定して特定文字rから始
まる入力文字列中の各文字の条件付出現頻度を計数し、
条件付出現頻度から推定した特定の文字から始まる条件
付出現確率の累算値が予め定めた一定値となる全ての文
字列を特定文字r毎に分けて作成した分割辞書に登録す
る。
定文字rで終る直前文字列を仮定して特定文字rから始
まる入力文字列中の各文字の条件付出現頻度を計数し、
条件付出現頻度から推定した特定の文字から始まる条件
付出現確率の累算値が予め定めた一定値となる全ての文
字列を特定文字r毎に分けて作成した分割辞書に登録す
る。
【0024】更に符号化部14は、入力文字列を符号化
しながら各文字の出現頻度を計数すると共に、符号化に
対する辞書10の適合の度合いを判定し、適合する場合
はそのまま符号化を続け、不適合の場合は不適合と判定
した際に得られている各文字の出現頻度に基づいて辞書
作成手段12に辞書10の作成し直しを指示する。
しながら各文字の出現頻度を計数すると共に、符号化に
対する辞書10の適合の度合いを判定し、適合する場合
はそのまま符号化を続け、不適合の場合は不適合と判定
した際に得られている各文字の出現頻度に基づいて辞書
作成手段12に辞書10の作成し直しを指示する。
【0025】
【作用】このような構成を備えた本発明のデータ圧縮方
式によれば、ある入力文字列を符号化する際には、符号
化に先だって入力文字列の各文字の出現頻度を計数して
おき、この出現頻度から求めた各文字毎の出現確率を累
算した値が所定値以上となる文字列の全てを登録した辞
書を作成する。
式によれば、ある入力文字列を符号化する際には、符号
化に先だって入力文字列の各文字の出現頻度を計数して
おき、この出現頻度から求めた各文字毎の出現確率を累
算した値が所定値以上となる文字列の全てを登録した辞
書を作成する。
【0026】このように各文字の出現頻度から等確率と
なる全文字列を生成することで、確率モデルにあった無
駄のない辞書が作成できる。そして作成した辞書を参照
しながら入力文字列に最大長一致する辞書中の文字列を
検索して、その識別番号を符号語として出力する増分分
解型ジブ−レンペル符号化(LZW符号化)を行うこと
により、辞書の検索を高速に処理でき、最大一致長文字
列を示す識別番号が小さいので符号語のビット数が低減
でき、高圧縮率が得られる。
なる全文字列を生成することで、確率モデルにあった無
駄のない辞書が作成できる。そして作成した辞書を参照
しながら入力文字列に最大長一致する辞書中の文字列を
検索して、その識別番号を符号語として出力する増分分
解型ジブ−レンペル符号化(LZW符号化)を行うこと
により、辞書の検索を高速に処理でき、最大一致長文字
列を示す識別番号が小さいので符号語のビット数が低減
でき、高圧縮率が得られる。
【0027】
【実施例】図2は本発明の一実施例を示した実施例構成
図である。図2において、20はCPUであり、CPU
20に対してはプログラムメモリ22とデータメモリ3
8が接続される。プログラムメモリ22には、コントロ
ールソフト24、入力文字列に最大長一致する辞書10
中の文字列を検索して識別番号を符号語として出力する
符号化ソフト26、入力文字列中の各文字の出現頻度を
計数し、出現頻度から推定した出現確率の累算値が予め
定めた一定値となる全ての文字列を登録格納した辞書1
0を作成する辞書作成ソフト28、辞書作成の際に使用
する文字毎の出現頻度を格納する出現頻度カウントテー
ブル30、文字の出現総数を格納する出現総数カウント
テーブル34、更に出現頻度と出現総数から求めた文字
毎の出現確率を格納する出現確率格納テーブル36を備
える。
図である。図2において、20はCPUであり、CPU
20に対してはプログラムメモリ22とデータメモリ3
8が接続される。プログラムメモリ22には、コントロ
ールソフト24、入力文字列に最大長一致する辞書10
中の文字列を検索して識別番号を符号語として出力する
符号化ソフト26、入力文字列中の各文字の出現頻度を
計数し、出現頻度から推定した出現確率の累算値が予め
定めた一定値となる全ての文字列を登録格納した辞書1
0を作成する辞書作成ソフト28、辞書作成の際に使用
する文字毎の出現頻度を格納する出現頻度カウントテー
ブル30、文字の出現総数を格納する出現総数カウント
テーブル34、更に出現頻度と出現総数から求めた文字
毎の出現確率を格納する出現確率格納テーブル36を備
える。
【0028】一方、データメモリ38内には辞書10と
データバッファ40の各メモリ領域が確保され、辞書1
0には辞書作成ソフト28で作成された文字列がその識
別番号とともに登録される。図3は本発明による符号化
処理手順を示したフローチャートであり、0重マルコフ
・モデルと呼ばれる出現頻度に以前の文字の履歴を考え
ない最も簡単な場合の符号化を示す。
データバッファ40の各メモリ領域が確保され、辞書1
0には辞書作成ソフト28で作成された文字列がその識
別番号とともに登録される。図3は本発明による符号化
処理手順を示したフローチャートであり、0重マルコフ
・モデルと呼ばれる出現頻度に以前の文字の履歴を考え
ない最も簡単な場合の符号化を示す。
【0029】[ステップS1]カーソルをデータバッフ
ァ40から得た辞書作成に使用するデータの先頭の位置
に置く。文字jが出現する頻度を計数するカウンタfreq
(i) を全て1に初期化する。例えばアルファベット26
文字を例にとると、freq(1) 〜freq(26)の出現頻度計数
カウンタが準備される。
ァ40から得た辞書作成に使用するデータの先頭の位置
に置く。文字jが出現する頻度を計数するカウンタfreq
(i) を全て1に初期化する。例えばアルファベット26
文字を例にとると、freq(1) 〜freq(26)の出現頻度計数
カウンタが準備される。
【0030】[ステップS2]辞書を作成して展開す
る。まず、各文字iの出現頻度freq(i) を求め、同時に
出現の総数Tを として求める。続いて各文字の出現確率p(i) を として求める。次に辞書サイズに関する定数Cを予め定
めておき、 p(x1) p(x2) ・・・p(xn) ≧C (xi=1,2,・・・A) (3) となる全ての文字列、即ち文字列を構成する各文字の出
現確率の累算値が所定値以上となる文字列の全てを辞書
に登録する。
る。まず、各文字iの出現頻度freq(i) を求め、同時に
出現の総数Tを として求める。続いて各文字の出現確率p(i) を として求める。次に辞書サイズに関する定数Cを予め定
めておき、 p(x1) p(x2) ・・・p(xn) ≧C (xi=1,2,・・・A) (3) となる全ての文字列、即ち文字列を構成する各文字の出
現確率の累算値が所定値以上となる文字列の全てを辞書
に登録する。
【0031】[ステップS3]辞書検索を行う。即ち、
カーソルの位置からの入力文字列に一致する辞書10中
に登録された最長文字列Sを見つける。 [ステップS4]最長文字列Sの識別番号を辞書登録数
nのlog2 n以上の最小の整数を意味する「log2
n」ビット(可変長符号)で表して出力する。
カーソルの位置からの入力文字列に一致する辞書10中
に登録された最長文字列Sを見つける。 [ステップS4]最長文字列Sの識別番号を辞書登録数
nのlog2 n以上の最小の整数を意味する「log2
n」ビット(可変長符号)で表して出力する。
【0032】[ステップS5]符号化した入力文字列の
中の全ての文字iについてカウンタfreq(i) を1つイン
クリメントする。 [ステップS6]符号化した入力文字列Sのカーソルの
最初の文字Cとおき、カーソルは文字列Sの後の文字に
移動させる。
中の全ての文字iについてカウンタfreq(i) を1つイン
クリメントする。 [ステップS6]符号化した入力文字列Sのカーソルの
最初の文字Cとおき、カーソルは文字列Sの後の文字に
移動させる。
【0033】[ステップS7]圧縮率の変化をチェック
し、もし、圧縮率が悪化していればステップS2に戻っ
て辞書を更新する。この場合の辞書10の更新にはステ
ップS5で符号化を行いながら計数している現在時点で
の出現頻度freq(i) を使用する。もし、圧縮率が悪化し
ていなければ、ステップS3に戻る。
し、もし、圧縮率が悪化していればステップS2に戻っ
て辞書を更新する。この場合の辞書10の更新にはステ
ップS5で符号化を行いながら計数している現在時点で
の出現頻度freq(i) を使用する。もし、圧縮率が悪化し
ていなければ、ステップS3に戻る。
【0034】図4は本発明で作成される辞書のツリー構
造を従来辞書と対比して示す。まず図4(a)は従来の
辞書構造を示したもので、図中の・・・は登録
順を示し、文字列の識別番号となる。例えば「aba
a」の文字列は、ツリーの葉の部分となる文字「a」に
付された識別番号27で表わされる。従来方式では符号
化が済んだ入力文字列の部分列は全て辞書に登録され、
高い頻度で出現する文字列ほど伸ばされたツリー構造と
なる。結果として辞書ツリーの葉に当たる各文字列の識
別番号「6,25,26,27,28,30,32,・
・・は出現頻度に応じた長さになる。
造を従来辞書と対比して示す。まず図4(a)は従来の
辞書構造を示したもので、図中の・・・は登録
順を示し、文字列の識別番号となる。例えば「aba
a」の文字列は、ツリーの葉の部分となる文字「a」に
付された識別番号27で表わされる。従来方式では符号
化が済んだ入力文字列の部分列は全て辞書に登録され、
高い頻度で出現する文字列ほど伸ばされたツリー構造と
なる。結果として辞書ツリーの葉に当たる各文字列の識
別番号「6,25,26,27,28,30,32,・
・・は出現頻度に応じた長さになる。
【0035】図4(b)は本発明により作成された辞書
のツリー構造を示したもので、文字列を構成する各文字
の出現確率の累積値が所定値以上となる文字列のみを辞
書に登録している。即ち、辞書に登録された文字列は全
てほぼ等確率で出現することとなり、出現確率の低い文
字列は辞書登録から排除されている。その結果、図4
(a)と対比して明らかなように辞書登録数を大幅に低
減することができ、辞書検索が高速ででき、辞書の登録
数で決まる識別番号を不要に大きくしなくてよいので少
ないビット数で符号語としての識別番号を表すことがで
き、高い圧縮率が得られる。
のツリー構造を示したもので、文字列を構成する各文字
の出現確率の累積値が所定値以上となる文字列のみを辞
書に登録している。即ち、辞書に登録された文字列は全
てほぼ等確率で出現することとなり、出現確率の低い文
字列は辞書登録から排除されている。その結果、図4
(a)と対比して明らかなように辞書登録数を大幅に低
減することができ、辞書検索が高速ででき、辞書の登録
数で決まる識別番号を不要に大きくしなくてよいので少
ないビット数で符号語としての識別番号を表すことがで
き、高い圧縮率が得られる。
【0036】また、辞書登録数が少なくとも出現確率の
高い文字列を登録しているので、最大一致長の検索によ
る符号化を従来とほぼ同等にできる。図5は各文字の出
現頻度の計数に1文字前の履歴を考慮した所謂1重マル
コフ・モデルを対象とした発明による符号化処理を示し
たフローチャートである。 [ステップS1]カーソルをデータの先頭の位置に置
く。文字jの後に文字iが出現する頻度を計数するカウ
ンタfreq(i,j) を全て1に初期化する。
高い文字列を登録しているので、最大一致長の検索によ
る符号化を従来とほぼ同等にできる。図5は各文字の出
現頻度の計数に1文字前の履歴を考慮した所謂1重マル
コフ・モデルを対象とした発明による符号化処理を示し
たフローチャートである。 [ステップS1]カーソルをデータの先頭の位置に置
く。文字jの後に文字iが出現する頻度を計数するカウ
ンタfreq(i,j) を全て1に初期化する。
【0037】[ステップS2]辞書を作成して展開す
る。まず、文字iの後に文字jが出現する頻度freq(i,
j) を求め、同時に出現の総数Tを として求める。続いて文字jの次に文字iがくる確率を として求める。次に辞書サイズに関する定数Cを予め定
めておき、 p(k)p(x1|k)p(x2|k)p(xN |xN-1 )≧C (6) となる全ての文字列、即ち文字列を構成する各文字の出
現確率の累算値が所定値以上となる文字列の全てを辞書
に登録する。尚、(6)式の先頭文字kについては単独
の出現確率を使用する。
る。まず、文字iの後に文字jが出現する頻度freq(i,
j) を求め、同時に出現の総数Tを として求める。続いて文字jの次に文字iがくる確率を として求める。次に辞書サイズに関する定数Cを予め定
めておき、 p(k)p(x1|k)p(x2|k)p(xN |xN-1 )≧C (6) となる全ての文字列、即ち文字列を構成する各文字の出
現確率の累算値が所定値以上となる文字列の全てを辞書
に登録する。尚、(6)式の先頭文字kについては単独
の出現確率を使用する。
【0038】[ステップS3]辞書を検索する。カーソ
ルの位置からの入力文字列に一致する辞書に登録された
最大長一致する文字列Sを見つける。 [ステップS4]文字列Sの識別番号を「log2 n」
ビットで表して出力する。
ルの位置からの入力文字列に一致する辞書に登録された
最大長一致する文字列Sを見つける。 [ステップS4]文字列Sの識別番号を「log2 n」
ビットで表して出力する。
【0039】[ステップS5]前文字rを含む文字列S
中の全ての2個の文字列ijについてカウンタfreq(i,
j) を1つインクリメントする。 [ステップS6]文字列Sのカーソルの最初の文字Cと
し、文字列Sの最終文字をrとおく。カーソルは文字列
の後の文字に移動させる。
中の全ての2個の文字列ijについてカウンタfreq(i,
j) を1つインクリメントする。 [ステップS6]文字列Sのカーソルの最初の文字Cと
し、文字列Sの最終文字をrとおく。カーソルは文字列
の後の文字に移動させる。
【0040】[ステップS7]圧縮率の変化をチェック
し、もし、圧縮率が悪化していればステップS2に戻っ
て辞書を更新する。もし、圧縮率が悪化していなければ
ステップS3に戻る。図6は一文字前の履歴を考慮した
場合の別の実施例を示したフローチャートである。
し、もし、圧縮率が悪化していればステップS2に戻っ
て辞書を更新する。もし、圧縮率が悪化していなければ
ステップS3に戻る。図6は一文字前の履歴を考慮した
場合の別の実施例を示したフローチャートである。
【0041】この図6の実施例にあっては、図7に示す
ように、例えば文字a,b,cで始まる複数の辞書10
−1,10−2,10−3を作成し、直前文字列の最終
文字rで辞書10−1,10−2,10−3のいずれか
を選択し、選択した辞書を使用して符号化を行う。図6
の処理が図5の処理と異なるところは次のである。
ように、例えば文字a,b,cで始まる複数の辞書10
−1,10−2,10−3を作成し、直前文字列の最終
文字rで辞書10−1,10−2,10−3のいずれか
を選択し、選択した辞書を使用して符号化を行う。図6
の処理が図5の処理と異なるところは次のである。
【0042】ステップS2で直前文字列の最終文字をr
とし、 p(x1|r) p(x2 |x1) ・・・p(xN |xN-1 ) ≧Cr (7) 但し、r,xi=1,2,3,・・・,A となる全ての文字列を各辞書Dr に登録する。ただし、
定数Cr は辞書Dr のサイズに関する定数であり、最終
文字rの出現確率p(r)の大きさに比例させてとると
効率が良い。
とし、 p(x1|r) p(x2 |x1) ・・・p(xN |xN-1 ) ≧Cr (7) 但し、r,xi=1,2,3,・・・,A となる全ての文字列を各辞書Dr に登録する。ただし、
定数Cr は辞書Dr のサイズに関する定数であり、最終
文字rの出現確率p(r)の大きさに比例させてとると
効率が良い。
【0043】また、ステップS3においてカーソルの位
置からの文字列に一致する辞書Dr登録の最長文字列S
を見つける共に、ステップS4で文字列Sの識別番号を
「log2 nr 」ビットで表して出力する。ただし、n
r は辞書Dr の登録数である。尚、上記の実施例では、
ステップS1で出現頻度計数カウンタfreq(i) 、freq
(i,j) を全て1に初期化した状態から始めたが、これは
予め入力文字列の統計的性質を推定した初期値を設定す
るようにしても良い。
置からの文字列に一致する辞書Dr登録の最長文字列S
を見つける共に、ステップS4で文字列Sの識別番号を
「log2 nr 」ビットで表して出力する。ただし、n
r は辞書Dr の登録数である。尚、上記の実施例では、
ステップS1で出現頻度計数カウンタfreq(i) 、freq
(i,j) を全て1に初期化した状態から始めたが、これは
予め入力文字列の統計的性質を推定した初期値を設定す
るようにしても良い。
【0044】また、ステップS4において、識別番号を
「log2 n」ビットまたは、「log2 nr 」ビット
で表したが、識別番号をビット端数補償、Phasing in B
inary Codes 或いは多値算術符号で表しても良い。更
に、ステップS7において、辞書の更新を圧縮率の悪化
によって判断したが、これは各文字の出現頻度の計数値
の傾向の変化によって判定しても良い。
「log2 n」ビットまたは、「log2 nr 」ビット
で表したが、識別番号をビット端数補償、Phasing in B
inary Codes 或いは多値算術符号で表しても良い。更
に、ステップS7において、辞書の更新を圧縮率の悪化
によって判断したが、これは各文字の出現頻度の計数値
の傾向の変化によって判定しても良い。
【0045】
【発明の効果】本発明のデータ圧縮方式によれば、各文
字の平均的な出現確率に基づく文字列のみ辞書へ登録さ
れるので、符号化効率を上げることができる。また、符
号化処理は従来の増分分解型ジブ−レンペル符号と同様
に入力文字列と辞書登録列の照合によって行えるので、
高速で実行することができる。
字の平均的な出現確率に基づく文字列のみ辞書へ登録さ
れるので、符号化効率を上げることができる。また、符
号化処理は従来の増分分解型ジブ−レンペル符号と同様
に入力文字列と辞書登録列の照合によって行えるので、
高速で実行することができる。
【図1】本発明の原理説明図
【図2】本発明の実施例構成図
【図3】本発明の辞書作成を伴う基本的な符号化処理を
示したフローチャート
示したフローチャート
【図4】本発明により作成された辞書のツリー構造を従
来方式の辞書と対比して示した説明図
来方式の辞書と対比して示した説明図
【図5】1文字前の履歴を考慮した本発明の符号化処理
を示したフローチャート
を示したフローチャート
【図6】1文字前の履歴を考慮した本発明の符号化処理
の他の実施例を示したフローチャート
の他の実施例を示したフローチャート
【図7】図6の処理で作成される辞書の説明図
【図8】従来のLZW符号化アルゴリズムを示したフロ
ーチャート
ーチャート
【図9】従来の算術符号化の符号化及び復号化アルゴリ
ズムの説明図
ズムの説明図
【図10】従来の履歴なしの多値算術符号化処理を示し
たフローチャート
たフローチャート
【図11】従来の1重履歴の場合の多値算術符号化処理
を示したフローチャート
を示したフローチャート
10,10−1,10−2,10−3:辞書
12:辞書作成手段
14:符号化部
20CPU
22:プログラムメモリ
24:コントロールソフト
26:符号化ソフト
28:辞書作成ソフト
30:出現頻度カウントテーブル
34:出現総数カウントテーブル
36:出現確率格納テーブル
38:データメモリ
40:データバッファ
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 千葉 広隆
神奈川県川崎市中原区上小田中1015番地
富士通株式会社内
Claims (5)
- 【請求項1】入力文字列中の各文字の出現頻度を計数
し、該出現頻度から推定した出現確率の累算値が予め定
めた一定値となる全ての文字列を登録格納した辞書10
を作成する辞書作成手段12と、 入力文字列を前記辞書10内の最大長一致する文字列の
辞書登録番号で表わして圧縮符号化する符号化部14
と、 を備えたことを特徴とするデータ圧縮方式。 - 【請求項2】請求項1記載のデータ圧縮方式に於いて、 前記辞書作成手段12は、入力文字列中の各文字の条件
付出現頻度を計数し、該条件付出現頻度から推定した条
件付出現確率の累算値が予め定めた一定値となる全ての
文字列を格納登録した辞書10を作成することを特徴と
するデータ圧縮方式。 - 【請求項3】請求項2記載のデータ圧縮方式に於いて、 前記辞書作成手段12は、入力文字列中のある文字iの
次に他の文字jが出現する条件付き出現頻度を計数し、
該条件付出現頻度から推定した条件付出現確率の累算値
が予め定めた一定値となる全ての文字列を格納登録した
辞書10を作成することを特徴とするデータ圧縮方式。 - 【請求項4】請求項2記載のデータ圧縮方式に於いて、 前記辞書作成手段12は、特定文字rで終る直前文字列
を仮定して該特定文字rから始まる入力文字列中の各文
字の条件付出現頻度を計数し、前記条件付出現頻度から
推定した特定の文字から始まる条件付出現確率の累算値
が予め定めた一定値となる全ての文字列を特定文字r毎
に分けて作成した分割辞書に登録することを特徴とする
データ圧縮方式。 - 【請求項5】請求項1記載のデータ圧縮方式に於いて、 前記符号化部14は、入力文字列を符号化しながら各文
字の出現頻度を計数すると共に符号化に対する前記辞書
10の適合の度合いを判定し、適合する場合はそのまま
符号化を続け、不適合の場合は不適合と判定した際に得
られている各文字の出現頻度に基づいて前記辞書作成手
段12に辞書10の作成し直しを指示することを特徴と
するデータ圧縮方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17909791A JP2954749B2 (ja) | 1991-07-19 | 1991-07-19 | データ圧縮方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17909791A JP2954749B2 (ja) | 1991-07-19 | 1991-07-19 | データ圧縮方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0527943A true JPH0527943A (ja) | 1993-02-05 |
JP2954749B2 JP2954749B2 (ja) | 1999-09-27 |
Family
ID=16059994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP17909791A Expired - Fee Related JP2954749B2 (ja) | 1991-07-19 | 1991-07-19 | データ圧縮方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2954749B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3770919B2 (ja) * | 1997-10-21 | 2006-04-26 | 富士通株式会社 | ファイル処理方法、データ処理装置及び記憶媒体 |
WO2011105463A1 (ja) * | 2010-02-23 | 2011-09-01 | 日本電気株式会社 | データ圧縮装置、データ圧縮方法およびプログラム記憶媒体 |
JP2014204357A (ja) * | 2013-04-08 | 2014-10-27 | 日本電信電話株式会社 | サンプル文字列辞書作成方法及び装置 |
JP2014204358A (ja) * | 2013-04-08 | 2014-10-27 | 日本電信電話株式会社 | 文字列圧縮における階層型サンプル文字列辞書作成方法及び装置 |
-
1991
- 1991-07-19 JP JP17909791A patent/JP2954749B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3770919B2 (ja) * | 1997-10-21 | 2006-04-26 | 富士通株式会社 | ファイル処理方法、データ処理装置及び記憶媒体 |
WO2011105463A1 (ja) * | 2010-02-23 | 2011-09-01 | 日本電気株式会社 | データ圧縮装置、データ圧縮方法およびプログラム記憶媒体 |
JP2014204357A (ja) * | 2013-04-08 | 2014-10-27 | 日本電信電話株式会社 | サンプル文字列辞書作成方法及び装置 |
JP2014204358A (ja) * | 2013-04-08 | 2014-10-27 | 日本電信電話株式会社 | 文字列圧縮における階層型サンプル文字列辞書作成方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2954749B2 (ja) | 1999-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5229768A (en) | Adaptive data compression system | |
US5049881A (en) | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique | |
JP3238854B2 (ja) | データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置 | |
EP0695040B1 (en) | Data compressing method and data decompressing method | |
US5585793A (en) | Order preserving data translation | |
JPS6356726B2 (ja) | ||
JPH05241777A (ja) | データ圧縮方式 | |
JPH08167852A (ja) | データ圧縮方法及び装置 | |
Pandey et al. | An enhanced data compression algorithm | |
JP2954749B2 (ja) | データ圧縮方式 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JP3130324B2 (ja) | データ圧縮方式 | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
JPH05241775A (ja) | データ圧縮方式 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JP3384813B2 (ja) | データ圧縮方式 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JPH05134847A (ja) | データ圧縮方法 | |
JPH06202844A (ja) | データ圧縮復元処理装置 | |
JPH05224878A (ja) | ユニバーサル符号を用いたデータ圧縮方式 | |
JP3388767B2 (ja) | データ圧縮方式 | |
JP3117760B2 (ja) | データ復元方式 | |
JP3012677B2 (ja) | Zl符号化方法 | |
JPH04280517A (ja) | データ圧縮および復元方式 | |
JPH05250136A (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: 19990622 |
|
LAPS | Cancellation because of no payment of annual fees |