JP3105598B2 - ユニバーサル符号を用いたデータ圧縮方式 - Google Patents

ユニバーサル符号を用いたデータ圧縮方式

Info

Publication number
JP3105598B2
JP3105598B2 JP28956891A JP28956891A JP3105598B2 JP 3105598 B2 JP3105598 B2 JP 3105598B2 JP 28956891 A JP28956891 A JP 28956891A JP 28956891 A JP28956891 A JP 28956891A JP 3105598 B2 JP3105598 B2 JP 3105598B2
Authority
JP
Japan
Prior art keywords
character
byte
input
character string
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
Application number
JP28956891A
Other languages
English (en)
Other versions
JPH05224878A (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 JP28956891A priority Critical patent/JP3105598B2/ja
Publication of JPH05224878A publication Critical patent/JPH05224878A/ja
Application granted granted Critical
Publication of JP3105598B2 publication Critical patent/JP3105598B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ユニバーサル型アルゴ
リズムを用いて文字情報等の入力文字列を圧縮符号化す
るユニバーサル符号を用いたデータ圧縮方式に関する。
近年、文字コード、ベクトル情報、画像など様々な種類
のデータがコンピュータで扱われるようになっており、
扱われるデータ量も急速に増加してきている。大量のデ
ータを扱うときは、データの中の冗長な部分を省いてデ
ータ量を圧縮することで、記憶容量を減らしたり、速く
伝送したりできるようになる。
【0002】このような様々なデータを1つの方式でデ
ータ圧縮できる方法としてユニバーサル符号化が提案さ
れている。ここで、本発明の分野は、文字コードの圧縮
に限らず、様々なデータに適用できるが、以下では、情
報理論で用いられている呼称を踏襲し、データの1ワー
ド単位を文字と呼び、データが任意ワードつながったも
のを文字列と呼ぶことにする。ユニバーサル符号の代表
的な方法として、ジブ−レンペル(Ziv-Lempel)符号が
ある(詳しくは、例えば、宗像『Ziv-Lempelのデータ圧
縮法』、情報処理、Vol.26,No.1,1985年を参照のこ
と)。
【0003】ジブーレンペル符号では (1)ユニバーサル型と、 (2)増分分解型(Incremental parsing ) の2つのアルゴリズムが提案されている。更に、ユニバ
ーサル型アルゴリズムの改良として、LZSS符号があ
る(T.C.Bell,“Better OPM/L Text Compression ”,IE
EE Trans. on Commun., Vol.COM-34, No.12, Dec. 1986
参照)や、1/4インチ・カートリッジ磁気テープの
標準圧縮方式であるQIC−122符号がある。
【0004】また、増分分解型アルゴリズムの改良とし
ては、LZW(Lempel-Ziv-Welch)符号がある(T.A. W
elch, “A Technique for High-Performance Data Comp
ression ”,Computer, June 1984参照)。これらの改良
符号は補助記憶装置のファイル圧縮や、パソコン通信で
のデータ伝送に利用されるようになっている。
【0005】
【従来の技術】まず従来のユニバーサル型アルゴリズム
とその改良の1つであるQIC−122符号について説
明する。 1.ユニバーサル型アルゴリズム ユニバーサル型アルゴリズムは、演算量は多いが、高圧
縮率が得られるデータ圧縮方式である。
【0006】即ち、ユニバーサル型アルゴリズムにあっ
ては、符号化しようとする文字列をを、符号化済みの文
字列の任意の位置から最大長一致する系列、所謂部分列
に区切り、入力文字列を過去の最大長一致する部分列の
複製として符号化する。図14にユニバーサル型ジブー
レンペル符号の符号化方式を示す。図14において、辞
書としての機能をもつPバッファ12には入力済みの文
字列が格納されており、文字入力部としてのQバッファ
10にはこれから符号化しようとする文字列が入力され
ている。パターンマッチング部26はQバッファ10の
文字列をPバッファ12の系列と照合し、Pバッファ1
2の中で一致する最大長の文字部分列を検索する。
【0007】そして、Pバッファ12中で検索した最大
長一致する部分列を指定するため図15に示す情報の組 Pバッファ中の最大長一致系列の開始位置(開始アドレ
ス)一致長(レングス) として符号化する。なお、一致系列がなければ不一致の
シンボルと共に生データを出力する。
【0008】次にQバッファ10内の符号化した文字列
をPバッファ12に移して新たな符号化済み文字列を登
録する。以下、同様の操作を繰り返し、入力文字列を部
分列に分解して符号化する。このようにジブーレンペル
符号では現在の文字列を、符号化済みの過去の文字列か
らの複製として符号化するものである。ジブーレンペル
符号を用いた場合、文字コードの文書情報は1/2程度
に圧縮できる。 2.QIC−122符号 3Mを中心とするメーカの団体であるQIC(Quauter
Inch Cartrrige Standard Inc.)が1/4インチ・カー
トリッジ磁気テープの標準圧縮方式として採用した符号
である。
【0009】QIC−122符号のアルゴリズムでは、
Pバッファとして2048バイトの履歴をもち、Qバッ
ファの符号化する文字列をPバッファ中の文字列の複製
として表すモードと、生データを1バイトづつ符号化す
るモードの2つのモードをもつ。そして、Pバッファ中
の最大長一致文字列が2文字以上の場合、複製モードで
符号化し、それ以外のときは生データ・モードで符号化
する。
【0010】図16はBNFメタ言語で表わされたQI
C−122符号の符号語フォーマットを示す。またBN
Fメタ言語に用いるメタ記号は図17に示す意味をも
つ。図16のQIC−122符号の符号語フォーマット
を詳細に説明すると次のようになる。 (1)圧縮系列(Compressed Stream )は、圧縮ストリ
ング(Compressed String)とエンドマーカで構成され
る。
【0011】(2)圧縮ストリングは、生データについ
ては識別ビット0に続くASCII生バイトで表現さ
れ、また圧縮データについては識別ビット1に続いて圧
縮バイトで表現される。 (3)ASCII生バイトは、8ビットを1バイトして
表現される。 (4)圧縮バイトは、オフセット(開始位置)とレング
ス(一致長)の組でなる。
【0012】(5)オフセット(開始位置)は、識別ビ
ット1の場合は7ビットで表現される。また識別ビット
0のは場合は11ビットで表現される。 (6)エンドマーカは、110000000であり、オ
フセットは0となる。 (7)ビットbは0又は1である。 (8)レングス(一致長)は、図16のように可変長符
号で表現される。
【0013】図18は従来のQIC122符号の符号化
処理を示したフローチャートであり、次のように処理さ
れる。図18において、まずステップS1でPバッファ
の内容を空にし、またQバッファに符号化しようとする
入力データを詰める。次にステップS2でQバッファの
直前文字の位置からの文字列に一致するPバッファの最
長文字列Sを検索する。続いてステップS3で検索でき
た最長文字列Sが2文字以上か否か判別する。
【0014】最小文字列Sが1文字の場合はステップS
4に進んで生データ・モードとなり、生データ・モード
であることを示すフラクビット0とASCIIコードで
なる生データ1バイトを出力する。一方、最長文字列S
が2文字以上であった場合には、ステップS5に進んで
複製モードとし、圧縮データであることを示すフラグビ
ット1に続いて最長文字列Sの出現位置と一致長の組を
符号化する。
【0015】ステップS6では符号化済みのQバッファ
の文字列又は文字をPバッファに移すと共に、同じ数の
新たな文字をQバッファに入力する。更にQIC−12
2符号のアルゴリズムではPバッファは2048バイト
と固定であるため、Pバッファに移した文字数分の最も
古い文字をPバッファから捨てる。以下、ステップS7
で全て文字の処理済みが判別されるまで同様な処理を繰
り返す。
【0016】図19にQIC−122符号の符号化の具
体例を示す。図19は文字列「ABAAAAAACAB
A」が入力した場合を例にとっている。まず最初の3文
字「ABA」に関してはPバッファ中の一致する文字数
が1文字以下であることからASCII生バイトのビッ
ト系列を出力する。4文字目から8文字目までの5つの
「A」については、Pバッファの直前文字「A」と一致
することから、 圧縮バイト識別ビット 7ビットオフセット識別ビット オフセット=1 レングス=5バイト でなるビット系列「1 1 0000001 110
0」として出力する。
【0017】ここで最大長一致の部分列の開始位置を示
すオフセットの値は、Pバッファの最新登録位置(アド
レス)から前に遡って何番目かを示している。9番目の
文字「C」はPバッファにないことからASCII生バ
イトを出力する。10〜12番目の文字「ABA」はP
バッファの先頭からの3文字として既に登録済みである
ので、 圧縮バイト識別ビット 7ビットオフセット識別ビット オフセット=9 レングス=3バイト でなるビット系列「1 1 0001001 01」を
出力する。
【0018】
【発明が解決しようとする課題】このような従来のユニ
バーサル型ジブ−レンペル符号を用いたデータ圧縮方式
にあっては、計算機処理しやすいように、入力データの
1語を例えば8ビットデータとするバイト単位で扱って
符号化している。しかしながら、このような従来のユニ
バーサル符号を用いたデータ圧縮方式にあっては、漢字
コードやRGB各5ビットのカラーコードとなどの1語
が複数バイトで構成されるデータを、バイト単位のユニ
バーサル型ジブ−レンペル符号で圧縮すると、データの
バイト構成についての規則性が取り込めないため、効率
の良い圧縮ができないという問題点があった。
【0019】本発明は、このような従来の問題点に鑑み
てなされたもので、入力データの1語が複数バイトで構
成されていてもデータのバイト構成に関する規則性を取
り込んで効率良く圧縮できるようにしたユニバーサル符
号を用いたデータ圧縮方式を提供することを目的とす
る。
【0020】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず本発明は、入力データの1語を所定ビッ
ト数毎に区切った複数の文字で表現し、該文字を処理単
位として符号化を行って圧縮するユニバーサル符号を用
いたデータ圧縮方式を対象とする。
【0021】このようなデータ圧縮方式を対象に本願第
1発明にあっては、図1(a)に示すように、入力デー
タを格納した文字列入力部(Qバッファ)10と、符号
化済みの文字列を保持する辞書(Pバッファ)12と、
文字列入力部10の入力データから前記所定ビット単位
に区切って得られた先頭の入力文字が、前記入力データ
の1語中の何番目の文字位置かを検出する文字位置検出
手段14と、文字位置検出手段14による文字位置と同
一の文字位置から始まる前記辞書12に保持された符号
化済み文字列と前記入力文字を含む入力文字列とを比較
し、入力文字列に最長一致する符号化済み文字列の部分
列を検索する辞書検索手段16と、辞書検索手段16で
検索された最長一致する部分列の開始位置と一致文字長
との組を符号化する符号化手段18と、を設けたことを
特徴とする。
【0022】具体的なバイト構成で説明すると、入力デ
ータの1語をバイト単位に区切った複数の文字で表現
し、該文字を処理単位として符号化を行って圧縮するユ
ニバーサル符号を用いたデータ圧縮方式に於いて、入力
データを格納した文字列入力部10と、符号化済みの文
字列を保持する辞書12と、文字列入力部10の入力デ
ータからバイト単位に区切って得られた先頭の入力文字
が、入力データの1語中の何バイト目かを検出するバイ
ト位置検出手段14と、バイト位置検出手段14による
バイト位置と同一のバイト位置から始まる辞書12に保
持された符号化済み文字列と前記入力文字を含む入力文
字列とを比較し、入力文字列に最長一致する符号化済み
文字列の部分列を検索する辞書検索手段16と、辞書検
索手段16で検索された最長一致する部分列の開始位置
と一致バイト長との組を符号化する符号化手段18と、
を設けたことを特徴とする。
【0023】また本願の第2発明は、図1(b)に示す
ように、入力データの1語を所定ビット数に区切った1
又は複数の文字で表現し、且つ入力データの1語をu個
の文字で構成される第1複合文字と、異なるv個の文字
で構成される第2複合文字の2通りで表現し、更に第1
複合文字及び第2複合文字の識別コードを先頭文字に備
えた入力文字列を対象に符号化を行って圧縮するユニバ
ーサル符号を用いたデータ圧縮方式を対象とし、入力デ
ータを格納した文字列入力部10と、符号化済みの文字
列を保持する辞書12と、辞書12に保持された符号化
済みの最終文字が前記第1複合文字か第2複合文字かを
検出する文字種検出手段20と、辞書12に保持された
符号化済みの最終文字が文字種検出手段20で検出され
た第1複合文字又は第2複合文字の何番目の文字かを検
出する文字位置検出手段22と、文字種検出手段20で
検出された最終文字と同一の文字種で且つ前記文字位置
検出手段22で検出された同一の文字位置の直後から始
まる辞書12の符号化済み文字列と前記最終文字の直後
から始まる入力文字列とを比較し、入力文字列に最長一
致する符号化済み文字列の部分列を検索する辞書検索手
段16と、辞書検索手段16で検索された最長一致する
部分列の開始位置と一致文字長との組を符号化する符号
化手段18とを設けたことを特徴とする。
【0024】具体的にバイト構成を例にとると、次のよ
うになる。即ち、入力データの1語をバイト単位に区切
った1又は複数の文字で表現し、且つ入力データの1語
をバイト数uのuバイト文字と異なるバイト数vのvバ
イト文字の2通りで表現し、更にuバイト文字及びvバ
イト文字の識別コードを先頭バイトに備えた入力文字列
を対象に符号化を行って圧縮するユニバーサル符号を用
いたデータ圧縮方式を対象とし、入力データを格納した
文字列入力部10と、符号化済みの文字列を保持する辞
書12と、辞書12に保持された符号化済みの最終文字
が前記uバイト文字かvバイト文字かを検出する文字種
検出手段20と、辞書12に保持された符号化済みの最
終文字が文字種検出手段20で検出されたuバイト文字
又はvバイト文字の何バイト目かを検出するバイト位置
検出手段22と、文字種検出手段20で検出された最終
文字と同一の文字種で且つバイト位置検出手段22で検
出された同一バイト位置の直後から始まる辞書12の符
号化済み文字列と最終文字の直後から始まる入力文字列
とを比較し、入力文字列に最長一致する符号化済み文字
列の部分列を検索する辞書検索手段16と、辞書検索手
段16で検索された最長一致する部分列の最終文字を除
く開始位置と一致バイト長との組を符号化する符号化手
段18と、を設けたことを特徴とする。
【0025】例えば入力データの1語を、バイト数1の
1バイト文字と異なるバイト数2の2バイト文字の2通
りで表現し、更に1バイト文字及び2バイト文字の識別
コードを先頭バイトに備えた入力文字列を対象に符号化
を行う。
【0026】
【作用】このような構成を備えた本発明のデータ圧縮方
式によれば、1語が複数バイトで構成されるデータにつ
き、Qバッファの入力文字列の先頭が1語の何バイト目
から始まっているかに応じて、Pバッファ中に保持して
いる符号化済み各文字の同一バイト位置から始まる文字
列の内から最長一致する文字列を検索して、最大一致長
文字列のPバッファ内の開始位置と一致バイト長との組
を符号化するようになり、データのバイト構成の規則性
のもつ冗長性を削減して効率の良い符号化を可能とす
る。
【0027】また1語が例えば1バイトと2バイトの2
通りで表わされる入力データについては、Pバッファの
最終文字をQバッファの入力文字列の先頭に加えた文字
列の符号化を行うようにし、先頭文字となるPバッファ
の最終文字はその識別コードによって1バイト文字か2
バイト文字かが判り、また2バイト文字については1バ
イト目か2バイト目かが判る。
【0028】このため、最終文字の文字種と最終文字が
1語の何バイト目かを示すバイト位置の情報を利用し
て、Pバッファ中に保持している最終文字と同じ文字種
で同一バイト位置から始まる文字列の内から最長一致文
字列を検索して、最大一致長文字列のPバッファ内の開
始位置と一致バイト長との組を符号化する。この場合、
先頭のPバッファ最終文字は符号語に含めないことか
ら、検索文字列の先頭の最終文字を除いたPバッファ内
の開始位置と一致バイト長との組を符号化する。
【0029】この場合にもデータのバイト構成の規則性
のもつ冗長性を削減して効率の良い符号化を可能とす
る。
【0030】
【実施例】図2は本発明の第1実施例を示した実施例構
成図である。図2において、24はバッファメモリであ
り、符号化を行おうとする入力データを格納する文字列
入力部としてのQバッファ10と、符号化済み文字列を
保持する辞書としての機能を有するPバッファ12が割
り当てられている。
【0031】ここで、Qバッファ10に格納される入力
データとしては、漢字コードやRGB各5ビットのカラ
ーコード等の1語が複数バイトで構成されるデータであ
り、以下の説明にあっては、1語が2バイト(1バイト
は8ビット)で構成される入力データの符号化を例にと
っている。また、以下の説明では符号化は1バイト単位
に行われることから1バイトのデータを文字と呼び、従
って2バイトで構成される入力データの1語は2文字で
構成されることになる。
【0032】26はCPUを用いた符号化処理手段とし
て機能するパターンマッチング部であり、ユニバーサル
符号化アルゴリズムに従ってQバッファ10の入力文字
列に最長一致する登録済み文字列の部分列をPバッファ
12から検索し、最長一致する部分列の複製としてその
開始位置と一致長の組でなる符号語を出力する。このよ
うなユニバーサル符号化アルゴリズムを実行するため、
パターンマッチング部26には文字位置検出部14,辞
書検索部16及び符号化部18の機能ブロックが設けら
れることになる。
【0033】パターンマッチング部26に設けた文字位
置検出部14は、Qバッファ10に格納されている入力
データの先頭文字が処理対象とする入力データの1語の
中の何バイト目かを検出する。この実施例にあっては、
1語が2バイトからなる入力データを例にとっているこ
とから、文字位置検出部14はQバッファ10の先頭入
力文字が1バイト目か或いは2バイト目を検出すること
になる。
【0034】辞書検索部16は文字位置検出部14で検
出されたQバッファ10の先頭文字の1語内のバイト位
置と同一のバイト位置から始まるPバッファに保持され
た符号化済み文字列とQバッファ10の先頭文字を含む
入力文字列とを比較し、入力文字列に最長一致する符号
化済み文字列の部分列を検索する。更に、符号化部18
は辞書検索部16で検索されたPバッファ12内の符号
化済み文字列の中の最長一致する部分列の開始位置と一
致バイト数との組を符号化し、符号語として出力する。
【0035】図3は図2に示した本発明の第1実施例に
おけるユニバーサル符号化のアルゴリズムを示したフロ
ーチャートである。図3において、まずステップS1で
Pバッファ12の内容を空にし、またQバッファ10に
符号化しようとする入力データを詰める。次にQバッフ
ァ10の先頭バイト10の1語内のバイト位置bpを求
める。この実施例においては、1語が2バイトの場合を
例にとることからステップS2において先頭バイトが1
バイト目かあるいは2バイト目かのいずれかのバイト位
置bpが求められる。
【0036】続いてステップS3に進み、Pバッファ1
2内の符号化済みの各文字の中でステップS2で検出し
たQバッファの先頭バイトのバイト位置bpから始まる
文字列の内、Qバッファ10の入力文字列、即ち入力バ
イトデータ列に一致する最長の文字列、即ちバイトデー
タ列Sを検索する。続いてステップS4に進んでPバッ
ファ12から最長バイトデータ列Sが2バイト以上か否
か判定し、最長バイトデータ列Sが1バイトの場合はス
テップS5に進んで生データモードとなり、生データモ
ードであることを示すフラグビット0とASCIIコー
ドでなる生データ1バイトを出力する。
【0037】一方、最長バイトデータ列Sが2バイト以
上であった場合にはステップS6に進んで複製モードと
し、圧縮データであることを示すフラグビット1に続い
て最長バイトデータ列SのPバッファ12内における出
現位置を示す一致開始文字位置と一致バイト長の組を符
号化する。ステップS5またはS6における符号化が済
むとステップS7に進み、符号化済みのQバッファ10
の文字列または文字をPバッファ12に移すと共に同じ
数の新たな文字をQバッファ10に入力する。
【0038】更に、QIC−122符号のアルゴリズム
ではPバッファ12は2048バイトと固定であるた
め、Pバッファ12に新たに移した文字数分だけ最も古
い文字をPバッファ12から捨てる。以下、ステップS
8で全ての文字の処理済みが判別されるまで同様な処理
を繰り返す。図4は図2の第1実施例における1語が2
バイトで構成される入力データのユニバーサル符号化の
具体例を示した説明図である。
【0039】まず図4(a)はQバッファ10とPバッ
ファ12の内容を示している。この例ではQバッファ1
0の先頭語は「bi」であり、「b」はバイト位置0で
あり、また「i」はバイト位置1となる。ここで、バイ
ト位置0は第1バイト目を示し、バイト位置1は第2バ
イト目を示している。従って、Qバッファ10の先頭文
字即ち先頭バイト「b」はバイト位置が0で始まる1語
の1バイト目である。
【0040】このようにQバッファ10の先頭文字
「b」のバイト位置0(1バイト目)が検出できたなら
ば、Pバッファ12内に保持されているバイト位置0の
各文字から始まる文字列を入力文字列と比較する。この
場合、Pバッファ12における文字位置2から文字位置
4のバイト位置0で示す1バイト目までの文字列「bibj
c 」がQバッファ10の入力文字列「bibjc 」に一致す
ることが検索される。即ち、Qバッファ10の入力文字
列は、Pバッファ12中の文字位置2から5バイト分一
致することになる。
【0041】この場合の符号化は図4(b)に示すよう
に、一致開始文字位置「2」と一致バイト長「5」の組
で符号化することになる。図5は図2の第1実施例によ
るユニバーサル符号化の他の具体例を示した説明図であ
る。まず図5(a)に示すように、Qバッファ10の先
頭文字kはバイト位置が1であるから、1語の2バイト
目から始まっていることが検出される。このため、Pバ
ッファ12の中の同じバイト位置1から始まる文字列を
検索すると、Pバッファ12中の文字位置4から3バイ
ト分の文字列「kcl 」がQバッファ10の入力文字列
「kcl 」に一致する。この場合には、図5(b)に示す
ように、一致開始位置「4」と一致バイト長「3」の組
で符号化する。
【0042】この図4及び図5の具体例から明らかなよ
うに、符号語における一致開始文字位置は最大Pバッフ
ァ12に登録可能な全語数をアドレスできるビット数が
あればよいことになる。また、一致バイト長について
は、ビット当りの符号化効率が最大になるビット長を最
大一致バイト長に固定的に定めればよい。更に、符号語
として出力する一致開始文字位置と一致バイト長の組に
ついては、各ビット数を最大ビット数に固定した固定長
符号とせずに一致開始文字位置及び一致バイト長の値に
応じた可変長符号とすることで、効率のよい符号化を実
現することができる。この一致開始文字位置と一致バイ
ト長の組の可変長符号化については、後の説明で更に明
らかにする。
【0043】図6は本発明の第2実施例を示した実施例
構成図であり、この実施例にあっては、入力データの1
語が1バイト構成と2バイト構成の2通りからなるデー
タの符号化を対象とする。このようなデータとしては、
例えばシフトJISコードデータがあり、図7に示すよ
うに1バイトデータと2バイトデータの2通りがあり、
且つ1バイトデータ及び2バイトデータの先頭バイトを
使用して1バイト識別コード及び2バイト識別コードを
行っている。
【0044】従って、図7に示すような1バイトデータ
と2バイトデータの2通りをもつシフトJISコード等
の入力データの符号化については、Qバッファの先頭バ
イトが1バイトデータか2バイトデータかを識別すると
共に、2バイトデータであった場合は2バイトデータの
1バイト目なのか2バイト目なのかを識別することによ
って辞書としてのPバッファ中の文字列の先頭位置を選
択して符号化すればよい。
【0045】再び図6を参照するに、バッファメモリ2
4に確保されたQバッファ10及びPバッファ12は図
2の第1実施例と同じである。一方、パターンマッチン
グ部26には文字種検出部20,文字位置検出部22,
辞書検索部16及び符号化部18が設けられる。パター
ンマッチング部26における符号化はQバッファ10に
保持された符号化済み文字列の最終文字にQバッファ1
0の先頭文字に続く文字列を加えた入力文字列を対象に
符号化を行う。
【0046】ここで、Qバッファ10の最終文字を符号
化の先頭文字とする理由は文字種検出部20において符
号化する文字列の先頭文字の文字種を検出するためであ
る。即ち、Pバッファ12に保持された文字列について
は、既に符号化が済んでいることから各文字の文字種及
びバイト位置が得られているからである。従って、文字
種検出部20はQバッファ10の最終文字の文字種即ち
1バイト複合文字か2バイト複合文字かを検出する。ま
た、文字位置検出部22は文字種検出部20で検出した
文字種の1語におけるPバッファ12の最終文字が何番
目の文字か、即ち何バイト目かを検出する。
【0047】辞書検索部16は文字種検出部20からの
検出文字種及び文字位置検出部22からの検出文字位置
の2つの情報を受けて、Pバッファ12に保持されてい
る最終文字と同一の文字種で且つ同一文字位置の直後か
ら始まる符号化済み文字列とQバッファ10の入力文字
列とを比較し、同一文字種の最終文字の直後から始まる
文字列に最長一致するPバッファ12内の文字列を検索
する。
【0048】符号化部18は辞書検索部16でPバッフ
ァ12から検索された最長文字列の一致開始文字位置と
一致バイト長の組を符号化する。図8は図6の実施例に
ついて入力データの1語が第1複合文字としてのuバイ
ト文字と第2複合文字としてのvバイト文字の2通りか
らなる入力データをユニバーサル符号化するアルゴリズ
ムのフローチャートを示す。但し、u,vは1語のバイ
ト数を示し、u<vとなる関係にある。具体的には、u
=1とする1バイト文字とv=2とする2バイト文字と
なる。勿論、u,vの値は処理対象とする入力データに
応じて適宜に定められる。
【0049】図8において、まずステップS1でPバッ
ファ12の内容を空にし、またQバッファに符号化しよ
うとする入力データ、即ちuバイト文字とvバイト文字
の2通りで表現される入力データを詰める。次にステッ
プS2でPバッファ12の最終文字がuバイト文字かv
バイト文字かを検出する。同時に、Pバッファ12の最
終文字が検出できたuバイト文字またはvバイト文字の
何バイト目かのバイト位置を検出する。
【0050】続いてステップS3に進み、検出したuバ
イト文字またはvバイト文字の検出バイト位置の直後か
ら始まり、入力バイトデータ列と一致するPバッファ1
2内の最長バイトデータ列(最長文字列)Sを検索す
る。続いてステップS4でPバッファ12から検索した
最長バイトデータ列Sが3バイト以上か否か判別し、2
バイト未満の場合にはステップS5に進んで生データモ
ードとなり、生データモードであることを示すフラグビ
ット0とASCIIコードでなる生データ1バイトまた
は2バイトを出力する。
【0051】一方、最長バイトデータ列Sが3バイト以
上であった場合にはステップS6に進んで複製モードと
し、圧縮データであることを示すフラグビット1に続い
て、最長バイトデータ列SのPバッファ最終文字を除く
先頭のuバイト文字またはvバイト文字の文字位置と、
一致バイト長より最終文字を除くために1バイト引いた
一致バイト長の組を符号化する。
【0052】ステップS5またはS6の符号化が済むと
ステップS7に進み、符号化済みのQバッファ10の文
字列または文字をPバッファ12に移すと共に同じ数の
新たな文字をQバッファ10に入力する。更に、QIC
−122符号のアルゴリズムではPバッファ12は20
48バイトと固定であるため、Pバッファ12に新たに
移した文字数分だけ最も古い文字をPバッファ12から
捨てる。以下、ステップS8で全ての文字の処理済みが
判別されるまで同様な処理を繰り返す。
【0053】図9は図6の第2実施例におけるユニバー
サル符号化の具体例を示した説明図である。図9(a)
はQバッファ10とPバッファ12の内容を示したもの
で、Pバッファ12の最終文字「a」を加えた入力文字
列の符号化を行う。まず、Pバッファ12の最終文字
「a」の文字種を検出する。この場合、最終文字はuバ
イト文字である。また、最終文字「a」のバイト位置を
検出する。この場合、バイト位置は0であり、uバイト
文字の1ビット目を示している。
【0054】Pバッファ12の最終文字「a」の文字種
及びバイト位置が検出できたならば、Pバッファ12に
保持している最終文字「a」と同一文字種となるuバイ
ト文字のバイト位置0と同一位置の直後から始まる各文
字列について、Pバッファ12の最終文字を含むQバッ
ファ10の入力文字列「cdbac 」との比較を行う。この
場合、Pバッファ12の文字位置2から3バイト分の文
字列が最長文字列として検索できる。
【0055】従って、符号化は図9(b)に示すように
Pバッファ12の最長文字列について一致開始文字位置
「2」と一致バイト長「3」の組で符号化する。この符
号化についても、一致開始文字位置は最大でPバッファ
12の全文字数をアドレスできるビット数があればよ
く、この最大ビット数による固定長符号とすればよい。
また、一致バイト長については、経験的に得られる最大
一致バイト長の固定長符号とすればよい。更に、一致開
始文字位置及び一致バイト長については、固定長符号と
せずに各値に応じた可変長符号とすることで効率のよい
符号化ができる。
【0056】更にまた、図4,図5及び図9の例では、
Pバッファ12内における文字位置の出現番号を右から
左に数えているが、逆に左から右に数えることにしても
よい。次に本発明の符号化処理で行われる出現番号とし
ての文字位置の可変長符号化の具体的な実施例を説明す
る。 (1)可変固定長符号化 Pバッファ12内の一致開始文字位置iの出現個数をn
とすると、一致開始文字位置iを「log2 n」ビット
で表わして符号化する。ここで「log2 n」はlog
2 n以上の最小の整数を表わす。
【0057】例えばある入力文字列を符号化する際にP
バッファ12内の一致開始位置のアドレス数が例えばn
=12個であったとすると、この時の最大位置n=12
を開始とした最長文字列Sの一致開始文字位置iは、 「log2 n」=「log2 12」=4ビット で表現される可変長符号となる。これを可変固定長符号
化という。 (2)ビット端数補償による可変固定長符号化 前記(1)の可変固定長符号化では、出現個数nに対応
した最大値i=nまでの一致開始文字位置iを「log
2 n」ビットで表すと 「log2 n」−log2 nビット のビットロスが生じる。このビットの端数のロスを減し
て一致開始文字位置iを表現することにより符号化効率
を向上させるものとしてビット端数補償がある(例えば
「Ziv-Lempel符号の改良とシミュレーションによる性能
評価−(II)」、電子通信学会技術研究報告C84-135, p
p.1-8,1984参照)。
【0058】このビット端数補償にあっては、出現個数
nに対応した最大一致開始文字位置をi=nとした時の
ビット数pを p=「log2 n」 とし、また一致開始文字位置iの最上位ビットを除く
(p−1)ビットで表したものをi* とする。同様に最
大出現番号nの最上位ビットを除く(p−1)ビットで
表したものをn* とする。
【0059】このような条件のもとで、ビット端数補償
による一致開始文字位置iの可変長符号語は、 i* ≦n* のとき、i* で表し、 i* >n* のとき、i* の後に最上位ビットを付けて
表す。 ここで一致開始文字位置の出現個数n=12をとし、一
致開始文字位置iをi=0〜11としてビット端数補償
で表す例を図10に示す。
【0060】図10においては、 p=「log2 n」=「log2 12」=4ビット p−1=3ビット であり、 i* ≦3ビットのとき、i* で表し、 i* >3ビット* のとき、i* の後に最上位ビットを
付けて表す。
【0061】即ち、一致開始文字位置としての参照番号
i=0〜11の4ビットの2進表示は、前記の条件を
満たす。また一致開始文字位置としての参照番号i=4
〜7の4つについては、上位1ビットを除いた下位3ビ
ットi* で表わす。一方、前記の条件を満たす一致開
始文字位置としての参照番号i=0〜3及びi=8〜1
1については、上位1ビットを除いた下位3ビットi*
の後に2進表示の上位1ビットを付けて区別する。 (3)PBC可変長符号化(Phasing in Binary Codes
) このPBC可変長符号化は、例えば「 Compression」,
Prentice-Hall Inc. 1990, pp.293-294 に記載される。
【0062】PBC可変長符号化では i<2P −n−1のとき、i* で表し、 i≧2P −n−1のとき、一致開始文字位置iに(2
P −n−1)を加えた値(i+2P −n−1)をpビッ
トで表す。 出現個数n=12の時の一致開始文字位置(参照番号)
i=0〜11についてのPBC符号化の具体例を図11
に示す。
【0063】図11において、前記の条件を満足する
のは参照番号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表現される。 (4)多値算術符号化 前記(2)(3)の可変長符号化は、一致開始文字位置
iによってpビットとp−1ビットで表しており、一致
開始文字位置iの1個ずつでみるとビットの端数のロス
を減じることができるものの、一致開始文字位置iの列
全体としてみると冗長性がまだ残る。
【0064】そこで、ビットのロスを更に削除するた
め、出現個数n個の一致開始文字位置が等確率で出現す
るものと仮定して一致開始文字位置(シンボル)iを多
値算術符号化する(多値算術符号化については、例え
ば、文献“Arithmetic Coding for Data Compressio
n”, Communication of the ACM, June 1987, Vol.30,
No.6, pp.520-540参照)。
【0065】図12(a)(b)に複数個のシンボルの
符号化に用いる多値算術符号化の符号化、復号化の概略
フローを示す。図12(a)多値算術符号化は、データ
列を[0,1]の数直線上の一点に対応付けるものであ
り、シンボルごとに出現したシンボルの出現確率から求
めた累積出現確率によって[0,1]区間を逐次、細分
割するものである。
【0066】図13は多値算術符号化の処理内容を示し
たもので、1回目の文字位置の登録個数nをn=4であ
り、最長文字列の一致開始文字位置iがi=2番目であ
ったとすると、上限=1と下限=0の間の4分割された
区間の中のi=2に対応するの区間が選択される。次
に2回数目の文字位置の登録個数も同じn=4であり、
この場合の最長文字列の一致開始文字位置iがi=1番
目であったとすると、更に4分割された中のの区間が
選択される。
【0067】以下同様に選択された区間の再分割が進
み、N回目に最終文字列に基づく区間が選択されると、
この選択区間の中の任意の一点の値と区間の上限又は下
限を示す値との組を符号語として出力する。また図12
(a)のアルゴリズムでは、シンボル列全体の符号化が
終了するまで符号語が得られず、また、符号語全体が得
られないと復号ができないようになっているが、実際の
多値算術符号化では、有限桁の固定長のレジスタで演算
して、ビット単位に符号語を得ることができる。
【0068】即ち、図13の第1回目の符号化では、例
えば上限が「001」下限が「010」であり、両者の
最上位ビットは共に「0」であることから、この最上位
のビット「0」は出力してしまうようにする。2回目移
行についても同様である。更に多値算術符号化を用いる
場合、文字列の「一致長」についても、各一致長ごとに
出現数を計数しておき、計数値から推定した一致長の出
現確率を出現番号とともに多値算術符号化するようにし
てもよい。
【0069】尚、上記の実施例はQIC−122符号を
例にとるものであったが、これに限定されずジブーレン
ペル符号等の適宜のユニバーサル符号につきそのまま適
用できる。また上記の実施例は、符号化の処理単位を8
ビットでなる1バイトを1文字とした場合を例にとるも
のであったが、符号化の処理単位を決める1文字のビッ
ト数は、4ビット、7ビット等と任意のビット数とし、
このビット数単位に入力データの1語を区切って複数文
字で表現するようにしてもよい。
【0070】
【発明の効果】以上説明してきたように本発明によれ
ば、データの1語が符号化処理単位の複数単位、例えば
複数バイトで構成されている場合にも、入力データのバ
イト構成がもつ冗長性を削減したユニバーサル符号化を
行って圧縮率を向上させることができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の第1実施例構成図
【図3】図2の符号化アルゴリズムを示したフローチャ
ート
【図4】図2の実施例におけPバッファの検索と符号語
を示したフローチャート
【図5】図2の実施例におけPバッファの他の検索と符
号語を示したフローチャート
【図6】本発明の第2実施例構成図
【図7】本発明により符号化されるシフトJISコード
の説明図
【図8】図6の符号化アルゴリズムを示したフローチャ
ート
【図9】図6の実施例におけるPバッファの検索と符号
語を示したフローチャート
【図10】本発明で用いるビット端数補償による可変長
符号化の具体例説明図
【図11】本発明で用いるPBC符号化による具体例説
明図
【図12】本発明で用いる多値算術符号化による符号化
及び復号化アルゴリズムを示した説明図
【図13】本発明の多値算出符号化の処理内容を示した
説明図
【図14】ユニバーサル型ジブーレンペル符号の符号化
方式説明図
【図15】ユニバーサル符号語のデータ形式説明図
【図16】QIC122符号のフォーマット説明図
【図17】図16に使用したBNFメタ言語の説明図
【図18】OIC122符号の符号化アルゴリズムを示
したフローチャート
【図19】QIC−122符号による符号化の具体例を
示した説明図
【符号の説明】
10:文字列入力部(Qバッファ) 12:辞書(Pバッファ) 14,22:文字位置検出手段(文字位置検出部) 16:辞書検索手段(辞書検索部) 18:符号化手段(無効果部) 20:文字種検出手段(文字種検出部) 24:バッファメモリ 26:パターンマッチング部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平3−209922(JP,A) 特開 平3−78322(JP,A) 特開 平3−70214(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 H03M 7/46

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】入力データの1語を所定ビット数毎に区切
    った複数の文字で表現し、該文字を処理単位として符号
    化を行って圧縮するユニバーサル符号を用いたデータ圧
    縮方式に於いて、 入力データを格納した文字列入力部(10)と、 符号化済みの文字列を保持する辞書(12)と、 前記文字列入力部(10)の入力データから前記所定ビ
    ット単位に区切って得られた先頭の入力文字が、前記入
    力データの1語中の何番目の文字位置かを検出する文字
    位置検出手段(14)と、 該文字位置検出手段(14)による文字位置と同一の文
    字位置から始まる前記辞書(12)に保持された符号化
    済み文字列と前記入力文字を含む入力文字列とを比較
    し、入力文字列に最長一致する符号化済み文字列の部分
    列を検索する辞書検索手段(16)と、 該辞書検索手段(16)で検索された最長一致する部分
    列の開始位置と一致文字長との組を符号化する符号化手
    段(18)と、を設けたことを特徴とするユニバーサル
    符号を用いたデータ圧縮方式。
  2. 【請求項2】入力データの1語をバイト単位に区切った
    複数の文字で表現し、該文字を処理単位として符号化を
    行って圧縮するユニバーサル符号を用いたデータ圧縮方
    式に於いて、 入力データを格納した文字列入力部(10)と、 符号化済みの文字列を保持する辞書(12)と、 前記文字列入力部(10)の入力データからバイト単位
    に区切って得られた先頭の入力文字が、前記入力データ
    の1語中の何バイト目かを検出するバイト位置検出手段
    (14)と、 該バイト位置検出手段(14)によるバイト位置と同一
    のバイト位置から始まる前記辞書(12)に保持された
    符号化済み文字列と前記入力文字を含む入力文字列とを
    比較し、 入力文字列に最長一致する符号化済み文字列の部分列を
    検索する辞書検索手段(16)と、 該辞書検索手段(16)で検索された最長一致する部分
    列の開始位置と一致バイト長との組を符号化する符号化
    手段(18)と、を設けたことを特徴とするユニバーサ
    ル符号を用いたデータ圧縮方式。
  3. 【請求項3】入力データの1語を所定ビット数に区切っ
    た1又は複数の文字で表現し、且つ入力データの1語を
    u個の文字で構成される第1複合文字と、異なるv個の
    文字で構成される第2複合文字の2通りで表現し、更に
    第1複合文字及び第2複合文字の識別コードを先頭文字
    に備えた入力文字列を対象に符号化を行って圧縮するユ
    ニバーサル符号を用いたデータ圧縮方式に於いて、 入力データを格納した文字列入力部(10)と、 符号化済みの文字列を保持する辞書(12)と、 前記辞書(12)に保持された符号化済みの最終文字が
    前記第1複合文字か第2複合文字かを検出する文字種検
    出手段(20)と、 前記辞書(12)に保持された符号化済みの最終文字が
    前記文字種検出手段で検出された第1複合文字又は第2
    複合文字の何番目の文字かを検出する文字位置検出手段
    (22)と、 前記文字種検出手段(20)で検出された最終文字と同
    一の文字種で且つ前記文字位置検出手段(22)で検出
    された同一の文字位置の直後から始まる前記辞書(1
    2)の符号化済み文字列と前記最終文字の直後から始ま
    る入力文字列とを比較し、該入力文字列に最長一致する
    符号化済み文字列の部分列を検索する辞書検索手段(1
    6)と、 該辞書検索手段(16)で検索された最長一致する部分
    列の開始位置と一致文字長との組を符号化する符号化手
    段(18)と、を設けたことを特徴とするユニバーサル
    符号を用いたデータ圧縮方式。
  4. 【請求項4】入力データの1語をバイト単位に区切った
    1又は複数の文字で表現し、且つ入力データの1語をバ
    イト数uのuバイト文字と異なるバイト数vのvバイト
    文字の2通りで表現し、更にuバイト文字及びvバイト
    文字の識別コードを先頭バイトに備えた入力文字列を対
    象に符号化を行って圧縮するユニバーサル符号を用いた
    データ圧縮方式に於いて、 入力データを格納した文字列入力部(10)と、 符号化済みの文字列を保持する辞書(12)と、 前記辞書(12)に保持された符号化済みの最終文字が
    前記uバイト文字かvバイト文字かを検出する文字種検
    出手段(20)と、 前記辞書(12)に保持された符号化済みの最終文字が
    前記文字種検出手段(20)で検出されたuバイト文字
    又はvバイト文字の何バイト目かを検出するバイト位置
    検出手段(22)と、 前記文字種検出手段(20)で検出された最終文字と同
    一の文字種で且つ前記バイト位置検出手段(22)で検
    出された同一バイト位置の直後から始まる前記辞書(1
    2)の符号化済み文字列と前記最終文字の直後から始ま
    る入力文字列とを比較し、該入力文字列に最長一致する
    符号化済み文字列の部分列を検索する辞書検索手段(1
    6)と、 該辞書検索手段(16)で検索された最長一致する部分
    列の開始位置と一致バイト長との組を符号化する符号化
    手段(18)と、を設けたことを特徴とするユニバーサ
    ル符号を用いたデータ圧縮方式。
  5. 【請求項5】請求項4記載のユニバーサル符号を用いた
    データ圧縮方式に於いて、 入力データの1語を、バイト数1の1バイト文字と異な
    るバイト数2の2バイト文字の2通りで表現し、更に1
    バイト文字及び2バイト文字の識別コードを先頭バイト
    に備えた入力文字列を対象に符号化を行うことを特徴と
    するユニバーサル符号を用いたデータ圧縮方式。
JP28956891A 1991-11-06 1991-11-06 ユニバーサル符号を用いたデータ圧縮方式 Expired - Fee Related JP3105598B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28956891A JP3105598B2 (ja) 1991-11-06 1991-11-06 ユニバーサル符号を用いたデータ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28956891A JP3105598B2 (ja) 1991-11-06 1991-11-06 ユニバーサル符号を用いたデータ圧縮方式

Publications (2)

Publication Number Publication Date
JPH05224878A JPH05224878A (ja) 1993-09-03
JP3105598B2 true JP3105598B2 (ja) 2000-11-06

Family

ID=17744917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28956891A Expired - Fee Related JP3105598B2 (ja) 1991-11-06 1991-11-06 ユニバーサル符号を用いたデータ圧縮方式

Country Status (1)

Country Link
JP (1) JP3105598B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03126997U (ja) * 1990-04-02 1991-12-20

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4600342B2 (ja) * 2006-04-21 2010-12-15 船井電機株式会社 データ圧縮プログラム
JP5224878B2 (ja) 2008-04-03 2013-07-03 キヤノン株式会社 眼科装置
JP6065914B2 (ja) 2012-09-21 2017-01-25 富士通株式会社 制御プログラム、制御方法および制御装置
JP6003995B2 (ja) 2012-09-21 2016-10-05 富士通株式会社 圧縮プログラム、圧縮方法及び圧縮装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03126997U (ja) * 1990-04-02 1991-12-20

Also Published As

Publication number Publication date
JPH05224878A (ja) 1993-09-03

Similar Documents

Publication Publication Date Title
US5229768A (en) Adaptive data compression system
JPH0869370A (ja) データ圧縮方法およびシステム
JP3141001B2 (ja) 符号化方法及びデータ圧縮器、並びにコンピュータ・プログラムを記録した記録媒体
JP3241788B2 (ja) データ圧縮方式
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP3105598B2 (ja) ユニバーサル符号を用いたデータ圧縮方式
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JP3241787B2 (ja) データ圧縮方式
JP3038223B2 (ja) データ圧縮方式
JP2940948B2 (ja) データ圧縮方式
JP3127016B2 (ja) データ圧縮及び復元方法
JP3051501B2 (ja) データ圧縮方法
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP3242795B2 (ja) データ処理装置及びデータ処理方法
JP2954749B2 (ja) データ圧縮方式
JP3078601B2 (ja) データ圧縮方法
JPH05152971A (ja) データ圧縮・復元方法
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JP3100206B2 (ja) データ圧縮方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
JP3388767B2 (ja) データ圧縮方式
JP3388768B2 (ja) データ圧縮及び復元方式
JP3012677B2 (ja) Zl符号化方法
JP2999561B2 (ja) データ圧縮及び復元装置
JP2999587B2 (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: 20000801

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080901

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080901

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090901

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees