JPH10209877A - 符号生成方法および符号化方法 - Google Patents
符号生成方法および符号化方法Info
- Publication number
- JPH10209877A JPH10209877A JP1116497A JP1116497A JPH10209877A JP H10209877 A JPH10209877 A JP H10209877A JP 1116497 A JP1116497 A JP 1116497A JP 1116497 A JP1116497 A JP 1116497A JP H10209877 A JPH10209877 A JP H10209877A
- Authority
- JP
- Japan
- Prior art keywords
- code
- bit
- length
- section
- bits
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】自然数に対応づけられるデータを幾つかの区間
に区分し、最終区間を可変長符号、それ以外の区間を固
定長符号により構成された符号を生成することにより、
任意の大きさのデータに対して冗長性の小さい符号を生
成する。 【解決手段】ステップ101により1〜Nの自然数を所
定の区間に区分し、ステップ102により自然数データ
が含まれる区間を識別する識別ビットを付与し、ステッ
プ103により最終区間以外の区間の自然数データに対
して固定長符号ビットを付与し、ステップ104により
最終区間の自然数データに対して可変長符号ビットを付
与する。
に区分し、最終区間を可変長符号、それ以外の区間を固
定長符号により構成された符号を生成することにより、
任意の大きさのデータに対して冗長性の小さい符号を生
成する。 【解決手段】ステップ101により1〜Nの自然数を所
定の区間に区分し、ステップ102により自然数データ
が含まれる区間を識別する識別ビットを付与し、ステッ
プ103により最終区間以外の区間の自然数データに対
して固定長符号ビットを付与し、ステップ104により
最終区間の自然数データに対して可変長符号ビットを付
与する。
Description
【0001】
【発明の属する技術分野】 本発明はデータを符号化す
る方法に関し、特に1からNまでの自然数で表される数
値データを符号化する方法に関する。
る方法に関し、特に1からNまでの自然数で表される数
値データを符号化する方法に関する。
【0002】
【従来の技術】従来より自然数で表されるデータを符号
化するための方法が幾つか提案されている。その中の一
つとして、1からNまでの自然数を表わすための符号
が、Fiala とGreeneにより開発され、SSS符号といわ
れている。SSS符号は、大きな自然数を長い符号長で
記述し、小さな自然数を短い符号長で記述するという特
徴を持つ。符号化対象データのシンボルの正確な出現確
率は不明であるが、概ね小さい値が現われやすく大きな
値が現われにくいことが分かっている場合、この特徴は
有効に作用する。SSS符号は3つのビット長に関する
パラメータ(start、step、stop)を有す
る。自然数の1から2^start(演算子^は塁乗を
表わす)までの数値をビット長startの符号ビット
で表わす。それ以上の数値にはビット長をstepだけ
増加させ、(step+start)ビットの符号ビッ
トを割り振る。(step+start)ビットで表わ
すことのできる数値の範囲は、2^start+1から
(2^(2*step+start)ー2^star
t)/(2^stepー1)(演算子*は乗算を表わ
す)までである。さらにそれ以上の数値に対して符号を
割り振る場合は、ビット長を再びstepだけ増加さ
せ、(2*step+start)ビットの符号ビット
を割り振る。こうして、(2^(3*step+sta
rt)ー2^start)/(2^stepー1)まで
の数値を表わすことができる。さらに大きい数値に対し
て符号を割り振る場合は、ビット長をさらにstepず
つ増加させ、最終的にビット長がstopになるまで数
値に対して符号を割り振るようにする。よって、SSS
符号は最大(2^(stop+start)ー2^st
art)/(2^stepー1)までの数値に対して符
号を割り振ることができる。SSS符号は符号ビットだ
けでは個々の符号を一意に識別することができない。そ
こで個々の符号を識別可能にするため、(k*step
+start)ビットの符号ビットの前にその長さkを
表す識別ビットを付加する。識別ビットは、k個の0を
続けた後に1を加えることにより生成される。ただし、
ビット長がstopのときは識別ビットの最後の1は省
略することができる。SSS符号の例として(star
t、step、stop)の値が(0、1、5)のとき
と(1、2、5)のときを図7に示す。また、同様に自
然数を表わすための符号として、CBT符号が提案され
ている。符号化対象が1からNまでの自然数のとき、固
定長符号を用いると符号長はk=〈log2(N)〉
(〈x〉はx以上の最小の整数値を表わす)となる。一
般にNが2の塁乗で表わされるとき以外は、固定長符号
は冗長を持つことが知られている。その冗長性を減少さ
せるため、CBT符号は数値nを可変長符号により 1≦n≦2^kーNのとき、nー1をkー1ビット 2^kーN<n≦Nのとき、n+2^kーNー1をkビ
ット のビット長で表わす。N=10のときのCBT符号の例
を図8に示す。
化するための方法が幾つか提案されている。その中の一
つとして、1からNまでの自然数を表わすための符号
が、Fiala とGreeneにより開発され、SSS符号といわ
れている。SSS符号は、大きな自然数を長い符号長で
記述し、小さな自然数を短い符号長で記述するという特
徴を持つ。符号化対象データのシンボルの正確な出現確
率は不明であるが、概ね小さい値が現われやすく大きな
値が現われにくいことが分かっている場合、この特徴は
有効に作用する。SSS符号は3つのビット長に関する
パラメータ(start、step、stop)を有す
る。自然数の1から2^start(演算子^は塁乗を
表わす)までの数値をビット長startの符号ビット
で表わす。それ以上の数値にはビット長をstepだけ
増加させ、(step+start)ビットの符号ビッ
トを割り振る。(step+start)ビットで表わ
すことのできる数値の範囲は、2^start+1から
(2^(2*step+start)ー2^star
t)/(2^stepー1)(演算子*は乗算を表わ
す)までである。さらにそれ以上の数値に対して符号を
割り振る場合は、ビット長を再びstepだけ増加さ
せ、(2*step+start)ビットの符号ビット
を割り振る。こうして、(2^(3*step+sta
rt)ー2^start)/(2^stepー1)まで
の数値を表わすことができる。さらに大きい数値に対し
て符号を割り振る場合は、ビット長をさらにstepず
つ増加させ、最終的にビット長がstopになるまで数
値に対して符号を割り振るようにする。よって、SSS
符号は最大(2^(stop+start)ー2^st
art)/(2^stepー1)までの数値に対して符
号を割り振ることができる。SSS符号は符号ビットだ
けでは個々の符号を一意に識別することができない。そ
こで個々の符号を識別可能にするため、(k*step
+start)ビットの符号ビットの前にその長さkを
表す識別ビットを付加する。識別ビットは、k個の0を
続けた後に1を加えることにより生成される。ただし、
ビット長がstopのときは識別ビットの最後の1は省
略することができる。SSS符号の例として(star
t、step、stop)の値が(0、1、5)のとき
と(1、2、5)のときを図7に示す。また、同様に自
然数を表わすための符号として、CBT符号が提案され
ている。符号化対象が1からNまでの自然数のとき、固
定長符号を用いると符号長はk=〈log2(N)〉
(〈x〉はx以上の最小の整数値を表わす)となる。一
般にNが2の塁乗で表わされるとき以外は、固定長符号
は冗長を持つことが知られている。その冗長性を減少さ
せるため、CBT符号は数値nを可変長符号により 1≦n≦2^kーNのとき、nー1をkー1ビット 2^kーN<n≦Nのとき、n+2^kーNー1をkビ
ット のビット長で表わす。N=10のときのCBT符号の例
を図8に示す。
【0003】
【発明が解決しようとする課題】一般的に1〜Nまでの
自然数を符号化する場合、SSS符号はその符号に冗長
性が生じるという問題がある。例えば、N=37までの
自然数を図7のSSS(0、1、5)により符号化した
とき、符号ビット長がstopになる数値32〜37は 数値 SSS(0、1、5)符号 32 00000 00000 33 00000 00001 34 00000 00010 35 00000 00011 36 00000 00100 37 00000 00101 と符号化される。このとき符号ビットは多くても3ビッ
トあれば一意に復号可能な符号が形成されることは明ら
かである。この例から分かるように、Nの値が丁度SS
S符号で符号化できる最大値と一致しているとき以外、
SSS符号は冗長性がある。その冗長性を削減する方法
として考えられるのは、符号ビット長がstopになる
最後のm個の数値に対してCBT符号を適用することで
ある。上記の例では、2^kーN=2なので、数値32
および33に対する符号の符号ビット長は2ビット、数
値34〜37に対する符号の符号ビット長は3ビットで
表わすことにより、符号は 数値 符号 32 00000 00 33 00000 01 34 00000 100 35 00000 101 36 00000 110 37 00000 111となり、固定長符号に比べて
数値32および33の符号ビット長を1ビット削減でき
る。CBT符号の適用により符号の冗長性は減少した
が、別の問題が発生する。ここで、数値16〜31の符
号に注目すると、 数値 符号 16〜31 00001 xxxx (xは0または1を表わす) であるから、符号長は9ビットである。従って、CBT
符号を用いたとき、数値16〜31の符号長より数値3
2〜37の符号長のほうが小さくなる。SSS符号を使
用するときは、対象データの値が小さいほうがより出現
確率が大きいという前提があるので、第二の方法はエン
トロピーの観点から考えると最適とはいえない。本発明
の目的は、任意のNまでの自然数の符号化に対し、常に
小さい数値のビット長が大きい数値のビット長より大き
くなることがなく、また冗長性が少ない符号を生成する
ための符号生成方法およびその符号を用いて符号化を実
施するための符号化方法を提供する。
自然数を符号化する場合、SSS符号はその符号に冗長
性が生じるという問題がある。例えば、N=37までの
自然数を図7のSSS(0、1、5)により符号化した
とき、符号ビット長がstopになる数値32〜37は 数値 SSS(0、1、5)符号 32 00000 00000 33 00000 00001 34 00000 00010 35 00000 00011 36 00000 00100 37 00000 00101 と符号化される。このとき符号ビットは多くても3ビッ
トあれば一意に復号可能な符号が形成されることは明ら
かである。この例から分かるように、Nの値が丁度SS
S符号で符号化できる最大値と一致しているとき以外、
SSS符号は冗長性がある。その冗長性を削減する方法
として考えられるのは、符号ビット長がstopになる
最後のm個の数値に対してCBT符号を適用することで
ある。上記の例では、2^kーN=2なので、数値32
および33に対する符号の符号ビット長は2ビット、数
値34〜37に対する符号の符号ビット長は3ビットで
表わすことにより、符号は 数値 符号 32 00000 00 33 00000 01 34 00000 100 35 00000 101 36 00000 110 37 00000 111となり、固定長符号に比べて
数値32および33の符号ビット長を1ビット削減でき
る。CBT符号の適用により符号の冗長性は減少した
が、別の問題が発生する。ここで、数値16〜31の符
号に注目すると、 数値 符号 16〜31 00001 xxxx (xは0または1を表わす) であるから、符号長は9ビットである。従って、CBT
符号を用いたとき、数値16〜31の符号長より数値3
2〜37の符号長のほうが小さくなる。SSS符号を使
用するときは、対象データの値が小さいほうがより出現
確率が大きいという前提があるので、第二の方法はエン
トロピーの観点から考えると最適とはいえない。本発明
の目的は、任意のNまでの自然数の符号化に対し、常に
小さい数値のビット長が大きい数値のビット長より大き
くなることがなく、また冗長性が少ない符号を生成する
ための符号生成方法およびその符号を用いて符号化を実
施するための符号化方法を提供する。
【0004】
【課題を解決するための手段】 上記目的を達成するた
めの符号生成方法の基本的な流れを図1に示す。101
は、所定数N1、N2、・・、Nm、・・、NM(0<
N1<N2<・・<Nm<・・<NM<N)を定め、そ
の所定数により1からNの自然数を区間(0、N1]、
(N1、N2]、・・、(NM、N]に区分するステッ
プである。ここで、表記”(”および”)”は開区間、
表記”[”および”]”は閉区間を示す。ここで、分割
した各区間のうち(0、N1]、・・、(NMー1、N
M]の大きさは2の塁乗となるように設定する。特に、
初期符号ビット長aを設定し、所定数Nmを(2^a)
*(2^mー1)の値に設定し、所定数の最大値NMを
(2^a)*(3*2^(Mー1)ー1)≦Nを満たす
最大整数Mの値にしたがって設定する。102は、各区
間に対し、任意の自然数が含まれる区間を識別するため
の識別ビットを生成するステップである。特に、識別ビ
ットは、区間(0、N1]、(N1、N2]、・・、
(NMー1、NM]の中の各々の区間に含まれる自然数
を表わす符号ビットのビット長を表わすものである。1
03は、区間(0、N1]、(N1、N2]、・・、
(NMー1、NM]の各々の区間に含まれる自然数に対
し、固定長の符号ビットを割り当てるステップである。
特に、各区間に対して固定ビット長a、a+1、・・、
a+Mー1となる符号ビットを割り当てるものである。
104は、区間(NM、N]に含まれる自然数に対し、
可変長の符号ビットを割り当てるステップである。特
に、区間(NM、N]に対し、ビット長a+Mビットの
符号ビットを2^kーN個(ここで、k=〈log2
(NーNM)〉)の自然数に割り当て、またビット長a
+M+1ビットの符号ビットを2*Nー2^k個の自然
数に割り当てるものである。さらに、上記目的を達成す
るための符号化方法の基本的な流れを図2に示す。20
1は、符号化すべきデータn(1≦n≦N)を入力する
ステップである。202は、所定数N1 、N2、・・、
Nm、・・、NM(0<N1 <N2<・・<Nm<・・
<NM<N)により区分される区間(0、N1 ]、(N
1 、N2]、・・、(NM、N]のいずれに前記データ
nが属するかを識別するための識別ビットを付与するス
テップである。203は、前記データnが区間(NM、
N]に属するか否かを判別するステップである。204
は、前記判別の結果、前記データnが区間(0、N1
]、(N1 、N2]、・・、(NMー1、NM]に属
す場合、前記データnに対し固定長符号ビットを付与す
るステップである。205は、前記データnが区間(N
M、N]に属す場合、前記データnに対し可変長符号ビ
ットを付与するステップである。206は、前記データ
nを表わす符号として前記識別ビットおよび前記符号ビ
ットを出力するステップである。このように本発明の符
号生成方法によれば、区間(NM、N]の符号を可変長
にすることにより、自然数データを符号化する際に生じ
る冗長性を減少することができる。また、NMの値を
(2^a)*(3*2^(Mー1)ー1)≦Nを満たす
最大整数Mの値にしたがって(2^a)*(2^Mー
1)の値に設定することにより、小さい自然数値の符号
長が常に大きい自然数値の符号長より大きくなることが
ないように符号を生成することができる。また、本発明
の符号化方法によれば、前記符号生成方法により生成さ
れた符号を利用して自然数データを効率的に符号化する
ことができる。
めの符号生成方法の基本的な流れを図1に示す。101
は、所定数N1、N2、・・、Nm、・・、NM(0<
N1<N2<・・<Nm<・・<NM<N)を定め、そ
の所定数により1からNの自然数を区間(0、N1]、
(N1、N2]、・・、(NM、N]に区分するステッ
プである。ここで、表記”(”および”)”は開区間、
表記”[”および”]”は閉区間を示す。ここで、分割
した各区間のうち(0、N1]、・・、(NMー1、N
M]の大きさは2の塁乗となるように設定する。特に、
初期符号ビット長aを設定し、所定数Nmを(2^a)
*(2^mー1)の値に設定し、所定数の最大値NMを
(2^a)*(3*2^(Mー1)ー1)≦Nを満たす
最大整数Mの値にしたがって設定する。102は、各区
間に対し、任意の自然数が含まれる区間を識別するため
の識別ビットを生成するステップである。特に、識別ビ
ットは、区間(0、N1]、(N1、N2]、・・、
(NMー1、NM]の中の各々の区間に含まれる自然数
を表わす符号ビットのビット長を表わすものである。1
03は、区間(0、N1]、(N1、N2]、・・、
(NMー1、NM]の各々の区間に含まれる自然数に対
し、固定長の符号ビットを割り当てるステップである。
特に、各区間に対して固定ビット長a、a+1、・・、
a+Mー1となる符号ビットを割り当てるものである。
104は、区間(NM、N]に含まれる自然数に対し、
可変長の符号ビットを割り当てるステップである。特
に、区間(NM、N]に対し、ビット長a+Mビットの
符号ビットを2^kーN個(ここで、k=〈log2
(NーNM)〉)の自然数に割り当て、またビット長a
+M+1ビットの符号ビットを2*Nー2^k個の自然
数に割り当てるものである。さらに、上記目的を達成す
るための符号化方法の基本的な流れを図2に示す。20
1は、符号化すべきデータn(1≦n≦N)を入力する
ステップである。202は、所定数N1 、N2、・・、
Nm、・・、NM(0<N1 <N2<・・<Nm<・・
<NM<N)により区分される区間(0、N1 ]、(N
1 、N2]、・・、(NM、N]のいずれに前記データ
nが属するかを識別するための識別ビットを付与するス
テップである。203は、前記データnが区間(NM、
N]に属するか否かを判別するステップである。204
は、前記判別の結果、前記データnが区間(0、N1
]、(N1 、N2]、・・、(NMー1、NM]に属
す場合、前記データnに対し固定長符号ビットを付与す
るステップである。205は、前記データnが区間(N
M、N]に属す場合、前記データnに対し可変長符号ビ
ットを付与するステップである。206は、前記データ
nを表わす符号として前記識別ビットおよび前記符号ビ
ットを出力するステップである。このように本発明の符
号生成方法によれば、区間(NM、N]の符号を可変長
にすることにより、自然数データを符号化する際に生じ
る冗長性を減少することができる。また、NMの値を
(2^a)*(3*2^(Mー1)ー1)≦Nを満たす
最大整数Mの値にしたがって(2^a)*(2^Mー
1)の値に設定することにより、小さい自然数値の符号
長が常に大きい自然数値の符号長より大きくなることが
ないように符号を生成することができる。また、本発明
の符号化方法によれば、前記符号生成方法により生成さ
れた符号を利用して自然数データを効率的に符号化する
ことができる。
【0005】
【発明の実施の形態】本発明の実施例を図面を用いて説
明する。最初に、本発明の符号生成方法について説明す
る。図3は本発明の符号生成方法の実施例の流れを示す
図である。301はパラメータを初期化するステップで
ある。パラメータは初期符号ビット長a、ビット長の増
分L、区間番号m、区間番号mにより識別される区間
(区間Rmとあらわす)の範囲を定める数Nmの4個で
ある。初期符号ビット長aは区間(0、N1]に含まれ
る自然数に対する符号の符号ビット長である。初期符号
ビット長aは符号化データの出現確率の予測に基づいて
適当な値に定められる。区間Rmは(Nmー1、Nm]
の範囲を表わす。ただし、N0=0およびN(M+1)
=Nとする。ビット長の増分Lは初期符号ビット長aに
対する各区間の符号ビット長の増加分を示す。すなわ
ち、各区間の符号ビット長はa+Lになる。初期値とし
て各パラメータをL=0、m=1、N0=0にセットす
る。本実施例では、区間R1、R2、R3、・・・、R
Mの大きさがそれぞれ2^a、2^(a+1)、2^
(a+2)、・・・、2^(a+Mー1)となるように
符号を生成する。このとき、Nmは区間Rmの最大数を
表わすので、Nmの値はR1〜Rmの各区間の大きさの
総和となるので、Nmは初項2^a、公比2の等比級数
の和になるので、Nm=(2^a)*(2^mー1)と
なる。302は自然数の最大値Nと初期符号ビット長a
および区間番号mにより定まる値(2^a)*(3*2
^(mー1)ー1)の大小を比較するステップである。
Nが小さければ、区間Rmの自然数に対して固定長符号
ビットを割り当てるために303〜306を実行し、次
の区間の符号を生成するために302へ戻る。そうでな
ければ、区間Rmの自然数に対して可変長符号ビットを
割り当てるために307〜309を実行し、処理を終了
する。ここで、302の条件分岐において、Nと(2^
a)*(3*2^(mー1)ー1)を比較する理由につ
いて説明する。まず、区間R(Mー1)の大きさは2^
(a+Mー1)なので、区間R(Mー1)の符号ビット
長はa+Mー1ビットである。最後の区間RMの大きさ
が2^(a+Mー1)より小さいと、区間RMの符号ビ
ット長をa+Mー1ビットより短いビットで表わすこと
が可能になる。そのため、区間RMの大きさは区間R
(Mー1)の大きさ以上でなければならない。図4
(a)は区間R(mー1)まで符号生成したときの様子
を数直線上に図示したものである。Nm=(2^a)*
(2^mー1)なので、区間Rmの範囲は通常(2^a
*(2^(mー1)ー1)、2^a*(2^mー1)]
となるが、図4(a)に示すように、区間(2^a*
(2^(mー1)ー1)、2^a*(2^mー1)]の
大きさ2^(a+mー1)より区間(2^a*(2^m
ー1)、N]の大きさNー2^a*(2^mー1)のほ
うが小さいとき、すなわちNー2^a*(2^mー1)
<2^(a+mー1)のとき、Rmの範囲は図4(b)
に示すように(Nmー1、Nm]となり、このときNm
ー1=2^(mー1)ー1およびNm=Nとなる。ま
た、図4(c)に示すように、区間(2^a*(2^
(mー1)ー1)、2^a*(2^mー1)]の大きさ
より区間(2^a*(2^mー1)、N]の大きさのほ
うが大きいとき、Rmの範囲は図4(d)に示す(Nm
ー1、Nm]となる。303は固定長符号ビットを割り
当てる区間Rmの範囲を定めるためにNmを計算するス
テップである。前述したように、Nmの値はNm=(2
^a)*(2^mー1)により求めることができる。3
04は区間Rmに対する識別ビットを設定するステップ
である。識別ビットは各区間の符号ビットの符号長を表
わす。識別ビットは一意に復号可能なビット列であれば
いかなるものでも構わない。本実施例では、識別ビット
としてビット長の増分Lを符号化して用いる。すなわ
ち、ビット0をL個セットした後に識別ビットの区切り
を表わすためのビット1をセットすることにより識別ビ
ットを構成する。よって、m=0、1、2、・・・に対
する識別ビットは1、01、001、・・・となる。こ
のような識別ビットで表わされる区間の符号ビット長
は、識別ビットのビット0の数に初期符号ビット長aを
加えた長さになる。305は区間Rmの自然数に対し符
号ビットを設定するステップである。区間Rmに含まれ
る2^(a+L)個の自然数に対し、a+Lビットの固
定長符号を割り当てる。例えば、符号化する自然数値を
nとしたとき、nーN(mー1)+1の値をa+Lビッ
トで表わしたビット列を自然数値n符号ビットとする。
306はパラメータの更新を行うステップである。次の
区間の符号を生成するために区間番号mの値を1だけ増
加させ、それに伴いビット長の増分値Lの値も1だけ増
加させる。さて、302〜306の処理を実行すること
により、一つの区間に対する符号の生成が終了する。3
06の処理を実行した後再び302の条件分岐に戻る。
ここで、数値比較の結果、Nが(2^a)*(3*2^
(mー1)ー1)の値以上となると、最後の区間に対す
る符号を生成し、処理を終了する。最後の区間(Nm、
N]に対する符号を生成するために、まずステップ30
7で識別ビットの設定を行う。ここでの識別ビットはL
個のビット0をセットするが、304と異なり識別ビッ
トの区切りを表わすビット1は必要ない。それは区間
(Nm、N]は最後の区間なので、識別ビットとしてこ
れ以上ビット0が続く可能性がないためである。次に、
符号ビットを割り当てるが、本実施例では可変長コード
としてCBT符号を用いる。308はCBT符号の符号
長を求めるステップである。区間RMの大きさは2^
(a+L)以上かつ2^(a+L+1)未満なので、C
BT符号の符号長はa+Lおよびa+L+1である。そ
こで、符号長k=a+Lとおいて、区間RMの符号化を
行う。309はCBT符号に基づいて区間RMの自然数
に対し符号ビットを設定するステップである。区間RM
の大きさはNーN(mー1)なので、N(mー1)≦n
≦N(mー1)+2^kーNのとき、nをa+Lビット
で符号化し、N(mー1)+2^kーN<n≦Nのと
き、nをa+L+1ビットで符号化する。本実施例に基
づいて作成した符号を図9に示す。ここではa=0、2
およびN=37の場合について示してある。次に、これ
までに説明した符号生成方法により作成された符号を用
いて、自然数データを符号化するための符号化方法につ
いて説明する。図5は本発明の符号化方法の実施例の流
れを示す図である。501は符号化するデータnを入力
するステップである。nは1〜Nの範囲に制限されてい
る。502はデータnの値からnが属する区間Rmを調
べ、その区間Rmの識別ビットI(m)と符号化を行う
ためのパラメータを求めるステップである。符号化パラ
メータは符号ビット長L(m)および区間Rmの先頭デ
ータN(m)であり、それぞれ初期符号ビット長と符号
ビットの増分の和および各区間に属すデータの最小デー
タを表わす。本実施例では図6に示したテーブルにより
識別ビットおよび符号化パラメータを参照する。すなわ
ち、識別ビットおよび符号化パラメータは区間Rmに含
まれるデータに対して等しい値をとるので、入力データ
nからnの属す区間Rmの項目を参照できるようにして
おく。503はデータnが最後の区間(NM、N]に属
するか否かを判別するステップである。そのために、本
実施例では識別ビットI(m)を構成する全てのビット
の論理和を求める。符号生成過程から明らかなように、
最後の区間(NM、N]以外の区間は全て識別ビットの
終了を示すためにビット1が含まれているのでその論理
和は1となるが、区間(NM、N]の識別ビットを構成
する全てのビットは0なのでその論理和は0となる。よ
って、求めた論理和が0のときはデータnは区間(N
M、N]に属し、1のときはそれ以外の区間に属す。5
04は503の判別結果が偽(すなわち、論理和が1)
の場合、前記データnに対する符号ビットC(n)を付
与するステップである。このときの符号ビットC(n)
のビット長はL(m)となる。本実施例では、nーN
(m)の値を求めたとき、その値が0〜2^L(m)ー
1の値をとるので、nーN(m)の値をそのままL
(m)ビットの2進数列で符号化する。505は503
の判別結果が真(すなわち、論理和が0)の場合、前記
データnに対し符号ビットC(n)を付与するステップ
である。ステップ504と同様にnーN(m)の値を求
めると、その値は0〜NーN(m)の値をとるので、n
ーN(m)の値に対してCBT符号を適用する。すなわ
ち、定数k=2^(L(m)+1)ー(NーN(m)+
1)とおいて、nーN(m)<kのときはnーN(m)
の値をL(m)ビットの2進数列で符号化し、nーN
(m)≧kのときはnーN(m)+kの値をL(m)+
1ビットの2進数列で符号化する。506は前記データ
nを表わす符号として識別ビットI(m)および符号ビ
ットC(n)を結合し、符号出力するステップである。
明する。最初に、本発明の符号生成方法について説明す
る。図3は本発明の符号生成方法の実施例の流れを示す
図である。301はパラメータを初期化するステップで
ある。パラメータは初期符号ビット長a、ビット長の増
分L、区間番号m、区間番号mにより識別される区間
(区間Rmとあらわす)の範囲を定める数Nmの4個で
ある。初期符号ビット長aは区間(0、N1]に含まれ
る自然数に対する符号の符号ビット長である。初期符号
ビット長aは符号化データの出現確率の予測に基づいて
適当な値に定められる。区間Rmは(Nmー1、Nm]
の範囲を表わす。ただし、N0=0およびN(M+1)
=Nとする。ビット長の増分Lは初期符号ビット長aに
対する各区間の符号ビット長の増加分を示す。すなわ
ち、各区間の符号ビット長はa+Lになる。初期値とし
て各パラメータをL=0、m=1、N0=0にセットす
る。本実施例では、区間R1、R2、R3、・・・、R
Mの大きさがそれぞれ2^a、2^(a+1)、2^
(a+2)、・・・、2^(a+Mー1)となるように
符号を生成する。このとき、Nmは区間Rmの最大数を
表わすので、Nmの値はR1〜Rmの各区間の大きさの
総和となるので、Nmは初項2^a、公比2の等比級数
の和になるので、Nm=(2^a)*(2^mー1)と
なる。302は自然数の最大値Nと初期符号ビット長a
および区間番号mにより定まる値(2^a)*(3*2
^(mー1)ー1)の大小を比較するステップである。
Nが小さければ、区間Rmの自然数に対して固定長符号
ビットを割り当てるために303〜306を実行し、次
の区間の符号を生成するために302へ戻る。そうでな
ければ、区間Rmの自然数に対して可変長符号ビットを
割り当てるために307〜309を実行し、処理を終了
する。ここで、302の条件分岐において、Nと(2^
a)*(3*2^(mー1)ー1)を比較する理由につ
いて説明する。まず、区間R(Mー1)の大きさは2^
(a+Mー1)なので、区間R(Mー1)の符号ビット
長はa+Mー1ビットである。最後の区間RMの大きさ
が2^(a+Mー1)より小さいと、区間RMの符号ビ
ット長をa+Mー1ビットより短いビットで表わすこと
が可能になる。そのため、区間RMの大きさは区間R
(Mー1)の大きさ以上でなければならない。図4
(a)は区間R(mー1)まで符号生成したときの様子
を数直線上に図示したものである。Nm=(2^a)*
(2^mー1)なので、区間Rmの範囲は通常(2^a
*(2^(mー1)ー1)、2^a*(2^mー1)]
となるが、図4(a)に示すように、区間(2^a*
(2^(mー1)ー1)、2^a*(2^mー1)]の
大きさ2^(a+mー1)より区間(2^a*(2^m
ー1)、N]の大きさNー2^a*(2^mー1)のほ
うが小さいとき、すなわちNー2^a*(2^mー1)
<2^(a+mー1)のとき、Rmの範囲は図4(b)
に示すように(Nmー1、Nm]となり、このときNm
ー1=2^(mー1)ー1およびNm=Nとなる。ま
た、図4(c)に示すように、区間(2^a*(2^
(mー1)ー1)、2^a*(2^mー1)]の大きさ
より区間(2^a*(2^mー1)、N]の大きさのほ
うが大きいとき、Rmの範囲は図4(d)に示す(Nm
ー1、Nm]となる。303は固定長符号ビットを割り
当てる区間Rmの範囲を定めるためにNmを計算するス
テップである。前述したように、Nmの値はNm=(2
^a)*(2^mー1)により求めることができる。3
04は区間Rmに対する識別ビットを設定するステップ
である。識別ビットは各区間の符号ビットの符号長を表
わす。識別ビットは一意に復号可能なビット列であれば
いかなるものでも構わない。本実施例では、識別ビット
としてビット長の増分Lを符号化して用いる。すなわ
ち、ビット0をL個セットした後に識別ビットの区切り
を表わすためのビット1をセットすることにより識別ビ
ットを構成する。よって、m=0、1、2、・・・に対
する識別ビットは1、01、001、・・・となる。こ
のような識別ビットで表わされる区間の符号ビット長
は、識別ビットのビット0の数に初期符号ビット長aを
加えた長さになる。305は区間Rmの自然数に対し符
号ビットを設定するステップである。区間Rmに含まれ
る2^(a+L)個の自然数に対し、a+Lビットの固
定長符号を割り当てる。例えば、符号化する自然数値を
nとしたとき、nーN(mー1)+1の値をa+Lビッ
トで表わしたビット列を自然数値n符号ビットとする。
306はパラメータの更新を行うステップである。次の
区間の符号を生成するために区間番号mの値を1だけ増
加させ、それに伴いビット長の増分値Lの値も1だけ増
加させる。さて、302〜306の処理を実行すること
により、一つの区間に対する符号の生成が終了する。3
06の処理を実行した後再び302の条件分岐に戻る。
ここで、数値比較の結果、Nが(2^a)*(3*2^
(mー1)ー1)の値以上となると、最後の区間に対す
る符号を生成し、処理を終了する。最後の区間(Nm、
N]に対する符号を生成するために、まずステップ30
7で識別ビットの設定を行う。ここでの識別ビットはL
個のビット0をセットするが、304と異なり識別ビッ
トの区切りを表わすビット1は必要ない。それは区間
(Nm、N]は最後の区間なので、識別ビットとしてこ
れ以上ビット0が続く可能性がないためである。次に、
符号ビットを割り当てるが、本実施例では可変長コード
としてCBT符号を用いる。308はCBT符号の符号
長を求めるステップである。区間RMの大きさは2^
(a+L)以上かつ2^(a+L+1)未満なので、C
BT符号の符号長はa+Lおよびa+L+1である。そ
こで、符号長k=a+Lとおいて、区間RMの符号化を
行う。309はCBT符号に基づいて区間RMの自然数
に対し符号ビットを設定するステップである。区間RM
の大きさはNーN(mー1)なので、N(mー1)≦n
≦N(mー1)+2^kーNのとき、nをa+Lビット
で符号化し、N(mー1)+2^kーN<n≦Nのと
き、nをa+L+1ビットで符号化する。本実施例に基
づいて作成した符号を図9に示す。ここではa=0、2
およびN=37の場合について示してある。次に、これ
までに説明した符号生成方法により作成された符号を用
いて、自然数データを符号化するための符号化方法につ
いて説明する。図5は本発明の符号化方法の実施例の流
れを示す図である。501は符号化するデータnを入力
するステップである。nは1〜Nの範囲に制限されてい
る。502はデータnの値からnが属する区間Rmを調
べ、その区間Rmの識別ビットI(m)と符号化を行う
ためのパラメータを求めるステップである。符号化パラ
メータは符号ビット長L(m)および区間Rmの先頭デ
ータN(m)であり、それぞれ初期符号ビット長と符号
ビットの増分の和および各区間に属すデータの最小デー
タを表わす。本実施例では図6に示したテーブルにより
識別ビットおよび符号化パラメータを参照する。すなわ
ち、識別ビットおよび符号化パラメータは区間Rmに含
まれるデータに対して等しい値をとるので、入力データ
nからnの属す区間Rmの項目を参照できるようにして
おく。503はデータnが最後の区間(NM、N]に属
するか否かを判別するステップである。そのために、本
実施例では識別ビットI(m)を構成する全てのビット
の論理和を求める。符号生成過程から明らかなように、
最後の区間(NM、N]以外の区間は全て識別ビットの
終了を示すためにビット1が含まれているのでその論理
和は1となるが、区間(NM、N]の識別ビットを構成
する全てのビットは0なのでその論理和は0となる。よ
って、求めた論理和が0のときはデータnは区間(N
M、N]に属し、1のときはそれ以外の区間に属す。5
04は503の判別結果が偽(すなわち、論理和が1)
の場合、前記データnに対する符号ビットC(n)を付
与するステップである。このときの符号ビットC(n)
のビット長はL(m)となる。本実施例では、nーN
(m)の値を求めたとき、その値が0〜2^L(m)ー
1の値をとるので、nーN(m)の値をそのままL
(m)ビットの2進数列で符号化する。505は503
の判別結果が真(すなわち、論理和が0)の場合、前記
データnに対し符号ビットC(n)を付与するステップ
である。ステップ504と同様にnーN(m)の値を求
めると、その値は0〜NーN(m)の値をとるので、n
ーN(m)の値に対してCBT符号を適用する。すなわ
ち、定数k=2^(L(m)+1)ー(NーN(m)+
1)とおいて、nーN(m)<kのときはnーN(m)
の値をL(m)ビットの2進数列で符号化し、nーN
(m)≧kのときはnーN(m)+kの値をL(m)+
1ビットの2進数列で符号化する。506は前記データ
nを表わす符号として識別ビットI(m)および符号ビ
ットC(n)を結合し、符号出力するステップである。
【0006】
【発明の効果】以上のように請求項1から請求項7の符
号生成方法によれば、1〜Nで表わされる任意の大きさ
の自然数データに対し、小さい数値の符号長が必ず大き
い数値の符号長に等しいかあるいは短くなり、また符号
の冗長性が最小となるように符号化できる。このことに
より、正確な確率分布は不明であるが概ね小さい数値の
ほうが出現確率が高いことが判明しているような自然数
データに対して効率的な符号を生成することができる。
また、請求項8の符号化方法によれば、上記の符号生成
方法により生成された符号を用いて自然数データを効率
的に符号化することができる。
号生成方法によれば、1〜Nで表わされる任意の大きさ
の自然数データに対し、小さい数値の符号長が必ず大き
い数値の符号長に等しいかあるいは短くなり、また符号
の冗長性が最小となるように符号化できる。このことに
より、正確な確率分布は不明であるが概ね小さい数値の
ほうが出現確率が高いことが判明しているような自然数
データに対して効率的な符号を生成することができる。
また、請求項8の符号化方法によれば、上記の符号生成
方法により生成された符号を用いて自然数データを効率
的に符号化することができる。
【図1】 本発明の符号生成方法の基本的な流れを示す
図。
図。
【図2】 本発明の符号化方法の基本的な流れを示す
図。
図。
【図3】 本発明の符号生成方法の実施例の流れを示す
図。
図。
【図4】 自然数データの区分を説明するための図。
【図5】 本発明の符号化方法の実施例の流れを示す
図。
図。
【図6】 図5ステップ502のテーブルの一例を示す
図。
図。
【図7】 SSS符号による符号例を示す図。
【図8】 CBT符号による符号例を示す図。
【図9】 本発明の符号生成方法による符号例を示す
図。
図。
101 自然数
Claims (8)
- 【請求項1】 1からNの自然数に対応する符号を生成
するための符号生成方法において、所定数N1、N2、
・・、Nm、・・、NM(0<N1<N2<・・<Nm
<・・<NM<N)を定め、前記所定数により1からN
の自然数を区間(0、N1]、(N1、N2]、・・、
(NM、N]に区分する第1のステップと、前記区間に
対し、任意の自然数が含まれる区間を識別するための識
別ビットを生成する第2のステップと、前記区間(0、
N1]、(N1、N2]、・・、(NMー1、NM]の
各々の区間に含まれる自然数に対し、固定長の符号ビッ
トを割り当てる第3のステップと、前記区間(NM、
N]の区間に含まれる自然数に対し、可変長の符号ビッ
トを割り当てる第4のステップを持つことを特徴とする
符号生成方法。 - 【請求項2】 前記区間(0、N1]、(N1、N
2]、・・、(NMー1、NM]の大きさは2の塁乗で
あることを特徴とする請求項1記載の符号生成方法。 - 【請求項3】 前記第1のステップは、初期符号ビット
長aを設定し、前記所定数Nmを(2^a)*(2^m
ー1)の値に設定し、前記所定数の最大値NMを(2^
a)*(3*2^(Mー1)ー1)≦Nを満たす最大整
数Mの値にしたがって設定することにより構成されるこ
とを特徴とする請求項2記載の符号生成方法。 - 【請求項4】 前記第2のステップにおいて、前記識別
ビットは、前記区間(0、N1]、(N1、N2]、・
・、(NMー1、NM]の中の各々の区間に含まれる自
然数を表わす前記符号ビットのビット長を表わすことを
特徴とする請求項1記載の符号生成方法。 - 【請求項5】 前記区間(0、N1]、(N1、N
2]、・・、(NMー1、NM]に対する前記識別ビッ
トは、各々の区間に含まれる自然数を表わす前記符号ビ
ットのビット長と初期符号ビット長aの差分値に等しい
数の第1のビットとそれに続く1個の第2のビットから
構成され、前記区間(NM、N]に対する前記識別ビッ
トは、区間(NMー1、NM]の識別ビットの第2のビ
ットを第1のビットに置き換えたものから構成されるこ
とを特徴とする請求項4記載の符号生成方法。 - 【請求項6】 前記第3のステップにおいて、前記区間
(0、N1]、(N1、N2]、・・、(NMー1、N
M]の各々の区間にビット長a、a+1、・・、a+M
ー1の前記固定長の符号ビットを割り当てることを特徴
とする請求項2記載の符号生成方法。 - 【請求項7】 前記第4のステップにおいて、前記区間
(NM、N]に対し、ビット長a+Mビットの符号ビッ
トを2^kーN個(ここで、k=〈log2(NーN
M)〉)の自然数に割り当て、またビット長a+M+1
ビットの符号ビットを2*Nー2^k個の自然数に割り
当てることを特徴とする請求項2記載の符号生成方法。 - 【請求項8】 1からNの自然数により対応づけられる
データを符号化するための符号化方法において、符号化
すべきデータn(1≦n≦N)を入力する第5のステッ
プと、所定数N1 、N2、・・、Nm、・・、NM(0
<N1 <N2<・・<Nm<・・<NM<N)により区
分される区間(0、N1 ]、(N1 、N2]、・・、
(NM、N]のいずれに前記データnが属するかを識別
するための識別ビットを付与する第6のステップと、前
記データnが区間(NM、N]に属すか否かを判別する
第7のステップと、前記データnが区間(0、N1 ]、
(N1、N2]、・・、(NMー1、NM]に属す場
合、前記データnに対し各区間内で固定長となる符号ビ
ットを付与する第8のステップと、前記データnが区間
(NM、N]に属す場合、前記データnに対し区間内で
可変長となる符号ビットを付与する第9のステップと、
前記データnを表わす符号として前記識別ビットおよび
前記符号ビットを出力する第10のステップを持つこと
を特徴とする符号化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01116497A JP3350385B2 (ja) | 1997-01-24 | 1997-01-24 | 符号生成方法および符号化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01116497A JP3350385B2 (ja) | 1997-01-24 | 1997-01-24 | 符号生成方法および符号化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10209877A true JPH10209877A (ja) | 1998-08-07 |
JP3350385B2 JP3350385B2 (ja) | 2002-11-25 |
Family
ID=11770411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01116497A Expired - Fee Related JP3350385B2 (ja) | 1997-01-24 | 1997-01-24 | 符号生成方法および符号化方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3350385B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002541523A (ja) * | 1999-03-31 | 2002-12-03 | ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング | 符号化/復号のための方法および装置 |
JP2012530266A (ja) * | 2009-06-19 | 2012-11-29 | ▲ホア▼▲ウェイ▼技術有限公司 | パルス符号化のための方法および装置、パルス復号のための方法および装置 |
US9858938B2 (en) | 2010-06-24 | 2018-01-02 | Huawei Technologies Co., Ltd. | Pulse encoding and decoding method and pulse codec |
US10153780B2 (en) | 2007-04-29 | 2018-12-11 | Huawei Technologies Co.,Ltd. | Coding method, decoding method, coder, and decoder |
-
1997
- 1997-01-24 JP JP01116497A patent/JP3350385B2/ja not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002541523A (ja) * | 1999-03-31 | 2002-12-03 | ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング | 符号化/復号のための方法および装置 |
US10153780B2 (en) | 2007-04-29 | 2018-12-11 | Huawei Technologies Co.,Ltd. | Coding method, decoding method, coder, and decoder |
US10425102B2 (en) | 2007-04-29 | 2019-09-24 | Huawei Technologies Co., Ltd. | Coding method, decoding method, coder, and decoder |
US10666287B2 (en) | 2007-04-29 | 2020-05-26 | Huawei Technologies Co., Ltd. | Coding method, decoding method, coder, and decoder |
JP2012530266A (ja) * | 2009-06-19 | 2012-11-29 | ▲ホア▼▲ウェイ▼技術有限公司 | パルス符号化のための方法および装置、パルス復号のための方法および装置 |
US8723700B2 (en) | 2009-06-19 | 2014-05-13 | Huawei Technologies Co., Ltd. | Method and device for pulse encoding, method and device for pulse decoding |
US9349381B2 (en) | 2009-06-19 | 2016-05-24 | Huawei Technologies Co., Ltd | Method and device for pulse encoding, method and device for pulse decoding |
US10026412B2 (en) | 2009-06-19 | 2018-07-17 | Huawei Technologies Co., Ltd. | Method and device for pulse encoding, method and device for pulse decoding |
US9858938B2 (en) | 2010-06-24 | 2018-01-02 | Huawei Technologies Co., Ltd. | Pulse encoding and decoding method and pulse codec |
US10446164B2 (en) | 2010-06-24 | 2019-10-15 | Huawei Technologies Co., Ltd. | Pulse encoding and decoding method and pulse codec |
Also Published As
Publication number | Publication date |
---|---|
JP3350385B2 (ja) | 2002-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100553152C (zh) | 基于cabac的编码方法和设备及解码方法和设备 | |
CN109450596B (zh) | 编码方法、解码方法、编码设备、解码设备、存储介质及终端 | |
US5572206A (en) | Data compression method and system | |
US5363099A (en) | Method and apparatus for entropy coding | |
US7623047B2 (en) | Data sequence compression | |
JP3083730B2 (ja) | データ情報を圧縮するためのシステムおよび方法 | |
US5694128A (en) | Tree structured binary arithmetic coder | |
US5594435A (en) | Permutation-based data compression | |
KR20030040567A (ko) | 허프만 디코딩을 수행하는 방법 | |
ES2586409T3 (es) | Método y aparato para codificación y decodificación aritmética | |
US6987469B2 (en) | Method of generating Huffman code length information | |
US7253752B2 (en) | Coding apparatus, decoding apparatus, coding method, decoding method and program | |
US5617089A (en) | Huffman code decoding circuit | |
JP3593884B2 (ja) | 符号化装置および復号装置 | |
US11606103B2 (en) | Data compression method, data compression device, data decompression method, and data decompression device | |
JP3350385B2 (ja) | 符号生成方法および符号化方法 | |
CN114301468A (zh) | 一种fse编码方法、装置、设备及存储介质 | |
US6919827B2 (en) | Method and apparatus for effectively decoding Huffman code | |
US7683809B2 (en) | Advanced lossless bit coding | |
US20030113030A1 (en) | Encoding apparatus, decoding apparatus, encoding/decoding apparatus, encoding method, decoding method, encoding/decoding method, and programs | |
JPH07107303A (ja) | ハフマン符号の復号化方法 | |
US10931303B1 (en) | Data processing system | |
US20060125660A1 (en) | Digital data compression robust relative to transmission noise | |
JP3199292B2 (ja) | ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法 | |
JP2002271206A (ja) | データ符号化復号方法、データ符号化復号システム、及びデータ復号装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 5 Free format text: PAYMENT UNTIL: 20070913 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080913 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090913 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |