JPH1032496A - 算術符号化装置 - Google Patents
算術符号化装置Info
- Publication number
- JPH1032496A JPH1032496A JP18794896A JP18794896A JPH1032496A JP H1032496 A JPH1032496 A JP H1032496A JP 18794896 A JP18794896 A JP 18794896A JP 18794896 A JP18794896 A JP 18794896A JP H1032496 A JPH1032496 A JP H1032496A
- Authority
- JP
- Japan
- Prior art keywords
- cumulative frequency
- frequency
- cumulative
- storage means
- updating
- 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.)
- Granted
Links
- 230000001186 cumulative effect Effects 0.000 claims abstract description 161
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 52
- 230000003044 adaptive effect Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 23
- 238000007906 compression Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000007796 conventional method Methods 0.000 description 6
- 238000010606 normalization Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】 適応的多値算術符号化において処理速度の高
速化を可能にする。 【解決手段】 累積頻度格納手段2は累積頻度の最大値
を2の整数巾でとる。この巾数を用いて、符号化手段5
は算術符号化で必要な除算をシフトに置き換える。出現
頻度格納手段2は入力データ中の各シンボルの頻度を計
測し、記録する。カウンタ3は入力データ中のシンボル
の数を計測し、累積頻度更新のタイミングを累積頻度更
新手段4に知らせる。累積頻度更新手段4は累積頻度格
納手段2と出現頻度格納手段1に格納されている情報か
ら新たな累積頻度を計算し、累積頻度格納手段2を更新
する。このとき、累積頻度更新手段4は累積頻度の最大
値を2の整数巾で保った形で更新処理を行う。
速化を可能にする。 【解決手段】 累積頻度格納手段2は累積頻度の最大値
を2の整数巾でとる。この巾数を用いて、符号化手段5
は算術符号化で必要な除算をシフトに置き換える。出現
頻度格納手段2は入力データ中の各シンボルの頻度を計
測し、記録する。カウンタ3は入力データ中のシンボル
の数を計測し、累積頻度更新のタイミングを累積頻度更
新手段4に知らせる。累積頻度更新手段4は累積頻度格
納手段2と出現頻度格納手段1に格納されている情報か
ら新たな累積頻度を計算し、累積頻度格納手段2を更新
する。このとき、累積頻度更新手段4は累積頻度の最大
値を2の整数巾で保った形で更新処理を行う。
Description
【0001】
【発明の属する技術分野】本発明は算術符号化装置に関
し、特に適応的かつ多値の算術符号化装置に関する。
し、特に適応的かつ多値の算術符号化装置に関する。
【0002】
【従来の技術】データ圧縮技術はデータの伝送、蓄積の
効率化のために不可欠の技術である。基本的には、よく
現れるシンボルには短い符号語を割り当て稀にしか現れ
ないシンボルには長い符号語を割り当てることで圧縮は
達成される。このような符号化方式として、ハフマン符
号、算術符号などが知られているが、算術符号は特に圧
縮率に優れた方式である。
効率化のために不可欠の技術である。基本的には、よく
現れるシンボルには短い符号語を割り当て稀にしか現れ
ないシンボルには長い符号語を割り当てることで圧縮は
達成される。このような符号化方式として、ハフマン符
号、算術符号などが知られているが、算術符号は特に圧
縮率に優れた方式である。
【0003】データ中のシンボルを{0,1,2,…,
A−1}とし、シンボルkの現れる確率をp(k)とす
る。算術符号化はデータに対して[0,1)内の区間を
対応させることで符号化を行う。符号化処理は1シンボ
ルずつ逐次的に行うことができる。具体的にはデータa
(0)a(1)a(2)・・・a(n−1)に対して次
の手順で符号化を行う。 1.初期状態I(0)=[0,1)(0から1までの区
間) 2.j=0,1,…,n−1に対して次の手順を繰り返
す:I(j)をp(0):p(1):・・・:p(A−
1)の比に分割し、a(j)に対応する区間(p(a
(j))の比率に対応する区間)を新たにI(j+1)
とする。 3.最終的に得られた区間I(n)の1点を二進列で表
し、符号語として出力する。
A−1}とし、シンボルkの現れる確率をp(k)とす
る。算術符号化はデータに対して[0,1)内の区間を
対応させることで符号化を行う。符号化処理は1シンボ
ルずつ逐次的に行うことができる。具体的にはデータa
(0)a(1)a(2)・・・a(n−1)に対して次
の手順で符号化を行う。 1.初期状態I(0)=[0,1)(0から1までの区
間) 2.j=0,1,…,n−1に対して次の手順を繰り返
す:I(j)をp(0):p(1):・・・:p(A−
1)の比に分割し、a(j)に対応する区間(p(a
(j))の比率に対応する区間)を新たにI(j+1)
とする。 3.最終的に得られた区間I(n)の1点を二進列で表
し、符号語として出力する。
【0004】区間I(n)の大きさはp(a(0)) *
p(a(1))* ・・・ *p(a(n−1))であり、
この区間の1点を他の区間と識別できるようにするため
には、ほぼ−log(p(a(0)) *p(a(1))
* ・・・ *p(a(n−1)))ビットで表せばよい。
‘* ’は乗算を表す。データの各文字が独立に生起して
いるならばp(a(0) *a(1)* ・・・ *a(n−
1))=p(a(0)) *p(a(1))* ・・・ *p
(a(n−1))となり、−log(p(a(0) *p
(a(1))* ・・・ *(a(n−1))ビットは情報
理論的には最良の符号長である。よって算術符号は原理
的には最良の符号化方式となる。
p(a(1))* ・・・ *p(a(n−1))であり、
この区間の1点を他の区間と識別できるようにするため
には、ほぼ−log(p(a(0)) *p(a(1))
* ・・・ *p(a(n−1)))ビットで表せばよい。
‘* ’は乗算を表す。データの各文字が独立に生起して
いるならばp(a(0) *a(1)* ・・・ *a(n−
1))=p(a(0)) *p(a(1))* ・・・ *p
(a(n−1))となり、−log(p(a(0) *p
(a(1))* ・・・ *(a(n−1))ビットは情報
理論的には最良の符号長である。よって算術符号は原理
的には最良の符号化方式となる。
【0005】以上に述べた方法はインプリメント上二つ
の問題がある。第1に、一般にシンボルの現れる確率は
事前には分からないということである。第2に区間を順
次分割していくときの計算精度の問題である。高い計算
精度で符号化を行おうとすると、非常に高い計算コスト
となり、圧縮速度が大きく劣化する。
の問題がある。第1に、一般にシンボルの現れる確率は
事前には分からないということである。第2に区間を順
次分割していくときの計算精度の問題である。高い計算
精度で符号化を行おうとすると、非常に高い計算コスト
となり、圧縮速度が大きく劣化する。
【0006】まず、第1の問題に対しては、図8に示す
ように予測手段51を設けることにより、今までのデー
タの統計から動的に確率を求める方法が考案されてき
た。符号化手段50は予測手段から得られる確率に基づ
いて符号化処理(区間の算出)を行う。復号手段52は
復元データに基づいて予測手段53が供給する確率に基
づいて復元を行うことによって、正しい処理を行うこと
ができる。基本的には予測手段51はデータの過去の頻
度に基づいて累積頻度を計算し、符号化手段50に供給
する。
ように予測手段51を設けることにより、今までのデー
タの統計から動的に確率を求める方法が考案されてき
た。符号化手段50は予測手段から得られる確率に基づ
いて符号化処理(区間の算出)を行う。復号手段52は
復元データに基づいて予測手段53が供給する確率に基
づいて復元を行うことによって、正しい処理を行うこと
ができる。基本的には予測手段51はデータの過去の頻
度に基づいて累積頻度を計算し、符号化手段50に供給
する。
【0007】一方、第2の問題に対しては、区間の計算
の精度を劣化させることで解決を試みる努力がなされて
きた。
の精度を劣化させることで解決を試みる努力がなされて
きた。
【0008】二値の場合にはこれらの問題は単純化さ
れ、Qコーダーと呼ばれる有効な方式が提案されてい
る。これは「1988年11月、アイ・ビー・エム・ジ
ャーナル・オブ・リサーチ・アンド・デヴェロップメン
ト、第32巻、第6号、717〜726頁(IBM J
OURNAL OF RESEARCH AND DE
VELOPMENT,VOL.32,NO.6,NOV
EMBER 1988,PP.717−726)に詳述
されている。この方式は二値画像圧縮のITU勧告であ
るJBIGなどで利用されている。
れ、Qコーダーと呼ばれる有効な方式が提案されてい
る。これは「1988年11月、アイ・ビー・エム・ジ
ャーナル・オブ・リサーチ・アンド・デヴェロップメン
ト、第32巻、第6号、717〜726頁(IBM J
OURNAL OF RESEARCH AND DE
VELOPMENT,VOL.32,NO.6,NOV
EMBER 1988,PP.717−726)に詳述
されている。この方式は二値画像圧縮のITU勧告であ
るJBIGなどで利用されている。
【0009】しかし、多値データは多値のまま符号化し
た方が効率良く処理が行える。計算機上のデータはバイ
ト(8ビット)単位で扱うことが多く、バイト単位で圧
縮を行うことはごく自然な処理であり、特にソフトウェ
アでのインプリメントでは二値の場合よりも高速化が可
能となる。多値算術符号は「1987年7月、コミュニ
ケーションズ・オブ・エー・シー・エム、第30巻、第
6号、520〜540頁(COMMUNICATION
S OF ACM,VOL.30,NO.6,PP.5
20−540)」に述べられている方法が最も洗練され
た方式の一つである(以下、“CACM”と呼ぶことに
する)。CACMは区間計算を固定桁数の整数演算で行
えるようにした。以下、CACMについて説明を行う。
た方が効率良く処理が行える。計算機上のデータはバイ
ト(8ビット)単位で扱うことが多く、バイト単位で圧
縮を行うことはごく自然な処理であり、特にソフトウェ
アでのインプリメントでは二値の場合よりも高速化が可
能となる。多値算術符号は「1987年7月、コミュニ
ケーションズ・オブ・エー・シー・エム、第30巻、第
6号、520〜540頁(COMMUNICATION
S OF ACM,VOL.30,NO.6,PP.5
20−540)」に述べられている方法が最も洗練され
た方式の一つである(以下、“CACM”と呼ぶことに
する)。CACMは区間計算を固定桁数の整数演算で行
えるようにした。以下、CACMについて説明を行う。
【0010】シンボル{0,1,・・,A−1}に対し
て、頻度の配列Fを用意する。F(k)はkに対する頻
度を表す。頻度は全て整数値でとる。また、累積頻度の
配列Cを用意する。C(0)=0として、a=1,・
・,A−1,Aに対する累積頻度は次の式で定義され
る。
て、頻度の配列Fを用意する。F(k)はkに対する頻
度を表す。頻度は全て整数値でとる。また、累積頻度の
配列Cを用意する。C(0)=0として、a=1,・
・,A−1,Aに対する累積頻度は次の式で定義され
る。
【0011】 C(a)=F(0)+F(1)+・・・F(a−1). M=C(A)とする。Mはシンボルの頻度の総計に対応
する。Nを正の整数とする。算術符号は原理的には区間
は[0,1)を分割していくが、CACMでは[0,
N)内の区間を分割する処理を行うことで符号化が進
む。これは[0,1)を有効桁log(N)ビット(l
ogの底は2)で見ていることと同一にもなる。Nは通
常2の巾でとる。符号化区間は、その上端を表すupp
er、その下端を表すlower、その幅を表すran
geを用いて表される。この三つの値は整数値で単純に
次の関係を満たす。
する。Nを正の整数とする。算術符号は原理的には区間
は[0,1)を分割していくが、CACMでは[0,
N)内の区間を分割する処理を行うことで符号化が進
む。これは[0,1)を有効桁log(N)ビット(l
ogの底は2)で見ていることと同一にもなる。Nは通
常2の巾でとる。符号化区間は、その上端を表すupp
er、その下端を表すlower、その幅を表すran
geを用いて表される。この三つの値は整数値で単純に
次の関係を満たす。
【0012】 range=upper−lower+1. CACMでも、通常の算術符号と同様に現在の区間をF
(0),F(1),・・・,F(a−1)の比に分割
し、符号化しているシンボルに対応している区間を新た
な区間とすることを処理の基本とする。実際には符号化
しているシンボルに対応する区間さえ求めればよい。こ
れは累積頻度Cを用いて計算できる。図8の51,53
に示されている予測手段はこの累積頻度を符号化手段、
復号手段に供給する装置であると考えて良い。
(0),F(1),・・・,F(a−1)の比に分割
し、符号化しているシンボルに対応している区間を新た
な区間とすることを処理の基本とする。実際には符号化
しているシンボルに対応する区間さえ求めればよい。こ
れは累積頻度Cを用いて計算できる。図8の51,53
に示されている予測手段はこの累積頻度を符号化手段、
復号手段に供給する装置であると考えて良い。
【0013】図9はCACMにおける処理の流れを示す
フローチャートである。図9は1シンボルに対する処理
の流れを示したのみで、実際には入力データが終わるま
でこの処理が繰り返される。
フローチャートである。図9は1シンボルに対する処理
の流れを示したのみで、実際には入力データが終わるま
でこの処理が繰り返される。
【0014】入力データを読み込む(ステップ60)。
これをaとする。
これをaとする。
【0015】aに対応する区間を求める(ステップ6
1)。
1)。
【0016】upper←lower+[range*
C(a+1)/M]−1, lower←lower+[range*C(a)/
M]. ここで[X]はxを越えない最大の整数を表す。図示す
ると、図10のように区間が縮小される。新たなran
geの大きさは、 range*(C(a+1)−C(a))/M=ran
ge*F(a)/M, にほぼ等しく、現在のrangeのF(a)/M倍の区
間を新たな区間としている。
C(a+1)/M]−1, lower←lower+[range*C(a)/
M]. ここで[X]はxを越えない最大の整数を表す。図示す
ると、図10のように区間が縮小される。新たなran
geの大きさは、 range*(C(a+1)−C(a))/M=ran
ge*F(a)/M, にほぼ等しく、現在のrangeのF(a)/M倍の区
間を新たな区間としている。
【0017】新しい区間が確定したら、必要に応じてビ
ット出力と区間の正規化処理を行う(ステップ62)。
lowerとupperがともにN/2より大である場
合は、その区間を縮小してもN/2より上にある。よっ
て符号語の次のビットは1と確定される。逆に、low
er,upperともにN/2より小である場合、その
区間を縮小してもN/2より下になり、符号語の次のビ
ットは0と確定される。このようにしてビット出力(符
号語出力)が逐次行われる。新しい区間のrange
は、次のシンボルに対してステップ61の処理を行った
ときに、シンボルに対応する区間の大きさがすべて1以
上になるようにしなければならない。そうでない場合に
は一つの区間に複数のシンボルが対応し、正しく復元で
きなくなる。よってrangeは十分な大きさを保たな
ければならない。この処理が正規化の処理である。ビッ
ト出力と正規化は次の三つの処理に分類される。 (a)upper,lowerともにN/2より大きい upper←(upper−N/2)*2+1, lower←(lower−N/2)*2. (b)upper,lowerはともにN/2より小さ
い upper←upper*2, lower←lower*2. (c)それ以外の場合 upper←(upper−N/4)*2+1, lower←(lower−N/4)*2+1. 最後に頻度の配列F、累積頻度の配列Cの更新を行う
(ステップ63)。これは図8では予測手段51の範疇
に入る処理である。CACMではシンボルaの符号化が
終了した後、次のシンボルの符号化に備えて F(a)←F(a)+v, と頻度を更新する。vの値は1〜32がとられる。Fの
値の変化に応じてCも変更する。
ット出力と区間の正規化処理を行う(ステップ62)。
lowerとupperがともにN/2より大である場
合は、その区間を縮小してもN/2より上にある。よっ
て符号語の次のビットは1と確定される。逆に、low
er,upperともにN/2より小である場合、その
区間を縮小してもN/2より下になり、符号語の次のビ
ットは0と確定される。このようにしてビット出力(符
号語出力)が逐次行われる。新しい区間のrange
は、次のシンボルに対してステップ61の処理を行った
ときに、シンボルに対応する区間の大きさがすべて1以
上になるようにしなければならない。そうでない場合に
は一つの区間に複数のシンボルが対応し、正しく復元で
きなくなる。よってrangeは十分な大きさを保たな
ければならない。この処理が正規化の処理である。ビッ
ト出力と正規化は次の三つの処理に分類される。 (a)upper,lowerともにN/2より大きい upper←(upper−N/2)*2+1, lower←(lower−N/2)*2. (b)upper,lowerはともにN/2より小さ
い upper←upper*2, lower←lower*2. (c)それ以外の場合 upper←(upper−N/4)*2+1, lower←(lower−N/4)*2+1. 最後に頻度の配列F、累積頻度の配列Cの更新を行う
(ステップ63)。これは図8では予測手段51の範疇
に入る処理である。CACMではシンボルaの符号化が
終了した後、次のシンボルの符号化に備えて F(a)←F(a)+v, と頻度を更新する。vの値は1〜32がとられる。Fの
値の変化に応じてCも変更する。
【0018】
【発明が解決しようとする課題】CACMでは図9のス
テップ61に示したように、1シンボル処理する毎に乗
算と除算を行う必要がある。このことは算術符号の圧縮
速度がハフマン符号に比べて劣ることの要因の一つとな
っている。その中でも特に除算の影響は大きい。
テップ61に示したように、1シンボル処理する毎に乗
算と除算を行う必要がある。このことは算術符号の圧縮
速度がハフマン符号に比べて劣ることの要因の一つとな
っている。その中でも特に除算の影響は大きい。
【0019】また、多値算術符号化では予測手段51に
おける処理である、図9のステップ63の累積頻度更新
にかかる時間も問題になる。図11は累積頻度格納手段
の変遷を例示する。この図を用いて累積頻度の更新にか
かるコストを説明する。
おける処理である、図9のステップ63の累積頻度更新
にかかる時間も問題になる。図11は累積頻度格納手段
の変遷を例示する。この図を用いて累積頻度の更新にか
かるコストを説明する。
【0020】図11はシンボルが{0,1,2,3,
4}からなる場合の例である。累積頻度配列70は各シ
ンボルに対する累積頻度が0、2、6、8、9、16の
状況である。‘(5)’に対応する要素‘16’は各シ
ンボルの頻度の総計である。この時、各シンボルに対す
る頻度は2、4、2、1、7となる。
4}からなる場合の例である。累積頻度配列70は各シ
ンボルに対する累積頻度が0、2、6、8、9、16の
状況である。‘(5)’に対応する要素‘16’は各シ
ンボルの頻度の総計である。この時、各シンボルに対す
る頻度は2、4、2、1、7となる。
【0021】ここで、CACMでは入力0の符号化処理
を終えるとF(0)←F(0)+1(v=1とする)と
なり、それにつれて累積頻度の更新が行われ、71のよ
うになる。つまり、シンボル1、2、3、4、(5)に
対する累積頻度(図10の71で網かけの部分)を1ず
つインクリメントしなければならない。以下同様に、入
力シンボルを処理する度に72,73のように累積頻度
配列を更新しなければならない。つまり、最悪の場合で
入力データの1シンボルにつきA個のシンボル(Aはシ
ンボルの総数)に対する累積頻度を更新しなければなら
ない。これは1シンボル=1バイトの場合(シンボル数
256)でも非常に大きな時間となる。
を終えるとF(0)←F(0)+1(v=1とする)と
なり、それにつれて累積頻度の更新が行われ、71のよ
うになる。つまり、シンボル1、2、3、4、(5)に
対する累積頻度(図10の71で網かけの部分)を1ず
つインクリメントしなければならない。以下同様に、入
力シンボルを処理する度に72,73のように累積頻度
配列を更新しなければならない。つまり、最悪の場合で
入力データの1シンボルにつきA個のシンボル(Aはシ
ンボルの総数)に対する累積頻度を更新しなければなら
ない。これは1シンボル=1バイトの場合(シンボル数
256)でも非常に大きな時間となる。
【0022】これに対し、累積頻度の配列に構造を持た
せることで、更新処理にかかる時間を削減する研究が行
われてきた。その中でも最も有力なのが、「1994年
3月、ソフトウェア−プラクティス・アンド・エクスペ
リエンス、第24巻、第3号、327〜336頁(SO
FTWARE−PRACTICE AND EXPER
IENCE,VOL.32,NO.3,PP.327−
336.)」に示されている方法(BIT法と呼ばれ
る)である。BIT法を用いても、シンボル数をAとす
ると符号化と累積頻度更新のため、1シンボル当りlo
g(A)回程度の累積頻度格納手段の要素にアクセスす
る必要がある(logの底は2)。
せることで、更新処理にかかる時間を削減する研究が行
われてきた。その中でも最も有力なのが、「1994年
3月、ソフトウェア−プラクティス・アンド・エクスペ
リエンス、第24巻、第3号、327〜336頁(SO
FTWARE−PRACTICE AND EXPER
IENCE,VOL.32,NO.3,PP.327−
336.)」に示されている方法(BIT法と呼ばれ
る)である。BIT法を用いても、シンボル数をAとす
ると符号化と累積頻度更新のため、1シンボル当りlo
g(A)回程度の累積頻度格納手段の要素にアクセスす
る必要がある(logの底は2)。
【0023】一方、乗算・除算不要の多値算術符号は
「1988年1月、アイ・イー・イー・トランザクショ
ン・オブ・コミュニケーション、第37巻、第1号、9
3〜98頁(IEEE TRANSACTIONS O
F COMMUNICATIONS,VOL.37,N
O.1,JANUARY,1988,PP.93−9
8.)」に提案されてはいる。しかし、算術符号化は動
的に頻度を更新しながら圧縮を行うことによって初めて
その真価が発揮されるが、この文献では累積頻度更新手
法に関しては全く触れていない。上記のBIT法を累積
頻度更新手法に用いた場合には、符号化におけるロスが
大きく、圧縮率の劣化が大きいものとなる。この文献に
示されている方式と相性のよい累積頻度更新手法は上記
のCACMの文献で述べられているが、この方式は最悪
の場合には1シンボル当りA回累積頻度格納手段の要素
にアクセスする必要がある。
「1988年1月、アイ・イー・イー・トランザクショ
ン・オブ・コミュニケーション、第37巻、第1号、9
3〜98頁(IEEE TRANSACTIONS O
F COMMUNICATIONS,VOL.37,N
O.1,JANUARY,1988,PP.93−9
8.)」に提案されてはいる。しかし、算術符号化は動
的に頻度を更新しながら圧縮を行うことによって初めて
その真価が発揮されるが、この文献では累積頻度更新手
法に関しては全く触れていない。上記のBIT法を累積
頻度更新手法に用いた場合には、符号化におけるロスが
大きく、圧縮率の劣化が大きいものとなる。この文献に
示されている方式と相性のよい累積頻度更新手法は上記
のCACMの文献で述べられているが、この方式は最悪
の場合には1シンボル当りA回累積頻度格納手段の要素
にアクセスする必要がある。
【0024】本発明は、適応的多値算術符号化方式に対
して、除算の回避により高速化を図るとともに、その際
の有効な累積頻度更新方式を与えることを目的とする。
して、除算の回避により高速化を図るとともに、その際
の有効な累積頻度更新方式を与えることを目的とする。
【0025】
【課題を解決するための手段】本発明の累積頻度格納手
段(図1の2)は常にその要素の最大値を2の整数巾で
とる。累積頻度更新手段(図1の4)は累積頻度格納手
段の最大値を2の整数巾に保つ形で更新処理を行う。
段(図1の2)は常にその要素の最大値を2の整数巾で
とる。累積頻度更新手段(図1の4)は累積頻度格納手
段の最大値を2の整数巾に保つ形で更新処理を行う。
【0026】累積頻度の最大値を一定に保ったまま更新
処理を行う場合には、1シンボル処理する度に更新処理
を行うのではなく、出現頻度格納手段(図1の1)を設
け、入力データのブロック単位での頻度を計測して、そ
の頻度を元に累積頻度を更新する。
処理を行う場合には、1シンボル処理する度に更新処理
を行うのではなく、出現頻度格納手段(図1の1)を設
け、入力データのブロック単位での頻度を計測して、そ
の頻度を元に累積頻度を更新する。
【0027】累積頻度更新のタイミングを図るために、
カウンタ(図1の3)を用意し、所定の数(ブロックの
大きさ)のシンボルの符号化処理を終えたかどうかを判
定する。
カウンタ(図1の3)を用意し、所定の数(ブロックの
大きさ)のシンボルの符号化処理を終えたかどうかを判
定する。
【0028】累積頻度の最大値を2の整数巾に保つこと
により、従来の算術符号化で必要になっていた除算をビ
ットシフトに置き換えることができる。
により、従来の算術符号化で必要になっていた除算をビ
ットシフトに置き換えることができる。
【0029】1シンボルずつ累積頻度を更新する方法で
は累積頻度の最大値を一定に保つことは困難であるが、
入力データのブロック単位での頻度を計測して、その頻
度を元に累積頻度を更新することにより容易に行うこと
ができる。ブロックの大きさをある程度大きくすれば、
従来に比べて入力データ1シンボル当りの更新にかかる
時間を短縮することも可能となる。また、この際、従来
の累積頻度格納手段で用いられていた、木構造等による
複雑なデータ構造は不要となる。
は累積頻度の最大値を一定に保つことは困難であるが、
入力データのブロック単位での頻度を計測して、その頻
度を元に累積頻度を更新することにより容易に行うこと
ができる。ブロックの大きさをある程度大きくすれば、
従来に比べて入力データ1シンボル当りの更新にかかる
時間を短縮することも可能となる。また、この際、従来
の累積頻度格納手段で用いられていた、木構造等による
複雑なデータ構造は不要となる。
【0030】
【発明の実施の形態】本発明の実施の形態について図面
を参照して詳細に説明する。
を参照して詳細に説明する。
【0031】図1は本発明の実施の形態の一例を示すブ
ロック図で、出現頻度格納手段1、累積頻度格納手段
2、カウンタ3、累積頻度更新手段4、符号化手段5か
ら成る。符号化手段を除いた部分は図8の予測手段51
に相当する。
ロック図で、出現頻度格納手段1、累積頻度格納手段
2、カウンタ3、累積頻度更新手段4、符号化手段5か
ら成る。符号化手段を除いた部分は図8の予測手段51
に相当する。
【0032】出現頻度格納手段1は、入力データ中に各
シンボルが現れた回数を記録する。各シンボルに対応す
るエントリを持つ配列などで構成され、各エントリは対
応する頻度を計測し、記録する。
シンボルが現れた回数を記録する。各シンボルに対応す
るエントリを持つ配列などで構成され、各エントリは対
応する頻度を計測し、記録する。
【0033】累積頻度格納手段2は、符号化に必要な各
シンボルの累積頻度を記録する。各シンボルに対応する
エントリを持つ配列などで構成され、各エントリは対応
する累積頻度を保持する。累積頻度の最大値は2の整数
巾の値になるようにしてある。
シンボルの累積頻度を記録する。各シンボルに対応する
エントリを持つ配列などで構成され、各エントリは対応
する累積頻度を保持する。累積頻度の最大値は2の整数
巾の値になるようにしてある。
【0034】カウンタ3は、入力データ中のシンボル数
をカウントする。
をカウントする。
【0035】累積頻度更新手段4はカウンタ3の状況に
基づいて、出現頻度格納手段1と累積頻度格納手段2に
記録されている値から新たな累積頻度を作成して、累積
頻度格納手段2の内容を更新する。このとき、累積頻度
の最大値は2の整数巾になるように更新処理を行う。
基づいて、出現頻度格納手段1と累積頻度格納手段2に
記録されている値から新たな累積頻度を作成して、累積
頻度格納手段2の内容を更新する。このとき、累積頻度
の最大値は2の整数巾になるように更新処理を行う。
【0036】符号化手段5は符号化するシンボルに対応
する累積頻度情報に基づいて、現在の区間の縮小とそれ
に伴う区間の正規化処理や圧縮データ出力を行い、実際
に圧縮データを生成する。累積頻度の配列をCとしたと
き、シンボルaを符号化するときに累積頻度格納手段2
から符号化手段5に与えられる累積頻度情報はC
(a)、C(a+1)とシンボルの頻度の合計に対する
ビット数(従来方式ではシンボルの頻度の合計の値その
もの)となる。
する累積頻度情報に基づいて、現在の区間の縮小とそれ
に伴う区間の正規化処理や圧縮データ出力を行い、実際
に圧縮データを生成する。累積頻度の配列をCとしたと
き、シンボルaを符号化するときに累積頻度格納手段2
から符号化手段5に与えられる累積頻度情報はC
(a)、C(a+1)とシンボルの頻度の合計に対する
ビット数(従来方式ではシンボルの頻度の合計の値その
もの)となる。
【0037】次に、図1、図2および図3を参照して本
発明の動作について説明する。図2は本発明の動作を示
すフローチャートであり、図3は本発明の符号化による
区間の縮小の様子を示した図である。図1の出現頻度格
納手段1に対応する配列をF、累積頻度格納手段2に対
応する配列をCとする。シンボル数をAとし、M=C
(A)を2のm乗(m:整数)とする。算術符号化に使
用する区間[0,N)とする。また、図1のカウンタ3
のカウント値を格納するレジスタをSとする。図2は1
シンボルの処理の流れを示すもので、実際の圧縮処理に
おいてはこの操作を繰り返す。
発明の動作について説明する。図2は本発明の動作を示
すフローチャートであり、図3は本発明の符号化による
区間の縮小の様子を示した図である。図1の出現頻度格
納手段1に対応する配列をF、累積頻度格納手段2に対
応する配列をCとする。シンボル数をAとし、M=C
(A)を2のm乗(m:整数)とする。算術符号化に使
用する区間[0,N)とする。また、図1のカウンタ3
のカウント値を格納するレジスタをSとする。図2は1
シンボルの処理の流れを示すもので、実際の圧縮処理に
おいてはこの操作を繰り返す。
【0038】入力データを読み込む(ステップ10)。
これをaとする。入力データは一度バッファに格納され
ることもある。
これをaとする。入力データは一度バッファに格納され
ることもある。
【0039】aに対応する区間を求める(ステップ1
1)。これは次の操作で行われる: upper←lower+[range*C(a+1)
>>m]−1, lower←lower+[range*C(a)>>
m]. ここで[X]はxを越えない最大の整数を表し、x*y
はxとyの乗算を表す。また、x>>mはxをmビット
右へ(小さい方へ)シフトすることを示す。図3はこの
処理によりどのように区間が縮小されるのかを示してい
る。
1)。これは次の操作で行われる: upper←lower+[range*C(a+1)
>>m]−1, lower←lower+[range*C(a)>>
m]. ここで[X]はxを越えない最大の整数を表し、x*y
はxとyの乗算を表す。また、x>>mはxをmビット
右へ(小さい方へ)シフトすることを示す。図3はこの
処理によりどのように区間が縮小されるのかを示してい
る。
【0040】新しい区間が確定したら、必要に応じてビ
ット出力と区間の正規化処理を行う(ステップ12)。
これは従来の算術符号化における処理と同様に行うこと
ができる。
ット出力と区間の正規化処理を行う(ステップ12)。
これは従来の算術符号化における処理と同様に行うこと
ができる。
【0041】aの出現頻度F(a)とカウンタSを更新
する(ステップ13); F(a)←F(a)+1, S←S+1. Sが予め定められた閾値Tに達したかどうかを判別する
(ステップ14)。Tは累積頻度更新処理の間隔を決め
るパラメータである。
する(ステップ13); F(a)←F(a)+1, S←S+1. Sが予め定められた閾値Tに達したかどうかを判別する
(ステップ14)。Tは累積頻度更新処理の間隔を決め
るパラメータである。
【0042】Sが閾値Tに達したら、累積頻度更新処理
を行う(ステップ15)。CとFから計算できる関数G
を用いて、配列Cの値を書き直す。Sと配列Fのすべて
の要素を0にリセットする。本発明では、累積頻度が更
新されるまでの間は、同一の累積頻度を用いて符号化が
行われる。
を行う(ステップ15)。CとFから計算できる関数G
を用いて、配列Cの値を書き直す。Sと配列Fのすべて
の要素を0にリセットする。本発明では、累積頻度が更
新されるまでの間は、同一の累積頻度を用いて符号化が
行われる。
【0043】全体の処理の流れと累積頻度更新の関係に
ついて図4に示す例を用いて詳細に説明する。図4は累
積頻度更新の過程を示すブロック図で、入力データ2
0、累積頻度格納手段21、22、出現頻度格納手段2
3、累積頻度更新手段24から成る。
ついて図4に示す例を用いて詳細に説明する。図4は累
積頻度更新の過程を示すブロック図で、入力データ2
0、累積頻度格納手段21、22、出現頻度格納手段2
3、累積頻度更新手段24から成る。
【0044】入力データ20は{0,1,2,3,4}
の4つのシンボルから成り、左から右の順序で並んでい
る。入力データは幾つかのブロックに分けられ、ブロッ
クの大きさ(シンボル数)はステップ14の閾値Tの大
きさに相当する。
の4つのシンボルから成り、左から右の順序で並んでい
る。入力データは幾つかのブロックに分けられ、ブロッ
クの大きさ(シンボル数)はステップ14の閾値Tの大
きさに相当する。
【0045】累積頻度格納手段21は入力データ20の
ブロック(n)の先頭における累積頻度の状態を表す配
列である。ブロック(n−1)までのデータを符号化し
た時点で、累積頻度が21のような状態になったとして
いる。ブロック(n)のデータはこの累積頻度を用いて
符号化する。累積頻度の最大値を16(2の整数巾)に
設定しているため、符号化における除算はビットシフト
に置き換えることができる。
ブロック(n)の先頭における累積頻度の状態を表す配
列である。ブロック(n−1)までのデータを符号化し
た時点で、累積頻度が21のような状態になったとして
いる。ブロック(n)のデータはこの累積頻度を用いて
符号化する。累積頻度の最大値を16(2の整数巾)に
設定しているため、符号化における除算はビットシフト
に置き換えることができる。
【0046】出現頻度格納手段は、ブロック(n)の先
頭では各要素ともに0にリセットされており、ブロック
(n)のシンボルを符号化する度に対応する要素が1イ
ンクリメントされる(図2のステップ13に相当)。図
5の出現頻度格納手段23はブロック(n)の符号化終
了時の出現頻度を示している。つまり、23の各要素は
ブロック(n)において各シンボルが現れた回数を示し
ている。
頭では各要素ともに0にリセットされており、ブロック
(n)のシンボルを符号化する度に対応する要素が1イ
ンクリメントされる(図2のステップ13に相当)。図
5の出現頻度格納手段23はブロック(n)の符号化終
了時の出現頻度を示している。つまり、23の各要素は
ブロック(n)において各シンボルが現れた回数を示し
ている。
【0047】ブロック(n)の符号化を終了した時点
(ステップ14に相当)で、出現頻度格納手段23と累
積頻度格納手段21に格納されている値を用いて累積頻
度更新手段24は累積頻度を更新する(ステップ15に
相当)。図5では、累積頻度格納手段21から計算され
る頻度(f(a)=C(a+1)−C(a))と出現頻
度格納手段23の値との平均値をシンボルの頻度とし、
その頻度に基づいて累積頻度を計算している。
(ステップ14に相当)で、出現頻度格納手段23と累
積頻度格納手段21に格納されている値を用いて累積頻
度更新手段24は累積頻度を更新する(ステップ15に
相当)。図5では、累積頻度格納手段21から計算され
る頻度(f(a)=C(a+1)−C(a))と出現頻
度格納手段23の値との平均値をシンボルの頻度とし、
その頻度に基づいて累積頻度を計算している。
【0048】累積頻度格納手段22は更新された累積頻
度を示している。このとき、累積頻度の最大値は16に
保たれていることに注意する。ブロック(n+1)は累
積頻度格納手段22を用いて符号化を行う。
度を示している。このとき、累積頻度の最大値は16に
保たれていることに注意する。ブロック(n+1)は累
積頻度格納手段22を用いて符号化を行う。
【0049】図5は累積頻度更新手段4の動作例(図2
のステップ15の例)を具体的に示すフローチャートで
ある。出現頻度格納手段1、累積頻度格納手段2から得
られる頻度に対して重みづけ和をとり、累積頻度の最大
値はそのままになるようにしている。この処理において
も、整数値演算のみで行い、重みづけに必要な除算も重
みの和を2の整数巾でとることによりシフトに回避する
ことを可能にしている。
のステップ15の例)を具体的に示すフローチャートで
ある。出現頻度格納手段1、累積頻度格納手段2から得
られる頻度に対して重みづけ和をとり、累積頻度の最大
値はそのままになるようにしている。この処理において
も、整数値演算のみで行い、重みづけに必要な除算も重
みの和を2の整数巾でとることによりシフトに回避する
ことを可能にしている。
【0050】シンボルを0,1,・・・,A−1とす
る。Fは出現頻度格納手段1で、F(i)はシンボルi
に対する出現頻度とする。Cは累積頻度格納手段2で、
C(i)はシンボルiに対する累積頻度とする。C
(i)はi=Aに対しても(便宜上)定義され、C
(A)=M(2の整数巾)とする。実際にはCはAに対
するエントリを持つ必要はない。何故ならばMは固定さ
れているからである。図6の動作はカウンタの値S(=
F(0)+F(1)+・・・+F(A−1))が閾値T
に達したら行われる。Tは予め決められた整数値sに対
して、 T=(M−A)>>s, となるように設定される。“x>>y”はxをyビット
分だけ右へ(小さい方へ)シフトすることを意味する。
sはAのビット数以下の値でなければならない。また整
数値dを任意に設定する。dに対してDを、 D=(1<<d), となるように定める。“x<<y”はxをyビット分だ
け左へ(大きい方へ)シフトすることを意味する。Dは
2の整数巾である。Rは切捨てにより生じた端数を保持
する変数である。f,g,rは計算上必要な変数であ
る。
る。Fは出現頻度格納手段1で、F(i)はシンボルi
に対する出現頻度とする。Cは累積頻度格納手段2で、
C(i)はシンボルiに対する累積頻度とする。C
(i)はi=Aに対しても(便宜上)定義され、C
(A)=M(2の整数巾)とする。実際にはCはAに対
するエントリを持つ必要はない。何故ならばMは固定さ
れているからである。図6の動作はカウンタの値S(=
F(0)+F(1)+・・・+F(A−1))が閾値T
に達したら行われる。Tは予め決められた整数値sに対
して、 T=(M−A)>>s, となるように設定される。“x>>y”はxをyビット
分だけ右へ(小さい方へ)シフトすることを意味する。
sはAのビット数以下の値でなければならない。また整
数値dを任意に設定する。dに対してDを、 D=(1<<d), となるように定める。“x<<y”はxをyビット分だ
け左へ(大きい方へ)シフトすることを意味する。Dは
2の整数巾である。Rは切捨てにより生じた端数を保持
する変数である。f,g,rは計算上必要な変数であ
る。
【0051】まず第1に初期化を行う(ステップ3
0)。カウンタの値Sを0にリセットする。gの値は0
(=C(0))に設定し、Rの値は0に設定する。Rの
値は0以外でも、Dより小さい値であったらよい。シン
ボルi=0に設定する。
0)。カウンタの値Sを0にリセットする。gの値は0
(=C(0))に設定し、Rの値は0に設定する。Rの
値は0以外でも、Dより小さい値であったらよい。シン
ボルi=0に設定する。
【0052】シンボルiの新たな頻度を計算する(ステ
ップ31)。
ップ31)。
【0053】f←C(i+1)−g, とすることで、fは現在の累積頻度で表されるシンボル
iの頻度を表す。続いてgは次のシンボルの頻度を計算
するのに備えてC(i+1)に設定される。fとF
(i)から次の式(1)の右辺の値を求めて、改めてf
とする。
iの頻度を表す。続いてgは次のシンボルの頻度を計算
するのに備えてC(i+1)に設定される。fとF
(i)から次の式(1)の右辺の値を求めて、改めてf
とする。
【0054】 f←f*(D−1)+F(i)<<s+1. (1) これは、累積頻度格納手段から得られる頻度fと出現頻
度格納手段から得られる頻度をほぼ(D−1):(1<
<s)の比で加算していることに相当する。Tとsの値
の決め方から、すべてのシンボルに対して(1)の右辺
のfの値は加算したものはMのD倍になっている。累積
頻度の最大値をMにするためには、(1)で得られたf
をDで割る必要がある。まず、fをDで割った時の余り
(0からD−1までの値)をRに加算する。Dは2の巾
であるため、この余りは(D−1)とfのビット毎の排
他的論理和をとれば得られるので、実際には除算を行う
必要がない。こうして得られたfをdビット右へシフト
する。これはDで割って、小数点以下を切り捨てた値と
等しい。累積頻度格納手段から計算されるシンボルiの
頻度(ステップ41の(C(i+1)−g)で計算され
る値)が0でないのなら、F(i)が0であっても式
(1)で計算されるfの値は0でないことに注意する。
このことは、算術符号化が正しく動作するために必須の
条件である。
度格納手段から得られる頻度をほぼ(D−1):(1<
<s)の比で加算していることに相当する。Tとsの値
の決め方から、すべてのシンボルに対して(1)の右辺
のfの値は加算したものはMのD倍になっている。累積
頻度の最大値をMにするためには、(1)で得られたf
をDで割る必要がある。まず、fをDで割った時の余り
(0からD−1までの値)をRに加算する。Dは2の巾
であるため、この余りは(D−1)とfのビット毎の排
他的論理和をとれば得られるので、実際には除算を行う
必要がない。こうして得られたfをdビット右へシフト
する。これはDで割って、小数点以下を切り捨てた値と
等しい。累積頻度格納手段から計算されるシンボルiの
頻度(ステップ41の(C(i+1)−g)で計算され
る値)が0でないのなら、F(i)が0であっても式
(1)で計算されるfの値は0でないことに注意する。
このことは、算術符号化が正しく動作するために必須の
条件である。
【0055】RがDより大きいか判別する(ステップ3
2)。
2)。
【0056】RがDより大きい場合はfの値を1増加さ
せる(ステップ33)。RをDで割った時の余りを改め
てRとおく。こうして本来なら小数点以下で切り捨てら
れてしまう値を有効に頻度に反映させることができる。
せる(ステップ33)。RをDで割った時の余りを改め
てRとおく。こうして本来なら小数点以下で切り捨てら
れてしまう値を有効に頻度に反映させることができる。
【0057】シンボル(i+1)に対する累積頻度C
(i+1)の計算を行う(ステップ34)。これは既に
得られているC(i)にステップ31または33までで
得られているfを加算することで行われる。F(i)は
0にリセットされ、iはi+1に設定される。
(i+1)の計算を行う(ステップ34)。これは既に
得られているC(i)にステップ31または33までで
得られているfを加算することで行われる。F(i)は
0にリセットされ、iはi+1に設定される。
【0058】i=A−1となったら累積頻度更新処理を
終了する(ステップ35)。C(A)はMで固定されて
いるために計算する必要はない。
終了する(ステップ35)。C(A)はMで固定されて
いるために計算する必要はない。
【0059】次に、累積頻度格納手段2の初期状態につ
いて説明する。
いて説明する。
【0060】初期状態は各シンボルの出現頻度を一定の
値として設定することが通常行われる。最初から累積頻
度の最大値Mを固定しておく場合には、各シンボルの出
現頻度をM/Aとして累積頻度を計算し、累積頻度格納
手段2の初期値とする。また、最初はMを小さく設定し
ておいて、符号化が進むにつれて順に大きくしていく方
法も考えられる。その際、Mは常に2の整数巾に保った
まま大きくしていくことが必要となる。特定のクラスの
データの符号化に使用する際には出現頻度を一定とする
のではなく、そのクラスの統計的性質に合わせた初期状
態とすることも可能である。
値として設定することが通常行われる。最初から累積頻
度の最大値Mを固定しておく場合には、各シンボルの出
現頻度をM/Aとして累積頻度を計算し、累積頻度格納
手段2の初期値とする。また、最初はMを小さく設定し
ておいて、符号化が進むにつれて順に大きくしていく方
法も考えられる。その際、Mは常に2の整数巾に保った
まま大きくしていくことが必要となる。特定のクラスの
データの符号化に使用する際には出現頻度を一定とする
のではなく、そのクラスの統計的性質に合わせた初期状
態とすることも可能である。
【0061】次に本発明の別の実施の形態について述べ
る。
る。
【0062】算術符号化は予測手段を工夫することによ
って圧縮率の向上をみることができる。このとき、予測
手段はある状態の下でのシンボルの累積頻度を符号化手
段へ供給する。例えば、n次マルコフモデルと呼ばれる
予測手段では、直前のnシンボルを状態とし、各状態の
下での頻度、累積頻度を計算する。図6は二つの状態に
基づいて符号化を行う場合の本発明の構成を示し、状態
判別手段40、出現頻度テーブル41、累積頻度テーブ
ル42、カウンタテーブル43、累積頻度更新手段4
4、符号化手段45から成る。もちろん状態数は2に限
らず、任意の数にすることができる。
って圧縮率の向上をみることができる。このとき、予測
手段はある状態の下でのシンボルの累積頻度を符号化手
段へ供給する。例えば、n次マルコフモデルと呼ばれる
予測手段では、直前のnシンボルを状態とし、各状態の
下での頻度、累積頻度を計算する。図6は二つの状態に
基づいて符号化を行う場合の本発明の構成を示し、状態
判別手段40、出現頻度テーブル41、累積頻度テーブ
ル42、カウンタテーブル43、累積頻度更新手段4
4、符号化手段45から成る。もちろん状態数は2に限
らず、任意の数にすることができる。
【0063】状態判別手段40は、シンボルをどの状態
に基づいて符号化するかを決定する。1次マルコフモデ
ルであったら直前の1文字を記憶しておくことにより、
状態が決定される。
に基づいて符号化するかを決定する。1次マルコフモデ
ルであったら直前の1文字を記憶しておくことにより、
状態が決定される。
【0064】出現頻度テーブル41は複数の出現頻度格
納手段から成る。状態一つに対して、一つの出現頻度格
納手段が対応する。それぞれの出現頻度格納手段は図1
の出現頻度格納手段1と同一の構造を持つ。ただし、状
態によってシンボル数が変わってもよい。
納手段から成る。状態一つに対して、一つの出現頻度格
納手段が対応する。それぞれの出現頻度格納手段は図1
の出現頻度格納手段1と同一の構造を持つ。ただし、状
態によってシンボル数が変わってもよい。
【0065】累積頻度テーブル42は複数の累積頻度格
納手段から成る。状態一つに対して、一つの累積頻度格
納手段が対応する。それぞれの累積頻度格納手段は図1
の累積頻度格納手段2と同一の構造を持つ。ただし、状
態によってシンボル数が変わってもよい。
納手段から成る。状態一つに対して、一つの累積頻度格
納手段が対応する。それぞれの累積頻度格納手段は図1
の累積頻度格納手段2と同一の構造を持つ。ただし、状
態によってシンボル数が変わってもよい。
【0066】カウンタテーブル43は複数のカウンタか
ら成る。状態一つに対して、一つのカウンタが対応す
る。それぞれのカウンタは図1のカウンタ3と同一の構
造を持つ。
ら成る。状態一つに対して、一つのカウンタが対応す
る。それぞれのカウンタは図1のカウンタ3と同一の構
造を持つ。
【0067】累積頻度更新手段44は、図1の累積頻度
更新手段4と同様の働きをする。状態に応じて累積頻度
更新間隔や累積頻度更新方法を選択することもできる。
例えば予めデータの統計的性質の変化が激しいとわかっ
ている状態に関しては累積頻度更新間隔を小さく設定し
ておいたり、累積頻度更新手段4は出現頻度格納手段1
から得られる頻度に大きな重みをつけて累積頻度更新を
行うよう設定しておくなどの処置を施すことが可能であ
る。
更新手段4と同様の働きをする。状態に応じて累積頻度
更新間隔や累積頻度更新方法を選択することもできる。
例えば予めデータの統計的性質の変化が激しいとわかっ
ている状態に関しては累積頻度更新間隔を小さく設定し
ておいたり、累積頻度更新手段4は出現頻度格納手段1
から得られる頻度に大きな重みをつけて累積頻度更新を
行うよう設定しておくなどの処置を施すことが可能であ
る。
【0068】符号化手段45は、図1の符号化手段5と
同一である。
同一である。
【0069】図6の構成に示した本発明の動作は、図2
を用いて表した動作とほぼ同一である。状態を{a,
b}の2種類とする。図6で、入力シンボルを状態aで
符号化するときには、出現頻度テーブル41では出現頻
度格納手段a,カウンタテーブル43ではカウンタaが
更新される。このとき、カウンタaが一定値に達した場
合には、累積頻度更新手段44は出現頻度テーブル41
の出現頻度格納手段aと累積頻度テーブル42の累積頻
度格納手段aを用いて、累積頻度格納手段aのみを更新
する。状態bで符号化するときには、各手段でbの方を
用いて処理すればよい。
を用いて表した動作とほぼ同一である。状態を{a,
b}の2種類とする。図6で、入力シンボルを状態aで
符号化するときには、出現頻度テーブル41では出現頻
度格納手段a,カウンタテーブル43ではカウンタaが
更新される。このとき、カウンタaが一定値に達した場
合には、累積頻度更新手段44は出現頻度テーブル41
の出現頻度格納手段aと累積頻度テーブル42の累積頻
度格納手段aを用いて、累積頻度格納手段aのみを更新
する。状態bで符号化するときには、各手段でbの方を
用いて処理すればよい。
【0070】このように、複数の状態に基づいて算術符
号化を行うときも、本発明は自然に適用が可能となり、
従来の圧縮率の向上という利点に加えて高速化が可能と
なる。
号化を行うときも、本発明は自然に適用が可能となり、
従来の圧縮率の向上という利点に加えて高速化が可能と
なる。
【0071】図2では、累積頻度更新処理間隔を決定す
るパラメータTを固定としていたが、これをデータの状
態または符号化の状況に合わせて可変とする方式も考え
られる。図7はTを可変にするときに必要な更新間隔決
定手段と図1のブロック図とのつながりを示すブロック
図である。更新間隔決定手段は累積頻度更新手段と情報
の交換を行えれば十分である。
るパラメータTを固定としていたが、これをデータの状
態または符号化の状況に合わせて可変とする方式も考え
られる。図7はTを可変にするときに必要な更新間隔決
定手段と図1のブロック図とのつながりを示すブロック
図である。更新間隔決定手段は累積頻度更新手段と情報
の交換を行えれば十分である。
【0072】データの状態に応じてTを変更する場合に
は、図7に示すように更新間隔決定手段は累積頻度更新
手段から得られる情報に基づいてTの変更を決定する。
更新間隔決定手段は、図1の出現頻度格納手段1に格納
されている頻度と累積頻度更新手段2から得られる頻度
との差異の情報を累積頻度更新手段4から得て、この情
報を元にTの変更を決定する。差異が大きい場合には、
データの統計的性質の変化が激しいので、Tを小さくす
ることで圧縮率の向上を図ることができる。差異が小さ
い場合にはTを大きくすることで不要な累積頻度更新を
行わずに済み、さらなる高速化を図ることができる。差
異の図り方には様々な方法があるが、計算量の小さい方
法である必要がある。例えば、累積頻度格納手段2から
得られる頻度が1であるシンボルに対応する、出現頻度
格納手段1に格納されている頻度の最大値等である。更
新間隔の変更があった場合には、累積頻度更新手段の更
新処理におけるパラメータ(図5におけるs,dなど)
も必要に応じて変更する。
は、図7に示すように更新間隔決定手段は累積頻度更新
手段から得られる情報に基づいてTの変更を決定する。
更新間隔決定手段は、図1の出現頻度格納手段1に格納
されている頻度と累積頻度更新手段2から得られる頻度
との差異の情報を累積頻度更新手段4から得て、この情
報を元にTの変更を決定する。差異が大きい場合には、
データの統計的性質の変化が激しいので、Tを小さくす
ることで圧縮率の向上を図ることができる。差異が小さ
い場合にはTを大きくすることで不要な累積頻度更新を
行わずに済み、さらなる高速化を図ることができる。差
異の図り方には様々な方法があるが、計算量の小さい方
法である必要がある。例えば、累積頻度格納手段2から
得られる頻度が1であるシンボルに対応する、出現頻度
格納手段1に格納されている頻度の最大値等である。更
新間隔の変更があった場合には、累積頻度更新手段の更
新処理におけるパラメータ(図5におけるs,dなど)
も必要に応じて変更する。
【0073】このように、本発明は累積頻度の更新間隔
を動的に変更できるという高い自由度を持つ符号化装置
である。
を動的に変更できるという高い自由度を持つ符号化装置
である。
【0074】以上、本発明の符号化装置について述べた
が、復号時にも符号化時と同一の累積頻度更新を行うこ
とにより正しく復号を行うことができる。累積頻度の最
大値を2の巾に設定することにより、従来1シンボルを
復号するのに必要であった3回の除算を、2回のビット
シフトと1回の除算に置き換えることができ、本発明は
復号時も高速化を図ることができる。
が、復号時にも符号化時と同一の累積頻度更新を行うこ
とにより正しく復号を行うことができる。累積頻度の最
大値を2の巾に設定することにより、従来1シンボルを
復号するのに必要であった3回の除算を、2回のビット
シフトと1回の除算に置き換えることができ、本発明は
復号時も高速化を図ることができる。
【0075】
【発明の効果】本発明の効果は、算術符号化(区間縮
小)で必要な乗算をビットシフトに置き換えることによ
り高速な処理が可能となることである。区間縮小にかか
る時間は本発明によって従来方式の1/2程度に削減で
きる。
小)で必要な乗算をビットシフトに置き換えることによ
り高速な処理が可能となることである。区間縮小にかか
る時間は本発明によって従来方式の1/2程度に削減で
きる。
【0076】その理由は、乗算に比べてビットシフトの
方がはるかに少ない実行量で行うことができるためであ
る。除算をビットシフトに置き換えることができるのは
累積頻度の最大値を2の巾に保つことによる。また、ブ
ロック単位で累積頻度更新処理を行うことで、累積頻度
の最大値を一定値に保ったままでも容易に累積頻度更新
処理を行うことができる。このとき、従来方式よりも一
つの累積頻度更新にかかる時間は大きくなるが、その回
数は減少するため、本発明に示した累積頻度更新方式を
用いて入力データの1シンボル当りの累積頻度更新にか
かる時間を従来方式の最良のもの(BIT法)よりも短
縮することが可能となる。シンボルの数が256(1バ
イト)のとき累積頻度の更新間隔を64シンボルにすれ
ば、入力データ1シンボル当りの累積頻度の更新要素の
数は256/64=4となる。このとき、本発明により
累積頻度更新にかかる時間はBIT法と同程度以下にな
る。また、本発明では累積頻度更新手段としては単なる
一つの配列構造で十分であり、特別なデータ構造も不要
となる利点もある。結果、図1に示した算術符号化処理
全体でみても、累積頻度の更新間隔が64程度で本発明
を用いて20〜25%の高速化をみることができる。累
積頻度の更新間隔を128程度にすると30%程度の高
速化が可能となる。累積頻度の更新間隔を64程度に設
定し、適切な累積頻度更新手段を用いれば、従来方式と
比べて圧縮率の劣化はほとんどのデータに対し1ポイン
ト以内となる。累積頻度の更新間隔を128程度に設定
しても、圧縮率の劣化は1.5ポイント以内となること
が多い。
方がはるかに少ない実行量で行うことができるためであ
る。除算をビットシフトに置き換えることができるのは
累積頻度の最大値を2の巾に保つことによる。また、ブ
ロック単位で累積頻度更新処理を行うことで、累積頻度
の最大値を一定値に保ったままでも容易に累積頻度更新
処理を行うことができる。このとき、従来方式よりも一
つの累積頻度更新にかかる時間は大きくなるが、その回
数は減少するため、本発明に示した累積頻度更新方式を
用いて入力データの1シンボル当りの累積頻度更新にか
かる時間を従来方式の最良のもの(BIT法)よりも短
縮することが可能となる。シンボルの数が256(1バ
イト)のとき累積頻度の更新間隔を64シンボルにすれ
ば、入力データ1シンボル当りの累積頻度の更新要素の
数は256/64=4となる。このとき、本発明により
累積頻度更新にかかる時間はBIT法と同程度以下にな
る。また、本発明では累積頻度更新手段としては単なる
一つの配列構造で十分であり、特別なデータ構造も不要
となる利点もある。結果、図1に示した算術符号化処理
全体でみても、累積頻度の更新間隔が64程度で本発明
を用いて20〜25%の高速化をみることができる。累
積頻度の更新間隔を128程度にすると30%程度の高
速化が可能となる。累積頻度の更新間隔を64程度に設
定し、適切な累積頻度更新手段を用いれば、従来方式と
比べて圧縮率の劣化はほとんどのデータに対し1ポイン
ト以内となる。累積頻度の更新間隔を128程度に設定
しても、圧縮率の劣化は1.5ポイント以内となること
が多い。
【図1】本発明の構成を示すブロック図である。
【図2】本発明の動作の流れを示すフローチャートであ
る。
る。
【図3】本発明による、算術符号化における区間縮小処
理を図示したものである。
理を図示したものである。
【図4】全体の処理と累積頻度更新処理との関係を示す
図である。
図である。
【図5】累積頻度更新処理の具体例の動作を示すフロー
チャートである。
チャートである。
【図6】二つの状態を用いて算術符号化を行うときの本
発明の構成を示すブロック図である。
発明の構成を示すブロック図である。
【図7】累積頻度更新間隔を動的に変更するときの、更
新間隔決定手段と図1の構成との関係を示すブロック図
である。
新間隔決定手段と図1の構成との関係を示すブロック図
である。
【図8】算術符号化方式の大きな構成を示すブロック図
である。
である。
【図9】従来の算術符号化方式の動作の流れを示すフロ
ーチャートである。
ーチャートである。
【図10】従来の算術符号化方式における区間縮小処理
を図示したものである。
を図示したものである。
【図11】従来方式における累積頻度更新処理の具体例
を示す。
を示す。
1 出現頻度格納手段 2 累積頻度格納手段 3 カウンタ 4 累積頻度更新手段 5 符号化手段 40 状態判別手段 41 出現頻度テーブル 42 累積頻度テーブル 43 カウンタテーブル 44 累積頻度更新手段 45 符号化手段 50 符号化手段 51 予測手段 52 復号手段 53 予測手段
Claims (6)
- 【請求項1】入力データを圧縮データに変換する算術符
号化装置において、 入力データ中の各シンボルの出現頻度を計測し、記録す
る出現頻度格納手段と、 算術符号化に必要な各シンボルの累積頻度を記録する累
積頻度格納手段と、 累積頻度更新のタイミングを計るためにに、符号化され
たシンボルの数を計測するカウンタと、 前記出現頻度格納手段と前記累積頻度格納手段に記録さ
れた情報に基づいて新たな累積頻度情報を生成し、前記
累積頻度格納手段の内容を更新する累積頻度更新手段
と、 前記累積頻度格納手段に記録された情報を元に圧縮デー
タを生成する符号化手段とを有し、 前記累積頻度格納手段に蓄積されている累積頻度の最大
値は2の整数巾であり、前記累積頻度更新手段は累積頻
度の最大値を2の整数巾に保ったまま更新処理を行うこ
とを特徴とする算術符号化装置。 - 【請求項2】前記累積頻度更新手段は、前記出現頻度格
納手段に記録されている頻度と前記累積頻度格納手段に
記録されている情報から得られる頻度の重みづけ和を用
いて新たな累積頻度を生成することを特徴とする請求項
1に記載の算術符号化装置。 - 【請求項3】前記重みづけ和における重みの分母を2の
整数巾でとることを特徴とする請求項2に記載の算術符
号化装置。 - 【請求項4】前記出現頻度格納手段、前記累積頻度格納
手段及び前記カウンタの組を複数装備することを特徴と
する請求項1に記載の算術符号化装置。 - 【請求項5】前記累積頻度更新手段は、前記出現頻度格
納手段、前記累積頻度格納手段及び前記カウンタの組に
よって、累積頻度の更新間隔、累積頻度の更新方法を変
更することを特徴とする請求項4に記載の算術符号化装
置。 - 【請求項6】前記カウンタの値から決定される累積頻度
更新の間隔を可変とする請求項1に記載の算術符号化装
置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8187948A JP3018990B2 (ja) | 1996-07-18 | 1996-07-18 | 算術符号化装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8187948A JP3018990B2 (ja) | 1996-07-18 | 1996-07-18 | 算術符号化装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1032496A true JPH1032496A (ja) | 1998-02-03 |
| JP3018990B2 JP3018990B2 (ja) | 2000-03-13 |
Family
ID=16214978
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8187948A Expired - Lifetime JP3018990B2 (ja) | 1996-07-18 | 1996-07-18 | 算術符号化装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3018990B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008118307A (ja) * | 2006-11-01 | 2008-05-22 | Canon Inc | 符号化装置及びその制御方法 |
| JP2011176831A (ja) * | 2011-03-02 | 2011-09-08 | Canon Inc | 符号化装置及びその制御方法 |
| CN116015312A (zh) * | 2023-03-28 | 2023-04-25 | 山东奔虎智能科技有限公司 | 基于物联网平台的气体报警系统数据存储方法 |
-
1996
- 1996-07-18 JP JP8187948A patent/JP3018990B2/ja not_active Expired - Lifetime
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008118307A (ja) * | 2006-11-01 | 2008-05-22 | Canon Inc | 符号化装置及びその制御方法 |
| JP2011176831A (ja) * | 2011-03-02 | 2011-09-08 | Canon Inc | 符号化装置及びその制御方法 |
| CN116015312A (zh) * | 2023-03-28 | 2023-04-25 | 山东奔虎智能科技有限公司 | 基于物联网平台的气体报警系统数据存储方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3018990B2 (ja) | 2000-03-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2549254B2 (ja) | 有限アルファベットの任意記号の発生確率予測方法及び装置 | |
| CN100459437C (zh) | 自适应概率估计方法、自适应编码方法及自适应解码方法 | |
| US5045852A (en) | Dynamic model selection during data compression | |
| US4633490A (en) | Symmetrical optimized adaptive data compression/transfer/decompression system | |
| JP2800880B2 (ja) | 高速復号算術符号化装置 | |
| US5838964A (en) | Dynamic numeric compression methods | |
| JP3302210B2 (ja) | データ符号化/復号化方法及び装置 | |
| JPH06120839A (ja) | 2進エレメントに対しほぼ均一な変化率を有した2進符号化法および2進エレメントの増減法 | |
| JPH0744462B2 (ja) | 圧縮符号化方法及び復号方法 | |
| WO2006070925A1 (en) | Device and data method for selective compression and decompression and data format for compressed data | |
| JPS6217418B2 (ja) | ||
| CN114866091A (zh) | 基于划分组参考数的差值编码压缩及解压缩方法 | |
| CN112506880B (zh) | 数据处理方法及相关设备 | |
| US6252992B1 (en) | Variable length coding | |
| CN115882866A (zh) | 一种基于数据差值特征的数据压缩方法 | |
| JPH08167852A (ja) | データ圧縮方法及び装置 | |
| US6057790A (en) | Apparatus and method for data compression/expansion using block-based coding with top flag | |
| AU600972B2 (en) | Arithmetic coding encoder and decoder system | |
| US6055273A (en) | Data encoding and decoding method and device of a multiple-valued information source | |
| JP3018990B2 (ja) | 算術符号化装置 | |
| JP3801501B2 (ja) | 符号化装置及び復号装置及び符号化・復号装置及び符号化方法及び復号方法及び符号化・復号方法及びプログラム | |
| CN110175185B (zh) | 一种基于时序数据分布特征的自适应无损压缩方法 | |
| JP5095033B2 (ja) | データ圧縮装置及びデータ圧縮方法及びプログラム | |
| JPH0258811B2 (ja) | ||
| CN117874314B (zh) | 一种基于大数据处理的信息可视化方法及系统 |