JPH0258812B2 - - Google Patents

Info

Publication number
JPH0258812B2
JPH0258812B2 JP62202006A JP20200687A JPH0258812B2 JP H0258812 B2 JPH0258812 B2 JP H0258812B2 JP 62202006 A JP62202006 A JP 62202006A JP 20200687 A JP20200687 A JP 20200687A JP H0258812 B2 JPH0258812 B2 JP H0258812B2
Authority
JP
Japan
Prior art keywords
code
encoder
bits
bit
software
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
Application number
JP62202006A
Other languages
English (en)
Other versions
JPS6376524A (ja
Inventor
Rauane Mitsucheru Jon
Boon Penabaakaa Uiriamu
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS6376524A publication Critical patent/JPS6376524A/ja
Publication of JPH0258812B2 publication Critical patent/JPH0258812B2/ja
Granted legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

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 従来技術およびその問題点 データの圧縮、圧縮解除の1つの方法として、
算術符号化法が知られている。算術符号化法の一
般的な説明は、G.Langdon著の論文“An
Introduction to Arithmetic Coding”、IBM J.
Res.Develop.Vol28、No.2、pp.135−149(1984年
3月)に述べられており、本明細書でもこれを引
用する。 上記論文に述べられているように、算術符号化
法によれば、連続的に符号化された判断
(decision)が数直線に沿つた符号点に写像され
る。算術符号化法は、2以上の結果(outcome)
を持つ可能性のある判断にも適用可能である。な
お、このような結果を事象(event)ともいう。
ある判断についての結果のそれぞれには、確率が
関連する。各結果を「シンボル」と対応させるこ
とによつて、各結果がデータの形で表現される。
数直線はセグメントに分割される区間を表わす。
各セグメントは符号器へ各々のシンボルが入力さ
れることに対応する。4つの結果の可能性がある
判断では、4つのセグメント、例えばセグメント
a,b,c,dが存在する。判断が“d”事象に
対応するならば、“d”セグメントが現在区間と
して選択される。次にセグメントa,b,c,d
に分割されるのはこの現在区間である。このよう
に、数直線上で導かれる区間は、系列的に次々に
小さくなり、元の区間に包含されてしまうもので
ある。重要なことだが、各区間は一連の事象に一
意的に対応して生成される。与えられた判断事象
のストリングに対応して数直線上のある特定の区
間を指すコード・ストリームを生成することが、
算術符号化法に基づく「符号化」である。 特定の区間、そして各区間のセグメントの順序
付けおよび各々の長さに関する情報に基づいて、
関連する判断ストリングを復元することができ
る。このプロセスを算術符号化法に基づく「復
号」と呼ぶ。 2進算術符号化は、各判断の結果、2つの排他
的な事象のうちの1つが選ばれるという特殊なケ
ースである。2進符号化環境では、2つの事象の
うちの一方が確率Qを持つ劣勢シンボル(less
probuble symbol,LPS)と関係し、他方が確率
Pを持つ優劣シンボル(more pvobable
symbol,MPS)と関係する。2進算術符号化で
は、数直線に沿つた区間が2つのセグメントに分
けられる。そして、そのうちの1方がLPS事象
(または結果)の生起に対応し、他方がMPS事象
(または結果)の生起に対応する。各セグメント
の長さが2つの事象の確率P,Qをそれぞれ反映
していることが好ましい。 2進算術符号化用の符号器では、初期区間とし
て数直線の0と1の間の区間が割り当てられる。
上記Langdonの論文で述べられているハードウ
エアに適したスキームでは、LPS確率が該区間の
うちの数値の小さい方の側の第1のセグメントに
対応する。そして、MPS確率が該区間のうちの
数値の大きい方の側の第2のセグメントに対応す
る。最初符号点は該区間の下端(すなわち、0)
を指すようにセツトされるので、これに対応して
コード・ストリームも000……に初期化されるこ
とになる。ここで、数直線は0から1へ延びるに
もかかわらず、応答区間に含まれるのは2つの境
界値のうちの1つだけであることに注意するのは
重要である。例えば、ハードウエアによる符号化
における初期区間は、0および1までのすべての
点を含むが、1は含まない。同様に、ハードウエ
ア・スキームによつて引き続いて生成される区間
のそれぞれにおいて、その下限は含まれるが上限
は含まれない。 上記ハードウエア・スキームでは、LPS事象の
場合、符号点は固定されたままでコード・ストリ
ームの数値も変わらない。もつともコード・スト
リームの長さは増加する。LPS事象の後の新たな
現在区間(current interval)は、先行すると区
間のLPS(つまりQ)セグメントとして規定され
る。また、上記ハードウエア・スキームでは、
MPS事象が0から1までの適当な範囲とともに
生起したならば、符号点が値Qだけ増加するとと
もに、新たな現在区間はMPS事象に関連したも
の、つまり先行する区間のPセグメントになる。
ハードウエア符号器に関して言えば、MPS事象
毎に符号点を動かす方がLPS事象毎に符号点を動
かすよりも優れていることが(本明細書より)わ
かる。 C 発明が解決しようとする問題点 本明細書で開示した新規なソフトアウエアによ
る方策では、区間にその上限が含まれていてもよ
いが、下限の方は含まれない。すなわち、0から
1へ延びる数直線では、1および0に至るまでの
すべての点が含まれるものの、0は含まれない。
このソフトウエア・スキームによれば、コード・
ストリームの値は現在区間の上限に対応してお
り、LPS事象毎に減分されていく。本願の発明者
によつて、ソフトウエア・スキームでは、LPS事
象毎に符号点を動かす方が、MPS事象毎に符号
点を動かすよりも効率の点で優れていることがわ
かつた。 ところで、符号点の値をスキヤナー等のハード
ウエアで決定(つまり符号化)することが望まれ
る、または必須となる場合もあるし、符号点の決
定をワークステーシヨン等のソフトウエアで行う
ことが好ましい場合もある。同様に、与えられた
コード・ストリーム(これは、ある区間の中の対
応する符号点を表示する)から元の判断データを
復元する際に、ハードウエアによる復号器の方が
適切である。または必要とされる場合もあれば、
ソフトウエアによる復号器の方が適切である。ま
たは必要とされる場合もある。したがつて、ある
判断の組が与えられたときに、その組についてハ
ードウエア符号器とソフトウエア符号器がどちら
も同じコード・ストリームを生成すること、また
は少なくとも両符号器の生成するコード・ストリ
ームが同一の区間を指すようにすることが強く望
まれるであろう。そして、このように生成された
コード・ストリームについて、ハードウエア復号
器とソフトウエア復号器の両方が同一の判断デー
タの組を復元することも強く望まれるであろう。
このようにすると、ハードウエアとソフトウエア
のどちらを使つてもデータを符号化してコード・
ストリームを生成すること、およびハードウエア
とソフトウエアのどちらを使つても該コード・ス
トリームを復号して最初のデータを復元すること
のどちらもが可能となる。 しかしながら、今日まで、最適化されたハード
ウエアによつて生成されたコード・ストリームと
最適化されたソフトウエアによつて生成されたコ
ード・ストリームとを交換可能にし得ることは指
摘されなかつた。上記ハードウエア・スキームと
ソフトウエア・スキームの取決についての個々の
概説を見ると、ハードウエア・コード・ストリー
ムとソフトウエア・コード・ストリームは数直線
上の同一の符号点を指示しないことに気がつく。
(例えば、初期条件として、ハードウエア、コー
ド・ストリームは0を指し、一方ソフトウエア、
コード・ストリームは1を指す。)異なる符号点
を指すということは、コード・ストリームが同一
ではないということである。さらに、上で提案し
たような2つのコード・ストリームは、数直線に
沿つた同一の区間を指示しない。異なる区間を指
すということは、コード・ストリームはコンパチ
ブルでさえない、つまり同一の復号器では復号で
きないということである。この点については、あ
る与えられた区間の中の様々な符号点から同一の
判断の組を復号器によつて復元できることがわか
る。したがつて、2つの符号器による符号化の際
の符号点が同一の最終区間内の異なる点であつて
も同一のオリジナル判断データを生成することが
できる。生成されたコード・ストリームの指す最
終的な区間が異なるような2つの符号器はコンパ
チブルでない。 符号化は有限の精度をもつて行われるので、上
記コンパチビリテイの問題は、複雑になる。有限
精度の下で、コード・ストリームの長さに予め制
限は設けていないので、各判断事象が符号化され
る度に、該コード・ストリームは長くなつてい
く。しかしながら、記憶装置にはコード・ストリ
ームのうちの限られた部分だけしか保持されな
い。すなわち、コード・ストリームはシフト・レ
ジスタまたは他の固定長のメモリに記憶される。
事象が符号化される際に、新たな内容がコード・
ストリーム・メモリに入力される。そして、ある
時点で、メモリの中の早期に記憶された内容が該
固定長メモリからシツプ・アウト(ship、out、
送出)される。シツプ・アウトされた内容の変更
はもはや不可能である。 シツプ・アウトされた内容を変更できない結
果、様々な問題が生じる。第一の問題は、「キヤ
リー伝播」と呼ばれる。コード・ストリームが一
定のままである符号化スキームであつても、ある
いは上述のハードウエア・スキームのようにコー
ド・スキームが増分される符号化スキームであつ
ても、現在のコード・ストリームCが
011111111111という形をとる可能性がある。固定
長メモリが下位側の8ビツトしか記憶できないと
きに値Cが例えば00000000001だけ増分されたと
すると、Cについての新たな値は1000〔00000000〕
とならなければならない。もし、左側の4ビツト
が既にシツプ・アウトされていて変更できないな
らば、矛盾が生じる。すなわち、シツプ・アウト
されたビツトは0111であつたが、これは実際には
(キヤリーが伝播した後の値の)1000でなければ
ならない。(ブラケツトで囲んだ)下位側の8ビ
ツトしか保持されないならば、キヤリーはその宛
先に到達できない。このキヤリー伝播の問題点
は、既に上記Langdon、Jr.の論文にも記述され
ている。同論文ではさらにキヤリー伝播をブロツ
クするために、ビツト・スタツフイングの一般的
な概念を提唱している。該ビツト・スタツフイン
グは、データ・バイトとリンクされない。 有限精度に付随する第2の問題点は、区間の中
にその上限が含まれており、かつ現在のコード・
ストリームから数値を引くことによつて符号点を
動かす算術符号化用符号器に関係する。そのよう
なスキームは前述のソフトウエア符号器において
提案される。そこでは、現在のコード・ストリー
ムが区間の上限を指す。LPS事象に応答して、
P区間がから引かれて新たなコード・ストリー
ムのための数値が生成される(第3図参照)。も
し、コード・ストリームが1の後に続く0のスト
リングを含み(例えば、1000000000000)、かつ精
度が有限であるならば、1のビツトを含む先頭側
のビツトは既にシツプ・アウトされてしまつてお
り、将来、ボロウを引き起こすことはできない。
上述の例では、8ビツト・レジスタについて言う
と、先頭のビツト10000は既に送出済であり、も
はや変更することができない。したがつて、シフ
ト・レジスタまたは他のメモリに記憶された8個
の0から00000001を引くと、ボロウが実行され得
る1のビツトに到達することのできないボロウ伝
播を引き起こすことになる。このようなボロウ伝
播は、有限精度処理の結果として生じる、著しく
困難な問題である。 ある与えられた1つの符号器で符号化を行う場
合でさえ問題点が生じるのに加えて、有限精度処
理の結果生じる矛盾は、符号器同士の間のコンパ
チビリテイを妨げる原因にもなる。すなわち、矛
盾が生じる結果、(a)ある所定の事象に応答してコ
ード・ストリーム値の増分を行う符号器と(b)ある
所定の事象に応答してコード・ストリーム値の減
分を行う符号器について、同一またはコンパチブ
ルなコード・ストリームを得ることが困難とな
る。 増分型符号器と減分型符号器を使つて、同一、
または少なくともコンパチブルなコード・ストリ
ームを生成する際の問題点は、ハードウエア式符
号器による最適な取決とソフトウエア式符号器に
よる最適な取決を考える際に、強調される。動作
を最適にするため、ハードウエア式符号器は、
MPS事象の際に符号点を動かし、この結果好都
合な具体例ではコード・ストリーム値が増分され
る。ソフトウエア・スキームについての最適な動
作によれば、LPS事象の際に符号点が動かされ、
その結果好都合な具体例ではコード・ストリーム
値が減分される。この2つのコード・ストリーム
を単一の復号器によつて復号可能とするために、
有限精度に起因する問題点を、個々のコード・ス
トリームによる指示の食い違いとともに解決しな
ければならない。 そこで、本発明者は、区間の確率セグメントを
反転させて逆にしてもよいことを本願にて提案し
ている。例えば、Pセグメントを区間のうちの大
きな数値の側とする代りに、Pセグメントを区間
のうちの小さな数値の側に割り当ててもよい。以
後簡単のために、前者のような取決を「P/Q」
と略す一方、後者のような取決を「Q/P」と略
す。逆Q/P符号器の一例によれば、現在のコー
ド・ストリームとして区間の下限が指示されるこ
とになる。(そして、この点が該区間に含まれ
る。)Qセグメントは現在区間の数値の大きい側
に割り当てられ、Pセグメントは数値の小さい側
に割り当てられる。逆ソフトウエア式符号器につ
いて言えば、MPSの場合、符号点はそのままで
動かない。そして、LPS事象の度に、Q/P逆ソ
フトウエア式符号器は、現在区間の下限から始ま
るPセグメント値を数値Cに加入する。該逆ソフ
トウエア式符号器は、上記P/Qソフトウエア式
符号器の鏡像として動作する。Q/P逆ソフトウ
エア式符号器によつて生成されるコード・ストリ
ームの値CIと、P/Qソフトウエア式符号器によ
つて生成されるコード・ストリームの値CSとの間
には、次の関係が成り立つことに注意すべきであ
る。 CI=1−CS CSの長さは固定されていないので、値1の長さ
は不定である。したがつて、最適なP/Qハード
ウエア式符号器または最適なP/Qソフトウエア
式符号器によつて生成されるコード・ストリーム
と同一またはコンパチブルなコード・ストリーム
を生成するべく逆コード符号器を使おうとする
と、再びボロウ伝播の問題を抱えることになる。 多くの問題点が存在するため、(シンボルの順
序付がP/QであれQ/Pであれ最適なハードウ
エア式符号器と最適なソフトウエア式符号器を交
換可能にする、つまり同一または少なくともコン
パチブルなコード・ストリームを生成できるよう
にすることができない。同様に、多くの問題点が
存在するため、最適なハードウエア式符号器また
は最適なソフトウエア式符号器によつて生成され
たコード・ストリームから元の判断事象の組を復
元する際に、最適なハードウエア式復号器と最適
なソフトウエア式復号器の使用を交換可能にする
ことができない。本発明は、様々なソフトウエア
式およびハードウエア式符号器を交換可能とし、
かつハードウエア式復号器とソフトウエア式復号
器のどちらであつても、該交換可能な符号器のう
ちの任意のものが生成したコード・ストリームを
同じように復号できるような構成に関連する。 本発明の目的は、最適なソフトウエア式符号器
と最適なハードウエア式符号器が、単一の復号器
によつて復号可能な個々のコード・ストリーム
を、有限精度の文脈において生成するようにする
ことである。 本発明の他の目的は、その各々が、最適なハー
ドウエア式符号器または最適なソフトウエア式符
号器によつて生成された個々のコード・ストリー
ムに処理を加えると、同じ判断データの組を復元
する最適なハードウエア式復号器と最適なソフト
ウエア式復号器を提供することにある。 本発明のさらに他の目的は、数直線に沿つた順
序付を逆にしてもよい2進算術符号化法による符
号化を提供すること、およびこのような逆符号器
によつて生成されたコード・ストリームが、最適
なハードウエア式復号器と最適なソフトウエア復
号器の何れによつても簡単に復号処理できるよう
にすることにある。 したがつて、本発明の目的は、区間セグメント
の順序付がP/QまたはQ/Pの何れかである最
適なハードウエア式符号器と同じく区間セグメン
トの順序付けがP/QまたはQ/Pの何れかであ
る最適なソフトウエア式符号器を提供し、しかも
これら4つの符号器のどれによつて判断事象の組
が符号化されても、最適なハードウエア式復号器
または最適なソフトウエア式復号器の何れかによ
つて元の判断事象の組が復元されるようにするこ
とである。 さらに、本発明では、引き続いて判断を処理し
ていくにしたがつてそれぞれの符号点が収束して
いくような、最適な有限精度のハードウエア式符
号器と最適な有限精度のソフトウエア式符号器に
ついて考察している。 また、本発明では、異なる符号器によつて生成
された符号点の値の違いについて、少なくとも一
方の符号点の値を調整し、「最終レンジ」フアク
タを考慮に入れて、2つの異種の符号点を調和
(consonance)させることも考察している。さら
に、本発明は、キヤリー伝播とボロウ伝播の問題
を克服する方法論に関連する。特に、キヤリー伝
播の問題はビツト・スタツフイングによつて解決
され、かつ、ボロウ伝播の問題は適切なプレ・ボ
ロウを行うことによつて解決される。プレ・ボロ
ウが適用されるのは、(a)あるコード・ストリーム
が別のコード・ストリームを反転させることによ
つて得られるとき、および(b)ゼロのバイトで終了
するコード・ストリームが所定の方法が減分され
る被減数を表わすときである。 後者の場合のプレ・ボロウによれば、ボロウ伝
播がが回避されるだけでなく、2つのルール・セ
ツトのどちらに従うかにもよるが、減分型コー
ド・ストリームが増分型コード・ストリームと同
一、または少なくともコンパチブルとなる。第1
のルール・セツトによれば、送出されようとして
いる符号化済データの1バイトがすべて0である
場合に必ずプレ・ボロウが適用され、(1バイト
が8ビツトからなる場合には)16進数の“00”が
16進数の“FF”とキヤリー・ビツトをプラスし
たものに変換される。なお、以後、16進数の値
は、“ ”で囲んで示し(例えば、“A1”)、場合
によつてはさらにその前にXを付す(例えば、X
“A1”、これは2進表記で示すと10100001とな
る。)第1のルール・セツトを適用することによ
つて、増分型コード・ストリーム・スキームの場
合のコード・ストリームと減分型コード・ストリ
ーム・スキームの場合のコード・ストリームはコ
ンパチブルになる。すなわち、第1のルール・セ
ツトによれば、様々な符号器を使つてもコード・
ストリームが同じ区間を指すので、復号器が1つ
しかなくても復号可能になる。 第2のルール・セツトでは、符号化済データの
うち、現在のコード・ストリームに加えられる部
分が現在の区間値A(i)と比較される。現在の
区間値の方が大きい場合は、プレ・ボロウが適用
される。そうでない場合、プレ・ボロウは生じな
い。第2のルール・セツトに従つてプレ・ボロウ
が生じる状態か否かを調べることによつて、増分
型(ハードウエア)スキームによる場合のコー
ド・ストリームと減分型(ソフトウエア)スキー
ムによる場合のコード・ストリームとを同一にす
ることができる。比較の結果、ハードウエア・コ
ード・ストリーム値がソフトウエアの指す00区間
にあるのか、またはそれより値の少ないFF区間
にあるのかが表示される。前者の場合、ボロウ伝
播の問題はなく、プレ・ボロウは必要とされな
い。一方、後者の場合にはプレ・ボロウが提供さ
れる。つまり、最適なソフトウエア・コード・ス
トリームが“00”バイトを持ち、それに対応する
最適なハードウエア・コード・ストリームが
“FF”でなければならないとき、プレ・ボロウ・
プロシージヤによつてソフトウエア“00”は
“FF”に変換され、2つの構成について同一のコ
ード・ストリームが生成される。 また、本発明によれば、符号化済データは、キ
ヤリーとボロウがこれからシツプ・アウトされる
最新のバイトに制限されているバイトとして出力
される。キヤリーおよびボロウをバイトの境界に
制限することによつて、キヤリーとボロウの伝播
を防止するという目的は達成される。さらに、こ
れからシツプ・アウトされるバイトと以前にシツ
プ・アウトされたバイトがバツフアに記憶されて
いる場合に、キヤリーとボロウの影響がこれから
シツプ・アウトされるバイトにだけ及ぶようにす
ることによつて、バツフア・ポインタが後戻りす
ることなくバツフアの中を逐次的に移動すること
が可能になる。 さらに、本発明は、符号化ステツプにおいて常
に1からεをプレボロウすることによつて、コー
ド・ストリームCIを1−CSとして、しかもこのよ
うに反転させた符号をCsによつて規定される区
間に導き、反転させたバージヨンの復号器におけ
る無限精度の問題を回避している。 D 実施例 符号化取決の異なる符号器を用いる、同一の
コード・ストリーム、コンパチブルなコード・
ストリームの生成 第1図には、算術符号化器102と、それに応
する算術復号器104を含む、データの圧縮およ
び圧縮解除用の全体装置100が示されている。
データ圧縮の際、装置100は、まず入力データ
(DATAIN)を受け取る。入力データは、2値判
断(binary decision)の列(YN)として表現で
きる。ここで、結果、すなわち事象のそれぞれは
確率を持つている。次に、装置100は、該列
を、符号化されたビツト列に変えることによつて
キヤラクタライズする。内蔵された確率情報を含
めて判断列を符号化することによつて、圧縮済ビ
ツト列をオリジナルの入力データよりも迅速に転
送できるし、圧縮済データに記憶スペースも少な
くてすむ。 データの大部分をある転送装置または媒体(例
えば、要素105)によつて高変調速度で転送し
なければならない、あるいはデータの大部分を限
られたメモリに記憶しなければならないような
(または、大部分のデータを記憶し、その後で低
変調速度で転送が行われるような)アプリケーシ
ヨンにおいて、データを圧縮して用いることは非
常に重要である。このような圧縮が特に重要な環
境の1つとして、ビデオ・データ処理の分野、さ
らに詳しく言えばテレコンフアレンスを挙げるこ
とができる。テレコンフアレンスでは、ピクチヤ
ー等の情報を伝達するために、大量の情報をある
場所から別の場所へ迅速に通信しなければならな
い。 所望の宛先へ符号化済データが転送された後、
該データは圧縮解除される。つまり、復号器10
4によつて、オリジナル・データまたはそれに関
連したある表現が復元される。実際、復号器10
4は符号器102の行つたプロシージヤを取り消
す。 第1図では、入力データDATAINが、まずモ
デルおよび確率の発生器106によつて処理され
る。該モデル・確率・発生器106は、データに
対して文脈(context)を与える。例えば、フア
クシミリでは、入力データの1つ1つは、所与の
画素が黒であるかそれとも非黒であるかに対応す
る。一般的に、1つの状態(condition)、つまり
事象の方が蓋然性が高い。ある特定の画素につい
て、それが蓋然性の高い方の状態に一致するの
か、それとも蓋然性の低い方の状態に一致するの
かについて、決定が行われる。連続してデータが
処理されていく際に、蓋然性の高い状態(MPS)
と蓋然性の低い状態(LPS)の相対的な確率の値
が変化することもあるし、あるいは入れ換わつて
しまうことさえもある。つまり、MPSが黒であ
る場合に非黒の事実(instance)数多く発生した
とすると、非黒状態の方の蓋然性が高くなる、つ
まり優勢になることがある。その場合、MPSは
黒状態から非黒状態に変化する。入力データ
DATAINをどのように評価すべきかを決定する
モデルと、相対確率値を更新する確率発生器とが
要素106に含まれている。従来、様々なタイプ
のモデルが論じられている。確率適応化のための
格別な方法が、特願昭61−286891号に開示されて
おり、本明細書でも引用する。確率推定のための
別の方法は、本出願人によつて本願と同時に出願
された、発明の名称が「算術符号化法のための確
率推定方法」である特許出願に開示されており、
必要な限り本明細書でも引用する。適切な確率発
生器は特開昭60−196014号公報にも開示されてい
る。 確率適応化および算術符号化に関しては、本出
願人によつて本願と同時に出願された、発明の名
称が「算術符号化システムにおける確率適応化方
法」である特許出願にも開示されており、本明細
書でも引用する。 モデル・確率発生器106は、符号器102に
対して3項目のデータを与える。第1は、どの状
態が優勢な事象であるか(つまり、どの状態が
MPS事象であるか)に関する表示である。第2
は、LPS事象についての確率に対応する値Qであ
る。第3は、入力中である判断事象を表示する
YN値である。 符号器102は、モデル・確率発生器106か
ら来る3項目の情報を、算術符号化法によつて圧
縮されたデータに変換する。第2、第3、および
第4図は、それぞれ符号化の概要を示す。第2図
は、ハードウエア用に最適な符号器を示す。第3
図は、ソフトウエア用に最適な符号器を示す。第
4図は、逆(inverted)コード符号器と呼ばれる
符号化の概要を示す。 第2図において、符号点(code point)は、最
初、所与の区間の下限(の数値)に位置してい
る。LPS事象の生起に関連するQセグメントも区
間の下側にある。MPS事象に関連するPセグメ
ントは区間の上側にある。C(n)は、時間nに
おけるコード・ストリーム値に対応する。A(n)
は、時間nにおける現在の区間の値に対応する。 各判断毎に、最適のハードウエア符号器(第2
図に示す)は、次のような取決に従う。 つまり、判断事象(図ではYNとして示す)が
MPS事象ならば、 (a) C(n)←C(n−1)+[A(n−1)×Q] (b) A(n)←[A(n−1)×(1−Q)] となる。 事象がLPS事象ならば、 (a) C(n)←C(n−1) (b) A(n)←[A(n−1)×Q] MPS事象であれ、LPS事象であれ、ハードウ
エアは区間(つまりレンジ)の値Aを再指定する
処理サイクルに時間を費す。さらに、MPSの場
合は、符号点は値[A(n−1)×Q]だけ増分、
つまり移動される。ハードウエアはAとCの更新
を並行して処理し得るので、かかるハードウエア
はどの判断についても1処理サイクルだけを費す
必要がある。他方、ハードウエアがLPS事象の度
に符号点を動かすように構成されたならば、符号
点を動かさなければならない度に、C←C−[A
×Q]を決定するのに処理サイクルが2つ必要に
なる。処理サイクルの数を制限することはハード
ウエア操作においてクリテイカルであること、お
よびLPS事象の場合に符号点を動かすことは結果
として多くのサイクル時間を費してしまうことを
考慮すると、ハードウエアにとつてはMPS事象
の場合に符号点を移すことが最適であるとわか
る。 第3図は第2のインプリメンテーシヨンを示
す。このインプリメンテーシヨンは本発明者によ
つて提案され、実験された。符号点Zは区間の下
端に直に位置づけられる。Pセグメントも区間の
下端側にある。Qセグメントは区間の上端側にあ
る。このインプリメンテーシヨンでは、次のよう
な規則が適用される。 すなわち、事象がMPS事象ならば、 (a) Z(n)←Z(n−1) (b) A(n)←[A(n−1)×(1−Q)] となる。 事象がLPS事象ならば、 (a) Z(n)←Z(n−1)+[A(n−1)×(1

Q)] (b) A(n)←[A(n−1)×Q] となる。 第3図に対応する上記取決はソフトウエアにと
つて最適であることがわかる。ソフトウエアは並
列して処理を行わない。したがつて、第2図の規
則に従つてZとAを更新することをソフトウエア
に課したならば、AとZの両方を逐次変更しなけ
ればならなくなる。そして、このような更新は、
おそらくは蓋燃性の高いMPS事象について行わ
れることになるので、このような逐次的な更新は
頻繁に必要となろう。この結果、かなりの処理時
間を要することになる。そこで、第3図のように
(特にQ<<Pの場合は)逆にZの更新がめつた
に行われないようにすべきである。 第4図の符号化処理は、第3図に概略を示した
逆ソフトウエア処理と鏡像関係にある。つまり、
PセグメントとQセグメントの順序付けが第3図
とは逆になつている。さらに、第3図と比較する
と、第4図ではLPS事象に応じた符号点の移動が
逆になつている。すなわち、第3図の逆ソフトウ
エア符号器によれば、LPS事象毎にコード・スト
リームの数値が増分されるのに対し、第4図の反
転させた符号器によれば、LPS事象毎にコード・
ストリームが減分される。 簡単な例として、A(n−1)が2進数の0.100
に等しく、かつQが0.001に等しい場合を仮定す
る。さらに、第2図のC(n−1)の現在値が
0.100であり、かつ第4図の(n−1)が1.000
に等しいと仮定する。LPS事象の際、第2図の具
体例のハードウエアでは符号点はそのままであ
る。つまり、C(n)←C(n−1)である。第2
図のA(n)の値はA(n−1)×Qに等しく、し
たがつて、本例では、(0.100)×(0.001)=0.0001
となる。C(n)の値は0.100のままであり、A
(n)の値が0.0001になるわけである。したがつ
て、C(n)とA(n)の和は、0.1001である。し
かしながら、第4図のソフトウエアの具体例で
は、(n)は、(n−1)からA(n−1)×
(1−Q)の値、つまり(0.100)×(1−0.001)=
0.0111を引くことによつて決定される。すなわ
ち、今度のの値は、(1.000−0.0111)=0.1001に
なる。C(n)+A(n)は(n)に等しい。単
一のデコーダは、C(n)+A(n)または(n)
を復号して、入力判断事象と同じセツトを復元す
ることができる。換言すれば、(第1図では10
4で示す)復号器への第1の入力によつてどの状
態がMPS事象に対応するかが示され、かつ第2
の入力によつて復号中のコード・ストリームにつ
いての現在のQ値が示されることによつて、復号
器は、C(n)に最終区間A(n)を加えたもの、
つまり(n)に処理を加えることができ、その
結果、符号器102へのYN入力例に対応する
YN出力列を生成することが可能になる。YN判
断は、モデル・確率発生器106にマツチするモ
デル・確率発生器110に入力され、その結果、
オリジナル・データまたはそのレプリカが
DATAOUTとして生成される。 第3図と第4図に示す案ではLPS事象の際に符
号点が移動するので、ソフトウエア処理に要する
サイクルの数は少なく保たれる。これら2つの案
は、ソフトウエアで具体化する場合に最適となる
ことを意図している。(ここで、第2図のP/Q
の順を逆にすることによつてハードウエアによる
最適化を図る逆符号器も未発明の考慮の範囲内で
あることを、念のために述べておく。) 第5図を参照しつつ、本発明の主要な目的を説
明する。同図には4個の符号器200,202,
204,206が示されている。符号器200,
204は、各MPS事象毎に符号点を動かす最適
ハードウエア・ルールに従つて符号化を行う。こ
のうち、前者はP/Qシンボル順でインプリメン
トされ、後者はQ/P(逆)シンボル順でインプ
リメントされている。符号器202,206は、
各LPS事象毎に符号点が移動する最適ソフトウエ
ア・ルールに従つて符号化を行う。このうち、前
者はP/Qシンボル順でインプリメントされ、後
者はQ/P(逆)シンボル順でインプリメントさ
れている。本発明によれば、符号器200,20
2によつて生成されるコード・ストリームを同じ
(または少なくともコンパチブル)にすることが
できる。それは、Cとして表わされている。ま
た、本発明によれば、符号器204,206によ
つて生成されるコード・ストリームを同じ(また
は少なくともコンパチブル)にすることができ
る。それは、Zとして表わされている。ZとC
は、C=1−Zなる式によつて一方から他方を導
くことができる。この式の計算は、インバータ2
08によつて実行される。コード・ストリームC
は、ハードウエアの場合の最適化を考慮した(例
えば不都合でない(unawkward)計算に基づく)
復号器210によつて直にデコードされる。ま
た、コード・ストリームZは、ソフトウエアの場
合の最適化を考慮した復号器212によつて直に
デコードされる。4個の符号器200〜206が
生成したどのコード・ストリームであつても、デ
コードする際には復号器210,212のどちら
をも使い得ることがわかる。コード・ストリーム
のあるものは、復号器に至る途中でインバータ2
08によつて処理される。 ここで、他の2つの復号器、すなわちQ/Pハ
ードウエア復号器とP/Qソフトウエア復号器も
本発明に従つてインプリメントできることを念の
ために述べておく。実際、P/Qソフトウエア復
号器については後でセクシヨン(B)において簡単
に説明する。 第6図には、第5図の4個の符号器200〜2
06の相互関係が示されている。第6図の左側に
は、シンボル順がP/Qであるハードウエア符号
器(例えば符号器200)とソフトウエア符号器
(例えば符号器202)のMPS、LPS各事象への
応答がそれぞれ示されている。MPS事象に対し
て、P/Qハードウエア符号器(図ではHと示
す)は、コード・ストリーム値をA×Qだけ増分
させるとともに、区間A(n)のサイズを[A(n
−1)×(1−Q)]に等しくなるようにセツトす
る。また、MPS事象に対して、P/Qソフトウ
エア符号器は符号点位置を維持する一方、区間の
サイズを[A(n−1)×(1−Q)]にセツトす
る。LPS事象に対して、P/Qハードウエア符号
器は符号点位置を維持するものの、P/Qソフト
ウエア符号器は符号点の値を[A(n−1)×(1
−Q)]だけ減分する。また、LPS事象に対して、
どちらのP/Q符号器もA×Qに等しいサイズの
新しい区間をセツトする。 第6図の右側では、MPS事象に応答して符号
点を減分するとともに、区間のサイズを[A
(n−1)×(1−Q)]に等しくなるように調整す
るQ/Pハードウエア符号器が示されている。
MPS事象に対して、Q/Pソフトウエア符号器
は符号点位置を維持するとともに、区間のサイズ
を[A(n−1)×(1−Q)]にセツトする。LPS
事象に対して、Q/Pハードウエア符号器は符号
点位置を維持するが、Q/Pソフトウエア符号器
はその符号点位置Zを[A(n−1)×(1−Q)]
だけ増分する。どちらのQ/P符号器の場合で
も、LPS事象に対して、現在の区間のサイズはA
(n−1)×Qにセツトされる。 第7図には、第6図に示される取決に基づく判
断事象のセツトの符号化が各符号器について示さ
れている。特に、以下のような事象列の符号化に
ついて示されている。 MPS、MPS、MPS、LPS、MPS、MPS、
MPS、MPS、LPS、MPS、LPS、MPS 第7図には、P/Qハードウエア(H)符号器
とP/Qソフトウエア(S)符号器による上記事
象列についての符号点の移動がそれぞれ示されて
いる。第8図には、Q/Pハードウエア(H)符
号器とQ/Pソフトウエア(S)符号器による上
記事象列についての符号点の移動がそれぞれ示さ
れている。第7図と第8図からわかるように、あ
る特定のシンボル・オーダリングに関して言え
ば、ハードウエアの場合の符号点とソフトウエア
の場合の符号点の間には現在の(最終的な)の区
間A(n)の値分の違いがある。また、両図から
わかるように、2つの符号点は事象列が連続する
につれて収束していく。 第7図と第8図を比較すると、シンボル順序付
けを逆にして生成される2つの符号点は、次の式
によつて容易に関係づけられる。 Z=(1−ε)−C−(A×δ−ε) ここで、εは可能性のあるプレボロウを表し、
δは、最終区間をフアクタ・インすべきか否かに
関する判断を表す。もし、プレボロウが必要とさ
れず、かつ最終区間をフアクタ・インする必要も
ないならば、該式は、次のように単純化される。 Z=1−C これは、インバータ208(第3図)の動作の
かわりの式である。一般的な動作では、インバー
タ208は、可能性のある最終区間とプレボロウ
のフアクタの原因となるより詳細な方策に適用さ
れる。 有限の精度で行う連続事象の符号化と復号 このセクシヨンの記載をわかりよくするため
に、以下のような定義を行う。ほとんどの場合、
変数名は同じ意味を持つ。 定 義 C=コード・ストリーム、つまり現在の区間
を指すポインタ(符号点) Cd=基底線(base line)を調整した、復号
器コード・ストリーム X=コード・ストリームのうちのレジスタの
中にあつて送出されていない部分 Qe(i)=i番目に符号化されるシンボルのため
のLPS事象推定確率 Pe(i)=i番目に符号化されるシンボルのため
のMPS事象推定確率 A(i)=i番目のシンボルについての被加数
(つまり、区間) Si=i番目のシンボル n(i)=シンボルSiの符号化に至るまでの再正
規化の累積カウント R(i)=i番目のシンボルのための再正規化フ
アクタ δ(c)=クロネツカーのデルタ関数と等価(条
件が真のとき1、偽のとき0) ε=現在のQ値についての可能な最小の変更 上記定義の下で、次のような関係が適用され
る。 Pe(i)=A(i)−(A(i)×Qe(i) R(i)=1/2n(i) ε=R(i)2-12(12ビツト精度用) A P/Qハードウエア符号器および同復号器 シンボルの順序付がP/Qである場合に、最適
なハードウエア符号器は現在の区間の底を指す。 コード・ストリームCは次の式で表わされる。 C= 〓i R(i)A(i)Qe(i)δ(Si=M) 換言すれば、値Cは連続する判断事象(つまり
シンボル)の各々を検討することによつて決定さ
れる。サブジエクト・シンボルがLPS事象に相当
するならば、該サブジエクト・シンボルの時点で
のQe値が再正規化フアクタと掛け合わされる。
再正規化フアクタは、区間サイズが所定の範囲、
例えば0.5と1.0の間に維持されるという事実に関
連する。つまり、区間サイズは被加数(Aと記
す)として表わされ、その値は所定の範囲内に留
まるように調整されるのである。i番目の被加数
の値、つまりA(i)が0.5より小さくなると、上
記所定の範囲内に戻るのに必要な回数だけ2が掛
け合わされる。区間A、あるいはA(i)の参照
は再正規化フアクタを考慮に入れる。 シンボルが符号化される度に、再正規化は起こ
り得る。なるほど、区間サイズがA×Qe(これ
は、定義により、A×Pe以下であり、したがつ
てA×0.5以下である)にセツトされる度に、A
(i)の値は(少なくとも1回2を掛け合わせて)
再正規化され、例えば上記のような範囲内に戻さ
れる。 MPS事象に応答すると、現在区間A(i)のサ
イズが最初に[A(i−1)×(1−Qe)]にセツ
トされる。この値は0.5より小さいこともあるし、
そうでないこともある。このように、MPS事象
に際しては、再正規化の必要な場合とそうでない
場合とがある。現在区間の再正規化回数は累積さ
れて、R(i)、すなわち上記のようにR(i)=
1/2n(i)として表わされる。再正規化フアクタによつ て、C値も区間値と同じように(例えば同じ回数
倍増されて)変化することが保証される。したが
つて、シンボルSiが符号化されるときのC値は、
P/Qハードウエア符号器の場合であつてかつ
MPS事象の際には増分されるが、その増分は、
先行するすべてのシンボルについての再正規化フ
アクタおよびQe値によつて決定される。 P/Qハードウエア復号器は、次の式に従つて
上記プロセスを解いていく。 Cd=C− 〓i R(i)A(i)Qe(i)δ(Si=M) ここで、Cdはある事象の影響が取り除かれた
後のコード・ストリーム値である。 P/Qハードウエア復号器は、Cd<A(i)Qe(i)
ならば、LPSを解読する。 B P/Qソフトウエア符号器および同復号器 P/Qソフトウエア符号器は、各現在区間の頂
きを指す。ソフトウエア・コード・ストリーム
は、次の式によつて決定される。 =A(0)− 〓i R(i)A(i)Pe(i)δ(Si=L) 値の評価はA(0)からスタートし、A(0)
から上式の和を項をひいていく。和の項の加数
は、A、現在のP値、および先行するLPS事象に
ついての再正規化フアクタの積である。 結果から最終区間値A(f)を引くと、P/
Qハードウエア・コード・ストリームで導かれる
通りのCが得られる。 P/Qソフトウエア復号器は次の式に従う。 Cd=C+ 〓i R(i)A(i)Pe(i)δ(Si=L) しかしながら、LPSシンボルを復号するのに必
要な比較は扱いにくい。すなわち、 Cd<A(0)−A(i)+A(i)×Qe(i) または、上記関係式の両辺からA(0)を引い
て Cd−A(0)<−A(i)+A(i)×Qe(i) となる。 C′d=Cd−A(0)とすると、 C′d<[−A(i)×(1−Qe(i))] となることがわかる。 Cd′も[−A(i)×(1−Qe(i))]もともに負であ
るが、絶対値は0から|A(i)|までの範囲にあ
る。したがつて、復号器のための演算は、固定精
度演算である。ソフトウエア復号器の処理をまと
めると下記の第1表のようになる。 第1表 T←A×Qe A←A−T If C′d<A (LPS decoded) Cd←C′d−A A←T renormalize A and C′d else (MPS decoded) renormalize A and C′d if needed. endif C Q/Pソフトウエア復号器 次にP/Qソフトウエア符号器によつて生成さ
れたコード・ストリームを復号するのに適した構
成を説明する。これは、第5図の復号器212に
対応するものである。コード・ストリームは符
号器202によつて処理されてコード・ストリー
ムCが生成される。コード・ストリームCは次の
式に従つてインバータ208によつて反転されて
Zが形成される。 Z=A(0)−C−ε この式は、コード反転化について以前に述べた
ものと類似している。 復号器212のためのコード・ストリームは、 Zd=Z− 〓i R(i)A×Pe(i) となる。Zdは、i番目のシンボルが符号化され
る前のコード・ストリームを表わす。すなわち、
復号器は現在のコード・ストリームZに減算を施
すことによつて、i番目のシンボルが何であつた
か、そしてi番目のシンボルが符号化される前の
コード・ストリーム値は何であつたかを決定す
る。 該復号器は、Zd<A(i)−A(i)×Qe(i)ならば
MPSを解読し、その他の場合はi番目のシンボ
ルをLPSとして解読する。 別な風に言えば、復号プロセスは次の第2表の
ようになる。 第2表 T←A×Qe A←A×(1−Qe) if Z<A (LPS decoded) Z←Z−A A←T renormalize A and Z else (MPS decoded) renormalize A and Z if needed. endif ここで、A(o)は1.00000……に初期設定され
ることを述べておく。 1に減算を施すとき、次の式のように、0のビ
ツトを1のビツトと加数の和に変更することによ
つて、無限精度を回避することができる。 2進の1.000000……=0.111111……+ε 実際、プレボロウ(前借り)が適用される。こ
のプレボロウの重要性は、次の例で認識される。
すなわち、A(0)の値が1.00000……(2進)で
あるとする。A(0)−Cなる減算を行う際に、C
の長さが固定されていないことに注意しなければ
ならない。Cの長さがA(0)の固定長を越える
と、減算のためにレジスタの0のビツトからCを
引く必要が生じ。その結果、1のビツトに達する
ことのないボロウの伝播が発生する。この問題
は、1000……を111……+εに変更することによ
つて、解決される。 さらに、プレボロウによつてP/Qソフトウエ
ア・コード・ストリームεがP/Qハードウエア
符号器のための現在区間に移動する。実際、ε
は、P/Qハードウエア符号器の区間はその下端
から延びていくものであるが、区間の上限を含む
ものではないということ、そしてP/Qソフトウ
エア符号器について言えば区間は上限を含むが下
限を含まないという事実を説明してくれる。0か
ら1の区間について言えば、P/Qハードウエア
符号器についての区間は0から1-へ延びる一方、
ソフトウエア符号器についての区間は0+から1の
範囲となる。P/Qハードウエア符号器は0を指
し、P/Qソフトウエア符号器は1を指す。2つ
の点を同一の区間に入れるためには、ソフトウエ
ア・コード・ストリームからある値を引くか、ま
たはハードウエア・コード・ストリームにある値
を加えるか(またはその両方を)しなければなら
ない。この例では、ソフトウエアによる結果から
εを引いている。 ここで、符号反転化は、符号プロセスの1部、
復号プロセスの1部、あるいは独立した中間ステ
ツプの何れととらえてもよいことを述べておく。
第7図、第8図に示されるように、P/Qソフト
ウエア符号化を減分パスに沿つて進行させ、最終
符号ストリームを反転させた後、Q/P(ソフト
ウエア)復号器によつて復号することができる。
あるいは、同様に、第8図の増分パスに沿つて
(Q/P)ソフトウエア符号化を行い、その後
P/Qソフトウエア復号器によつて復号すること
もできる。これらの選択し得るパスは第5図に示
されている。 第7図で表わされるようなP/Q符号器の何れ
かで生成されたコード・ストリームCaltと、第8
図で表わされるようなQ/P符号器の何れかで生
成されたコード・ストリームZaltの相互関係は、
次の式で示されている。 Zalt=(1−ε)−Calt−(A(f)×δ−ε) ここで、εは1.000……を0.1111……+εに変
換するプレボロウに関係する。また、δは最終レ
ンジをフアクタ・インすべきか否かを示す。 符号器用レジスタおよび復号器用レジスタ 第9図には、コード・ストリーム情報を記憶す
るのに好適なメモリ・レジスタ300が示されて
いる。レジスタ300は32ビツトを含むが、これ
らは以下のように割り当てられる。つまり、ビツ
ト31〜24の8ビツトはフラグ・ビツトであ
る。31番目のビツトは「サイン」ビツトを表わ
す。ビツト23,22には何も割り当てられな
い。ビツト21は、伝播するかもしれないキヤリ
ーのためのレシーバである。(bbbbbbbbとして識
別される)ビツト20〜13は、先行するコー
ド・ストリーム・データのうちの最も新しい8ビ
ツト(1バイト)を表わす。ビツト20から13
までの8ビツトは、毎回、バツフア・メモリへ出
ようとしているバイトを表わす。ビツト位置12
にはキヤリー伝播のためのスペーサ・ビツトが割
り当てられる。ビツト11〜0は、コード・スト
リームの「小数部」と呼ばれ、ビツト20〜12
は該コード・ストリームの「整数部」に相当す
る。レジスタ300はXレジスタと呼ばれ、コー
ド・ストリームCSの最新の符号化済部分を収容
する。Xレジスタの中のビツトが符号化される前
に、何千ものビツトが符号化されていた場合もあ
る。そういつた早くに符号化されたビツトはXレ
ジスタの小数部を通つて同整数部へ入り、さらに
そこからバツフア・メモリへ移動する。該バツフ
ア・メモリは、このように先行するバイトを記憶
するわけだが、そのバイト数には限りがある。希
望に応じて、バツフア・メモリから出たバイトは
記憶装置へ転送してもよいし、復号が行われつつ
ある他の場所へ転送してもよい。 本発明によると、データはバイトとして構成さ
れ、かつバイトとして送り出される。これはフラ
グ・ビツトによつて達成される。8個のフラグ・
ビツトを00000001に初期設定することにより、相
次いでbビツトがレジスタ300の整数部にシフ
トしてくるにつれて、1のビツトがシフトする。
そして、最も左に位置するフラグ・ビツトが1に
なると、Xレジスタの内容は「ネガテイブ(負)」
であると判断される。次にシフトが生じるときに
は、Xレジスタ300の整数がバツフア・メモリ
に入力される。 好ましくは、(図示しない)バツフア・メモリ
は、例えば256バイトを記憶するメモリである。
バツフア・ポインタBPは、バツフア・メモリに
最も新しく入力されたバイトを識別する。 Xレジスタに加えて、現在の区間値を記憶する
ためのAレジスタがある。上述したように、現在
の区間は所定の範囲、例えば0.5と1の間に維持
される。Aレジスタは、Xレジスタの小数部と位
置合わせられる12ビツトの「小数」部を含み、整
数部も含む。 AレジスタとXレジスタの小数部を位置合わせ
することによつて、コード・ストリームを更新す
る際に実行される様々な計算が促進される。区間
が再正規化されて所定の範囲内に戻される度に、
コード・ストリームは同じように再正規化され
て、その相対的な数値が保持されることを再び述
べておく。区間サイズが0.5ないし1にセツトさ
れている場合、再正規化は単に左側へいくつかシ
フトすること(すなわち、2を掛け合わせるこ
と)を意味することを思い出されたい。 コード・バイトがセツトされた後(かつキヤリ
ーがない場合に)、Xレジスタ300の内容と
(16進で記述した)1FFFのANDが計算され、コ
ード・バイトのビツトが取去される。また、Xレ
ジスタは(16進で記述した)1000000とのXOPを
計算するためにセツトされるので、(フラグ・ビ
ツト)ビツト24は1に確実にセツトされる。 第10図には、P/Qハードウエア・インプリ
メンテーシヨンで用いられる32ビツトの復号器用
レジスタ400が示されている。ビツト割当は次
の通りである。まず、先頭に4つの0ビツト、続
いて12の「小数」ビツトがあり、8個の新しいデ
ータ・ビツトはこれに続く。最も下位の8ビツト
はフラグ・ビツトに対応する。レジスタ400
は、フル・ワード、ハーフ・ワード、またはバイ
トのように、様々に分割することができる。小数
部の12ビツトは、復号器のAレジスタに記憶され
ている。被加数の小数ビツトと位置合わせされ
る。 新しいデータ・バイトがXC(ビツト31〜1
6)にシフトされてきた後、該新しいデータは
XNEW(ビツト15〜0)の高位側ビツトへ反転
されるとともに、キヤリーが発生していないなら
ば、XFLAGは1にリセツトされる。 すなわち、以下の式の通りになる。 XNEW=−hex“FFOO”SLL B 8 XFLAG=1 XNEWについての上記指定の結果、“FF”ビ
ツトから新しいバイトが引かれる。 低位側のバイトXFLAGが0になると、新しい
圧縮済データ・バイトが求められる。 D キヤリーおよびボロウ 符号器と復号器についての上記説明からわかる
ように、コード・ストリームに違いが生じるとす
れば、それは与えられたP、Q取決のためにキヤ
リーまたはボロウが生じる箇所である。 ここで、キヤリーおよびボロウはバイトの境界
で準備されることを述べておく。この結果、任意
のキヤリーまたはボロウの結果が直前に送出され
たバイトを越えて伝播することはない。したがつ
て、バツフアのポインタが過去のバイトまで戻る
必要は全くない。該ポインタは、後続の各バイト
がバツフア・メモリに入力されるのに伴つて、該
後続のバイトを指し進めていけばよい。 キヤリー伝播の問題は、コード・ストリームの
値が増加されて更新される場合であつて、既に符
号化済の連続した1からなるバイトが1つ以上連
続してある場合である。この場合、加算の結果キ
ヤリーの伝播が生じる。このような状態を避ける
ため、本発明では、発生し得るキヤリーを受け取
るためにバイト中にビツトを詰め込むようにして
いる。例えば、一連のバイトBo-1,Bo,Bo+1
あり、そのうちのBo-1がバツフアメモリにあつ
て、バツフア・ポインタがバイトBo-1を識別し
ているとしよう。そして、バイトBoはXレジス
タの整数部にあり、バイトBo+1は同じレジスタ
の小数部にあるとする。 バイトBoの値が(16進数の)“FF”ならば、後
続バイトBo+1の先頭(最上位ビツト)位置にビ
ツトが充填される。Bo,Bo+1がそれぞれ
11111111(“FF”)であるならば、本発明により
Bo+1の先頭にビツトが挿入される結果、新しい
符号化済データの例は11111111,01111111,1…
…となる。このように、必要ならば、キヤリーを
受け取るために0のビツトが挿入されるのであ
る。復号器が全部のビツトが1であるバイトを検
出すると、該復号器は後続の下位ビツトが挿入ビ
ツトであることを認識し、適切なコード・ストリ
ームが生成されるよう処理を行う。ところで、実
施例ではキヤリー伝播阻止用に2つのビツトを挿
入するようにしている。したがつて、上記例につ
いて言えば、新しいシーケンスは11111111,
00111111,11……となる。 ボロウの問題は、全部のビツトが0のビツトで
あるバイトを含むコード・ストリームについて減
分を行うときに生じる。例えば、3つの連続する
バイトBo-1,Bo,Bo+1のうち、中央のバイトの
ビツトがすべての0であるとしよう。 第1のセツトのルールによれば、プレボロウが
バイトBo-1について適用され、該バイトから1
が引かれる。Boの8個のビツトはすべて1に変
わる。残りはバイトBo+1の先頭から2番目のビ
ツト位置に挿入ビツトの形で含まれる。したがつ
て、Boに続く8ビツトは、(制御語の用途として
の)ゼロと、該挿入されたビツトと、符号化済デ
ータの6ビツトから構成される。したがつて、符
号器から転送されるデータ・ストリームは、次の
ようになる。 Bo-1−1,1111,1111,0b[Bo+1の先頭の6ビツ
ト] Bo+1バイト・セグメントから落とされたビツ
トは、データの後続バイト・セグメントにおいて
ピツク・アツプされる。ボロウは充填されたビツ
トによつて事実上キヤリーに変化する。何れにし
ても、復号器は上述したように充填されたビツト
を検出すると、該充填ビツトをキヤリーとして処
理する。ビツト・スタツフイングを含むP/Qハ
ードウエア・コード・ストリームとコンパチブル
なP/Qソフトウエア・コード・ストリームを生
成することが目標であるから、該コード・ストリ
ームも2つの拘束に従つて生成されなければなら
ない。まず、16進の“FF”の後には必ずビツト
が充填されなければならない。そうでなければ、
ハードウエア復号器には不適式なバイト・パター
ンが生成されるからである。次に、現(present)
バイトからボロウを取出す必要のあるときはいつ
でも(当然)取り出せるようにコード・ストリー
ムを構成しなければならない。(ここで、現バイ
トとは、以前のコード・バイト・サイクルにおい
てコード・レジスタからコード・バツフアへ転送
されたバイトを言う。)借りてくるのは1単位な
ので、桁借りの対象とすることの不可能なバイト
値はゼロだけである。 一般に、コード・レジスタにおいて新しいバイ
トの開始点に高位の「プレボロウ」ビツトをセツ
トすることによつて、現バイトから桁借りを行う
必要のあることが検出される。便宜上、該プレボ
ロウ・ビツトはビツト位置Pにてセツトされ、後
続のバイトが書込可能になつたならばそれはサイ
ン・ビツトとなる。例えば、セクシヨン.で述
べた32ビツトのコード(X)レジスタの中身が次
の通りであるとする。 Xレジスタ: 00000000、P0000000、xxxxxxxx、 xxxxxxxx Aレジスタ: 000aaaaa、aaaaaaaa 新しいバイトが完成すると、内容は次のように
なる。 Xレジスタ: P0000000、nnnnnnnn、xxxxxxxx、 xxxxxxxx Aレジスタ: 000aaaaa、aaaaaaaa コード・レジスタがポジテイブ(P=0)なら
ば、プレボロウが使われたのであつて、現バイト
からのボロウが必要である。したがつて、新しい
バイトnnnnnnnnがコード・レジスタから現バイ
トからボロウが取られる。プレボロウを用いる
と、コード・レジスタの値は常にAレジスタより
大きくなり、将来のボロウは該コード・レジスタ
の内容から取ることが可能になる。コード・レジ
スタがネガテイブ(P=1)ならば、現バイトか
らの桁借りの必要はなく、未使用のプレボロウP
は除去される。 コード(X)レジスタの内容は、Aレジスタの
内容と比較される。コード・レジスタの方が小さ
いならば、2つの事項が検出されている。まず、
次に送出されるバイト(nnnnnnnn)はゼロであ
ること、第2に、現バイトからの桁借りの必要性
があり得ることである。したがつて、ボロウは現
バイトから取られ、レジスタの中のゼロ・バイト
を経て伝播する。この結果、ゼロであつたバイト
が“FF”に変換される。この“FF”をコード・
バツフアに送りコード・レジスタの内容をシフト
させた後で、2つのプレボロウがセツトされる。
1つはサイン・ビツトとなる位置にセツトされ、
もう1つは後続バイトについての「キヤリー」ビ
ツト位置にセツトされる。したがつて、コード・
レジスタの内容の方がAレジスタよりも小さいな
らば、 Xレジスタ: 00000000、P0000000、00Px、xxxx、 xxxxxxxx Aレジスタ: 000aaaaa、aaaaaaaa である。 後続のバイトが完成すると、 Xレジスタ: P0000000、Pnnnnnnn、xxxxxxxx、 xxxxxxxx Aレジスタ: 000aaaaa、aaaaaaaa となる。 バツフア中の16進数“FF”はビツト・スタツ
フイング(充填)のトリガになるので、プレボロ
ウ・ビツトはスタツフ・ビツト(キヤリー・レシ
ーバ)位置に書き込まれる。ゆえに、未使用のプ
レボロウはハードウエア・コード・ストリームの
キヤリーと等価になる。 コード・レジスタの内容がAレジスタの内容以
上ならば、コード・レジスタの現在の内容はどん
なボロウの要請にも応えられるだけの大きさを持
つていることになる。現バイトがチエツクされ
て、それが“FF”であるならば、ビツト・スタ
ツフイングが引き起こされる。この場合、プレボ
ロウは要請されなかつたので、挿入されたキヤリ
ー・ビツトは常にクリア(clear)である。 上記シーケンスはすべての要請を満たす。すな
わち、ボロウ伝播を阻止し、ハードウエアとコン
パチブルなコード・ストリームを生成する。すべ
てのゼロ・バイトが単純に“FF”に変換された
場合でも、ハードウエア復号器は結果として生じ
たコード・ストリームをデコードすることができ
る。しかしながら、送出されるべきバイトがゼロ
であるときにボロウが必要になるだろうか否かを
先読みして知ることによつて、結果として生じる
コード・ストリームがハードウエア・コード・ス
トリームと同一になる。実際、このように先読み
することによつて、ハードウエア・コード・スト
リーム中のFFの存在が検出される。 希望するならば、ハードウエアで“FF”パタ
ーンについて“00”となるオーバフローの生じる
可能性の有無を先読みすることによつて、ゼロ・
バイトに続いて行うものと全く等価な逆のビツ
ト・スタツフイングを実行することができる。こ
のような操作により、上述のキヤリー伝播阻止と
同様にしてボロウ伝播阻止を達成することができ
る。 フローチヤートの説明 以下で説明するフローチヤートでは、便宜上、
Qは上位12ビツトを持つ小数点の固定された小数
として定義されている。 フローチヤートにあてはまる他の定義は以下の
通りである。 Aは16ビツトの整数だが、12ビツトの小数と4
ビツトの整数に分ける2進小数点を持つ2進小数
であると考えることができる。先頭の3個の整数
ビツトは常にゼロである。最も下位の整数ビツト
は、この実施例では初期設定時だけ非ゼロであ
る。 A×Qeが新しいLPSの範囲を表わす。上記
Langdonの論文に述べられているようなスキユ
ー(skew)・コーダーでは、これが2-kとなる。
他の特性づけも本発明と合致するように使うこと
ができる。フローチヤートでは、AとQeの積は、
32ビツトの精度の掛算であると仮定している。結
果は右へ12ビツトシフトされ、下位側の16ビツト
が新しいLPSの範囲のために用いられる。 LENはコード・ストリームのためのバツフア
の長さである。これは(任意だが便宜上)256バ
イトにセツトされる。LENは1にセツトするこ
ともできる。 BPSTは圧縮済データ・バツフアの始まりを指
示する。 BEは圧縮済データ・バツフアを越えた最初の
バイトを指示する。 BPは圧縮済データの現在バイトを示すポイン
タである。 BはBPによつて指示された圧縮済データ・バ
イトである。 AMINは再正規化が必要となる時機を決定す
る。本実施例ではAMINはX“0800”にセツトさ
れる。これは、0.5に等しい。Aが0.5より小さく
なると、再正規化が行われる。 BRWは逆ソフトウエア・バージヨンにおける
ボロウ・フラグである。 Tは新しく計算されたLPSレンジをセーブする
ための仮変数である。 変数X,XC,XNEWおよびXFLAGは前述の
定義に合致する。 第11図には、本発明によるデータ圧縮/同解
除の基本フローチヤート500が示されている。
開始の後、符号器は符号器初期化ステツプ
(INITENCプログラム)に従つて初期設定され
る。該ステツプでは、上述の変数に初期値が割り
当てられる。エンコード・プロシージヤに従つて
(第1図の106のような)モデル・確率発生器
より符号化のためにMPS、QおよびYNデータが
渡される。入力データの受信が続く間は、符号化
動作が継続する。符号化が完了すると、フラツシ
ユ(FLUSH)・プログラムが呼び出される。符
号化済データは送信(つまり転送)される。転送
後しばらくすると、通常は該符号化済データの復
号が行われる。復号器の初期設定は復号器初期化
(INITDEC)プログラムにより行われる。(第1
図の110のような)モデル・確率発生器から
MPSとQのデータが入力されて与えられると、
YN事象はデコード・プロシージヤに従つて復号
される。復号は、すべてのYN事象が復元される
まで継続する。 フローチヤート全体を構成要素に分けると、そ
れは符号器関連プロシージヤと復号器関連プロシ
ージヤに分かれるので、以下でもこれらを分けて
説明する。 なお、図面中に登場する“SLL”は「左シフト
論理」操作(“shifi left logical” operation)
を意味する。 A 符号器関連プロシージヤ INITENC(第12図ないし第14図)が符号
器の初期設定を行う。 インプリメントされるバージヨンが第2図に示
すハードウエア・バージヨン(−H)か、第3図
に示す逆バージヨン(−I)か、それとも第4図
に示すソフトウエア・バージヨン(−S)かに従
つて、3つのバージヨンのINITECがインプリメ
ントされている。すべてのバージヨンに共通し
て、LENは256バイトに初期設定され、BEは圧
縮済データ・バツフアの終末に位置づけられると
ともに、BPはBPST(つまり送るべきバツフアの
実際の始まり)の1バイト手前に位置づけられて
いる。(BPによつてアドレス指定される)バイト
Bは“80”に初期設定される。これは、B=0ま
たはB=“FF”という特別な場合でも圧縮済デー
タ・ストリームにおける最初のバイトにトリガが
かからないようにするためである。レンジAは
“1000”に、そしてAMINはその半分の“0800”
に、それぞれ初期設定される。 バージヨン間の違いが現れるのは、Xの初期設
定においてである。すべてのバージヨンにおいて
8個の圧縮済ビツトがレデイになつたことをフラ
グで知らすために、8番目のmsbが1にセツトさ
れる。逆バージヨンは20番目のmsbにプレボロウ
を持つ一方、ソフトウエア・バージヨンはこれを
フラグの直後に挿入する。逆バージヨンについて
は、ボロウ・フラグBRWがゼロに初期化され
る。 符号化プログラムENCODE(第15図ないし第
17図)が与えられたMPSとQ入力に基づいて
イエス/ノウ(YN)判断を符号化する。新しい
LPSレンジが常に計算され、一時的にTにセーブ
される。これらの具体例では、AおよびQは、2
進小数点を越えた12のビツトからなる有限精度の
数である。掛算(multiplication)の後、結果は
12ビツトの精度で切り捨てられる。MPSパスに
おいて、ハードウエア・バージヨンはXをTだけ
増加させるとともに、AをTだけ減少させる。他
の2つのバージヨンでは、MPSテストの前にA
をTだけ減少させるだけでよい。なぜなら、新し
いMPSレンジはMPSパスとLPSパスの両方で必
要だからである。AとXの再正規化
(renormalization)はRENORME(第18図)が
行うが、これはMPSパスにおいてAがAMINよ
り小さくなつたときに必要である。Iバージヨン
およびSバージヨンでは、LPSパスにおいて、方
向は異なるものの、MPSレンジの量だけXを動
かさなければならない。すべてのバージヨンに共
通して、再正規化の前に新たなLPSレンジととも
にAがリセツトされる。A×Qは常にAMINよ
り小さいので、LPSパスではRENORMEが常に
必要である。 RENORME(第18図)は、A値とX値の再
正規化を一度に1ビツトずつ行う。Aがまずシフ
トされた後、Xについて最上位ビツトがセツトさ
れたか否かの試験が行われる。セツトされている
場合、Xの次のシフトによつてそのフラグ・ビツ
トが取り除かれるとともに、1バイトが
BYTEOUT(バイト・アウト、第19図、第20
図および第21図参照)によつて出力される。セ
ツトされていない場合、Xは単に1ビツト分シフ
トされるだけである。このプロセスは、Aが
AMIN未満である限り続く。 BYTEOUT(第19図ないし第21図):復号
器は、各“FF”バイトの直後、つまり後続のバ
イトの先頭にビツトが2つ挿入されることを予期
している。圧縮済データの場合、先頭ビツトは常
にゼロとなるであろう。2番目に大きな桁のビツ
トはキヤリー・ビツトとなるであろう。本発明の
キー・パートは、3つのバージヨンの符号器のど
れもが同じ圧縮済を生成すること、およびその結
果としてハードウエア・インプリメンテーシヨン
の場合でもソフトウエア・インプリメンテーシヨ
ンの場合でも異なる最小計算バージヨンを選択す
ることができることにある。 第19図では、ハードウエア・バージヨンがま
ず最初に最後のバイトBを見て、Bが“FF”な
らば、直後にSHIP6−H(送出6−H)において
6ビツトだけを出力する。どんなキヤリーでも、
新しいバイトの2番目に大きな桁のビツトに現れ
るであろう。Bが“FF”未満ならば、Xのキヤ
リーについてテストが行われる。すなわち、第9
図を参照すると、位置21のキヤリー・ビツトが
セツトされる。キヤリーがないならば、8ビツト
の出力をSHIP8−H(第25図)によつて行うこ
とができる。キヤリーがあれば、最後のバイトB
について1だけ増分する必要があり、結果につい
て“FF”となつたか否かのテストが行われる。
結果が“FF”であれば、既にBに加算済のXに
おけるキヤリーを、後続の6ビツトを出力する前
にクリアしなければならない。結果が“FF”で
ないならば、8ビツトを新しいバイトへ出力して
もよい。 第20図では、逆符号器用バージヨンの
BYTEOUTが、まず、XがBからのボロウを必
要とするほど大きいか否かのテストを行う。大き
いならば、処理はBIGX(第30図)にまかせら
れる。大きくないならば、SHIP8FF−I(第28
図)が適切なパス(path)であるか否かを判断
するために、XとAの和が可能性のある将来のボ
ロウイング用のしきい値と比較される。大きくな
いならば、現在のBに基づいて、6ビツトと8ビ
ツトのどちらを出力すべきかについての決定が行
われる。 ソフトウエア用のバージヨンである
BYTEOUT−S(21図)は、Xが正であるか否
かをテストする。Xが正ならば、ボロウ・ビツト
は使用済であり、8ビツトを出力する前にBを1
だけ減分しなければならない。ボロウ・ビツトが
まだセツトされているならば、AがXと比較され
る前にXからボロウ・ビツトがクリアされる。X
がAより小さいならば、将来ボロウが必要になる
可能性があるが、新しいバイトがゼロとして出力
される場合には、ボロウを実行でできなくなる。
(Aはせいぜい“1FFF”であり、Xは8個の出
力ビツトのうちにゼロだけを持つている。)
SHIP8FF−S(第29図)はプレボロウを行つて
新しいバイトを“FF”に変換し、借りたビツト
をXにセーブする。Bが“FF”ならば、SHIP8
−S(第27図)によつて8ビツトが送出される
代りに、SHIP6−S(第24図)によつて6ビツ
トだけが送出される。 SHIP6−H(第22図)は、NEXTBYTE(第
31図)における出力バイト・ポインタを増分
し、Xからの新しいBビツト22〜15に保持す
る。先頭ビツトがゼロであることは保証されてい
る。2番目のビツトはどんなキヤリーも含む。6
番目に大きなビツトにてフラグが挿入される前、
後続の15ビツトだけがXに残される。この結果、
6個の新しいビツトが準備されると、新しいバイ
トが出力される。なぜなら、2個のビツトがXに
残つているからである。SHIP6−S(第24図)
は、フラグ・ビツトをすぐ追うようにボロウ・ビ
ツトがセツトされる点を除いて、SHIP6−Hと
同じである。 第23図のSHIP6−Iに示されるように、逆
符号器の場合は、6ビツトを出力するプロセスが
もつと複雑になる。Xの中のビツトを反転させな
ければならないからである。出力ポインタは
NEXTBYTEによつて増分される。BRWがセツ
トされる場合は、ボロウによつて先行する“FF”
が生成された。次に、場合によつてはキヤリーを
プラスした6ビツトが7個の“1”ビツトから引
かれて、BRWがリセツトされる。BRWがセツ
トされない場合、6個の“1”ビツトを用いて6
ビツトの反転が行われる。先行するバイトが
“FF”であると、Xにはキヤリーが存在し得ない
からである。Bの中の最上位のビツトがクリアさ
れるとともに、Xのうちの最下位側の15ビツトを
除くすべてのビツトがクリアされる。続いて、上
位から6番目の位置にてフラグが挿入される。 SHIP8(第25図ないし第27図参照)は、す
べてのバージヨンが似通つている。ポインタを後
続の出力バイトBに増分した後、Xの中のビツト
20〜13にある8ビツトがBにて保持される。
逆符号用バージヨンでは、まず、“FF”から引き
算を行うことによつて、これらのビツトを反転さ
せる。Xのうちの最下位側の13ビツトを除くすべ
てのビツトがクリアされて、フラグは上位から8
番目のビツトにて挿入される。ソフトウエア用バ
ージヨンでは、フラグの後にボロウ・ビツト挿入
される。 逆符号器用およびソフトウエア符号器用バージ
ヨンにおいては、必要ならばBについて減分を施
すことが可能であることが保証されなければなら
ない。そこで、SHIP8FF−I(第28図)では、
ボロウ・ビツトがセツトされると(つまり、Bが
“FF”であると)、6ビツトを送出しなければな
らない。BRWが0ならば、出力ポインタを増分
する前にBが減分され、後続のバイトが“FF”
にセツトされ、そしてBRWが後続バイト用にセ
ツトされる。 ソフトウエア用のバージヨンであるSHIP8FF
−S(第29図)では、後続のバイトに“FF”を
保持する前に、必ずBの減分を行う。余分のボロ
ウがXに挿入される。Xでは、該ボロウが必要と
されない場合、キヤリーとして後続のバイトの中
で出力される。 BIGX(第30図)が必要なのは逆符号器用バ
ージヨンだけである。ボロウ・ビツトがセツトさ
れると、6ビツトが送出される。ボロウ・ビツト
がセツトされない場合、Bをデイクレメントして
8ビツトを送出するのが安全である。 NEXTBYTE(第31図)は、BPを動かして
圧縮済データ用バツフアの後続バイトをアドレス
する。インクレメントされた後、BPがバツフア
の終端以上の値になるならば、バツフアを転送し
なければならず、BPもバツフアの先頭に戻るよ
うリセツトしなければならない。必要ならば
BPSTとBEが適当に変化することが想定されて
いる。 最後のシンボルが符号化された後、まだXの中
にある21個の圧縮済ビツトについてはフラツシ
ユ・アウトする必要がある。FLUSH−H(第3
2図)では、CTが21に初期設定され、そしてフ
ラグが最上位のビツトに来る(つまり、Xが負に
なつたことを示す)まで、Xの中での各シフトに
対応してデイクレメントされる。もう1回シフト
されると出力ビツトがバイト境界に位置される。
そうすると、FINALBYTES−H(第35図)に
よるこれらの最後のバイトの出力が可能になる。 FLUSH−I(第33図)では、最初に、最終
の被加数Aのレンジから1を引いたものを加えな
ければならない。1を引くことは、上述したεを
引くことに対応する。FINALBYTES−Iが残
りのバイトをフラツシユ・アウトできるように、
ビツトはバイト状に並べられる。 FLUSH−S(第34図)はXを区間の底へ移
動させるが、これはハードウエア・バージヨンに
よつて生成される値に正確に位置づける。ビツト
のバイト・アライニングの後、ボロウが使用済の
場合、FINALBYTES−S(第37図)において
最終バイトが出力される前に最後のバイトをデイ
クレメントしなければならない。 FINALBYTES−H(第35図)は、すべての
ビツトがフラツシユ・アウトされてしまうまで、
ループの中で、BYTEOUT−H(第19図)と同
じタイプの動作を行う。FLUSH6−Hと
FLUSH8−Hのブロツクは、CTを6ビツトまた
は8ビツトだけ適当にデイクレメントすることを
含む。それが完了すると、記憶されている最後の
バイトを越すまでBPがインクレメントされて、
バツフアの最後の内容が送出可能になる。 FINALBYTES−I(第36図)は、X+A>
“200000”が起こり得ないことを除いて、
BYTEOUT−Iと同様である。なぜなら、Aは
“200000”未満だつたXから引かれたからである。
反転プロセスのために、最後のバイトに余分の
“1”が含まれている可能性がある。同一のコー
ド・ストリームが望ましいならば、これらは除去
しなければならない。 ソフトウエア式符号器用のバージヨン
FINALBYTES−S(第37図)は、先行するバ
イトが“FF”であるか否かに応じて6ビツトま
たは8ビツトを送出する。プレボロウの処理はす
でにFLUSH−Sにて行われている。Xは区間の
底に動かされたので、BYTEOUT−Sにおける
Aを用いたテストは無関係である。 FLUSH−H、S(第38図)では、ハードウ
エア・バージヨンとソフトウエア・バージヨンの
どちらの場合でも、新しいバイトを指し、ビツト
22〜15を記憶し、Xの下位側の15ビツトだけ
をセーブし、6だけXをシフトし、かつ6だけ
CTをデイクレメントすることによつて、6ビツ
トが出力される。 FLUSH8−H、S(第40図)では、ハードウ
エア・バージヨンとソフトウエア・バージヨンの
どちらの場合でも、新しいバイトを指し、ビツト
20〜13を記憶し、Xの下位側の13ビツトだけ
をセーブし、Xを8ビツト分シフトさせ、かつ
CTを8だけデイクレメントすることによつて、
8ビツトが出力される。FLUSH8−I(第41
図)では、逆符号バージヨン用にこれらの8ビツ
トを反転させる必要もある。 B 復号器関連プロシージヤ INITDEC(第42図ないし第44図)が復号
器を初期化する。復号器がハードウエアに最適な
もの(H)、ソフトウエアに最適なもの(S)、そ
れともシンボルの順序付を逆にしたもの(I)の
何れに関連するかに応じて、INITDECの3つの
バージヨンがインプリメントされている。(第5
図の復号器210〜216を参照)、すべてのバ
ージヨンは、圧縮済データの新しいバツフアを獲
得することから始まる。これは、BPSTとLEN
の初期化を想定している。BEは圧縮済バツフア
の終端を越えたバイトに向けられ、かつBPはバ
ツフアの先頭を指すように初期化される。レンジ
Aは、S−“1000”については“1000”に初期化
される。ハードウエア(H)および逆復号器
(I)のバージヨンについては、AMINは、
“0800”に初期化される。ソフトウエア(S)バ
ージヨンについては、AMINは−“0800”に初期
設定される。 バージヨン間の差異は、Xの初期化にも現れ
る。INITDEC−Hの場合、2つのバイトがビツ
ト28〜13に配置される。圧縮済データの先頭
ビツトは0であり、そしてこれはビツト28にシ
フトされる。1番目のバイトが位置28〜21に
シフトされ、BPがGETBYTE(第50図)にて
インクレメントされた後、2番目のバイトがビツ
ト20〜13に加算される。先頭バイトは“FF”
にならないよう保証されており、テストの必要は
ない。復号プロセスはXCの中のビツト、つまり
Xの高位の2バイト(ビツト31〜16)に注意
するだけである。新しいバイトが必要であること
を示すフラグは、ビツト5に配置される。なぜな
ら、コード・ストリームの先頭が0であるからで
ある。INITDEC−I(第43図)では、Xの初
期化が位置27〜13に15個の“1”ビツトを持
つように初期化されるとともに、ビツト5がセツ
トされる。(これは、フラグが必要とされる新し
いバイトである。)続いて最初の2バイトをビツ
ト28〜13から引くことが可能になる。第44
図では、ソフトウエア式復号器用のINITDEC−
Sが、区間(−1)〜0において作動している。
Aは−1(−X“1000”)に初期化される。再正規
化点は−0.5であり、−X“8000”として表わされ
ている。初期値のAは0から引かれてXCを
“F000”にセツトする。フラグ・ビツトは5番目
のビツトにてセツトされるとともに、1番目のバ
イトがビツト28〜21に加算される。
GETBYTEにてポインタを次のバイトにインク
レメントした後、2番目のバイトがXのビツト2
0〜13に加算される。 DECODE(第45図ないし第48図)としては
4種類のインプレメンテーシヨンが示されてい
る。第45図と第46図はハードウエア・バージ
ヨンの異なるアプローチ(−H1、−H2のように
示す)を示し、第47図は逆バージヨン(−I)
を示す。すべての場合において、まずYNがMPS
シンボルにセツトされ、新しいLPSレンジが計算
され、Tに一時的にセーブされる。DECODE−
H1(第45図)では、Xが少なくともTと同じ大
きさならば、MPSパス(path)をフオローして、
XCとAをともにTだけデイクレメントする。逆
復号器用バージヨンのDECODE−I(第47図)
では、テストの前にAをTだけデイクレメントす
る。なぜなら、この新しいMPSレンジはLPSパ
スでも必要とされるからである。同様に、第2の
ハードウエア・バージヨンDECODE−H2(第4
6図)では、MPSが生じたかのように、AとXC
をどちらも予めデイクレメントする。多くのプロ
セツサでは、減算の結果、状態コードがセーブさ
れるので、XCについて0との比較を行う次のテ
ストは、Tとの比較よりも好ましい。しかしなが
ら、DECODE−H2の場合、YNの反転、Aを
LPSレンジ(T)にセツトすること、および
RENORMD(第49図)で再正規化を行うこと
の前に、LPSパスはXCを回復しなければならな
い。MPSパスで再正規化が必要になるのはAが
AMIN未満になつた場合だけである。逆バージ
ヨンでも、XCが少なくともAと同じ大きさであ
て、LPSが生じたことを示す場合に、XCを新し
いMPSレンジであるAの分だけデイクレメント
しなければならない。第48図では、ソフトウエ
ア用DECODE−Sについての復号プロシージヤ
の結果、YNかMPS値にセツトされる。続いて、
負のAにQeが掛け合わされ、算術的に右へ12ビ
ツト分シフトされてから、Tにセーブされる。負
のTは負のAから引かれて、その大きさを減ら
す。XCがA以上(つまり、XCの大きさがAのそ
れよりも小さい)ならば、MPSが復号される。
その場合、負のAが負のAMIN以上(つまり、
Aの大きさがAMINのそれよりも小さい)なら
ば、RENORMD(第50図)によつて再正規化
が行われる。LPSが復号されると、負のAを加算
することによつて、XCが負の1の方へ動かされ
る。YN値はLPS値に変換され、かつAはLPSの
区間のサイズにセツトされる。再正規化は常に必
要である。 RENORMD(第49図、第50図)は、A値
とX値を一時に1ビツトずつ再正規化する。第4
9図では、AとXの両方がシフトされた後、
XFLAGの段階に入り、Xの最下位のバイトにつ
いて、セツトされているビツトの有無がテストさ
れる。そのようなビツトがないならば、新しいバ
イトの獲得に移る。このプロセスは、Aが
AMIN未満であり限り続く。第50図では、ソ
フトウエア・バージヨンRENORMD−Sについ
ての復号器再正規化プロセスが、AとAMINの
比較が逆になつている点を除き、ハードウエア・
バージヨンおよび逆バージヨンの場合と同じであ
ることが示されている。 BYTEIN(第51図および第52図)に示され
るような新しいバイトをXに移すプロセスの際、
どちらのバージヨンにおいても、GETBYTE(第
53図)が次のバイトに移る前に、最後のバイト
Bについて、これが“FF”バイトであつたか否
かのテストが行われる。“FF”に続くどのバイト
の先頭の2ビツトも符号化の際に挿入されたもの
だから、復号の際に適切に考慮しなければならな
い。BYTEINは、ハードウエア式およびソフト
ウエア式復号のどちらの場合も同じである。
BYTEIN−H、S(第51図)では、“FF”があ
つたならば、XNEW(Xの最下位の2バイト)が
値4にセツトされる。XFLAGにおいて2ビツト
シフトさせてフラグを位置づけるためである。こ
のように、フラグは6ビツトだけがデータ・スト
リームの中にあり、2ビツトがキヤリーのために
含まれていることを認識する。通常2番目の下位
のバイトに配置される次のバイトは、余分の2ビ
ツトの方へ送り出され、Xに加算される。“FF”
がなかつたならば、XNEWは右側のパスに示さ
れる通りにセツトされる。逆バージヨン
BYTEIN−I(第52図)では、XNEWの先頭
側のビツトにおいて、6個または8個の“1”ビ
ツトをプリセツトする必要がある。圧縮済データ
を正確に反転させるためである。同時に、下位バ
イトにおいてフラグ・ビツトがセツトされる。正
しくシフトされた新しいデータは、Xまたは
XNEWから引かれる。 GETBYTE(第53図)は、BPを動かして、
圧縮済データ・バツフアの中の次のバイトをアド
レスする。インクレメントされた後のBPが少な
くともバツフアの終端である場合は、新しいバツ
フアを獲得せねばならず、かつBPを該バツフア
の始端へリセツトしなければならない。必要なら
ば、BPSTとBEは適当に変更されるものと想定
する。 上述のソフトウエア型符号器用のプロシージヤ
は、通常のメインフレーム・コンピユータ、例え
ばIBM(登録商標)3370、あるいはパースナル・
コンピユータ、例えばIBM PC−XT、PC−AT
においてインプリメント可能である。プロシージ
ヤのインプリメントは、上記のようなフオワー
ド・ポリツシユ・ノーテーシヨンを使うプログラ
ム開発システム言語等の高級言語を用いて行うこ
とができる。 V ハードウエアの具体例の説明 第54図には、符号器ユニツト502とキヤリ
ー・オーバー・出力バツフア504を含むハード
ウエア型符号器が示されている。符号器ユニツト
502は、入力として、Q値、MPSセンス・ビ
ツト、そしてYN判断事象入力を受け取る。これ
に応答して、符号器ユニツト502は、コード・
ストリームをどれだけシフトすべきかを示す
SHIFTAMT出力と、2進キヤリー・アウト値
を表わすC/OUT出力と、13ビツトの未正規化
コード・ストリームに対応するC/UNNORM
出力を生成する。符号器ユニツト502からの出
力はキヤリー・オーバー・出力バツフア504に
入力される。該バツフア504は、圧縮されたコ
ード・ストリングとともに、出力制御を出力す
る。出力制御は、圧縮済データのうちの準備され
たバイトの数が0,1,2の何れであるかを指定
する。 第55図は、符号器ユニツト502の詳細を示
す。MPSとYN入力はゲート510,512を通
過し、その出力はA論理512に入力される。A
論理512は、現在の区間に関して適当なA値
と、SHIFTAMT出力を生成する。A値は乗算
器514にてQと掛け合わされる。生成された値
(A×Q)は一時的な値Tとして記憶保持される。
(A×QはAの次の値を決定するのに用いられ
る。)ゲート出力はC論理516にも入力される。
C論理516はC/OUTとC/UNNORMを生
成する。 第56図には、A論理の詳細が示されている。
同図によると、T(つまりA×Q)が減算器52
0に減数として入力される一方、A値は被減数と
して入力される。MPSOP入力に従つてMPSの
符号化中であるならば、新しいAの値A(new)
は、A(old)−A×Qとして導かれるべきである。
LPSの場合は、A×Qがマルチプレクサ522を
出る。マルチプレクサの出力は優先順位符号器5
24に入力される。優先順位符号器524は、A
バス上の先行するゼロの数をカウントし、Aバス
の最上位のビツトに1を回復するのに必要とされ
るシフト量を生成する。Aバスが再正規化を必要
としないならば、SHIFTAMT出力はゼロであ
る。SHIFTAMT出力はAシフタ526に転送
され、ここでシフトが完了される。シフト出力は
次にAレジスタ528に入力される。Aレジスタ
528の保持する数値は、減算器520のための
次の被減数となる。 第57図には、C論理516の詳細が示されて
いる。加算器540の1つの入力は値T(つまり
A×Q)であり、もう1つの入力はコード・スト
リームの以前の値である。MPS事象の場合は、
和がC/UNNORMになる。LPS事象の場合は、
コード・ストリームに変化はない(マルチプレク
サ542を参照)。マルチプレクサの出力は、
SHIFTAMT値とともにCシフタ544に入力
される。AとCの更新された値は、このように、
同じだけのふさわしい数の分シフトされる。Cシ
フタ544の出力は、Cレジスタ546に入力さ
れる。Cレジスタ546は、コード・ストリーム
のうちの最新の部分を保持する。シフト・プロセ
スの際必要に応じて、下位側のビツトにゼロが充
填される。加算器540は、キヤリーが生じたこ
とを表示するC/OUT出力も供給することに注
意されたい。 第58図は、P/Q最適ハードウエア型具体例
の復号器600の部分のブロツク図である。Qと
MPSは復号器ユニツト601に入力される一方、
コード・ストリングはC/IN入力バツフア60
2に入力される。 C/IN入力バツフア602は、圧縮済データ
を1ないし2バイト受け付けるとともに、該デー
タを直列化する。その結果、次の12ビツトが、イ
ンストリング(INSTRING)として、復号器6
00により利用可能となる。特別のキヤリー・ビ
ツトC/INは、さらに復号器601に入力され
るが、(上述したように)時々“FF”バイトに続
くとき以外は通常0である。 復号器ユニツト601の出力はYNOUTと
SHIFTAMTである。SHIFTAMTは入力バツ
フア602にフイード・バツクされる。復号器ユ
ニツト601の詳細な動作は第59図に示されて
いる。特に、C/IN、インストリング、および
MPSはCD論理604に入力される。CD前記6
04は、MPSとLPSのどちらの事象が復号され
つつあるかを示す第1の出力を供給する。
MPOSOP出力は、乗算器608からのT(つまり
現在のA×Q)とともにA論理606に入力され
る。上述のように、MPS、LPS事象のそれぞれ
に応じて適切な新しいA値が生成され、乗算器6
08に入力される。さらに、A論理606によつ
てSHIFTAMT出力が生成されて、CD論理60
4に入力される。現在のT値はCD論理604に
も入力される。CD論理604は様々な入力に応
じてYNOUT(YN出力)を生成する。 第60図には、CD論理604の動作の詳細が
示されている。まず、C/IN値の有無に応じて、
TとT−1のどちらかがマルチプレクサ618を
通過して、減算器620に減数として供給され
る。被減数はCDレジスタ622の内容である。
減算器620は差の値を出力するとともに、ボロ
ウも適切に出力する。ボロウはMPS操作
(MPSOP)を示唆する。C/INは加算器624
の加数となる。もう一方の加数になるのは、CD
レジスタ622の中身である。加算器624から
の和と減算器620からの差の出力とがCDマル
チプレクサ626に入力される。ボロウがなけれ
ば、前者がマルチプレクサ626の出力となり、
ボロウがあれば、後者がマルチプレクサ626の
出力となる。マルチプレクサ626の出力は、
CDバス628上を運ばれ、CDシフタ630に供
給される。シフト量SHIFTAMTは、CDバス値
がCDレジスタに記憶できるようになるまでに、
CDバス値をどれだけシフトしなければならない
かを決定する。シフトの際、下位側のビツトは、
インストリングの上位側のビツトによつて充たさ
れる。 復号器ユニツトは、インストリングからの12個
までのビツトにプラスしてキヤリー入力C/IN
を用い、データを圧縮解除してオリジナルのYN
データを復元する。特に、ボロウ出力とMPSセ
ンス値はゲート634に入力され、その出力は
YESとNOのどちらの判断を復号中であるかを表
示する。 第54図ないし第60図に示したハードウエア
は、要するに、上記フローチヤートおよびその解
説の通りに作動する。 以上、本発明を2進算術符号化について説明し
てきたが、判断の結果が3つ以上あり得るマルチ
シンボル環境における符号化、復号も(それがハ
ードウエアに適したものであれ、ソフトウエアに
適したものであれ)本発明の技術的範囲内であ
る。すなわち、本発明は、区間を3つ以上のセグ
メント、例えばa,b,c、およびdのセグメン
トに分割するようにし、かつ第1の符号器によれ
ば符号点は現在の区間の下端にセツトされ、増分
されていき(値が減分されることはない)、第2
の符号器によれば符号点は現在の区間の上端にセ
ツトされ、減分だけに従う(値が増分されること
はない)ようにした場合も含む。 このような環境でも、被加数値Aおよび符号点
C(またはZ)の決定は、2進符号化環境と同様
である。例えば、事象a/b/c/dが確率線区
間に沿つて降順に配置されており、個々の確率が
0.5,0.125,0.25,1.125であるとしよう。 判断事象は2値シンボルのときのP/Qのよう
にランク順であり、数値線に沿つてセグメント
Pa,Pb,Pc,Pdを形成する。ここで、PaPb
PcPdである。Q/P型の符号器は、下端か
ら符号化していき、新たなコード・ストリーム値
を生成するのに多くの加算を要するであろう。特
に、「ハードウエア」Q/P型符号器のコード・
ストリームは、 Ch= 〓i R(i)A(i) 〓j Qe(j) によつて与えられる。 ここで、N(i)は、M事象のi番目のセツトの符
号化の際に選択される事象である。 「ソフトウエア型」符号器であつて、ランク順
が反対である場合、つまりPaPbPcPdであ
る場合には、符号化は次の式に従う。 Cs=A(O)− 〓i R(i)A(i) 〓j=N(i)+1 Qe(j) 後者のタイプの順序付の場合、Csの計算に関
連する加算の数は、Chの計算の場合よりも平均
して少ない。しかしながら、もし 〓i Qe(j)が既
知ならば、2つの方法は計算に関して全く似たも
のになる。 小さなデータ・セツトについてのテスト・シ
ーケンス テスト・フアイルの生成は、2進シーケンスに
おける0の確率が0.1875である乱数発生器を使つ
て行つた。フアイルの中の実際のゼロの数は、予
期した通り、48であつた。Q値は“0300”(12ビ
ツト精度で0.1875)に固定した。MPS値は1に
固定した。したがつて、シンボルが1のとき、
MPSが符号化された。下記第3表に示す符号器
テストでは、YNシンボルの前に事象カウンタec
が示されている。A値とX値が各符号化サイクル
の終りに与えられる。再正規化の合計回数を「ビ
ツト」の欄に示している「コードバイト」は出力
された通りに掲載してある。この欄に2つのバイ
トが掲載されていることがあるが、それは新しい
バイトと、変更された先行バイトを両方示してい
るのである。 テスト・データを16進数で表示すると次のよう
になる。 EBB7FAFEBFEFD6C7F7FFFDFE7FFBDFF3
FDFFFF97F6F5F7FEB97BDF76E
DD7E7FF このフアイルの場合、符号化されたビツト・カ
ウントは、最終データをフラツシユするためのオ
ーバーヘツドも含めて192である。実際に圧縮さ
れたデータ・ストリームは、3つの符号器のどの
場合も、16進数で表示すると次のようになる。 3EBE5A084D54CDAD9D6D187C8C022272CB2C
72F0E5693D88
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】 E 発明の効果 本発明によれば、送信側の符号器の従う取決と
受信側の復号器の従う取決が異なつても、データ
の送受信が可能になるという優れた効果が得られ
る。
【図面の簡単な説明】
第1図は、データ圧縮/圧縮解除システムの一
般的なブロツク図である。第2図は、第1のタイ
プの符号器/復号器による算術符号化操作を説明
するための数直線を示す図である。第3図は、第
2のタイプの符号器/復号器による算術符号化操
作を説明するための数直線を示す図である。第4
図は、第3のタイプの符号器/復号器による算術
符号化操作を説明するための数直線を示す図であ
る。第5図は、複数の互いに異なる符号器を示す
とともに、その何れもが複数の互いに異なる復号
器の何れと結びつけても使用し得ることを説明す
るためのブロツク図である。第6図は、第5図の
符号器のそれぞれが、判断事象に応答してどのよ
うに動作するかを説明するための図である。第7
図は、事象の順序付に関して同一の取決を持つ2
つの異なる符号器によつて生成される2つのコー
ド・ストリームが収束する様を説明するための図
である。第8図は、事象の順序付に関して、第7
図とは逆であるがどちらも同一の取決を持つ2つ
の異なる符号器によつて生成される2つのコー
ド・ストリームが収束する様を説明するための図
である。第9図は、本発明による符号器側のシフ
ト・レジスタにおけるビツトの割当の説明図であ
る。第10図は、本発明による復号器側のシフ
ト・レジスタにおけるビツトの割当の説明図であ
る。第11図は、本発明によるデータ圧縮/圧縮
解除システムの行う一般的な動作を示すフローチ
ヤートである。第12図ないし第14図は、3つ
の異なるタイプの符号器のそれぞれに関して、初
期設定プロシージヤを示すフローチヤートであ
る。第15図ないし第17図は、3つの異なるタ
イプの符号器について、符号化プロシージヤを説
明するフローチヤートである。第18図は、どの
判断についても区間のサイズが最小値AMIN以
上となるようにするため、現在の区間とコード・
ストリームを同じように再正規化する方法を示す
フローチヤートである。第19図ないし第21図
は、それぞれキヤリーまたはボロウの可能性を考
慮して、データ1バイトとともに送り出すデー
タ・ビツトの数を決定するBYTEOUT操作を示
すフローチヤートである。第22図ないし第29
図は、1バイトについて6または8ビツトのデー
タが送り出される様を、タイプの異なる符号器毎
に示すフローチヤートである。第30図は、特定
のボロウ状況が生じた後に行われるプロシージヤ
を示すフローチヤートである。第31図は、新し
くバイトを記憶するにつれてバツフア・ポインタ
を動かしつつ、バイトがバツフア・メモリに入力
される様を説明するフローチヤートである。第3
2図ないし第34図は、それぞれ、最後のシンボ
ルの符号化が完了した後に、またバツフア・メモ
リに送出されていなかつたXレジスタの中のデー
タが「フラツシユ」される様を説明するフローチ
ヤートである。第35図ないし第37図は、それ
ぞれ、Xレジスタからビツトをフラツシユ・アウ
トする手順の後半の部分を示すFINALBYTES
のフローチヤートである。第38図ないし第41
図は、それぞれFINALBYTES操作のフラツシ
イング・ステツプをさらに詳細に説明するフロー
チヤートである。第42図ないし第44図は、3
つのタイプの異なる復号器毎に、初期設定プロシ
ージヤを示すフローチヤートである。第45図な
いし第48図は、それぞれ、復号プロシージヤを
説明するフローチヤートである。第49図および
第50図は、それぞれ、復号器で行う再正規化を
示すフローチヤートである。第51図および第5
2図は、それぞれ、各タイプの復号器が符号化さ
れたバイトを入力する様を示すフローチヤートで
ある。第53図は、バイトがバツフアに入力され
る際のバツフア・ポインタの移動を示すフローチ
ヤートである。第54図ないし第57図は、それ
ぞれ、ハードウエアによる符号器またはその一部
を示すブロツク図である。第58図ないし第60
図は、それぞれ、ハードウエアによる復号器また
はその一部を示すブロツク図である。

Claims (1)

  1. 【特許請求の範囲】 1 符号器が、入力された判断事象の系列に応答
    して数直線上のある1つの区間と該区間に含まれ
    る1つの点とを識別し、該識別された点に対応す
    る数値をもつて入力された判断事象の系列を符号
    化したコード・ストリームとするデータ圧縮シス
    テムにおいて、 同一の判断事象系列の入力に関して、第2の取
    決に従う第2の符号器によつて生成される第2の
    コード・ストリームとは数値が異なり、かつ対応
    する上記数値線上の点も上記第2の符号器によつ
    て識別される区間には含まれない第1のコード・
    ストリームを上記第2の取決とは異なる第1の取
    決に従つて生成する第1の符号器と、 上記第1のコード・ストリームの数値を変更
    し、変更後の第1のコード・ストリームの数値に
    対応する上記数直線上の点が、上記第1の符号器
    に入力されたものと同一の判断事象系列に関して
    上記第2の符号器によつて識別される上記数直線
    上の区間に含まれるようにする手段 とを含むことを特徴とするデータ圧縮システム。
JP62202006A 1986-09-15 1987-08-14 デ−タ圧縮システム Granted JPS6376524A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/907,700 US4891643A (en) 1986-09-15 1986-09-15 Arithmetic coding data compression/de-compression by selectively employed, diverse arithmetic coding encoders and decoders
US907700 1986-09-15

Publications (2)

Publication Number Publication Date
JPS6376524A JPS6376524A (ja) 1988-04-06
JPH0258812B2 true JPH0258812B2 (ja) 1990-12-10

Family

ID=25424504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62202006A Granted JPS6376524A (ja) 1986-09-15 1987-08-14 デ−タ圧縮システム

Country Status (7)

Country Link
US (1) US4891643A (ja)
EP (1) EP0260462B1 (ja)
JP (1) JPS6376524A (ja)
AU (1) AU598587B2 (ja)
BR (1) BR8704622A (ja)
CA (1) CA1292070C (ja)
DE (1) DE3788763T2 (ja)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5532694A (en) * 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
JPH0834432B2 (ja) * 1989-01-31 1996-03-29 三菱電機株式会社 符号化装置及び符号化方法
IL91158A (en) * 1989-07-28 1993-01-31 Ibm Israel Method and system for arithmetic coding and decoding
US5023611A (en) * 1989-07-28 1991-06-11 At&T Bell Laboratories Entropy encoder/decoder including a context extractor
JP2877375B2 (ja) * 1989-09-14 1999-03-31 株式会社東芝 可変レートコーデックを用いたセル転送方式
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
WO1992021101A1 (en) * 1991-05-17 1992-11-26 The Analytic Sciences Corporation Continuous-tone image compression
KR950013404B1 (ko) * 1991-11-15 1995-11-08 미쯔비시덴끼 가부시끼가이샤 부호전송장치
CA2077271C (en) * 1991-12-13 1998-07-28 David J. Craft Method and apparatus for compressing data
US5396228A (en) * 1992-01-16 1995-03-07 Mobile Telecommunications Technologies Methods and apparatus for compressing and decompressing paging data
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
DE69320147T2 (de) * 1992-11-13 1999-01-14 Canon Kk Vorrichtung zur Bildkodierung
US5357250A (en) * 1992-11-20 1994-10-18 International Business Machines Corporation Adaptive computation of symbol probabilities in n-ary strings
US6009200A (en) * 1992-12-17 1999-12-28 Sony Corporation Dynamic image processing apparatus and method
FR2703482B1 (fr) * 1993-03-29 1995-06-02 Digital Equipment Int Procédé de mise à jour de la taille de l'intervalle dans la méthode du codage arithmétique.
US5563595A (en) * 1993-12-23 1996-10-08 International Business Machines Corporation Method and apparatus for compressing data
US5546080A (en) * 1994-01-03 1996-08-13 International Business Machines Corporation Order-preserving, fast-decoding arithmetic coding arithmetic coding and compression method and apparatus
WO1996002895A1 (en) * 1994-07-14 1996-02-01 Johnson Grace Company Method and apparatus for compressing images
US5822456A (en) * 1994-07-14 1998-10-13 Johnson-Grace Optimal spline interpolation for image compression
JPH08116534A (ja) * 1994-10-18 1996-05-07 Seiko Epson Corp 画像データ符号化装置およびその方法並びに画像データ復号化装置およびその方法
US5818369A (en) * 1996-03-07 1998-10-06 Pegasus Imaging Corporation Rapid entropy coding for data compression or decompression
US6055338A (en) * 1996-08-22 2000-04-25 Sumitomo Metal Industries Limited Bi-level adaptive coding using a dual port memory and a context comparator
US6058216A (en) * 1996-09-03 2000-05-02 Sumitomo Metal Industries Limited Apparatus for encoding image data
US5912636A (en) * 1996-09-26 1999-06-15 Ricoh Company, Ltd. Apparatus and method for performing m-ary finite state machine entropy coding
US5859604A (en) * 1997-01-14 1999-01-12 International Business Machines Corporation Merged VLSI implementation of hardware optimized Q-Coder and software optimized QM-Coder
WO1999037085A2 (en) * 1998-01-16 1999-07-22 Comsat Corporation Arithmetic coding-based facsimile compression with error detection
KR100604364B1 (ko) * 1998-03-23 2006-07-25 코닌클리케 필립스 일렉트로닉스 엔.브이. 정보신호의 연산 인코딩 및 디코딩
US6728377B1 (en) * 1998-07-09 2004-04-27 Ricoh Company, Ltd. Coding apparatus and an information processing apparatus provided with the coding apparatus
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6318156B1 (en) * 1999-10-28 2001-11-20 Micro Motion, Inc. Multiphase flow measurement system
US6782047B1 (en) * 1999-11-09 2004-08-24 Nokia Networks Oy Variable length encoding of compressed data
US20060173847A1 (en) * 2000-03-09 2006-08-03 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143199A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US8230482B2 (en) 2000-03-09 2012-07-24 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143249A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US6879988B2 (en) * 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US20060143253A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US7844579B2 (en) * 2000-03-09 2010-11-30 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143237A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060173848A1 (en) * 2000-03-09 2006-08-03 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143180A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20050015608A1 (en) * 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US8959582B2 (en) 2000-03-09 2015-02-17 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060155788A1 (en) * 2000-03-09 2006-07-13 Pkware, Inc. System and method for manipulating and managing computer archive files
US7146053B1 (en) 2000-05-10 2006-12-05 International Business Machines Corporation Reordering of compressed data
US6941019B1 (en) 2000-05-10 2005-09-06 International Business Machines Corporation Reentry into compressed data
KR100405819B1 (ko) * 2001-01-15 2003-11-14 한국과학기술원 이진 영상의 데이터 압축 및 복원방법
WO2002063867A2 (en) * 2001-02-06 2002-08-15 Sasken Communication Technologies Limited A data decompression technique for image processing
JP3801501B2 (ja) * 2001-12-18 2006-07-26 三菱電機株式会社 符号化装置及び復号装置及び符号化・復号装置及び符号化方法及び復号方法及び符号化・復号方法及びプログラム
JP3807342B2 (ja) * 2002-04-25 2006-08-09 三菱電機株式会社 デジタル信号符号化装置、デジタル信号復号装置、デジタル信号算術符号化方法、およびデジタル信号算術復号方法
PT2296282E (pt) * 2002-05-02 2013-12-05 Fraunhofer Ges Forschung Método e processo para a codificação e descodificação aritmética com aplicação de múltiplas tabelas de pesquisa
JP3853710B2 (ja) * 2002-07-15 2006-12-06 Necアクセステクニカ株式会社 ディジタル画像符号化装置およびディジタル画像符号化方法
US6714145B1 (en) 2002-09-26 2004-03-30 Richard Marques Method and apparatus for integer-based encoding and decoding of bits
JP4240283B2 (ja) 2002-10-10 2009-03-18 ソニー株式会社 復号装置及び復号方法
US7126955B2 (en) 2003-01-29 2006-10-24 F5 Networks, Inc. Architecture for efficient utilization and optimum performance of a network
US20050086383A1 (en) * 2003-10-17 2005-04-21 Nokia Corporation Optimizing the compression efficiency in a packet data communication
US8176155B2 (en) * 2003-11-26 2012-05-08 Riip, Inc. Remote network management system
US7161507B2 (en) * 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
WO2006038716A1 (en) * 2004-10-07 2006-04-13 Matsushita Electric Industrial Co., Ltd. Picture coding apparatus and picture decoding apparatus
US8159940B1 (en) 2004-11-11 2012-04-17 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
WO2007002468A2 (en) * 2005-06-23 2007-01-04 1Stworks Corporation Modeling for enumerative encoding
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US8275909B1 (en) 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
FR2895602B1 (fr) * 2005-12-22 2008-03-07 Assistance Tech Et Etude De Ma Dispositif et procede d'encodage de type cabac
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates
US8321326B2 (en) * 2009-09-15 2012-11-27 Auerbach Group Llc Method and system for enhancing the efficiency of a digitally communicated data exchange
US8768078B2 (en) 2010-04-07 2014-07-01 Apple Inc. Intelligent media decoding
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
CN107743239B (zh) * 2014-09-23 2020-06-16 清华大学 一种视频数据编码、解码的方法及装置
US9543980B2 (en) 2014-10-10 2017-01-10 Massachusettes Institute Of Technology Systems and methods for model-free compression and model-based decompression
US10499074B2 (en) 2017-01-09 2019-12-03 Qualcomm Incorporated Binary arithmetic coding with small tables or short-operand multiplications for video coding
CN109683996A (zh) * 2018-12-20 2019-04-26 携程旅游网络技术(上海)有限公司 通信数据的传输方法及系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4028731A (en) * 1975-09-29 1977-06-07 International Business Machines Corporation Apparatus for compression coding using cross-array correlation between two-dimensional matrices derived from two-valued digital images
US4122440A (en) * 1977-03-04 1978-10-24 International Business Machines Corporation Method and means for arithmetic string coding
US4168513A (en) * 1977-09-12 1979-09-18 Xerox Corporation Regenerative decoding of binary data using minimum redundancy codes
FR2430139A1 (fr) * 1978-06-28 1980-01-25 Labo Electronique Physique Dispositif de compression de signaux binaires et systeme de transmission codee de fac-similes equipe de ce dispositif
US4463342A (en) * 1979-06-14 1984-07-31 International Business Machines Corporation Method and means for carry-over control in the high order to low order pairwise combining of digits of a decodable set of relatively shifted finite number strings
US4286256A (en) * 1979-11-28 1981-08-25 International Business Machines Corporation Method and means for arithmetic coding utilizing a reduced number of operations
US4295125A (en) * 1980-04-28 1981-10-13 International Business Machines Corporation Method and means for pipeline decoding of the high to low order pairwise combined digits of a decodable set of relatively shifted finite number of strings
US4363036A (en) * 1981-03-16 1982-12-07 Ncr Canada Ltd - Ncr Canada Ltee Method and apparatus for compressing digital data using non-adaptive predictive techniques
US4467317A (en) * 1981-03-30 1984-08-21 International Business Machines Corporation High-speed arithmetic compression coding using concurrent value updating
US4369463A (en) * 1981-06-04 1983-01-18 International Business Machines Corporation Gray scale image data compression with code words a function of image history
US4494108A (en) * 1981-11-09 1985-01-15 International Business Machines Corporation Adaptive source modeling for data file compression within bounded memory
US4462081A (en) * 1982-04-05 1984-07-24 System Development Corporation Signal processing system
DE3306334A1 (de) * 1983-02-23 1984-08-23 Siemens AG, 1000 Berlin und 8000 München Quantisierer fuer dpcm-codierer
US4577314A (en) * 1983-03-31 1986-03-18 At&T Bell Laboratories Digital multi-customer data interface
US4596024A (en) * 1983-05-23 1986-06-17 At&T Bell Laboratories Data detector using probabalistic information in received signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4516241A (en) * 1983-07-11 1985-05-07 At&T Bell Laboratories Bit compression coding with embedded signaling
US4633490A (en) * 1984-03-15 1986-12-30 International Business Machines Corporation Symmetrical optimized adaptive data compression/transfer/decompression system
US4584561A (en) * 1984-09-24 1986-04-22 Gte Communication Systems Corporation Method of residue to analog conversion

Also Published As

Publication number Publication date
CA1292070C (en) 1991-11-12
DE3788763D1 (de) 1994-02-24
AU7836787A (en) 1988-03-17
US4891643A (en) 1990-01-02
EP0260462B1 (en) 1994-01-12
EP0260462A3 (en) 1990-10-31
JPS6376524A (ja) 1988-04-06
DE3788763T2 (de) 1994-06-23
EP0260462A2 (en) 1988-03-23
BR8704622A (pt) 1988-04-26
AU598587B2 (en) 1990-06-28

Similar Documents

Publication Publication Date Title
JPH0258812B2 (ja)
US4286256A (en) Method and means for arithmetic coding utilizing a reduced number of operations
US4973961A (en) Method and apparatus for carry-over control in arithmetic entropy coding
US4989000A (en) Data string compression using arithmetic encoding with simplified probability subinterval estimation
US4905297A (en) Arithmetic coding encoder and decoder system
US4467317A (en) High-speed arithmetic compression coding using concurrent value updating
US5587710A (en) Syntax based arithmetic coder and decoder
JP3684128B2 (ja) 算術符号化/復号化方法ならびに算術符号化/復号化装置
JP3748003B2 (ja) 符号化方法及び圧縮/伸長システム
JPH0258813B2 (ja)
US5309156A (en) Variable-length code decoding device
JP2922571B2 (ja) データ変換回路
JP3459759B2 (ja) 算術復号化装置
JPS60502082A (ja) ファクシミリ受信機のための画素発生器
JP3842914B2 (ja) データ符号化方法/復号方法、データ符号化装置/復号装置、及び、そのデータ符号化方法/復号方法を用いた画像データ記録システム
US6765515B2 (en) Arithmetic coding/decoding apparatus of MQ-Coder system and renormalization method
JPH07249995A (ja) データ符号化装置
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
JPH0645945A (ja) 算術符号化方法及びその復号化方法
JP3336537B2 (ja) 符号化装置、復号化装置、符号化・復号化装置及び算術符号化装置
KR100197075B1 (ko) 압축 데이타 복원 장치
JPH08111645A (ja) ハフマン復号器
JP2000261675A (ja) 符号化装置
Cena et al. A Q-Coder algorithm with carry free addition
JP3108243B2 (ja) 符号化及び復号化装置

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071210

Year of fee payment: 17