JP3266787B2 - データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム - Google Patents

データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム

Info

Publication number
JP3266787B2
JP3266787B2 JP5505896A JP5505896A JP3266787B2 JP 3266787 B2 JP3266787 B2 JP 3266787B2 JP 5505896 A JP5505896 A JP 5505896A JP 5505896 A JP5505896 A JP 5505896A JP 3266787 B2 JP3266787 B2 JP 3266787B2
Authority
JP
Japan
Prior art keywords
symbol
data
node
code
order
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
JP5505896A
Other languages
English (en)
Other versions
JPH08316848A (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 JP5505896A priority Critical patent/JP3266787B2/ja
Publication of JPH08316848A publication Critical patent/JPH08316848A/ja
Application granted granted Critical
Publication of JP3266787B2 publication Critical patent/JP3266787B2/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】
【従来の技術】近年、文字コード、画像データ等の様々
な種類のデータがコンピュータで扱われるようになり、
取り扱われるデータ量も増大している。そのような大量
のデータは、データ中の冗長な部分を省くことにより、
圧縮することが可能である。このようにデータの圧縮を
行うことにより、ディスク容量を見かけ上大きくした
り、遠隔地への伝送時間を短縮(送るデータ量が減るこ
とによる)することができる。
【0003】上記した様々な種類のデータを1つの方式
で圧縮できる方法として、ユニバーサル符号化による圧
縮方式がある。以下に、このユニバーサル符号化による
データ圧縮方式の説明を行う。なお、上述のように、ユ
ニバーサル符号化はあらゆる種類のデータに適用できる
が、以下の説明では、文字コードの符号化に例をとって
説明を行う。また、情報理論に基づき、説明文中におい
て、データの1WORD単位を「文字」と呼ぶこととし、任
意の文字が繋がったものを「文字列」と呼ぶこととす
る。
【0004】ユニバーサル符号化方式には大きく分けて
次の2種類がある。データ系列の類似性を利用した辞書
型符号化方式と、データ列の出現頻度を利用した確率統
計型符号化方式である。本発明は、後者、確率統計型符
号化方式に関するものである。
【0005】確率統計型符号化方式の中の代表的な方式
の一つにハフマン符号化方式がある。このハフマン符号
化方式は、情報源の文字の出現頻度が判っており且つ一
文字単位に符号化する方式では、最も圧縮効果の高い方
式である。この方式は、「節点」と各節点を結ぶ「枝」
からなる木構造で表現する符号表(以下、符号木と称す
る)を、用いる。
【0006】木の各部の名称を、図27を参照して、説
明する。まず、一番上にある節点を「根」と呼ぶ。図2
7の例では、節点1が根となる。ある節点(仮に“X”
とする)に枝で接続されている下の節点(仮に“Y”と
する)を、「節点Xの子」と呼び、逆に点Xを、「節点
Yの親」と呼ぶ。例えば、節点6の子は節点8と節点9
であり、節点6の親は節点3である。また、親の親、そ
のまた親などを「先祖」と呼び、子の子、そのまた子な
どを「子孫」と呼ぶ。例えば、節点5の先祖は節点1の
みであり、節点3の子孫は節点8と節点9である。さら
に、二つの節点の親が同一の節点である時、これらの節
点を「兄弟」と呼ぶ。子を持たない節点のことを「葉」
と呼ぶ。また、葉でない節点のことを「内部節点」と呼
ぶ。このような符号木においては、符号木の各葉に文字
を割り当てている。そして、各枝は、必ず一つの節点か
ら二つに分岐しているので、夫々に"0"又は"1"の符号
が与えられる。従って、各葉に割り当てられた文字に
は、根からその葉までの経路をなす各枝に付された符号
の列が、1対1で対応する。従って、ある文字を符号化
する場合には、根からこの文字に対応した葉までの経路
(枝)を辿ることにより、一義的に、特定の2進数で表
された符号に変換することができる。
【0007】このような符号木を作成するためのハフマ
ン符号化の原理を、図28を参照して、説明する。ハフ
マン符号化においては、最初に、出現した各文字(以
下、「シンボル」と称する)に対応する葉を作り、それ
ぞれの葉には、そのシンボルの生起確率または出現頻度
を書いておく。なお、この葉は、右から左に向けて出現
頻度(出起確率)が高くなるように並べられる。
【0008】そして、生起確率の最も低い(最も出現頻
度の少ない)2つ葉を子とする親の節点を、新しく一つ
作る。この新しい節点(親)には、2つの葉(子)の生
起確率の和を書き込む。また、この新しい節点(親)と
2つの葉(子)との間を、2本の枝で結ぶ。この2本の
枝のうち、右側のものには“1”の値を付与し、左側の
ものには“0”の値を付与する。
【0009】次に、残りの葉と新しい節点とを比較し、
それらのうちで最も生起確率の低い2つを選び、それら
2つの節点又は葉を子とする親の節点を新しく一つ作
る。また、この新しい節点(親)と2つの子との間を、
2本の枝で結ぶ。以上の作業を、根が生成されて全体が
1つの木になるまで続ける。最終的に得られた符号木に
おいて、根から葉までたどった経路がその葉に対応する
符号語になる。上述しようにして各枝には“0”又は
“1”の符号が付与されているので、各分岐点において
経路を左に分岐した時には"0"が、また、右に分岐した
時に"1"が割り当てられて、一連の符号語を表すことに
なる。図28の符号木に作成することによって得られる
シンボルと符号語との関係を、図29の表に示す。
【0010】このようなハフマン符号化方式(確率統計
型符号化方式)は、更に、予め各シンボルの生起確率が
求まっている静的符号化方式(static),最初に全文字列
を走査して各シンボルの生起確率を得る準適応型符号化
方式(semi-adaptive),及び、シンボルが出現する毎に
頻度をとり生起確率を再計算する適応型符号化方式(ada
ptive)に、分類される。本発明は、データ形式に依存せ
ず、1パスで符号化が行なえる適応型符号化方式(adapt
ive)に関するものである。
【0011】この適応型符号化方式(adaptive)におい
て、各シンボルの出現頻度が変化する度に木の構造及び
符号が更新されていく様子を、図30に例示する。図3
0(a)は、初期段階において作成される符号木を示し
ている。図30において、丸の節点は内部節点を示し、
正方形の接点は葉を示す。また、各節点を示す丸又は正
方形の内側に記された数字は、節点番号(順位)を示し
ている。また、各節点の右肩に付された数字は、各節点
に登録された生起頻度である。また、葉の下に示された
アルファベットは、登録されたシンボルを示している。
従って、図30(a)の段階では、シンボル“a”〜
“g”の生起頻度は、夫々、“7”,“6”,“5”,
“5”,“3”,“2”,“1”となっている。
【0012】この状態からシンボル“g”が表れると、
図30(b)に示すように、この符号木による符号化が
行われた後に、節点15の生起頻度が“2”に増加され
る。これにより、親の節点13,及び先祖の節点9,
2,0の頻度も、夫々、1つインクリメントされる。増
加された結果、節点13の頻度“4”が隣の節点12の
頻度“3”と比較して大きくなるので、節点12と節点
13の入れ替えが行われる。同様に、その親の節点9と
節点8を入れ替える(図30(c)参照)。また、その
親の節点2と節点1とは頻度が逆転していないので、そ
れらの入れ替えは行わない。従って、一つのシンボル
“g”の生起によって、符号木の形態は、最終的に図3
0(d)に示す状態にまで変化する。
【0013】図31乃至図38は、シンボルが次々に生
起された場合における符号木の変化を示している。初期
状態において各シンボルの生起頻度が図32に示す通り
であるとすると、符号木の状態は図31に示すようにな
る。この符号木によれば、図32に示すように、“a”
及び“b”は2ビットに圧縮でき、“c”,“d”及び
“g”は3ビットに圧縮でき、“e”及び“f”は4ビ
ットに圧縮できる。図31及び図32の状態から、シン
ボル“a”が8回生起してその生起頻度が“25”にな
ると、符号木の状態は図33に示すようになる。この符
号木によれば、図34に示すように、“a”は1ビット
に圧縮でき、“b”,“c”,“d”は3ビットに圧縮
でき、“g”は4ビットに圧縮でき、“e”及び“f”
は5ビットに圧縮できる。この状態から、シンボル
“g”が16回生起してその生起頻度が“20”になる
と、符号木の状態は図35に示すようになり、各シンボ
ルの圧縮量は、図36に示すようにになる。この状態か
ら、シンボル“c”が5回生起してその生起頻度が“1
0”になると、符号木の状態は図37に示すようにな
り、各シンボルの圧縮量は、図38に示すようになる。
【0014】このように、適応型符号化方式(adaptive)
によると、シンボルの生起頻度が増すにつれて、当該シ
ンボルに対応する符号語の長さが短くなる。即ち、圧縮
効果が上がる。なお、このように符号木の構成が次第に
変化すると、データの初めと終わりとでは、同じシンボ
ルに対応する符号語が別のものとなってしまう。しかし
ながら、データの復元側は圧縮側と同じ符号木を作成し
ているとともに、データの圧縮側は生起されたシンボル
に対する符号化を行った後に符号木の更新を行ってい
る。従って、データの復元側は、出力される符号語を見
ることで、自分の符号木を圧縮側と同期して更新するこ
とができる。そのため、符号語とシンボルとの対応の変
化に拘わらず、元のシンボルの復元をすることができ
る。
【0015】また、上述の静的符号化方式(static)あ
るいは準適応型符号化方式(semi-adaptive)では、符
号木上には入力に現れる全てのシンボルが予め登録され
ており、シンボルの追加はできない。これに対して、適
応型符号化方式(adaptive)の場合には、シンボルの生
起毎に、シンボルの生起確率を再計算するので、シンボ
ルの追加登録をすることが可能である。このような適応
型符号化方式(adaptive)においてシンボルを追加登録
する場合の手順を、図39に説明する。
【0016】この場合、図39(a)に示すように、初
期設定時においては、符号木上に"未登録"を意味するコ
ード(以下、エスケープコードまたはESCと称する)と
ファイルの最後を示すコード(以下、EOFと称する)の
みを、登録する。そして、出現したシンボルが符号木上
に登録されていない場合は、ESCに対応する符号語とシ
ンボルの生データ(圧縮前のデータ)とを出力する。し
かる後に、ESCの頻度を+1増やすとともに、符号木内
の最も重みの低い節点(葉)を分岐する。分岐によって
できた新しい葉の一つには、元の接点のシンボル(最も
出現頻度の少ないシンボル)を登録し、他の葉には、新
規登録のシンボルを登録するのである(第39図
(b))。
【0017】上記の説明は、一文字毎の生起確率に基づ
いて動的に可変長符号化する場合について述べた。さら
に圧縮効果を高めるためには、入力文字と直前の文字と
の依存関係を(以下、「文脈」と称する)取り入れた、
条件付き出現確率を用いて可変長符号化することで実現
できる。即ち、文字列がある文脈通りに生成される確率
が高くなっている状態下では、文脈の最初のシンボルが
生成された場合に、次に生成されるであろうシンボルを
或る程度(文脈を構成する次のシンボルに)絞ることが
できる。従って、この最初のシンボルが生成された条件
下において適用される符号木を用意しておれば、次のシ
ンボルに対応する符号語の長さを短くすることができ
る。即ち、圧縮率を高めることができるのである。
【0018】「文脈」を取り入れた条件付き出現確率を
用いる場合、文脈及び符号化対象文字は図23に示すよ
うに木構造で表される(以下、文脈木と称する)。この
文脈木は、過去に入力された文脈(文字列の流れを)の
流れをまとめたものである。文脈木の各節点は、文脈木
における子の節点を葉とする符号木を備えている。この
符号木には、各文脈において次のシンボルが出現する頻
度を登録している。このようにして、あるシンボルが生
起された場合において次のシンボルが生起する確率を、
条件つき確率として求めることができるのである。
【0019】この文脈収集方法には以下に示す2つの方
法がある。その第1の方法は、条件つき確率の条件の次
数を固定にする方法である。ここに、次数とは、条件つ
き確率を求める文脈の長さのことである。この場合、例
えば2次の文脈に固定したとすると、直前2文字に繋が
る文字の文脈のみを収集して、条件付確率P(Y|X1,
X2)を得るのである。但し、Yは注目符号化文字であ
り、X1,X2はそれぞれ直前の第1文字,第2文字であ
る。また、その第2の方法は、条件文字列の長さを固定
せずに入力データに応じて次数を伸ばす方法である。こ
れをBlending文脈という。
【0020】
【発明が解決しようとする課題】以上に説明したよう
に、ハフマン符号化方式は、符号木を用いる符号化方式
のうちで、最大の効率でデータ圧縮をすることができる
方式である。とりわけ、適応型ハフマン符号化は、各文
字の生起確率をあらかじめ保持する必要もなく、一つの
ファイル内で生起確率が変動するのに追従できる利点が
あった。この適応型は、各シンボル出現毎に、符号木を
更新する。この更新は、各シンボルの生起頻度のインク
リメント,各節点における生起頻度のインクリメント,
各節点における生起頻度の比較,及び、符号木の構造の
組替えによって実現している。
【0021】しかしながら、実際にこのようにしてハフ
マン木を構築した場合、多くの頻度比較及び頻度インク
リメントが必要であった。また、各節点毎に頻度を保持
する必要があるため、多くのメモリを必要とした。
【0022】本発明の課題は、符号木の各節点毎に頻度
を保持することを不要とすることでメモリの節約を可能
とするとともに、各節点毎に保持された頻度を比較しな
くても、生起頻度が高いシンボルの圧縮率が大きくなる
ように符号木を更新することができるデータ圧縮装置,
データ復元装置,及びデータ圧縮・復元システムを提供
することである。
【0023】
【課題を解決するための手段】本発明によるデータ圧縮
装置,データ復元装置,及びデータ圧縮・復元システム
は、上記課題を解決するために、以下の手段を採用し
た。 (第1の態様) <基本構成>本発明の第1の態様の原理を、図1に示
す。即ち、本発明によるデータ圧縮装置(100)は、
過去に現われた単位データの出現状況に応じて、入力さ
れた単位データを動的に符号化するデータ圧縮装置(1
00)において、前記単位データ毎に順位を定めるとと
もにこの順位毎に符号を割り当てる圧縮用テーブル(1
01)と、圧縮対象の単位データを入力するデータ入力
手段(102)と、前記圧縮用テーブル(101)を検
索して、前記データ入力手段(102)によって入力さ
れた前記単位データに対応する順位を求めてこの順位に
対応する符号を出力する符号化手段(103)と、前記
符号化手段(103)による前記単位データに対応する
符号の出力後に、前記圧縮用テーブル(101)内にお
ける前記単位データの順位を、その順位のみに基づいて
自己組織的に変更する圧縮用テーブル更新手段(10
4)とを備えた事を特徴とする(請求項1に対応)。
【0024】また、本発明によるデータ復元装置(10
5)は、過去に現われた単位データの出現状況に応じ
て、動的に、入力された符号を複号化した単位データを
出力するデータ復元装置(105)において、前記単位
データ毎に順位を定めるとともにこの順位毎に符号を割
り当てる復元用テーブル(106)と、復元対象の符号
を入力する符号入力手段(107)と、前記復元用テー
ブル(106)を検索して、前記符号入力手段(10
7)によって入力された前記符号に対応する順位を求め
てこの順位に対応する単位データを出力するデータ復元
手段(108)と、前記データ復元手段(108)によ
る前記単位符号に対応する符号の出力後に、前記復元用
テーブル(106)内における前記単位データの順位
を、その順位のみに基づいて自己組織的に変更する復元
用テーブル更新手段(109)とを備えたことを特徴と
する(請求項2に対応)。
【0025】また、本発明によるデータ圧縮・復元シス
テムは、上述のデータ圧縮装置(100)と上述のデー
タ復元装置(105)とからなるデータ圧縮・復元シス
テムであって、前記圧縮用デーブル(101)の内容と
前記復元用テーブル(106)の内容とが同一であると
ともに、前記圧縮用テーブル更新手段(104)及び前
記復元用テーブル更新手段(109)は、同一の手順に
従って前記各テーブル(101,106)の更新処理を
行うことを特徴とする(請求項5,8に対応)。
【0026】ここで、「単位データ」とは、文字(シン
ボル)であっても良いし、画像データであっても良い
し、その他のデータであっても良い。 <木構造のテーブルを採用する場合の構成>前記圧縮用
テーブル及び復元用テーブルは、単一の根から枝を繰り
返し分岐させた木構造を有していても良い。この場合、
枝の分岐点及び末端に形成された各節点に対して前記根
から前記末端に向かう順番に順位が付され、前記末端の
節点に前記単位データが登録され、各分岐された枝毎に
互いに識別可能な符号が与えられているように構成す
る。
【0027】この場合、前記データ符号化手段は、前記
根と前記入力された単位データが登録されている節点と
を結ぶ経路上の前記符号を読み取ることによって、前記
符号を出力する(請求項3に対応)。また、前記データ
復元手段は、前記符号と同じ符号が与えられている前記
根からの経路を辿ることにより、その経路の末端の節点
に登録されている前記単位データを探し、探し出した前
記単位データを出力する(請求項4に対応)。 <シンボルの追加登録を可能とする構成>前記圧縮用テ
ーブル及び復元用テーブルには初期状態において終了記
号と未出現記号のみを登録し、未登録の単位データが出
現する度にこの単位データをこれらテーブルに登録する
ようにしてもよい。
【0028】この場合、データ圧縮装置内には、前記デ
ータ入力手段により入力された前記単位データが前記圧
縮用テーブル内に登録されているか否かを判断するデー
タ登録有無判断手段を備えるようにする。そして、前記
符号化手段は、前記データ登録有無判断手段によって前
記単位データが前記圧縮用テーブル内に登録されていな
いと判断された時には、前記未出現記号に対応する順位
を求めてこの順位に対応する符号を出力した後に、前記
単位データ自体を出力し、前記圧縮用テーブル更新手段
は、前記符号化手段が前記未出現記号に対応する符号と
前記単位データ自体とを出力した時には、前記圧縮用テ
ーブル内における前記未出現記号の順位をその順位のみ
に基づいて自己組織的に変更した後に、前記単位データ
を前記圧縮用テーブルに登録するようにする(請求項6
に対応)。
【0029】また、データ復元装置において、前記デー
タ復元手段は、前記復元用テーブル内において前記符号
に対応する順位が前記未登録符号に対応している場合に
は、前記符号の直後に入力された前記単位データをその
まま出力し、前記復元用テーブル更新手段は、前記デー
タ復元手段が符号の直後に入力された前記単位データを
そのまま出力した時には、前記復元用テーブル内におけ
る前記未出現記号の順位をその順位のみに基づいて自己
組織的に変更した後に、前記単位データを前記復元用テ
ーブルに登録する(請求項7に対応)。 <圧縮用テーブル更新手段及び復元用テーブル更新手段
の構成>前記圧縮用テーブル更新手段及び前記復元用テ
ーブル更新手段は、前記単位データが登録された節点を
処理対象節点とするとともに、この処理対象節点を1つ
上の順位の節点と入れ替える更新処理を行うように構成
しても良い(請求項9に対応)。
【0030】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、前記単位データが登録さ
れた節点を処理対象節点とするとともに、この処理対象
節点を複数個順位が上の位置に挿入するとともにこの挿
入した位置から元の位置までにあった他の節点の順位を
1つづつ繰り下げる更新処理を行うように構成しても良
い(請求項10に対応)。
【0031】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、前記単位データが登録さ
れた節点を処理対象節点とするとともに、根に対して同
じだけ離れた同一レベル内においてこの処理対象節点が
最高順位にある場合にはこの処理対象節点を1つ上の順
位の節点と入れ替え、前記同一レベル内においてこの処
理対象節点が最高順位以外にある場合にはこの処理対象
節点を前記最高順位の位置に挿入するとともにこの挿入
した位置から元の位置までにあった他の節点の順位を一
つづつ繰り下げる更新処理を行うように構成しても良い
(請求項11に対応)。
【0032】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、更新処理がなされた節点
よりも前記根側に接続されている節点を新たな処理対象
節点として、この処理対象節点に対して前記更新処理を
行うように構成しても良い(請求項12に対応)。
【0033】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、前記処理対象節点,及び
この処理対象節点の1つ上の順位の節点が共に末端の節
点でない場合には、前記更新処理を行わないように構成
しても良い(請求項13に対応)。
【0034】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、前記単位データが登録さ
れた節点を根の次の順位の位置に挿入する更新処理を行
うようにしても良い(請求項14に対応)。
【0035】また、前記圧縮用テーブル更新手段及び前
記復元用テーブル更新手段は、前記単位データが登録さ
れた節点を、根に対して同じだけ離れた同一レベル内に
おいて最高順位の位置に挿入するとともにこの挿入した
位置から元の位置までにあった他の節点の順位を一つづ
つ繰り下げる挿入処理と一つ上の順位の節点と入れ替え
る交換処理とを繰り返すことにより、前記単位データが
登録された節点を前記根の次の順位の位置まで移動させ
る更新処理を行うように構成しても良い(請求項15に
対応)。
【0036】また、単位シンボルの追加登録を行う場
合、前記圧縮用テーブル更新手段及び前記復元用テーブ
ル更新手段は、未出現記号の節点を分岐し、この分岐に
よって生成された2本の枝の末端の節点に前記実出現記
号及び前記単位データを登録するように構成しても良い
(請求項16に対応)。
【0037】また、単位シンボルの追加登録を行う場
合、前記圧縮用テーブル更新手段及び前記復元用テーブ
ル更新手段は、前記各テーブルを構成する節点のうち末
端でない最下位の節点の次の順位に位置する末端の節点
を分岐し、この分岐によって生成された枝の末端の節点
に前記単位データを登録するように構成しても良い(請
求項17に対応)。 (第2の態様) <基本構成>本発明の第2の態様の原理を、図2に示
す。即ち、本発明によるデータ圧縮装(110)は、過
去に現われたシンボルの直前の文脈での条件付出現状況
に応じて動的に符号化を行うデータ圧縮装置(110)
において、過去に表れた文脈を0次から一定次数までの
範囲で木構造に登録した文脈木,及びこの文脈木の各次
数のシンボル毎にそのシンボルに続くシンボル及び未出
現記号の順位を定めて符号を割り当てた符号木を格納し
た圧縮用テーブル(111)と、圧縮対象のシンボルを
入力する入力手段(112)と、前記シンボルがその末
端に存在する前記一定次の文脈を前記文脈木から探す文
脈検索手段(113)と、前記一定次から前記シンボル
が存在する次数までの文脈に対応している各符号木を参
照して未出現記号の順位を随時符号化する未出現記号順
位符号化手段(114)と、前記文脈検索手段(11
3)によって探し出された前記文脈下において前記シン
ボルを登録している最高次数の符号木を参照して前記シ
ンボルの順位を符号化するシンボル順位符号化手段(1
15)と、前記参照された符号木中での前記シンボルの
順位のみに基づいて、この符号木内における前記シンボ
ルの順位を自己組織的に更新する符号木順位更新手段
(116)と、前記参照された各符号木内での前記未出
現記号の順位のみに基づいて、これら各符号木内におけ
る前記未出現記号の順位を自己組織的に更新する未出現
記号順位更新手段(117)とを有する事を特徴とする
(請求項18に対応)。
【0038】また、本発明によるデータ復元装置(12
0)は、過去に現われたシンボルの直前の文脈での条件
付出現状況に応じて、動的に、入力された符号を複合化
したシンボルを出力するデータ復元装置(120)にお
いて、過去に表れた文脈を0次から一定次数までの範囲
で木構造に登録した文脈木,及びこの文脈木の各次数の
シンボル毎にそのシンボルに続くシンボル及び未出現記
号の順位を定めて符号を割り当てた符号木を格納した復
元用テーブル(121)と、復元対象の符号を入力する
入力手段(122)と、前記シンボルがその末端に存在
すると予想される前記一定次の文脈を前記文脈木から探
す文脈検索手段(123)と、前記シンボルが存在する
と予想される前記一定次の文脈下に存在する符号木に基
づいて、前記符号から前記シンボルの順位を復号化する
シンボル順位復号化手段(124)と、このシンボル順
位復号化手段(124)によって復号された結果未出現
記号が得られた場合には、前記シンボル順位復号化手段
(124)に対して、前記符号木の次数よりも一つ小さ
い次数の符号木を参照して前記シンボル順位の復号化を
行わしめるシンボル順位再復号化手段(125)と、前
記参照された符号木中での前記シンボルの順位のみに基
づいて、この符号木内における前記シンボルの順位を自
己組織的に更新する符号木順位更新手段(126)と、
前記参照された各符号木中での前記未出現記号の順位の
みに基づいて、これら各符号木内における前記未出現記
号の順位を自己組織的に更新する未出現記号順位更新手
段(127)とを有する事を特徴とする(請求項19に
対応)。
【0039】また、本発明によるデータ圧縮・復元シス
テムは、上述のデータ圧縮装置(110)と上述のデー
タ復元装置(120)とからなるデータ圧縮・復元シス
テムであって、前記圧縮用テーブル(111)の内容と
前記復元用テーブル(121)の内容とが同一であると
ともに、前記データ圧縮装置(110)と前記データ復
元装置(120)における前記各符号木順位更新手段
(116,126),及び前記各未出現順位更新手段
(117,127)は、夫々同一の処理を行うことを特
徴とする(請求項20に対応)。
【0040】上述の圧縮用テーブルと復元用テーブル内
の前記符号木には、初期状態において終了記号を含む全
出現シンボルが登録されていても良い(請求項21に対
応)。
【0041】
【作用】
(第1の態様による作用) <基本構成による作用>データ圧縮装置(100)内に
おいて、データ入力手段(102)が単位データを入力
すると、符号化手段(103)は、圧縮用テーブル(1
01)を参照し、入力された単位データに対応する順位
を求めて、この順位に対応する符号を出力する。この符
号化が完了すると、圧縮用テーブル更新手段(104)
は、圧縮用テーブル(101)内における前記単位デー
タの順位を、その順位のみに基づいて自己組織的に変更
する(請求項1の作用)。
【0042】一方、データ復元装置(105)におい
て、符号入力手段(107)が圧縮結果としての符号を
入力すると、データ復元手段(108)は、復元用テー
ブル(106)を参照し、入力された符号に対応する順
位を求めて、この順位に対応する単位データを出力す
る。この符号化が完了すると、復元用テーブル更新手段
(109)は、前記復元用テーブル(106)内におけ
る前記単位データの順位を、その順位のみに基づいて自
己組織的に変更する(請求項2の作用)。
【0043】両テーブル更新手段(104,109)が
各テーブル(101,106)を更新する際には、順位
のみに基づき、生起頻度を一切考慮しない。従って、生
起頻度を各節点に保持する必要や、生起頻度の再計算・
比較を行う必要がない。従って、メモリや制御処理装置
(CPU)の負荷を軽減することができる。なお、この
ように生起頻度の考慮をしなくても、順位が上がるにつ
れて短い符号長を対応させることができるので、生起頻
度の高い文字に短い符号を対応させて圧縮効率を高める
ことができる(請求項1,2の作用)。
【0044】また、データ圧縮装置(100)の圧縮用
テーブル(101)とデータ復元装置(105)の復元
用テーブル(106)の内容とが同一であるとともに、
圧縮用テーブル更新手段(104)及び復元用テーブル
更新手段(109)が同一の手順に従ってこれら各テー
ブル(101,106)の更新処理を行うように構成す
れば、圧縮と復元を同期させられるので、同一の単位デ
ータに対応する符号が変動しても、元の単位データを正
確に復元することができる(請求項5,8の作用)。 <木構造のテーブルを採用する場合の作用>前記圧縮用
テーブル及び復元用テーブルを、単一の根から枝を繰り
返し分岐させた木構造とし、枝の分岐点及び末端に形成
された各節点に対して根から末端に向かう順番に順位を
付し、末端の節点に単位データを登録し、各分岐された
枝毎に互いに識別可能な符号を与えるように構成すれ
ば、木の形態をどの様に更新したとしても、特定の単位
データに対応する符号が一義的に定まる。また、特定の
符号に対応する単位データも一義的に定まる。従って、
正確且つ確実にデータの圧縮及び復元を行うことができ
る(請求項3,4,5の作用) <シンボルの追加登録を可能とする場合の作用>圧縮用
テーブル及び復元用テーブルには初期状態において終了
記号と未出現記号のみを登録し、未登録の単位データが
出現する度にこの単位データをこれらテーブルに登録す
るようにすれば、圧縮に先だって圧縮対象のファイル内
をサーチする必要がないので処理時間の短縮となるとと
もに、データ入力に対してリアルタイムでデータ圧縮を
行うことも可能になる(請求項6,7の作用)。 <圧縮用テーブル更新手段及び復元用テーブル更新手段
の構成を特定した場合の作用>圧縮用テーブル更新手段
及び復元用テーブル更新手段が、各テーブル内におい
て、単位データが登録された節点を1つ上の順位の節点
と入れ替えるように更新処理を行えば、単位データが登
録された節点の順位を確実に上げていくことができる
(請求項9の作用)。
【0045】圧縮用テーブル更新手段及び復元用テーブ
ル更新手段が、各テーブル内において、単位データが登
録された節点を複数個順位が上の位置に挿入するととも
にこの挿入した位置から元の位置までにあった他の節点
の順位を1つづつ繰り下げるように更新処理を行えば、
単位データの順位をより早く上げることができる(請求
項10の作用)。
【0046】圧縮用テーブル更新手段及び復元用テーブ
ル更新手段が、各テーブル内において、単位データが登
録された節点を処理対象接点とするとともに、根に対し
て同じだけ離れた同一レベル内においてこの処理対象節
点が最高順位にある場合にはこの処理対象節点を1つ上
の順位の節点と入れ替えるように更新処理を行い、前記
同一レベル内においてこの処理対象節点が最高順位以外
にある場合にはこの処理対象節点を前記最高順位の位置
に挿入するとともにこの挿入した位置から元の位置まで
にあった他の節点の順位を一つづつ繰り下げるように更
新処理を行えば、同じ単位データが少なくとも2回連続
して生起するだけで、この単位データに対応する符号の
長さを1ビット短くすることができる。よって、圧縮効
率をより高めることができる(請求項11の作用)。
【0047】圧縮用テーブル更新手段及び復元用テーブ
ル更新手段が、各テーブル内において、更新処理がなさ
れた節点よりも前記根側に接続されている節点を新たな
処理対象節点として、この処理対象節点に対して前記更
新処理を行えば、処理対象の単位データよりも上位に登
録されている単位データの順位を徐々に下げることがで
きるので、生起確率が下がったことに即した圧縮を行う
ことができる(請求項12の作用)。この場合、処理対
象節点,及びこの処理対象節点の1つ上の順位の節点が
共に末端の節点でない場合には、更新処理を行わないよ
うに構成すれば、徒にテーブルの更新をしてしまう弊害
を防止できる(請求項13の作用)。
【0048】圧縮用テーブル更新手段及び復元用テーブ
ル更新手段が、各テーブル内において、単位データが登
録された節点を根の次の順位の位置に挿入するように更
新処理を行えば、生起頻度を測る期間を極く最近に限定
したのと同じ結果が得られる。即ち、最近に生起した単
位データは次に生起する確率が最も高くなるという前提
において、当該単位データに対応する符号の長さを最短
にすることができる(請求項14の作用)。
【0049】圧縮用テーブル更新手段及び復元用テーブ
ル更新手段が、各テーブル内において、単位データが登
録された節点を、根に対して同じだけ離れた同一レベル
内において最高順位の位置に挿入するとともにこの挿入
した位置から元の位置までにあった他の節点の順位を一
つづつ繰り下げる挿入処理と一つ上の順位の節点と入れ
替える交換処理とを繰り返すことにより、前記単位デー
タが登録された節点を前記根の次の順位の位置まで移動
させるように更新処理を行えば、他の節点の順位を一つ
づつ下げられるので、他の節点に対する影響を抑えるこ
とができる(請求項15の作用)。
【0050】単位シンボルの追加登録を行う場合、圧縮
用テーブル更新手段及び復元用テーブル更新手段が、未
出現記号の節点を分岐し、この分岐によって生成された
2本の枝の末端の節点に前記未出現記号及び前記単位デ
ータを登録するように構成すれば、単純な制御にてこの
単位データを登録することができる(請求項16の作
用)。
【0051】単位シンボルの追加登録を行う場合、圧縮
用テーブル更新手段及び復元用テーブル更新手段が、各
テーブルを構成する節点のうち末端でない最下位の節点
の次の順位に位置する末端の節点を分岐し、この分岐に
よって生成された枝の末端の節点に前記単位データを登
録するようにすれば、登録後の当該単位データに対応す
る符号が極端に長くなることを防止できる(請求項17
の作用)。 (第2の態様による作用) <基本構成による作用>データ圧縮装置(110)内に
おいて、データ入力手段(112)がシンボルを入力す
ると、文脈検索手段(113)は、圧縮用テーブル(1
11)内の文脈木を参照して、入力されたシンボルがそ
の末端に存在する一定次数の文脈を前記文脈木から探
す。未出現記号順位符号化手段(114)は、この一定
次数から入力されたシンボルが存在する次数までの文脈
に対応している各符号木を参照して、未出現記号の順位
を随時符号化する。次に、シンボル順位符号化手段(1
15)は、入力されたシンボルを登録している最高次数
の符号木を参照して前記シンボルの順位を符号化する。
この符号化が完了すると、符号木順位更新手段(11
6)は、符号化された前記シンボルを登録していた符号
木内における前記シンボルの順位を、その順位のみに基
づいて自己組織的に更新する。また、未出現記号順位更
新手段(117)は、符号化された未出現記号を登録し
ていた符号木内における前記未出現記号の順位を、その
順位のみに基づいて自己組織的に更新する(請求項18
の作用)。
【0052】一方、データ復元装置(120)内におい
て、入力手段(122)が圧縮結果としての符号を入力
すると、文脈検索手段(123)は、入力したシンボル
がその末端に存在すると予想される一定次の文脈を前記
文脈木から探す。シンボル順位復号化手段(124)
は、前記シンボルが存在すると予想される前記一定次の
文脈化に存在する符号木に基づいて、前記符号から前記
シンボルの順位を復号化する。復号された結果未出現記
号が得られた場合には、シンボル順位再復号化手段(1
25)は、このシンボル順位復号化手段(124)に対
して、前記符号木の次数よりも一つ小さい次数の符号木
を参照して前記シンボル順位の復号化を行わしめる。こ
の復元が完了すると、符号木順位更新手段(126)
は、符号化された前記シンボルを登録していた符号木内
における前記シンボルの順位を、その順位のみに基づい
て自己組織的に更新する。また、未出現記号順位更新手
段(127)は、符号化された未出現記号を登録してい
た符号木内における前記未出現記号の順位を、その順位
のみに基づいて自己組織的に更新する(請求項19の作
用)。
【0053】各更新手段(116,117,126,1
27)が各テーブル(111,121)内の符号木を更
新する際には、順位のみに基づき、生起頻度を一切考慮
しない。従って、生起頻度を各節点に保持する必要や、
生起頻度の再計算・比較を行う必要がない。従って、メ
モリや制御処理装置(CPU)の負荷を軽減することが
できる。なお、このように生起頻度の考慮をしなくて
も、順位が上がるにつれて短い符号長を対応させること
ができるので、生起頻度の高い文字に短い符号を対応さ
せて圧縮効率を高めることができる。しかも、文脈木に
登録された各次数の文脈下に、各シンボルが一旦発生し
た条件下において次のシンボルを符号化するための符号
木を分散して設けたので、各文脈木の大きさを小さくす
ることができる。その結果、符号化後の符号長を短くす
ることができるのである(請求項18,19の作用)。
【0054】また、データ圧縮装置(110)内の圧縮
用テーブル(111)の内容とデータ復元装置(12
0)内の復元用テーブル(121)の内容とが同一であ
るとともに、データ圧縮装置(110)とデータ復元装
置(120)における各符号木順位更新手段(116,
126),及び各未出現順位更新手段(117,12
7),が夫々同一の処理を行うように構成すれば、圧縮
と復元を同期させられるので、同一のシンボルに対応す
る符号が変動しても、元のシンボルを正確に復元するこ
とができる(請求項20の作用)。
【0055】上述の圧縮用テーブルと復元用テーブル
に、初期状態において、前記符号木には終了記号を含む
全出現シンボルが登録されていているように構成すれ
ば、圧縮・復元処理を簡略化させることができる(請求
項21の作用)。
【0056】
【実施例】以下、図面に基づいて、本発明の実施例を説
明する。本発明の各実施例の具体的構成を説明する前
に、各実施例に共通する原理を、図3及び図4に説明す
る。図3は、適応型符号化方式によってデータを圧縮す
る際の処理手順を示すフローチャートであり、図4は、
同方式によって圧縮されたデータを復元する際の処理手
順を示すフローチャートである。
【0057】図3の処理は、データを送信する際,デー
タを記憶装置に格納する際,等に実行される。図3にお
いて、最初のステップS01では、初期化を行う。即
ち、シンボルを予め登録させる方式においては、ファイ
ルをサーチして、登場する全シンボルを葉に書き込んだ
符号木を生成する(図9(a)参照)。この際、各シン
ボル毎の確率は計算せず、任意の順番に葉を並べる。そ
して、根が得られるまで、それらの葉に基づいて、親及
び先祖の節点を作る。また、シンボルを予め登録しない
で生起毎に追加する方式においては、上述した未出現記
号(ESCコード)と終了記号(EOFコード)のみを
葉とする符号木を作成する(図17(a)参照)。
【0058】次のステップS02では、ファイルを読み
込んで、シンボル(単位データ)を一つづつ入力する。
次のステップS03では、シンボルが終了したか否かチ
ェックし、未終了であれば、処理をステップS04に進
める。ステップS04では、入力したシンボルが符号木
内におけるどの順位の節点と一致するかを検索する。こ
の順位とは、各節点に付した数字であり、各節点の位置
を示す。即ち、符号木の根を“0”として、子の代,孫
の代と世代(根に対して同じだけ離れたレベルのこと,
以下、単に「レベル」と称する)が下がるにつれて大き
くなるとともに、同レベル内においては右側に位置する
ほど大きくなる(図9(a)参照)。
【0059】次のステップS05では、検索した順位に
従って、入力したシンボルの符号化を行う。即ち、根か
ら検索した順位に位置する葉までの経路を辿り、その経
路上の枝に付されている“0”又は“1”の符号を順番
に拾って、一連の符号語として出力するのである。な
お、シンボルを予め登録しない方式において符号木内に
該当する葉がないときには、ESCに対応する符号語,
及び生データ(圧縮前のデータ)を出力する。
【0060】次のステップS06においては、符号木を
自己組織的に更新,登録する。この「自己組織的に更
新」とは、生起確率の算出や生起頻度の比較をすること
なく、一定ルーチンに従って自律的に符号木の組み替え
を行うことである。そして、次のシンボルの符号化のた
めに、更新した符号木を登録して、処理をステップS0
2に戻す。
【0061】以上のループを繰り返した結果、ファイル
内の全てのシンボルが終了した場合には、ステップS0
3からステップS07に進み、終了を符号化する。予め
シンボルを登録しない方式においては、EOFに対応す
る符号語を出力する。その後、処理を終了する。
【0062】図4の処理は、圧縮データを通信を介して
受信した際,圧縮データを記憶装置から読み出す際,等
に実行される。図4において、最初のステップS11で
は、図3のステップS01と全く同じ処理を行い、図3
によって生成されるのと全く同じ符号木を生成する。次
のステップS12では、図3のステップS05によって
符号化された符号語を、その符号化された順番通りに入
力する。次のステップS13では、入力された符号が終
了を示すか否か,即ち、図3のステップS07にて符号
化された符号であるか否かをチェックする。
【0063】符号が終了を示していない場合には、ステ
ップS14において、符号から順位を検索する。即ち、
符号木の根を起点にして、符号語が示す“0”及び
“1”の順番通りに、枝を辿り、対応する順位の節点
(葉)を探す。
【0064】次のステップS15では、シンボルを復元
する。即ち、検索した順位の節点(葉)に対応するシン
ボルを出力する。なお、シンボルを予め登録しない方式
において、符号語に対応するシンボルがESCコードで
あった場合には、この符号語に続くデータが生データで
あるので、その生データをそのまま出力する。
【0065】続くステップS16においては、符号木を
自己組織的に更新,登録する。即ち、図3のステップS
06と全く同じルーチンに従って、符号木を自律的に組
み替える。従って、図3による圧縮用の符号木の更新に
同期して、全く同じようにして復元用の符号木を更新す
ることができる。そして、次のシンボルの符号化のため
に、更新した符号木を登録して、処理をステップS12
に戻す。
【0066】以上のループを繰り返した結果、終了を示
す符号語を入力した場合には、ステップS13から処理
を終了する。
【0067】
【第1実施例】本発明の第1実施例は、予め全シンボル
を登録しておくとともに、生起したシンボルに対応する
葉とその親及び先祖の節点を、一つ順位が上の節点と交
換するルーチンによって符号木を更新することを特徴と
する。 <ハード構成>図5は、第1実施例によるデータ圧縮・
復元システムを示すブロック図である。図5において、
データ入力部1,符号化部2,テーブル3,データ送信
部4,及びデータ書込部7がデータ圧縮装置を構成し、
データ受信部6,データ読取部9,復元部10,テーブ
ル11,及びデータ出力部12がデータ復元装置を構成
する。
【0068】データ入力手段としてのデータ入力部1
は、キーボード,マウス,等のマン・マシンインタフェ
ースからの入力をコード化する装置,兼、データファイ
ルを格納した外部記憶装置からデータを読み出す装置で
ある。
【0069】このデータ入力部1からデータが渡される
符号化部2は、本実施例によるデータ圧縮(符号化)処
理を実行する符号化手段及び圧縮用テーブル更新手段と
しての装置である。この符号化部2は、データ圧縮をす
るに伴って、テーブル(圧縮用テーブル)3内に符号木
を生成するとともに、データ圧縮(符号化)過程におい
てテーブル3内の符号木を更新する。
【0070】符号化部2によって圧縮(符号化)された
データは、データ送信部4及びデータ書込部7の何れか
一方に出力される。このデータ送信部4は、送信線5に
圧縮データを送出して、通信網等を介して遠隔地に送信
する装置である。また、データ書込部7は、圧縮データ
をデータ格納部8に書き込む装置である。このデータ格
納部8は、ハードディスク等のデータ記憶装置である。
【0071】符号入力手段としてのデータ受信部6は、
送信線5から送信されてくる圧縮データを受信して、復
元部10に転送する装置である。また、符号入力手段と
してのデータ読出部9は、データ格納部8から圧縮デー
タを読み出して、復元部10に転送する装置である。
【0072】復元部10は、転送された圧縮データに対
して本実施例によるデータ復元処理を実行するデータ復
元手段及び復元用テーブル更新手段としての装置であ
る。この復元部10は、データ復元をするに伴って、テ
ーブル(復元用テーブル)11内に符号木を生成すると
ともに、データ復元過程においてテーブル11内の符号
木を更新する。復元部10によって復元されたデータ
は、データ出力部12に転送される。
【0073】このデータ出力部12は、外部記憶装置や
ディスプレイ装置,印刷装置等に復元されたデータを出
力する装置である。 <制御内容> 〔符号化部における制御の内容〕図6は、符号化部2に
おいてデータ入力部1からデータの転送があった時に実
行されるデータ圧縮(符号化)のための処理の内容を示
す。図6の処理は、圧縮対象のファイル(データ)の受
信をトリガとして、スタートする。
【0074】スタート後最初のステップS0001で
は、符号木を初期化して、テーブル3に登録する。即
ち、入力されたファイルの内容をサーチして、登場する
全てのシンボルを抽出する。そして、これら抽出したシ
ンボル及び終了記号(EOF)を葉として、図9(a)
に示すような符号木を新たに作成する。
【0075】この符号木を作成するに際して、各シンボ
ル及び終了記号(EOF)に対応する葉は、任意の順番
に並べられる。そして、片側から順番に選ばれた隣り合
う二つの葉同士が、一つの内部節点(親の節点)に対し
て、2本の枝によって接続される。これら2本の枝のう
ち、左側の枝には符号“0”が割り当てられ、右側の枝
には符号“1”が割り当てられる。このようにして、全
ての葉に内部節点(親の節点)が接続されると、片側か
ら順番に選ばれた隣り合う二つの内部節点同士が、一つ
の内部節点(更に親の節点)に対して、2本の枝によっ
て接続される。これら2本の枝には、上述したのと同様
に、“0”又は“1”の符号が割り当てられる。このよ
うな作業を、唯一の根が接続されるまで、継続する。唯
一の根が接続されて、全ての節点が一つの符号木にまと
められると、根の世代を“レベル0”と定義し、根の子
の世代を“レベル1”と定義し、根の孫の世代を“レベ
ル2”と定義し、根の曾孫の世代を“レベル3”と定義
する。また、各節点に順位を付す。即ち、根を“0”と
し、レベルが下がるほど順位が下がり、同レベル内では
左から右に向けて順位が下がるように、各節点に連続し
た順位を付す。以上のようにして符号木の初期設定が完
了すると、符号化部2は、この符号木をテーブル3に格
納する。また、符号化部2は、この符号木を、通信線5
を介してデータ受信部6に転送するか、データ格納部8
に格納する。
【0076】次のステップS0002では、入力された
データの中から順番にシンボル(文字)を一つ取り出す
(シンボル入力)。次のステップS0003では、ステ
ップS0002にてシンボルを取り出せたか否か,即
ち、ファイル中のシンボルが終了しているか否かを、チ
ェックする。そして、シンボルが終了していない時に
は、処理をステップS0004に進める。
【0077】ステップS0004では、テーブル3内に
格納された符号木を参照して、ステップS0002にて
取り出したシンボルに対応する葉の順位を検索する。そ
して、根から対応葉までの経路を辿り、その経路上の枝
に付されている“0”又は“1”の符号を順番に拾い、
一連の符号語を得る(符号化手段に対応)。
【0078】次のステップS0005では、このように
して得られた符号語を、データ送信部4又はデータ書込
部7に対して出力する。次のステップS0006では、
ステップS0004にて検索した今回処理対象のシンボ
ルに対応する葉の順位を基準に符号木の更新を行う(圧
縮用テーブル更新手段に対応)。図8は、このステップ
S0006にて実行される符号木の更新処理サブルーチ
ンの内容を示すフローチャートである。
【0079】図8に入って最初のステップS0201で
は、今回処理対象のシンボルに対応する葉の順位を変数
“Y”に代入し、このYが0であるかどうかをチェック
する。Yが0でないということは、当該順位が根以外の
節点に対応することなので、処理をステップS0202
に進める。
【0080】このステップS0202では、順位Yの節
点情報iを読み出す。この節点情報iとは、この節点に
対応するシンボル,未出現記号(ESC),又は終了記
号(EOF)の内容であるが、この節点が内部節点であ
るか葉であるかの情報,及びこの節点を中心とした親子
関係についての情報も同時に読み出される。
【0081】次のステップS0203では、順位Y−1
の節点情報jを読み出す。次のステップS0204で
は、ステップS0202にて読み出した節点情報iとス
テップS0203にて読み出した節点情報jとを比較し
て、順位Yの節点及び順位Y−1の節点の何れか一方が
葉であるか否かをチェックする。
【0082】何れか一方の節点が葉であると判定した場
合には、ステップS0205において、節点情報iと節
点情報jとを交換する。但し、親との関係についての情
報は、元の節点に残しておく。即ち、子の情報のみを交
換して、節点情報とともに子の節点が移動するようにす
る。
【0083】次のステップS0206では、順位Y−1
の親の節点順位を新たなYとし、以上の処理を繰り返す
ために、処理をステップS201に戻す。一方、ステッ
プS0204において両節点が内部節点であると判定し
た場合には、ステップS0205の処理をすることな
く、ステップS0207において順位Yの親の節点順位
を新たなYとする。そして、以上の処理を繰り返すため
に、処理をステップS0201に戻す。
【0084】以上の処理を繰り返した結果順位Yが0に
なった場合は、処理対象の節点が根になった場合である
ので、ステップS0201にてこのサブルーチンを終了
させて、メインルーチンにリターンする。
【0085】図8から処理が戻された図6のメインルー
チンにおいては、次のシンボルに対する圧縮処理を行う
ために、処理をステップS0002に戻す。ファイル中
の全シンボルに対して上記圧縮処理を実施した結果、ス
テップS0003においてシンボルが終了していると判
定した場合には、処理をステップS0007に進める。
このステップS0007では、テーブル3内の符号木を
参照して、終了記号(EOF)に対応する葉の順位を検
索する。そして、根から終了記号(EOF)に対応する
葉の順位までの経路を辿り、その経路上の枝に付されて
いる“0”又は“1”の符号を順番に拾い、一連の符号
語を得る。
【0086】次のステップS0008では、ステップS
0007にて得られた符号語をデータ送信部4又はデー
タ書込部7に対して出力し、この圧縮(符号化)処理を
終了する。 〔復元部における制御の内容〕図7は、復元部10にお
いて実行されるデータ復元のための処理の内容を示す。
図7の処理は、データ受信部6がデータを受信したこ
と,或いは、データ読み出し部9が外部指示に応じてデ
ータ格納部8からデータを読み出したことをトリガとし
てスタートする。
【0087】スタート後最初のステップS0101で
は、符号木を初期化して、テーブル3に登録する。即
ち、復元部10がデータ受信部6又はデータ読み出し部
9から最初に受け取るのは、図6のステップS0001
にて初期化された符号木そのものを示すデータである。
そのため、受信したデータから初期状態の符号木を生成
して、この符号木をテーブル11に格納する。
【0088】次のステップS0102では、ファイル内
のシンボルに対応する符号語を、受信した順番(符号化
部2において圧縮された順番)に従って、一つ入力す
る。次のステップS0103では、テーブル11内に格
納された符号木を参照して、入力した符号語が終了記号
(EOF)に対応するか否かをチェックする。終了記号
に対応していない場合には、処理をステップS0104
に進める。
【0089】このステップS0104では、テーブル1
1内に格納された符号木を参照して、ステップS010
2にて入力した符号語に対応する葉の順位を検索する。
即ち、符号木の根を起点にして、符号語が示す“0”及
び“1”の順番通りに、枝を辿り、対応する順位の節点
(葉)を探す。
【0090】次のステップS0105では、ステップS
0104にて検索された葉に対応するシンボルを、デー
タ出力部12に出力する(シンボルの復元)(データ復
元手段に対応)。
【0091】次のステップS0106では、ステップS
0105にて検索した今回処理対象の符号に対応するシ
ンボルが書き込まれている葉の順位を基準に、テーブル
11内に格納された符号木の更新を行う(復元用テーブ
ル更新手段に対応)。このステップS0106では、図
6のステップS0006で実行されるのと全く同じ処
理,即ち、図8のサブルーチンを、実行する。従って、
テーブル11内に格納された符号木は、テーブル3内に
格納された符号木と同期して、全く同様に更新されて行
く。ステップS0106が完了すると、次の符号語を復
元するために、処理をステップS0102に戻す。
【0092】ファイルを構成する全符号語に対して上記
復元処理を実施して、ステップS0103において終了
シンボルに対応する符号語が入力されたと判定した場合
には、この復元処理を終了する。 <実施例の作用>以上のように構成される本実施例の作
用を、図9に基づいて説明する。
【0093】いま、テーブル3内の符号木が、図9
(a)に示されるように初期設定されているとする。そ
して、最初にシンボル“b”が出現したとする。する
と、符号化部2は、図9(a)に示す形態の符号木を検
索することにより、“001”の符号語に符号化するこ
とができる。符号化部2は、符号化の後に、符号化した
シンボル“b”の葉を注目節点(処理対象節点)とし、
この注目節点の位置を一つ上の順位の節点と交換する。
図9(a)では“b”に対応する葉の順位は“8”であ
るので、順位“7”の節点(“a”に対応する葉)と交
換する。なお、交換後において、“b”に対応する節点
の親及び先祖(順位“3”,“1”,“0”の節点)
は、何れも一つ順位が上の節点が葉でないので、それら
の順位の交換はしない。その結果、更新後の符号木の形
態は、図9(b)に示す通りとなる。
【0094】一方、初期状態においては、テーブル11
にも図9(a)に示される形態の符号木が格納されてい
る。従って、復元部10は、“001”の符号語を受信
すると、同図(a)に示す形態の符号木を検索すること
により、シンボル“b”を得ることができる。復元部1
0は、この復元の後に、復元したシンボル“b”の葉を
注目節点とし、この注目節点の位置を一つ上の順位の節
点と交換する。即ち、テーブル3内の符号木と同様に、
“b”に対応する葉の位置を“a”に対応する葉と交換
する。その結果、更新後の符号木の形態は、図9(b)
に示す通りとなる。
【0095】次に、符号化部2において、再度シンボル
“b”が出現したとする。すると、符号化部2は、図9
(b)に示す形態の符号木を検索することにより、“0
00”の符号語に符号化することができる。符号化部2
は、符号化の後に、符号化したシンボル“b”の葉を注
目節点とし、この注目節点の位置を一つ上の順位の節点
と交換する。図9(b)では“b”に対応する葉の順位
は“7”であるので、順位“6”の節点と交換する(図
9(c)参照)。なお、順位“6”の節点を移動する際
には、これに接続されている子の節点(順位“13”及
び“14”の節点)も一緒に移動する。また、交換後に
おいて、“b”に対応する節点の親及び先祖(順位
“2”,“0”の節点)は、何れも一つ順位が上の節点
が葉でないので、それらの順位の交換はしない。その結
果、更新後の符号木の形態は、図9(d)に示す通りと
なる。
【0096】一方、復元部10は、“000”の符号語
を受信すると、図9(b)に示す形態の符号木を検索す
ることにより、シンボル“b”を得ることができる。復
元部10は、この復元の後に、復元したシンボル“b”
の葉を注目節点とし、この注目節点の位置を一つ上の順
位の節点と交換する(図9(c)参照)。即ち、テーブ
ル3内の符号木と同様に、“b”に対応する葉の位置を
順位“6”の節点と交換する。その結果、更新後の符号
木の形態は、図9(d)に示す通りとなる。
【0097】次に、符号化部2において、再度シンボル
“b”が出現したとする。すると、符号化部2は、図9
(d)に示す形態の符号木を検索することにより、“1
1”の符号語に符号化することができる。符号化部2
は、符号化の後に、符号化したシンボル“b”の葉を注
目節点とし、この注目節点の位置を一つ上の順位の節点
と交換する。図9(d)では“b”に対応する葉の順位
は“6”であるので、順位“5”の節点と交換する。な
お、順位“5”の節点を移動する際には、これに接続さ
れている子の節点(順位“11”及び“12”の節点)
も一緒に移動する。また、交換後において、“b”に対
応する節点の親及び先祖(順位“2”,“0”の節点)
は、何れも一つ順位が上の節点が葉でないので、それら
の順位の交換はしない。その結果、更新後の符号木の形
態は、図9(e)に示す通りとなる。
【0098】一方、復元部10は、“11”の符号語を
受信すると、図9(d)に示す形態の符号木を検索する
ことにより、シンボル“b”を得ることができる。復元
部10は、この復元の後に、復元したシンボル“b”の
葉を注目節点とし、この注目節点の位置を一つ上の順位
の節点と交換する。即ち、テーブル3内の符号木と同様
に、“b”に対応する葉の位置を順位“5”の節点と交
換する。その結果、更新後の符号木の形態は、図9
(e)に示す通りとなる。
【0099】次に、シンボル“g”が出現したとする。
すると、符号化部2は、図9(e)に示す形態の符号木
を検索することにより、“0000”の符号語に符号化
することができる。符号化部2は、符号化の後に、符号
化したシンボル“g”の葉を注目節点とし、この注目節
点の位置を一つ上の順位の節点と交換する。図9(e)
では“g”に対応する葉の順位は“13”であるので、
順位“12”の節点と交換する(図9(f)参照)。交
換後において、“g”に対応する節点の親(順位“6”
の節点)を注目節点として、その一つ上の順位の節点
(順位“5”の節点)が葉であるか否かを調べる。この
順位“5”の節点は葉(“b”に対応する葉)であるの
で、順位“6”の節点と交換する。なお、順位“6”の
節点を移動する際には、これに接続されている子の節点
(順位“11”及び“12”の節点)も一緒に移動す
る。また、交換後、順位“5”の節点の親及び先祖(順
位“2”,“0”の節点)は、何れも一つ順位が上の節
点が葉でないので、それらの順位の交換はしない。その
結果、更新後の符号木の形態は、図9(g)に示す通り
となる。
【0100】一方、復元部10は、“0000”の符号
語を受信すると、図9(e)に示す形態の符号木を検索
することにより、シンボル“g”を得ることができる。
復元部10は、この復元の後に、復元したシンボル
“g”の葉を注目節点とし、この注目節点の位置を一つ
上の順位の節点と交換する。即ち、テーブル3内の符号
木と同様に、“g”に対応する葉の位置を順位“12”
の節点(シンボル“f”に対応する節点)と交換する。
また、その親の節点(順位“6”の節点)を注目節点と
し、その注目節点の位置を一つ上の順位の節点と交換す
る。即ち、テーブル3内の符号木と同様に、順位“5”
の節点と交換する。その結果、更新後の符号木の形態
は、図9(g)に示す通りとなる。
【0101】以上のような順で各シンボルの出現があっ
た場合における節点順位の変動を、表1に示す。
【0102】
【表1】
【0103】表1において“b”,“g”に注目すれば
明らかなように、連続して生起するにつれて順位が上が
り、それとともに、対応する符号語の長さも短くなる。
また、生起が途切れると、徐々に順位が下がる。このよ
うな符号木の更新をするに当たって、各節点にはシンボ
ル生起頻度の情報が与えられていないので、消費メモリ
量の節約ができるとともに、生起頻度の比較や再計算が
必要ないので、符号化部2や復元部10の機能を実現す
る処理装置(CPU)の負荷を小さくすることができ
る。
【0104】
【第2実施例】本発明の第2実施例は、第1実施例と比
して、図6のステップS0006及び図7のステップS
0106において実行される符号木の更新処理の内容の
みを異にし、他の構成を同じとしている。従って、その
他の説明を省略する。 <制御内容>本第2実施例においては、符号化部4が図
6の処理を実行し、復元部10が図7の処理を実行す
る。
【0105】図10は、図6のステップS0006,及
び図7のステップS0106にて実行される符号木の更
新処理サブルーチンの内容を示すフローチャートであ
る。図10に入って最初のステップS0301では、今
回処理対象のシンボルに対応する葉の順位を変数“Y”
に代入し、このYが0であるかどうかをチェックする。
Yが0でないということは、当該順位が根以外の節点に
対応することなので、処理をステップS0302に進め
る。 このステップS0302では、順位Yの節点情報
iを読み出す。この節点情報iとは、この節点に対応す
るシンボル,未出現記号(ESC),又は終了記号(E
OF)の内容であるが、この節点が内部節点であるか葉
であるかの情報,この節点を中心とした親子関係につい
ての情報,及びこの節点のレベルについての情報も、同
時に読み出される。
【0106】次のステップS0303では、順位Yが同
レベルの最上位であるかどうかをチェックする。そし
て、最上位でない場合にはステップS0304に処理を
進め、最上位である場合にはステップS0309に処理
を進める。
【0107】ステップS0304では、順位Yと同レベ
ルにおける最高順位(“Z”とする)の節点情報jを読
み出す。次のステップS0305では、ステップS03
02にて読み出した節点情報iとステップS0304に
て読み出した節点情報jとを比較して、順位Yの節点及
び順位Zの節点の何れか一方が葉であるか否かをチェッ
クする。
【0108】何れか一方の節点が葉であると判定した場
合には、ステップS0306において、節点情報iを順
位Zの位置に置き、順位Zから順位Y−1までの節点情
報を、夫々一つ下の順位にシフトさせる。この際、各節
点の節点情報のうち、親との関係についての情報は、元
の節点に残しておく。次のステップS0307では、順
位Zの親の節点順位を新たなYとし、以上の処理を繰り
返すために、処理をステップS0301に戻す。
【0109】これに対して、ステップS0305におい
て両節点が内部節点であると判定した場合には、ステッ
プS0306の処理をすることなく、ステップS030
8において順位Yの親の節点順位を新たなYとする。そ
して、以上の処理を繰り返すために、処理をステップS
0301に戻す。
【0110】一方、ステップS0309においては、順
位Y−1の節点情報jを読み出す。次のステップS03
10では、ステップS0302にて読み出した節点情報
iとステップS0309にて読み出した節点情報jとを
比較して、順位Yの節点及び順位Y−1の節点の何れか
一方が葉であるか否かをチェックする。
【0111】何れか一方の節点が葉であると判定した場
合には、ステップS0311において、節点情報iと節
点情報jとを交換する。但し、親との関係についての情
報は、元の節点に残しておく。次のステップS0312
では、順位Y−1の親の節点順位を新たなYとし、以上
の処理を繰り返すために、処理をステップS0301に
戻す。
【0112】一方、ステップS0310において両節点
が内部節点であると判定した場合には、ステップS03
11の処理をすることなく、ステップS0313におい
て順位Yの親の節点順位を新たなYとする。そして、以
上の処理を繰り返すために、処理をステップS0301
に戻す。
【0113】以上の処理を繰り返した結果順位Yが0に
なった場合は、処理対象の節点が根になった場合である
ので、ステップS0301にてこのサブルーチンを終了
させて、メインルーチンにリターンする。 <実施例の作用>以上のように構成される本実施例の作
用を、図11に基づいて説明する。
【0114】いま、テーブル3内の符号木が、図11
(a)に示されるように初期設定されているとする。そ
して、最初にシンボル“e”が出現したとする。する
と、符号化部2は、図11(a)に示す形態の符号木を
検索することにより、“100”の符号語に符号化する
ことができる。符号化部2は、符号化の後に、符号化し
たシンボル“e”の葉を注目節点(処理対象節点)とす
る。そして、この注目節点の位置を同じレベル内の最高
順位の位置に移動するとともに、元の最高順位の位置に
いた節点から注目節点の直前の節点までを、一つ順位を
下げるようにシフトさせる。図11(a)の例では、
“e”に対応する葉の順位をレベル3の最高順位(順位
“7”)に移動させ、“a”に対応する葉から“d”に
対応する葉までを一つづつ右にシフトさせる。なお、交
換後、“e”に対応する節点の親及び先祖(順位
“3”,“1”,“0”の節点)は、何れもそのレベル
内の最高順位であるので、それらの順位の交換はしな
い。その結果、更新後の符号木の形態は、図11(b)
に示す通りとなる。
【0115】一方、初期状態においては、テーブル11
にも図11(a)に示される形態の符号木が格納されて
いる。従って、復元部10は、“100”の符号語を受
信すると、図11(a)に示す形態の符号木を検索する
ことにより、シンボル“e”を得ることができる。復元
部10は、この復元の後に、復元したシンボル“e”の
葉を注目節点とし、この注目節点の位置を同じレベル内
の最高順位の位置に移動するとともに、元の最高順位の
位置にいた節点から注目節点の直前の節点までを、一つ
順位を下げるようにシフトさせる。即ち、テーブル3内
の符号木と同様に、“e”に対応する葉の位置を同レベ
ル内の最高順位の位置に移動する。その結果、更新後の
符号木の形態は、図11(b)に示す通りとなる。
【0116】次に、符号化部2において、再度シンボル
“e”が出現したとする。すると、符号化部2は、図1
1(b)に示す形態の符号木を検索することにより、
“000”の符号語に符号化することができる。符号化
部2は、符号化の後に、符号化したシンボル“e”の葉
を注目節点とする。但し、この注目節点の位置が同レベ
ルの最高順位にあるために、この注目節点の位置を一つ
上の順位の節点と交換する。図11(b)の例では、
“e”に対応する葉の順位は“7”であるので、順位
“6”の節点と交換する(図11(c)参照)。なお、
順位“6”の節点を移動する際には、これに接続されて
いる子の節点(順位“13”及び“14”の節点)も一
緒に移動する。また、交換後、“e”に対応する節点の
親及び先祖(順位“2”,“0”の節点)は、何れも同
レベルの最高順位の節点が葉でないので、順位の交換は
しない。その結果、更新後の符号木の形態は、図11
(d)に示す通りとなる。
【0117】一方、復元部10は、“000”の符号語
を受信すると、図11(b)に示す形態の符号木を検索
することにより、シンボル“e”を得ることができる。
復元部10は、この復元の後に、復元したシンボル
“e”の葉を注目節点とし、この注目節点の位置を一つ
上の順位の節点と交換する(図11(c)参照)。即
ち、テーブル3内の符号木と同様に、“e”に対応する
葉の位置を順位“6”の節点と交換する。その結果、更
新後の符号木の形態は、図11(d)に示す通りとな
る。
【0118】次に、符号化部2において、再度シンボル
“e”が出現したとする。すると、符号化部2は、図1
1(d)に示す形態の符号木を検索することにより、
“11”の符号語に符号化することができる。符号化部
2は、符号化の後に、符号化したシンボル“e”の葉を
注目節点とする。そして、この注目節点の位置を同じレ
ベル内の最高順位の位置に移動するとともに、元の最高
順位の位置にいた節点から注目節点の直前の節点まで
を、一つ順位を下げるようにシフトさせる。図11
(d)の例では、“e”に対応する葉の順位をレベル2
の最高順位(順位“3”)に移動させ、元の順位“3”
の節点から順位“5”の節点までを一つづつ右にシフト
させる。なお、元の順位“3”の節点〜順位“5”の節
点を移動する際には、これらに接続されている子の節点
も一緒に移動する。また、交換後、“e”に対応する節
点の親及び先祖(順位“1”,“0”の節点)は、何れ
も同レベルの最高順位にあるので、順位の交換はしな
い。その結果、更新後の符号木の形態は、図11(e)
に示す通りとなる。
【0119】一方、復元部10は、“11”の符号語を
受信すると、図11(d)に示す形態の符号木を検索す
ることにより、シンボル“e”を得ることができる。復
元部10は、この復元の後に、復元したシンボル“e”
の葉を注目節点とし、この注目節点の位置を同じレベル
内の最高順位の位置に移動するとともに、元の最高順位
の位置にいた節点から注目節点の直前の節点までを、一
つ順位を下げるようにシフトさせる。即ち、テーブル3
内の符号木と同様に、“e”に対応する葉の位置を同レ
ベル内の最高順位の位置に移動する。その結果、更新後
の符号木の形態は、図11(e)に示す通りとなる。
【0120】次に、シンボル“g”が出現したとする。
すると、符号化部2は、図11(e)に示す形態の符号
木を検索することにより、“0100”の符号語に符号
化することができる。符号化部2は、符号化の後に、符
号化したシンボル“g”の葉を注目節点とする。但し、
この注目節点の位置が同レベルの最高順位にあるため
に、この注目節点の位置を一つ上の順位の節点と交換す
る。図11(f)の例では、“g”に対応する葉の順位
は“13”であるので、順位“12”の節点と交換する
(図11(f)参照)。交換後、“g”に対応する節点
の親(順位“6”の節点)を注目節点とする。この注目
節点と同レベルにおける最高順位の節点は葉(“e”に
対応する葉)であるので、この注目節点の位置を同じレ
ベル内の最高順位の位置に移動するとともに、元の最高
順位の位置にいた節点から注目節点の直前の節点まで
を、一つ順位を下げるようにシフトさせる。図11
(f)の例では、順位“6”の節点の順位をレベル2の
最高順位(順位“3”)に移動させ、元の順位“3”の
節点から順位“5”の節点までを一つづつ右にシフトさ
せる。なお、元の順位“3”の節点〜順位“5”の節点
を移動する際には、これらに接続されている子の節点も
一緒に移動する。また、交換後、順位“3”の節点の親
及び先祖(順位“1”,“0”の節点)は、何れも同レ
ベルの最高順位にあるので、順位の交換はしない。その
結果、更新後の符号木の形態は、図11(g)に示す通
りとなる。
【0121】一方、復元部10は、“0100”の符号
語を受信すると、図11(e)に示す形態の符号木を検
索することにより、シンボル“g”を得ることができ
る。復元部10は、この復元の後に、復元したシンボル
“g”の葉を注目節点とし、この注目節点の位置を一つ
上の順位の節点と交換する。即ち、テーブル3内の符号
木と同様に、“g”に対応する葉の位置を順位“12”
の節点と交換する(図11(f)参照)。また、その親
の節点(順位“6”の節点)を注目節点とし、この注目
節点の位置を同じレベル内の最高順位の位置に移動する
とともに、元の最高順位の位置にいた節点から注目節点
の直前の節点までを、一つ順位を下げるようにシフトさ
せる。即ち、テーブル3内の符号木と同様に、順位
“6”の節点の位置を同レベル内の最高順位の位置に移
動する。その結果、更新後の符号木の形態は、図11
(g)に示す通りとなる。
【0122】以上のような順で各シンボルの出現があっ
た場合における節点順位の変動を、表2に示す。
【0123】
【表2】
【0124】表2において“e”,“g”に注目すれば
明らかなように、連続して生起したときの順位が上がり
方は、第1実施例よりも早い。即ち、同シンボルの生起
が2回連続すると、必ず、対応する葉のレベルが一つ上
がり、符号語の長さが1ビット短くなる。従って、第1
実施例による効果を更に向上させ、圧縮効率を良くする
ことができる。
【0125】
【第3実施例】本発明の第3実施例は、第1実施例と比
して、図6のステップS0006及び図7のステップS
0106において実行される符号木の更新処理の内容の
みを異にし、他の構成を同じとしている。従って、その
他の説明を省略する。 <制御内容>本第3実施例においては、符号化部4が図
6の処理を実行し、復元部10が図7の処理を実行す
る。
【0126】図12は、図6のステップS0006,及
び図7のステップS0106にて実行される符号木の更
新処理サブルーチンの内容を示すフローチャートであ
る。図12に入って最初のステップS0401では、今
回処理対象のシンボルに対応する葉の順位を変数“Y”
に代入し、このYが1であるかどうかをチェックする。
Yが1でない場合には、処理をステップS0402に進
める。
【0127】このステップS0402では、順位Yの節
点情報iを読み出す。この節点情報iとは、この節点に
対応するシンボル,未出現記号(ESC),又は終了記
号(EOF)の内容であるが、この節点が内部節点であ
るか葉であるかの情報,この節点を中心とした親子関係
についての情報,及びこの節点のレベルについての情報
も、同時に読み出される。
【0128】次のステップS0403では、順位Yが同
レベルの最上位であるかどうかをチェックする。そし
て、最上位でない場合にはステップS0404に処理を
進め、最上位である場合にはステップS0407に処理
を進める。
【0129】ステップS0404では、順位Yと同レベ
ルにおける最高順位(“Z”とする)の節点情報jを読
み出す。次のステップS0405では、節点情報iを順
位Zの位置に置き、順位Zから順位Y−1までの節点情
報を、夫々一つ下の順位にシフトさせる(挿入処理)。
この際、各節点の節点情報のうち、親との関係について
の情報は、元の節点に残しておく。次のステップS04
06では、順位Zの節点順位を新たなYとし、以上の処
理を繰り返すために、処理をステップS0401に戻
す。
【0130】一方、ステップS0407においては、順
位Y−1の節点情報jを読み出す。次のステップS04
08では、節点情報iと節点情報jとを交換する(交換
処理)。但し、親との関係についての情報は、元の節点
に残しておく。次のステップS0409では、順位Y−
1の親の節点順位を新たなYとし、以上の処理を繰り返
すために、処理をステップS0401に戻す。
【0131】以上の処理を繰り返した結果順位Yが1に
なった場合は、処理対象の節点が根の次の節点になった
場合であるので、ステップS0401にてこのサブルー
チンを終了させて、メインルーチンにリターンする。 <実施例の作用>以上のように構成される本実施例の作
用を、図13に基づいて説明する。
【0132】いま、テーブル3内の符号木が、図13
(a)に示されるように初期設定されているとする。そ
して、シンボル“e”が出現したとする。すると、符号
化部2は、図13(a)に示す形態の符号木を検索する
ことにより、“100”の符号語に符号化することがで
きる。符号化部2は、符号化の後に、符号化したシンボ
ル“e”の葉を注目節点(処理対象節点)とする。そし
て、この注目節点の位置を同じレベル内の最高順位の位
置に移動するとともに、元の最高順位の位置にいた節点
から注目節点の直前の節点までを、一つ順位を下げるよ
うにシフトさせる。図13(a)の例では、“e”に対
応する葉の順位をレベル3の最高順位(順位“7”)に
移動させ、“a”に対応する葉から“d”に対応する葉
までを一つづつ右にシフトさせる(図13(b)参
照)。
【0133】次に、移動後の“e”に対応する葉を注目
節点として、一つ上の順位の節点と交換する。図13
(b)の状態では、“e”に対応する葉の順位は“7”
であるので、順位“6”の節点と交換する(図13
(c)参照)。なお、順位“6”の節点を移動する際に
は、これに接続されている子の節点(順位“13”及び
“14”の節点)も一緒に移動する(図13(d)参
照)。
【0134】次に、交換後の“e”に対応する葉を注目
節点とする。そして、この注目節点の位置を同じレベル
内の最高順位の位置に移動するとともに、元の最高順位
の位置にいた節点から注目節点の直前の節点までを、一
つ順位を下げるようにシフトさせる。図13(d)の例
では、“e”に対応する葉の順位をレベル2の最高順位
(順位“3”)に移動させ、元の順位“3”の節点から
順位“5”の節点までを一つづつ右にシフトさせる。な
お、元の順位“3”の節点〜順位“5”の節点を移動す
る際には、これらに接続されている子の節点も一緒に移
動する(図13(e)参照)。
【0135】次に、移動後の“e”に対応する葉を注目
節点として、一つ上の順位の節点と交換する。図13
(e)の状態では、“e”に対応する葉の順位は“3”
であるので、順位“2”の節点と交換する(図13
(f)参照)。更に、同レベルの最高順位の節点と交換
する。以上の結果、“e”に対応する葉の順位は、根の
次に位置する順位“1”にまで、上がる(図13(g)
参照)。
【0136】一方、初期状態においては、テーブル11
にも図13(a)に示される形態の符号木が格納されて
いる。従って、復元部10は、“100”の符号語を受
信すると、図13(a)に示す形態の符号木を検索する
ことにより、シンボル“e”を得ることができる。復元
部10は、この復元の後に、復元したシンボル“e”の
葉を注目節点とし、符号化部2と同様に符号木の更新を
行う。その結果、更新後の符号木の形態は、図13
(g)に示す通りとなる。
【0137】以上のような順で各シンボルの出現があっ
た場合における節点順位の変動を、表3に示す。
【0138】
【表3】
【0139】表3において“e”に注目すれば明らかな
ように、如何なる順位に登録されていたシンボルであっ
ても、一回生起しただけで順位“1”に移動することが
できる。即ち、符号語の符号長が1ビットだけになる。
従って、第1実施例及び第2実施例による効果を更に向
上させ、圧縮効率を良くすることができる。
【0140】
【第4実施例】本発明の第4実施例は、予めシンボルを
登録せず、新規のシンボルが生起する毎に符号木に登録
することを特徴とする。 <ハード構成>本実施例のハード構成は、第1実施例の
ものと同じである。従って、その説明を省略する。 <制御内容> 〔符号化部における制御の内容〕図14は、符号化部2
において、データ入力部1からデータの転送があった時
に実行されるデータ圧縮(符号化)のための処理の内容
を示す。図14の処理は、圧縮対象のファイル(デー
タ)の受信をトリガとして、スタートする。
【0141】スタート後最初のステップS0501で
は、符号木を初期化して、テーブル3に登録する。即
ち、図17(a)に示すように、終了記号(EOF)に
対応する葉,及び未出現記号(ESC)に対応する葉の
みを、唯一の根に対して、2本の枝で接続し、符号木を
生成する。そして、終了記号(EOF)に接続されてい
る左側の枝に符号“0”を与え、未出現記号(ESC)
に接続されている右側の枝に符号“1”を与える。そし
て、根に順位“0”を与え、終了記号(EOF)に順位
“1”を与え、未出現記号(ESC)に順位“2”を与
える。以上のようにして符号木の初期設定が完了する
と、符号化部2は、この符号木をテーブル3に格納す
る。
【0142】次のステップS0502では、入力された
データの中から順番にシンボル(文字)を一つ取り出す
(シンボル入力)。次のステップS0503では、ステ
ップS0502にてシンボルが取り出せたか否か,即
ち、ファイル中のシンボルが終了しているか否かを、チ
ェックする。そして、シンボルが終了していない時に
は、処理をステップS0504に進める。
【0143】ステップS0504では、テーブル3内に
格納された符号木を参照して、ステップS0502にて
取り出したシンボルに対応する葉が既に登録されている
かどうかをチェックする。そして、当該シンボルが未登
録である場合には、処理をステップS508に進め、当
該シンボルが登録済である場合には、処理をステップS
505に進める(データ登録有無判断手段に対応)。
【0144】シンボルが未登録である場合のステップS
0508においては、テーブル3内に格納された符号木
を参照して、未出現記号(ESC)の順位を検索する。
そして、根から未出現記号(ESC)に対応する葉まで
の経路を辿り、その経路上の枝に付されている“0”又
は“1”の符号を順番に拾い、一連の符号語を得る。
【0145】次のステップS0509では、データ送信
部4又はデータ書込部7に対して、ステップS0508
にて得た符号語を出力した後に、ステップS0502に
て取り出した新規シンボルの生データ(未圧縮のデー
タ)を出力する(符号化手段に対応)。
【0146】次のステップS0510では、ステップS
0508にて検索した未出現記号(ESC)に対応する
葉の順位を基準に符号木の更新を行う(圧縮用テーブル
更新手段に対応)。この符号木の更新処理は、図8の処
理を実行してなしている。但し、このステップS051
0のサブルーチンとして図8の処理を実行する場合に
は、処理対象の注目節点は、未出現記号(ESC)に対
応する葉である。
【0147】図8から処理が戻された図14のメインル
ーチンにおいては、ステップS0511において、ステ
ップS0502にて取り出した新規データを符号木に登
録する(圧縮用テーブル更新手段に対応)。図16は、
ステップS0511にて実行される新規シンボルの登録
処理のサブルーチンの内容を示すフローチャートであ
る。
【0148】このサブルーチンに入って最初のステップ
S0701では、符号木内における未出現記号(ES
C)の節点を分岐して、新たに生成された2枚の葉に未
出現記号(ESC)と新規シンボルとを登録する。この
際、未出現記号(ESC)に対応する葉は、新規シンボ
ルに対応する葉よりも順位が高くなるように、左側に配
置される。この図16のサブルーチンを実行することに
よる符号木の変化を、図17に示す。図17では、
(a)が初期設定状態を示し、(b)が新規シンボル
“a”の生成後の状態を示し、(c)が新規シンボル
“b”の生成後の状態を示す(なお、実際には符号木の
更新がなされるので、図18に示すように変化す
る。)。この場合における節点順位の変動を、表4に示
す。
【0149】
【表4】
【0150】ステップS0701の実行が完了すると、
この図16のサブルーチンが終了して、メインルーチン
にリターンする。図16から処理が戻された図14のメ
インルーチンにおいては、次のシンボルに対する圧縮処
理を行うために、処理をステップS0502に戻す。
【0151】一方、ステップS0504にてシンボルが
登録済であると判定された場合のステップS0505に
おいては、テーブル3内に格納された符号木を参照し
て、ステップS0502にて取り出したシンボルに対応
する葉の順位を検索する。そして、根から対応葉までの
経路を辿り、その経路上の枝に付されている“0”又は
“1”の符号を順番に拾い、一連の符号語を得る。
【0152】次のステップS0506では、このように
して得られた符号語を、データ送信部4又はデータ書込
部7に対して出力する(符号化手段に対応)。次のステ
ップS0507では、ステップS0505にて検索した
今回処理対象のシンボルに対応する葉の順位を基準に符
号木の更新を行う(圧縮用テーブル更新手段に対応)。
この符号木の更新処理は、図8の処理を実行してなして
いる。但し、このステップS0507のサブルーチンと
して図8の処理を実行する場合には、処理対象の注目節
点は、ステップS0502にて取り出したシンボルに対
応する葉である。
【0153】図8から処理が戻された図14のメインル
ーチンにおいては、次のシンボルに対する圧縮処理を行
うために、処理をステップS0502に戻す。ファイル
中の全シンボルに対して上記圧縮処理を実施した結果、
ステップS0503においてシンボルが終了していると
判定した場合には、処理をステップS0512に進め
る。このステップS0512では、テーブル3内の符号
木を参照して、終了記号(EOF)に対応する葉の順位
を検索する。そして、根から終了記号(EOF)に対応
する葉の順位までの経路を辿り、その経路上の枝に付さ
れている“0”又は“1”の符号を順番に拾い、一連の
符号語を得る。
【0154】次のステップS0513では、ステップS
0512にて得られた符号語をデータ送信部4又はデー
タ書込部7に対して出力し、この圧縮(符号化)処理を
終了する。 〔復元部における制御の内容〕図15は、復元部10に
おいて、実行されるデータ復元のための処理の内容を示
す。図15の処理は、データ受信部6がデータを受信し
たこと,或いは、データ読み出し部9が外部指示に応じ
てデータ格納部8からデータを読み出したことをトリガ
としてスタートする。
【0155】スタート後最初のステップS0601で
は、符号木を初期化して、テーブル3に登録する。即
ち、復元部10は、図14のステップS0501と同様
にして、未出現記号(ESC)及び終了記号(EOF)
のみを葉とする図17(a)に示す符号木を生成し、こ
の符号木をテーブル11に格納する。
【0156】次のステップS0602では、ファイル内
のシンボルに対応する符号語を、受信した順番(符号化
部2において圧縮された順番)に従って、一つ入力す
る。次のステップS0603では、テーブル11内に格
納された符号木を参照して、入力した符号語が終了記号
(EOF)に対応するか否かをチェックする。終了記号
に対応していない場合には、処理をステップS0604
に進める。
【0157】このステップS0604では、テーブル1
1内に格納された符号木を参照して、ステップS060
2にて入力した符号語に対応する葉の順位を検索する。
即ち、符号木の根を起点にして、符号語が示す“0”及
び“1”の順番通りに、枝を辿り、対応する順位の節点
(葉)を探す。
【0158】次のステップS0605では、ステップS
0604にて検索された葉に対応するシンボルを獲得す
る(シンボルの復元)(データ復元手段に対応)。次の
ステップS0606では、ステップS0605にて復元
された今回処理対象の符号に対応するシンボルが書き込
まれている葉の順位を基準に、テーブル11内に格納さ
れた符号木の更新を行う(復元用テーブル更新手段に対
応)。このステップS0606では、図6のステップS
0507及びステップS0510で実行されるのと全く
同じ処理,即ち、図8のサブルーチンを、実行する。従
って、テーブル11内に格納された符号木は、テーブル
3内に格納された符号木と同期して、全く同様に更新さ
れて行く。
【0159】図8から処理が戻された図15のメインル
ーチンでは、ステップS0607において、ステップS
0605にて復元したシンボルが未出現記号(ESC)
であるか否かをチェックする。
【0160】ステップS0607にて未出現記号(ES
C)であると判定した場合には、次のステップS060
9において、ステップS0602にて入力した符号に続
くデータを入力する。このデータは、図14のステップ
S0509において出力された新規シンボルの生データ
(未圧縮データ)である。この新規シンボルは、次のス
テップS0610において、複元部10から出力され
る。
【0161】次のステップS0611では、ステップS
0610にて出力した新規シンボルを、テーブル11内
の符号木に登録する(復元用テーブル更新手段に対
応)。このステップS0611では、図14のステップ
S0511で実行されるのと全く同じ処理,即ち、図1
6のサブルーチンを、実行する。従って、テーブル11
内に格納された符号木は、テーブル3内に格納された符
号木と同期して、全く同様に更新されて行く。ステップ
S0611を完了すると、次の符号語を復元するため
に、処理をステップS0602に戻す。
【0162】これに対して、ステップS0607にて未
出現記号(ESC)でないと判定した場合には、ステッ
プS0608において、ステップS0605にて復元し
たシンボルを出力する。ステップS0608を完了する
と、次の符号語を復元するために、処理をステップS0
602に戻す。 <実施例の作用>以上のように構成される本第4実施例
の作用を、図18に基づいて説明する。
【0163】いま、テーブル3内の符号木が、図18
(a)に示されるように初期設定されているとする。そ
して、最初に新規シンボル“a”が出現したとする。す
ると、符号化部2は、図18(a)に示す形態の符号木
を検索することにより、シンボル“a”が未登録である
ことが判るので、未出現記号(ESC)を符号語“1”
に符号化して出力する。符号化部2は、符号化の後に、
符号化した未出現記号(ESC)の葉を注目節点(処理
対象節点)とし、この注目節点の位置を一つ上の順位の
節点(終了記号(EOF)に対応する葉)と交換する。
その結果、更新後の符号木の形態は、図18(b)に示
す通りになる。続いて、符号化部2は、新規シンボル
“a”の生データ(未圧縮のデータ)を出力する。続い
て、符号化部2は、符号木中において未出現記号(ES
C)の葉に接続された枝を分岐して、新規シンボルに対
応する葉を登録する。この際、未出現記号(ESC)に
対応する葉の順位が新規シンボルに対応する葉の順位よ
りも大きくなるようにする。その結果、更新後の符号木
の形態は、図18(c)に示す通りとなる。
【0164】一方、初期状態においては、テーブル11
にも図18(a)に示される形態の符号木が格納されて
いる。従って、復元部10は、“1”の符号語を受信す
ると、図18(a)に示す形態の符号木を検索すること
により、未出現記号(ESC)を得ることができる。す
ると、復元部10は、この“1”の符号語の後に入力し
た符号が新規シンボルの生データ(未圧縮のデータ)で
あることを認識することができるので、この新規シンボ
ルの生データ“a”をそのまま出力する。復元部10
は、この出力の後に、未出現記号(ESC)の葉を注目
節点とし、この注目節点の位置を一つ上の順位の節点
(終了記号(EOF)に対応する節点)と交換する(図
18(b)参照)。続いて、復元部10は、符号木中に
おいて未出現記号(ESC)の葉に接続された枝を分岐
して、新規シンボルに対応する葉を登録する。その結
果、更新後の符号木の形態は、テーブル3内の符号木と
同様に、図18(c)に示す通りとなる。
【0165】次に、符号化部2において、新規シンボル
“b”が出現したとする。すると、符号化部2は、図1
8(c)に示す形態の符号木を検索することにより、シ
ンボル“b”が未登録であることが判るので、未出現記
号(ESC)を符号語“00”に符号化して出力する。
符号化部2は、符号化の後に、符号化した未出現記号
(ESC)の葉を注目節点とし、この注目節点の位置を
一つ上の順位の節点と交換する。図18(c)の例では
“ESC”に対応する葉の順位は“3”であるので、順
位“2”の節点と交換する。その結果、更新後の符号木
の形態は、図18(d)に示す通りとなる。続いて、符
号化部2は、新規シンボル“b”の生データ(未圧縮の
データ)を出力する。続いて、符号化部2は、符号木中
において未出現記号(ESC)の葉に接続された枝を分
岐して、新規シンボルに対応する葉を登録する。この
際、未出現記号(ESC)に対応する葉の順位が新規シ
ンボルに対応する葉の順位よりも大きくなるようにす
る。その結果、更新後の符号木の形態は、図18(e)
に示す通りとなる。
【0166】一方、復元部10は、“00”の符号語を
受信すると、図18(c)に示す形態の符号木を検索す
ることにより、未出現記号(ESC)を得ることができ
る。すると、復元部10は、この“00”の符号語の後
に入力した符号が新規シンボルの生データ(未圧縮のデ
ータ)であることを認識することができるので、この新
規シンボルの生データ“b”をそのまま出力する。復元
部10は、この出力の後に、未出現記号(ESC)の葉
を注目節点とし、この注目節点の位置を一つ上の順位の
節点と交換する(図18(d)参照)。続いて、復元部
10は、符号木中において未出現記号(ESC)の葉に
接続された枝を分岐して、新規シンボルに対応する葉を
登録する。その結果、更新後の符号木の形態は、テーブ
ル3内の符号木と同様に、図18(e)に示す通りとな
る。
【0167】このような新規シンボルの登録を繰り返し
た結果、符号木の構成が図9(a)に示したようになる
と、第1実施例の作用で説明したのと同様にして、更新
がなされて行く。
【0168】以上のように、本第4実施例によると、第
1実施例の作用を全て実現できるとともに、圧縮処理の
最初にファイル全体をサーチする必要や初期設定の符号
木を復元部に通知する必要がなくなるので、処理時間の
短縮を図ることができるばかりか、符号化部2や復元部
10の機能を実現する処理装置(CPU)の負荷を小さ
くすることができる。また、予めファイルの全体構成を
知ることができないリアルタイムのデータ入力に対して
も、圧縮処理を行うことができる。
【0169】なお、本第4実施例においては、図14の
ステップS0507,及びS0510,並びに図15の
ステップS0606の符号木更新処理として、図8のサ
ブルーチンを実行しているが、これに代えて、図10の
サブルーチン又は図12のサブルーチンを実行しても良
い。
【0170】
【第5実施例】本発明の第5実施例は、第4実施例と比
して、図14のステップS0511及び図15のステッ
プS0611において実行される新規シンボルの符号木
への登録処理の内容のみを異にし、他の構成を同じとし
ている。従って、その他の説明を省略する。 <制御内容>本第5実施例においては、符号化部4が図
14の処理を実行し、復元部10が図15の処理を実行
する。
【0171】図19は、図14のステップS0511,
及び図15のステップS0611において実行される新
規シンボルの符号木への登録サブルーチンの内容を示す
フローチャートである。
【0172】図19に入って最初のステップS0801
では、符号木を構成する全ての節点の最下位順位(全節
点数−1)を、変数Nの値とする。次のステップS08
02では、符号木を構成する内部節点のうちの最下位の
ものの順位の一つ下の順位を、順位“X”とする。そし
て、順位“X”にある葉を分岐させる。この結果、順位
“X”の節点は、内部節点になる。次のステップS08
03では、元々順位“X”から順位“N−1”までの間
に登録されていたシンボル(又は、EOF,ESC)
を、一つ下の順位に夫々シフトする。次のステップS0
804では、新しい順位“X”の内部節点の子として、
元の順位“N”に登録されていたシンボル等と新規シン
ボルとを登録する。このとき、新規シンボルの順位が下
になるように登録する。次のステップS0805では、
N+2を新たなNとする。
【0173】この図19のサブルーチンを実行すること
による符号木の変化を、図20に示す。図20では、
(a)が初期設定状態を示し、(b)が新規シンボル
“a”の生成後の状態を示し、(c)が新規シンボル
“b”の生成後の状態を示す(なお、実際には符号木の
更新がなされるので、図21に示すように変化す
る。)。この場合における節点順位の変動を、表5に示
す。
【0174】
【表5】
【0175】ステップS0805の実行が完了すると、
この図19のサブルーチンが終了して、メインルーチン
にリターンする。 <実施例の作用>以上のように構成される本第5実施例
の作用を、図21に基づいて説明する。
【0176】いま、テーブル3内の符号木が、図21
(a)に示されるように初期設定されているとする。そ
して、最初に新規シンボル“a”が出現したとする。す
ると、符号化部2は、図21(a)に示す形態の符号木
を検索することにより、シンボル“a”が未登録である
ことが判るので、未出現記号(ESC)を符号語“1”
に符号化して出力する。符号化部2は、符号化の後に、
符号化した未出現記号(ESC)の葉を注目節点とし、
この注目節点の位置を一つ上の順位の節点(終了記号
(EOF)に対応する葉)と交換する。その結果、符号
木の形態は、図21(b)に示す通りになる。続いて、
符号化部2は、新規シンボル“a”の生データ(未圧縮
のデータ)を出力する。続いて、符号化部2は、最下位
の内部節点(順位“0”の節点)の次の順位の節点(順
位“1”の葉:この節点を、「節点X」と称する。)を
分岐する。そして、分岐により生成された二つの葉に夫
々順位を付与する。すると、節点Xから右側に繋がる新
しい葉が最下位の節点となるので、この葉に新規シンボ
ル“a”を登録する。そして、元の節点Xに登録されて
いたシンボルから元の最下位の節点に登録されていたシ
ンボルまでを、一つずつ下にずらせて登録し直す。その
結果、更新後の符号木の形態は、図21(c)に示す通
りとなる。
【0177】一方、初期状態においては、テーブル11
にも図21(a)に示される形態の符号木が格納されて
いる。従って、復元部10は、“1”の符号語を受信す
ると、図21(a)に示す形態の符号木を検索すること
により、未出現記号(ESC)を得ることができる。す
ると、復元部10は、この“1”の符号語の後に入力し
た符号が新規シンボルの生データ(未圧縮のデータ)で
あることを認識することができるので、この新規シンボ
ルの生データ“a”をそのまま出力する。復元部10
は、この出力の後に、未出現記号(ESC)の葉を注目
節点とし、この注目節点の位置を一つ上の順位の節点
(終了記号(EOF)に対応する節点)と交換する(図
21(b)参照)。続いて、復元部10は、符号化部2
がしたのと同じに、新規シンボル“a”を登録する。そ
の結果、更新後の符号木の形態は、テーブル3内の符号
木と同様に、図21(c)に示す通りとなる。
【0178】次に、符号化部2において、新規シンボル
“b”が出現したとする。すると、符号化部2は、図2
1(c)に示す形態の符号木を検索することにより、シ
ンボル“b”が未登録であることが判るので、未出現記
号(ESC)を符号語“1”に符号化して出力する。符
号化部2は、符号化の後に、符号化した未出現記号(E
SC)の葉を注目節点とし、この注目節点の位置を一つ
上の順位の節点(順位“1”の葉)と交換する。その結
果、符号木の形態は、図21(d)に示す通りになる。
続いて、符号化部2は、新規シンボル“b”の生データ
(未圧縮のデータ)を出力する。続いて、符号化部2
は、最下位の内部節点(順位“2”の節点)の次の順位
の節点(順位“3”の葉:この節点を、「節点X」と称
する。)を分岐する。そして、分岐により生成された二
つの葉に夫々順位を付与する。すると、節点Xから右側
に繋がる新しい葉が最下位の節点となるので、この葉に
新規シンボル“b”を登録する。そして、元の節点Xに
登録されていたシンボルから元の最下位の節点に登録さ
れていたシンボルまでを、一つずつ下にずらせて登録し
直す。その結果、更新後の符号木の形態は、図21
(e)に示す通りとなる。
【0179】一方、復元部10は、“1”の符号語を受
信すると、図21(b)に示す形態の符号木を検索する
ことにより、未出現記号(ESC)を得ることができ
る。すると、復元部10は、この“1”の符号語の後に
入力した符号が新規シンボルの生データであることを認
識することができるので、この新規シンボルの生データ
“b”をそのまま出力する。復元部10は、この出力の
後に、未出現記号(ESC)の葉を注目節点とし、この
注目節点の位置を一つ上の順位の節点(順位“1”の節
点)と交換する(図21(d)参照)。続いて、復元部
10は、符号化部2がしたのと同じに、新規シンボル
“b”を登録する。その結果、更新後の符号木の形態
は、テーブル3内の符号木と同様に、図21(e)に示
す通りとなる。
【0180】このような新規シンボルの登録を繰り返し
た結果、符号木の構成が図9(a)に示したようになる
と、第1実施例の作用で説明したのと同様にして、更新
がなされて行く。
【0181】以上のように、本第5実施例によると、第
1実施例の作用を全て実現できるとともに、圧縮処理の
最初にファイル全体をサーチする必要や初期設定の符号
木を復元部に通知する必要がなくなるので、処理時間の
短縮を図ることができるばかりか、符号化部2や復元部
10の機能を実現する処理装置(CPU)の負荷を小さ
くすることができる。また、予めファイルの全体構成を
知ることができないリアルタイムのデータ入力に対して
も、圧縮処理を行うことができる。また、新規シンボル
に対応する符号語の符号長を極端に長くすることがない
ので、符号化の効率を悪化させることがない。
【0182】なお、本第5実施例においては、図14の
ステップS0507,及びS0510,並びに図15の
ステップS0606の符号木更新処理として、図8のサ
ブルーチンを実行しているが、これに代えて、図10の
サブルーチン又は図12のサブルーチンを実行しても良
い。
【0183】
【実施例6】本発明の第6実施例は、予めシンボルを登
録せず、新規のシンボルが生起する毎に符号木に登録す
るとともに、文脈モデルを併用して圧縮を行うことを特
徴とする。
【0184】本第6実施例による圧縮方式は、図22に
示す概念図に示すように、最初に文脈モデルによる条件
付けを行い、この条件下において第5実施例と同じ符号
化を行うものである。 <ハード構成>本第6実施例のハード構成は、第1実施
例において説明したのと同じものであるのでその説明を
省略するが、本第6実施例における符号化部2は、文脈
検索手段,未出現記号順位符号化手段,シンボル順位符
号化手段,符号木順位更新手段,及び未出現記号順位更
新手段に対応し、復元部10は、文脈検索手段,シンボ
ル順位復号化手段,シンボル順位再復号化手段,符号木
順位更新手段,及び未出現記号順位更新手段に対応す
る。
【0185】また、本第6実施例におけるテーブル3及
びテーブル11には、図23に示すような文脈木,及び
この文脈木の各内部節点を夫々根とする複数の符号木が
格納されている。以下に、これら文脈木及び符号木の関
係を説明する。
【0186】文脈木は、過去に生起した文脈(複数の文
字が連続して生起したパターン)を唯一の根(roo
t)を先頭にしてまとめたものである。図23の例で
は、過去、“aab”,“abc”,“acb”,“b
ca”,“caa”,“cac”,“cbc”といった
文脈が生起していることを示している。この文脈木で
は、符号木と異なり、根(root)以外の全ての節点
(葉であるか内部節点であるかを問わず)に文字を割り
当てている。また、この文脈木は、あくまでも条件付け
のために用いこれ自体で符号化する訳ではないので、あ
る内部節点から3本以上の枝が分岐していることがあり
得る。また、これらの枝には、符号が割り当てられてい
ない。さらに、文脈木に登録された3文字の文脈に全く
当てはまらない文脈や1文字又は2文字しか当てはまら
ない文脈が生起された場合に備え、各内部節点には未出
現記号(ESC)も接続されている。なお、ファイルの
終了を示すために、根には終了記号(EOF)も接続さ
れている。また、文脈木においては、「レベル」のこと
を「〜次,次数」という。
【0187】各内部節点に対応する文字が生起された条
件下においては、次にどの文字が生起されるかの確率
は、無条件の場合に比して偏りが生じていると考えられ
る。即ち、過去に生じた文脈に沿った文字の生起確率が
それ以外の文字に比べて高いと考えられる。従って、あ
る文字が生起された条件下では、その文字に続く文脈に
沿った文字のみを符号化する符号木を適用しても、符号
化が可能である。しかも、このような条件付きの符号木
を適用すれば、この条件付きの符号木による符号化対象
の文字は限定されるので、符号木の規模が小さくなる。
その結果、符号語の符号長が短くなり、圧縮効率が高ま
る。
【0188】以上の理由により、文脈木の各内部節点に
は、当該内部節点に対応した根を有するとともに、当該
文脈木の内部節点に直接接続された次レベルの節点の文
字(ECS,EOFをも含む)を葉とする符号木が用意
されている。図24は、これらの符号木のうち、図23
の文脈木における根(root)に対応して備えられた
符号木を示している。なお、これらの符号木内において
は、上述の各実施例において説明したように、次に生起
する可能性のある文字に対応する符号長が短くなってい
る。即ち、生起する可能性が高い文脈に沿った文字ほ
ど、その圧縮率が高くなっているのである。 <制御内容> 〔符号化部における制御の内容〕図25は、符号化部2
において、データ入力部1からデータの転送があった時
に実行されるデータ圧縮(符号化)のための処理の内容
を示す。図25の処理は、圧縮対象のファイル(デー
タ)の受信をトリガとして、スタートする。
【0189】スタート後最初のステップS0901で
は、文脈木及び符号木を初期化して、テーブル3に登録
する。即ち、表6(1)に示すように、根(root)
に対して終了記号(EOF)及び未出現記号(ESC)
のみを接続して文脈木を生成する。そして、この文脈木
に基づいて、符号木を生成する。但し、文脈木の内部節
点は根(root)のみであるので、この根(roo
t)に対応した文脈木を生成する。従って、root下
の符号木は、終了記号(EOF)に対応した葉と未出現
記号(ESC)に対応した葉のみを、唯一の根に対して
2本の枝で接続した構造となる。そして、終了記号(E
OF)に接続されている左側の枝に符号“0”を与え、
未出現記号(ESC)に接続されている右側の枝に符号
“1”を与える。そして、根に順位“0”を与え、終了
記号(EOF)に順位“1”を与え、未出現記号(ES
C)に順位“2”を与える。以上のようにして文脈木及
び符号木の初期設定が完了すると、符号化部2は、この
符号木をテーブル3に格納する。符号化部2は、これと
ともに、文脈木の最高次数(定数)n1を宣言する。こ
の文脈木の最高次数とは、文脈木内における内部節点の
最高次数である。従って、図23の例では、n1=2と
なる。
【0190】次のステップS0902では、参照する既
出の文脈を更新する。即ち、上述のようにn1=2に設
定されているとすると、条件付きの符号木を有する文脈
木の内部節点の最高次数は2次となる。図23を見れば
理解されるように、2次の節点に対応する文脈木を適用
できる場合とは、1次と2次の文脈の条件を満たした場
合である。従って、参照する文脈は最近に生成された2
次の文脈であることが判る。そこで、このステップS0
902では、参照対象としての文脈を、最近生成された
2次の文脈に更新するのである。符号化部2は、また、
入力されたデータの中から順番にシンボル(文字)を一
つ取り出す(シンボル入力)。また、変数nにステップ
S0901にて宣言したn1の値を代入する。
【0191】次のステップS0903では、ステップS
0902にて更新した参照用の文脈(n次)が文脈木に
登録されているかをチェックする(文脈検索手段に対
応)。圧縮処理が進んで文脈木が延びればn次の文脈も
登録され得るが、最初にこのステップS0903に入っ
たときには、n=n1>0であって、文脈木には如何な
る文脈も登録されていないとされる。ステップS090
3にてn次の文脈が登録されていないと判定された場合
には、ステップS0904において、nを一つインクリ
メントして、再チェックを行う。
【0192】ステップS0903にてn次の文脈が登録
されていると判定した場合(n=0であって文脈が全く
登録されていない場合を含む。)には、処理をステップ
S0905に進める。このステップS0905では、現
時点のnの値が“0”であり且つシンボルが終了してい
るかどうかをチェックする。現時点のnの値が“0”で
ない場合,又はシンボルが終了していない場合には、処
理をステップS0906に進める。
【0193】ステップS0906では、ステップS09
03で探し出されたn次文脈の末端に当たる節点に対応
して設けられた符号木(n次の文脈木の下の符号木)
に、ステップS0902において入力したシンボルが登
録されているかどうかをチェックする。初期においては
文脈木には“0”次文脈しか登録されていない,即ち、
文脈が全く登録されていないので、根(root)に対
応した符号木内をチェックすることになる。そして、当
該シンボルが未登録である場合には、処理をステップS
0914に進め、当該シンボルが登録済である場合に
は、処理をステップS0907に進める。
【0194】シンボルが未登録である場合のステップS
0914においては、n次の文脈木の下の符号木を参照
して、未出現記号(ESC)の順位を検索する。そし
て、当該符号木における根から未出現記号(ESC)に
対応する葉までの経路を辿り、その経路上の枝に付され
ている“0”又は“1”の符号を順番に拾い、一連の符
号語を得る。
【0195】次のステップS0915では、データ送信
部4又はデータ書込部7に対して、ステップS0914
にて得た未出現記号(ESC)に対する符号語を出力す
る(未出現記号順位符号化手段に対応)。
【0196】次のステップS0915では、ステップS
0914にて検索した未出現記号(ESC)に対応する
葉の順位を基準に、n次の文脈木の下の符号木の更新を
行う(未出現記号順位更新手段に対応)。この符号木の
更新処理は、図8の処理を実行してなしている。但し、
このステップS0916のサブルーチンとして図8の処
理を実行する場合には、処理対象の注目節点は、未出現
記号(ESC)に対応する葉である。
【0197】図8から処理が戻された図25のメインル
ーチンにおいては、ステップS0917の処理を実行す
る。このステップS0917では、現在のnの値が
“0”であるのか否か,即ち、ステップS0906にて
チェック対象としたのが0次の文脈であるのか否かをチ
ェックする。そして、n=0でない場合,即ち、0次の
文脈ではない場合には、ステップS0921にてnの値
を一つデクリメントして、処理をステップS0905に
戻す。即ち、文脈木の節点を一つ根(root)側に戻
して、その節点に対応する符号木に基づいて符号化処理
を行うようにするのである。
【0198】これに対してn=0である場合,即ち、0
次の文脈である場合には、テーブル3内の何れの符号木
を用いても符号化することができない全く新規なシンボ
ルが入力された場合であると考えられる。そのため、ス
テップS0918において、データ送信部4又はデータ
書込部7に対して、ステップS0902にて入力したシ
ンボルの生データ(未圧縮のデータ)をそのまま出力す
る。
【0199】次のステップS0919では、ステップS
0902にて入力した新規シンボルをn次(0次)の符
号木に登録する。この符号木への新規シンボルの登録
は、図19の処理を実行してなされている。
【0200】図19から処理が戻された図25のメイン
ルーチンにおいては、ステップS0920において、文
脈木に新規シンボルを登録する。この登録は、文脈木の
1次の節点として新規シンボルに対応する節点を設け、
この節点と根(root)とを結ぶことによって、行わ
れる。
【0201】このステップS0920の処理が完了する
と、次のシンボルに対する圧縮処理を行うために、処理
をステップS0902に戻す。一方、ステップS090
6にてn次の文脈木の下の符号木にシンボルが登録され
ていると判定した場合のステップS0907において
は、n次の文脈木の下の符号木を参照して、ステップS
0902にて取り出したシンボルに対応する葉の順位を
検索する。そして、根から対応葉までの経路を辿り、そ
の経路上の枝に付されている“0”又は“1”の符号を
順番に拾い、一連の符号語を得る。
【0202】次のステップS0908では、このように
して得られた符号語を、データ送信部4又はデータ書込
部7に対して出力する(シンボル順位符号化手段に対
応)。次のステップS0909では、ステップS090
5にて検索した今回処理対象のシンボルに対応する葉の
順位を基準に、n次の文脈木の下の符号木の更新を行う
(符号木順位更新手段に対応)。この符号木の更新処理
は、図8の処理を実行してなしている。但し、このステ
ップS0909のサブルーチンとして図8の処理を実行
する場合には、処理対象の注目節点は、ステップS09
02にて取り出したシンボルに対応する葉である。
【0203】図8から処理が戻された図25のメインル
ーチンにおいては、ステップS0910において、n+
1次の文脈木の下に符号木があるか否かをチェックす
る。即ち、ステップS0909にて処理対象とした符号
木に対応する文脈木中の節点に続く節点に、対応する符
号木が設けられているかをチェックする。符号木が既に
設けられている場合には、新たな符号木を作成する必要
がないので、次のシンボルの圧縮を行うために、処理を
ステップS0902に戻す。
【0204】一方、符号木が設けられていない場合に
は、ステップS0911において現在のnの値がn1未
満であるかどうかをチェックする。nがn1以上である
場合には、最高次数を越えぬように、処理をステップS
0902に戻す。
【0205】一方、nがn1未満である場合には、ステ
ップS0912においてn+1次の文脈木の下におい
て、新たな符号木を作成する。即ち、ステップS090
9にて処理対象とした符号木に対応する文脈木中の節点
に続く節点をその根と対応させて、符号木を作成する。
この符号木には、未出現記号(ESC)と新規シンボル
のみを登録する。この際、新規シンボルの節点の順位が
未出現記号(ESC)の節点の順位よりも上になるよう
にする。
【0206】次のステップS0913では、文脈木に未
出現記号(ESC)及び新規シンボルを登録する。この
登録は、文脈木内のn+1次の節点から枝を二本延ば
し、それらの先端に設けられた節点に夫々未出現記号
(ESC)及び新規シンボルを対応させることによっ
て、行われる。
【0207】このステップS0913の処理が完了する
と、次のシンボルに対する圧縮処理を行うために、処理
をステップS0902に戻す。以上の処理を繰り返した
結果、現時点のnの値が“0”であり且つシンボルが終
了しているとステップS0905にて判定した場合に
は、ステップS0922において、根(root)に対
応する符号木を参照し、終了記号に対応する葉の順位を
検索する。そして、根から対応葉までの経路を辿り、そ
の経路上の枝に付されている“0”又は“1”の符号を
順番に拾い、一連の符号語を得る。
【0208】次のステップS0923では、ステップS
0922にて得られた符号語を、データ送信部4又はデ
ータ書込部7に対して出力する。その後、この圧縮処理
を終了する。 〔復元部における制御の内容〕図26は、復元部10に
おいて実行されるデータ復元のための処理の内容を示
す。図26の処理は、データ受信部6がデータを受信し
たこと,或いは、データ読み出し部9が外部指示に応じ
てデータ格納部8からデータを読み出したことをトリガ
としてスタートする。
【0209】スタート後最初のステップS1001で
は、文脈木及び符号木を初期化して、テーブル3に登録
する。即ち、復元部10は、図25のステップS100
1と同様にして、根(root)に対して終了記号(E
OF)及び未出現記号(ESC)のみを接続した文脈木
と、この文脈木に基づいた符号木とを、表6(1)に示
すように生成する。以上のようにして文脈木及び符号木
の初期設定が完了すると、復元部10は、これら文脈木
及び符号木をテーブル3に格納する。復元部10は、こ
れとともに、文脈木の最高次数(定数)n1を宣言す
る。ここでは、上述した通り、n1=2である。
【0210】次のステップS1002では、参照する既
出の文脈を更新する。即ち、復元部10は、参照対象と
しての文脈を、最近生成された2次の文脈に更新するの
である。また、復元部10は、ステップS1001にて
宣言したn1の値を変数nに代入する。更に、復元部1
0は、ファイル内のシンボルに対応する符号語を、受信
した順番(符号化部2において圧縮された順番)に従っ
て、一つ入力する。
【0211】次のステップS1003では、ステップS
1002にて更新した参照用の文脈(n次)が文脈木に
登録されているかをチェックする(文脈検索手段に対
応)。圧縮処理が進んで文脈木が延びればn次の文脈も
登録され得るが、最初にこのステップS1003に入っ
たときには、n=n1>0であって、文脈木には如何な
る文脈さえも登録されていないとされる。ステップS1
003にてn次の文脈が登録されていないと判定された
場合には、ステップS1004において、nを一つイン
クリメントして、再チェックを行う。
【0212】ステップS1004にてn次の文脈が登録
されていると判定した場合には、処理をステップS10
05に進める。このステップS1005では、ステップ
S1003で探し出したn次文脈の末端に当たる節点に
対応して設けられた符号木(n次の文脈下の符号木)を
参照して、入力した符号語に対応する葉の順位を検索す
る。即ち、符号木の根を起点にして、符号語が示す
“0”及び“1”の順番通りに枝を辿り、対応する順位
の葉を探す。そして、探し出した葉に対応つけられてい
るシンボルを読み取るのである(シンボル順位復号化手
段に対応)。
【0213】次のステップS1006では、現時点のn
の値が“0”であり且つシンボルが終了しているかどう
かをチェックする。現時点のnの値が“0”でない場
合,又はシンボルが終了していない場合には、処理をス
テップS1007に進める。
【0214】ステップS1007では、ステップS10
05にて復元したシンボルが未出現記号(ESC)であ
るか否かをチェックする。ステップS1007にて未出
現記号(ESC)であると判定した場合には、処理をス
テップS1014に進める(シンボル順位再復号化手段
に対応)。このステップS1014では、この未出現記
号(ESC)に対応する葉の順位を基準に、n次の文脈
木の下の符号木の更新を行う(未出現記号順位更新手段
に対応)。この符号木の更新処理は、図8の処理を実行
してなしている。但し、このステップS1016のサブ
ルーチンとして図8の処理を実行する場合には、処理対
象の注目節点は、未出現記号(ESC)に対応する葉で
ある。
【0215】図8から処理が戻された図26のメインル
ーチンにおいては、ステップS1015の処理を実行す
る。このステップS1015では、現在のnの値が
“0”であるのか否か,即ち、ステップS1014にて
更新した符号木が0次の文脈木下のものであるのか否か
をチェックする。そして、n=0でない場合,即ち、0
次の文脈木下ではない場合には、ステップS1019に
てnの値を一つデクリメントして、処理をステップS1
005に戻す(シンボル順位再復号化手段に対応)。即
ち、文脈木の節点を一つ根(root)側に戻して、そ
の節点に対応する符号木に基づいて符号化処理を行うよ
うにするのである。
【0216】これに対してn=0である場合,即ち、0
次の文脈である場合には、次に続くデータが新規シンボ
ルの生データ(未圧縮データ)であると考えることがで
きる。そこで、ステップS1016において、次のデー
タをそのまま出力する。
【0217】次のステップS1017では、ステップS
1016にて出力した新規シンボルを、テーブル11内
に格納されたn次の文脈木下の符号木に登録する。この
ステップS1017では、ステップS0919にて実行
されるのと全く同じ処理,即ち、図19のサブルーチン
を実行する。従って、テーブル11内に格納されたn次
の文脈木下の符号木は、テーブル3内に格納された符号
木と同期して、全く同様に更新されて行く。
【0218】図19から処理が戻された図25のメイン
ルーチンにおいては、ステップS1020において、文
脈木に新規シンボルを登録する。この登録は、文脈木の
1次の節点として新規シンボルに対応する節点を設け、
この節点と根(root)とを結ぶことによって、行わ
れる。
【0219】このステップS1020の処理が完了する
と、次の符号語に対する復元処理を行うために、処理を
ステップS1002に戻す。一方、ステップS1007
にて未出現記号(ESC)でないと判定した場合には、
次のステップS1008において、ステップS1005
にて復元したシンボルを出力する。
【0220】次のステップS1009では、ステップS
1008にて出力したシンボルに対応する葉の順位を基
準に、n次の文脈木の下の符号木の更新を行う(符号木
順位更新手段に対応)。この符号木の更新処理は、図8
の処理を実行してなしている。但し、このステップS1
016のサブルーチンとして図8の処理を実行する場合
には、処理対象の注目節点は、ステップS1005にて
復元したシンボルに対応する葉である。
【0221】図8から処理が戻された図26のメインル
ーチンにおいては、ステップS1010において、n+
1次の文脈木の下に符号木があるか否かをチェックす
る。即ち、ステップS1009にて処理対象とした符号
木に対応する文脈木中の節点に続く節点に、対応する符
号木が設けられているかをチェックする。符号木が既に
設けられている場合には、新たな符号木を作成する必要
がないので、次の符号語の復元を行うために、処理をス
テップS1002に戻す。
【0222】一方、符号木が設けられていない場合に
は、ステップS1011において現在のnの値がn1未
満であるかどうかをチェックする。nがn1以上である
場合には、最高次数を越えぬように、処理をステップS
1002に戻す。
【0223】一方、nがn1未満である場合には、ステ
ップS1012においてn+1次の文脈木の下におい
て、新たな符号木を作成する。即ち、図15のステップ
S0912と同様にして、符号木を作成する。この符号
木には、未出現記号(ESC)と新規シンボルのみを登
録する。この際、新規シンボルの節点の順位が未出現記
号(ESC)の節点の順位よりも上になるようにする。
【0224】次のステップS1013では、文脈木に未
出現記号(ESC)及び新規シンボルを登録する。この
登録は、文脈木内のn+1次の節点から枝を二本延ば
し、それらの先端に設けられた節点に夫々未出現記号
(ESC)及び新規シンボルを対応させることによっ
て、行われる。
【0225】このステップS1013の処理が完了する
と、次の符号語に対する復元処理を行うために、処理を
ステップS1002に戻す。 <実施例の作用>以上のように構成される本第6実施例
の作用を、表6に基づいて説明する。
【0226】
【表6】
【0227】いま、テーブル3内の文脈木及び符号木
が、表6(1)に示されるように初期設定されていると
する。そして、最初に新規シンボル“a”が出現したと
する。この時参照するのは0次の文脈である。符号化部
2は、表6(1)に示す形態を有する0次の文脈木下の
符号木を検索することにより、シンボル“a”が未登録
であることが判る。そこで、未出現記号(ESC)を符
号語“1”に符号化して出力する。符号化部2は、0次
の文脈下の符号木内において、符号化した未出現記号
(ESC)の葉を注目節点とし、この注目節点の位置を
一つ上の順位の節点(終了記号(EOF)に対応する
葉)と交換する。続いて、符号化部2は、新規シンボル
“a”の生データ(未圧縮のデータ)を出力する。続い
て、符号化部2は、0次の文脈木下の符号木中において
順位“1”の節点を分岐して、最下位の葉に新規シンボ
ルを登録する。また、符号化部2は、文脈木の根(ro
ot)から枝を延ばして、その先端の葉に新規シンボル
“a”を登録する。その結果、更新後の符号木の形態
は、表6(2)に示す通りとなる。
【0228】一方、初期状態においては、テーブル11
にも表6(1)に示される形態の文脈木及び符号木が格
納されている。従って、復元部10は、“1”の符号語
を受信すると、表6(1)に示す形態の符号木を検索す
ることにより、未出現記号(ESC)を得ることができ
る。すると、復元部10は、この“1”の符号語の後に
入力したデータが新規シンボルの生データであることを
認識することができるので、この新規シンボルの生デー
タ“a”をそのまま出力する。その後、復元部10は、
符号化部2と同様にして、テーブル11内の文脈木と符
号木を更新する。
【0229】次に、符号化部2において、シンボル
“a”が出現したとする。この時最初に参照するのは、
1次の文脈“a”である(ステップS0903を抜ける
と0次の文脈となる。)。符号化部2は、表6(2)に
示す形態を有する0次の文脈木下の符号木を検索するこ
とにより、この符号木にシンボルが登録されていること
が判る。そこで、このシンボルを符号語“01”に符号
化して出力する。符号化部2は、0次の文脈木下の符号
木内において、符号化したシンボル“a”の葉を注目節
点とし、この注目節点の位置を一つ上の順位の節点(終
了記号(EOF)に対応する葉)と交換する。続いて、
符号化部2は、文脈木内の1次の節点(“a”に対応す
る節点)に対応した新たな符号木を生成して、この新た
な符号木にシンボル“a”及び未出現記号(ESC)を
登録する。また、符号化部2は、文脈木の1次の節点
(“a”に対応する節点)から2本の枝を延ばして、そ
れらの先端の葉にシンボル“a”及び未出現記号(ES
C)を登録する。その結果、更新後の符号木の形態は、
表6(3)に示す通りとなる。
【0230】一方、復元部10は、“01”の符号語を
受信すると、表6(2)に示す形態の0次の文脈木下の
符号木を検索することにより、シンボル“a”を復元す
ることができる。その後、復元部10は、符号化部2と
同様にして、テーブル11内の文脈木と符号木を更新
し、新たな符号木を生成する。
【0231】次に、符号化部2において、新規シンボル
“b”が出現したとする。この時最初に参照するのは、
2次の文脈“aa”である(ステップS0903を抜け
ると1次の文脈“a”となる)。すると、符号化部2
は、表6(3)に示す形態を有する1次の文脈木下の符
号木(1次の文脈“a”の末端の節点“a”に対応した
符号木)を検索することにより、当該符号木にはシンボ
ル“b”が未登録であることが判る。そこで、未出現記
号(ESC)を符号語“1”に符号化して出力する。符
号化部2は、1次の文脈“a”の末端の節点“a”に対
応した符号木内において、符号化した未出現記号(ES
C)の葉を注目節点とし、この注目節点の位置を一つ上
の順位の節点(終了記号(EOF)に対応する葉)と交
換する。次に、符号化部2は、表6(3)に示す形態を
有する0次の文脈木下の符号木を検索することにより、
当該符号木にはシンボル“b”が未登録であることが判
る。そこで、未出現記号(ESC)を符号語“1”に符
号化して出力する。符号化部2は、0次の文脈木下の符
号木内において、符号化した未出現記号(ESC)の葉
を注目節点とし、この注目節点の位置を一つ上の順位の
節点(順位“1”の節点)と交換する。続いて、符号化
部2は、新規シンボル“b”の生データ(未圧縮のデー
タ)を出力する。続いて、符号化部2は、0次の文脈木
下の符号木中において順位“3”の節点を分岐して、最
下位の葉に新規シンボル“b”を登録する。また、符号
化部2は、文脈木の根(root)から枝を延ばして、
その先端の葉に新規シンボル“a”を登録する。その結
果、更新後の符号木の形態は、図表6(4)に示す通り
となる。
【0232】一方、復元部10は、“1”の符号語を受
信すると、表6(3)に示す形態を有する1次の文脈木
下の符号木(1次の文脈“a”の末端の節点“a”に対
応した符号木)を検索することにより、未出現記号(E
SC)を得ることができる。次に、“1”の符号語を受
信すると、表6(3)に示す形態を有する0次の文脈木
下の符号木を検索することにより、未出現記号(ES
C)を得ることができる。すると、復元部10は、これ
ら“11”の符号の後に入力したデータが新規シンボル
の生データであることを認識することができるので、こ
の新規シンボルの生データ“b”をそのまま出力する。
その後、復元部10は、符号化部2と同様にして、テー
ブル11内の文脈木と符号木を更新する。
【0233】次に、符号化部2において、新規シンボル
“c”が出現したとする。この時最初に参照するのは、
2次の文脈“ab”である(ステップS0903を抜け
ると0次の文脈となる。)。符号化部2は、表6(4)
に示す形態を有する0次の文脈木下の符号木を検索する
ことにより、当該符号木にはシンボル“c”が未登録で
あることが判る。そこで、未出現記号(ESC)を符号
語“0”に符号化して出力する。続いて、符号化部2
は、新規シンボル“c”の生データ(未圧縮のデータ)
を出力する。続いて、符号化部2は、0次の文脈木下の
符号木中において順位“4”の節点を分岐して、最下位
の葉に新規シンボル“c”を登録する。また、符号化部
2は、文脈木の根(root)から枝を延ばして、その
先端の葉に新規シンボル“c”を登録する。その結果、
更新後の符号木の形態は、表(5)に示す通りとなる。
【0234】一方、復元部10は、“0”の符号語を受
信すると、表6(4)に示す形態を有する0次の文脈木
下の符号木を検索することにより、未出現記号(ES
C)を得ることができる。すると、復元部10は、この
“0”の符号の後に入力したデータが新規シンボルの生
データであることを認識することができるので、この新
規シンボルの生データ“c”をそのまま出力する。その
後、復元部10は、符号化部2と同様にして、テーブル
11内の文脈木と符号木を更新する。
【0235】以上のように、本第6実施例によると、第
1実施例,第4実施例,及び第5実施例の作用を全て実
現できるとともに、文脈モデルを併用することによって
圧縮効率を更に向上させることができる。
【0236】なお、本第6実施例においては、図25の
ステップS0909,及びS0916,並びに図26の
ステップS1009,及びS1014の符号木更新処理
として、図8のサブルーチンを実行しているが、これに
代えて、図10のサブルーチン又は図12のサブルーチ
ンを実行しても良い。また、図25のステップS091
9,及び図26のステップS1017の新規シンボルの
登録処理として、図19のサブルーチンを実行している
が、これに変えて、図16のサブルーチンを実行しても
良い。
【0237】
【発明の効果】本発明によれば、符号木の各節点毎に頻
度を保持することを不要とすることでメモリの節約が可
能となり、各節点毎に保持された頻度を比較しなくて
も、生起頻度が高いシンボルの圧縮率が大きくなるよう
に符号木を更新することができる。よって、制御処理装
置の負荷を軽減させることができる。
【図面の簡単な説明】
【図1】 本発明の第1の態様の原理図
【図2】 本発明の第2の態様の原理図
【図3】 本発明の各実施例における圧縮処理制御の原
理を示すフローチャート
【図4】 本発明の各実施例における復元処理制御の原
理を示すフローチャート
【図5】 本発明の第1実施例のハード構成を示すブロ
ック図
【図6】 図5の符号化部にて実行される圧縮処理の内
容を示すフローチャート
【図7】 図5の復元部にて実行される復元処理の内容
を示すフローチャート
【図8】 図6のステップS0006及び図7のステッ
プS0106で実行される符号木の更新処理サブルーチ
ンを示すフローチャート
【図9】 本発明の第1実施例の作用の説明図
【図10】 本発明の第2実施例において、図6のステ
ップS0006及び図7のステップS0106で実行さ
れる符号木の更新処理サブルーチンを示すフローチャー
【図11】 本発明の第2実施例の作用の説明図
【図12】 本発明の第3実施例において、図6のステ
ップS0006及び図7のステップS0106で実行さ
れる符号木の更新処理サブルーチンを示すフローチャー
【図13】 本発明の第3実施例の作用の説明図
【図14】 本発明の第4実施例において、図5の符号
化部にて実行される圧縮処理の内容を示すフローチャー
【図15】 本発明の第4実施例において、図5の復元
部にて実行される復元処理の内容を示すフローチャート
【図16】 図14のステップS0511及び図15の
ステップS0611で実行される新規シンボルの符号木
への登録処理サブルーチンを示すフローチャート
【図17】 図16の処理の説明図
【図18】 本発明の第4実施例の作用の説明図
【図19】 本発明の第5実施例において、図14のス
テップS0511及び図15のステップS0611で実
行される新規シンボルの符号木への登録処理サブルーチ
ンを示すフローチャート
【図20】 図19の処理の説明図
【図21】 本発明の第5実施例の作用の説明図
【図22】 本発明の第6実施例の原理の説明図
【図23】 本発明の第6実施例において、図5の各テ
ーブル3,11内に格納された文脈木の説明図
【図24】 図23の文脈木の根(root)に対応し
た符号木の説明図
【図25】 本発明の第6実施例において、図5の符号
化部にて実行される圧縮処理の内容を示すフローチャー
【図26】 本発明の第6実施例において、図5の復元
部にて実行される復元処理の内容を示すフローチャート
【図27】 符号木の各部の名称の説明図
【図28】 ハフマン符号化方式の原理図
【図29】 図28の符号木による文字と符号語との関
係を示す図
【図30】 適応型符号化方式の原理図
【図31】 適応型符号化方式による符号木の更新例の
説明図
【図32】 図31の符号木による文字と符号語との関
係を示す図
【図33】 適応型符号化方式による符号木の更新例の
説明図
【図34】 図33の符号木による文字と符号語との関
係を示す図
【図35】 適応型符号化方式による符号木の更新例の
説明図
【図36】 図35の符号木による文字と符号語との関
係を示す図
【図37】 適応型符号化方式による符号木の更新例の
説明図
【図38】 図37の符号木による文字と符号語との関
係を示す図
【図39】 適応型符号化方式における新規シンボルの
登録例の説明図
【符号の説明】
1 データ入力部 2 符号化部 3 テーブル 10 復元部 11 テーブル 12 データ出力部 100 データ圧縮装置 101 圧縮用テーブル 102 データ入力手段 103 符号化手段 104 圧縮用テーブル更新手段 105 データ復元装置 106 復元用テーブル 107 符号入力手段 108 データ復元手段 109 復元用テーブル更新手段
フロントページの続き (56)参考文献 特開 昭61−242122(JP,A) 特開 昭63−209229(JP,A) 特開 平7−7436(JP,A) 特開 平7−221652(JP,A) 特開 平7−170197(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/42

Claims (21)

    (57)【特許請求の範囲】
  1. 【請求項1】過去に現われた単位データの出現状況に応
    じて、入力された単位データを動的に符号化するデータ
    圧縮装置において、 前記単位データ毎に順位を定めるとともにこの順位毎に
    符号を割り当てる圧縮用テーブルと、 圧縮対象の単位データを入力するデータ入力手段と、 前記圧縮用テーブルを検索して、前記データ入力手段に
    よって入力された前記単位データに対応する順位を求め
    てこの順位に対応する符号を出力する符号化手段と、 前記符号化手段による前記単位データに対応する符号の
    出力後に、前記圧縮用テーブル内における前記単位デー
    タの順位を、その順位のみに基づいて自己組織的に変更
    する圧縮用テーブル更新手段とを備えたことを特徴とす
    るデータ圧縮装置。
  2. 【請求項2】過去に現われた単位データの出現状況に応
    じて、動的に、入力された符号を複号化した単位データ
    を出力するデータ復元装置において、 前記単位データ毎に順位を定めるとともにこの順位毎に
    符号を割り当てる復元用テーブルと、 復元対象の符号を入力する符号入力手段と、 前記復元用テーブルを検索して、前記符号入力手段によ
    って入力された前記符号に対応する順位を求めてこの順
    位に対応する単位データを出力するデータ復元手段と、 前記データ復元手段による前記単位符号に対応する符号
    の出力後に、前記復元用テーブル内における前記単位デ
    ータの順位を、その順位のみに基づいて自己組織的に変
    更する復元用テーブル更新手段とを備えたことを特徴と
    するデータ復元装置。
  3. 【請求項3】前記圧縮用テーブルは、単一の根から枝を
    繰り返し分岐させた木構造を有し、枝の分岐点及び末端
    に形成された各節点に対して前記根から前記末端に向か
    う順番に順位が付され、前記末端の節点に前記単位デー
    タが登録されており、各分岐された枝毎に互いに識別可
    能な符号が与えられているとともに、 前記データ符号化手段は、前記根と前記入力された単位
    データが登録されている節点とを結ぶ経路上の前記符号
    を読み取ることによって、前記符号を出力することを特
    徴とする請求項1記載のデータ圧縮装置。
  4. 【請求項4】前記復元用テーブルは、単一の根から枝を
    繰り返し分岐させた木構造を有し、枝の分岐点及び末端
    に形成された各節点に対して前記根から前記末端に向か
    う順番に順位が付され、前記末端の節点に前記単位デー
    タが登録されており、各分岐された枝毎に互いに識別可
    能な符号が与えられているとともに、 前記データ復元手段は、前記符号と同じ符号が与えられ
    ている前記根からの経路を辿ることにより、その経路の
    末端の節点に登録されている前記単位データを探し、探
    し出した前記単位データを出力することを特徴とする請
    求項2記載のデータ復元装置。
  5. 【請求項5】請求項3記載のデータ圧縮装置と請求項4
    記載のデータ復元装置とからなるデータ圧縮・復元シス
    テムであって、 前記圧縮用デーブルの内容と前記復元用テーブルの内容
    とが同一であるとともに、 前記圧縮用テーブル更新手段及び前記復元用テーブル更
    新手段は、同一の手順に従って前記各テーブルの更新処
    理を行うことを特徴とするデータ圧縮・復元システム。
  6. 【請求項6】前記データ入力手段により入力された前記
    単位データが前記圧縮用テーブル内に登録されているか
    否かを判断するデータ登録有無判断手段を更に備えると
    ともに、 前記圧縮用テーブルには初期状態において終了記号と未
    出現記号のみが登録されており、 前記符号化手段は、前記データ登録有無判断手段によっ
    て前記単位データが前記圧縮用テーブル内に登録されて
    いないと判断された時には、前記未出現記号に対応する
    順位を求めてこの順位に対応する符号を出力した後に、
    前記単位データ自体を出力し、 前記圧縮用テーブル更新手段は、前記符号化手段が前記
    未出現記号に対応する符号と前記単位データ自体とを出
    力した時には、前記圧縮用テーブル内における前記未出
    現記号の順位をその順位のみに基づいて自己組織的に変
    更した後に、前記単位データを前記圧縮用テーブルに登
    録することを特徴とする請求項1記載のデータ圧縮装
    置。
  7. 【請求項7】前記復元用テーブルには初期状態において
    終了記号と未出現記号のみが登録されており、 前記データ復元手段は、前記復元用テーブル内において
    前記符号に対応する順位が前記未登録符号に対応してい
    る場合には、前記符号の直後に入力された前記単位デー
    タをそのまま出力し、 前記復元用テーブル更新手段は、前記データ復元手段が
    符号の直後に入力された前記単位データをそのまま出力
    した時には、前記復元用テーブル内における前記未出現
    記号の順位をその順位のみに基づいて自己組織的に変更
    した後に、前記単位データを前記復元用テーブルに登録
    することを特徴とする請求項2記載のデータ復元装置。
  8. 【請求項8】請求項6記載のデータ圧縮装置と請求項7
    記載のデータ復元装置とからなるデータ圧縮・復元シス
    テムであって、 前記圧縮用テーブルの内容と前記復元用テーブルの内容
    とが同一であるとともに、 前記圧縮用テーブル更新手段及び前記復元用テーブル更
    新手段は、同一の手順に従って前記各テーブルの更新処
    理を行うことを特徴とするデータ圧縮・復元システム。
  9. 【請求項9】前記圧縮用テーブル更新手段及び前記復元
    用テーブル更新手段は、前記単位データが登録された節
    点を処理対象節点とするとともに、この処理対象節点を
    1つ上の順位の節点と入れ替える更新処理を行うことを
    特徴とする請求項5又は8記載のデータ圧縮・復元シス
    テム。
  10. 【請求項10】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記単位データが登録された
    節点を処理対象節点とするとともに、この処理対象節点
    を複数個順位が上の位置に挿入するとともにこの挿入し
    た位置から元の位置までにあった他の節点の順位を1つ
    づつ繰り下げる更新処理を行うことを特徴とする請求項
    5又は8記載のデータ圧縮・復元システム。
  11. 【請求項11】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記単位データが登録された
    節点を処理対象節点とするとともに、根に対して同じだ
    け離れた同一レベル内においてこの処理対象節点が最高
    順位にある場合にはこの処理対象節点を1つ上の順位の
    節点と入れ替え、前記同一レベル内においてこの処理対
    象節点が最高順位以外にある場合にはこの処理対象節点
    を前記最高順位の位置に挿入するとともにこの挿入した
    位置から元の位置までにあった他の節点の順位を一つづ
    つ繰り下げる更新処理を行うことを特徴とする請求項5
    又は8記載のデータ圧縮・復元システム。
  12. 【請求項12】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、更新処理がなされた節点より
    も前記根側に接続されている節点を新たな処理対象節点
    として、この処理対象節点に対して前記更新処理を行う
    ことを特徴とする請求項10乃至11の何れかに記載の
    データ圧縮・復元システム。
  13. 【請求項13】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記処理対象節点,及びこの
    処理対象節点の1つ上の順位の節点が共に末端の節点で
    ない場合には、前記更新処理を行わないことを特徴とす
    る請求項12記載のデータ圧縮・復元システム。
  14. 【請求項14】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記単位データが登録された
    節点を根の次の順位の位置に挿入する更新処理を行うこ
    とを特徴とする請求項5又は8記載のデータ圧縮・復元
    システム。
  15. 【請求項15】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記単位データが登録された
    節点を、根に対して同じだけ離れた同一レベル内におい
    て最高順位の位置に挿入するとともにこの挿入した位置
    から元の位置までにあった他の節点の順位を一つづつ繰
    り下げる挿入処理と一つ上の順位の節点と入れ替える交
    換処理とを繰り返すことによって、前記単位データが登
    録された節点を前記根の次の順位の位置まで移動させる
    更新処理を行うことを特徴とする請求項5又は8記載の
    データ圧縮・復元システム。
  16. 【請求項16】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、未出現記号の節点を分岐し、
    この分岐によって生成された2本の枝の末端の節点に前
    記実出現記号及び前記単位データを登録することを特徴
    とする請求項8記載のデータ圧縮・復元システム。
  17. 【請求項17】前記圧縮用テーブル更新手段及び前記復
    元用テーブル更新手段は、前記各テーブルを構成する節
    点のうち末端でない最下位の節点の次の順位に位置する
    末端の節点を分岐し、この分岐によって生成された枝の
    末端の節点に前記単位データを登録することを特徴とす
    る請求項8記載のデータ圧縮・復元システム。
  18. 【請求項18】過去に現われたシンボルの直前の文脈で
    の条件付出現状況に応じて動的に符号化を行うデータ圧
    縮装置において、 過去に表れた文脈を0次から一定次数までの範囲で木構
    造に登録した文脈木,及びこの文脈木の各次数のシンボ
    ル毎にそのシンボルに続くシンボル及び未出現記号の順
    位を定めて符号を割り当てた符号木を格納した圧縮用テ
    ーブルと、 圧縮対象のシンボルを入力する入力手段と、 前記シンボルがその末端に存在する前記一定次の文脈を
    前記文脈木から探す文脈検索手段と、 前記一定次から前記シンボルが存在する次数までの文脈
    に対応している各符号木を参照して未出現記号の順位を
    随時符号化する未出現記号順位符号化手段と、前記文脈
    検索手段によって探し出された前記文脈下において前記
    シンボルを登録している最高次数の符号木を参照して前
    記シンボルの順位を符号化するシンボル順位符号化手段
    と、 前記参照された符号木中での前記シンボルの順位のみに
    基づいて、この符号木内における前記シンボルの順位を
    自己組織的に更新する符号木順位更新手段と、前記参照
    された各符号木内での前記未出現記号の順位のみに基づ
    いて、これら各符号木内における前記未出現記号の順位
    を自己組織的に更新する未出現記号順位更新手段とを有
    することを特徴とするデータ圧縮装置。
  19. 【請求項19】過去に現われたシンボルの直前の文脈で
    の条件付出現状況に応じて、動的に、入力された符号を
    複合化したシンボルを出力するデータ復元装置におい
    て、 過去に表れた文脈を0次から一定次数までの範囲で木構
    造に登録した文脈木,及びこの文脈木の各次数のシンボ
    ル毎にそのシンボルに続くシンボル及び未出現記号の順
    位を定めて符号を割り当てた符号木を格納した復元用テ
    ーブルと、 復元対象の符号を入力する入力手段と、 前記シンボルがその末端に存在すると予想される前記一
    定次の文脈を前記文脈木から探す文脈検索手段と、 前記シンボルが存在すると予想される前記一定次の文脈
    下に存在する符号木に基づいて、前記符号から前記シン
    ボルの順位を復号化するシンボル順位復号化手段と、 このシンボル順位復号化手段によって復号された結果未
    出現記号が得られた場合には、前記シンボル順位復号化
    手段に対して、前記符号木の次数よりも一つ小さい次数
    の符号木を参照して前記シンボル順位の復号化を行わし
    めるシンボル順位再復号化手段と、 前記参照された符号木内での前記シンボルの順位のみに
    基づいて、この符号木内における前記シンボルの順位を
    自己組織的に更新する符号木順位更新手段と、前記参照
    された各符号木中での前記未出現記号の順位のみに基づ
    いて、これら各符号木内における前記未出現記号の順位
    を自己組織的に更新する未出現記号順位更新手段とを有
    することを特徴とするデータ復元装置。
  20. 【請求項20】請求項18記載のデータ圧縮装置と請求
    項19記載のデータ復元装置とからなるデータ圧縮・復
    元システムであって、 前記圧縮用デーブルの内容と前記復元用テーブルの内容
    とが同一であるとともに、 前記データ圧縮装置と前記データ復元装置における前記
    各符号木順位更新手段,及び、前記各未出現順位更新手
    段は、夫々同一の処理を行うことを特徴とするデータ圧
    縮・復元システム。
  21. 【請求項21】初期状態において、前記符号木には終了
    記号を含む全出現シンボルが登録されていることを特徴
    とする請求項20記載のデータ圧縮・復元システム。
JP5505896A 1995-03-14 1996-03-12 データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム Expired - Fee Related JP3266787B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5505896A JP3266787B2 (ja) 1995-03-14 1996-03-12 データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-54520 1995-03-14
JP5452095 1995-03-14
JP5505896A JP3266787B2 (ja) 1995-03-14 1996-03-12 データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム

Publications (2)

Publication Number Publication Date
JPH08316848A JPH08316848A (ja) 1996-11-29
JP3266787B2 true JP3266787B2 (ja) 2002-03-18

Family

ID=26395271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5505896A Expired - Fee Related JP3266787B2 (ja) 1995-03-14 1996-03-12 データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム

Country Status (1)

Country Link
JP (1) JP3266787B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291150B2 (en) 2007-01-19 2012-10-16 Mitsubishi Electric Corporation Table device, variable length coding apparatus, variable length decoding apparatus, and variable length coding and decoding apparatus

Also Published As

Publication number Publication date
JPH08316848A (ja) 1996-11-29

Similar Documents

Publication Publication Date Title
US5796356A (en) Data compressing apparatus, data restoring apparatus and data compressing/restoring system
AU626317B2 (en) Method and apparatus for encoding, decoding and transmitting data in compressed form
Grassberger Estimating the information content of symbol sequences and efficient codes
JP3273119B2 (ja) データ圧縮・伸長装置
US6982661B2 (en) Method of performing huffman decoding
CA2371375C (en) Bitwise adaptive encoding using prefix prediction
US7190287B2 (en) Method of generating Huffman code length information
JPH09162748A (ja) データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム
Fraenkel et al. Bidirectional huffman coding
JPH09505707A (ja) データ圧縮
JPS6356726B2 (ja)
Effros PPM performance with BWT complexity: A new method for lossless data compression
JP3266787B2 (ja) データ圧縮装置,データ復元装置,及びデータ圧縮・復元システム
Chen et al. E cient Lossless Compression of Trees and Graphs
CN108829872B (zh) 无损压缩文件的快速处理方法、设备、系统及存储介质
US6778107B2 (en) Method and apparatus for huffman decoding technique
Ghuge Map and Trie based Compression Algorithm for Data Transmission
Yokoo An adaptive data compression method based on context sorting
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
Al-Hussaini File compression using probabilistic grammars and LR parsing
JP3236747B2 (ja) データ伸長方式
Klein et al. Parallel Lempel Ziv Coding
Manzini Efficient algorithms for on-line symbol ranking compression
JP2799228B2 (ja) 辞書初期化方式
JPH05341953A (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: 20011211

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

Free format text: PAYMENT UNTIL: 20080111

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090111

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100111

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees