JPH0744462B2 - 圧縮符号化方法及び復号方法 - Google Patents

圧縮符号化方法及び復号方法

Info

Publication number
JPH0744462B2
JPH0744462B2 JP1124579A JP12457989A JPH0744462B2 JP H0744462 B2 JPH0744462 B2 JP H0744462B2 JP 1124579 A JP1124579 A JP 1124579A JP 12457989 A JP12457989 A JP 12457989A JP H0744462 B2 JPH0744462 B2 JP H0744462B2
Authority
JP
Japan
Prior art keywords
register
symbol
contents
data string
source data
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
Application number
JP1124579A
Other languages
English (en)
Other versions
JPH0253329A (ja
Inventor
ダン・シミユエル・ケーヴイオン
エフド・ドヴ・カルニン
ユーゲニウス・ワラク
Original Assignee
インタ‐ナシヨナル・ビジネス・マシ‐ンズ・コ‐ポレ‐シヨン
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 インタ‐ナシヨナル・ビジネス・マシ‐ンズ・コ‐ポレ‐シヨン filed Critical インタ‐ナシヨナル・ビジネス・マシ‐ンズ・コ‐ポレ‐シヨン
Publication of JPH0253329A publication Critical patent/JPH0253329A/ja
Publication of JPH0744462B2 publication Critical patent/JPH0744462B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、ソース・データ・ストリングの圧縮表現の生
成方法に関する。本発明は、特に、高能率の乗算なしの
算術符号化に関する。算術符号化は、データ処理システ
ムでデータを圧縮するのによく用いられる技術である。
B.従来技術及びその問題点 かかる圧縮は、普通、大規模データ・ベースを特徴づけ
るシンボルに関連する、高度の相関関係を持ち非一様で
ある統計分布によつて可能とされる。ソース・データが
デジタル形式で表現されるとき、圧縮の目的は、オリジ
ナルのソース・データ・ストリングよりもデータ、ビツ
ト数の少ないデータ・ストリングを出力することにあ
る。統計的に有意なソース・データ・ストリングのサン
プルが圧縮されるとき、圧縮出力データ・ストリングの
予想長さは、ソース・データ・ストリングの“エントロ
ピー”に対応する。
ソース・データの圧縮方法の1例として、算術符号器が
Rissanenによつて開発され、それはまず下記の論文で発
表された。
“Generalized Kraft Inequality Arithmetic Coding",
IBM Journal of Research and Development,Volume 20,
No.3,1976年5月 Rissanenによつて紹介された算術符
号化法によれば、マルチ・アルフアベツト・データ、つ
まり各シンボルがマルチ・シンボル・アルフアベツトの
中で見い出せるようなデータの圧縮が可能となる。
算術符号化法を採用するためには、まずソース・アルフ
アベツトの中の各シンボルの発生確率を決定することが
必要である。普通、ソース・データ・ストリング毎に確
率は変化する。したがつて、テレビ・イメージに相当す
るデータを圧縮するのに算出符号化法が用いられる場
合、まず各画素の発生確率が決定されねばならない。こ
の決定はリアル・タイムで行われることもあるし、統計
的に予定されることもある。しかしながら、確率の決定
法は本発明の特徴とは関係ない。本発明は、確率の決定
法に関係なく、等しく適用可能である。
ソース・アルフアベツト内の各シンボルの発生確率を決
定した後、各シンボルの累積確率が決定されよう。した
がつて、データ・ストリングの第1番目のシンボルにつ
いての累積確率S(1)は一般にゼロに等しい。また、
第n番目のシンボルについての累積確率は、先行する
(n−1)個のシンボルの各々の発生確率の和に等しく
なる。
算術符号化法では、普通、出力データ・ストリングは、
単位区間〔0、1〕の中の2進小数として表現される。
Langdon Jr.が“An Introduction to Arithmetic Codin
g",IBM Journal of Research and Development,Volume
28,No.2,1984年3月、で説明しているように、算術符号
化は該単位区間の細分割に関係している。この細分割
は、ソース・アルフアベツト内のシンボルごとに、単位
区間中にコード・ポイントCnをマークすることによつて
達成される。コード・ポイントの各々は、先行シンボル
の発生確率の和に等しい。各コード・ポイントの右側の
小区間Anの巾の大きさは、対応するシンボルまでのソー
ス・データ・ストリングの発生確率を表現する(第3図
参照)。
例えば、そのアルフアベツトがa0からamまでのシンボル
からなり、シンボルの発生確率がそれぞれp(0)、
…、p(m)に等しいソース・データ・ストリングを考
えてみよう。ソース・データ・ストリングがa0 a5 a3
…であるなら、第1シンボルa0は部分区間〔0、p
(0))〕の範囲内で符号化される。これは、巾A1がシ
ンボルa0の発生確率に単純に相当するp(0)に等し
い、元の単位区間内の第1小区間を表現している。ソー
ス・データ・ストリングの第2シンボルを符号化するた
めには、シンボルa0の発生確率の条件とするa5の発生確
率が決定されねばならない。さらに、第2シンボルa5
関連する累積確率を計算しなければならない。かくし
て、第2シンボルa5に対応する小区間は、a0に対応する
第1部分区間内にある第2小区間となる。数学的には、
第2部分区間の巾A2はp(0)*p(5)つまり、2つ
のシンボルa0、a5の発生確率の積に等しい。単位区間内
にある第2小区間の出発点は、第1小区間の巾A1と第2
シンボルa5に関連する累積確率S(5)に依存する。つ
まり、それらの積A1*S(5)に等しい。このように、
ソース・データ・ストリングの各シンボルが単位区間の
中で相次いで符号化されていくにつれて、部分区間も相
次いで生成され、その各々が特定のコード・ポイントと
幅によつて特定され得る。現在の部分区間についてのコ
ード・ポイントは、従前の区間又は部分区間の範囲内
の、現在の部分区間に対応する。上述のように、これは
現在シンボルに関連する累積確率に等しい。したがつ
て、第n番目の部分区間に関連するコード・ポイント
は、第(n−1)番目の部分区間の幅に先行する(n−
1)個のシンボルの累積確率を掛けたもの、つまりAnS
(n)に等しい。新しい部分区間の幅は、ソース・デー
タ・ストリングについてそれまで符号掛されたすべての
シンボルの確率の積、つまりp(0)*p(5)*p
(3)に等しい。幅Anと第n部分区画のコード・ポイン
トCnに対応するデータによつて、ソース・データ・スト
リング中の最初から(n+1)個目までのシンボルが符
号化される。したがつて、算術符号器はこれらのデータ
を記憶するのに2つのメモリ・レジスタを必要とし、そ
れらは通常それぞれAレジスタ、Cレジスタと呼ばれ
る。
部分区間の幅は確率の積に等しいのであるから、2つの
フアクタが浮かび上がつてくる。まず、符号化されるソ
ース・データ・ストリングのシンボル数が多くなればな
るほど、算術符号表現を規定する部分区画の幅は減少す
る。(というのは、個々の確率は必ず1より小さくなけ
ればならないからである)。さらに、算術符号化を効率
よくインプリメントするには、そのプロセスにおいて乗
算を繰り返さなければならない。
データ・ストリングを構成するシンボルの正確な発生確
率に基づくとき、算術符号器はソース・データ・ストリ
ングのエントロピーに相当する最適な圧縮結果を生成す
る。しかし、従来の実際のインプリメンテーシヨンで
は、確率を正確に決定することの困難さ故に、近似を導
入しがちであつた。その結果、算術符号演算の効率が低
下し、出力データ・ストリングに含まれるシンボル数が
理論的な最低限(エントロピー)を上回つてしまう。さ
らに、部分区画の幅を決める度に必要とされる乗算をな
くするために、さらなる近似が導入されてきている。
算術符号器は、メモリ・レジスタのビツト数が有限であ
るようなコンピユータでインプリメントされる。乗算に
関連する問題の1つは、確率の乗算を続けていけばいく
ほどより小さな区画が生成されるので、そのような乗算
をわずか数回やつた後には、その結果生じた部分区間が
小さすぎてコンピユータ・レジスタに満足にストアでき
ない、という事実に起因する。例えば、各レジスタが16
ビツトであるときに、確率の乗算を繰り返した結果、積
が1-16より小さくなつたならば、積はレジスタをアンダ
ーフローしてしまう。言い換えると、レジスタはゼロで
満たされ、確率積の有意なビツトは失われてしまう。一
連の乗算に伴う別の問題は、実行に要する時間である。
上記第1の問題点は、正規化(normalization)と呼ば
れる技術によつて解決された。この技術では、確率積は
浮動小数点表記でストアされる。これを実行するべく、
別のビツト・レジスタが用いられ、部分区間の幅に対応
する(2を基数とする)指数をストアする。そのとき、
2進小数の最も桁の高い1は最も左の位置へシフトされ
る。したがつて、明らかに16ビツト・レジスタにストア
できない1.0101×2-20なる2進小数であつても、1.0101
E−20として満足にストアできる。ここで仮数と指数は
別個のレジスタにストアされる。仮数のMSBはこのよう
に常に1となるように配置されるので、仮数レジスタに
ストアされる実際の数は常に1.0より大きい。
上記第2の問題点(乗算実行時間)は、いわゆる「乗算
なし」の算術符号器によつてある程度解決された。2進
算法を用いるコンピユータでは、乗算はシフトと加算オ
ペレーシヨンの繰り返しとしてインプリメントされる。
「乗算なし」という言葉は、従来、様々に用いられてお
り、各符号化ステツプについてのシングル・シフト、ま
たはシングル・シフト・アンド・アド・オペレーシヨン
のどちらかを意味してきた。厳密に言うと、数学的には
シングル・シフト演算も乗算をしたことに変わりはな
い。しかしながら、多数のシフトと加算演算を伴う厳密
な算術符号器のインプリメンテーシヨンに関連する乗算
に比べて、このやり方では費す時間がはるかに少なくな
る。したがつて、「乗算なし」なる語は、しばしば乗算
が大幅に簡素化された、あるいは減少した、という意味
に用いられる。従来技術、及び本発明において「乗算な
し」なる語が用いられるのは、このような文脈において
である。
米国特許第4286256号明細書では、演算の数を減らした
算術符号化の方法及び装置が開示されている。その特許
発明によれば、現在のコード・ポイントを符号化するの
に先立つて、部分区間の幅に対応する内部積の1つを切
捨てることによつて乗算を簡略化している。しかしなが
ら、この方法は2進ソース(つまり、シンボルを2つだ
け持つアルフアベツト)にしか適さない。つまり、この
方法は、ソース・データ・ストリングの各シンボルを、
確率の高い事象または低い事象のどちらかとして符号化
することはできるけれども、マルチ・アルフアベツト・
コードには適さない。
米国特許4652856号明細書では、乗算なしのマルチ・ア
ルフアベツト算術符号が開示されている。そこでは、部
分区間の各々が上述のような浮動小数点形式でストアさ
れる。そして、Aレジスタに収められる仮数は、0.1よ
り大きな2進小数とされる。該明細書で提唱される近似
方法によれば、可変の基準を採用して、部分区画の仮数
を(2進の)0.1に正確に切り捨てるか、もしくは1に
切り上げる(round up)かどちらかを行わせる。
このような近似を使つてもなお所望の圧縮を達成できる
けれども、効率の点ではロスがある。換言すると、圧縮
データ・ストリングを表現するために、最低限のビツト
数より多くのビツト数が必要とされる。このような非能
率は、圧縮対象のソース・データの性質に依存する。
上記米国特許4652856号の発明の大きな問題点は、Aレ
ジスタの内容を切り上げることによつて該当するシンボ
ルの確率が現実の値よりも大きな値に近似されることに
起因する。アルフアベツトのすべてのシンボルについて
の確率の和が1.0を越えられないことを確実にするため
に、上記特許発明では、最後の部分区間を次のように近
似する。
この近似(概算)によれば、アルフアベツトのすべての
シンボルの確率の和が1に等しいことが保証されるれど
も、これは、最後の部分区間を非常に小さなものとして
しまい、符号化の能率が非常に悪くなるという犠牲を伴
う。
C.問題点を解決するための手段 本発明の目的は、上記従来技術に関連する問題点を大幅
に減少させ、あるいは除去する、高効率で乗算なしの算
術符号化法を提供することにある。
本発明によれば、ソース・データ・ストリングの圧縮表
現R(comp)を生成する方法が提供される。該方法の内
容は以下に示すとおりである。
各シンボルは、(m+1)個のシンボルa0、…、amから
なる有限のセツトから取り出される。
上記圧縮表現は所定の範囲の数値であり、ストリング中
の相次ぐシンボルに対応する相次ぐサイクルにおいて帰
納的に生成される。
各シンボルaiについて、確率値p(i)と累積確率値
(S(i)がアベイラブルである。
ここで、上記累積確率値は、 S(i)=p(0)+p(1)+… …+p(i−1)(i=1、…、m) S(0)=0 である。
一対のシフト・レジスタA及びCが用いられる。それぞ
れ、2進デイジツト6個分の位置を有している。
特に、本発明の特徴は、以下の点にある。
(a)まず、Cレジスタの内容をすべてゼロにセツトす
るとともに、Aレジスタの内容を所定の値にセツトす
る。
次に、ストリングの相次ぐシンボルaiごとに、 (b)Aレジスタの内容を取り出し、所定の基準に照し
て該基準を下回る下位の“1"ビツトを削除する(切り捨
てる)ことによつて、スケーリング・フアクタKを決定
し、 (c)K*S(i)の値をCレジスタの内容に加算し、 (d)(d1)シンボルaiがシンボルamでないならば、値
K*p(i)をAレジスタの新たな内容とし、 (d2)シンボルaiがシンボルamならば、値K*S(i)
をAレジスタから引き算する ことにより、Aレジスタの内容を決定し、 (e)Aレジスタの内容が所定の範囲内に来るまで、A
レジスタとCレジスタを両方とも所定の向きにシフト
し、空いた位置にはゼロを充填し、 (f)シンボルaiがストリングSTRの最終シンボルでな
いならば、ステツプ(b)ないし(e)を繰り返し、シ
ンボルaiがストリングSTRの最終シンボルならば、Cレ
ジスタの内容を上記所定の向きにW位置だけシフトす
る。
以上のステツプを経てCレジスタから外へシフトされた
一連の2進デイジツトは、シンボル・ストリングSTRの
圧縮表現R(comp)を構成する。
したがつて、本発明によれば、ソース・データ・ストリ
ングSTR内の各シンボルが相次いで符号化されると、そ
の代表圧縮符号がCレジスタから外へシフトされ、必要
に応じて後処理に供される。普通は、圧縮されたデータ
が相次いでCレジスタから読み取られ、その後適当な複
号装置に送られる。そこで圧縮済ストリングは複号さ
れ、オリジナルのソース・データ・ストリングSTRが再
構成される。上記従来の算術符号化と同じく、本発明法
もフアースト・イン・フアースト・アウト(FIFO)ルー
チンであり、ソース・データ・ストリングSTR中の最初
のシンボルが最初に符号化される。
好適な実施例では、Aレジスタは値1.00000に初期設定
されるとともに、圧縮後の算術符号は0と1の間の値を
取る。
ソース・データ・ストリングSTR内のシンボルの符号化
が次々に行われるので、STR中の後続シンボルについて
展開された符号が、“キヤリー・オーバー”効果ゆえに
先行シンボルについて既に生成された符号に影響を及ぼ
すことがある。このキヤリー・オーバー効果は文献等で
十分に知られたことであり、いくつかの解決策が発表さ
れている。そのうちの何れを本発明とともに用いても差
し支えない。
D.実施例 第3図は、確率p(i)のテーブルと、5つのシンボル
a0〜a4からなるシンボル・セツトについての累積確率S
(i)を、単位区間〔0、1)上にプロツトしたコード
・ポイントとともに示したものである。既に説明したよ
うに、符号化対象のシンボルaiについての確率p(i)
と累積確率S(i)に基づいて、シンボル・セツトに由
来する相次ぐシンボルを帰納的に単位区間内の部分区間
として符号化するプロセスは、算術符号化それ自身の特
徴である。第1図は、本発明による符号化法の流れ図で
ある。4つの主要なステツプには1から4までの番号が
付されている。その理由は、第2図を参照することによ
り、後で明らかになる。
スタート時点では、Cレジスタは0.000000に、Aレジス
タは1.00000、にそれぞれセツトされる。ステツプ
(1)では、ソース・データ・ストリングSTR中の各シ
ンボルについて、確率p(i)及び累積確率S(i)が
決定される。これは既知のいくつかの方法の何れかを用
いて実行できる。あるいは、固定かつ予定された確率値
セツトを用いることもできる。次に、ステツプ(2)で
示さるように、Aレジスタの内容を取出し、2進の“1"
のデイジツトのうち上位2つまでを残して残りを切り捨
てることにより、スケーリング・フアクタKが決定され
る。Aレジスタが現在部分区間の幅を実現する一方、ス
ケーリング・フアクタKは事実上現在部分区間の幅の近
似である。この幅は(2進数の)1.00000と1.1111…の
間に正規化される一方、スケーリング・フアクタKは上
位2つまでの“1"を残し他を削除して得られるAレジス
タの内容の近似値である。
以下の記載においては、(m+1)個のシンボルからな
る有限セツトのシンボルを、a0、a1、…、amと表記す
る。シンボルa1についての確率と累積確率は、それぞ
れ、p(i)及びS(i)と表記する。したがつて、例
えば、マルチ・アルフアベツト・シンボルの8番目のシ
ンボルが“h"ならば、a8=hであり、その確率はp
(8)及びS(8)ということになる。
ステツプ(3)は、ソース・データ・ストリングSTRの
各シンボルについて、KとS(i)の積がCレジスタに
加算されるとともに、i<mならば、AレジスタはK*
p(i)にセツトされ、i=mならば、Aレジスタの内
容からK*S(m)が引き算されることを示している。
したがつて、符号化対象のシンボルがマルチ・アルフア
ベツト・シンボル中の最終シンボルに該当しないとき、
Aレジスタは単純に現在シンボルの確率とKの積にセツ
トされる。ここで、Kは現在部分区間の幅の近似であ
る。一方、符号化対象のシンボルが該アルフアベツトの
最終シンボルに該当するとき、Aレジスタの値は、Kと
該最終シンボルの累積確率との積の分だけ減らされる。
これは、確率p(i)は近似にすぎないという事実を埋
め合わせする。実際、マルチ・アルフアベツトのすべて
のシンボルについての確率の和が1に等しいことを保証
する。このことは、以下のことから導かれる。
アルフアベツトの第m番目のシンボルについて、 A←A−K*S(m) となる。そして、KはAの近似であるから、 A←A−A*S(m) したがつて、A←A(1−S(m)) つまり、A←A(1−p(0)−p(1)………−p
(m−1)) すなわち、A←A*p(m) これはまさに要求されるところである。
アルゴリズムの次のステツプ(4)では、Aレジスタの
内容が所定の範囲に収まるように、Aレジスタが正規化
される。Aレジスタの内容には、適当な2の倍数が掛け
合わされる。これは、簡単なシフト・オペレーシヨンで
もつて、Aレジスタの現在の内容に応じて定まる回数分
Aレジスタを左へシフトすることによつて達成される。
Cレジスタも同じビツト数分だけ左へシフトされる。そ
の結果、Cレジスタの上位のビツトが読み取られ、それ
はSTRついての算術符号の一部を構成することになる。
このような手順はSTR中のすべてのシンボルについて繰
り返され、これが完了したなら、その時点のCレジスタ
の全内容が外にシフトされ、先に生成されていたコード
・ストリングと連結される。その結果できたコード・ス
トリングは、圧縮済であるところの出力データ・ストリ
ングを表現している。
本発明に従う方法によれば、STR内のシンボル毎に、圧
縮出力データ・ストリングが帰納的に生成されることが
わかろう。コードが生成されると、Cレジスタの左への
シフト、及びAレジスタの正規化が行われる。
本発明の方法は、以下の具体例を参照することによつ
て、最もよく理解されよう。
例 ソース・データ・ストリングは、5シンボル・アルフア
ベツトから導かれるものとする。この5シンボル・アル
フアベツトは、シンボルa0……a4から成り、それぞれ
a、b、c、d、eに合致するものとする。
各々の確率(2進数)は、以下の通りである。
p(0)=0.000001 p(1)=0.000011 p(2)=0.000110 p(3)=0.001010 p(4)=0.101100 このように、マルチ・システム・アルフアベツト中のシ
ンボルの数(m+1)は5に等しい。確率の合計が等し
い、つまり であることも確認されよう。
各シンボルについての累積確率は以下の通りである。
S(0)=0.000000 S(1)=0.000001 S(2)=0.000100 S(3)=0.001010 S(4)=0.010100 上述の好ましい実施例に従つて、6ビツトのAレジス
タ、Cレジスタを使つて、STR=b、c、e、d、a、
c、bなるソース・データ・ストリングを符号化するも
のとしよう。
次のような処理が行われる。
まず、Aレジスタが1.00000に、Cレジスタが.000000
に、それぞれ初期化される。小数点はわかつているもの
とするので、Aレジスタ、Cレジスタの内容は、それぞ
れ 100000、000000になる。
第1シンボルb(=a1)の符号化: K=1, i=1≠m p(1)=000011 S(1)=000001 C=0.0+1.0×0.000001=0.000001 結果: .000011 .000001 Aを正規化し、Cをシフトする: 1.10000 00000.100000 ここで、小数点は、Cレジスタの境界を意味している。
このように、小数点の左の5つの2進ビツト00000は、
結果の算術符号のうちの最初の5ビツトがCレジスタか
ら外へシフトしたことを示す一方、小数点の右側の6個
の2進ビツト100000は、Cレジスタの新たな内容を意味
している。ここで、A、C両レジスタの内容について
は、左へのシフトに対応してゼロが左詰めされる。該シ
ンボルはストリングSNRの終りではないので、処理は継
続する。
第2シンボルC(=a2)の符号化: K=1.1 i=2≠m p(2)=000110 S(2)=000100 C=0.100000+1.1×0.0001=0.10011 結果: .001001 00000.100110 Aを正規化し、Cをシフトする: 1.10100 00000100.10000 このシンボルはストリングSTRの終りではないので、処
理は継続する。
第3シンボルe(=a4)の符号化 K=1.001 i=4=m p(4)=101100 S(4)=010100 i=mなので、 A=1.00100−1.001×0.01010=0.110010 C=0.110000+1.001×0.01010=1.000110 C>1なので、先頭は1はキヤリー・オーバーを生じさ
せる。
結果: .110010 00000101.000110 Aを正規化し、Cはシフトする: 1.10010 000001010.001100 このシンボルはストリングSTRの終りではないので、処
理は継続する。
第4シンボルd(=a3)の符号化: K=1.1 i=3≠m p(3)=001010 S(3)=001010 C=0.001100+1.1×0.00101=0.011011 結果: .001111 000001010.011011 Aを正規化し、Cはシフトする: 1.11100 000001010011.011000 このシンボルはストリングSTRの終りではないので、処
理は継続する。
第5シンボルa(=a0)の符号化: K=1.1 i=0≠m p(0)=000001 S(0)=000000 C=0.011000+0.0=0.011000 結果: .000001 000001010011.011000 Aを正規化し、Cはシフトする: 1.00000 000001010011011000.000000 このシンボルはストリングSTRの終りではないので、処
理は継続する。
第6シンボルc(=a2)の符号化: K=1.0 i=2≠m p(2)=000110 S(2)=000100 C=0.0+1.0×0.000100=0.000100 結果: .000110 000001010011011000.000100 Aを正規化し、Cはシフトする: 1.10000 0000010100110110000001.000000 このシンボルはストリングSTRの終りではないので、処
理は継続する。
第7シンボルb(=a1)の符号化: K=1.1 i=1≠m p(1)=000011 S(1)=000001 C=0.0+1.1×0.000001=0.000001 結果: .000100 0000010100110110000001.000001 Aを正規化し、Cはシフトする: 1.00000 00000101001101100000010000.010000 これはストリングSTRの最後のシンボルなので、Cレジ
スタの内容を6位置分シフトし、下に示す完全な出力ス
トリングを出力する。
C=00000101001101100000010000010000 第2図は、第1図を参照して説明した方法のステツプ
(1)〜(4)の各々について、レジスタ間のデータの
流れを示す。符号化法のステツプ(1)では、各シンボ
ルaiが入力ストリングから順に抽出されるとともに、シ
ンボルaiが入力ストリングの最終ストリングか否かを表
示すべく、フラグ“END"が生成される。シンボルaiは確
率テーブルに入力される。このテーブルは、そこから確
率p(i)とS(i)を導くために、コンスタントに更
新されてよい。フラグ“i=m"も生成されて、シンボル
aiがソース・アルフアベツトの最終シンボルか否かを表
示する。
ステツプ(2)では、スケーリング・フアクタKを与え
るべく、Aレジスタの内容が切り捨てられる。
ステツプ(3)では、p(i)とS(i)の値が、それ
ぞれ、ステツプ(2)で求められた値Kと掛け合わさ
れ、値K*p(i)とK*S(i)が生成される。この
乗算では、単一のシフト・アンド・アド(シフト及び加
算)・オペレーシヨンが用いられる。K*p(i)とK
*S(i)は上述のように一次バツフアにストアされ
る。値AとK*S(i)は減算器に送られ、A−K*p
(i)なる値が出力される。同様に、値CとK*S
(i)は加算器に送られ、C+K*S(i)なる値が出
力される。減算器の出力A−K*S(i)と値K*p
(i)は、フラグ“i=m"とともに、選択ロジツク・ユ
ニツトに送られる。選択ユニツトからの出力は、i≠m
のとき、K*p(i)に等しく、i=mのとき、A−K
*S(i)に等しい。
最後に、ステツプ(4)では、シフト・コントロール・
ユニツトがAレジスタの内容が指定された範囲内に収ま
るまで、AとCのレジスタをシフトする。ストツプ・フ
ラグが生成されると、それによつてシフト・オペレーシ
ヨンがストツプする。ステツプ(1)で導かれた“END"
フラグはシフト・コントロール・ユニツトへ渡されるの
で、入力ストリングの最後では、シフト・コントロール
・ユニツトがCレジスタを6位置分シフトさせ(なぜな
ら、6ビツトのAレジスタ、Cレジスタを使つているか
ら)、Cレジスタを空にする。STOPまたはENDフラグに
応答してSHIFTコントロール・ユニツトがCレジスタを
シフトさせるのにつれて、Cレジスタから外へシフトさ
れたデータが連結され、出力ストリングを形成する。必
要ならば、第1図及び上述の例を参照して説明したよう
に、キヤリー・ビツトが出力ストリングに連結される。
上述した例では、常にAレジスタの内容が1.0から2.0の
範囲に収まるように、つまりAE〔1、2)となるよう
に、Aレジスタの正規化が行われている。しかし、Aレ
ジスタの正規化は、0.1と1.0(2進値)の範囲で行われ
てもよいし、あるいはその範囲を適宜2の倍数を掛けて
変更できることもすぐに理解できよう。このような範囲
が変わつても、同じアルゴリズムを使える。しかし、確
率を適宜2の倍数で割つたり、あるいは掛けたりするこ
とが必要になる。さらに、上述した特定の例では、ソー
ス・データ・ストリングSTRの第3シンボルを符号化す
るときにキヤリー・オーバーが生じる。上記の例では、
結果のコードがデコーダに送られるのは、ソース・デー
タ・ストリングSTRのすべてのシンボルが符号化されて
からである。明らかに、Cレジスタから外へシフトされ
内容を連結してストリングを形成してストアしておき、
STR全部が符号されてから圧縮データが生成されるや否
やそれをリアル・タイムで転送することが現実には望ま
しい。
本発明の別の実施例としては、Kを生じさせる近似を改
良した修正方法がある。前記実施例のようにAレジスタ
の1のうち上位3番目以後を切り捨てる代りに、上位4
番目以後の1を切り捨てても本発明の実施は可能であ
る。もつとも、前記実施例の場合に比べて、シフト・ア
ンド・アド・オペレーシヨンがもう1回必要になるとい
う代償を伴うことになる。明らかに、このような改良
は、さらに押し進めて行くことができ、その極限ではス
ケーリング・フアクタKがAレジスタの内容と全く等し
くなる。これは、近似を用いない算術符号化ということ
になる。しかしながら、上記図面を参照して説明した方
法によれば、Aレジスタの内容を近似しつつも、98%を
越える効率を達成できる。
本発明の原理に従つて導かれた圧縮出力データ・ストリ
ングの復号は、実質的に符号化の逆である。したがつ
て、まず、Aレジスタが1(1.000……)で満たされ、
Cレジスタは圧縮済ストリングR(comp)の最初の6個
のシンボルで満たされる。
次に、ソース・データ・ストリングSTRが相次いで復号
されていくわけだが、その際、C≧K*S(j)となる
jのうち、最大のものが決定される。ここで、K及びS
(j)は、符号器に関して説明したものと同じである。
Cは、Cレジスタの外でMSBの隣りに2進小数点を持つ
2進小数として解釈される。このようにしてjが決定さ
れたなら、現在シンボル、つまり現段階で出力されるシ
ンボルはajである。ここで、a0…amは、上述の定義どお
りのマルチ・アルフアベツトである。
続いて、Cレジスタの内容から、K*3(j)の値が引
き算される一方、Aレジスタの内容は、i=mか否かに
従つて修正される。J≠mならば、K*p(j)の値が
Aレジスタに挿入される。他方、j=mならば、Aレジ
スタの内容からK*S(j)が引き算される。
最後に、Aレジスタの内容が、所定の範囲に収まるま
で、つまりA∈[1,2)となるまで、Aレジスタ及びC
レジスタが所定の向きにシフトされる。Aレジスタの中
の空いた位置(ビツト)は、0で満たされ、Cレジスタ
の中の空いた位置は、圧縮済データ・ストリングR(co
mp)の中の残りのデジツトのうち、最上位から数えて、
空いた位置の数に該当するデジツトでもつて充填され
る。R(comp)が空になるまでプロセスは繰り返され、
そして完結する。
E.効果 本発明の圧縮符号化方法及び復号方法は、効率及び時間
の両方の点で優れている。
【図面の簡単な説明】
第1図は、本発明による符号化法のフロー・チヤートで
ある。 第2図は、第2図の方法が実行される際の、レジスタ間
でのデータの流れの説明図である。 第3図は、5つのシンボルについての確率及び累積確率
の例を示す説明図である。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭63−74324(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】(m+1)個のシンボル(mは自然数)が
    あり、各シンボルai(i=0,・・,m)について、その発
    生確率p(i)が与えられるとともに、 S(i)=p(0)+p(1)+・・・・+p(i−
    1) (i=0,・・,m),S(0)=0 なる式によって蓄積確率S(i)が与えられていると
    き、一対の夫々Wビット分の位置を有するAレジスタ及
    びCレジクタを用いて、含まれる各シンボルが上記(m
    +1)個のシンボルの何れかであるソース・データ・ス
    トリングを圧縮し、圧縮表現は該ソース・データ・スト
    リングの相次ぐシンボルに対応する相次ぐサイクルの中
    で帰納的に生成される圧縮符号化方法であって、 (a)Aレジスタ及びCレジスタ中に夫々の初期内容を
    与え、 ソース・データ・ストリング中のシンボルaiについて、 (b)Aレジスタの内容を取り出し、Aレジスタに含ま
    れる1であるビットのうち近似として用いるのに十分下
    位のものを切り捨てることによって、スケーリング・フ
    ァクタKを決定し、 (c)KとS(i)の積を求めてこれをAレジスタの内
    容に加算し、 (d)(d1)シンボルaiがシンボルamでないならば、K
    とp(i)の積を求めてこれをAレジスタの新たな内容
    とし、または、 (d2)シンボルaiがシンボルamであるならば、KとS
    (i)の積を求めてこれをAレジスタの内容から引き算
    をすることによって、 Aレジスタの内容を決定し、 (e)Aレジスタの内容を規格化し、該規格化のために
    Aレジスタがシフトされた方向であって且つシフトされ
    たビット数だけCレジスタをシフトし、Aレジスタ及び
    Cレジスタの空いた位置にはゼロを充填し、 (f)シンボルaiがソース・データ・ストリングの最終
    シンボルでなければ、上記ステップ(b)ないし(e)
    を繰り返し、シンボルaiがソース・データ・ストリング
    の最終シンボルならば、Cレジスタの内容を上記シフト
    された方向にW位置だけシフトする ステップを有する圧縮符号化方法。
  2. 【請求項2】上記請求項1の方法におけるものと同様に
    定義されたシンボルai、確率p(i)、累積確率S
    (i)(何れもi=0,・・,m)並びにAレジスタ及びC
    レジスタがあるときに、上記請求項1記載の方法により
    生成されたソース・データ・ストリングの圧縮表現を復
    号する方法であって、 (a)Cレジスタの内容を上記圧縮表現の最上位から数
    えてW桁までの内容に初期設定するとともに、Aレジス
    タに請求項1での初期内容を与え、 ソース・データ・ストリング中のシンボルaiを順次復号
    すべく、 (b)Aレジスタの内容を取り出し、Aレジスタに含ま
    れる1であるビットのうち近似として用いるのに十分下
    位のものを切り捨てることによって、スケーリング・フ
    アクタKを決定し、 (c)C≧K*S(j)となるようなjのうちの最大の
    ものを求め、ajをもって現段階で出力されるシンボルと
    なし、 (d)(d1)シンボルajがシンボルamでないならば、K
    とp(u)の積を求めてこれをAレジスタの新たな内容
    とし、または、 (d2)シンボルajがシンボルamであるならば、KとS
    (j)の積を求めてこれをAレジスタの内容から引き算
    することによって、 Aレジスタの内容を決定し、 (e)KとS(j)の積を求めてこれをCレジスタの内
    容から引き算し、 (f)Aレジスタの内容を規格化し、該規格化のために
    Aレジスタがシフトされた方向であって且つシフトされ
    たビット数だけCレジスタをシフトし、Aレジスタの空
    いた位置にはゼロを充填するとともに、Cレジスタの空
    いた位置には、上記圧縮表現の未処理部分の内容を、そ
    の最上位の桁から空いた位置の数と同じ桁数だけ取り出
    して充填し、上記圧縮表現の未処理部分がなくなるま
    で、上記ステップ(b)ないし(f)を繰り返す ステップを有する、復号方法。
JP1124579A 1988-07-05 1989-05-19 圧縮符号化方法及び復号方法 Expired - Lifetime JPH0744462B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IL86993A IL86993A (en) 1988-07-05 1988-07-05 Method of generating a compressed representation of a source data string
IL86993 1988-07-05

Publications (2)

Publication Number Publication Date
JPH0253329A JPH0253329A (ja) 1990-02-22
JPH0744462B2 true JPH0744462B2 (ja) 1995-05-15

Family

ID=11059020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1124579A Expired - Lifetime JPH0744462B2 (ja) 1988-07-05 1989-05-19 圧縮符号化方法及び復号方法

Country Status (6)

Country Link
US (1) US4989000A (ja)
EP (1) EP0350439B1 (ja)
JP (1) JPH0744462B2 (ja)
DE (1) DE68926270T2 (ja)
IL (1) IL86993A (ja)
SG (1) SG45378A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL91158A (en) * 1989-07-28 1993-01-31 Ibm Israel Method and system for arithmetic coding and decoding
DE4122169A1 (de) * 1991-07-04 1993-01-07 Bosch Gmbh Robert Einrichtung zur redundanzvermindernden codierung
KR950013404B1 (ko) * 1991-11-15 1995-11-08 미쯔비시덴끼 가부시끼가이샤 부호전송장치
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.
FR2703483B1 (fr) * 1993-03-29 1995-06-02 Digital Equipment Int Dispositif de mise à jour de la valeur de code dans la méthode du codage arithmétique.
US5418532A (en) * 1993-05-13 1995-05-23 Bell Communications Research, Inc. Method and system for efficient, multiplication-free arithmetic coding
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
US5572207A (en) * 1994-09-23 1996-11-05 International Business Machines Corporation Method and apparatus for numeric-to-string conversion
JP3302210B2 (ja) * 1995-02-10 2002-07-15 富士通株式会社 データ符号化/復号化方法及び装置
US5587710A (en) * 1995-03-24 1996-12-24 National Semiconductor Corporation Syntax based arithmetic coder and decoder
JP3367370B2 (ja) * 1997-03-14 2003-01-14 三菱電機株式会社 適応符号化方法
US6081213A (en) * 1997-03-26 2000-06-27 Sony Corporation Method and apparatus for arithmetic coding, method and apparatus for arithmetic decoding, and storage medium
US5808572A (en) * 1997-05-22 1998-09-15 National Science Council Method and apparatus for finite-length arithmetic coding
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
CN1249473A (zh) * 1998-09-30 2000-04-05 朗迅科技公司 无乘法的算术编码
US6318156B1 (en) * 1999-10-28 2001-11-20 Micro Motion, Inc. Multiphase flow measurement system
US7844579B2 (en) * 2000-03-09 2010-11-30 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
US20060173848A1 (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
US20060143253A1 (en) * 2000-03-09 2006-06-29 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
US6879988B2 (en) * 2000-03-09 2005-04-12 Pkware 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
US8959582B2 (en) 2000-03-09 2015-02-17 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
US20060155788A1 (en) * 2000-03-09 2006-07-13 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
US20060173847A1 (en) * 2000-03-09 2006-08-03 Pkware, Inc. System and method for manipulating and managing computer archive files
US7161507B2 (en) * 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
WO2007002468A2 (en) * 2005-06-23 2007-01-04 1Stworks Corporation Modeling for enumerative encoding
WO2007065352A1 (en) * 2005-12-05 2007-06-14 Huawei Technologies Co., Ltd. Method and apparatus for realizing arithmetic coding/ decoding
US8321326B2 (en) * 2009-09-15 2012-11-27 Auerbach Group Llc Method and system for enhancing the efficiency of a digitally communicated data exchange
US8380305B2 (en) * 2010-07-01 2013-02-19 DynaDx Corporation System and method for predicting successful defibrillation for ventricular fibrillation cardiac arrest
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US10499074B2 (en) 2017-01-09 2019-12-03 Qualcomm Incorporated Binary arithmetic coding with small tables or short-operand multiplications for video coding

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4122440A (en) * 1977-03-04 1978-10-24 International Business Machines Corporation Method and means for arithmetic string coding
US4286256A (en) * 1979-11-28 1981-08-25 International Business Machines Corporation Method and means for arithmetic coding utilizing a reduced number of operations
US4467317A (en) * 1981-03-30 1984-08-21 International Business Machines Corporation High-speed arithmetic compression coding using concurrent value updating
US4516246A (en) * 1982-02-26 1985-05-07 Prentice Corporation Data compression system
US4791403A (en) * 1985-12-04 1988-12-13 International Business Machines Corporation Log encoder/decorder system
US4652856A (en) * 1986-02-04 1987-03-24 International Business Machines Corporation Multiplication-free multi-alphabet arithmetic code

Also Published As

Publication number Publication date
SG45378A1 (en) 1998-01-16
EP0350439A2 (en) 1990-01-10
IL86993A (en) 1991-07-18
EP0350439B1 (en) 1996-04-17
US4989000A (en) 1991-01-29
JPH0253329A (ja) 1990-02-22
IL86993A0 (en) 1988-12-30
DE68926270T2 (de) 1996-10-10
DE68926270D1 (de) 1996-05-23
EP0350439A3 (en) 1992-01-15

Similar Documents

Publication Publication Date Title
JPH0744462B2 (ja) 圧縮符号化方法及び復号方法
US5546080A (en) Order-preserving, fast-decoding arithmetic coding arithmetic coding and compression method and apparatus
EP0231736B1 (en) Method and apparatus for arithmetic compression coding of binary numbers
US4905297A (en) Arithmetic coding encoder and decoder system
JP3459030B2 (ja) 符号化システム
RU2125765C1 (ru) Способ и устройство сжатия символов, стохастический кодер (варианты)
EP0260462B1 (en) Arithmetic coding for data compression/de-compression by selectively employed, diverse arithmetic coding encoders and decoders
US7161507B2 (en) Fast, practically optimal entropy coding
EP0443255B1 (en) Method and apparatus for carrying-over control in arithmetic entropy coding
US4286256A (en) Method and means for arithmetic coding utilizing a reduced number of operations
US6445314B1 (en) System and method for the decoding of variable length codes
US6043765A (en) Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders
EP0582907A2 (en) Data compression apparatus and method using matching string searching and Huffman encoding
KR20010006554A (ko) 무손실 데이터 압축을 위한 방법 및 그 장치
JP4179640B2 (ja) 情報信号の算術符号化及び復号
Nikara et al. Multiple-symbol parallel decoding for variable length codes
EP0260461B1 (en) Arithmetic coding encoding and decoding method
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
Mathpal et al. A research paper on lossless data compression techniques
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
Bloom New Techniques in Context Modeling and Arithmetic Encoding.
JP2004128619A (ja) 符号化方法
JP3083329B2 (ja) データ圧縮復元方式
Bassiouni et al. Software and hardware enhancement of arithmetic coding
JPH06152988A (ja) 可変長符号の復号化装置