JPH0328092B2 - - Google Patents
Info
- Publication number
- JPH0328092B2 JPH0328092B2 JP63204857A JP20485788A JPH0328092B2 JP H0328092 B2 JPH0328092 B2 JP H0328092B2 JP 63204857 A JP63204857 A JP 63204857A JP 20485788 A JP20485788 A JP 20485788A JP H0328092 B2 JPH0328092 B2 JP H0328092B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- character
- codeword
- bits
- value
- 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 - Lifetime
Links
- 230000004044 response Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 description 40
- 238000007906 compression Methods 0.000 description 28
- 230000006835 compression Effects 0.000 description 24
- 238000000034 method Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 8
- 238000013144 data compression Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 102000006381 STAT1 Transcription Factor Human genes 0.000 description 5
- 108010044012 STAT1 Transcription Factor Proteins 0.000 description 5
- 230000006837 decompression Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
A 産業上の利用分野
本発明は、データ通信及びデータ記憶の両者に
適用可能なデータ圧縮に関する。チヤネルの帯域
幅の限界及び有限の数のチヤネルによりデータ通
信に対して課せられる制限のため、伝送のための
データの圧縮に対してかなりの努力が行なわれて
きた。記憶能力を増加させる努力の多くは、選択
された媒体上により多くのデータを記録する新し
い方法を工夫する事、即ちトラツクの数及びデー
タ密度を増加させる事に向けられてきた。データ
を記憶させるのに必要なスペースの大きさを減少
させるためにデータ圧縮を使用する事に対して
は、比較的小さな注意しか与えられていなかつ
た。ここで述べるデータ圧縮方式は、データ伝送
及びデータ記憶に等しく適用できる。 本発明は、特に、ビツト直列方式を用い、圧縮
比、即ち所定のメツセージを伝送する事ができる
ビツト数を所定のメツセージ中のビツト数の総数
で割つたものを増加させるデータ圧縮方式に関す
る。 B 背景技術 情報理論はメツセージ中の情報の量の尺度を与
える。n文字のメツセージを送信するのに必要な
文字の最少数mは、各文字の生起数にそのような
文字の生起確率の逆数の、kを底とする対数を掛
けた積の和である。ただし、kは異なつた文字の
数である。二進文字の場合、kは2に等しく、そ
して、 m=N(1)log(1/P[1])+n(0)log(1/P
[0]) …(1) ただし、mは必要なビツトの最少数であり、n
(1)はメツセージ中の「1」ビツトの数であり、n
(0)はメツセージ中の「0」ビツトの数であり、
P[1]は「1」ビツトの生じる確率であり、P
[0]は「0」ビツトの生じる確率である。メツ
セージ、即ち送信又は記憶すべきビツト・ストリ
ーム中のビツトの総数は、 n(t)=n(1)+n(0) であり、したがつて、 P[1]=n(1)/n(t)及びP[0]=n(0)
/
n(t) である。式1の対数は底が2である。(通常、
確率の逆数が取られる。これは確率が分数であ
り、それは負の対数値を有するからである。数字
の対数値の負数は、その逆数の対数値である。) 情報内容(エントロピー)はメツセージ全体を
知れば常に計算できる。ハフマン符号を用いた圧
縮は、情報パラメータについてのアプリオリな知
識に基づいている。例えば、電信用モールス符号
は、英語のハフマン符号に密接に関係している。
即ち、より短い符号が、より頻繁に生じるアルフ
アベツト文字に割当てられている。二進数(ビツ
ト)を用いたハフマン符号を英語の文字に割当て
る事も可能である。例えば、 11=E 10=T 01=O 001=A 0001=N 000010=I 000011=R …………… ハフマン型の符号の基本的な要請は、文字の符
号化の各々が別個のものであり、文字の間に区切
り記号なしに一意的に復号できる事である。 C 発明が解決しようとする課題 もちろん、多くの可能な符号化方式が存在する
が、それらは情報に関するアプリオリな知識、例
えば上記の例では英語の文字の頻度に依存してい
る。そのような符号化方式は、またデータ圧縮シ
ステムとも呼ばれるが、オリジナルのメツセージ
全体を使つて効率的な符号の割当てのために情報
パラメータを抽出している。長いメツセージの場
合、符号化パラメータを導出するためにメツセー
ジ全体を用いる手続は多くの明白な理由により望
ましくない。 米国特許4633490号は、送信及び受信システム
において使われる対称的な適応モデルを有する圧
縮/伸長について述べている。このモデルは先行
する(n−1)ビツトから導きだされた統計に基
づいてn番目のビツトを予測する。 下記に述べる符号器は、処理済のビツトから導
きだされたパラメータを用いたメツセージの符号
化にかかる。すなわち、符号化は既に処理された
情報により形成された履歴に基づいて行なわれ
る。 D 課題を解決するための手段 従来技術のビツト直列システムは、1及び0の
認識可能なパターンが文字単位で反復される時で
さえも、ビツト直列式に動作し続ける。本発明は
文字の形のあるパターンが生じた時を認識し、継
続した同一の文字を利用するために反復文字モー
ドに入る。 kビツト文字の場合、圧縮比はkに依存する。
良好な実施例におけるkの値は8に取られる。と
いうのは多くの現在のデイジタル装置は8ビツト
文字(一般にバイトと呼ばれる)又はその倍数を
取り扱うように構成されているからである。16ビ
ツト又は他のビツト長の文字への拡張は、良好な
実施例の詳細な記載に照らせば当業者にとつて明
白であろう。 本発明によれば、入力データ・ストリームの以
前のビツトは、次のビツトを予測し、予測された
ビツトが入力データ・ストリームからの対応する
次のビツトに等しい確率を計算するのに使われ
る。2進符号語は、計算された確率に対応する長
さを有するものが生成される。もし予測されたビ
ツトと実際のビツトが同じであれば、生成された
符号語は使用されず、また同じでなければその符
号語が利用装置に出力される。入力データ・スト
リーム中の連続した文字は比較され、もしそれが
同一の連続した文字であれば、連続文字に関する
別の符号語が生成される。同一でない文字が生じ
ると、そのようにして生成された符号語の最後の
ものが利用装置に出力される。 E 実施例 下記の説明中では、ビツト直列モードは単にビ
ツト・モードと呼び、反復文字モードは文字モー
ドと呼ぶ。 第1図のブロツク図は、本発明が特に役に立つ
システムを説明している。予測器/符号語10
は、入力データ・ストリームの次のビツトを予測
し予測されたビツトをPBIT線に供給する装置で
ある。信号線12上の入力データは、次のビツト
を予測するために使われるデータを予測器/符号
器10に供給する。 また予測器/符号器10は各予測毎に異なつた
符号語を生成する。この符号語はゲート回路16
を経て書込み回路18に結合される。もし予測さ
れたビツトPBITが入力データ線12上の実際の
ビツトと同じであれば、排他的OR(XOR)ゲー
ト14はデイスエーブルされ、ゲート回路16を
禁止する。もし予測されたビツトPBITが入力デ
ータ線12上の実際のビツトとは異なつている
と、XORゲート14がエネーブルされ、さらに
符号語を書込み回路18へゲート(出力)するゲ
ート回路16をエネーブルする。書込み回路18
は、デイスケツト110に符号語を記録するもの
である。 もし予測器/符号器10が、次のビツトを正し
く予測すると、デイスケツト110には何も出力
されない。もし予測ビツトが誤つていると、符号
語がデイスケツト110に出力される。また符号
語は、それ以上の符号語が利用可能でなく、符号
空間がリセツトされる毎に出力される。これは特
殊な符号語であつて、新しい符号空間を用いて後
続するサイクル中にデータ・ビツトを処理する代
りに正しいデータ・ビツトが付加される。 復元に関して、デイスケツト110が読取回路
112によつて読取られ、符号語が記憶される。
予測器/符号器10′は予測器/符号器10と同
じように動作する。予測されたビツトはXORゲ
ート116に供給され、それに関連する符号語は
符号一致回路114に結合される。予測器/符号
器10′からのnビツト符号語は、読取り回路1
12によつてデイスケツト110から読取られた
最初の(又は次の)nビツトと比較される。 予測器/符号器10′から供給される符号語及
び予測されたビツトは、同じ入力ストリームに関
して予測器/符号器10から生じるものと同じで
あるので、ビツトが誤つて予測された時、符号一
致判定回路114は、予測器/符号器10′から
のnビツトの符号語とデイスケツト110から読
み取られた最初のnビツトとを一致判定する。こ
れに応答して、符号一致判定回路114は、予測
ビツトPBITを反転するXORゲート116を活性
化する信号を供給する。したがつて、XORゲー
ト116からの出力データビツトは正しくなる。
XORゲート116からの出力データは信号線1
2上の入力データと同じであり、予測器/符号器
10′の入力に結合されるので、それは予測器/
符号器10に供給されたのと同じ情報に基づいて
次のビツトを予測する。 予測器/符号器10′は、もし符号語を使いき
ると、デイスケツト110からの次の符号語の一
致判定が行なわれなければならない条件を示す符
号語を発生する。(予測器/符号器10及び1
0′は同じ入力ストリームに関して同じ動作をす
るので、符号語の同じ系列の後に符号空間が空に
なり、符号空間が空になつた(消尽された)事を
示すために発行された符号語が同じでなければな
らない。)デイスケツト110からの次の、即ち
(n+1)番目のビツトは、PBIT線の偽(又は
ゼロ)の値にして符号一致装置が抽出されたn+
1番目のビツトを通過させる事により出力に通過
される出力ビツトである。 符号語が認識される時、nビツト(もし符号語
が、符号空間の消尽されたことを示すならばn+
1ビツト)が消去され、次のビツトが次の比較手
続きのために供給される。 予測器/符号器10′によつて生成される符号
語がデイスケツト110からのビツトに一致しな
い限り、予測されたPBITが実際のビツトであ
る。PBITが正しくない時、それはXORゲート1
16により反転されて訂正される。 予測器システムは、下記のようにカウンタを用
いて構成できるが、又次のビツトを正しく予測す
る確率を増加させるためにより洗練されたモデル
を用いることもできる。予測器/符号器10及び
10′の符号器部分も、両者が同じ型であり同じ
ように動作する限り、いくつもの設計のうち1つ
を用いる事ができる。 圧縮比は予測器/符号器10及び10′に依存
し、それがより「賢こい」即ちより適合的であれ
ばあるほどより高い圧縮度が得られる。 また圧縮比は符号語にも依存する。符号語は、
間違つた予測が行なわれる前に予測された先行す
る正しいビツトの数に対する何らの情報を供給又
は含まなければならない。ハフマン符号、即ち最
も頻繁に生じる文字が最小のビツトを用いるよう
に割り当てられる可変長符号は、より効率的な符
号化方式を形成する。 説明のための実施例に関する単純な予測器10
(及び10′)は、2個のカウンタ(1つは1の数
をカウントするため、もう1つはゼロをカウント
するため)と、どちらのカウンタがより大きなカ
ウント値を含むかに基いて予測ビツトを供給する
比較器とより成る。即ち、1のカウントがより高
い場合、1が予測される。いずれかのカウンタの
最上位ビツトがセツトされると両カウンタ内容を
2で割る(1ビツト位置だけカウンタ内容を右シ
フトするだけでよい)ようにシステムが設計され
ていれば、カウンタのサイズは大きい必要はな
い。 単純な符号器10(及び10′)は、正しい予
測の数をカウントするカウンタであつてもよい。
ビツトが間違つて予測された時、符号器のカウン
タ内容が符号語としてゲート・アウトされる。符
号語カウンタの全ビツトがセツトされると、カウ
ンタがリセツトされる事、即ち符号空間が消尽さ
れた事を示すようにその内容をゲート・アウトす
ることができる。 リセツト符号語はそれが発生する時に常に送ら
れるが、そのリセツト符号語に伴なう予測された
ビツトが正しいか又は正しくないかを示す何らか
の付加的な情報を供給する必要はない。そのよう
な情報を供給する最も単純な方法は、リセツト語
の終りに正しいビツトを付加することである。こ
れはビツトを処理する次のサイクルを待つよりも
効果的である。 また別の方法として、正しくない予測の前に予
測された正しいビツトの数を表わす符号化された
語を選択する読取専用メモリ(ROM)に対する
アドレスとしてカウンタ値を使うことができる。 より洗練された源モデルにより又はより効率的
な符号語生成により又はその両方を用いることに
より、より良好な圧縮を実現することができる。 確率的システムは、間違つた予測の確率が高い
時は小さな符号語が生成され、正しい予測の確率
が高い時はより長い符号語が生成されるように、
確率に基いて符号語を生成することによつてより
効率的な圧縮を行なうことができる。これは符号
空間の使用をより効率的にする。低い確率に対し
てより長い符号語が生成されるならば、長い符号
語はより少ない頻度で送信される。間違つた予測
の確率の高い場合により短かい符号語が生成され
るならば、長いものよりもより短かい符号語が送
信される。正味の結果はより良好な圧縮である。 1又は他のビツトの生起する確率は、1又はゼ
ロのカウンタ値の対数(好ましくは底2)を用い
て計算される。正確な対数値又は確率を計算する
ことは必要でなく、本発明の目的には相対値で充
分である。従つて、小数点以下2桁までの底2の
対数を用いれば、本発明によるシステムを最適の
機能レベルで動作させる要件を満足する。 底2は、変数が2進値として表現されるので選
ばれた。説明のための実施例において、対数は、
2つの分数ビツトを有する8ビツトの2進数とし
て表現される。例えば、00100011は001000.11即
ち10進数8.75を表わす。 確率、即ち両カウンタの合計値に対するカウン
タの値の比は、8ビツトの分数により表される。
分数の対数は負の値なので、確率の逆数の対数は
正の値である。しかし、確率の対数を負の値とし
て、又は絶対値として、又は確率の逆数の対数と
して見ることに何の相違もない。値は正の数によ
つて表現され、確率値に反比例する。即ち、確率
が小さければ小さい程、その確率の対数は大き
い。 以下の説明中で、PbはPの確率の2進値を表
わし、Pdは10進値、los[2]Pは10進値として
のPの確率、そしてPadjは2進数の調整された
確率値を表わす。下記のステツプは、確率が計算
される方法を示す。 P=0の場合、規約によりlog[2]P及び
PaPj=0とする。 Pb=00000001(実際は0.00000001)の場合、Pd
=0.0039063。log[2]Pの値は−8であるが、
上記のようにlog[2](1/P)=8である。最も
近い0.25(少数点以下2進2桁)に丸めると、
Padj=100000(実際は1000.00)である。これは10
進数32である。 同様に、Pb=00000010(Pd=0.0078125)に関
する対数値は、log[2](1/P)=7.00であり、
Padj=11100(実際は111.00)である。これは10進
数28である。 対数値を決定するための単純な実現法は、表索
引を用いることである。ハードウエアでは、これ
はアドレスがPbであり出力データがPadjである
ようなROMを用いて実施できる。また、Pbの入
力値に対してPadjの値を供給するようにPLAを
構成することもできる。ソフトウエアの実施例で
は、順次のPadj値のテーブルがある所定のアド
レスから記憶され、上記所定のアドレスからの変
位すなわちオフセツトとしてPb値を用いてPadj
値が検索される。そのようなテーブルの最初の16
個のエントリを下記に示した。Pbの下位3桁は
列の見出しに、Pbの他5ビツトは行の見出しに
示されており、テーブルのエントリはPadjの10
進値である。
適用可能なデータ圧縮に関する。チヤネルの帯域
幅の限界及び有限の数のチヤネルによりデータ通
信に対して課せられる制限のため、伝送のための
データの圧縮に対してかなりの努力が行なわれて
きた。記憶能力を増加させる努力の多くは、選択
された媒体上により多くのデータを記録する新し
い方法を工夫する事、即ちトラツクの数及びデー
タ密度を増加させる事に向けられてきた。データ
を記憶させるのに必要なスペースの大きさを減少
させるためにデータ圧縮を使用する事に対して
は、比較的小さな注意しか与えられていなかつ
た。ここで述べるデータ圧縮方式は、データ伝送
及びデータ記憶に等しく適用できる。 本発明は、特に、ビツト直列方式を用い、圧縮
比、即ち所定のメツセージを伝送する事ができる
ビツト数を所定のメツセージ中のビツト数の総数
で割つたものを増加させるデータ圧縮方式に関す
る。 B 背景技術 情報理論はメツセージ中の情報の量の尺度を与
える。n文字のメツセージを送信するのに必要な
文字の最少数mは、各文字の生起数にそのような
文字の生起確率の逆数の、kを底とする対数を掛
けた積の和である。ただし、kは異なつた文字の
数である。二進文字の場合、kは2に等しく、そ
して、 m=N(1)log(1/P[1])+n(0)log(1/P
[0]) …(1) ただし、mは必要なビツトの最少数であり、n
(1)はメツセージ中の「1」ビツトの数であり、n
(0)はメツセージ中の「0」ビツトの数であり、
P[1]は「1」ビツトの生じる確率であり、P
[0]は「0」ビツトの生じる確率である。メツ
セージ、即ち送信又は記憶すべきビツト・ストリ
ーム中のビツトの総数は、 n(t)=n(1)+n(0) であり、したがつて、 P[1]=n(1)/n(t)及びP[0]=n(0)
/
n(t) である。式1の対数は底が2である。(通常、
確率の逆数が取られる。これは確率が分数であ
り、それは負の対数値を有するからである。数字
の対数値の負数は、その逆数の対数値である。) 情報内容(エントロピー)はメツセージ全体を
知れば常に計算できる。ハフマン符号を用いた圧
縮は、情報パラメータについてのアプリオリな知
識に基づいている。例えば、電信用モールス符号
は、英語のハフマン符号に密接に関係している。
即ち、より短い符号が、より頻繁に生じるアルフ
アベツト文字に割当てられている。二進数(ビツ
ト)を用いたハフマン符号を英語の文字に割当て
る事も可能である。例えば、 11=E 10=T 01=O 001=A 0001=N 000010=I 000011=R …………… ハフマン型の符号の基本的な要請は、文字の符
号化の各々が別個のものであり、文字の間に区切
り記号なしに一意的に復号できる事である。 C 発明が解決しようとする課題 もちろん、多くの可能な符号化方式が存在する
が、それらは情報に関するアプリオリな知識、例
えば上記の例では英語の文字の頻度に依存してい
る。そのような符号化方式は、またデータ圧縮シ
ステムとも呼ばれるが、オリジナルのメツセージ
全体を使つて効率的な符号の割当てのために情報
パラメータを抽出している。長いメツセージの場
合、符号化パラメータを導出するためにメツセー
ジ全体を用いる手続は多くの明白な理由により望
ましくない。 米国特許4633490号は、送信及び受信システム
において使われる対称的な適応モデルを有する圧
縮/伸長について述べている。このモデルは先行
する(n−1)ビツトから導きだされた統計に基
づいてn番目のビツトを予測する。 下記に述べる符号器は、処理済のビツトから導
きだされたパラメータを用いたメツセージの符号
化にかかる。すなわち、符号化は既に処理された
情報により形成された履歴に基づいて行なわれ
る。 D 課題を解決するための手段 従来技術のビツト直列システムは、1及び0の
認識可能なパターンが文字単位で反復される時で
さえも、ビツト直列式に動作し続ける。本発明は
文字の形のあるパターンが生じた時を認識し、継
続した同一の文字を利用するために反復文字モー
ドに入る。 kビツト文字の場合、圧縮比はkに依存する。
良好な実施例におけるkの値は8に取られる。と
いうのは多くの現在のデイジタル装置は8ビツト
文字(一般にバイトと呼ばれる)又はその倍数を
取り扱うように構成されているからである。16ビ
ツト又は他のビツト長の文字への拡張は、良好な
実施例の詳細な記載に照らせば当業者にとつて明
白であろう。 本発明によれば、入力データ・ストリームの以
前のビツトは、次のビツトを予測し、予測された
ビツトが入力データ・ストリームからの対応する
次のビツトに等しい確率を計算するのに使われ
る。2進符号語は、計算された確率に対応する長
さを有するものが生成される。もし予測されたビ
ツトと実際のビツトが同じであれば、生成された
符号語は使用されず、また同じでなければその符
号語が利用装置に出力される。入力データ・スト
リーム中の連続した文字は比較され、もしそれが
同一の連続した文字であれば、連続文字に関する
別の符号語が生成される。同一でない文字が生じ
ると、そのようにして生成された符号語の最後の
ものが利用装置に出力される。 E 実施例 下記の説明中では、ビツト直列モードは単にビ
ツト・モードと呼び、反復文字モードは文字モー
ドと呼ぶ。 第1図のブロツク図は、本発明が特に役に立つ
システムを説明している。予測器/符号語10
は、入力データ・ストリームの次のビツトを予測
し予測されたビツトをPBIT線に供給する装置で
ある。信号線12上の入力データは、次のビツト
を予測するために使われるデータを予測器/符号
器10に供給する。 また予測器/符号器10は各予測毎に異なつた
符号語を生成する。この符号語はゲート回路16
を経て書込み回路18に結合される。もし予測さ
れたビツトPBITが入力データ線12上の実際の
ビツトと同じであれば、排他的OR(XOR)ゲー
ト14はデイスエーブルされ、ゲート回路16を
禁止する。もし予測されたビツトPBITが入力デ
ータ線12上の実際のビツトとは異なつている
と、XORゲート14がエネーブルされ、さらに
符号語を書込み回路18へゲート(出力)するゲ
ート回路16をエネーブルする。書込み回路18
は、デイスケツト110に符号語を記録するもの
である。 もし予測器/符号器10が、次のビツトを正し
く予測すると、デイスケツト110には何も出力
されない。もし予測ビツトが誤つていると、符号
語がデイスケツト110に出力される。また符号
語は、それ以上の符号語が利用可能でなく、符号
空間がリセツトされる毎に出力される。これは特
殊な符号語であつて、新しい符号空間を用いて後
続するサイクル中にデータ・ビツトを処理する代
りに正しいデータ・ビツトが付加される。 復元に関して、デイスケツト110が読取回路
112によつて読取られ、符号語が記憶される。
予測器/符号器10′は予測器/符号器10と同
じように動作する。予測されたビツトはXORゲ
ート116に供給され、それに関連する符号語は
符号一致回路114に結合される。予測器/符号
器10′からのnビツト符号語は、読取り回路1
12によつてデイスケツト110から読取られた
最初の(又は次の)nビツトと比較される。 予測器/符号器10′から供給される符号語及
び予測されたビツトは、同じ入力ストリームに関
して予測器/符号器10から生じるものと同じで
あるので、ビツトが誤つて予測された時、符号一
致判定回路114は、予測器/符号器10′から
のnビツトの符号語とデイスケツト110から読
み取られた最初のnビツトとを一致判定する。こ
れに応答して、符号一致判定回路114は、予測
ビツトPBITを反転するXORゲート116を活性
化する信号を供給する。したがつて、XORゲー
ト116からの出力データビツトは正しくなる。
XORゲート116からの出力データは信号線1
2上の入力データと同じであり、予測器/符号器
10′の入力に結合されるので、それは予測器/
符号器10に供給されたのと同じ情報に基づいて
次のビツトを予測する。 予測器/符号器10′は、もし符号語を使いき
ると、デイスケツト110からの次の符号語の一
致判定が行なわれなければならない条件を示す符
号語を発生する。(予測器/符号器10及び1
0′は同じ入力ストリームに関して同じ動作をす
るので、符号語の同じ系列の後に符号空間が空に
なり、符号空間が空になつた(消尽された)事を
示すために発行された符号語が同じでなければな
らない。)デイスケツト110からの次の、即ち
(n+1)番目のビツトは、PBIT線の偽(又は
ゼロ)の値にして符号一致装置が抽出されたn+
1番目のビツトを通過させる事により出力に通過
される出力ビツトである。 符号語が認識される時、nビツト(もし符号語
が、符号空間の消尽されたことを示すならばn+
1ビツト)が消去され、次のビツトが次の比較手
続きのために供給される。 予測器/符号器10′によつて生成される符号
語がデイスケツト110からのビツトに一致しな
い限り、予測されたPBITが実際のビツトであ
る。PBITが正しくない時、それはXORゲート1
16により反転されて訂正される。 予測器システムは、下記のようにカウンタを用
いて構成できるが、又次のビツトを正しく予測す
る確率を増加させるためにより洗練されたモデル
を用いることもできる。予測器/符号器10及び
10′の符号器部分も、両者が同じ型であり同じ
ように動作する限り、いくつもの設計のうち1つ
を用いる事ができる。 圧縮比は予測器/符号器10及び10′に依存
し、それがより「賢こい」即ちより適合的であれ
ばあるほどより高い圧縮度が得られる。 また圧縮比は符号語にも依存する。符号語は、
間違つた予測が行なわれる前に予測された先行す
る正しいビツトの数に対する何らの情報を供給又
は含まなければならない。ハフマン符号、即ち最
も頻繁に生じる文字が最小のビツトを用いるよう
に割り当てられる可変長符号は、より効率的な符
号化方式を形成する。 説明のための実施例に関する単純な予測器10
(及び10′)は、2個のカウンタ(1つは1の数
をカウントするため、もう1つはゼロをカウント
するため)と、どちらのカウンタがより大きなカ
ウント値を含むかに基いて予測ビツトを供給する
比較器とより成る。即ち、1のカウントがより高
い場合、1が予測される。いずれかのカウンタの
最上位ビツトがセツトされると両カウンタ内容を
2で割る(1ビツト位置だけカウンタ内容を右シ
フトするだけでよい)ようにシステムが設計され
ていれば、カウンタのサイズは大きい必要はな
い。 単純な符号器10(及び10′)は、正しい予
測の数をカウントするカウンタであつてもよい。
ビツトが間違つて予測された時、符号器のカウン
タ内容が符号語としてゲート・アウトされる。符
号語カウンタの全ビツトがセツトされると、カウ
ンタがリセツトされる事、即ち符号空間が消尽さ
れた事を示すようにその内容をゲート・アウトす
ることができる。 リセツト符号語はそれが発生する時に常に送ら
れるが、そのリセツト符号語に伴なう予測された
ビツトが正しいか又は正しくないかを示す何らか
の付加的な情報を供給する必要はない。そのよう
な情報を供給する最も単純な方法は、リセツト語
の終りに正しいビツトを付加することである。こ
れはビツトを処理する次のサイクルを待つよりも
効果的である。 また別の方法として、正しくない予測の前に予
測された正しいビツトの数を表わす符号化された
語を選択する読取専用メモリ(ROM)に対する
アドレスとしてカウンタ値を使うことができる。 より洗練された源モデルにより又はより効率的
な符号語生成により又はその両方を用いることに
より、より良好な圧縮を実現することができる。 確率的システムは、間違つた予測の確率が高い
時は小さな符号語が生成され、正しい予測の確率
が高い時はより長い符号語が生成されるように、
確率に基いて符号語を生成することによつてより
効率的な圧縮を行なうことができる。これは符号
空間の使用をより効率的にする。低い確率に対し
てより長い符号語が生成されるならば、長い符号
語はより少ない頻度で送信される。間違つた予測
の確率の高い場合により短かい符号語が生成され
るならば、長いものよりもより短かい符号語が送
信される。正味の結果はより良好な圧縮である。 1又は他のビツトの生起する確率は、1又はゼ
ロのカウンタ値の対数(好ましくは底2)を用い
て計算される。正確な対数値又は確率を計算する
ことは必要でなく、本発明の目的には相対値で充
分である。従つて、小数点以下2桁までの底2の
対数を用いれば、本発明によるシステムを最適の
機能レベルで動作させる要件を満足する。 底2は、変数が2進値として表現されるので選
ばれた。説明のための実施例において、対数は、
2つの分数ビツトを有する8ビツトの2進数とし
て表現される。例えば、00100011は001000.11即
ち10進数8.75を表わす。 確率、即ち両カウンタの合計値に対するカウン
タの値の比は、8ビツトの分数により表される。
分数の対数は負の値なので、確率の逆数の対数は
正の値である。しかし、確率の対数を負の値とし
て、又は絶対値として、又は確率の逆数の対数と
して見ることに何の相違もない。値は正の数によ
つて表現され、確率値に反比例する。即ち、確率
が小さければ小さい程、その確率の対数は大き
い。 以下の説明中で、PbはPの確率の2進値を表
わし、Pdは10進値、los[2]Pは10進値として
のPの確率、そしてPadjは2進数の調整された
確率値を表わす。下記のステツプは、確率が計算
される方法を示す。 P=0の場合、規約によりlog[2]P及び
PaPj=0とする。 Pb=00000001(実際は0.00000001)の場合、Pd
=0.0039063。log[2]Pの値は−8であるが、
上記のようにlog[2](1/P)=8である。最も
近い0.25(少数点以下2進2桁)に丸めると、
Padj=100000(実際は1000.00)である。これは10
進数32である。 同様に、Pb=00000010(Pd=0.0078125)に関
する対数値は、log[2](1/P)=7.00であり、
Padj=11100(実際は111.00)である。これは10進
数28である。 対数値を決定するための単純な実現法は、表索
引を用いることである。ハードウエアでは、これ
はアドレスがPbであり出力データがPadjである
ようなROMを用いて実施できる。また、Pbの入
力値に対してPadjの値を供給するようにPLAを
構成することもできる。ソフトウエアの実施例で
は、順次のPadj値のテーブルがある所定のアド
レスから記憶され、上記所定のアドレスからの変
位すなわちオフセツトとしてPb値を用いてPadj
値が検索される。そのようなテーブルの最初の16
個のエントリを下記に示した。Pbの下位3桁は
列の見出しに、Pbの他5ビツトは行の見出しに
示されており、テーブルのエントリはPadjの10
進値である。
【表】
この値は底2の対数の値に関して正確ではない
が、索引テーブルの上記詳細な構成さら得られる
実際の値は本発明に目的にとつて充分である。他
の方式も、より正確か又は同様に満足の行くもの
であり得る。これらは当業者が実施する範囲内の
ものと考えられる。代替方法の間で選択を行なう
時の望ましい規準は実行の速度及び実現の単純さ
である。 以下詳細に説明するが、適当な時に文字モード
に変更することによつてビツト・モード・システ
ムにおけるデータ圧縮の改善がなされる。第2図
は本発明の反復文字モードを説明している。初期
設定、及び処理の終了判定のために処理された文
字を計数する事は、周知事項であるので省略し
た。 第2図で、点線231の右側のステツプは、ビ
ツト直列圧縮モードに関して上述したものであ
る。ビツト・テスト(223)で開始し、もし正し
いビツトが予測されたならば、他のテスト(227)
で処理が文字境界上にあるか否か、即ち次のビツ
トや新しい文字の最初のビツトか否かが判定され
る。文字境界上でなければ、テスト(217)によ
り符号空間が消尽されたか否かが判定される。 また間違つたビツトが予測されたならば
(223)、文字境界テスト(227)が行なわれる前に
符号語が出力される(225)。 もし符号空間が消尽されていなければ(217)、
上記のシーケンスが反復される。もし符号空間が
消尽されると、処理中の実際のデータ・ビツトが
リセツト符号語(221)に付加され出力される。
次に、文字境界テスト(227)が反復される。(符
号語が出力される毎に、符号空間はリセツトされ
る。) 文字境界に到達すると(227)、最後の文字が以
前の文字と同じか否かの判定が行なわれる
(229)。もしそうでなければ、上記のようにビツ
ト・モードが継続する。 文字が反復される時、システムは文字モードに
移る。文字モードの最初のステツプは符号空間を
チエツクする(201)。符号空間が消尽されていな
ければ、テスト(209)により、同じ文字が反復
されているか否かを判定する。もしそうであれ
ば、符号空間消尽テスト(201)が反復される。
もしそうでなければ、実際のデータ・ビツトが付
加され(215)、適当な符号語が出力される
(211)。次にシーケンスはビツト・モードに戻る。 文字モードで符号空間が消尽される(201)時、
もし以前の文字が反復されていれば(205)、ビツ
トが付加され(207)、符号語が出力される
(203)。文字モードは符号空間テスト(201)で継
続する。もし符号空間が消尽され、以前の文字が
反復されてになければ(205)、文字が反復されて
いない事を示すエラー・ビツトが付加されなけれ
ばならず(213)、また符号語が出力される(211)
前に実際のデータ・ビツトが付加されなければな
らない。 文字モードに変更することによつて、同一文字
の長いランがより効率的に圧縮される。データ・
ストリームが画像の要素(画素)を表現している
時、同様の文字の長いシーケンスは、符号化中の
画像が同じ色又はグレー・スケールの大きな領域
を有する時に、起きがちである。テキストにおい
ては、空白、点又はダツシユの長いシーケンスが
生じることがあり、これは文字モードを用いてよ
り効率的に符号化できる。 本発明の良好な実施例が流れ図の形で第3図〜
第8図に示されている。本発明を実施するために
当業者はそれらの流れ図から汎用デイジタル・コ
ンピユータのプログラムを書くことができる。効
率的に符号語を生成し且つ符号空間を管理するた
めの適当なサブルーチンが第5図の流れ図に示さ
れており、以下詳細に説明を行なう。文字はバイ
ト即ち8ビツトであると考える。 良好な実施例の下記の説明中で、次の省略語が
使用される。 ABIT 実際のビツト ADSTAT STAT0及びSTAT1カウンタのア
ドレス BYTES 非圧縮バイト・カウント(メツセー
ジの長さ) CBCNT 文字当りのビツト数(ここでは8) CTBYTES 処理済みのバイトのカウント KOLD 以前のKレジスタの値 KREG Kレジスタの値 LCHAR 最後の文字 LCM 反復文字モード離脱(フラグ) MSB 最上位ビツト PBIT 予測されたビツト PCHAR 以前の文字 RBFLAG ビツト/文字モード・インジケー
タ(0=ビツト・モード;1=文字モード;
2=文字モード離脱中−LCMの置き換え) STAT0 256の8ビツトの0ビツト・カウン
タの1つ STAT1 256の8ビツトの1ビツト・カウン
タの1つ ZFLAG 符号語強制のフラグ(符号空間消尽
を示す) 圧縮ルーチンが第3A図及び第3B図の流れ図
に示される。第3A図で、最初のステツプ(301)
は、圧縮すべきメツセージ中のバイト数の記録を
含む、種々の定数及びフラグの初期設定を行なう
ハウスキーピング・タスクである。例えば
STAT0及びSTAT1は1の初期値にセツトされ
る。CBCNTは8にセツトされ(文字がバイトの
場合)、KREGは16進数値0100にセツトされる。
他のフラグ及びカウンタはリセツトされる。 次に、処理すべき文字が残つているか否かの判
定(303)が行なわれ、もしなければプログラム
は終了する(305)。処理すべき文字がある限り、
次の文字を取り出すことによりプログラムの実行
は継続する(307)。次にシステムがビツト・モー
ドか否かを判定するテストが行なわれる(309)。
もしビツト・モードであれば、(少なくとも最初
の2文字はビツト・モードでなければならない
が、)次のビツトが予測される(317)。 次に、Nの値が計算され(319)、符号語を生成
するサブルーチン(321)が呼び出される。(Nは
現在の符号語中のビツトの数であり、この例では
最大8ビツトに制限される。)オフ・ページ・コ
ネクタ(323)は第3B図につながることを示し、
両方の図面で同じコネクタと考えられる。再びシ
ステムがビツト・モードにあるか否かのテストが
行なわれ(325)、もしそうであれば、1及び0の
カウンタSTAT1及びSTAT0が更新される
(327)。これに引き続いて、符号空間が消尽され
たか否かを判定するテストが行なわれる(329)。
もしそうでなければ、実際のビツトが予測ビツト
に対してテストされる(331)。それらが等しけれ
ば、現在の文字の全てのビツトが処理されたか、
即ち文字境界か否かを判定するテストが行なわれ
る(349)。 もし文字境界でなければ、3A2コネクタ
(353)に示すように、第3A図のオフ・ページ・
コネクタ3A2(353)に戻る。これはプログラ
ムが次ビツトを予測する(317)ことを示し、以
前に説明したシーケンスが反復される。 第3B図で、もし実際のビツト(ABIT)が予
測ビツト(PBIT)に等しくなければ(331)、符
号語が出力され、符号空間及びLCMフラグがリ
セツトされる(333)。その後、システムがビツ
ト・モードにあるか否かのテストが行なわれ
(347)、もしそうであれば、システムが文字境界
にあるか否かのテストが行なわれる(349)。もし
そうでなければ、オフ・ページ・コネクタ3A2
(353)によつて示される経路が反復される。 もし文字境界であれば(349)、最後の文字
LCHARが以前の文字PCHARに等しいか否かを
判定するテストが行なわれる(355)。もしそうで
なければ、少なくとも最初の2文字の場合のよう
に、システム実行経路はオフ・ページ・コネクタ
3A1(361)を経由し、文字が残つているか否
かを判定する処理(303)に戻る。 もし符号空間が消尽されていれば(329)、
ABITがPBITに等しいか否かのテストが行なわ
れる(335)。もしそうであれば、ゼロ・エラー・
ビツトが符号語に付加され(345)、符号語が出力
され符号空間がリセツトされる(333)。ゼロ・エ
ラー・ビツトは、正しいビツトが予測され、符号
空間の消尽により符号語が出力された事を示す。
1のエラー・ビツトは、予測されたビツトが誤つ
ていた事を示す。その代りに(復元プロセスに示
すように)、付加されたビツトは実際のビツトで
もよい。 もしABITがPBITに等しくなければ(335)、
符号語が出力される(333)体に、1エラー・ビ
ツトが符号語に付加(337)される。従つて、符
号空間が消尽されたことを示す符号語は、また符
号語に付加されたエラー・ビツトにより、正しい
ビツトが予測されたか否かも示す。復元ルーチン
に示すように、符号語が符号空間消尽に対応する
毎に、n+1ビツトがセンスされる。付加された
ビツトは、上述のように符号空間が消尽された時
にサイクル中に生じた実際のデータ・ビツトでも
よい。 事象の上記シーケンスは、2つの連続した文字
が同一でなければ継続する。LCHARがPCHAR
に等しければ(355)、システムは文字モードに切
り換えられ(359)、オフ・ページ・コネクタ3A
1(361)に示されるように続く。 ビツト・モードでビツトが処理された後に最後
の文字LCHARと以前の文字PCHARとが比較さ
れることが重要である。というのは復元ルーチン
は入力データについてのアプリオリな知識を持た
ないのでそれを受け取つた後でしか文字が反復さ
れた事を検出できないからである。 文字モードにおいて、ビツト・モードに関する
テスト(309)は、同じ文字が反復されたか否か
に関する他のテスト(311)を行なわせる。もし
そうでなければ、文字モード離脱(LCM)フラ
グがセツトされる(313)。もし文字が反復されて
いれば(311)、LCMフラグはセツトされない。 次に、文字モード中の符号語が常に8の長さを
持つように、Nの値が8にセツトされる。これは
単に、より多くの符号語を許容し且つ実現をより
経済的にする便宜である。本発明の技術思想に従
つて、より良い圧縮のために可変長符号語を使用
してもよい。 符号語が生成された(321)後に、ビツト・モ
ード・テスト(325)はLCMフラグのテスト
(339)を導く。LCMフラグがセツトされている
か、又はその代りにRBフラグが2に等しけれ
ば、符号空間が消尽されているか否かを判定する
テスト(343)が行なわれる。もしその結果がノ
ーであれば、プログラムの実行はオフ・ページ・
コネクタ3A1(361)を経由して続き、LCMフ
ラグがリセツトされている限り(339)文字の処
理を続ける。符号空間が消尽された時(343)、以
前に説明したようにゼロ・エラー・ビツトが符号
語に付加され(345)、符号語が出力される
(333)。 異なつた文字が取り出される時、同一文字テス
ト(311)は、LCMフラグがセツトされる(313)
原因になる。Nの値を8にセツトし(315)、他の
符号語を生成し(321)、ビツト・モードをテスト
(325)した後、LCMフラグのテスト(339)によ
り符号語に1エラー・ビツトが付加され、符号語
にデータ・セツトが付加され、ビツト・モードに
切り換えられる。次に符号語が出力され、符号空
間がリセツトされる(335)。次のビツト・モー
ド・テスト(347)で、次ステツプは文字境界の
テスト(349)になる。今説明しているシーケン
スでは文字境界ではなく、異なつた文字の最初の
ビツトが符号語に付加されるようにセツトされて
いるので、プログラムはコネクタ3A2(353)
を経由して続き、次ビツトを予測し、ビツト・モ
ードに関して以前述べたシーケンスが反復され
る。 RBフラグがゼロに等しいことによりビツト・
モードが指示されるならば、LCMフラグはリセ
ツトされる必要はない。ビツト・モードとLCM
のために別個のフラグが使用されるならば、ビツ
ト・モードへの切り換えの時にLCMフラグはリ
セツトされる。 これまで説明してきた圧縮ルーチンにおいて、
文字は、少なくとも2つの文字が処理されるま
で、一時に1ビツトづつ処理される。その後、文
字が同一であれば、システムは文字モードに切り
換わる。文字モードは、より短かい経路をサイク
ルし、一時に一文字全体を処理し、従つて処理速
度及びシステムの圧縮比を増加させる。 上記シーケンスは全ての入力文字が処理される
まで継続する。処理の終了は、処理された文字の
数を記録し、メツセージ中の数と処理済の数とを
比較することによつて、知らされる。 符号空間は、生成されたが出力されていない符
号語を記録するカウンタをリセツトする事によつ
てリセツトされる。 データ復元システムは、第3A図及び第3B図
を参照して説明した圧縮システムに似ており、出
力された符号語を元の入力データ・ストリームに
変換する。以下、第4A図及び第4B図の流れ図
を参照て、その説明を行なう。 第4A図及び第4B図は本発明による復元プロ
セスの流れ図である。初期設定(401)は圧縮プ
ロセスのハウススキーピング・タスクと類似であ
る。以前圧縮アルゴリズムに関して設明したよう
に、利用可能な情報を用いてカウンタ及びレジス
タがセツトされる。但し圧縮すべきバイト数のよ
うな情報は、復元プロセスにより最初から知られ
てはいない。復元プロセスの動作は第3A図及び
第3B図に関して述べた圧縮アルゴリズムと類似
している。 最初、システムはビツト・モードにあるので、
ビツト・モード・テスト(403)の後、ビツト予
測及びNの値の計算(407)が行なわれる。 符号空間が更新され(409)、圧縮プロセスと同
じサブルーチンを用いて符号語が生成される
(411)。もし、ビツト・モード・テスト(403)
で、システムが文字モードであれば、圧縮プロセ
スの場合と同様にNは8にセツトされる(405)。
4B1オフ・ページ・コネクタ(413)により第
4B図の符号一致テスト(415)に移る。 符号一致テストは入力データの最初のNビツト
を、生成された符号語のNビツトと比較する。符
号が一致しなければ、符号空間が消尽されたかど
うか(447)チエツクされる。符号空間が消尽さ
れていて、符号が不一致であれば、エラーが発生
しており、これは異常終了(449)の原因になる。
符号空間が消尽されていなければ(447)、システ
ムがビツト・モードか否かのテスト(451)が行
なわれる。 もしビツト・モードであれば、実際のビツト
ABITは、予測されたビツトPBITである(453)。
プログラムの経路は、4A1オフ・ページ・コネ
クタ(435)を経由して第4A図に続く。 そこで、システムが文字境界上か否かの判定
(437)が行なわれる。もし境界上でなければ、上
述の処理、即ち次ビツトの予測、Nの値の計算
(407)等が反復される。 第4B図で、もしシステムがビツト・モードで
なければ(451)、以前に受け取つた文字LCHAR
がメモリに記憶される(455)。即ち、符号一致が
存在せず、システムが文字モードにあるので、同
じ文字が反復されなければならない。次にプログ
ラムは4A2コネクタ(457)を経由して第4A
図に続き、Nを8にセツトし(405)、以前に述べ
たように処理を続ける。 第4B図で、符号一致(415)であれば、符号
空間リセツト(RCS)フラグがセツトされ、続
いて符号空間が消尽されたか否かのテスト(419)
が行なわれる。もしそうであれば、ビツト・モー
ドについてのテスト(421)が行なわれる。もし
ビツト・モードでなければ、即ちシステムが文字
モードであれば、n+1ビツトの値が調べられる
(423)。それが1ならば、符号語は、符号空間が
消尽され文字は以前の文字と同じである事を示し
ている。従つて、以前の文字LCHARが記憶さ
れ、入力データのn+1個の先行ビツトは除去さ
れる。プログラムは、4A3コネクタ(427)に
より指示されるような第4A図に続く。 今説明した経路はRCSフラグをセツトするの
で、符号空間をリセツトしRCSフラグをリセツ
トする(429)ことがわかる。次に、それ以上の
入力ビツトがあるか否かのテスト(431)が行な
われる。もしなければ、プログラムは終了し、文
字として記憶されたデータは、入力データ・スト
リームと同じである。もしそれ以上の入力ビツト
が存在すれば、プログラムはビツト・モード・テ
スト(403)を再開する。 第4B図の符号一致(415)の後、N+1ビツ
トがゼロであれば(423)、符号空間が消尽された
ことを示す符号語はゼロ・ビツトを付加してお
り、これは次の文字が以前の文字と同じではなか
つたことを示す。従つて、プロセスはビツト・モ
ードに切り換わり(443)、実際のビツトは次に付
加されたビツト、即ちN+2ビツトであり、シス
テムは先行するN+2ビツトを除去する。 もし符号一致があり(415)、シスステムがビツ
ト・モードであれば(421)、実際のビツトは付加
されたビツト、即ちN+1である。これは保存さ
れ、N+1ビツトがリセツトされる。(463)。言
いかえると、符号一致は、予測の誤まりに関して
符号語が出力され同時に符号空間が消尽されたの
で、正しいビツトが符号語のNビツトに付加され
た事を示す。 もし符号一致が存在し(415)、且つ符号空間が
消尽されていなければ(419)、ビツト・モード・
テストが行なわれる(459)。もしビツト・モード
でなければ、符号一致は次の文字が以前の文字と
同じでない事を意味するので、処理はビツト・モ
ードに切り換わる(461)。この場合、N+1ビツ
トの実際のビツトであり、これも前述のように付
加されたものである(463)。もしビツト・モード
でなければ(459)、符号一致は、予測ビツトが間
違つていたので実際のビツトABITは予測ビツト
を反転したものPBIT′である(465)事を示す。
次に符号語の次のNビツトが除去される。 4A1コネクタ(435)を経由して第4A図に
戻ると、もしプロセスが文字境界上にあれば
(437)、最後の文字LCHARが以前の文字位置
PCHARに移動される。処理された最後の文字を
形成する蓄積されたビツトより成る文字は最後の
文字位置LCHARにロードされ、出力データの一
部としてメモリに記憶される(439)。最後の文字
LCARは以前の文字PCHARと比較される
(441)。それらが同一であれば、システムは文字
モードにスイツチする(443)。次に符号空間リセ
ツト(RCS)フラグが検知される(445)。RCS
フラグがセツトされていると、符号空間がリセツ
トされRCSフラグがリセツトされる(429)。次
に、又RCSフラグがセツトされていなければ
(445)、以前に述べたように、さらに入力ビツト
があるかテストが行なわれる(431)。 第4A図及び第4B図を参照して説明してきた
プロセスは、圧縮アルゴリズム中の予測装置と同
じ方式で動作する予測装置によつてデータの復元
を行なう。このプロセスは2つの連続した同一の
文字(バイト)を認識し、文字モードに切り換わ
る。そして、符号語が8ビツトに一致し9番目の
ビツトがゼロになるまでその文字を記憶し続け
る。その後システムはビツト・モードに戻る。 符号語は圧縮アルゴリズムで使われたのと同じ
サブルーチンにより生成され、第5図に説明され
ている。 第5図に示す符号語生成サブルーチンの流れ図
について詳細に説明する。ビツト・モードで誤つ
たビツトが予測されるか又は文字モードで異なつ
た文字が生じた時に出力される符号語は、予測誤
まりの確率が高ければ短かく、予測誤まりの確率
が小さければ(それは使われそうもないので)長
い。予測器が1/2の確率を供給し符号空間がちよ
うど初期設定された時、実施例では符号語長Nは
1である。さらに上記説明における符号語は0が
望ましい。従つて使用されなくても、その後の符
号語は0で始まることができず、利用可能な符号
語の半分が消去される。 このサブルーチンにより生成される符号語は通
常、2つの部分から構成される。即ち、KREG
中に保持された値に対する論理演算から生成され
る符号語及びKREGから導出されたいくつかの
可能な値から選択された記憶部分である。記憶部
分は、符号語と論理和を取られるが、符号語の値
に依存して常に使用されるとは限らない。 サブルーチンの最初のステツプ(501)は
ZFLAGをリセツトする。KREGに記憶されてい
る現在の値はKOLDとして保存され、KREGは
2[−N]を引き算することにより修正される。
([ ]は括弧内の数値が指数であることを示す。)
この例では、KREGの値は8ビツトの2進数で
あり、符号語長Nは8の値までに制限される。
KREG中の値は分数又は逆数と見なされるので、
2[−N]は、左からN番目の位置の2進数1が
KREGの値から引かれる事を示している。これ
はいくつかの方法で実行することができるが、最
も単純な方法は2進数ベクトルe(9)を右へNビツ
ト位置シフトし、KREGからシフト結果を引き
算することである。(e(9)は9番目の位置に2進
数1を有し、他はゼロの2進数ベクトル、即ち
100000000を表わす。)N=5の場合、MSB(最上
位ビツト)を落とし8ビツト(バイト)値を残せ
ば、シフト結果は00001000である。これが
KREGの値から引き算される。もしそれが最初
全てゼロであれば、KREG中の値は11111000に
なる。 もしKREG中の結果値がゼロであれば(503)、
ZFLAGがセツトされる(505)。これは符号空間
が消尽された、即ちその後の処理サイクルに利用
可能な符号語がもう存在しないことを示す。次
に、KREGの新しい値の反転値とKREGの以前
の値即ちKOLDとの論理積を取ることにより符
号語が生成される(507)。即ち符号語=KOLD
&KREG′である。但し′はNOT即ち反転の論理
演算を示す。この演算は符号語=KOLD AND
NOT KREGと書く事もできる。 符号語は、それが全てゼロか又はMSBが2進
数1かを判定するためにテストされる(509)。も
しどちらかの条件が真であれば、生成された符号
語と記憶部分とはORされるべきでなく、プログ
ラムはポインタをゼロに初期設定する(521)よ
うに分岐する。そうでなければ、ポインタが初期
設定された符号語が左へ1ビツト位置シフトされ
る(513)。テストの時(515)MSBが2進数1で
なければ、ポインタの値は1の値だけ増加され
(517)、MSBが2進数1になるまでシフト動作
(513)とテスト(515)が反復される。次に記憶
部分(これはポインタにより供給されるアドレス
を用いてアクセスされる(518))が、符号語のシ
フト値と論理和を取られる(519)。これで符号語
の生成を終わる。 残りのステツプでは、その後の符号語が正しく
生成されるように、記憶部分が生成される。ポイ
ンタはゼロに初期設定され、KREG値とKOLD
値の反転値との論理積を取ることによりK値が作
成される。即ちK=KREG AND NOT KOLD
である(521)。 次に、Kの値が左へ1ビツト位置シフトされ
(523)、MSBが2進数1かどうかテストされる
(525)。MSBが1ならば、以前に生成された符号
語が、記憶アドレスに供給するポインタを用いて
記憶部分として記憶される(527)。記憶後又は
MSBが1ならば、ポインタは1だけ増加される
(529)。もしポインタ値がある限界例えば7より
も小さければ(531)、再びKがシフトされ(523)
そして上記シーケンスが反復される。ポインタ値
が限界に等しいか又はそれよりも大きく、8つの
記憶された部分が処理されたことを示す時、サブ
ルーチンを出て、プログラムの実行はサブルーチ
ンを呼び出したステツプに続くステツプに移る。 ビツトを予測するのに用いたモデルをさらに改
善する方法は、各文字毎に1及び0のカウンタの
対を別々に使用することである。良好な実施例で
は、文字は、バイトと呼ばれる連続した8ビツト
として扱われる。従つて、文字(バイト)が圧縮
のために処理される時、ビツトを予測するために
使われるカウンタは、そのバイトに関連する1及
び0のカウンタである。256個のバイトが存在し
うるので、512個のカウンタ、即ち256個の0カウ
ンタ及び256個の1カウンタが存在することにな
るのであろう。 第6図の流れ図は、付加的なカウンタの実現法
の詳細を示している。第6図の流れ図は、第3A
図の流れ図のブロツク303及び307を拡大し
ている。ENDF、即ち終了フラグに関するテスト
(303A)から、このプロロセスに入る。もしセツ
トされていれば、入力メツセージ中の全ての文字
が処理済なので、このルーチンを出る(305)。も
しセツトされていなければ、次の入力文字が取り
出され(307)、取り出されたバイトのカウント
CTBYESが増計数される(307A)。 もし取り出されたバイトが最後のバイトであれ
ば、即ちCTBYTESがBYTES(入力メツセージ
中の文字の総数)に等しければ(307B)、ENDF
がセツトされる(307C)。 各々の可能な入力バイト(文字)毎に別々のカ
ウンタを使用する事はモデルを改善し、従つて予
測ビツトが正しい確率を増加させる。複数カウン
タの使用は、同じ値の長い連続したビツトの影響
を消去する。例えば、カウンタ中の値が小さい時
に12個の連続したゼロのストリングに出会うと、
カウンタの値がより等しくなるまで、ランダムな
1及び0の長い期間にわたつて専らゼロが予測さ
れるであろう。 本発明は良好な実施例を参照して説明してきた
が、本発明の技術思想の範囲内で形成及び詳細な
点について種々の変更が可能なことは明らかであ
る。 しかし、各個の別々のバイト毎のカウンタ対を
アドレスすることは複雑である。というのは受け
取る側のノード即ち復元ルーチンはバイトに関し
てアプリオリな知識を有していないからである。
バイトはそれが解読された後にしか知られない。
従つて、復元は、カウンタ対を選択するために別
の方式を用いなければならない。しかし、符号器
10及び10′は正確に同じ動作をしなければな
らないので、圧縮ルーチンは同じ連続したカウン
タ対を使用しなければならない。 最初のビツトに関しては、01アドレス(2進数
00000001)が使用される。各ビツトが既知になる
と共に、01アドレスは1ビツト位置づつ左へシフ
トされ、現在判定されたビツトが最下位ビツト位
置にシフト入力される。 例えばバイトB2(2進数10110010)が被処理
バイトであると考える。最上位ビツトが最初であ
る。連続したカウンタの内容は下記の通りであ
る。
が、索引テーブルの上記詳細な構成さら得られる
実際の値は本発明に目的にとつて充分である。他
の方式も、より正確か又は同様に満足の行くもの
であり得る。これらは当業者が実施する範囲内の
ものと考えられる。代替方法の間で選択を行なう
時の望ましい規準は実行の速度及び実現の単純さ
である。 以下詳細に説明するが、適当な時に文字モード
に変更することによつてビツト・モード・システ
ムにおけるデータ圧縮の改善がなされる。第2図
は本発明の反復文字モードを説明している。初期
設定、及び処理の終了判定のために処理された文
字を計数する事は、周知事項であるので省略し
た。 第2図で、点線231の右側のステツプは、ビ
ツト直列圧縮モードに関して上述したものであ
る。ビツト・テスト(223)で開始し、もし正し
いビツトが予測されたならば、他のテスト(227)
で処理が文字境界上にあるか否か、即ち次のビツ
トや新しい文字の最初のビツトか否かが判定され
る。文字境界上でなければ、テスト(217)によ
り符号空間が消尽されたか否かが判定される。 また間違つたビツトが予測されたならば
(223)、文字境界テスト(227)が行なわれる前に
符号語が出力される(225)。 もし符号空間が消尽されていなければ(217)、
上記のシーケンスが反復される。もし符号空間が
消尽されると、処理中の実際のデータ・ビツトが
リセツト符号語(221)に付加され出力される。
次に、文字境界テスト(227)が反復される。(符
号語が出力される毎に、符号空間はリセツトされ
る。) 文字境界に到達すると(227)、最後の文字が以
前の文字と同じか否かの判定が行なわれる
(229)。もしそうでなければ、上記のようにビツ
ト・モードが継続する。 文字が反復される時、システムは文字モードに
移る。文字モードの最初のステツプは符号空間を
チエツクする(201)。符号空間が消尽されていな
ければ、テスト(209)により、同じ文字が反復
されているか否かを判定する。もしそうであれ
ば、符号空間消尽テスト(201)が反復される。
もしそうでなければ、実際のデータ・ビツトが付
加され(215)、適当な符号語が出力される
(211)。次にシーケンスはビツト・モードに戻る。 文字モードで符号空間が消尽される(201)時、
もし以前の文字が反復されていれば(205)、ビツ
トが付加され(207)、符号語が出力される
(203)。文字モードは符号空間テスト(201)で継
続する。もし符号空間が消尽され、以前の文字が
反復されてになければ(205)、文字が反復されて
いない事を示すエラー・ビツトが付加されなけれ
ばならず(213)、また符号語が出力される(211)
前に実際のデータ・ビツトが付加されなければな
らない。 文字モードに変更することによつて、同一文字
の長いランがより効率的に圧縮される。データ・
ストリームが画像の要素(画素)を表現している
時、同様の文字の長いシーケンスは、符号化中の
画像が同じ色又はグレー・スケールの大きな領域
を有する時に、起きがちである。テキストにおい
ては、空白、点又はダツシユの長いシーケンスが
生じることがあり、これは文字モードを用いてよ
り効率的に符号化できる。 本発明の良好な実施例が流れ図の形で第3図〜
第8図に示されている。本発明を実施するために
当業者はそれらの流れ図から汎用デイジタル・コ
ンピユータのプログラムを書くことができる。効
率的に符号語を生成し且つ符号空間を管理するた
めの適当なサブルーチンが第5図の流れ図に示さ
れており、以下詳細に説明を行なう。文字はバイ
ト即ち8ビツトであると考える。 良好な実施例の下記の説明中で、次の省略語が
使用される。 ABIT 実際のビツト ADSTAT STAT0及びSTAT1カウンタのア
ドレス BYTES 非圧縮バイト・カウント(メツセー
ジの長さ) CBCNT 文字当りのビツト数(ここでは8) CTBYTES 処理済みのバイトのカウント KOLD 以前のKレジスタの値 KREG Kレジスタの値 LCHAR 最後の文字 LCM 反復文字モード離脱(フラグ) MSB 最上位ビツト PBIT 予測されたビツト PCHAR 以前の文字 RBFLAG ビツト/文字モード・インジケー
タ(0=ビツト・モード;1=文字モード;
2=文字モード離脱中−LCMの置き換え) STAT0 256の8ビツトの0ビツト・カウン
タの1つ STAT1 256の8ビツトの1ビツト・カウン
タの1つ ZFLAG 符号語強制のフラグ(符号空間消尽
を示す) 圧縮ルーチンが第3A図及び第3B図の流れ図
に示される。第3A図で、最初のステツプ(301)
は、圧縮すべきメツセージ中のバイト数の記録を
含む、種々の定数及びフラグの初期設定を行なう
ハウスキーピング・タスクである。例えば
STAT0及びSTAT1は1の初期値にセツトされ
る。CBCNTは8にセツトされ(文字がバイトの
場合)、KREGは16進数値0100にセツトされる。
他のフラグ及びカウンタはリセツトされる。 次に、処理すべき文字が残つているか否かの判
定(303)が行なわれ、もしなければプログラム
は終了する(305)。処理すべき文字がある限り、
次の文字を取り出すことによりプログラムの実行
は継続する(307)。次にシステムがビツト・モー
ドか否かを判定するテストが行なわれる(309)。
もしビツト・モードであれば、(少なくとも最初
の2文字はビツト・モードでなければならない
が、)次のビツトが予測される(317)。 次に、Nの値が計算され(319)、符号語を生成
するサブルーチン(321)が呼び出される。(Nは
現在の符号語中のビツトの数であり、この例では
最大8ビツトに制限される。)オフ・ページ・コ
ネクタ(323)は第3B図につながることを示し、
両方の図面で同じコネクタと考えられる。再びシ
ステムがビツト・モードにあるか否かのテストが
行なわれ(325)、もしそうであれば、1及び0の
カウンタSTAT1及びSTAT0が更新される
(327)。これに引き続いて、符号空間が消尽され
たか否かを判定するテストが行なわれる(329)。
もしそうでなければ、実際のビツトが予測ビツト
に対してテストされる(331)。それらが等しけれ
ば、現在の文字の全てのビツトが処理されたか、
即ち文字境界か否かを判定するテストが行なわれ
る(349)。 もし文字境界でなければ、3A2コネクタ
(353)に示すように、第3A図のオフ・ページ・
コネクタ3A2(353)に戻る。これはプログラ
ムが次ビツトを予測する(317)ことを示し、以
前に説明したシーケンスが反復される。 第3B図で、もし実際のビツト(ABIT)が予
測ビツト(PBIT)に等しくなければ(331)、符
号語が出力され、符号空間及びLCMフラグがリ
セツトされる(333)。その後、システムがビツ
ト・モードにあるか否かのテストが行なわれ
(347)、もしそうであれば、システムが文字境界
にあるか否かのテストが行なわれる(349)。もし
そうでなければ、オフ・ページ・コネクタ3A2
(353)によつて示される経路が反復される。 もし文字境界であれば(349)、最後の文字
LCHARが以前の文字PCHARに等しいか否かを
判定するテストが行なわれる(355)。もしそうで
なければ、少なくとも最初の2文字の場合のよう
に、システム実行経路はオフ・ページ・コネクタ
3A1(361)を経由し、文字が残つているか否
かを判定する処理(303)に戻る。 もし符号空間が消尽されていれば(329)、
ABITがPBITに等しいか否かのテストが行なわ
れる(335)。もしそうであれば、ゼロ・エラー・
ビツトが符号語に付加され(345)、符号語が出力
され符号空間がリセツトされる(333)。ゼロ・エ
ラー・ビツトは、正しいビツトが予測され、符号
空間の消尽により符号語が出力された事を示す。
1のエラー・ビツトは、予測されたビツトが誤つ
ていた事を示す。その代りに(復元プロセスに示
すように)、付加されたビツトは実際のビツトで
もよい。 もしABITがPBITに等しくなければ(335)、
符号語が出力される(333)体に、1エラー・ビ
ツトが符号語に付加(337)される。従つて、符
号空間が消尽されたことを示す符号語は、また符
号語に付加されたエラー・ビツトにより、正しい
ビツトが予測されたか否かも示す。復元ルーチン
に示すように、符号語が符号空間消尽に対応する
毎に、n+1ビツトがセンスされる。付加された
ビツトは、上述のように符号空間が消尽された時
にサイクル中に生じた実際のデータ・ビツトでも
よい。 事象の上記シーケンスは、2つの連続した文字
が同一でなければ継続する。LCHARがPCHAR
に等しければ(355)、システムは文字モードに切
り換えられ(359)、オフ・ページ・コネクタ3A
1(361)に示されるように続く。 ビツト・モードでビツトが処理された後に最後
の文字LCHARと以前の文字PCHARとが比較さ
れることが重要である。というのは復元ルーチン
は入力データについてのアプリオリな知識を持た
ないのでそれを受け取つた後でしか文字が反復さ
れた事を検出できないからである。 文字モードにおいて、ビツト・モードに関する
テスト(309)は、同じ文字が反復されたか否か
に関する他のテスト(311)を行なわせる。もし
そうでなければ、文字モード離脱(LCM)フラ
グがセツトされる(313)。もし文字が反復されて
いれば(311)、LCMフラグはセツトされない。 次に、文字モード中の符号語が常に8の長さを
持つように、Nの値が8にセツトされる。これは
単に、より多くの符号語を許容し且つ実現をより
経済的にする便宜である。本発明の技術思想に従
つて、より良い圧縮のために可変長符号語を使用
してもよい。 符号語が生成された(321)後に、ビツト・モ
ード・テスト(325)はLCMフラグのテスト
(339)を導く。LCMフラグがセツトされている
か、又はその代りにRBフラグが2に等しけれ
ば、符号空間が消尽されているか否かを判定する
テスト(343)が行なわれる。もしその結果がノ
ーであれば、プログラムの実行はオフ・ページ・
コネクタ3A1(361)を経由して続き、LCMフ
ラグがリセツトされている限り(339)文字の処
理を続ける。符号空間が消尽された時(343)、以
前に説明したようにゼロ・エラー・ビツトが符号
語に付加され(345)、符号語が出力される
(333)。 異なつた文字が取り出される時、同一文字テス
ト(311)は、LCMフラグがセツトされる(313)
原因になる。Nの値を8にセツトし(315)、他の
符号語を生成し(321)、ビツト・モードをテスト
(325)した後、LCMフラグのテスト(339)によ
り符号語に1エラー・ビツトが付加され、符号語
にデータ・セツトが付加され、ビツト・モードに
切り換えられる。次に符号語が出力され、符号空
間がリセツトされる(335)。次のビツト・モー
ド・テスト(347)で、次ステツプは文字境界の
テスト(349)になる。今説明しているシーケン
スでは文字境界ではなく、異なつた文字の最初の
ビツトが符号語に付加されるようにセツトされて
いるので、プログラムはコネクタ3A2(353)
を経由して続き、次ビツトを予測し、ビツト・モ
ードに関して以前述べたシーケンスが反復され
る。 RBフラグがゼロに等しいことによりビツト・
モードが指示されるならば、LCMフラグはリセ
ツトされる必要はない。ビツト・モードとLCM
のために別個のフラグが使用されるならば、ビツ
ト・モードへの切り換えの時にLCMフラグはリ
セツトされる。 これまで説明してきた圧縮ルーチンにおいて、
文字は、少なくとも2つの文字が処理されるま
で、一時に1ビツトづつ処理される。その後、文
字が同一であれば、システムは文字モードに切り
換わる。文字モードは、より短かい経路をサイク
ルし、一時に一文字全体を処理し、従つて処理速
度及びシステムの圧縮比を増加させる。 上記シーケンスは全ての入力文字が処理される
まで継続する。処理の終了は、処理された文字の
数を記録し、メツセージ中の数と処理済の数とを
比較することによつて、知らされる。 符号空間は、生成されたが出力されていない符
号語を記録するカウンタをリセツトする事によつ
てリセツトされる。 データ復元システムは、第3A図及び第3B図
を参照して説明した圧縮システムに似ており、出
力された符号語を元の入力データ・ストリームに
変換する。以下、第4A図及び第4B図の流れ図
を参照て、その説明を行なう。 第4A図及び第4B図は本発明による復元プロ
セスの流れ図である。初期設定(401)は圧縮プ
ロセスのハウススキーピング・タスクと類似であ
る。以前圧縮アルゴリズムに関して設明したよう
に、利用可能な情報を用いてカウンタ及びレジス
タがセツトされる。但し圧縮すべきバイト数のよ
うな情報は、復元プロセスにより最初から知られ
てはいない。復元プロセスの動作は第3A図及び
第3B図に関して述べた圧縮アルゴリズムと類似
している。 最初、システムはビツト・モードにあるので、
ビツト・モード・テスト(403)の後、ビツト予
測及びNの値の計算(407)が行なわれる。 符号空間が更新され(409)、圧縮プロセスと同
じサブルーチンを用いて符号語が生成される
(411)。もし、ビツト・モード・テスト(403)
で、システムが文字モードであれば、圧縮プロセ
スの場合と同様にNは8にセツトされる(405)。
4B1オフ・ページ・コネクタ(413)により第
4B図の符号一致テスト(415)に移る。 符号一致テストは入力データの最初のNビツト
を、生成された符号語のNビツトと比較する。符
号が一致しなければ、符号空間が消尽されたかど
うか(447)チエツクされる。符号空間が消尽さ
れていて、符号が不一致であれば、エラーが発生
しており、これは異常終了(449)の原因になる。
符号空間が消尽されていなければ(447)、システ
ムがビツト・モードか否かのテスト(451)が行
なわれる。 もしビツト・モードであれば、実際のビツト
ABITは、予測されたビツトPBITである(453)。
プログラムの経路は、4A1オフ・ページ・コネ
クタ(435)を経由して第4A図に続く。 そこで、システムが文字境界上か否かの判定
(437)が行なわれる。もし境界上でなければ、上
述の処理、即ち次ビツトの予測、Nの値の計算
(407)等が反復される。 第4B図で、もしシステムがビツト・モードで
なければ(451)、以前に受け取つた文字LCHAR
がメモリに記憶される(455)。即ち、符号一致が
存在せず、システムが文字モードにあるので、同
じ文字が反復されなければならない。次にプログ
ラムは4A2コネクタ(457)を経由して第4A
図に続き、Nを8にセツトし(405)、以前に述べ
たように処理を続ける。 第4B図で、符号一致(415)であれば、符号
空間リセツト(RCS)フラグがセツトされ、続
いて符号空間が消尽されたか否かのテスト(419)
が行なわれる。もしそうであれば、ビツト・モー
ドについてのテスト(421)が行なわれる。もし
ビツト・モードでなければ、即ちシステムが文字
モードであれば、n+1ビツトの値が調べられる
(423)。それが1ならば、符号語は、符号空間が
消尽され文字は以前の文字と同じである事を示し
ている。従つて、以前の文字LCHARが記憶さ
れ、入力データのn+1個の先行ビツトは除去さ
れる。プログラムは、4A3コネクタ(427)に
より指示されるような第4A図に続く。 今説明した経路はRCSフラグをセツトするの
で、符号空間をリセツトしRCSフラグをリセツ
トする(429)ことがわかる。次に、それ以上の
入力ビツトがあるか否かのテスト(431)が行な
われる。もしなければ、プログラムは終了し、文
字として記憶されたデータは、入力データ・スト
リームと同じである。もしそれ以上の入力ビツト
が存在すれば、プログラムはビツト・モード・テ
スト(403)を再開する。 第4B図の符号一致(415)の後、N+1ビツ
トがゼロであれば(423)、符号空間が消尽された
ことを示す符号語はゼロ・ビツトを付加してお
り、これは次の文字が以前の文字と同じではなか
つたことを示す。従つて、プロセスはビツト・モ
ードに切り換わり(443)、実際のビツトは次に付
加されたビツト、即ちN+2ビツトであり、シス
テムは先行するN+2ビツトを除去する。 もし符号一致があり(415)、シスステムがビツ
ト・モードであれば(421)、実際のビツトは付加
されたビツト、即ちN+1である。これは保存さ
れ、N+1ビツトがリセツトされる。(463)。言
いかえると、符号一致は、予測の誤まりに関して
符号語が出力され同時に符号空間が消尽されたの
で、正しいビツトが符号語のNビツトに付加され
た事を示す。 もし符号一致が存在し(415)、且つ符号空間が
消尽されていなければ(419)、ビツト・モード・
テストが行なわれる(459)。もしビツト・モード
でなければ、符号一致は次の文字が以前の文字と
同じでない事を意味するので、処理はビツト・モ
ードに切り換わる(461)。この場合、N+1ビツ
トの実際のビツトであり、これも前述のように付
加されたものである(463)。もしビツト・モード
でなければ(459)、符号一致は、予測ビツトが間
違つていたので実際のビツトABITは予測ビツト
を反転したものPBIT′である(465)事を示す。
次に符号語の次のNビツトが除去される。 4A1コネクタ(435)を経由して第4A図に
戻ると、もしプロセスが文字境界上にあれば
(437)、最後の文字LCHARが以前の文字位置
PCHARに移動される。処理された最後の文字を
形成する蓄積されたビツトより成る文字は最後の
文字位置LCHARにロードされ、出力データの一
部としてメモリに記憶される(439)。最後の文字
LCARは以前の文字PCHARと比較される
(441)。それらが同一であれば、システムは文字
モードにスイツチする(443)。次に符号空間リセ
ツト(RCS)フラグが検知される(445)。RCS
フラグがセツトされていると、符号空間がリセツ
トされRCSフラグがリセツトされる(429)。次
に、又RCSフラグがセツトされていなければ
(445)、以前に述べたように、さらに入力ビツト
があるかテストが行なわれる(431)。 第4A図及び第4B図を参照して説明してきた
プロセスは、圧縮アルゴリズム中の予測装置と同
じ方式で動作する予測装置によつてデータの復元
を行なう。このプロセスは2つの連続した同一の
文字(バイト)を認識し、文字モードに切り換わ
る。そして、符号語が8ビツトに一致し9番目の
ビツトがゼロになるまでその文字を記憶し続け
る。その後システムはビツト・モードに戻る。 符号語は圧縮アルゴリズムで使われたのと同じ
サブルーチンにより生成され、第5図に説明され
ている。 第5図に示す符号語生成サブルーチンの流れ図
について詳細に説明する。ビツト・モードで誤つ
たビツトが予測されるか又は文字モードで異なつ
た文字が生じた時に出力される符号語は、予測誤
まりの確率が高ければ短かく、予測誤まりの確率
が小さければ(それは使われそうもないので)長
い。予測器が1/2の確率を供給し符号空間がちよ
うど初期設定された時、実施例では符号語長Nは
1である。さらに上記説明における符号語は0が
望ましい。従つて使用されなくても、その後の符
号語は0で始まることができず、利用可能な符号
語の半分が消去される。 このサブルーチンにより生成される符号語は通
常、2つの部分から構成される。即ち、KREG
中に保持された値に対する論理演算から生成され
る符号語及びKREGから導出されたいくつかの
可能な値から選択された記憶部分である。記憶部
分は、符号語と論理和を取られるが、符号語の値
に依存して常に使用されるとは限らない。 サブルーチンの最初のステツプ(501)は
ZFLAGをリセツトする。KREGに記憶されてい
る現在の値はKOLDとして保存され、KREGは
2[−N]を引き算することにより修正される。
([ ]は括弧内の数値が指数であることを示す。)
この例では、KREGの値は8ビツトの2進数で
あり、符号語長Nは8の値までに制限される。
KREG中の値は分数又は逆数と見なされるので、
2[−N]は、左からN番目の位置の2進数1が
KREGの値から引かれる事を示している。これ
はいくつかの方法で実行することができるが、最
も単純な方法は2進数ベクトルe(9)を右へNビツ
ト位置シフトし、KREGからシフト結果を引き
算することである。(e(9)は9番目の位置に2進
数1を有し、他はゼロの2進数ベクトル、即ち
100000000を表わす。)N=5の場合、MSB(最上
位ビツト)を落とし8ビツト(バイト)値を残せ
ば、シフト結果は00001000である。これが
KREGの値から引き算される。もしそれが最初
全てゼロであれば、KREG中の値は11111000に
なる。 もしKREG中の結果値がゼロであれば(503)、
ZFLAGがセツトされる(505)。これは符号空間
が消尽された、即ちその後の処理サイクルに利用
可能な符号語がもう存在しないことを示す。次
に、KREGの新しい値の反転値とKREGの以前
の値即ちKOLDとの論理積を取ることにより符
号語が生成される(507)。即ち符号語=KOLD
&KREG′である。但し′はNOT即ち反転の論理
演算を示す。この演算は符号語=KOLD AND
NOT KREGと書く事もできる。 符号語は、それが全てゼロか又はMSBが2進
数1かを判定するためにテストされる(509)。も
しどちらかの条件が真であれば、生成された符号
語と記憶部分とはORされるべきでなく、プログ
ラムはポインタをゼロに初期設定する(521)よ
うに分岐する。そうでなければ、ポインタが初期
設定された符号語が左へ1ビツト位置シフトされ
る(513)。テストの時(515)MSBが2進数1で
なければ、ポインタの値は1の値だけ増加され
(517)、MSBが2進数1になるまでシフト動作
(513)とテスト(515)が反復される。次に記憶
部分(これはポインタにより供給されるアドレス
を用いてアクセスされる(518))が、符号語のシ
フト値と論理和を取られる(519)。これで符号語
の生成を終わる。 残りのステツプでは、その後の符号語が正しく
生成されるように、記憶部分が生成される。ポイ
ンタはゼロに初期設定され、KREG値とKOLD
値の反転値との論理積を取ることによりK値が作
成される。即ちK=KREG AND NOT KOLD
である(521)。 次に、Kの値が左へ1ビツト位置シフトされ
(523)、MSBが2進数1かどうかテストされる
(525)。MSBが1ならば、以前に生成された符号
語が、記憶アドレスに供給するポインタを用いて
記憶部分として記憶される(527)。記憶後又は
MSBが1ならば、ポインタは1だけ増加される
(529)。もしポインタ値がある限界例えば7より
も小さければ(531)、再びKがシフトされ(523)
そして上記シーケンスが反復される。ポインタ値
が限界に等しいか又はそれよりも大きく、8つの
記憶された部分が処理されたことを示す時、サブ
ルーチンを出て、プログラムの実行はサブルーチ
ンを呼び出したステツプに続くステツプに移る。 ビツトを予測するのに用いたモデルをさらに改
善する方法は、各文字毎に1及び0のカウンタの
対を別々に使用することである。良好な実施例で
は、文字は、バイトと呼ばれる連続した8ビツト
として扱われる。従つて、文字(バイト)が圧縮
のために処理される時、ビツトを予測するために
使われるカウンタは、そのバイトに関連する1及
び0のカウンタである。256個のバイトが存在し
うるので、512個のカウンタ、即ち256個の0カウ
ンタ及び256個の1カウンタが存在することにな
るのであろう。 第6図の流れ図は、付加的なカウンタの実現法
の詳細を示している。第6図の流れ図は、第3A
図の流れ図のブロツク303及び307を拡大し
ている。ENDF、即ち終了フラグに関するテスト
(303A)から、このプロロセスに入る。もしセツ
トされていれば、入力メツセージ中の全ての文字
が処理済なので、このルーチンを出る(305)。も
しセツトされていなければ、次の入力文字が取り
出され(307)、取り出されたバイトのカウント
CTBYESが増計数される(307A)。 もし取り出されたバイトが最後のバイトであれ
ば、即ちCTBYTESがBYTES(入力メツセージ
中の文字の総数)に等しければ(307B)、ENDF
がセツトされる(307C)。 各々の可能な入力バイト(文字)毎に別々のカ
ウンタを使用する事はモデルを改善し、従つて予
測ビツトが正しい確率を増加させる。複数カウン
タの使用は、同じ値の長い連続したビツトの影響
を消去する。例えば、カウンタ中の値が小さい時
に12個の連続したゼロのストリングに出会うと、
カウンタの値がより等しくなるまで、ランダムな
1及び0の長い期間にわたつて専らゼロが予測さ
れるであろう。 本発明は良好な実施例を参照して説明してきた
が、本発明の技術思想の範囲内で形成及び詳細な
点について種々の変更が可能なことは明らかであ
る。 しかし、各個の別々のバイト毎のカウンタ対を
アドレスすることは複雑である。というのは受け
取る側のノード即ち復元ルーチンはバイトに関し
てアプリオリな知識を有していないからである。
バイトはそれが解読された後にしか知られない。
従つて、復元は、カウンタ対を選択するために別
の方式を用いなければならない。しかし、符号器
10及び10′は正確に同じ動作をしなければな
らないので、圧縮ルーチンは同じ連続したカウン
タ対を使用しなければならない。 最初のビツトに関しては、01アドレス(2進数
00000001)が使用される。各ビツトが既知になる
と共に、01アドレスは1ビツト位置づつ左へシフ
トされ、現在判定されたビツトが最下位ビツト位
置にシフト入力される。 例えばバイトB2(2進数10110010)が被処理
バイトであると考える。最上位ビツトが最初であ
る。連続したカウンタの内容は下記の通りであ
る。
【表】
実際のバイト値はバイト・サイクルの終りまで
不明であり、それ自身はアドレスとして使用され
ない。上記アドレスは以下では構成アドレスと呼
ぶ。 ビツト予測のために使用されるカウンタの実際
のアドレスADSTATは、ベース・アドレス即ち
00000000の入力バイト(これは実際には使われな
い)に関するカウンタのアドレスに、構成アドレ
ス・バイトの2倍、2×CHARを加算すること
によつて形成される。(構成アドレス・バイトに
2を掛けることは、構成アドレス・バイトを1ビ
ツト位置左へシフトすることにより行なわれる。)
例えば、00000000バイトに関する0カウンタ及び
1カウンタが各々1A00及び1A01(16進数)に記
憶され、入力バイトが0D(16進数)であれば、2
入バイトを2倍すると1Aになり、STAT0及び
STAT1カウンタは各々アドレス1A1A及び1
A1Bから検索される。
不明であり、それ自身はアドレスとして使用され
ない。上記アドレスは以下では構成アドレスと呼
ぶ。 ビツト予測のために使用されるカウンタの実際
のアドレスADSTATは、ベース・アドレス即ち
00000000の入力バイト(これは実際には使われな
い)に関するカウンタのアドレスに、構成アドレ
ス・バイトの2倍、2×CHARを加算すること
によつて形成される。(構成アドレス・バイトに
2を掛けることは、構成アドレス・バイトを1ビ
ツト位置左へシフトすることにより行なわれる。)
例えば、00000000バイトに関する0カウンタ及び
1カウンタが各々1A00及び1A01(16進数)に記
憶され、入力バイトが0D(16進数)であれば、2
入バイトを2倍すると1Aになり、STAT0及び
STAT1カウンタは各々アドレス1A1A及び1
A1Bから検索される。
第1図はデータ圧縮/復元システムのブロツク
図、第2図はビツト直列モード圧縮プロセスに反
復文字モードを付け加えたものを示す流れ図、第
3A図及び第3B図は反復文字モードを含むビツ
ト直列圧縮プロセスを示す流れ図、第4A図及び
第4B図は、第3A図及び第3B図の圧縮プロセ
スにより得られた符号語を元のデータ・ストリー
ムに変換する復元プロセスを示す流れ図、第5図
は符号語生成サブルーチンを示す流れ図、第6図
は圧縮比を改善するために複数組のビツト・カウ
ンタを用いるための付加的ステツプを示す流れ図
である。
図、第2図はビツト直列モード圧縮プロセスに反
復文字モードを付け加えたものを示す流れ図、第
3A図及び第3B図は反復文字モードを含むビツ
ト直列圧縮プロセスを示す流れ図、第4A図及び
第4B図は、第3A図及び第3B図の圧縮プロセ
スにより得られた符号語を元のデータ・ストリー
ムに変換する復元プロセスを示す流れ図、第5図
は符号語生成サブルーチンを示す流れ図、第6図
は圧縮比を改善するために複数組のビツト・カウ
ンタを用いるための付加的ステツプを示す流れ図
である。
Claims (1)
- 【特許請求の範囲】 1 圧縮すべきビツト列を供給するデータ入力手
段と、 上記データ入力手段に応答して、予測ビツト及
び上記予測ビツトが上記データ入力手段からの対
応するビツトに等しい確率を表わす値を供給する
予測手段と、 上記確率を表わす値に応答して、上記確率に対
応するビツト数を有する符号語を生成する符号化
手段と、 上記データ入力手段及び上記予測手段に応答し
て、上記予測ビツトを上記データ入力手段からの
対応するビツトと比較する手段と、 上記符号化手段及び上記比較手段に応答して、
上記予測ビツトが上記データ入力手段からの対応
するビツトに等しくない場合に上記符号語を利用
装置に供給する出力手段と、 上記データ入力手段に応答して、上記入力の連
続した文字を比較する文字比較手段と、 上記文字比較手段に応答して、上記圧縮すべき
入力中の連続した同じ文字毎に特有の符号語を上
記符号化手段に生成させ、上記文字比較手段によ
つて異なつた文字が見い出された時は上記出力手
段に、最後の同じ文字が付属した符号語を出力さ
せる手段とを有するデータ圧縮装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/088,771 US4799242A (en) | 1987-08-24 | 1987-08-24 | Multi-mode dynamic code assignment for data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS6471327A JPS6471327A (en) | 1989-03-16 |
JPH0328092B2 true JPH0328092B2 (ja) | 1991-04-18 |
Family
ID=22213355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63204857A Granted JPS6471327A (en) | 1987-08-24 | 1988-08-19 | Apparatus for compressing data |
Country Status (4)
Country | Link |
---|---|
US (1) | US4799242A (ja) |
EP (1) | EP0304608B1 (ja) |
JP (1) | JPS6471327A (ja) |
DE (1) | DE3854490T2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5020058A (en) * | 1989-01-23 | 1991-05-28 | Stratacom, Inc. | Packet voice/data communication system having protocol independent repetitive packet suppression |
JPH0314383A (ja) * | 1989-06-13 | 1991-01-23 | Canon Inc | 符号化装置 |
US5179711A (en) * | 1989-12-26 | 1993-01-12 | International Business Machines Corporation | Minimum identical consecutive run length data units compression method by searching consecutive data pair comparison results stored in a string |
JP3274284B2 (ja) * | 1994-08-08 | 2002-04-15 | キヤノン株式会社 | 符号化装置およびその方法 |
US5771182A (en) * | 1996-05-31 | 1998-06-23 | Motorola, Inc. | Bit-serial digital compressor |
US5793315A (en) * | 1996-05-31 | 1998-08-11 | Motorola, Inc. | Bit-serial digital expandor |
US5848262A (en) * | 1996-06-17 | 1998-12-08 | Hewlett-Packard Company | Simulating digital systems by using vector processing |
ATE371298T1 (de) * | 1996-11-07 | 2007-09-15 | Koninkl Philips Electronics Nv | Übertragung eines bitstromsignals |
US6331826B1 (en) * | 2000-01-04 | 2001-12-18 | International Business Machines Corporation | Method for providing an improved run-length encoding algorithm for data compression |
US7149878B1 (en) | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US20020118885A1 (en) * | 2001-02-27 | 2002-08-29 | Bernard Smeets | Font compression and retrieval |
US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
CN100349160C (zh) * | 2005-09-08 | 2007-11-14 | 无敌科技(西安)有限公司 | 一种对数据进行有限穷举优化的压缩方法 |
US8311994B2 (en) | 2005-10-14 | 2012-11-13 | Pivotlink Corp. | Run total encoded data processing |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5487106A (en) * | 1977-12-23 | 1979-07-11 | Fujitsu Ltd | Data compression method |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1432935A (en) * | 1971-11-29 | 1976-04-22 | Int Publishing Corp Ltd | Method and apparatus for code communication |
GB1471419A (en) * | 1973-04-12 | 1977-04-27 | Kokusai Denshin Denwa Co Ltd | Signal conversion system |
JPS54116822A (en) * | 1978-03-02 | 1979-09-11 | Nec Corp | Picture coder |
US4494151A (en) * | 1979-07-02 | 1985-01-15 | Xerox Corporation | 4-Pixel run-length code for data compression |
US4527252A (en) * | 1981-06-05 | 1985-07-02 | Xerox Corporation | Character generator |
JPS58140899A (ja) * | 1982-02-16 | 1983-08-20 | ソニ−・テクトロニクス株式会社 | ロジツク信号表示方法 |
JPS5937773A (ja) * | 1982-08-26 | 1984-03-01 | Canon Inc | ランレングス符号復号装置 |
US4486784A (en) * | 1982-12-27 | 1984-12-04 | International Business Machines Corporation | Image compression systems |
FR2554995B1 (fr) * | 1983-11-15 | 1989-05-05 | Thomson Cgr | Procede de compression d'une succession d'informations numeriques et dispositif mettant en oeuvre ce procede |
US4633490A (en) * | 1984-03-15 | 1986-12-30 | International Business Machines Corporation | Symmetrical optimized adaptive data compression/transfer/decompression system |
US4648119A (en) * | 1985-03-18 | 1987-03-03 | Tektronix, Inc. | Method and apparatus for forming 3×3 pixel arrays and for performing programmable pattern contingent modifications of those arrays |
-
1987
- 1987-08-24 US US07/088,771 patent/US4799242A/en not_active Expired - Fee Related
-
1988
- 1988-07-15 DE DE3854490T patent/DE3854490T2/de not_active Expired - Fee Related
- 1988-07-15 EP EP88111428A patent/EP0304608B1/en not_active Expired - Lifetime
- 1988-08-19 JP JP63204857A patent/JPS6471327A/ja active Granted
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5487106A (en) * | 1977-12-23 | 1979-07-11 | Fujitsu Ltd | Data compression method |
Also Published As
Publication number | Publication date |
---|---|
EP0304608A2 (en) | 1989-03-01 |
JPS6471327A (en) | 1989-03-16 |
EP0304608B1 (en) | 1995-09-20 |
DE3854490T2 (de) | 1996-05-02 |
US4799242A (en) | 1989-01-17 |
DE3854490D1 (de) | 1995-10-26 |
EP0304608A3 (en) | 1991-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101092106B1 (ko) | 데이터 압축 | |
US5490260A (en) | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size | |
US5710562A (en) | Method and apparatus for compressing arbitrary data | |
US3237170A (en) | Adaptive data compactor | |
US4216460A (en) | Transmission and/or recording of digital signals | |
JP2549254B2 (ja) | 有限アルファベットの任意記号の発生確率予測方法及び装置 | |
JPH0328092B2 (ja) | ||
US7511638B2 (en) | Data compression for communication between two or more components in a system | |
EP0127984B1 (en) | Improvements to apparatus for decoding error-correcting codes | |
JPH07283739A (ja) | 短ブロックのデータを圧縮、伸長するための方法、及び装置 | |
US20090019070A1 (en) | Data compression for communication between two or more components in a system | |
JP3684128B2 (ja) | 算術符号化/復号化方法ならびに算術符号化/復号化装置 | |
US5808572A (en) | Method and apparatus for finite-length arithmetic coding | |
WO1997035422A1 (en) | Encoder, decoder and methods used therefor | |
US5901251A (en) | Arithmetic coding compressor using a context model that is adaptive to variable length patterns in bi-level image data | |
KR100466455B1 (ko) | 부호변환기와가변길이부호복호장치및복호방법 | |
JPH11103257A (ja) | 算術符号化復号化装置 | |
CN111836051B (zh) | 一种桌面图像编码、解码方法及相关装置 | |
JP3061278B2 (ja) | 可変ビット長コード語のビット長通信方法 | |
GB2360915A (en) | Run length compression encoding of selected bits of data words | |
JPH06104769A (ja) | ハフマン符号復号装置 | |
JP3317079B2 (ja) | 可変長符号復号装置 | |
JPH07249995A (ja) | データ符号化装置 | |
EP0047382A2 (en) | Adaptive compression encoding of a binary-source symbol string | |
JPS6352812B2 (ja) |