JPH04256192A - データ圧縮復元方式 - Google Patents
データ圧縮復元方式Info
- Publication number
- JPH04256192A JPH04256192A JP1766491A JP1766491A JPH04256192A JP H04256192 A JPH04256192 A JP H04256192A JP 1766491 A JP1766491 A JP 1766491A JP 1766491 A JP1766491 A JP 1766491A JP H04256192 A JPH04256192 A JP H04256192A
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- character
- code
- character string
- data
- 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
- 238000013144 data compression Methods 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 71
- 238000007906 compression Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000000354 decomposition reaction Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 2
- 241000287227 Fringillidae Species 0.000 description 1
- 101000880310 Homo sapiens SH3 and cysteine-rich domain-containing protein Proteins 0.000 description 1
- 102100037646 SH3 and cysteine-rich domain-containing protein Human genes 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
Landscapes
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明はデータの符号化方式や復
号化方式に係り、さらに詳しくは符号化によってデータ
を圧縮するデータ圧縮方式に係る。また、このデータ圧
縮方式によって圧縮されたデータを復元するデータ復元
方式に関する。
号化方式に係り、さらに詳しくは符号化によってデータ
を圧縮するデータ圧縮方式に係る。また、このデータ圧
縮方式によって圧縮されたデータを復元するデータ復元
方式に関する。
【0002】
【従来の技術】近年、OA化の発展、更にはCPUの処
理技術の向上により、カラーや白黒階調画像情報等のデ
ータベースを計算機で扱うことが増えてきている。これ
らの画像情報のデータ量は1枚(1画面)あたり数Mバ
イトになり非常に大きいものである。このため蓄積や伝
送等における画像情報を効率良く扱うため、データ圧縮
を行って記憶すべきデータ量を減らしている。
理技術の向上により、カラーや白黒階調画像情報等のデ
ータベースを計算機で扱うことが増えてきている。これ
らの画像情報のデータ量は1枚(1画面)あたり数Mバ
イトになり非常に大きいものである。このため蓄積や伝
送等における画像情報を効率良く扱うため、データ圧縮
を行って記憶すべきデータ量を減らしている。
【0003】データ圧縮には様々な方式があるが、その
一方式としてユニバーサル符号化がある。なお、本発明
は文字コードの圧縮に限らず様々なデータに適用できる
が、以下では説明のため情報理論の分野で呼称されてい
るデータの1ワード単位を文字、データが複数ワードつ
ながったものを文字列と呼ぶ。
一方式としてユニバーサル符号化がある。なお、本発明
は文字コードの圧縮に限らず様々なデータに適用できる
が、以下では説明のため情報理論の分野で呼称されてい
るデータの1ワード単位を文字、データが複数ワードつ
ながったものを文字列と呼ぶ。
【0004】前述のユニバーサル符号化の代表的な方法
として、Ziv−Lempel符号がある(詳しくは、
例えば、宗像『Ziv−Lempelのデータ圧縮法』
、情報処理、Vol .26、No.1,1985年を
参照のこと)。このZiv−Lempel符号では■ユ
ニバーサル型と、■増分分解型(Incrementa
l parsing)の2つのアルゴリズムが提案され
ている。
として、Ziv−Lempel符号がある(詳しくは、
例えば、宗像『Ziv−Lempelのデータ圧縮法』
、情報処理、Vol .26、No.1,1985年を
参照のこと)。このZiv−Lempel符号では■ユ
ニバーサル型と、■増分分解型(Incrementa
l parsing)の2つのアルゴリズムが提案され
ている。
【0005】ユニバーサル型のアルゴリズムは、演算量
が多いが、高圧縮率が得られるという特徴を有している
。この方式は、符号化データを過去のデータ系列の任意
の位置から一致する最大長の系列に区切り(部分列)、
過去の系列の複製として符号化する方法である。 図6に示す如くPバッファとQバッファとが設けられ、
Pバッファに符号化済みの入力データを格納し、Qバッ
ファにこれから符号化するデータを格納する。そして、
Qバッファの系列はPバッファの系列をサーチし、Pバ
ッファ中で一致する最大長の部分列を求める。そして、
Pバッファ中でこの最大部分列を指定するための情報の
組を符号化する。
が多いが、高圧縮率が得られるという特徴を有している
。この方式は、符号化データを過去のデータ系列の任意
の位置から一致する最大長の系列に区切り(部分列)、
過去の系列の複製として符号化する方法である。 図6に示す如くPバッファとQバッファとが設けられ、
Pバッファに符号化済みの入力データを格納し、Qバッ
ファにこれから符号化するデータを格納する。そして、
Qバッファの系列はPバッファの系列をサーチし、Pバ
ッファ中で一致する最大長の部分列を求める。そして、
Pバッファ中でこの最大部分列を指定するための情報の
組を符号化する。
【0006】更に、ユニバーサル型アルゴリズムの改良
としてLZSS符号がある。(T.C.Bell, “
Better OPM/L Text Compres
sion ”,IEEE Trans. on Com
mun., Vol.COM−34,No.12, D
ec.1986参照) 。このLZSS符号では図5A
に示す如くPバッファ中の最大一致系列の開始位置を求
め、一致する長さの組と、次のシンボルとをフラグで区
別して符号量の少ない方で符号化するものである。
としてLZSS符号がある。(T.C.Bell, “
Better OPM/L Text Compres
sion ”,IEEE Trans. on Com
mun., Vol.COM−34,No.12, D
ec.1986参照) 。このLZSS符号では図5A
に示す如くPバッファ中の最大一致系列の開始位置を求
め、一致する長さの組と、次のシンボルとをフラグで区
別して符号量の少ない方で符号化するものである。
【0007】一方、増分分解型アルゴリズムは、圧縮率
ではユニバーサル型より劣るが、シンプルで計算も容易
であるという特徴を有している。増分分解型Ziv−L
empel符号では、入力シンボルの系列をx=aab
ababaa・・・とすると、成分系列x=X0 X1
X2 ・・・への増分分解は次のようにしている。先
ずX1 を既成分の右端のシンボルを取り除いた最長の
列とし、X=a・ab・aba・b・aa・・・として
いる。従って、X0 =λ(空列)、X1 =X0 a
,X2 =X1 b,X3 =X2 a,X4 =X0
b,X5 =X1 a,・・・・と分解できる。
ではユニバーサル型より劣るが、シンプルで計算も容易
であるという特徴を有している。増分分解型Ziv−L
empel符号では、入力シンボルの系列をx=aab
ababaa・・・とすると、成分系列x=X0 X1
X2 ・・・への増分分解は次のようにしている。先
ずX1 を既成分の右端のシンボルを取り除いた最長の
列とし、X=a・ab・aba・b・aa・・・として
いる。従って、X0 =λ(空列)、X1 =X0 a
,X2 =X1 b,X3 =X2 a,X4 =X0
b,X5 =X1 a,・・・・と分解できる。
【0008】増分分解した各成分系列は既成分系列を用
いて、図5Bに示すごとく各成分のでた順番に成分のイ
ンデックスと次のシンボルを用いて符号化している。す
なわち増分分解型アルゴリズムは、符号化パターンにつ
いて、過去に分解した部分列の内最大長を意識するもの
を求め、過去に分解した部分列の複製として符号化する
ものである。
いて、図5Bに示すごとく各成分のでた順番に成分のイ
ンデックスと次のシンボルを用いて符号化している。す
なわち増分分解型アルゴリズムは、符号化パターンにつ
いて、過去に分解した部分列の内最大長を意識するもの
を求め、過去に分解した部分列の複製として符号化する
ものである。
【0009】さらに、前述の増分分解型アルゴリズムの
改良として、LZW符号がある。(T.A. Welc
h, “A Technique for High−
Performance Data Compress
ion”,Computer, June 1984参
照)。このLZW符号では、次のシンボルを次の部分列
に組み込むようにしてインデックススのみで符号化でき
るようにしている。
改良として、LZW符号がある。(T.A. Welc
h, “A Technique for High−
Performance Data Compress
ion”,Computer, June 1984参
照)。このLZW符号では、次のシンボルを次の部分列
に組み込むようにしてインデックススのみで符号化でき
るようにしている。
【0010】図7は従来のLZW符号化による処理フロ
ー図である。LZW符号化処理においては、書き換え可
能な辞書を有し、入力文字列を相異なる文字列(部分列
)に分け、この文字列を出現した順に参照番号を付けて
辞書に登録するとともに、現在入力している文字列を辞
書に登録してある最長一致文字列の参照番号で表わして
符号化するものである。
ー図である。LZW符号化処理においては、書き換え可
能な辞書を有し、入力文字列を相異なる文字列(部分列
)に分け、この文字列を出現した順に参照番号を付けて
辞書に登録するとともに、現在入力している文字列を辞
書に登録してある最長一致文字列の参照番号で表わして
符号化するものである。
【0011】先ず、処理S1で予め辞書に全文字につき
1文字からなる文字列を初期値として登録してから後述
する符号化を始める。また、処理S1では入力した最初
の文字Kにより辞書を検索して最小番号ωを求め、これ
を語頭文字列とする。続いて処理S2で入力データの次
の文字Kを読み込み、処理S3で全ての文字入力が終了
したか否かをチェックする。入力文字が存在する、すな
わち文字Kが存在する時(Y)には語頭文字列ωに処理
S2で読み込んだ文字Kを加えた文字列(ωK)が辞書
に存在するか否かを求める。
1文字からなる文字列を初期値として登録してから後述
する符号化を始める。また、処理S1では入力した最初
の文字Kにより辞書を検索して最小番号ωを求め、これ
を語頭文字列とする。続いて処理S2で入力データの次
の文字Kを読み込み、処理S3で全ての文字入力が終了
したか否かをチェックする。入力文字が存在する、すな
わち文字Kが存在する時(Y)には語頭文字列ωに処理
S2で読み込んだ文字Kを加えた文字列(ωK)が辞書
に存在するか否かを求める。
【0012】判別処理S4で文字列(ωK)が辞書に存
在しなければ(N)、処理S6によって処理1で求めた
文字Kの参照番号ωを符号語code(ω)として出力
し、また文字列(ωK)を新たな参照番号として辞書に
登録し、更に処理S2の入力文字Kを参照番号ωに置き
換えると共に辞書アドレスnをインクリメントして再度
処理S2より実行する。
在しなければ(N)、処理S6によって処理1で求めた
文字Kの参照番号ωを符号語code(ω)として出力
し、また文字列(ωK)を新たな参照番号として辞書に
登録し、更に処理S2の入力文字Kを参照番号ωに置き
換えると共に辞書アドレスnをインクリメントして再度
処理S2より実行する。
【0013】一方、処理S4で文字列(ωK)が辞書に
存在する時(Y)には、文字列(ωK)を参照番号ωに
置き換え(S5)、再び処理S2に戻って処理S4にお
いて文字列ωKが辞書から探せなくなるまで最大一致長
の検索を続ける。
存在する時(Y)には、文字列(ωK)を参照番号ωに
置き換え(S5)、再び処理S2に戻って処理S4にお
いて文字列ωKが辞書から探せなくなるまで最大一致長
の検索を続ける。
【0014】また、文字Kが判別処理S3において存在
しないと判別した時(N)には処理S7によってcod
e(ω)を出力し終了(END)する。前述した処理を
図9,10を参照して具体的に説明する。
しないと判別した時(N)には処理S7によってcod
e(ω)を出力し終了(END)する。前述した処理を
図9,10を参照して具体的に説明する。
【0015】図9の入力データINPUT SYMBO
LS は左から右へと順次読む。最初の文字aを入力し
た時、辞書にはaの他に一致する文字列がないので、O
UTPUT CODE 1(参照番号ω)を符号語とし
て出力する。そして、拡張した文字列abに参照番号4
を付けて辞書に登録する。 実際の辞書登録は図10の右側(ALTERNATE
TABLE )に示すように文字列1bとして登録する
。続いて2番目の文字bが文字列の先頭になる。辞書に
はbの他に一致する文字がないので参照番号2を符号文
字として出力し、同時に拡張した文字列baも辞書にな
いので文字列baを2aで表わし、参照番号5を付けて
辞書に登録する。 そして3番目のaが次の文字列の先頭になる。以下同様
にこの処理を続ける。
LS は左から右へと順次読む。最初の文字aを入力し
た時、辞書にはaの他に一致する文字列がないので、O
UTPUT CODE 1(参照番号ω)を符号語とし
て出力する。そして、拡張した文字列abに参照番号4
を付けて辞書に登録する。 実際の辞書登録は図10の右側(ALTERNATE
TABLE )に示すように文字列1bとして登録する
。続いて2番目の文字bが文字列の先頭になる。辞書に
はbの他に一致する文字がないので参照番号2を符号文
字として出力し、同時に拡張した文字列baも辞書にな
いので文字列baを2aで表わし、参照番号5を付けて
辞書に登録する。 そして3番目のaが次の文字列の先頭になる。以下同様
にこの処理を続ける。
【0016】図8は図7の復号化処理によって求めた圧
縮データの復号化処理のフローチャートである。図8の
LZW復号化処理においては、符号化と同様に予め辞書
に全文字につき1文字からなる文字列を初期値として登
録してから復号を始める。
縮データの復号化処理のフローチャートである。図8の
LZW復号化処理においては、符号化と同様に予め辞書
に全文字につき1文字からなる文字列を初期値として登
録してから復号を始める。
【0017】先ず処理S11で最初の符号(参照番号)
を読み込み、現在のCODEをOLDcodeとし、最
初の符号は既に辞書に登録された1文字の参照番号いず
れかに該当することから、入力符号CODEに一致する
文字code(K)を探し出し、文字Kを出力する。な
お、出力した文字Kは後の例外処理のためFINcha
rにセットする。
を読み込み、現在のCODEをOLDcodeとし、最
初の符号は既に辞書に登録された1文字の参照番号いず
れかに該当することから、入力符号CODEに一致する
文字code(K)を探し出し、文字Kを出力する。な
お、出力した文字Kは後の例外処理のためFINcha
rにセットする。
【0018】次に処理S12において、次の符号を読み
込んでCODEをINcodeとしてセットする。続い
て新たな符号があるか否かを判別(S13)し、新たな
符号がない時(N)には終了(END)する。また、存
在する時(Y)には処理S13で入力した符号CODE
が辞書に定義されているか否かをチェックする(S14
)。 通常入力した符号語は前回までの処理で辞書に登録され
ているため、続いて符号CODEに対する文字列cod
e(ωK)を辞書から読み出し、文字Kを一時的にスタ
ック(S16)し、参照番号code(ω)を新たな符
号CODEとして再度処理S15より実行する。この処
理S15、S16の手順を再帰的に参照番号ωが1文字
Kに至るまで繰り返し最後に処理S17において処理S
16でスタックした文字をLIFO(Last InF
ast Out) 形式でポップアップして出力する。 また同時に前回使用した符号ωと今回復元した文字列の
最初の1文字Kを組(ω,K)と表わした文字列に、新
たな参照番号として辞書に登録する。
込んでCODEをINcodeとしてセットする。続い
て新たな符号があるか否かを判別(S13)し、新たな
符号がない時(N)には終了(END)する。また、存
在する時(Y)には処理S13で入力した符号CODE
が辞書に定義されているか否かをチェックする(S14
)。 通常入力した符号語は前回までの処理で辞書に登録され
ているため、続いて符号CODEに対する文字列cod
e(ωK)を辞書から読み出し、文字Kを一時的にスタ
ック(S16)し、参照番号code(ω)を新たな符
号CODEとして再度処理S15より実行する。この処
理S15、S16の手順を再帰的に参照番号ωが1文字
Kに至るまで繰り返し最後に処理S17において処理S
16でスタックした文字をLIFO(Last InF
ast Out) 形式でポップアップして出力する。 また同時に前回使用した符号ωと今回復元した文字列の
最初の1文字Kを組(ω,K)と表わした文字列に、新
たな参照番号として辞書に登録する。
【0019】図11を参照してLZW復号化処理を具体
的に説明する。最初の入力符号(INPUT COD
E)は1であり、1文字a,b,cについては既に参照
番号1,2,3として図11に示す如く辞書に登録され
ている。よって辞書の参照により符号1に一致する参照
番号の文字列aに置き換えて出力する。次の符号2につ
いても同様にし、文字bに置き換えて出力する。この時
前回処理した符号1と今回復号した最初の1文字bとを
組み合わせた文字列(1b)に新たな参照番号4を付加
して辞書に登録する。
的に説明する。最初の入力符号(INPUT COD
E)は1であり、1文字a,b,cについては既に参照
番号1,2,3として図11に示す如く辞書に登録され
ている。よって辞書の参照により符号1に一致する参照
番号の文字列aに置き換えて出力する。次の符号2につ
いても同様にし、文字bに置き換えて出力する。この時
前回処理した符号1と今回復号した最初の1文字bとを
組み合わせた文字列(1b)に新たな参照番号4を付加
して辞書に登録する。
【0020】3番目の符号4は辞書の検索により求めた
文字列1bから文字列abと置き換えて文字列abを出
力する。同時に前回処理した符号2と今回復号した文字
列の1番目の文字aとの組み合わせた文字列2a(=b
a)に新たな参照番号5を付加して辞書に登録する。そ
して以下同様に繰り返すことにより復号がなされる。
文字列1bから文字列abと置き換えて文字列abを出
力する。同時に前回処理した符号2と今回復号した文字
列の1番目の文字aとの組み合わせた文字列2a(=b
a)に新たな参照番号5を付加して辞書に登録する。そ
して以下同様に繰り返すことにより復号がなされる。
【0021】図11のLZW復号化においては次の例外
処理がある。この例外処理は例えば第6番目の入力符号
8の復号にて生ずる。復号8は復号時に辞書に定義され
ておらず復号できない。この場合には前回処理した符号
5に前回復号した文字列baの最初の1文字bを加えた
文字列5bを求め、更に2ab=babと置き換えて出
力する例外処理を行う。そして、文字列の出力後に前回
の符号5に今回復号した文字列の1番目の文字bを加え
た文字列5bに参照番号8を付加して辞書に登録する。
処理がある。この例外処理は例えば第6番目の入力符号
8の復号にて生ずる。復号8は復号時に辞書に定義され
ておらず復号できない。この場合には前回処理した符号
5に前回復号した文字列baの最初の1文字bを加えた
文字列5bを求め、更に2ab=babと置き換えて出
力する例外処理を行う。そして、文字列の出力後に前回
の符号5に今回復号した文字列の1番目の文字bを加え
た文字列5bに参照番号8を付加して辞書に登録する。
【0022】この例外処理は図7の復号化処理フローの
処理S4,S8によって行われ、最終的に処理S7で文
字列の出力と新たな文字列に参照番号を付加した辞書へ
の登録が行われる。
処理S4,S8によって行われ、最終的に処理S7で文
字列の出力と新たな文字列に参照番号を付加した辞書へ
の登録が行われる。
【0023】尚、図8,図11のLZW復号化において
は、復号側で符号を解読しながら辞書をリアルタイムで
作り出す場合を説明しているが、符号化の際に作られた
辞書をそのまま復号化側にコピーして使用することで、
復号化している場合もあり、この場合には復号側での例
外処理は不要になる。
は、復号側で符号を解読しながら辞書をリアルタイムで
作り出す場合を説明しているが、符号化の際に作られた
辞書をそのまま復号化側にコピーして使用することで、
復号化している場合もあり、この場合には復号側での例
外処理は不要になる。
【0024】
【発明が解決しようとする課題】前述した従来のLZW
符号においては、入力文字コード・データを相異なる文
字列に分けて符号化するとき、現在符号化中の各文字列
は以前の文字列とは独立に出現するとして符号化する形
式を用いている。しかしながら、従来の方式においては
、辞書が1つであるため、その再現する文字列を表わす
符号には冗長性を有し、圧縮率の低下を招いてた。しか
しながら、データの増加に伴い、さらに圧縮率の高い方
式が要求されている。
符号においては、入力文字コード・データを相異なる文
字列に分けて符号化するとき、現在符号化中の各文字列
は以前の文字列とは独立に出現するとして符号化する形
式を用いている。しかしながら、従来の方式においては
、辞書が1つであるため、その再現する文字列を表わす
符号には冗長性を有し、圧縮率の低下を招いてた。しか
しながら、データの増加に伴い、さらに圧縮率の高い方
式が要求されている。
【0025】本発明は圧縮率を高めたデータ圧縮方式と
その圧縮してデータを復元する復元方式を提供すること
を目的とする。
その圧縮してデータを復元する復元方式を提供すること
を目的とする。
【0026】
【課題を解決するための手段とその作用】本発明は第1
には符号化済データを相異なる部分列に分けて辞書に登
録しておき、入力データを前記辞書中の部分列のうちの
最大長と一致するものの番号で指定して符号化する方式
におけるものである。
には符号化済データを相異なる部分列に分けて辞書に登
録しておき、入力データを前記辞書中の部分列のうちの
最大長と一致するものの番号で指定して符号化する方式
におけるものである。
【0027】複数個設けた辞書に対して検索を行い、最
長の文字列を表わせる辞書を選択して、選択された辞書
の参照番号で指定して符号化する。入力文字に対して入
力文字の繰り返しを表わせる最長の文字列を辞書から参
照し、最長の文字列を表わせる辞書を選択し、その参照
番号で符号化する。復号時には選択した辞書がわかるの
で辞書の選択指示を必要とせず、高圧縮率をなすことが
できる。
長の文字列を表わせる辞書を選択して、選択された辞書
の参照番号で指定して符号化する。入力文字に対して入
力文字の繰り返しを表わせる最長の文字列を辞書から参
照し、最長の文字列を表わせる辞書を選択し、その参照
番号で符号化する。復号時には選択した辞書がわかるの
で辞書の選択指示を必要とせず、高圧縮率をなすことが
できる。
【0028】また、復号においては、複数個設けた辞書
に対して検索を行い、最長の文字列を復号できる辞書を
選択しその選択した辞書の参照番号から復号化を行う。 この時、上述の最長の文字列を復号できる辞書を選択す
るので上述したデータ圧縮時の辞書の指示を必要とせず
、圧縮における高効率化とそれによって圧縮したデータ
を復元することができる。
に対して検索を行い、最長の文字列を復号できる辞書を
選択しその選択した辞書の参照番号から復号化を行う。 この時、上述の最長の文字列を復号できる辞書を選択す
るので上述したデータ圧縮時の辞書の指示を必要とせず
、圧縮における高効率化とそれによって圧縮したデータ
を復元することができる。
【0029】
【実施例】以下、図面を用いて本発明を詳細に説明する
。本発明はデータ圧縮並びに復元方式におけるものであ
り、回路によって構成することも又プロセッサのソフト
ウェアによって処理を行うこともできる。以下ではプロ
セッサを用いた時のフローを用いて詳細に説明する。 図1は本発明による符号化方式の符号化アルゴリズムの
フローチャートである。本発明は複数(DN個)の各辞
書Di (i=1,・・・DN)に1文字からなる文字
列全種を初期値として予め登録する。そして各辞書の参
照番号の総数をn(i)で管理し、初期化のとき、DN
個のni (文字種+1)をセットする。1文字を入力
した時はLZW符号と手順は同様である。また従来のL
ZW符号では辞書は1個だけであったのに対して本発明
の実施例においては複数個の辞書に対して文字列の照合
を行い、一番長い文字列を符号化できた辞書の参照番号
を実際の符号化に使用している。使用された辞書DNo
への登録後は、DNoの参照番号数を管理するnNoが
1つインクリメントされる。この時文字列照合の結果文
字列の長さが同じ長さになった場合には、乱数により辞
書を決定する。
。本発明はデータ圧縮並びに復元方式におけるものであ
り、回路によって構成することも又プロセッサのソフト
ウェアによって処理を行うこともできる。以下ではプロ
セッサを用いた時のフローを用いて詳細に説明する。 図1は本発明による符号化方式の符号化アルゴリズムの
フローチャートである。本発明は複数(DN個)の各辞
書Di (i=1,・・・DN)に1文字からなる文字
列全種を初期値として予め登録する。そして各辞書の参
照番号の総数をn(i)で管理し、初期化のとき、DN
個のni (文字種+1)をセットする。1文字を入力
した時はLZW符号と手順は同様である。また従来のL
ZW符号では辞書は1個だけであったのに対して本発明
の実施例においては複数個の辞書に対して文字列の照合
を行い、一番長い文字列を符号化できた辞書の参照番号
を実際の符号化に使用している。使用された辞書DNo
への登録後は、DNoの参照番号数を管理するnNoが
1つインクリメントされる。この時文字列照合の結果文
字列の長さが同じ長さになった場合には、乱数により辞
書を決定する。
【0030】さらにその処理を詳細に説明する。入力バ
ッファに圧縮すべきデータが入力すると、図1の処理を
実行する。まず第1番目の文字を含むように辞書を初期
化する。この初期化では文字iを辞書アドレスiに登録
し、各辞書の参照番号の個数nを初期化する。これはf
or (i=1 to DN)NMIN→n;を表
わすものである。但し、NMINは(文字の処理+1)
である。
ッファに圧縮すべきデータが入力すると、図1の処理を
実行する。まず第1番目の文字を含むように辞書を初期
化する。この初期化では文字iを辞書アドレスiに登録
し、各辞書の参照番号の個数nを初期化する。これはf
or (i=1 to DN)NMIN→n;を表
わすものである。但し、NMINは(文字の処理+1)
である。
【0031】さらに入力した最初の文字Kを語頭文字列
(prefix string)ω;として登録する(
S1)。初期設定(S1)の後、次の文字入力Kを読み
(S2)、つづいて文字Kがあるか否かを判別(S3)
する。文字Kが存在する時(Y)にはn個分の分割辞書
検索を行い、最大符号化できる辞書番号を求める。この
検索は後述詳細に説明するが、辞書を指定しなくても最
大符号化できる辞書番号は辞書に依存するので復号時に
その辞書番号を指示しなくても求めることが出来る。こ
こで求めた辞書番号からその辞書に対しcode(ω)
を出力し、ωKを辞書DNo(nNo)に登録し、Kを
ωとしnNo+1をnNoとする。この処理(S5)の
後再度判別(S3)より繰り返す。
(prefix string)ω;として登録する(
S1)。初期設定(S1)の後、次の文字入力Kを読み
(S2)、つづいて文字Kがあるか否かを判別(S3)
する。文字Kが存在する時(Y)にはn個分の分割辞書
検索を行い、最大符号化できる辞書番号を求める。この
検索は後述詳細に説明するが、辞書を指定しなくても最
大符号化できる辞書番号は辞書に依存するので復号時に
その辞書番号を指示しなくても求めることが出来る。こ
こで求めた辞書番号からその辞書に対しcode(ω)
を出力し、ωKを辞書DNo(nNo)に登録し、Kを
ωとしnNo+1をnNoとする。この処理(S5)の
後再度判別(S3)より繰り返す。
【0032】判別(S3)において文字Kが存在しない
時には処理(S5)によって今まで求めたコードを出力
(S6)し、終了(END)する。前述した処理(S4
)を更に詳細に表わすと図2の如くなる。処理(S4)
を実行開始すると先ず入力文字ポインタをテンポラリポ
インタレジスタtmpに格納する(S7)。続いてカウ
ンタ(COUNT)に1を、また入力文字ポインタにテ
ンポラリレジスタtmpの内容を格納する。処理(S7
)における入力文字ポインタをテンポラリポインタレジ
スタtmpに格納するのはDN回繰り返す毎に入力文字
ポインタの先頭を設定するのに必要とするその値を記憶
するためである。すなわち、テンポラリポインタレジス
タtmpの内容を入力文字ポインタに再度格納するのは
順次繰り返される辞書に対応して入力文字ポインタを以
後行うべき位置、すなわちテンポラリポインタレジスタ
tmpに格納されている値(処理を開始時の入力文字ポ
インタ)にするためである。
時には処理(S5)によって今まで求めたコードを出力
(S6)し、終了(END)する。前述した処理(S4
)を更に詳細に表わすと図2の如くなる。処理(S4)
を実行開始すると先ず入力文字ポインタをテンポラリポ
インタレジスタtmpに格納する(S7)。続いてカウ
ンタ(COUNT)に1を、また入力文字ポインタにテ
ンポラリレジスタtmpの内容を格納する。処理(S7
)における入力文字ポインタをテンポラリポインタレジ
スタtmpに格納するのはDN回繰り返す毎に入力文字
ポインタの先頭を設定するのに必要とするその値を記憶
するためである。すなわち、テンポラリポインタレジス
タtmpの内容を入力文字ポインタに再度格納するのは
順次繰り返される辞書に対応して入力文字ポインタを以
後行うべき位置、すなわちテンポラリポインタレジスタ
tmpに格納されている値(処理を開始時の入力文字ポ
インタ)にするためである。
【0033】処理(S8)に続いてωKが辞書に存在す
るか否かを判別する(S9)。ωKが辞書に存在する時
(Y)にはωKの値をωに格納し(S10)、つづいて
次の文字Kを読むと共にカウント+1をカウントに格納
する(S11)。そして再度処理(S9)より繰り返す
。この繰り返しにより順次文字列が存在することとなる
。一方、判別処理(S9)により存在する文字列がない
と判別した時(N)にはそこで文字列が終了しているの
でカウント(count)値を保存する(S12)。前
述した処理(S8〜S12)を順次繰り返し行う。この
繰り返しは辞書の数DN分行う(S13)。そしてDN
回行った後、保存したカウントの最大値を選択(S14
)し(同数の場合は乱数で選択)、辞書番号iをNOに
格納しカウント+テンポラリの値を入力文字ポインタと
する(S4)。そして、本処理を終了する。前述した処
理によって各辞書対応で最大のカウントが変化し、最大
値に対応した辞書を選択するが、この選択は復号におい
ても同様であり、図4に示す如くコードを出力するωは
その辞書に対応したωであって、ωやその一部が辞書を
指示しているものではない。しかしながら、復号におい
てその指示が自動的になされるので辞書を指示する必要
はなく、圧縮率を高めることができる。
るか否かを判別する(S9)。ωKが辞書に存在する時
(Y)にはωKの値をωに格納し(S10)、つづいて
次の文字Kを読むと共にカウント+1をカウントに格納
する(S11)。そして再度処理(S9)より繰り返す
。この繰り返しにより順次文字列が存在することとなる
。一方、判別処理(S9)により存在する文字列がない
と判別した時(N)にはそこで文字列が終了しているの
でカウント(count)値を保存する(S12)。前
述した処理(S8〜S12)を順次繰り返し行う。この
繰り返しは辞書の数DN分行う(S13)。そしてDN
回行った後、保存したカウントの最大値を選択(S14
)し(同数の場合は乱数で選択)、辞書番号iをNOに
格納しカウント+テンポラリの値を入力文字ポインタと
する(S4)。そして、本処理を終了する。前述した処
理によって各辞書対応で最大のカウントが変化し、最大
値に対応した辞書を選択するが、この選択は復号におい
ても同様であり、図4に示す如くコードを出力するωは
その辞書に対応したωであって、ωやその一部が辞書を
指示しているものではない。しかしながら、復号におい
てその指示が自動的になされるので辞書を指示する必要
はなく、圧縮率を高めることができる。
【0034】図3は本発明における復号化のアルゴリズ
ムのフローチャートである。復号化においても符号化と
同様に例えばプロセッサによってその処理を行う。本発
明の復号は符号化の逆の動作をするものであり、辞書の
初期化は符号化と同様である。復号においては入力した
符号CODEから参照番号ωを復号した後、最長に復元
される辞書から正式の辞書を決定して文字列を求め、符
号化と同様に最長の文字列が多数求まった場合には乱数
により決定する。この時、符号時と同じ乱数のシードを
使用することにより符号側で符号化した辞書と同じ辞書
を決定することができる。更にその処理を詳細に説明す
る。
ムのフローチャートである。復号化においても符号化と
同様に例えばプロセッサによってその処理を行う。本発
明の復号は符号化の逆の動作をするものであり、辞書の
初期化は符号化と同様である。復号においては入力した
符号CODEから参照番号ωを復号した後、最長に復元
される辞書から正式の辞書を決定して文字列を求め、符
号化と同様に最長の文字列が多数求まった場合には乱数
により決定する。この時、符号時と同じ乱数のシードを
使用することにより符号側で符号化した辞書と同じ辞書
を決定することができる。更にその処理を詳細に説明す
る。
【0035】圧縮したデータを復号化する際、まずバッ
ファ等に圧縮すべきデータが格納される。この格納の後
、図3におけるプログラムを実行する。まず処理を開始
STARTすると、最初の符号を読み込み、code−
1(CODE)をOLDωとし、続いてω=D(K)、
文字Kを出力、KをFINEcharに格納する処理を
行う(S21)。続いて次の入力コードを読み取る(S
22)。 そして新たな符号があるかを判別(S23)し、新たな
符号がない(N)には終了(END)する。また、符号
が存在する時(Y)には続いてcode−1(CODE
)をωとし、ωをINωとする(S24)。続いてn個
の分割辞書検索処理(S25)を実行し、最大符号化で
きる辞書番号を求める。そして辞書番号NOのSTAC
Kが空になるまでSTACK TOPを出力し、PO
P STAKする。また、復元文字列の第1文字をF
INcharに、また(OLDω,K)を辞書DNo(
nNo)に登録し、さらにnNo+1をnNo、INω
をOLDωとする(S26)。そして再度(S22)よ
り実行し順次これを繰り返す。
ファ等に圧縮すべきデータが格納される。この格納の後
、図3におけるプログラムを実行する。まず処理を開始
STARTすると、最初の符号を読み込み、code−
1(CODE)をOLDωとし、続いてω=D(K)、
文字Kを出力、KをFINEcharに格納する処理を
行う(S21)。続いて次の入力コードを読み取る(S
22)。 そして新たな符号があるかを判別(S23)し、新たな
符号がない(N)には終了(END)する。また、符号
が存在する時(Y)には続いてcode−1(CODE
)をωとし、ωをINωとする(S24)。続いてn個
の分割辞書検索処理(S25)を実行し、最大符号化で
きる辞書番号を求める。そして辞書番号NOのSTAC
Kが空になるまでSTACK TOPを出力し、PO
P STAKする。また、復元文字列の第1文字をF
INcharに、また(OLDω,K)を辞書DNo(
nNo)に登録し、さらにnNo+1をnNo、INω
をOLDωとする(S26)。そして再度(S22)よ
り実行し順次これを繰り返す。
【0036】さらに前述したn個の分割辞書検索(S2
5)について図4で説明する。分割辞書検索処理(S2
5)を実行開始すると、先ずOLDcodeをTMP−
OLDcodeに、FINcharをTMP−FINc
harに、ωをTMP−ωにそれぞれ格納する(S27
)。この処理は複数の辞書を同一条件で検索する、すな
わちそれぞれの辞書に対応して同一条件からスタートす
るようにするために一時的に記憶するものである(S2
7)。続いてN回繰り返すためのイニシャル処理を行う
(S28)。この処理は前述した処理S27と逆の処理
であり、各テンポラリに格納したTMP−OLDcod
eのデータをOLDcodeに、TMP−FINcha
rのデータをFINcharに、TMP−ωをωに、カ
ウンタを1にする処理である(S29)。続いて判別処
理(S29)でωとnとを比較しω=nであるならば、
FINcharを出力、OLDcodeをCODEに、
D(INω)を(OLDcode,FINchar)に
格納する(S31)。また、ωがnより小さいならば辞
書DNoよりω′K=DNo(ω)を判別し、等しい時
(Y)にはKをPUSH STACKに、ω′をωに
、CONT+1をCONTに設定し、再度判別(S30
)を実行する。また、判別(S30)において等しくな
いと判別した時(N)にはOLDcode,FINch
ar,ω,CONT,STACKの内容を保存する(S
33)。また、判別(S29)においてωがカウント値
nより大であるときには前述の処理を行わず次の辞書の
処理に移る。この前述した処理(S28〜S33)を分
割辞書数分DN回繰り返す。そしてその繰り返しの後最
大のカウント値を選択し同数の場合は乱数で選び辞書番
号iをナンバーとして出力する。また保存してあるOL
Dcode,FINchar,ωを設定する(S34)
。
5)について図4で説明する。分割辞書検索処理(S2
5)を実行開始すると、先ずOLDcodeをTMP−
OLDcodeに、FINcharをTMP−FINc
harに、ωをTMP−ωにそれぞれ格納する(S27
)。この処理は複数の辞書を同一条件で検索する、すな
わちそれぞれの辞書に対応して同一条件からスタートす
るようにするために一時的に記憶するものである(S2
7)。続いてN回繰り返すためのイニシャル処理を行う
(S28)。この処理は前述した処理S27と逆の処理
であり、各テンポラリに格納したTMP−OLDcod
eのデータをOLDcodeに、TMP−FINcha
rのデータをFINcharに、TMP−ωをωに、カ
ウンタを1にする処理である(S29)。続いて判別処
理(S29)でωとnとを比較しω=nであるならば、
FINcharを出力、OLDcodeをCODEに、
D(INω)を(OLDcode,FINchar)に
格納する(S31)。また、ωがnより小さいならば辞
書DNoよりω′K=DNo(ω)を判別し、等しい時
(Y)にはKをPUSH STACKに、ω′をωに
、CONT+1をCONTに設定し、再度判別(S30
)を実行する。また、判別(S30)において等しくな
いと判別した時(N)にはOLDcode,FINch
ar,ω,CONT,STACKの内容を保存する(S
33)。また、判別(S29)においてωがカウント値
nより大であるときには前述の処理を行わず次の辞書の
処理に移る。この前述した処理(S28〜S33)を分
割辞書数分DN回繰り返す。そしてその繰り返しの後最
大のカウント値を選択し同数の場合は乱数で選び辞書番
号iをナンバーとして出力する。また保存してあるOL
Dcode,FINchar,ωを設定する(S34)
。
【0037】なお、例外処理とし、符号化時に選択され
た最大一致長系列を示す参照番号が、他の分割辞書です
でに使用され、なおかつ、現在選択された系列よりも長
い系列を表す場合には、符号化する参照番号の前に選択
された辞書の番号を示す制御コードを符号化し、それに
続き、参照番号を符号化する。復号化においても、選択
番号を示す制御コードを検出したなら、指定された分割
辞書により復元を行う。
た最大一致長系列を示す参照番号が、他の分割辞書です
でに使用され、なおかつ、現在選択された系列よりも長
い系列を表す場合には、符号化する参照番号の前に選択
された辞書の番号を示す制御コードを符号化し、それに
続き、参照番号を符号化する。復号化においても、選択
番号を示す制御コードを検出したなら、指定された分割
辞書により復元を行う。
【0038】以上のような動作により、復号時に符号値
と同様の処理を逆に行い複数の辞書が存在しても、その
辞書を指示されなくても復号側で求めることができ、例
えば圧縮して転送する等の場合にその圧縮率が高まり転
送効率を得ることが出来る。本発明の実施例ではプロセ
ッサによる処理を用いているがこれに限らず、例えば回
路等によって行うことも可能である。
と同様の処理を逆に行い複数の辞書が存在しても、その
辞書を指示されなくても復号側で求めることができ、例
えば圧縮して転送する等の場合にその圧縮率が高まり転
送効率を得ることが出来る。本発明の実施例ではプロセ
ッサによる処理を用いているがこれに限らず、例えば回
路等によって行うことも可能である。
【0039】
【発明の効果】以上述べたように本発明によれば、複数
に分割した辞書により文字列を符号化できるため、従来
のLZW符号より高い圧縮率が得られるとともに、符号
が参照番号のみで表わされる簡単なアルゴリズムで実行
できる。
に分割した辞書により文字列を符号化できるため、従来
のLZW符号より高い圧縮率が得られるとともに、符号
が参照番号のみで表わされる簡単なアルゴリズムで実行
できる。
【図1】本発明による符号化方式の符号化アルゴリズム
のフローチャートである。
のフローチャートである。
【図2】本発明による最大文字列検索のフローチャート
である。
である。
【図3】本発明による復号化方式の復号化アルゴリズム
のフローチャートである。
のフローチャートである。
【図4】本発明による分割辞書検索のフローチャートで
ある。
ある。
【図5】ユニバーサル符号化のアルゴリズムである。
【図6】ユニバーサル型ZL符号の符号化の原理図であ
る。
る。
【図7】従来のLZW符号化処理フロー図である。
【図8】従来のLZW復号化処理フロー図である。
【図9】LZW符号化説明図である。
【図10】辞書構成例の説明図である。
【図11】LZW復号化説明図である。
Claims (2)
- 【請求項1】 符号化済データを相異なる部分列に分
けて辞書に登録しておき、入力データを前記辞書中の部
分列のうちの最大長と一致するものの番号で指定して符
号化する方式において、複数個設けられた辞書に対して
検索を行い、最長の文字列を表わせる辞書を選択すると
共に、該辞書の参照番号で指定して符号化することを特
徴とするデータ圧縮方式。 - 【請求項2】 符号化済データを相異なる部分列に分
けて辞書に登録しておき、入力データを前記辞書中の部
分列のうちの最大長と一致するものの番号で指定して符
号化したデータを復元する方式において、複数個設けた
辞書に対して検索を行い、最長の文字列を復号できる辞
書を選択し、該選択された辞書の参照番号から復号化を
行うことを特徴とするデータ復元方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1766491A JP3083329B2 (ja) | 1991-02-08 | 1991-02-08 | データ圧縮復元方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1766491A JP3083329B2 (ja) | 1991-02-08 | 1991-02-08 | データ圧縮復元方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04256192A true JPH04256192A (ja) | 1992-09-10 |
JP3083329B2 JP3083329B2 (ja) | 2000-09-04 |
Family
ID=11950122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1766491A Expired - Fee Related JP3083329B2 (ja) | 1991-02-08 | 1991-02-08 | データ圧縮復元方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3083329B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7199730B2 (en) * | 2003-01-24 | 2007-04-03 | Ricoh Company, Ltd. | Character string processing apparatus, character string processing method, and image-forming apparatus |
-
1991
- 1991-02-08 JP JP1766491A patent/JP3083329B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7199730B2 (en) * | 2003-01-24 | 2007-04-03 | Ricoh Company, Ltd. | Character string processing apparatus, character string processing method, and image-forming apparatus |
US7477167B2 (en) | 2003-01-24 | 2009-01-13 | Ricoh Company, Ltd. | Character string processing apparatus, character string processing method, and image-forming apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP3083329B2 (ja) | 2000-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3009727B2 (ja) | 改良形データ圧縮装置 | |
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
US6982661B2 (en) | Method of performing huffman decoding | |
US11171665B2 (en) | Dictionary-based data compression | |
JP3241788B2 (ja) | データ圧縮方式 | |
JPS61242122A (ja) | 文字データ・ストリームの適応的圧縮方法 | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JPH04256192A (ja) | データ圧縮復元方式 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JP3199292B2 (ja) | ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JPH05241775A (ja) | データ圧縮方式 | |
JP3098046B2 (ja) | 画像データ圧縮装置及びその方法 | |
US11967975B1 (en) | Method and apparatus for recursive data compression using seed bits | |
JP3132836B2 (ja) | 画像データ圧縮復元方法 | |
JP3442105B2 (ja) | データ圧縮および復元方式 | |
JPH06202844A (ja) | データ圧縮復元処理装置 | |
JP3708318B2 (ja) | データ圧縮/復元装置およびデータ圧縮/復元方法 | |
JP3117760B2 (ja) | データ復元方式 | |
JPH03209923A (ja) | データ圧縮方式 | |
JP2952068B2 (ja) | データ圧縮及び復元方式 | |
JP2802135B2 (ja) | 画像データ圧縮方法 | |
JPH04123619A (ja) | データ圧縮及び復元装置 | |
JP2005129071A (ja) | データ圧縮/復元装置およびデータ圧縮/復元方法 | |
JPH04167821A (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: 20000620 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090630 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |