JP3442105B2 - データ圧縮および復元方式 - Google Patents
データ圧縮および復元方式Info
- Publication number
- JP3442105B2 JP3442105B2 JP15192293A JP15192293A JP3442105B2 JP 3442105 B2 JP3442105 B2 JP 3442105B2 JP 15192293 A JP15192293 A JP 15192293A JP 15192293 A JP15192293 A JP 15192293A JP 3442105 B2 JP3442105 B2 JP 3442105B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- group
- character
- encoding
- encoded
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【産業上の利用分野】本発明はデータ処理方法に係り、
更に詳しくはデータ中の冗長な部分を省いてデータ量を
圧縮することにより、データの伝送時間を短縮したり、
メモリ上での記憶容量を削減するためのデータ圧縮およ
び復元方式に関する。
更に詳しくはデータ中の冗長な部分を省いてデータ量を
圧縮することにより、データの伝送時間を短縮したり、
メモリ上での記憶容量を削減するためのデータ圧縮およ
び復元方式に関する。
【0002】
【従来の技術】近年、文字コード、ベクトル情報、画像
など様々な種類のデータがコンピュータで扱われるよう
になっており、扱われるデータ量も急速に増加してきて
いる。大量のデータを扱うときは、データの中の冗長な
部分を省いてデータ量を圧縮することで、記憶容量を減
らしたり、遠く伝送したりできるようになる。様々なデ
ータを1つの方式でデータ圧縮できる方法としてユニバ
ーサル符号化が提案されている。ここで、本発明の方式
は、文字コードの圧縮に限らず、様々なデータに適用で
きるが、以下では、情報理論で用いられている呼称を踏
襲し、データの1word単位を文字と呼び、データが任意
wordつながったものを文字列と呼ぶことにする。 ユニ
バーサル符号化の代表的な方法としてジブーレンペル符
号化(以下、ZL符号化と略)と算術符号化がある。ジ
ブーレンペル符号ではスライド辞書型(ユニバーサル
型ともいう)と、動的辞書型(増分分解型ともいう)
の2つのアルゴリズムが提案されている。さらに、スラ
イド辞書型アルゴリズムの改良として、LZSS符号
(T.C. Bell,"Better OPM/L Text Compression",IEEE T
rans. on Commun., Vol.COM-34, No.12, Dec. 1986参
照)やパソコンで用いられているLHAがある。また、
動的辞書型アルゴリズムの改良としては、LZW(Lemp
el-Ziv-Welch) 符号がある(T.A. Welch,"A Technique
for High-Performance Data Compression",Computer, J
une 1984参照)。これらの改良方法は補助記憶装置のフ
ァイル圧縮や、モデムでの伝送データの圧縮に利用され
るようになっている。
など様々な種類のデータがコンピュータで扱われるよう
になっており、扱われるデータ量も急速に増加してきて
いる。大量のデータを扱うときは、データの中の冗長な
部分を省いてデータ量を圧縮することで、記憶容量を減
らしたり、遠く伝送したりできるようになる。様々なデ
ータを1つの方式でデータ圧縮できる方法としてユニバ
ーサル符号化が提案されている。ここで、本発明の方式
は、文字コードの圧縮に限らず、様々なデータに適用で
きるが、以下では、情報理論で用いられている呼称を踏
襲し、データの1word単位を文字と呼び、データが任意
wordつながったものを文字列と呼ぶことにする。 ユニ
バーサル符号化の代表的な方法としてジブーレンペル符
号化(以下、ZL符号化と略)と算術符号化がある。ジ
ブーレンペル符号ではスライド辞書型(ユニバーサル
型ともいう)と、動的辞書型(増分分解型ともいう)
の2つのアルゴリズムが提案されている。さらに、スラ
イド辞書型アルゴリズムの改良として、LZSS符号
(T.C. Bell,"Better OPM/L Text Compression",IEEE T
rans. on Commun., Vol.COM-34, No.12, Dec. 1986参
照)やパソコンで用いられているLHAがある。また、
動的辞書型アルゴリズムの改良としては、LZW(Lemp
el-Ziv-Welch) 符号がある(T.A. Welch,"A Technique
for High-Performance Data Compression",Computer, J
une 1984参照)。これらの改良方法は補助記憶装置のフ
ァイル圧縮や、モデムでの伝送データの圧縮に利用され
るようになっている。
【0003】本発明は、スライド辞書型および動的辞書
型アルゴリズムの改良に関するものであり、以下、スラ
イド辞書型と動的辞書型アルゴリズムとその改良版の方
式とについて説明する。(1) スライド辞書型アルゴリズム このアルゴリズムは、演算量は多いが、高圧縮率が得ら
れる方法である。符号化データを、過去のデータ系列の
任意の位置から始まり、かつ現在の符号化すべきデータ
の最初からの部分と一致する最長の系列に区切り(部分
列)、過去の文字列の複製として符号化する方法であ
る。図8にスライド辞書型アルゴリズムを用いるユニバ
ーサル型Ziv-Lempel符号の符号器の説明図を示す。Pバ
ッファ1には符号化済みの入力データとして、例えば40
96個の文字が格納されており、Qバッファ2にはこれか
ら符号化するデータとして、例えば16個の文字が入力さ
れている。Qバッファ2の文字列をPバッファ1の系列
と照合し、Pバッファ1中で一致する最長の部分文字を
求める。そして、Pバッファ1中でこの最長文字列を指
定するため図9に示す情報の組を符号化する。次にQバ
ッファ2内の符号化した文字列をPバッファ1に移し
て、新たなデータを得る。以下、同様の操作を繰り返
し、データを部分列に分解して符号化する。
型アルゴリズムの改良に関するものであり、以下、スラ
イド辞書型と動的辞書型アルゴリズムとその改良版の方
式とについて説明する。(1) スライド辞書型アルゴリズム このアルゴリズムは、演算量は多いが、高圧縮率が得ら
れる方法である。符号化データを、過去のデータ系列の
任意の位置から始まり、かつ現在の符号化すべきデータ
の最初からの部分と一致する最長の系列に区切り(部分
列)、過去の文字列の複製として符号化する方法であ
る。図8にスライド辞書型アルゴリズムを用いるユニバ
ーサル型Ziv-Lempel符号の符号器の説明図を示す。Pバ
ッファ1には符号化済みの入力データとして、例えば40
96個の文字が格納されており、Qバッファ2にはこれか
ら符号化するデータとして、例えば16個の文字が入力さ
れている。Qバッファ2の文字列をPバッファ1の系列
と照合し、Pバッファ1中で一致する最長の部分文字を
求める。そして、Pバッファ1中でこの最長文字列を指
定するため図9に示す情報の組を符号化する。次にQバ
ッファ2内の符号化した文字列をPバッファ1に移し
て、新たなデータを得る。以下、同様の操作を繰り返
し、データを部分列に分解して符号化する。
【0004】すなわち、ZL符号では現在の文字コード
の系列を、符号化済みの過去の系列からの複製として符
号化するものである。ZL符号を用いた場合、文字コー
ドの文書情報は1/2程度に圧縮できる。さらに、スラ
イド辞書型アルゴリズムの改良として、LZSS符号
(T.C. Bell,"Better OPM/L Text Compression",IEEE T
rans. on Commun., Vol. COM-34, No.12, Dec. 1986 参
照)や、1/4インチ・カートリッジ磁気テープの標準
圧縮方式であるQIC-122 符号がある。QIC-122 符号につ
いて次に説明する。(QIC-122 符号) 3Mを中心とするメーカの団体であるQIC(Quarter
Inch Cartrrige Standard Inc.) が1/4インチ・カー
トリッジ磁気テープの標準圧縮方式QIC-122 として採用
した方法である。図10にQIC-122 の符号化の処理手順
を示す。Pバッファとして2048バイトの符号化済みデー
タをもち、Qバッファの符号化すべき文字列をPバッフ
ァ中の文字列の複製として表すモードと、生データを1
バイトづつ符号化するモードの2つのモードをもつ。そ
して、Pバッファ中の最長一致文字列が2文字以上の場
合、複製モードで符号化し、それ以外のときは生データ
・モードで符号化する。
の系列を、符号化済みの過去の系列からの複製として符
号化するものである。ZL符号を用いた場合、文字コー
ドの文書情報は1/2程度に圧縮できる。さらに、スラ
イド辞書型アルゴリズムの改良として、LZSS符号
(T.C. Bell,"Better OPM/L Text Compression",IEEE T
rans. on Commun., Vol. COM-34, No.12, Dec. 1986 参
照)や、1/4インチ・カートリッジ磁気テープの標準
圧縮方式であるQIC-122 符号がある。QIC-122 符号につ
いて次に説明する。(QIC-122 符号) 3Mを中心とするメーカの団体であるQIC(Quarter
Inch Cartrrige Standard Inc.) が1/4インチ・カー
トリッジ磁気テープの標準圧縮方式QIC-122 として採用
した方法である。図10にQIC-122 の符号化の処理手順
を示す。Pバッファとして2048バイトの符号化済みデー
タをもち、Qバッファの符号化すべき文字列をPバッフ
ァ中の文字列の複製として表すモードと、生データを1
バイトづつ符号化するモードの2つのモードをもつ。そ
して、Pバッファ中の最長一致文字列が2文字以上の場
合、複製モードで符号化し、それ以外のときは生データ
・モードで符号化する。
【0005】符号語のフォーマットを図11にBNFメ
タ言語で表す。フォーマットの表記には、図12のメタ
記号を用いている。図13に符号化の例を示す。LZS
S符号は、図12の<Compressed String >の<Compre
ssed Byte >を固定長符号で表わす方式である。(2) 動的辞書型(増分分解)ジブーレンペル符号化 このアルゴリズムは、圧縮率はユニバーサル型より劣る
が、シンプルで、計算も容易であることが知られてい
る。増分分解型Ziv-Lempel符号では、入力シンボルの系
列をx=aabababaa・・・とすると、X0 ,X
1 ,X2 ,・・・を成分とする成分系列x=X0 ,
X1 ,X2 ,・・・への増分分解は次のようにする。
タ言語で表す。フォーマットの表記には、図12のメタ
記号を用いている。図13に符号化の例を示す。LZS
S符号は、図12の<Compressed String >の<Compre
ssed Byte >を固定長符号で表わす方式である。(2) 動的辞書型(増分分解)ジブーレンペル符号化 このアルゴリズムは、圧縮率はユニバーサル型より劣る
が、シンプルで、計算も容易であることが知られてい
る。増分分解型Ziv-Lempel符号では、入力シンボルの系
列をx=aabababaa・・・とすると、X0 ,X
1 ,X2 ,・・・を成分とする成分系列x=X0 ,
X1 ,X2 ,・・・への増分分解は次のようにする。
【0006】X0 =λ(空列)から始めて、Xj を既出
の成分に右端のシンボルを付加した最長の列とすると、
X=a・ab・aba・b・aa・・・ となり、X
0 =λ(空列),X1 =X0 a,X2 =X1 b, X3
=X2 a,X4 =X0 b, X5 =X1 a,・・・と分
解できる。増分分解した各成分系列は既成分系列を用い
て図14に示すデータの組で符号化する。すなわち、動
的辞書型アルゴリズムは、符号化パターンについて、過
去に分解した部分列の内、最長一致するものを求め、過
去に分解した部分列の複製として符号化するものであ
る。
の成分に右端のシンボルを付加した最長の列とすると、
X=a・ab・aba・b・aa・・・ となり、X
0 =λ(空列),X1 =X0 a,X2 =X1 b, X3
=X2 a,X4 =X0 b, X5 =X1 a,・・・と分
解できる。増分分解した各成分系列は既成分系列を用い
て図14に示すデータの組で符号化する。すなわち、動
的辞書型アルゴリズムは、符号化パターンについて、過
去に分解した部分列の内、最長一致するものを求め、過
去に分解した部分列の複製として符号化するものであ
る。
【0007】さらに、動的辞書型アルゴリズムの改良と
しては、LZW(Lempel-Ziv-Welch) 符号(T.A. Welc
h," A Technique for High-Performance Data Compress
ion",Computer,June 1984 参照)、LZJ符号(M.Ja
kobsson, "Compression of Character Strings by An A
daptive Dictionary, BIT,25号,1985 年, 593-603 頁参
照のこと) などがある。次にLZW符号について説明す
る。〔LZW符号〕 LZW符号の符号化の処理のフローを図15に示す。L
ZW符号化は、書き替え可能な辞書をもち、入力文字コ
ード・データ中を相異なる文字列に分け、この文字列を
出現した順に番号を付けて辞書に登録するとともに、現
在入力している文字列を辞書に登録してある最長一致文
字列の番号だけで表して、符号化するものである。な
お、動的辞書型符号およびLZW符号の技術は、特開昭
59-231683, 米国特許4,558,302 で開示されている。
しては、LZW(Lempel-Ziv-Welch) 符号(T.A. Welc
h," A Technique for High-Performance Data Compress
ion",Computer,June 1984 参照)、LZJ符号(M.Ja
kobsson, "Compression of Character Strings by An A
daptive Dictionary, BIT,25号,1985 年, 593-603 頁参
照のこと) などがある。次にLZW符号について説明す
る。〔LZW符号〕 LZW符号の符号化の処理のフローを図15に示す。L
ZW符号化は、書き替え可能な辞書をもち、入力文字コ
ード・データ中を相異なる文字列に分け、この文字列を
出現した順に番号を付けて辞書に登録するとともに、現
在入力している文字列を辞書に登録してある最長一致文
字列の番号だけで表して、符号化するものである。な
お、動的辞書型符号およびLZW符号の技術は、特開昭
59-231683, 米国特許4,558,302 で開示されている。
【0008】LZW符号化の処理を図15によって更に
詳しく説明する。まずステップ(S)10において、文
字列を構成する全ての文字について1文字だけの文字列
が初期値として辞書Dに登録される。そして辞書の登録
文字列数nが文字の種類数Aとされ、これから符号化し
ようとする文字の位置を示すカーソルがデータの先頭位
置(1の位置)に置かれる。ここで辞書Dに全ての1文
字だけの文字列が登録されたことによって、カーソルが
示す、これから符号化しようとする文字は必ず辞書Dに
登録されていることになる。
詳しく説明する。まずステップ(S)10において、文
字列を構成する全ての文字について1文字だけの文字列
が初期値として辞書Dに登録される。そして辞書の登録
文字列数nが文字の種類数Aとされ、これから符号化し
ようとする文字の位置を示すカーソルがデータの先頭位
置(1の位置)に置かれる。ここで辞書Dに全ての1文
字だけの文字列が登録されたことによって、カーソルが
示す、これから符号化しようとする文字は必ず辞書Dに
登録されていることになる。
【0009】次にS11で、カーソルの位置から始まる
符号化すべき文字列と一致する最長の文字列Sが、辞書
に登録された文字列の中から見つけられる。ここではま
ずS10で辞書Dに登録されている文字列は全て1文字
だけの文字列であるから、当然1文字だけの文字列Sが
見つけられる。
符号化すべき文字列と一致する最長の文字列Sが、辞書
に登録された文字列の中から見つけられる。ここではま
ずS10で辞書Dに登録されている文字列は全て1文字
だけの文字列であるから、当然1文字だけの文字列Sが
見つけられる。
【0010】続いてS12で見つけられた文字列Sの辞
書登録番号が〔log2 n〕ビットのビット数を用いて
出力され、辞書登録文字列数nがインクリメントされ
る。ここで〔log2 n〕はnの2を底とする対数の値
以上の最小整数を表わす。例えばnが256 の時にはその
値は8であるが、257 になると9となる。
書登録番号が〔log2 n〕ビットのビット数を用いて
出力され、辞書登録文字列数nがインクリメントされ
る。ここで〔log2 n〕はnの2を底とする対数の値
以上の最小整数を表わす。例えばnが256 の時にはその
値は8であるが、257 になると9となる。
【0011】更にS13において、文字列データ中で見
つけられた文字列Sの次の文字をCとする時、文字列S
Cが辞書に登録され、この文字列に辞書登録番号n、す
なわちインクリメントされた値が与えられ、カーソルが
データ中で文字列Sの後の文字、すなわちCに移動さ
れ、その後S11以降の処理が全ての文字列の符号化が
終了するまで続けられる。なおこの処理の続行中に辞書
Dに登録される文字列の数は増加し、またその長さは当
然長くなって行く。
つけられた文字列Sの次の文字をCとする時、文字列S
Cが辞書に登録され、この文字列に辞書登録番号n、す
なわちインクリメントされた値が与えられ、カーソルが
データ中で文字列Sの後の文字、すなわちCに移動さ
れ、その後S11以降の処理が全ての文字列の符号化が
終了するまで続けられる。なおこの処理の続行中に辞書
Dに登録される文字列の数は増加し、またその長さは当
然長くなって行く。
【0012】図16はLZW符号化された圧縮データの
復元処理のフローチャートである。同図において、まず
S15で符号化処理に対するS10におけると同様に、
辞書Dに全ての文字に対応して1文字だけの文字列が登
録され、文字の種類数Aが辞書登録済みの文字列数nと
され、カーソルが復元すべき符号化データの先頭に置か
れる。
復元処理のフローチャートである。同図において、まず
S15で符号化処理に対するS10におけると同様に、
辞書Dに全ての文字に対応して1文字だけの文字列が登
録され、文字の種類数Aが辞書登録済みの文字列数nと
され、カーソルが復元すべき符号化データの先頭に置か
れる。
【0013】次にS16で、符号化処理のS12で出力
された文字列Sを示す辞書登録番号が〔log2 n〕ビ
ットで表わされたデータとして入力され、この辞書登録
番号を用いて辞書Dが検索され、文字列Sが復元され、
辞書登録済み文字列数nがインクリメントされる。
された文字列Sを示す辞書登録番号が〔log2 n〕ビ
ットで表わされたデータとして入力され、この辞書登録
番号を用いて辞書Dが検索され、文字列Sが復元され、
辞書登録済み文字列数nがインクリメントされる。
【0014】続いてS17で復元された文字列Sがカー
ソルの位置から並べられ、S18で現在カーソルが置か
れている位置、最初は復元すべき符号化データの最初の
位置に置かれた復元された文字Cが、現在行われている
復元処理の直前に行われた復元処理によって復元された
文字列S′の後に追加された文字列S′Cが新たに辞書
Dに登録され、その文字列に辞書登録番号nが与えられ
る。ここではデータの復元処理は第1回目であるので
S′としては空文字列が用いられる。そしてカーソルが
復元された文字列Sに対する辞書登録番号の後の符号化
データに移動され、その後S16以降の処理が入力符号
化データの復元が全て終了するまで続けられる。なおこ
の処理の続行中に、図15における符号化処理と同様
に、辞書に登録される文字列の数は増加し、また一般的
にその長さは長くなる。
ソルの位置から並べられ、S18で現在カーソルが置か
れている位置、最初は復元すべき符号化データの最初の
位置に置かれた復元された文字Cが、現在行われている
復元処理の直前に行われた復元処理によって復元された
文字列S′の後に追加された文字列S′Cが新たに辞書
Dに登録され、その文字列に辞書登録番号nが与えられ
る。ここではデータの復元処理は第1回目であるので
S′としては空文字列が用いられる。そしてカーソルが
復元された文字列Sに対する辞書登録番号の後の符号化
データに移動され、その後S16以降の処理が入力符号
化データの復元が全て終了するまで続けられる。なおこ
の処理の続行中に、図15における符号化処理と同様
に、辞書に登録される文字列の数は増加し、また一般的
にその長さは長くなる。
【0015】以上のようにZL符号化を用いたデータ圧
縮では、通常、データをバイト単位で扱い、過去に出現
したバイト系列の内、再度出現した系列を短く表すこと
によって圧縮を行う。文字コード等バイト内の全ビット
が一様の重みをもち、系列の繰り返しが多いデータに対
しては、ZL符号化は有効である。しかし、階調画像、
数値など各ビットの重みが異なり下位ビット程重みが小
さいデータでは、上位ビットは比較的規則性をもつが、
下位ビットがバラつくためバイト系列の繰り返しが起こ
り難く、動的辞書法そのままでは低い圧縮率しか得られ
ない。この問題に対して、従来、これを解決するため次
の方法が発表されている。 (1) 伊藤、朴、今井:LZW符号による画像データ圧縮
に関する一考察、1990電子情報通信学会春季全国大会予
稿SA-6-2 (2) 陳、伊藤、深町:アルヘァベットサイズの大きい情
報源を圧縮するための修正ZL算法、第13回情報理論と
その応用シンポジウム予稿,pp.221〜225, 1991 文献(1) では、例えば、上位ビットと下位ビットとに分
け、上位ビットのみにLZW符号を用いる方法を開示し
ている。分解したバイトの部分列は、(上位ビットの辞
書番号、符号化した上位ビットの系列の下位ビット・生
データ)の組で符号化する。
縮では、通常、データをバイト単位で扱い、過去に出現
したバイト系列の内、再度出現した系列を短く表すこと
によって圧縮を行う。文字コード等バイト内の全ビット
が一様の重みをもち、系列の繰り返しが多いデータに対
しては、ZL符号化は有効である。しかし、階調画像、
数値など各ビットの重みが異なり下位ビット程重みが小
さいデータでは、上位ビットは比較的規則性をもつが、
下位ビットがバラつくためバイト系列の繰り返しが起こ
り難く、動的辞書法そのままでは低い圧縮率しか得られ
ない。この問題に対して、従来、これを解決するため次
の方法が発表されている。 (1) 伊藤、朴、今井:LZW符号による画像データ圧縮
に関する一考察、1990電子情報通信学会春季全国大会予
稿SA-6-2 (2) 陳、伊藤、深町:アルヘァベットサイズの大きい情
報源を圧縮するための修正ZL算法、第13回情報理論と
その応用シンポジウム予稿,pp.221〜225, 1991 文献(1) では、例えば、上位ビットと下位ビットとに分
け、上位ビットのみにLZW符号を用いる方法を開示し
ている。分解したバイトの部分列は、(上位ビットの辞
書番号、符号化した上位ビットの系列の下位ビット・生
データ)の組で符号化する。
【0016】文献(2) では、256 階調(1バイト/画
素)の画像データの場合、上位4ビットと下位4ビット
に分けて、それぞれにLZW符号化することで最も良い
圧縮率が得られることを述べている。
素)の画像データの場合、上位4ビットと下位4ビット
に分けて、それぞれにLZW符号化することで最も良い
圧縮率が得られることを述べている。
【0017】
【発明が解決しようとする課題】以上のように階調画像
データ、数値データなど、例えば1バイトのデータ中で
各ビットの重みが異なるデータをZL符号化する時、上
述の文献(1) の方法では上位ビットが動的辞書法で符号
化されるが、下位ビットは符号化されないという問題点
があった。
データ、数値データなど、例えば1バイトのデータ中で
各ビットの重みが異なるデータをZL符号化する時、上
述の文献(1) の方法では上位ビットが動的辞書法で符号
化されるが、下位ビットは符号化されないという問題点
があった。
【0018】これに対して上述の文献(2) の方法では上
位ビット、下位ビット共に動的辞書法を用いて符号され
るが、上位ビット全体が符号化された後に下位ビット全
体が符号化されるために、データ全体を一旦格納するた
めの大容量バッファを必要とし、実用的でないという問
題点があった。例えばデータの1ライン分を格納するバ
ッファを備え、上位ビットと下位ビットを交互に符号化
する方法を用いれば、データ全体をバッファに格納して
おかなければならないという問題点は改善されるが、そ
れでも符号化データの作成および出力に1ライン分の時
間遅れが生じ、時間的なオーバヘッドが避けられないと
いう問題点があった。
位ビット、下位ビット共に動的辞書法を用いて符号され
るが、上位ビット全体が符号化された後に下位ビット全
体が符号化されるために、データ全体を一旦格納するた
めの大容量バッファを必要とし、実用的でないという問
題点があった。例えばデータの1ライン分を格納するバ
ッファを備え、上位ビットと下位ビットを交互に符号化
する方法を用いれば、データ全体をバッファに格納して
おかなければならないという問題点は改善されるが、そ
れでも符号化データの作成および出力に1ライン分の時
間遅れが生じ、時間的なオーバヘッドが避けられないと
いう問題点があった。
【0019】本発明は、各ビットの重みが異なるデータ
を、例えば上位ビットと下位ビットに分けて圧縮し、上
位と下位とのデータを交互に伝送することにより容量の
大きなバッファを不要とし、かつ符号化および復元に要
する時間遅れ、すなわちオーバヘッドを改善することで
ある。
を、例えば上位ビットと下位ビットに分けて圧縮し、上
位と下位とのデータを交互に伝送することにより容量の
大きなバッファを不要とし、かつ符号化および復元に要
する時間遅れ、すなわちオーバヘッドを改善することで
ある。
【0020】
【課題を解決するための手段および作用】図1は本発明
の機能ブロック図である。同図は入力される文字列を符
号化してデータ圧縮を行うデータ圧縮時において、その
文字列内の各文字を構成する複数個のビットを複数個の
グループに分け、その複数のグループ間での符号化の順
序をあらかじめ定めた符号化方法を用いるデータ圧縮お
よび復元方式の機能ブロック図である。
の機能ブロック図である。同図は入力される文字列を符
号化してデータ圧縮を行うデータ圧縮時において、その
文字列内の各文字を構成する複数個のビットを複数個の
グループに分け、その複数のグループ間での符号化の順
序をあらかじめ定めた符号化方法を用いるデータ圧縮お
よび復元方式の機能ブロック図である。
【0021】図1において、まず1で予め定められた符
号化の順序が第1番目のグループのデータが1文字分以
上符号化され、2で定められた符号化の順序に従って、
2番目以降のグループのデータがそれぞれ1番目のグル
ープ内ですでに符号化済みの文字と対応するデータ位置
以上まで符号化され、3で符号化の順序が最終のグルー
プのデータの符号化が行われた後に再び符号化の順序が
第1番目のグループのデータの1文字分以上の符号化が
行われ、それ以降の処理が繰り返される。
号化の順序が第1番目のグループのデータが1文字分以
上符号化され、2で定められた符号化の順序に従って、
2番目以降のグループのデータがそれぞれ1番目のグル
ープ内ですでに符号化済みの文字と対応するデータ位置
以上まで符号化され、3で符号化の順序が最終のグルー
プのデータの符号化が行われた後に再び符号化の順序が
第1番目のグループのデータの1文字分以上の符号化が
行われ、それ以降の処理が繰り返される。
【0022】すなわち、本発明においては、各ビットの
重みが異なるデータの符号化時において、例えば上位ビ
ットの系列と下位ビットの系列とにデータを分けて、相
方の系列を例えばZL符号化する。すなわち上位ビット
のデータ系列を、例えば動的辞書を用いて符号するのに
続き、符号化された上位ビットデータを含む文字以上の
データ位置まで下位ビットのデータ系列を、例えば動的
辞書を用いて符号化し、上位ビットと下位ビットの系列
データを交互に、データ位置の対応を取りながら符号化
するものである。
重みが異なるデータの符号化時において、例えば上位ビ
ットの系列と下位ビットの系列とにデータを分けて、相
方の系列を例えばZL符号化する。すなわち上位ビット
のデータ系列を、例えば動的辞書を用いて符号するのに
続き、符号化された上位ビットデータを含む文字以上の
データ位置まで下位ビットのデータ系列を、例えば動的
辞書を用いて符号化し、上位ビットと下位ビットの系列
データを交互に、データ位置の対応を取りながら符号化
するものである。
【0023】また本発明においては、例えば1番目のグ
ループの1回当たりの符号化において、入力文字列デー
タを所定の文字数分以上まで符号化する。また全てのグ
ループの第1回目の符号化の終了に続いて行われる第2
回目以降の符号化において、1番目のグループのデータ
を符号化する時、1番目のグループの文字列データを2
番目以降のグループのすでに符号化済みデータ位置以上
の所まで符号化するようにする。
ループの1回当たりの符号化において、入力文字列デー
タを所定の文字数分以上まで符号化する。また全てのグ
ループの第1回目の符号化の終了に続いて行われる第2
回目以降の符号化において、1番目のグループのデータ
を符号化する時、1番目のグループの文字列データを2
番目以降のグループのすでに符号化済みデータ位置以上
の所まで符号化するようにする。
【0024】更に前述のように、LZW符号化を用いる
と符号化処理、または復元処理を続行するにつれて辞書
に登録される文字列の数は増加し、その文字列の長さも
長くなるので、辞書に登録できる文字列の数、言い換え
れば文字列の長さを所定長以下に限定し、そのような辞
書を用いて動的辞書型アルゴリズムによって符号化を行
う。
と符号化処理、または復元処理を続行するにつれて辞書
に登録される文字列の数は増加し、その文字列の長さも
長くなるので、辞書に登録できる文字列の数、言い換え
れば文字列の長さを所定長以下に限定し、そのような辞
書を用いて動的辞書型アルゴリズムによって符号化を行
う。
【0025】本発明においては符号化されたデータの復
元においても、符号化時と同様の処理が行われる。すな
わち符号化データに対して、符号化時に定められたグル
ープの順序に従って、各グループの文字列の復元が行わ
れる。すなわち第1番目のグループの所定の個数の部分
文字列が復元された後に、グループの順序に従って1番
目のグループの復元済みの文字位置以上のデータ位置ま
で符号化データが文字列に復元され、最終順位のグルー
プまで同様の処理が繰り返され、その後再び第1番目の
グループの符号化データの復元が行われ、以降その手順
に従ってデータ復元が行われる。
元においても、符号化時と同様の処理が行われる。すな
わち符号化データに対して、符号化時に定められたグル
ープの順序に従って、各グループの文字列の復元が行わ
れる。すなわち第1番目のグループの所定の個数の部分
文字列が復元された後に、グループの順序に従って1番
目のグループの復元済みの文字位置以上のデータ位置ま
で符号化データが文字列に復元され、最終順位のグルー
プまで同様の処理が繰り返され、その後再び第1番目の
グループの符号化データの復元が行われ、以降その手順
に従ってデータ復元が行われる。
【0026】以上のように本発明においては、各ビット
の重みが異なる文字列データが例えば上位ビットと下位
ビットとに分けてそれぞれ符号化され、符号化されたデ
ータが上位ビットと下位ビットとで交互に伝送される。
の重みが異なる文字列データが例えば上位ビットと下位
ビットとに分けてそれぞれ符号化され、符号化されたデ
ータが上位ビットと下位ビットとで交互に伝送される。
【0027】
【実施例】図2は本発明における符号化処理の基本実施
例のフローチャートである。同図において処理が開始さ
れると、ステップ(S)20において入力データ1文字
ずつのデータが複数ビット毎のN個のグループに分けら
れる。例えば1つの文字が1バイトで表わされる場合に
は、例えばその上位ビット4ビットと下位ビット4ビッ
トとの2つのグループに分けれらる。そしてそのN個の
グループに対して符号化の順序が決定され、各グループ
の符号化データに対する現在符号化中のデータ位置を示
すN個のカーソルがそれぞれ各グループの入力データの
先頭(1の位置)に置かれる。
例のフローチャートである。同図において処理が開始さ
れると、ステップ(S)20において入力データ1文字
ずつのデータが複数ビット毎のN個のグループに分けら
れる。例えば1つの文字が1バイトで表わされる場合に
は、例えばその上位ビット4ビットと下位ビット4ビッ
トとの2つのグループに分けれらる。そしてそのN個の
グループに対して符号化の順序が決定され、各グループ
の符号化データに対する現在符号化中のデータ位置を示
すN個のカーソルがそれぞれ各グループの入力データの
先頭(1の位置)に置かれる。
【0028】続いてS21において、まず符号化順序が
第1位の第1グループの文字列データが入力され、その
文字列データをカーソルの位置から部分文字列に分解
し、その部分文字列を符号化した結果が出力され、第1
グループに対するカーソルC1がここで符号化された部
分文字列の直後に置かれる。S22でグループ1の入力
データが全て符号化されたか否かが判定され、まだ符号
化されていない時には、S23でグループ1の入力デー
タに対して予め定められた所定長以上の文字数のデータ
の符号化が行われたか否かが判定され、まだ符号化され
ていない時にはS21以降の処理が繰り返される。
第1位の第1グループの文字列データが入力され、その
文字列データをカーソルの位置から部分文字列に分解
し、その部分文字列を符号化した結果が出力され、第1
グループに対するカーソルC1がここで符号化された部
分文字列の直後に置かれる。S22でグループ1の入力
データが全て符号化されたか否かが判定され、まだ符号
化されていない時には、S23でグループ1の入力デー
タに対して予め定められた所定長以上の文字数のデータ
の符号化が行われたか否かが判定され、まだ符号化され
ていない時にはS21以降の処理が繰り返される。
【0029】S23で所定長以上の文字数の符号化が行
われたと判定された時には、S24で符号化すべき入力
データのグループの番号iが2と置かれ、S25で第2
グループのカーソルの位置C2が第1グループに対する
カーソルの位置C1以上であるか否かが判定され、以上
でない時には第2グループの入力データに対する符号化
を行うためにS26において第2グループの文字列デー
タが入力され、第2グループのデータに対するカーソル
C2 の位置から文字列が部分文字列に分解され、符号化
されて出力される。そしてカーソルC2 が符号化された
部分文字列の直後に置かれ、S25以降の処理が繰り返
される。
われたと判定された時には、S24で符号化すべき入力
データのグループの番号iが2と置かれ、S25で第2
グループのカーソルの位置C2が第1グループに対する
カーソルの位置C1以上であるか否かが判定され、以上
でない時には第2グループの入力データに対する符号化
を行うためにS26において第2グループの文字列デー
タが入力され、第2グループのデータに対するカーソル
C2 の位置から文字列が部分文字列に分解され、符号化
されて出力される。そしてカーソルC2 が符号化された
部分文字列の直後に置かれ、S25以降の処理が繰り返
される。
【0030】S25において、第2番目のグループのデ
ータに対するカーソルC2 が第1のグループに対するカ
ーソルC1 以上であると判定されると、S28において
グループ番号i、ここでは2がグループの総数N未満で
あるか否かが判定され、未満である時にはS27におい
てグループ番号を示すiの値がインクリメントされ、S
25以降の処理が繰り返される。
ータに対するカーソルC2 が第1のグループに対するカ
ーソルC1 以上であると判定されると、S28において
グループ番号i、ここでは2がグループの総数N未満で
あるか否かが判定され、未満である時にはS27におい
てグループ番号を示すiの値がインクリメントされ、S
25以降の処理が繰り返される。
【0031】S25において最後のグループNに対する
カーソルCN が第1のグループに対するカーソルC1 以
上であると判定されると、その後のS28においてグル
ープ番号iがNに達したと判定され、S29で第1のグ
ループの入力データが全て符号化されたことを示す終端
符号がすでに出力されているか否かが判定され、まだ出
力されていない時にはS21以降の処理が繰り返され、
入力データの第1グループから最後の第Nグループまで
の符号化が一般的に何回も行われる。
カーソルCN が第1のグループに対するカーソルC1 以
上であると判定されると、その後のS28においてグル
ープ番号iがNに達したと判定され、S29で第1のグ
ループの入力データが全て符号化されたことを示す終端
符号がすでに出力されているか否かが判定され、まだ出
力されていない時にはS21以降の処理が繰り返され、
入力データの第1グループから最後の第Nグループまで
の符号化が一般的に何回も行われる。
【0032】そしてS22で第1グループに対する入力
データが全て符号されたと判定された時には、S30で
終端符号が出力され、S25〜S28で必要に応じて第
2グループから第Nグループまでの入力データの全てが
符号化された後に、S29ですでに終端符号が出力され
たと判定され、処理を終了する。
データが全て符号されたと判定された時には、S30で
終端符号が出力され、S25〜S28で必要に応じて第
2グループから第Nグループまでの入力データの全てが
符号化された後に、S29ですでに終端符号が出力され
たと判定され、処理を終了する。
【0033】図3は本発明における復号化処理の基本実
施例フローチャートである。同図において処理が開始さ
れると、まずS35でN個のグループの符号化データに
対する復号の順序が、S20における符号化順序と同じ
順序に定められ、また符号化入力データに対する復号化
中の文字位置を示すカーソルCi が全てのグループに対
して符号化データの先頭に置かれる。
施例フローチャートである。同図において処理が開始さ
れると、まずS35でN個のグループの符号化データに
対する復号の順序が、S20における符号化順序と同じ
順序に定められ、また符号化入力データに対する復号化
中の文字位置を示すカーソルCi が全てのグループに対
して符号化データの先頭に置かれる。
【0034】そしてS36で第1グループ符号化入力デ
ータの最終位置を示す終端符号が検出されたか否かが判
定され、まだ検出されていない時にはS37でグループ
1の入力符号化データである圧縮符号の復元が行われ、
復元された部分文字列がカーソルC1 の位置から並べら
れ、カーソルC1 が復元された部分文字列に対応する符
号化入力データの直後に置かれ、S38で第1グループ
のデータに対する所定長以上の文字数の復元が行われた
か否かが判定され、まだ復元されていない時にはS36
以降の処理が繰り返される。
ータの最終位置を示す終端符号が検出されたか否かが判
定され、まだ検出されていない時にはS37でグループ
1の入力符号化データである圧縮符号の復元が行われ、
復元された部分文字列がカーソルC1 の位置から並べら
れ、カーソルC1 が復元された部分文字列に対応する符
号化入力データの直後に置かれ、S38で第1グループ
のデータに対する所定長以上の文字数の復元が行われた
か否かが判定され、まだ復元されていない時にはS36
以降の処理が繰り返される。
【0035】S38で第1グループに対して所定長以上
の文字数の復元が行われたと判定された時には、S39
で復号化される符号化入力データのグループ番号iが2
とされ、S40で符号化処理におけるS25と同様に第
2グループに対するカーソルC2 が第1グループに対す
るカーソルC1 以上であるか否かが判定され、以上でな
い時にはS41で入力された第2グループの圧縮符号の
復元が行われ、復元された部分文字列がカーソルC2 の
位置から並べられ、その後にカーソルC2 が復元された
部分文字列に対応する入力符号化データの直後に置か
れ、S40以降の処理が繰り返される。
の文字数の復元が行われたと判定された時には、S39
で復号化される符号化入力データのグループ番号iが2
とされ、S40で符号化処理におけるS25と同様に第
2グループに対するカーソルC2 が第1グループに対す
るカーソルC1 以上であるか否かが判定され、以上でな
い時にはS41で入力された第2グループの圧縮符号の
復元が行われ、復元された部分文字列がカーソルC2 の
位置から並べられ、その後にカーソルC2 が復元された
部分文字列に対応する入力符号化データの直後に置か
れ、S40以降の処理が繰り返される。
【0036】S40において第2グループに対するカー
ソルが第1グループに対するカーソル以上の位置に達し
たと判定された時には、S43でグループ番号iがN未
満であるか否かが判定され、未満である時にはS42で
iの値がインクリメントされ、S40以降の処理が繰り
返される。
ソルが第1グループに対するカーソル以上の位置に達し
たと判定された時には、S43でグループ番号iがN未
満であるか否かが判定され、未満である時にはS42で
iの値がインクリメントされ、S40以降の処理が繰り
返される。
【0037】S43でグループ番号iがNに達したと判
定された時には、全てのグループ入力データに対する第
1回の復号化が終了したことになるので、S44で第1
グループに対するカーソルC1 の位置まで全グループの
復元文字列を合わせることによって元の文字列が復元さ
れ、S45ですでに終端符号が検出されたか否かが判定
され、まだ検出されていない時にはS36以降の処理が
繰り返され、第1グループから第Nグループまでの符号
化入力データに対する復元処理が一般に何回も続行され
る。
定された時には、全てのグループ入力データに対する第
1回の復号化が終了したことになるので、S44で第1
グループに対するカーソルC1 の位置まで全グループの
復元文字列を合わせることによって元の文字列が復元さ
れ、S45ですでに終端符号が検出されたか否かが判定
され、まだ検出されていない時にはS36以降の処理が
繰り返され、第1グループから第Nグループまでの符号
化入力データに対する復元処理が一般に何回も続行され
る。
【0038】S36において第1グループの符号化入力
データの終わりを示す終端符号が検出された時には、S
39〜S43において残りの2番目からN番目までのグ
ループの入力符号データに対する復元処理が行われ、S
44で全ての元の文字列が復元され、S45ですでに終
端符号を検出したことが判定されて、処理を終了する。
データの終わりを示す終端符号が検出された時には、S
39〜S43において残りの2番目からN番目までのグ
ループの入力符号データに対する復元処理が行われ、S
44で全ての元の文字列が復元され、S45ですでに終
端符号を検出したことが判定されて、処理を終了する。
【0039】図4はLZW符号を用いた符号化処理実施
例のフローチャートである。同図においては、図2にお
ける基本処理実施例のグループの総数N個を2個とし、
入力データの1文字を示す複数ビットがその上位ビット
と下位ビットとにグループ分けされる場合を対象とし
て、符号化処理を説明する。
例のフローチャートである。同図においては、図2にお
ける基本処理実施例のグループの総数N個を2個とし、
入力データの1文字を示す複数ビットがその上位ビット
と下位ビットとにグループ分けされる場合を対象とし
て、符号化処理を説明する。
【0040】図4において符号化処理が開始されると、
まずS50において上位ビットデータに対する辞書DU
と下位ビットデータ用辞書Dl に全ての単一文字のそれ
ぞれが登録され、上位辞書の文字列登録数nU が上位ビ
ットの文字パターンの種類の数AU とされ、また下位辞
書の文字列登録数nl が下位ビットの文字パターンの種
類の数としてのAl とされ、上位カーソルCU と下位カ
ーソルCl とが共に入力データの先頭に置かれる。
まずS50において上位ビットデータに対する辞書DU
と下位ビットデータ用辞書Dl に全ての単一文字のそれ
ぞれが登録され、上位辞書の文字列登録数nU が上位ビ
ットの文字パターンの種類の数AU とされ、また下位辞
書の文字列登録数nl が下位ビットの文字パターンの種
類の数としてのAl とされ、上位カーソルCU と下位カ
ーソルCl とが共に入力データの先頭に置かれる。
【0041】そして、S51で上位カーソルCU の位
置、ここでは上位ビット入力データの最初の位置からの
上位ビット文字列に一致する最長一致文字列SU が辞書
DU の中から検索される。ここではS50において全て
の単一文字が1字だけの文字列として辞書に登録されて
いるので、1字だけの文字列が必ず見つけられる。そし
てS52で〔log2 nU 〕ビットを用いて文字列SU
に対する文字列登録番号が出力される。
置、ここでは上位ビット入力データの最初の位置からの
上位ビット文字列に一致する最長一致文字列SU が辞書
DU の中から検索される。ここではS50において全て
の単一文字が1字だけの文字列として辞書に登録されて
いるので、1字だけの文字列が必ず見つけられる。そし
てS52で〔log2 nU 〕ビットを用いて文字列SU
に対する文字列登録番号が出力される。
【0042】そして検索された文字列SU の次の上位ビ
ット入力データの文字をCHv とする時、S53で文字
列SU の次に文字CHU を付け加えた文字列が上位ビッ
ト辞書DU に登録され、その文字列に辞書登録番号nU
が与えられた後に上位辞書文字列登録数nU の値がイン
クリメントされ、カーソルCU が文字列SU の後の上位
ビット入力データの文字に移動され、S54で上位ビッ
ト文字列の入力が全て終了したか否かが判定され、まだ
入力されていない時にはS55で上位ビットデータに対
するカーソルCU が下位ビットデータに対するカーソル
Cl を越えたか否かが判定される。
ット入力データの文字をCHv とする時、S53で文字
列SU の次に文字CHU を付け加えた文字列が上位ビッ
ト辞書DU に登録され、その文字列に辞書登録番号nU
が与えられた後に上位辞書文字列登録数nU の値がイン
クリメントされ、カーソルCU が文字列SU の後の上位
ビット入力データの文字に移動され、S54で上位ビッ
ト文字列の入力が全て終了したか否かが判定され、まだ
入力されていない時にはS55で上位ビットデータに対
するカーソルCU が下位ビットデータに対するカーソル
Cl を越えたか否かが判定される。
【0043】第1回目の符号化時においては当然ここで
CU はCl を越えたと判定され、続いてS56で下位ビ
ットに対するカーソルCl が上位ビットに対するカーソ
ルC U 以上であるか否かが判定される。ここではまだC
l はCU 以上ではなく、S57で下位ビットに対するカ
ーソルCl の位置から下位ビット入力データの文字列に
一致する最長一致文字列Sl が下位ビット辞書Dl の中
から検索され、S58で文字列Sl に対する辞書登録番
号が〔log2 nl 〕ビットを用いて出力される。
CU はCl を越えたと判定され、続いてS56で下位ビ
ットに対するカーソルCl が上位ビットに対するカーソ
ルC U 以上であるか否かが判定される。ここではまだC
l はCU 以上ではなく、S57で下位ビットに対するカ
ーソルCl の位置から下位ビット入力データの文字列に
一致する最長一致文字列Sl が下位ビット辞書Dl の中
から検索され、S58で文字列Sl に対する辞書登録番
号が〔log2 nl 〕ビットを用いて出力される。
【0044】そして下位ビット入力文字列の中でSl の
次の文字をCHl とする時、文字列Sl の次に文字CH
l が付加された文字列がS59で辞書Dl に登録され、
その文字列に辞書登録番号nl が与えられた後に下位ビ
ット辞書の文字列登録数nlの値がインクリメントさ
れ、下位ビットに対するカーソルCl が文字列Sl の次
の下位ビット文字に移動され、S56以降の処理が繰り
返される。
次の文字をCHl とする時、文字列Sl の次に文字CH
l が付加された文字列がS59で辞書Dl に登録され、
その文字列に辞書登録番号nl が与えられた後に下位ビ
ット辞書の文字列登録数nlの値がインクリメントさ
れ、下位ビットに対するカーソルCl が文字列Sl の次
の下位ビット文字に移動され、S56以降の処理が繰り
返される。
【0045】S56で下位ビットに対するカーソルCl
が上位ビットに対するカーソルCU以上になったと判定
された時には、S60で上位ビット文字列に対する符号
化が終了したことを示す終端符号がすでに出力されてい
るか否かが判定され、まだ出力されていない時にはS5
1以降の処理が繰り返され、上位ビットと下位ビットの
文字列の符号化が一般に何回も続行される。
が上位ビットに対するカーソルCU以上になったと判定
された時には、S60で上位ビット文字列に対する符号
化が終了したことを示す終端符号がすでに出力されてい
るか否かが判定され、まだ出力されていない時にはS5
1以降の処理が繰り返され、上位ビットと下位ビットの
文字列の符号化が一般に何回も続行される。
【0046】そしてS54で上位ビット文字列のデータ
の入力が終了したと判定された時には、S61で上位ビ
ット文字列に対する終端符号が〔log2 nU 〕ビット
を用いて出力され、S56からS59において残りの下
位ビット文字列がある場合には、その文字列の符号化が
行われた後に、S56でカーソルCl がCU 以上になっ
たと判定されると、S60ですでに終端符号が出力され
たことが判定されて、処理を終了する。
の入力が終了したと判定された時には、S61で上位ビ
ット文字列に対する終端符号が〔log2 nU 〕ビット
を用いて出力され、S56からS59において残りの下
位ビット文字列がある場合には、その文字列の符号化が
行われた後に、S56でカーソルCl がCU 以上になっ
たと判定されると、S60ですでに終端符号が出力され
たことが判定されて、処理を終了する。
【0047】図5はLZW符号を用いた復号化処理実施
例のフローチャートである。同図において処理が開始さ
れると、まずS65において符号化処理でのS50にお
けると同様に全ての単一文字が1文字だけの文字列とし
て辞書に登録され、上位カーソルおよび下位カーソルが
それぞれ入力符号化データ(文字列の辞書登録番号)の
先頭に置かれた後に、S66で上位ビット文字列に対す
る終端符号が検出されたか否かが判定される。第1回の
復号化処理においては当然この終端符号が検出されず、
S67で〔log2 nU 〕ビットを用いて表わされた文
字列SU に対する辞書登録番号が入力され、上位ビット
辞書DU を用いて文字列SU が復元され、S68で文字
列SU がカーソルCU の位置、ここでは先頭位置から並
べられる。
例のフローチャートである。同図において処理が開始さ
れると、まずS65において符号化処理でのS50にお
けると同様に全ての単一文字が1文字だけの文字列とし
て辞書に登録され、上位カーソルおよび下位カーソルが
それぞれ入力符号化データ(文字列の辞書登録番号)の
先頭に置かれた後に、S66で上位ビット文字列に対す
る終端符号が検出されたか否かが判定される。第1回の
復号化処理においては当然この終端符号が検出されず、
S67で〔log2 nU 〕ビットを用いて表わされた文
字列SU に対する辞書登録番号が入力され、上位ビット
辞書DU を用いて文字列SU が復元され、S68で文字
列SU がカーソルCU の位置、ここでは先頭位置から並
べられる。
【0048】続いてS69で、復元された文字列SU の
最初の文字、すなわちカーソルCUの示す上位ビット文
字をCHU とする時、その文字が現在行われている復号
化処理の1回前の復号化処理において復元された上位ビ
ット文字列SU ′の後に付け加えられた文字列が上位ビ
ット辞書DU に登録され、その文字列に辞書登録番号n
U が与えられた後に上位ビット辞書の文字列登録数nU
の値がインクリメントされ、カーソルCU は復元された
文字列SU の直後の上位ビット文字に移動され、S70
で上位ビットに対するカーソルCU が下位ビットに対す
るカーソルClを越えているか否かが判定され、まだ越
えていない時には上位ビットの復号化を更に行う必要が
あるのでS66以降の処理が繰り返される。
最初の文字、すなわちカーソルCUの示す上位ビット文
字をCHU とする時、その文字が現在行われている復号
化処理の1回前の復号化処理において復元された上位ビ
ット文字列SU ′の後に付け加えられた文字列が上位ビ
ット辞書DU に登録され、その文字列に辞書登録番号n
U が与えられた後に上位ビット辞書の文字列登録数nU
の値がインクリメントされ、カーソルCU は復元された
文字列SU の直後の上位ビット文字に移動され、S70
で上位ビットに対するカーソルCU が下位ビットに対す
るカーソルClを越えているか否かが判定され、まだ越
えていない時には上位ビットの復号化を更に行う必要が
あるのでS66以降の処理が繰り返される。
【0049】S70でカーソルCU がCl を越えている
と判定された時には、S71でカーソルCl がCU 以上
であるか否かが判定される。ここではその判定結果は当
然Noであり、下位ビット符号化データの復号を行うた
めにS72で文字列Sl に対応して入力された符号化デ
ータが復元され、S73でその文字列がカーソルClの
位置から並べられる。
と判定された時には、S71でカーソルCl がCU 以上
であるか否かが判定される。ここではその判定結果は当
然Noであり、下位ビット符号化データの復号を行うた
めにS72で文字列Sl に対応して入力された符号化デ
ータが復元され、S73でその文字列がカーソルClの
位置から並べられる。
【0050】続いてS74において、上位ビットに対す
るS69における処理と同様に、直前に復元された下位
ビット文字列Sl ′の直後に現在復元された文字列の最
初の文字CHl が付け加えられて下位ビット辞書Dl に
登録され、その文字列に辞書登録番号nl が与えられた
後に下位ビット辞書文字列登録数nl の値がインクリメ
ントされ、カーソルCl が文字列Sl の直後の下位ビッ
ト文字に移動された後、S71以降の処理が繰り返され
る。
るS69における処理と同様に、直前に復元された下位
ビット文字列Sl ′の直後に現在復元された文字列の最
初の文字CHl が付け加えられて下位ビット辞書Dl に
登録され、その文字列に辞書登録番号nl が与えられた
後に下位ビット辞書文字列登録数nl の値がインクリメ
ントされ、カーソルCl が文字列Sl の直後の下位ビッ
ト文字に移動された後、S71以降の処理が繰り返され
る。
【0051】S71においてカーソルCl がカーソルC
U 以上になったと判定されると、S75で上位ビットと
下位ビットに対して復元された文字列が合成されて元の
文字列が上位ビットに対するカーソルCU の文字位置ま
で復元され、S76で上位ビット文字列に対する終端符
号がすでに検出されたか否かが判定される。
U 以上になったと判定されると、S75で上位ビットと
下位ビットに対して復元された文字列が合成されて元の
文字列が上位ビットに対するカーソルCU の文字位置ま
で復元され、S76で上位ビット文字列に対する終端符
号がすでに検出されたか否かが判定される。
【0052】まだ終端符号が検出されていない時にはS
66以降の処理が繰り返され、一般に上位ビット部分文
字列と下位ビット部分文字列との復元が何回も行われ
る。そしてS66で上位ビット文字列に対する終端符号
が検出された時には、必要に応じてS71〜74の処理
において下位ビット文字列の残りの復元が行われ、S7
5で全ての文字列の復元が行われ、S76で終端符号が
検出されたものとして、処理を終了する。
66以降の処理が繰り返され、一般に上位ビット部分文
字列と下位ビット部分文字列との復元が何回も行われ
る。そしてS66で上位ビット文字列に対する終端符号
が検出された時には、必要に応じてS71〜74の処理
において下位ビット文字列の残りの復元が行われ、S7
5で全ての文字列の復元が行われ、S76で終端符号が
検出されたものとして、処理を終了する。
【0053】前述のように、LZW符号を用いた符号化
方式においては一般に符号化が続けられるにつれて、辞
書に登録される文字列の数が増加するため、必要に応じ
てこの辞書登録文字列の数が制限される。図6は辞書登
録文字列数が制限された時の、LZW符号を用いた符号
化処理のフローチャートである。同図において、図4と
異なる部分のみを説明する。
方式においては一般に符号化が続けられるにつれて、辞
書に登録される文字列の数が増加するため、必要に応じ
てこの辞書登録文字列の数が制限される。図6は辞書登
録文字列数が制限された時の、LZW符号を用いた符号
化処理のフローチャートである。同図において、図4と
異なる部分のみを説明する。
【0054】図6において図4と異なる部分は、図4の
S53およびS59の各ステップのみである。図6にお
いてはS53の代わりにS80〜82,S59の代わり
にS85〜87の処理が行われる。S80においては上
位ビット辞書Dv における文字列登録数nv が最大登録
数以下であるか否かが判定され、以下である時にはS8
1で図4のS53におけると同様に文字列SU CHU が
新たに登録され、上位ビット辞書DU の文字列登録数n
U の値がインクリメントされた後に、S82でカーソル
CU が復元された文字列SU の直後の上位ビット文字に
対応する入力データの位置に移動され、その後S54以
降の処理が行われる。これに対してS80で登録文字列
数nU が最大登録数以下でない時にはS81の処理は行
われず、S82でのカーソルの移動のみが行われる。
S53およびS59の各ステップのみである。図6にお
いてはS53の代わりにS80〜82,S59の代わり
にS85〜87の処理が行われる。S80においては上
位ビット辞書Dv における文字列登録数nv が最大登録
数以下であるか否かが判定され、以下である時にはS8
1で図4のS53におけると同様に文字列SU CHU が
新たに登録され、上位ビット辞書DU の文字列登録数n
U の値がインクリメントされた後に、S82でカーソル
CU が復元された文字列SU の直後の上位ビット文字に
対応する入力データの位置に移動され、その後S54以
降の処理が行われる。これに対してS80で登録文字列
数nU が最大登録数以下でない時にはS81の処理は行
われず、S82でのカーソルの移動のみが行われる。
【0055】S59の代わりに図6で行われるS85〜
87における処理は、S80〜82の上位ビットに対す
る処理を下位ビットに適用するものであり、その処理は
全く同様であるのでその説明を省略する。
87における処理は、S80〜82の上位ビットに対す
る処理を下位ビットに適用するものであり、その処理は
全く同様であるのでその説明を省略する。
【0056】図7は辞書登録数が制限されている場合の
LZW符号を用いた復号化処理のフローチャートであ
る。同図を図5と比較すると、S69の代わりにS90
〜92、S74の代わりにS95〜97の処理が行われ
る点のみが異なっている。例えばS90〜92において
は図6の符号化処理におけるS80〜82の処理に類似
した処理が行われ、S91で上位ビット辞書DU に、直
前に復元された上位ビット文字列SU ′の直後に現在復
元された文字列SU の最初の文字CHU が付加された文
字列が新たに登録される点のみが異なっている。またS
74の代わりに行われるS95〜97の処理は、上位ビ
ットに対する処理S90〜92が下位ビットに対して行
われる点のみが異なっており、その説明を省略する。
LZW符号を用いた復号化処理のフローチャートであ
る。同図を図5と比較すると、S69の代わりにS90
〜92、S74の代わりにS95〜97の処理が行われ
る点のみが異なっている。例えばS90〜92において
は図6の符号化処理におけるS80〜82の処理に類似
した処理が行われ、S91で上位ビット辞書DU に、直
前に復元された上位ビット文字列SU ′の直後に現在復
元された文字列SU の最初の文字CHU が付加された文
字列が新たに登録される点のみが異なっている。またS
74の代わりに行われるS95〜97の処理は、上位ビ
ットに対する処理S90〜92が下位ビットに対して行
われる点のみが異なっており、その説明を省略する。
【0057】
【発明の効果】以上詳細に説明したように、本発明によ
れば1つの文字を表わす複数ビットの各ビットの重みが
異なるような文字列を1文字毎に上位ビットと下位ビッ
トのデータに分けて圧縮し、かつ上位ビット符号化デー
タと下位ビット符号化データとを交互に出力するため
に、データを格納しておくバッファの容量を小さくする
ことができる。また符号化データの復元側では、入力さ
れる符号化データの上位側データと下位側データとが入
力されるたびに、それらを組み合わせて順次復元文字列
を得ることができ、文字列の復元に要する時間としての
オーバヘッドを最小にすることが可能となる。
れば1つの文字を表わす複数ビットの各ビットの重みが
異なるような文字列を1文字毎に上位ビットと下位ビッ
トのデータに分けて圧縮し、かつ上位ビット符号化デー
タと下位ビット符号化データとを交互に出力するため
に、データを格納しておくバッファの容量を小さくする
ことができる。また符号化データの復元側では、入力さ
れる符号化データの上位側データと下位側データとが入
力されるたびに、それらを組み合わせて順次復元文字列
を得ることができ、文字列の復元に要する時間としての
オーバヘッドを最小にすることが可能となる。
【図1】本発明の機能ブロック図である。
【図2】本発明における符号化処理基本実施例のフロー
チャートである。
チャートである。
【図3】本発明における復号化処理基本実施例のフロー
チャートである。
チャートである。
【図4】LZW符号を用いた符号化処理実施例のフロー
チャートである。
チャートである。
【図5】LZW符号を用いた復号化処理実施例のフロー
チャートである。
チャートである。
【図6】LZW符号を用いた符号化処理実施例のフロー
チャート(辞書登録文字列数に制限がある場合)であ
る。
チャート(辞書登録文字列数に制限がある場合)であ
る。
【図7】LZW符号を用いた復号化処理実施例のフロー
チャート(辞書登録文字列数に制限がある場合)であ
る。
チャート(辞書登録文字列数に制限がある場合)であ
る。
【図8】スライド辞書型アルゴリズムを説明する図であ
る。
る。
【図9】スライド辞書型アルゴリズムを用いて出力され
る符号化データの説明図である。
る符号化データの説明図である。
【図10】LZSS/QIC−122符号化処理のフロ
ーチャートである。
ーチャートである。
【図11】QIC−122符号の符号語フォーマットを
示す図である。
示す図である。
【図12】図11のフォーマットにおけるメタ記号を示
す図である。
す図である。
【図13】QIC−122符号を用いた符号化例を示す
図である。
図である。
【図14】動的辞書型アルゴリズムを用いた符号化によ
って出力されるデータの説明図である。
って出力されるデータの説明図である。
【図15】LZW符号による符号化処理従来例のフロー
チャートである。
チャートである。
【図16】LZW符号による復号化処理従来例のフロー
チャートである。
チャートである。
1 Pバッファ
2 Qバッファ
─────────────────────────────────────────────────────
フロントページの続き
(56)参考文献 特開 平5−134847(JP,A)
特開 平4−49414(JP,A)
(58)調査した分野(Int.Cl.7,DB名)
G06F 5/00
H03M 7/30
Claims (6)
- 【請求項1】 入力される文字列を符号化してデータ圧
縮するデータ圧縮時において、該文字列内の各文字を構
成する複数個のビットをそれぞれ複数のグループに分
け、該複数のグループ間での符号化の順序が定められた
符号化方式であって、 該符号化の順序が第1番目のグループのデータを1文字
分以上符号化し、 該符号化の順序に従って第2番目以降のグループのデー
タをそれぞれ該第1番目のグループ内で符号化済みの文
字と対応するデータ位置以上まで符号化し、 該符号化の順序が最終のグループのデータの1回目の符
号化後に、前記符号化の順序が第1番目のグループのデ
ータの1文字分以上の符号化以降の処理を繰り返すこと
を特徴とするデータ圧縮および復元方式。 - 【請求項2】 前記符号化の順序が第1番目から最終ま
でのグループの各グループ毎に、同一グループの符号化
済み文字列と一致する最長の部分文字列に対応するデー
タの符号化を行うことを特徴とする請求項1記載のデー
タ圧縮および復元方式。 - 【請求項3】 前記符号化の順序が第1番目のグループ
のデータに対する各回の符号化において、それぞれ所定
長以上の部分文字列の符号化を行うことを特徴とする請
求項1、または2記載のデータ圧縮および復元方式。 - 【請求項4】 前記符号化の順序が最終のグループのデ
ータの1回目の符号化後の、前記第1番目のグループの
データに対する2回目以降の符号化において、 前記第2番目以降のグループ内で最も符号化済みの文字
の長さが長いグループにおける符号化済みの文字に対応
するデータ位置まで符号化を行うことを特徴とする請求
項1,2、または3記載のデータ圧縮および復元方式。 - 【請求項5】 前記符号化の順序が定められた各グルー
プ毎に、同一グループの符号化済み文字列を格納する辞
書を備え、 該辞書に格納可能な文字列数が制限された状態で各グル
ープ毎に部分文字列データの符号化を行うことを特徴と
する請求項1,2,3、または4記載のデータ圧縮およ
び復元方式。 - 【請求項6】 前記符号化方式によって圧縮されたデー
タの復元時において、前記複数のグループ間で定められ
た符号化順序と同一の順序に従って行われるデータ復号
化方式であって、 前記符号化の順序が第1番目のグループの符号化データ
を所定の個数の文字分だけ復号化し、 該符号化の順序に従って、第2番目以降のグループの符
号化データをそれぞれ、該第1番目のグループ内で復号
化済みの文字と対応するデータ位置以上まで復号化し、 該復号化の順序が最終のグループのデータの1回目の復
号化後に、前記符号化の順序が第1番目のグループのデ
ータの所定個数文字分の復号化以降の処理を繰り返すこ
とを特徴とする請求項1,2,3,4、または5記載の
データ圧縮および復元方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15192293A JP3442105B2 (ja) | 1993-06-23 | 1993-06-23 | データ圧縮および復元方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15192293A JP3442105B2 (ja) | 1993-06-23 | 1993-06-23 | データ圧縮および復元方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0721010A JPH0721010A (ja) | 1995-01-24 |
JP3442105B2 true JP3442105B2 (ja) | 2003-09-02 |
Family
ID=15529137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15192293A Expired - Fee Related JP3442105B2 (ja) | 1993-06-23 | 1993-06-23 | データ圧縮および復元方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3442105B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4328358B2 (ja) * | 2004-12-07 | 2009-09-09 | 日本電信電話株式会社 | 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 |
-
1993
- 1993-06-23 JP JP15192293A patent/JP3442105B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0721010A (ja) | 1995-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5933104A (en) | Method and system for compression and decompression using variable-sized offset and length fields | |
US5229768A (en) | Adaptive data compression system | |
JP3240495B2 (ja) | データの可逆符号化方法および装置、並びに、伸長装置 | |
US5874908A (en) | Method and apparatus for encoding Lempel-Ziv 1 variants | |
KR20070086661A (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
JP3141001B2 (ja) | 符号化方法及びデータ圧縮器、並びにコンピュータ・プログラムを記録した記録媒体 | |
JP3241788B2 (ja) | データ圧縮方式 | |
EP0435802B1 (en) | Method of decompressing compressed data | |
US5010344A (en) | Method of decoding compressed data | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JP3442105B2 (ja) | データ圧縮および復元方式 | |
JP3127016B2 (ja) | データ圧縮及び復元方法 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
JP3105598B2 (ja) | ユニバーサル符号を用いたデータ圧縮方式 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JP2999587B2 (ja) | データ圧縮及び復元方式 | |
JP3051501B2 (ja) | データ圧縮方法 | |
JP3038233B2 (ja) | データ圧縮及び復元装置 | |
JP2999561B2 (ja) | データ圧縮及び復元装置 | |
JP3708318B2 (ja) | データ圧縮/復元装置およびデータ圧縮/復元方法 | |
JP3083329B2 (ja) | データ圧縮復元方式 | |
JP2002135128A (ja) | データ圧縮方法、データ圧縮・伸長方法、データ圧縮装置及びデータ圧縮・伸長装置 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JP2003318739A (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: 20030610 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090620 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100620 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |