(57)【要約】【課題】零値ではない小さな値も含み、その分布が小さな値に大きく偏っている整数値の系列であっても、少ない平均ビット数で符号化することができる符号化復号技術を提供する。【解決手段】入力された非負の整数値xn、n∈{1, 2, ..., N}による系列（以下、「整数系列」という）について、Lを2以上の整数とし、整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号を得、整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号を得る整数符号化部を含む。【選択図】図２
2020077969.tif 000002
【特許請求の範囲】
【請求項１】
入力された非負の整数値xn、n∈{1, 2, ..., N}による系列（以下、「整数系列」という）について、
Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、
ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、
前記整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）を得、
前記整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）を得る整数符号化部
を含み、
整数系列における整数値0の0個からL-1個のL通りの連続個数のそれぞれは、
（ａ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、
（ｂ）符号ＢがK×xnビットであるときの、
該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、
（ｃ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、
のL通りの部分符号のうちの何れかと一対一に対応する
符号化装置。
【請求項２】
請求項１に記載の符号化装置であって、
前記整数系列は、入力された非負の整数値による系列に含まれる所定サンプル毎の整数値による系列であり、
前記整数系列ごとに、
前記整数系列に含まれる整数値に基づいてゴロムパラメータsを求める処理と、
前記整数系列に含まれる整数値に基づいてライスパラメータrを求める処理と、
前記整数系列について指数分布p(xn, 1-2-1/L)に対する尤度、尤度の推定値、対数尤度、対数尤度の推定値のいずれかが最大となる符号化パラメータLを求める処理と、の少なくとも何れかと、
ゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかを符号化してパラメータ符号を得る処理と、
を行うパラメータ決定部を更に含み、
前記整数符号化部は、前記整数系列ごとに、
前記パラメータ決定部が得た符号化パラメータL、
または、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、前記パラメータ決定部が得た前記ゴロムパラメータsから得た符号化パラメータL、
または、2rであるｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、前記パラメータ決定部が得た前記ライスパラメータrから得た符号化パラメータL、
を上記Lとして用いる
符号化装置。
【請求項３】
請求項２に記載の符号化装置であって、
前記整数符号化部は、前記整数系列に対応する前記符号化パラメータLが１以下である場合、または、前記整数系列に対応する前記ゴロムパラメータsが１以上である場合、または、前記整数系列に対応する前記ライスパラメータrが非負である場合、には、前記整数系列をゴロム符号化またはゴロムライス符号化して符号列を得る
符号化装置。
【請求項４】
入力された符号列について、
Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、
ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、
前記入力された符号列に含まれる、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）から、整数値0のL個の連続を得、
前記入力された符号列に含まれる、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）から、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組を得ることにより整数値xn、n∈{1, 2, ..., N}による系列を得る整数復号部
を含み、
（ａ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、
（ｂ）符号ＢがK×xnビットであるときの、
該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、
（ｃ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、
のL通りの部分符号のそれぞれは、
前記整数復号部により得られる整数値による系列における整数値0の0個からL-1個のL通りの連続個数のうちの何れかと一対一に対応する
復号装置。
【請求項５】
請求項４に記載の復号装置であって、
前記整数復号部は、前記入力された符号列の最初から順に、
前記入力された符号列を、連続するKビット（以下、「Kビット列」という）ずつ読みこむことと、
前記読み込まれたKビット列が“y”を含むものであるとき、該“y”を含むKビット列の直前のビットが、前記符号Ａまたは前記符号Ｂの終端のビットであると識別することと、を行うことで、
前記入力された符号列に含まれる前記符号Ａと前記符号Ｂを特定する
復号装置。
【請求項６】
請求項４または５に記載の復号装置であって、
所定単位ごとのパラメータ符号と前記符号列とが入力され、
所定単位ごとに、前記パラメータ符号を復号してゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかを得るパラメータ復号部を更に含み、
前記整数復号部は、所定単位ごとに、
前記パラメータ復号部が得た符号化パラメータL、
または、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、前記パラメータ復号部が得た前記ゴロムパラメータsから得た符号化パラメータL、
または、2rであるｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、前記パラメータ復号部が得た前記ライスパラメータrから得た符号化パラメータL、
を上記Lとして用いる
復号装置。
【請求項７】
請求項６に記載の復号装置であって、
前記整数復号部は、前記符号化パラメータLが１以下である場合、または、前記ゴロムパラメータsが１以上である場合、または、前記ライスパラメータrが非負である場合、には、前記符号列をゴロム復号またはゴロムライス復号して整数値による系列を得る
復号装置。
【請求項８】
非負値である整数値xn、n∈{1, 2, ..., N}の系列（以下、「整数系列」という）を表す符号列のデータ構造であって、
Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、
ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、
前記符号列は、前記整数系列から前記符号列を得る符号化装置、または／および、前記符号列から前記整数系列を得る復号装置、で用いられるものであり、
前記整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）と、
前記整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）とを含み、
整数系列における整数値0の0個からL-1個のL通りの連続個数のそれぞれは、
（ａ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、
（ｂ）符号ＢがK×xnビットであるときの、
該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、
（ｃ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、
のL通りの部分符号のうちの何れかと一対一に対応する
符号列のデータ構造。
【請求項９】
符号化装置が、入力された非負の整数値xn、n∈{1, 2, ..., N}による系列（以下、「整数系列」という）について、
Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、
ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、
前記整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）を得、
前記整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）を得る整数符号化ステップ
を実行する符号化方法であって、
整数系列における整数値0の0個からL-1個のL通りの連続個数のそれぞれは、
（ａ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、
（ｂ）符号ＢがK×xnビットであるときの、
該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、
（ｃ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、
のL通りの部分符号のうちの何れかと一対一に対応する
符号化方法。
【請求項１０】
復号装置が、入力された符号列について、
Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、
ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、
前記入力された符号列に含まれる、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）から、整数値0のL個の連続を得、
前記入力された符号列に含まれる、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）から、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組を得ることにより整数値xn、n∈{1, 2, ..., N}による系列を得る整数復号ステップ
を実行する復号方法であって、
（ａ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、
（ｂ）符号ＢがK×xnビットであるときの、
該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、
（ｃ）符号ＢがK×xn+1ビットであるときの、
該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、
のL通りの部分符号のそれぞれは、
前記整数復号ステップにより得られる整数値による系列における整数値0の0個からL-1個のL通りの連続個数のうちの何れかと一対一に対応する
復号方法。
【請求項１１】
請求項１ないし３の何れか１項に記載の符号化装置としてコンピュータを機能させるための符号化プログラム。
【請求項１２】
請求項４ないし７の何れか１項に記載の復号装置としてコンピュータを機能させるための復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声や音響の時系列ディジタル信号のサンプル系列などの整数値から成るサンプル系列を符号化、復号する技術に関する。
【背景技術】
【０００２】
圧縮を目的としてサンプル系列を符号化する技術として、サンプル値を量子化することにより得た有限精度の値（以下、これを整数値と呼ぶ）を可逆符号化することにより、サンプル系列の記述に用いるビット長を削減する技術がある。この技術においては、どの整数値に対してどの長さの符号を割り当てるかが、圧縮の性能に直結する。この事実は、画像信号のサンプル列を符号化復号する画像符号化や音響信号のサンプル列を符号化復号する音響符号化などの、サンプル系列の符号化や復号の工学的応用先においても例外ではない。
【０００３】
一般的に可変長の可逆符号化においては、復号可能性の制約により、整数値に割り当てる符号の構成に制約がある。具体的には、ある整数値に対して短い符号を割り当てるとすると、復号可能な符号にするには他の整数値に対して長い符号を割り当てなければならない、という制約である。従って、圧縮性能を高くするためには、符号の構成（各整数値への符号の割り当て）は整数値の系列中の値の分布に適したものとする必要がある。具体的には、出現確率が高い整数値に対して短い符号を割り当て、出現確率が低い整数値に対しては長い符号を割り当てることで、整数値の系列の圧縮後のビット長の期待値を小さくすることができる。
【０００４】
上記のような可逆符号化において最も単純な可変長符号の一つとして用いられてきたのがGolomb符号（ゴロム符号）である。Golomb符号は、整数値の系列が指数分布に属する場合、つまり整数値の出現確率が値の大きさに対して指数的に低くなっている場合において、最小な期待ビット長（最小のビット長）を達成することが知られている。
【０００５】
このGolomb符号は非常に単純な構成であることから広く用いられている。Golomb符号は、例えば、音響信号をAD変換してPCMにした整数値の系列やその系列をフーリエ変換して周波数スペクトルに変換した系列などに含まれる各サンプル値を量子化値で除算して得た整数値の絶対値の系列を符号化するときに用いられる。或いは、Golomb符号は、上記整数値の系列の各サンプル値xを下記の式(1)により求まるx’にそれぞれ置き換えた非負整数値からなる系列を符号化するときに用いられる。
【０００６】
【数１】
2020077969.tif 000003
【０００７】
従って、以下では非負整数値を符号化・復号する場合について説明するが、式(1)などにより整数値全体を非負整数値に一対一に変換できるという上記の事実から、符号化処理の前段で式(1)などにより整数値全体を非負整数値に変換したり、復号処理の後段で式(1)の逆変換などにより非負整数値を整数値全体に変換したりすることで、整数値全体の符号化・復号にも適応可能である。
【０００８】
Golomb符号化は、Golombパラメータ（ゴロムパラメータ）sの値に応じて、図１の表のように、非負整数値の入力xに対する符号が、入力xの値がs増える度に1ビット増加するものとし、下記の式(2)の指数分布（片側ラプラス分布）に従う非負整数値の系列に対して近似的に最適な期待ビット長を与えるように符号化できるものである。
【０００９】
【数２】
2020077969.tif 000004
【００１０】
ただし、Golombパラメータsは自然数である。つまり、Golombパラメータsを小さな自然数とすれば、値の偏りの大きい系列を少ない平均ビット数で符号化でき、sを大きな自然数とすれば、値の偏りの小さい系列を少ない平均ビット数で符号化できる。なお、sが2のべき乗数であるGolomb符号は、特にGolomb-Rice符号（ゴロムライス符号）と呼ばれている。Golomb-Rice符号は、具体的には、非負の整数値であるRiceパラメータ（ライスパラメータ）をrとすると、Golombパラメータs=2rを用いたときのGolomb符号である。
【００１１】
しかし、入力される非負整数値の系列の現実の分布では、式(2)におけるsとして0より大きな任意の実数値を取りうるのに対して、Golomb符号はGolombパラメータsを1未満にすることができない。また、s=2rとなるrについていえば、入力される非負整数値の系列の現実の分布ではrは任意の実数値を取りうるのに対して、Golomb-Rice符号はRiceパラメータｒを負値にすることができない。従って、例えば分布p(x,2-0.1)に従う値の系列など、系列の値の偏りが分布p(x,2-1)よりも大きくなるにつれ、GolombパラメータsやRiceパラメータrをどのように設定しても圧縮の効率は低下していく。
【００１２】
例えば、音響信号をAD変換してPCMにするときには、大音量まで記録できるように表現可能な数値の範囲を設定しているため、多くの信号の系列に含まれる値は表現可能な数値の範囲の絶対値が小さな値のところに偏る傾向にある。特に、音声信号は発話の無い時間区間があるため、零値や背景雑音だけの非常に小さな値に偏る。また、このような信号の系列に含まれる各値を量子化値で除算して得た整数値の系列は、量子化により、元の系列よりも更に零値を含む小さな値に偏っている。
【００１３】
零値に偏った整数値の系列を符号化する先行技術としては非特許文献１の技術がある。非特許文献１の技術は、入力された整数値の系列に含まれる零値は、零値が連続する個数を予め決めた固定ビット数で符号化して、入力された整数値の系列に含まれる零値以外の値は、その値から１を減算して得た値（値-1）をGolomb-Rice符号化するものである。
【００１４】
また、零値を含む小さな値に偏った整数値の系列を符号化する先行技術としては非特許文献２の技術がある。非特許文献２の技術は、２つの整数値による組と１つの整数値を全単射なように予め紐付けておき、整数値の系列に含まれる２つの整数値による組を1つの整数値に変換し、変換後の整数値の系列をGolomb-Rice符号化するものである。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】H. S. Malvar, “Adaptive Run-Length / Golomb-Rice Encoding of Quantized Generalized Gaussian Sources with Unknown Statistics”, in Proc. Data Compression Conference (DCC) 06, IEEE Computer Society, pp.23-32, Mar. 2006.
【非特許文献２】高村誠之，八島由幸，“分布写像に基づくガウス性情報源の効率的符号化”，映像情報メディア学会誌，Vol.61，No.9，pp.1357-1362，2007．
【発明の概要】
【発明が解決しようとする課題】
【００１６】
非特許文献１の技術によれば、零値については少ない平均ビット数で符号化することができる。しかし、非特許文献１の技術では零値以外についてはGolomb-Rice符号化とほぼ同じ符号化を行うので、非特許文献１の技術には、零値ではない小さな値が分布p(x,2-1)よりも大きく偏っている場合には、圧縮の性能が低下するという課題がある。
【００１７】
また、非特許文献１の技術は数学的に表現される分布に対応した符号化方法ではない。従って、非特許文献１の技術には、整数値の系列における値の分布を知ったところで、零値の連続する個数を表現するために用いるビット数としてどれを選択して符号化すれば少ない平均ビット数で符号化できるのかがわからないという課題もある。
【００１８】
一方、非特許文献２の技術によれば、分布p(x, 2-1)よりも値の偏っている整数値の系列を少ない平均ビット数で符号化することができる。しかし、非特許文献２の技術は、１つの整数値に対する平均ビット数を0.5ビットより小さくできず、理論上最適な平均ビット数が0.5ビット未満となるような偏りの大きい整数値の系列に対しては、圧縮の性能が低下するという課題がある。
【００１９】
そこで本発明では、零値ではない小さな値も含み、その分布が小さな値に大きく偏っている整数値の系列であっても、少ない平均ビット数で符号化することができる符号化復号技術を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一態様は、入力された非負の整数値xn、n∈{1, 2, ..., N}による系列（以下、「整数系列」という）について、Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、前記整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）を得、前記整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）を得る整数符号化部を含み、整数系列における整数値0の0個からL-1個のL通りの連続個数のそれぞれは、（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、のL通りの部分符号のうちの何れかと一対一に対応する。
【００２１】
本発明の一態様は、入力された符号列について、Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、前記入力された符号列に含まれる、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）から、整数値0のL個の連続を得、前記入力された符号列に含まれる、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）から、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組を得ることにより整数値xn、n∈{1, 2, ..., N}による系列を得る整数復号部を含み、（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、のL通りの部分符号のそれぞれは、前記整数復号部により得られた整数値による系列における整数値0の0個からL-1個のL通りの連続個数のうちの何れかと一対一に対応する。
【００２２】
本発明の一態様は、非負値である整数値xn、n∈{1, 2, ..., N}の系列（以下、「整数系列」という）を表す符号列のデータ構造であって、Lを2以上の整数とし、2KがLを上回る最小の自然数をKとし、2KからLを引いた自然数をpとし、Lから2K-1を引いた自然数をqとし、ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”である、として、前記符号列は、前記整数系列から前記符号列を得る符号化装置、または／および、前記符号列から前記整数系列を得る復号装置、で用いられるものであり、前記整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）と、前記整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）とを含み、整数系列における整数値0の0個からL-1個のL通りの連続個数のそれぞれは、（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号と、（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号と、（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が前記（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号と、のL通りの部分符号のうちの何れかと一対一に対応する。
【発明の効果】
【００２３】
本発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【図面の簡単な説明】
【００２４】
【図１】非負整数値の入力xに対するGolomb符号を示す図である。
【図２】符号化装置１００の構成の一例を示すブロック図である。
【図３】符号化装置１００の動作の一例を示すフローチャートである。
【図４】K=2のときの符号木の一例を示す図である。
【図５】K=3のときの符号木の一例を示す図である。
【図６】Kを一般化したときの符号木の一例を示す図である。
【図７】復号装置１５０の構成の一例を示すブロック図である。
【図８】復号装置１５０の動作の一例を示すフローチャートである。
【図９】K=2のときの対応表の一例を示す図である。
【図１０】K=3のときの対応表の一例を示す図である。
【図１１】L=2またはL=3のときの符号木の一例を示す図である。
【図１２】L=4またはL=5のときの符号木の一例を示す図である。
【図１３】Lを一般化したときの符号木の一例を示す図である。
【図１４】L=3のときの対応表の一例を示す図である。
【図１５】L=5のときの対応表の一例を示す図である。
【図１６】符号化装置４００の構成の一例を示すブロック図である。
【図１７】符号化装置４００の動作の一例を示すフローチャートである。
【図１８】復号装置４５０の構成の一例を示すブロック図である。
【図１９】復号装置４５０の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００２６】
＜第一実施形態＞
≪符号化装置≫
図２及び図３を参照して、第一実施形態の符号化装置１００が実行する符号化方法の処理手続きを説明する。第一実施形態の符号化装置１００は、図２に示す通り、整数符号化部１１０を含む。第一実施形態の符号化装置１００が図３に示す各ステップの処理を実行することにより、第一実施形態の符号化方法が実現される。
【００２７】
第一実施形態の符号化装置１００には、非負の整数値の系列が入力される。この非負の整数値の系列としては、例えば、マイクロホンで収音した音声や音楽などをディジタル信号に変換して得た信号やカメラで撮像した画像や映像をディジタル信号に変換して得た信号などの信号の一部あるいは全部を既存の技術により量子化して有限精度の値にして得た整数値の絶対値による系列、または、整数値をxとして式(1)により得たx’による系列を入力してもよい。
【００２８】
第一実施形態の符号化装置１００は、予め定めた複数の符号木を予め定めた規則に則って用い、非負の整数値の系列を可変長符号化することで、Golomb符号化やGolomb-Rice符号化が想定している指数分布よりも偏りの大きな分布の非負の整数値の系列に対して、Golomb符号化やGolomb-Rice符号化よりも短いビット長となる符号化処理を実現するものである。ここで符号木とは、入力された非負の整数値に対してどの符号を割り当てるかの予め定めた規則を表すグラフのことを指す。以下では、符号化装置１００に入力された非負の整数値を単に「整数値」と呼んで説明する。
【００２９】
［整数符号化部１１０］
整数符号化部１１０には、符号化装置１００に入力された整数値の系列のうちの、Nサンプル（Nは自然数）ずつの整数値による系列が入力される。入力された整数値による系列を整数系列x1, x2, …, xNとする。整数符号化部１１０は、整数符号化部１１０内に予め記憶したまたは図示しない手段により入力された2以上の自然数である符号化パラメータKに基づき、整数系列x1, x2, …, xNを以下の符号木を用いた符号化処理で符号化して符号を得、得た符号を整数符号として出力する（Ｓ１１０）。以下では、整数系列x1, x2, …, xNの各整数がxn(nは系列中のサンプル番号であり、n∈{1, 2, ..., N})であるとして説明を行う。
【００３０】
［［符号化処理に用いる符号木］］
まず、整数符号化部１１０における符号化処理に用いる符号木を例示する。
【００３１】
整数符号化部１１０には、図４から図６に例示するような2K-1個（2のK-1乗個）の符号木が予め記憶されている。図４はK=2のときの符号木の例であり、T(0)とT(1)のそれぞれが符号木である。図５はK=3のときの符号木の例であり、T(0)からT(3)のそれぞれが符号木である。図６はKを一般化したときの符号木の例であり、T(0)からT(2K-1-1)のそれぞれが符号木である。以下では、Tに付された括弧内の番号を符号木番号と呼ぶ。
【００３２】
［［符号木における入力された整数値と当該整数値に対応する符号との関係］］
次に、各符号木における入力された整数値と当該整数値に対応する符号との関係を説明する。
【００３３】
各符号木のノードの右側にある三角で囲まれている整数値は入力された整数値に対応している。また、各符号木のエッジの左側にあるビット値’0’及び’1’は入力された整数値に割り当てる符号の規則に対応している。この規則は、符号木の上端のノードから入力された整数値に対応するノードまでのエッジの左側にあるビット値を並べたものを入力された整数値に割り当てる符号として得る規則である。
【００３４】
2K-1個の符号木のうちの１つの符号木は、図４から図６のT(0)に対応するものであり、入力された整数値xnに対応する符号として、ビット数がK×xn+1ビットであり、最初の1ビット目のビット値が’1’であり、2ビット目からK×xn+1ビット目までのビット値が’0’である符号を得る規則に対応する符号木である。なお、この符号木によれば、入力された整数値xnが0である場合には、符号のビット数K×xn+1は1ビットであるため、ビット値が’1’である1ビットの符号を得ることになる。
【００３５】
2K-1個の符号木のうちの上記以外の2K-1-1個の符号木は、図４から図６のT(1)からT(2K-1-1)までに対応するものであり、入力された整数値xnに対応する符号として、ビット数がK×xnビットであり、最初の1ビット目のビット値が’0’であり、2ビット目からKビット目までのK-1ビット中の少なくとも１ビットのビット値が’1’であり、K+1ビット目からK×xnビット目までのK×(xn-1)ビットのビット値が’0’である、すなわち、最後からK×(xn-1)ビットのビット値が’0’である符号を得る規則に対応する符号木である。ここで、2ビット目からKビット目までのK-1ビットは2K-1-1個の符号木のそれぞれに一対一に対応するビット群である。なお、これら符号木によれば、入力された整数値xnが0である場合には、符号のビット数K×xnは0ビットであるため、符号を得ないことになる。
【００３６】
例えば、図４のK=2の場合における入力された整数値と当該整数値に対応する符号の規則は、入力された整数値0を符号木T(0)で符号化する場合には、入力された整数値0に対応する符号として’1’を得、入力された整数値1を符号木T(0)で符号化する場合には、入力された整数値1に対応する符号として’100’を得、入力された整数値2を符号木T(0)で符号化する場合には、入力された整数値2に対応する符号として’10000’を得、入力された整数値0を符号木T(1)で符号化する場合には、入力された整数値0に対応する符号を得ず、入力された整数値1を符号木T(1)で符号化する場合には、入力された整数値1に対応する符号として’01’を得、入力された整数値2を符号木T(1)で符号化する場合には、入力された整数値2に対応する符号として’0100’を得る、という規則である。
【００３７】
［［複数の符号木を用いる規則］］
次に、複数の符号木を用いる規則について説明する。整数符号化部１１０には、複数の符号木を用いる規則も予め記憶されている。以下では、複数の符号木を用いる規則のことを符号木の遷移の規則ともいう。
【００３８】
図４から図６の各符号木のノードの右側にある整数値を囲む三角の向きは、複数の符号木を用いる規則に対応している。
【００３９】
右向きの三角は、入力された整数値の次の整数値を符号化する際には、右隣の符号木（符号木番号が１つ大きい符号木）を用いる規則を表す。なお、その際、最も右にある符号木（符号木番号が最も大きい符号木）の右隣は最も左にある符号木（符号木番号が最も小さい符号木）であるとする。なお、この規則はあくまでも一例であって、2K-1個の符号木を巡回的に用いる規則であればどのような規則であってもよい。すなわち、各符号木について、右向きの三角のときに次の整数値の符号化には異なる符号木を用いる規則であって、全ての符号木について、右向きの三角のときに次の整数値の符号化に用いる符号木が重複しない規則であれば、どのような規則であってもよい。
【００４０】
下向き三角は、入力された整数値の次の整数値を符号化する際には、符号木T(1)を用いる規則を表す。なお、この規則もあくまでも一例であって、下向き三角のときには、図４から図６のT(0)に対応する符号木において右向き三角のときに次の整数値の符号化に用いる符号木を、次の整数値の符号化に用いる符号木とする規則としてもよい。
【００４１】
例えば、図４のK=2の場合の符号木を用いた符号化の規則は、入力された整数値0を符号木T(1)で符号化する場合には、入力された整数値0に対応する符号は得ずに次の整数値を符号化する際に用いる符号木をT(0)とする規則であり、入力された整数値2を符号木T(0)で符号化する場合には、入力された整数値2に対応する符号として’10000’を得て、次の整数値を符号化する際に用いる符号木をT(1)とする規則である。
【００４２】
複数の符号木のうちの何れの符号木を符号化処理の最初に用いてもよいが、何れの符号木を符号化処理の最初に用いるかの規則も、複数の符号木を用いる規則として予め定めて記憶しておく。例えば、図４のK=2の場合において、整数系列x1, x2, …, xNを整数値x1から順に符号化する場合には、整数値x1をT(0)で符号化する規則としてもよいし、整数値x1をT(1)で符号化する規則としてもよいが、T(0)とT(1)の何れを整数値x1の符号化に用いるかは予め定めて記憶しておく。
【００４３】
［［符号木を用いた符号化処理］］
整数符号化部１１０は、上述した複数の符号木を用いて、複数の符号木を用いる上述した規則に従って、入力された整数系列x1, x2, …, xNに含まれる各整数値を予め定めた順に符号化して符号を得、得た符号を整数符号として出力する。例えば、予め定めた順が系列中のサンプル番号順であり、最初に用いる符号木がT(0)である場合に整数符号化部１１０が行う符号化手順は下記の通りである。
（符号化手順）
1. サンプル番号n,符号木番号の初期値をそれぞれ1,0とする。
2. n=Nとなるまで以下の(i)〜(iv)を繰り返す。
(i) 符号木番号が0なら符号’1’を得る。
(ii) 整数値xn=0なら、符号木番号に1を加算したものを新たな符号木番号とする。この際、1を加算して符号木番号が2K-1となった場合には0を新たな符号木番号とする。
(iii) 整数値xn≠0なら、1ビットの’0’と符号木に一対一に対応する対応するK-1ビットとによるKビットの符号を得、さらに、K×(xn-1)ビットの符号’0’を得て、1を新たな符号木番号とする。
(iv) nに1を加算したものを新たなnとする。
3. 1〜2により得た符号のうちの最初に得た符号’1’を取り除く。
（あるいは始めの1回の2.(i)操作を行わない。）
4. 1〜3により得た符号の最後に符号’1’（終端符号）を加える。
5. 1〜4により得た符号を整数符号として出力する。
【００４４】
なお、符号化手順のうちの3を行うのは必須ではない。最初に用いる符号木がT(0)である場合には、x1の値がどのような値であっても、1〜2により得た符号のうちの最初に得た符号は’1’である。従って、最初に得た符号’1’を取り除いたものを整数符号として符号化装置１００が出力しても、復号装置１５０が入力された整数符号の最初に符号’1’を加えれば、符号化装置１００の整数符号化部１１０が行った符号化処理に対応する復号処理を復号装置１５０が行うことが可能である。このことから、符号化手順の3では最初に得た符号’1’を取り除いている。しかし、必ずしも符号化手順の3を行う必要はなく、1〜2により得た符号のうちの最初に得た符号’1’を取り除かないでもよい。この場合には、対応する復号装置１５０が、入力された整数符号の最初に符号’1’を加える処理を行わないようにすればよく、符号化手順のうちの3は行わないでもよい。
【００４５】
また、符号化装置１００から復号装置１５０への整数符号の伝え方によっては、符号化手順のうちの4は行わないでもよい。復号装置１５０における復号の手順は後述するが、整数符号化部１１０が行った符号化処理に対応する復号処理を復号装置１５０が行うためには、復号装置１５０が整数符号の終端を特定できる必要がある。符号化装置１００から復号装置１５０への整数符号の伝える構成として、例えば、符号化装置１００内または符号化装置１００の後段において整数系列x1, x2, …, xNについて得た整数符号を周知のパケット化の手法を用いてパケットに格納して復号装置１５０に伝える構成を採用することができる。この場合には、復号側では、復号装置１５０内または復号装置１５０の前段においてパケットから整数符号を取り出す構成を採用することになるので、復号装置１５０が整数符号の終端を特定できる。従って、このような場合には、符号化手順のうちの4は行わないでもよい。符号化装置１００から復号装置１５０への整数符号の伝える構成としては、整数系列x1, x2, …, xNについて得た整数符号の後ろに別の符号を連結させたものを上述したパケットに格納して復号装置１５０に伝える構成や、上述したパケット化を行わずに整数系列x1, x2, …, xNについて得た整数符号の後ろに別の符号を連結させて復号装置１５０に伝える構成などを採用することもある。これらの構成において、符号化手順のうちの4を行わなかったとすると、後ろに連結させた符号が’0000’であるときなどには、N番目の整数値に対応する符号がどこまでであり、後ろに連結させた符号がどこからであるか、を復号装置１５０が判別できなくなってしまう。そこで、これらの構成においては、予め定めた同じNの値を符号化装置１００と復号装置１５０に記憶しておくことなどによって、整数符号がN個の整数値に対応するものであることを復号装置１５０が把握可能なようにするとともに、符号化手順のうちの4も行って、整数符号の終端を復号装置１５０が特定できるようする必要がある。
【００４６】
なお、上述した説明の符号’0’は２値のビット値のうちの何れか一方のビット値、上述した説明の符号’1’は２値のビット値のうちの他方のビット値、の例である。すなわち、当然のことながら、上述した説明の符号’0’に代えて符号’1’を用い、符号’1’に代えて符号’0’を用いてもよい。
【００４７】
［［符号化処理の例］］
符号化処理の例として、K=2で最初に用いる符号木がT(0)である場合の、入力された整数系列x1, x2, x3, x4, x5が0, 0, 2, 0, 0である場合の符号化処理を説明する。まず、1番目の整数値x1＝0はT(0)で符号化するので符号’1’を得、符号木番号0に1を加算したものを新たな符号木番号とするので、次の整数値x2=0の符号化に用いる符号木をT(1)とする。2番目の整数値x2=0はT(1)で符号化するので符号は得ず、符号木番号1に1を加算したものを符号木番号とするが、1を加算した符号木番号が2K-1となったので0を新たな符号木番号とし、次の整数値x3=2の符号化に用いる符号木をT(0)とする。3番目の整数値x3=2はT(0)で符号化するので符号’10000’を得、新たな符号木番号を1とする規則であるので、次の整数値x4=0の符号化に用いる符号木をT(1)とする。4番目の整数値x4=0はT(1)で符号化するので符号は得ず、符号木番号1に1を加算したものを符号木番号とするが、1を加算した符号木番号が2K-1となったので0を新たな符号木番号とし、次の整数値x5=0の符号化に用いる符号木をT(0)とする。最後の整数値x5=0はT(0)で符号化するので符号’1’を得る。ここまでで得られた符号は’1100001’であるが、上述した符号化手順の3を行い上述した符号化手順の4を行わない場合には、最初に得た符号’1’を省略し、最終的な整数符号’100001’を得る。
【００４８】
≪復号装置≫
図７及び図８を参照して、第一実施形態の復号装置１５０が実行する復号方法の処理手続きを説明する。第一実施形態の復号装置１５０は、図７に示す通り、整数復号部１６０を含む。第一実施形態の復号装置１５０が図８に示す各ステップの処理を実行することにより、第一実施形態の復号方法が実現される。
【００４９】
第一実施形態の復号装置１５０には、第一実施形態の符号化装置１００が出力した整数符号が入力される。第一実施形態の復号装置１５０は、入力された整数符号を、第一実施形態の符号化装置１００に対応する予め定めた複数の符号木を第一実施形態の符号化装置１００に対応する予め定めた規則に則って用いた復号処理で復号して非負の整数値の系列を得ることで、第一実施形態の符号化装置１００に入力された非負の整数値の系列そのものを復元するものである。以下では、上述した符号化装置１００の説明と同様に、非負の整数値を単に「整数値」と呼んで説明する。
【００５０】
［整数復号部１６０］
整数復号部１６０には、復号装置１５０に入力された整数符号が入力される。整数復号部１６０は、符号化装置１００の整数符号化部１１０が用いた符号化パラメータKと同じ値であり、整数復号部１６０内に予め記憶したまたは図示しない手段により入力された2以上の自然数である符号化パラメータKに基づき、入力された整数符号を以下の符号木を用いた復号処理で復号して整数値の系列を得、得た整数系列x1, x2, …, xNを出力する（Ｓ１６０）。以下では、整数系列x1, x2, …, xNの各整数がxn(nは系列中のサンプル番号であり、n∈{1,2, ..., N})であるとして説明を行う。
【００５１】
復号処理に用いる符号木は、第一実施形態の符号化装置１００の整数符号化部１１０が用いる符号木と同じであり、整数復号部１６０には、図４から図６に例示するような2K-1個（2のK-1乗個）の符号木が予め記憶されている。復号処理における符号木における入力された符号と当該符号に対応する整数値との関係及び複数の符号木を用いる規則は、第一実施形態の符号化装置１００の整数符号化部１１０の符号化処理における規則に対応するものであり、第一実施形態の符号化装置１００の整数符号化部１１０の符号化処理における規則の「入力された整数値に割り当てる符号」を「入力された符号」と読み替え、「入力された整数値」を「入力された符号に割り当てる整数値」と読み替えた規則であり、整数復号部１６０に予め記憶されている。なお、復号処理において何れの符号木を最初に用いるかの規則も、第一実施形態の符号化装置１００の整数符号化部１１０が用いた規則と同じ規則であり、整数復号部１６０に予め記憶しておく。
【００５２】
整数復号部１６０は、上述した複数の符号木を用いて、複数の符号木を用いる上述した規則に従って、入力された整数符号に対応する整数値による列を得て、得られた整数値による列の各整数を予め定めた順としたものを、整数系列x1, x2, …, xNとして得て出力する。例えば、予め定めた順が系列中のサンプル番号順であり、最初に用いる符号木がT(0)である場合に整数復号部１６０が行う復号手順は、例えば、下記の復号手順１や復号手順２の通りである。
【００５３】
（復号手順１−１）符号化手順4による終端符号の追加を行っていない場合、すなわち、整数符号の終端を復号装置１５０が特定可能な場合
1. 符号化手順3で符号’1’を取り除いた場合は、整数符号の最初に符号’1’を追加する。
2. 符号木番号の初期値を0とする。
3. 読み込んでない整数符号がなくなるまで以下(i)〜(ii)を繰り返し、読み込んでない整数符号がなくなったら4に進む。
(i) 入力された整数符号を順に、符号木番号に対応する符号木に読み込んだ符号に対応する符号がある間（すなわち、符号木番号に対応する符号木に読み込んだ符号に対応する符号がなくなる１つ前のビットまで）、読み込む。
(ii) 符号木番号に対応する符号木から、読み込んだ符号に対応する符号に対応する整数値を得て、当該符号木の整数値についての符号木の遷移の規則に従って新たな符号木番号を得る。
4. 3の(ii)で得た整数値による系列を整数系列x1, x2, …, xNとして出力する。
【００５４】
（復号手順１−２）符号化手順4による終端符号の追加を行った場合、すなわち、整数符号の終端を復号装置１５０が特定できない場合
1. 符号化手順3で符号’1’を取り除いた場合は、入力された符号列（整数符号と後続する別符号による符号列）の最初に符号’1’を追加する。
2. サンプル番号n, 符号木番号の初期値をそれぞれ1, 0とする。
3. n=Nとなるまで以下(i)〜(ii)を繰り返す。
(i) 入力された符号列を順に、符号木番号に対応する符号木に読み込んだ符号に対応する符号がある間（すなわち、符号木番号に対応する符号木に読み込んだ符号に対応する符号がなくなる１つ前のビットまで）、読み込む。
(ii) 符号木番号に対応する符号木から、読み込んだ符号に対応する符号に対応する整数値を得て、当該符号木の整数値についての符号木の遷移の規則に従って新たな符号木番号を得て、nに1を加算したものを新たなnとする。
4. 3の(ii)で得た整数値による系列を整数系列x1, x2, …, xNとして出力する。
【００５５】
（復号手順２）
1. 符号化手順4で終端符号の追加を行っていない場合は、入力された符号列の最後に終端符号’1’を追加する。また、符号化手順3で符号’1’を取り除かなかった場合は、入力された符号列の最初に符号’1’を取り除く。
2. サンプル番号n, 符号木番号の初期値をそれぞれ1, 0とする。
3. n≧Nとなるまで以下(i)〜(v)を繰り返す。
(i) Kビット全てが符号’0’である間、入力された符号列を順にKビットずつ読み、その間読んだ符号’0’の個数をKで割った数をZとする。
(ii) 符号木番号が0なら、整数値Zを得る。
(iii) 符号木番号が0でないなら、整数値(Z+1)を得る。
(iv) 入力された符号列の次の1ビットが符号’1’なら、その1ビットを読み、(2K-1-1)個の整数値0を得、0を新たな符号木番号にして、nに2K-1を加算したものを新たなnとする。
(v) 入力された符号列の次の1ビットが符号’0’なら、その1ビットを含むKビットを読み、そのKビットのうちの最初の1ビットを除いた残りのK-1ビットが対応する符号木の番号を新たな符号木番号とし、(新たな符号木番号-1)個の整数値0を得、nに新たな符号木番号を加算したものを新たなnとする。
4. 得られた整数値がN個よりも多い場合、N+1個目の整数値以降は取り除く。
【００５６】
［［復号処理の例］］
復号処理の例として、K=2で最初に用いる符号木がT(0)である場合の、上述した符号化処理の例で得た整数符号’100001’を上述した復号手順１−１で復号する場合の復号処理を説明する。まず、整数符号’100001’の先頭に符号’1’を追加して整数符号を’1100001’とする。次に、整数符号’1100001’の最初の1ビットである’1’は符号木T(0)に対応する符号があるものの、最初の2ビットである’11’は符号木T(0)に対応する符号がないことから、整数符号の最初の1ビットである’1’を読み込み、’1’に対応する整数値0を得て、次に用いる符号木をT(1)とする。次に、整数符号の残りの’100001’の最初の1ビットである’1’は符号木T(1)に対応する符号がないことから、最初の１ビットも読み込まず、0ビットに対応する整数値0を得て、次に用いる符号木をT(0)とする。次に、整数符号の残りの’100001’の最初の1ビットである’1’から最初の5ビットである’10000’までは対応する符号が符号木T(0)にあるものの、整数符号の残りの’100001’の最初の6ビットである’100001’は対応する符号が符号木T(0)にないことから、整数符号の残りの’100001’の最初の5ビットである’10000’を読み込み、’10000’に対応する整数値2を得て、次に用いる符号木をT(1)とする。次に、整数符号の残りの’1’は対応する符号が符号木T(1)にないことから、最初の１ビットも読み込まず、0ビットに対応する整数値0を得て、次に用いる符号木をT(0)とする。次に、整数符号の残りの’1’は対応する符号が符号木T(0)にあり、この’1’以降には読み込んでない整数符号がないことから、’1’に対応する整数値0を得て、これらの処理により得た整数値0, 0, 2, 0, 0による系列を整数系列x1, x2, x3, x4, x5として出力する。
【００５７】
本実施形態の発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【００５８】
＜第一実施形態の発明の原理の説明＞
ここで本発明の原理を説明する。
【００５９】
第一実施形態の符号化装置１００によれば、全ての非負整数値に対して符号を割り当てることが可能であり、当該符号を第一実施形態の復号装置１５０が復号することにより非負整数値そのものを復元可能とするものである。図４から図６に示した通り、非負整数値xnに対応する符号はK×xnビットまたはK×xn+1ビットである。このことから、第一実施形態で用いた本発明の符号は、下記の式(3)で示す偏りの大きな指数分布（片側ラプラス分布）に従う非負整数値の系列に対して近似的に最適な期待ビット長を与える符号であり、小さな値に大きく偏った非負整数値の系列に対する平均ビット数をGolomb符号やGolomb-Rice符号よりも少なくすることができる符号である。
【００６０】
【数３】
2020077969.tif 000005
【００６１】
式(2)で示したGolomb符号が最適な分布p(x,2-1/s)と、式(3)で示した本発明の符号が最適な分布p(x,2-K)と、の対応関係から、本発明の符号化パラメータKの逆数はGolombパラメータsに対応していることがわかる。また、本発明の符号化パラメータKが正の整数値であることから、符号化パラメータKの逆数は１未満の値となるので、符号化パラメータKは0より大きく1より小さい値に拡張したGolombパラメータに対応するパラメータとして解釈することができる。また、RiceパラメータrはGolombパラメータsの対数値に相当するので、上記同様に符号化パラメータKは負値に拡張したRiceパラメータに対応するパラメータとしても解釈することができる。つまり、非負整数値の系列に最適なGolombパラメータやRiceパラメータの推定を行うことにより、非負整数値の系列に割り当てる本発明の符号における最適なパラメータKを推定することができるということである。
【００６２】
第一実施形態の符号化装置１００と復号装置１５０で用いた本発明の符号木における整数値と当該整数値に対応する符号との関係、及び、複数の符号木を用いる規則、は、非負整数値xnに対応する符号をK×xnビットまたはK×xn+1ビットとすることだけではなく、復号可能な符号とすることも考慮して設計したものである。具体的には、整数値0の2K-1個の連続に対しては1ビットの符号である’1’を割り当て、整数値0の0個から2K-1-1個の連続とそれに後続する１つの非負整数値xn≠0に対しては、最初のKビットの中に少なくとも１ビットのビット値’1’が含まれ、かつ、K+1ビット目以降のビット値が’0’である符号を割り当てるという制約を設けている。この制約を設けていることにより、複数個の整数値からなる整数系列に対応する整数符号を復号装置１５０で読み込む際に、Kビット中にビット値’1’が含まれる部分に、整数符号中のある符号と１つ後の符号との境界が含まれることが分かるようにしている。なお、上述した制約を満たすため、整数値0の0個から2K-1-1個の連続とそれに後続する１つの非負整数値xnに対する符号のビット数はK×xnビットだけではなく、K×xnビットまたはK×xn+1ビットとしている。
【００６３】
＜第二実施形態＞
第一実施形態では、予め定めた符号木を用いて本発明の符号化と復号を実現する形態を説明したが、予め定めた符号木に代えて、予め定めた対応表を用いることでも、第一実施形態と等価な符号化処理と復号処理を実現することが可能である。この予め定めた対応表を用いる形態を第二実施形態として説明する。
【００６４】
≪符号化装置≫
図２及び図３を参照して、第二実施形態の符号化装置１００が実行する符号化方法の処理手続きを説明する。第二実施形態の符号化装置１００は、図２に示す通り、整数符号化部１１０を含む。第二実施形態の符号化装置１００が図３に示す各ステップの処理を実行することにより、第二実施形態の符号化方法が実現される。
【００６５】
第二実施形態の符号化装置１００には、第一実施形態と同様に、非負の整数値の系列が入力される。第二実施形態の符号化装置１００は、予め定めた対応表に従って、非負の整数値の系列を可変長符号化することで、Golomb符号化やGolomb-Rice符号化が想定している指数分布よりも偏りの大きな分布の非負の整数値の系列に対して、Golomb符号化やGolomb-Rice符号化よりも短いビット長となる符号化処理を実現するものである。以下では、符号化装置１００に入力された非負の整数値を単に「整数値」と呼んで説明する。
【００６６】
［整数符号化部１１０］
整数符号化部１１０には、符号化装置１００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNが入力される。第二実施形態の整数符号化部１１０は、2以上の自然数である符号化パラメータKに対応して予め作成して整数符号化部１１０内に記憶された対応表に基づいて、入力された整数系列x1, x2, …, xNを符号化して符号を得、得た符号を整数符号として出力する（Ｓ１１０）。
【００６７】
［［符号化処理に用いる対応表］］
予め記憶された対応表は、零値の連続（0個以上の連続）と１つの非零値との組合せによる整数値の部分系列と、当該部分系列に対応する符号と、の対応関係の規則を格納したものである。K=2とK=3における対応表の例を、それぞれ図９と図１０に挙げる。対応表に格納された規則は、2K-1個連続した零値による部分系列にはビット値が’1’である1ビットの符号が割り当てられ、それ以外の部分系列、すなわち、0個から2K-1-1個連続した零値とそれに後続する１つの非零値xnによる部分系列には、それぞれの零値の連続と非零値xnの組合せに対してK×xnビットまたはK×xn+1ビットの符号が割り当てられる規則である。
【００６８】
例示した対応表では、0個から2K-1-1個連続した零値とそれに後続する１つの非零値xnによる部分系列のそれぞれには、始めのKビット内に少なくとも１ビットの’1’が存在し、残りのK×(xn-1)ビットまたはK×(xn-1)+1ビットは全て’0’である符号が割り当てられる規則である。より詳しくは、この規則では、0個から2K-1-1個連続した零値と１つの非零値による部分系列には、1ビット目のビット値が’1’であり、2ビット目からKビット目までのビット値が全て’0’であり、K+1ビット目からK×xn+1ビット目までのビット値が全て’0’であるK×xn+1ビットの符号、または、1ビット目のビット値が’0’であり、2ビット目からKビット目までのK-1ビット中の少なくとも１ビットのビット値が’1’であり、K+1ビット目からK×xnビット目までのビット値が全て’0’であるK×xnビットの符号、が割り当てられる。更に詳しくは、この規則では、K×xn+1ビットの符号のうちの１ビット目のビット値が’1’であり2ビット目からK+1ビット目までが’0’である１ビット目からK+1ビット目までの部分符号１通りと、K×xnビットの符号のうちの１ビット目のビット値が’0’であり2ビット目からKビット目までのK-1ビット中の少なくとも１ビットのビット値が’1’である１ビット目からKビット目までの部分符号2K-1-1通りと、による2K-1通りの部分符号と、0個から2K-1-1個の零値の連続数2K-1通りと、が一対一に対応している。
【００６９】
［［対応表を用いた符号化処理］］
整数符号化部１１０は、上述した対応表を用いて、入力された整数系列x1, x2, …, xNに含まれる各整数値を予め定めた順に符号化して符号を得、得た符号を整数符号として出力する。例えば、予め定めた順が系列中のサンプル番号順である場合に整数符号化部１１０が行う符号化手順は下記の通りである。
（符号化手順）
1. サンプル番号nを1とする。
2. n=Nとなるまで、以下の(i)〜(ii)を繰り返す。
(i) xn以降の2K-1個の整数値の中に非零値がある場合には、xn以降の最初の非零値までの部分系列に対応する符号を符号表から得て、xn以降の最初の非零値までのサンプル数をnに加算したものを新たなnとする。
(ii) xn以降の2K-1個の整数値が全て零値である場合には、 xn以降の2K-1個の整数値の部分系列に対応する符号を符号表から得て、2K-1をnに加算したものを新たなnとする。
3. 2により得た符号の最後に符号’1’（終端符号）を加える。
4. 3により得た符号を整数符号として出力する。
【００７０】
なお、第一実施形態と同様に、符号化装置１００から復号装置１５０への整数符号の伝え方によっては、終端符号を加える処理（符号化手順のうちの3）は行わないでもよい。
【００７１】
なお、第二実施形態の符号化装置１００の整数符号化部１１０における図９と図１０を用いた符号化処理により得られる符号は、それぞれ、第一実施形態の符号化装置１００の整数符号化部１１０における図４と図５の符号木を用いる符号化処理において、最初に用いる符号木をT(1)にした場合に得られる符号に一致する。また、第二実施形態の符号化装置１００の整数符号化部１１０にて、図９と図１０のそれぞれを用いて符号化する際に、入力された整数系列x1, x2, …, xNの先頭に(2K-1-1)個の零値を追加してから符号化を行い、得られた整数符号の最初にある符号’1’を取り除くようにすれば、第一実施形態の符号化装置１００の整数符号化部１１０における図４と図５のそれぞれの符号木を用いる符号化処理において、最初に用いる符号木をT(0)にした場合に得られる符号に一致する。このように、第二実施形態の符号化装置１００の整数符号化部１１０における対応表を用いた符号化処理は、第一実施形態の符号化装置１００の整数符号化部１１０における符号木を用いた符号化処理と等価なものである。
【００７２】
≪復号装置≫
図７及び図８を参照して、第二実施形態の復号装置１５０が実行する復号方法の処理手続きを説明する。第二実施形態の復号装置１５０は、図７に示す通り、整数復号部１６０を含む。第二実施形態の復号装置１５０が図８に示す各ステップの処理を実行することにより、第二実施形態の復号方法が実現される。
【００７３】
第二実施形態の復号装置１５０には、第一実施形態の復号装置１５０と同様、第二実施形態の符号化装置１００が出力した整数符号が入力される。第二実施形態の復号装置１５０は、入力された整数符号を、第二実施形態の符号化装置１００の整数符号化部１１０に記憶された対応表と同じ対応表を用いた復号処理で復号して非負の整数値の系列を得ることで、第二実施形態の符号化装置１００に入力された非負の整数値の系列そのものを復元するものである。以下では、上述した符号化装置の説明と同様に、非負の整数値を単に「整数値」と呼んで説明する。
【００７４】
［整数復号部１６０］
整数復号部１６０には、復号装置１５０に入力された整数符号が入力される。整数復号部１６０は、予め作成して整数復号部１６０内に記憶された対応表であり、符号化パラメータKに対応する予め作成された対応表であり、符号化装置１００の整数符号化部１１０内に予め記憶され整数符号化部１１０で用いられたのと同じ対応表に基づいて、入力された整数符号を復号して整数系列x1, x2, …, xNを得て出力する（Ｓ１６０）。
【００７５】
より具体的には、整数復号部１６０は、入力された整数符号のうちのまだ読み込んでいない符号部分を最初から対応表に対応する符号がある部分まで読み込み、読み込んだ符号に対応する整数の部分系列を対応表から得る処理を、入力された整数符号の最初から最後まで繰り返し行うことで得た整数の部分系列を纏めた系列を整数系列x1, x2, …, xNとして出力する。この復号処理により、第一実施形態の復号装置１５０の整数復号部１６０における図４と図５のそれぞれの符号木を用いる復号処理において、最初に用いる符号木をT(1)にした場合と同じ整数系列x1, x2, …, xNを得ることができる。
【００７６】
なお、符号化装置１００の整数符号化部１１０にて、入力された整数系列x1, x2, …, xNの先頭に(2K-1-1)個の零値を追加してから符号化を行い、得られた整数符号の最初にある符号’1’を取り除く処理を行った場合は、整数復号部１６０は、入力された整数符号の先頭に符号’1’を追加してから上記対応表に基づいて上述した復号処理で各部分系列を得、はじめに得られた(2K-1-1)個の零値を省略した後、部分系列を纏めた整数系列x1, x2, …, xNを出力すればよい。この復号処理により、第一実施形態の復号装置１５０の整数復号部１６０における図４と図５のそれぞれの符号木を用いる復号処理において、最初に用いる符号木をT(0)にした場合と同じ整数系列x1, x2, …, xNを得ることができる。このように、第二実施形態の復号装置１５０の整数復号部１６０における対応表を用いた復号処理は、第一実施形態の復号装置１５０の整数復号部１６０における符号木を用いた復号処理と等価なものである。
【００７７】
以上から分かるように、第一実施形態の符号化装置１００によって符号木を用いた符号化処理で得た整数符号を、第二実施形態の復号装置１５０によって当該符号化処理と対応する対応表を用いた復号処理で復号して整数系列x1, x2, …, xNを得たり、第二実施形態の符号化装置１００によって対応表を用いた符号化処理で得た整数符号を、第一実施形態の復号装置１５０によって当該符号化処理と対応する符号木を用いた復号処理で復号して整数系列x1, x2, …, xNを得たりしてもよい。
【００７８】
本実施形態の発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【００７９】
＜第三実施形態＞
第一実施形態および第二実施形態の符号の規則は、整数値0の2K-1個の連続に対しては1ビットの符号である’1’を対応させ、整数値0の0個から2K-1-1個の連続とそれに後続する１つの非負整数値xn≠0に対しては、K×xn+1ビットの符号のうちの１ビット目のビット値が’1’であり2ビット目からK+1ビット目までが’0’である１ビット目からK+1ビット目までの部分符号１通りと、K×xnビットの符号のうちの１ビット目のビット値が’0’であり2ビット目からKビット目までのK-1ビット中の少なくとも１ビットのビット値が’1’である１ビット目からKビット目までの部分符号2K-1-1通りと、による2K-1通りの部分符号と、0個から2K-1-1個の整数値0の連続数2K-1通りと、を一対一に対応させた規則である。ここで、整数値0の連続個数に着目すると、第一実施形態および第二実施形態の符号は、2以上の自然数である符号化パラメータKそれぞれに対して、整数値0の連続個数が0個から2K-1個までを表現できる。すなわち、第一実施形態および第二実施形態の符号では、整数値0の最大連続個数が2の整数乗である。
【００８０】
第一実施形態および第二実施形態の符号では、p(x,2-K’)のような、ある非負値K’を用いた指数分布に従う入力xの系列が与えられた際、K’が整数値であれば、符号化パラメータKをK=K’とし、表現できる整数値0の最大連続個数が2のK’乗個とすることにより近似的に最適な圧縮効率を実現できる。しかし、上記のK’が整数値でなく、符号化パラメータKと(K+1)の間の値をとる場合は、符号化パラメータKをK=K’としたときよりも多くの整数値0の連続個数を表現できたほうが圧縮の効率が高い。一方でこの場合、符号化パラメータKに１加算して、表現できる整数値0の最大連続個数を倍にするほどには整数値0の出現頻度が高くなく、かえって非零値を表現するためのビット数が増加しすぎてしまい、圧縮効率の低下をもたらしてしまう。
【００８１】
そこで本実施形態では、整数値0の最大連続個数が2の整数乗でない場合でも圧縮効率が高くなるように第一実施形態を変更した形態について説明する。
【００８２】
≪符号化装置≫
図２及び図３を参照して、第三実施形態の符号化装置１００が実行する符号化方法の処理手続きを説明する。第三実施形態の符号化装置１００は、図２に示す通り、整数符号化部１１０を含む。第三実施形態の符号化装置１００が図３に示す各ステップの処理を実行することにより、第三実施形態の符号化方法が実現される。
【００８３】
第三実施形態の符号化装置１００には、第一実施形態およびと第二実施形態と同様に、非負の整数値の系列が入力される。
【００８４】
第三実施形態の符号化装置１００は、第一実施形態の符号化装置１００と同様に、予め定めた複数の符号木を予め定めた規則に則って用い、非負の整数値の系列を可変長符号化することで、Golomb符号化やGolomb-Rice符号化が想定している指数分布よりも偏りの大きな分布の非負の整数値の系列に対して、Golomb符号化やGolomb-Rice符号化よりも短いビット長となる符号化処理を実現するものである。以下では、符号化装置１００に入力された非負の整数値を単に「整数値」と呼んで説明する。
【００８５】
［整数符号化部１１０］
整数符号化部１１０には、符号化装置１００に入力された整数値の系列のうちの、Nサンプル（Nは自然数）ずつの整数値による系列が入力される。入力された整数値による系列を整数系列x1, x2, …, xNとする。整数符号化部１１０は、整数符号化部１１０内に予め記憶したまたは図示しない手段により入力された2以上の自然数である符号化パラメータLに基づき、整数系列x1, x2, …, xNを以下の符号木を用いた符号化処理で符号化して符号を得、得た符号を整数符号として出力する（Ｓ１１０）。以下では、整数系列x1, x2, …, xNの各整数がxn(nは系列中のサンプル番号であり、n∈{1, 2, ..., N})であるとして説明を行う。
【００８６】
また、以下では、2KがLを上回る最小の自然数であるKと、2KからLを引いた自然数であるpと、Lから2K-1を引いた自然数であるqと、を用いて説明を行う。Kとpとqは、Lを用いて表記可能な値であり、説明を簡単化するために便宜的に用いるものであるが、整数符号化部１１０が実際に用いてもよい。整数符号化部１１０がKやpやqを用いる場合には、Kやpやqの値は、整数符号化部１１０が符号化パラメータLを用いて計算して求めてもよいし、符号化パラメータLとともに図示しない手段により入力されるようにしてもよいし、符号化パラメータLを整数符号化部１１０内に予め記憶しておく場合には、Kやpやqの値も整数符号化部１１０内に予め記憶しておいてもよい。
【００８７】
［［符号化処理に用いる符号木］］
まず、整数符号化部１１０における符号化処理に用いる符号木を例示する。
【００８８】
整数符号化部１１０には、図１１から図１３に例示するようなL個の符号木が予め記憶されている。図１１(A)はL=2のときの符号木の例であり、T(0)とT(1)のそれぞれが符号木であり、図１１(B)はL=3のときの符号木の例であり、T(0)からT(2)のそれぞれが符号木である。図１２(A)はL=4のときの符号木の例であり、T(0)からT(3)のそれぞれが符号木であり、図１２(B)はL=5のときの符号木の例であり、T(0)からT(4)のそれぞれが符号木である。図１３はLを一般化したときの符号木の例であり、T(0)からT(L-1)のそれぞれが符号木である。
【００８９】
［［符号木における入力された整数値と当該整数値に対応する符号との関係］］
次に、各符号木における入力された整数値と当該整数値に対応する符号との関係を説明する。
【００９０】
各符号木のノードの右側にある三角で囲まれている整数値は入力された整数値に対応している。また、各符号木のエッジの左側にあるビット値’0’及び’1’は入力された整数値に割り当てる符号の規則に対応している。この規則は、符号木の上端のノードから入力された整数値に対応するノードまでのエッジの左側にあるビット値を並べたものを入力された整数値に割り当てる符号として得る規則である。
【００９１】
L個の符号木のうちの１つの符号木は、図１１から図１３のT(0)に対応するものであり、入力された整数値xnに対応する符号として、ビット数がK×xn+1ビットであり、最初の1ビット目のビット値が’1’であり、2ビット目からK×xn+1ビット目までのビット値が’0’である符号を得る規則に対応する符号木である。なお、この符号木によれば、入力された整数値xnが0である場合には、符号のビット数K×xn+1は1ビットであるため、ビット値が’1’である1ビットの符号を得ることになる。すなわち、本実施形態のT(0)は第一実施形態のT(0)と同じである。
【００９２】
L個の符号木のうちの上記以外のL-1個の符号木は、図１１から図１３のT(1)からT(L-1)までに対応するものである。これらの符号木については、以下で第一実施形態と対比しながら説明する。
【００９３】
図４から図６に示した第一実施形態のT(1)からT(2K-1-1)までの2K-1-1個の符号木は、入力された非零値xnに対応する符号として、2ビット目からKビット目までのK-1ビットが、T(1)からT(2K-1-1)までの2K-1-1個の符号木のそれぞれに一対一に対応するビット群であり、入力された非零値xnの直前までに入力された零値の連続数2K-1-1通りに一対一に対応するビット群である符号を得る規則に対応する符号木である。上述した通り、復号可能な符号とするために、2ビット目からKビット目までのK-1ビットは少なくとも１ビットのビット値が’1’である必要があるため、2ビット目からKビット目までのK-1ビットで表現可能な零値の連続数は最大2K-1-1通りである。例えば、K=2であれば、2ビット目の1ビットで表現可能な零値の連続数は最大1通りである。また、例えば、K=3であれば、2ビット目から3ビット目までの2ビットで表現可能な零値の連続数は最大3通りである。
【００９４】
符号化パラメータLが2である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数は1通りであることから、図１１(A)に示すように、本実施形態のT(1)として、図４に示した第一実施形態の符号木T(1)と同じ符号木を用いればよい。
【００９５】
一方、符号化パラメータLが3である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数は2通りであるので、2ビット目の1ビットだけでは表現すべき零値の連続数が1通り足りなくなってしまう。そこで、本実施形態では、符号化パラメータLが3である場合には、図１１において二点鎖線で囲んであるように、符号化パラメータLが2である場合の符号木T(1)の3ビット目以降を1ビットずらして4ビット目以降とし、図１１において一点鎖線で囲んであるように、符号化パラメータLが2である場合の符号木T(1)の2ビット目の次に3ビット目として1ビットを追加した構成である２つの符号木T(1)とT(2)を用いる。符号木(1)とT(2)では、図１１(B)において破線で囲んであるように、3ビット目として追加した1ビットは、互いに異なるビット値とする。
【００９６】
また、符号化パラメータLが4である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数は3通りであることから、図１２(A)に示すように、本実施形態のT(1)からT(3)として、それぞれ、図４に示した第一実施形態の符号木T(1)からT(3)と同じ符号木を用いればよい。
【００９７】
一方、符号化パラメータLが5である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数は4通りであるので、2ビット目から3ビット目までの2ビットだけでは表現すべき零値の連続数が1通り足りなくなってしまう。そこで、本実施形態では、符号化パラメータLが5である場合には、図１２において二点鎖線で囲んであるように、符号化パラメータLが4である場合の符号木T(3)の4ビット目以降を1ビットずらして5ビット目以降とし、図１２において一点鎖線で囲んであるように、符号化パラメータLが4である場合の符号木T(3)の3ビット目の次に4ビット目として1ビットを追加した構成である２つの符号木T(3)とT(4)を用いる。符号木T(3)とT(4)では、図１２(B)において破線で囲んであるように、4ビット目として追加した1ビットは、互いに異なるビット値とする。
【００９８】
以下、符号化パラメータLを一般化して説明する。T(0)以外のL-1個の符号木の2ビット目からKビット目までのK-1ビットで表現可能な零値の連続数は最大2K-1-1通りである。符号化パラメータLが2K-1である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数はL-1=2K-1-1通りであるので、本実施形態のT(1)からT(L-1)として、それぞれ、図６に示した第一実施形態の符号木T(1)からT(2K-1-1)と同じ符号木を用いればよい。
【００９９】
一方、符号化パラメータLが2K-1より大きな値である場合には、T(0)以外のL-1個の符号木で表現すべき零値の連続数はL-1通りであり、2ビット目からKビット目までのK-1ビットで表現可能な零値の連続数の最大2K-1-1通りを(L-1)-(2K-1-1)=L-2K-1=q通り上回ってしまうことから、2ビット目からKビット目までのK-1ビットだけでは表現すべき零値の連続数がq通り足りなくなってしまう。そこで、本実施形態では、図１３の下段に示すように、図６に示した第一実施形態の符号木T(1)からT(2K-1-1)のうちのq=L-2K-1個の符号木それぞれについて、K+1ビット目以降を1ビットずらしてK+2ビット目以降とし、K+1ビット目としてビット値が’0’である1ビットを追加した符号木と、K+1ビット目としてビット値が’1’である1ビットを追加した符号木と、の２個の符号木に置き換えた、2q=2×(L-2K-1)=2L-2K個の符号木を用いる。なお、本実施形態では、図１３の上段に示すように、T(1)からT(2K-1-1)のうちの残りの符号木である(2K-1-1)-q=2K-1-1-(L-2K-1)=2K-L-1=p-1個の符号木は、図６に示した第一実施形態の符号木そのものを用いる。ただし、本実施形態では、符号化パラメータLの値次第ではp-1=0となるので、置き換え後の符号木のみを用いて、置き換えを行わなかった図６に示した第一実施形態の符号木そのものは用いない場合もある。なお、符号化パラメータLが2K-1である場合は、q=0となることから符号木の置き換えを行わずに、置き換えを行わなかった図６に示した第一実施形態の符号木そのもののみを用いたともいえる。
【０１００】
すなわち、本実施形態のL個の符号木のうちのT(1)からT(L-1)のL-1個の符号木は、入力された整数値xnが0である場合には符号を得ず、入力された整数値xnが0でない場合には、ビット数がK×xnビットまたはK×xn+1ビットであり、最初の1ビット目のビット値が’0’であり、2ビット目からKビット目までのK-1ビット中の少なくとも１ビットのビット値が’1’であり、最後からK×(xn-1)ビットのビット値が’0’である符号を得るものである。より具体的には、T(1)からT(L-1)のL-1個の符号木のうちのp-1個の符号木は、入力された整数値xnが0でない場合にビット数がK×xnビットの符号を得るものであり、T(1)からT(L-1)のL-1個の符号木のうちの2q個の符号木は、入力された整数値xnが0でない場合にビット数がK×xn+1ビットの符号を得るものである。
【０１０１】
また、入力された整数値xnが0でない場合のビット数がK×xnビットの符号の2ビット目からKビット目までのK-1ビットと、入力された整数値xnが0でない場合のビット数がK×xn+1ビットの符号の2ビット目からK+1ビット目までのKビットと、はT(1)からT(L-1)のL-1個の符号木のそれぞれに一対一に対応する。より具体的には、入力された整数値xnが0でない場合の少なくとも１ビットのビット値が’1’である2ビット目からKビット目までのK-1ビットで表現可能な2K-1通りのうちのp-1通りが、入力された整数値xnが0でない場合にビット数がK×xnビットの符号を得るp-1個の符号木のそれぞれに一対一に対応し、入力された整数値xnが0でない場合の少なくとも１ビットのビット値が’1’である2ビット目からKビット目までのK-1ビットで表現可能な2K-1通りのうちの上記のp-1通り以外のq通りと、このq通りである場合のK+1ビット目のビット値と、の組である2q通りが、入力された整数値xnが0でない場合にビット数がK×xn+1ビットの符号を得る2q個の符号木それぞれに一対一に対応する。さらに具体的には、2ビット目からKビット目までのK-1ビットの上記のq通りは、入力された整数値xnが0でない場合にビット数がK×xn+1ビットの符号を得る2q個の符号木のうちの2個ずつのq組それぞれに一対一に対応し、K+1ビット目のビット値が2個ずつの符号木の組のうちの何れであるかに対応する。例えば、図１３の例であれば、入力された整数値xnが0でない場合の少なくとも１ビットのビット値が’1’である2ビット目からKビット目までのK-1ビットで表現可能な2K-1通りのうちのp-1通りが、T(1)からT(p-1)のp-1個の符号木のそれぞれに一対一に対応するKビットであり、入力された整数値xnが0でない場合の少なくとも１ビットのビット値が’1’である2ビット目からKビット目までのK-1ビットで表現可能な2K-1通りのうちの上記のp-1通り以外のq通りと、このq通りである場合のK+1ビット目のビット値と、の組である2q通りが、T(p)からT(L-1)の2q個の符号木それぞれに一対一に対応するK+1ビットである。
【０１０２】
［［複数の符号木を用いる規則］］
次に、複数の符号木を用いる規則について説明する。整数符号化部１１０には、複数の符号木を用いる規則も予め記憶されている。
【０１０３】
図１１から図１３の各符号木のノードの右側にある整数値を囲む三角の向きは、複数の符号木を用いる規則に対応している。
【０１０４】
右向きの三角は、入力された整数値の次の整数値を符号化する際には、右隣の符号木（符号木番号が１つ大きい符号木）を用いる規則を表す。なお、その際、最も右にある符号木（符号木番号が最も大きい符号木）の右隣は最も左にある符号木（符号木番号が最も小さい符号木）であるとする。なお、この規則はあくまでも一例であって、L個の符号木を巡回的に用いる規則であればどのような規則であってもよい。すなわち、各符号木について、右向きの三角のときに次の整数値の符号化には異なる符号木を用いる規則であって、全ての符号木について、右向きの三角のときに次の整数値の符号化に用いる符号木が重複しない規則であれば、どのような規則であってもよい。ただし、ビット数が少ない符号を得る符号木（図１３の例であれば、T(1)からT(p-1)）を先に用いる規則であるほうがよい。
【０１０５】
下向き三角は、入力された整数値の次の整数値を符号化する際には、符号木T(1)を用いる規則を表す。なお、この規則もあくまでも一例であって、下向き三角のときには、各下向き三角について予め定めた何れか１つの符号木を次の整数値の符号化に用いる符号木とする規則であれば、どのような規則であってもよい。例えば、下向き三角のときに、全て下向き三角について予め定めた何れか１つの同じ符号木を次の整数値の符号化に用いる符号木とする規則としてもよい。また、平均ビット数を短くするためには、下向き三角のときに、図１１から図１３のT(0)に対応する符号木以外の符号木を、次の整数値の符号化に用いる符号木とする規則とするのがよく、T(0)に対応する符号木以外の符号木のうちのビット数が少ない符号を得る符号木（図１３の例であれば、T(1)からT(p-1)の何れか）を、次の整数値の符号化に用いる符号木とする規則とするとさらによい。
【０１０６】
なお、平均ビット数を最も短くするためには、全ての符号木について、下向き三角のときに、図１１から図１３のT(0)に対応する符号木において右向き三角のときに次の整数値の符号化に用いる符号木を、次の整数値の符号化に用いる符号木とする規則とするのがよい。
【０１０７】
複数の符号木のうちの何れの符号木を符号化処理の最初に用いてもよいが、何れの符号木を符号化処理の最初に用いるかの規則も、複数の符号木を用いる規則として予め定めて記憶しておく。例えば、図１１のL=3の場合において、整数系列x1, x2, …, xNを整数値x1から順に符号化する場合には、整数値x1をT(0)で符号化する規則としてもよいし、整数値x1をT(1)で符号化する規則としてもよいし、整数値x1をT(2)で符号化する規則としてもよいが、T(0)からT(2)までの何れを整数値x1の符号化に用いるかは予め定めて記憶しておく。
【０１０８】
［［符号木を用いた符号化処理］］
整数符号化部１１０は、上述した複数の符号木を用いて、複数の符号木を用いる上述した規則に従って、入力された整数系列x1, x2, …, xNに含まれる各整数値を予め定めた順に符号化して符号を得、得た符号を整数符号として出力する。例えば、予め定めた順が系列中のサンプル番号順であり、最初に用いる符号木がT(0)である場合に整数符号化部１１０が行う符号化手順は下記の通りである。
（符号化手順）
1. サンプル番号n,符号木番号の初期値をそれぞれ1,0とする。
2. n=Nとなるまで以下の(i)〜(iv)を繰り返す。
(i) 符号木番号が0なら符号’1’を得る。
(ii) 整数値xn=0なら、符号木番号に1を加算したものを新たな符号木番号とする。この際、1を加算して符号木番号がLとなった場合には0を新たな符号木番号とする。
(iii) 整数値xn≠0で且つ符号木番号がp未満なら、1ビットの’0’と符号木に一対一に対応するK-1ビットとによるKビットの符号を得、さらに、K×(xn-1)ビットの符号’0’を得て、1を新たな符号木番号とする。
(iv) 整数値xn≠0で且つ符号木番号がp以上なら、1ビットの’0’と符号木に一対一に対応するKビットとによるK+1ビットの符号を得、さらに、K×(xn-1)ビットの符号’0’を得て、1を新たな符号木番号とする。
(v) nに1を加算したものを新たなnとする。
3. 1〜2により得た符号のうちの最初に得た符号’1’を取り除く。
（あるいは始めの1回の2.(i)操作を行わない。）
4. 1〜3により得た符号の最後に符号’1’（終端符号）を加える。
5. 1〜4により得た符号を整数符号として出力する。
【０１０９】
なお、第一実施形態と同様に、符号化手順のうちの3を行うのは必須ではない。
【０１１０】
また、第一実施形態と同様に、符号化装置１００から復号装置１５０への整数符号の伝え方によっては、符号化手順のうちの4は行わないでもよい。
【０１１１】
なお、上述した説明の符号’0’は２値のビット値のうちの何れか一方のビット値、上述した説明の符号’1’は２値のビット値のうちの他方のビット値、の例である。すなわち、当然のことながら、上述した説明の符号’0’に代えて符号’1’を用い、符号’1’に代えて符号’0’を用いてもよい。
【０１１２】
≪復号装置≫
図７及び図８を参照して、第三実施形態の復号装置１５０が実行する復号方法の処理手続きを説明する。第三実施形態の復号装置１５０は、図７に示す通り、整数復号部１６０を含む。第三実施形態の復号装置１５０が図８に示す各ステップの処理を実行することにより、第三実施形態の復号方法が実現される。
【０１１３】
第三実施形態の復号装置１５０には、第三実施形態の符号化装置１００が出力した整数符号が入力される。第三実施形態の復号装置１５０は、入力された整数符号を、第三実施形態の符号化装置１００に対応する予め定めた複数の符号木を第三実施形態の符号化装置１００に対応する予め定めた規則に則って用いた復号処理で復号して非負の整数値の系列を得ることで、第三実施形態の符号化装置１００に入力された非負の整数値の系列そのものを復元するものである。以下では、上述した符号化装置１００の説明と同様に、非負の整数値を単に「整数値」と呼んで説明する。
【０１１４】
［整数復号部１６０］
整数復号部１６０には、復号装置１５０に入力された整数符号が入力される。整数復号部１６０は、符号化装置１００の整数符号化部１１０が用いた符号化パラメータLと同じ値であり、整数復号部１６０内に予め記憶したまたは図示しない手段により入力された2以上の自然数である符号化パラメータLに基づき、入力された整数符号を以下の符号木を用いた復号処理で復号して整数値の系列を得、得た整数系列x1, x2, …, xNを出力する（Ｓ１６０）。以下では、整数系列x1, x2, …, xNの各整数がxn(nは系列中のサンプル番号であり、n∈{1,2, ..., N})であるとして説明を行う。
【０１１５】
また、以下では、2KがLを上回る最小の自然数であるKと、2KからLを引いた自然数であるpと、Lから2K-1を引いた自然数であるqと、を用いて説明を行う。Kとpとqは、Lを用いて表記可能な値であり、説明を簡単化するために便宜的に用いるものであるが、整数復号部１６０が実際に用いてもよい。整数復号部１６０がKやpやqを用いる場合には、Kやpやqの値は、整数復号部１６０が符号化パラメータLを用いて計算して求めてもよいし、符号化パラメータLとともに図示しない手段により入力されるようにしてもよいし、符号化パラメータLを整数復号部１６０内に予め記憶しておく場合には、Kやpやqの値も整数復号部１６０内に予め記憶しておいてもよい。
【０１１６】
復号処理に用いる符号木は、第三実施形態の符号化装置１００の整数符号化部１１０が用いる符号木と同じであり、整数復号部１６０には、図１１から図１３に例示するようなL個の符号木が予め記憶されている。復号処理における符号木における入力された符号と当該符号に対応する整数値との関係及び複数の符号木を用いる規則は、第三実施形態の符号化装置１００の整数符号化部１１０の符号化処理における規則に対応するものであり、第三実施形態の符号化装置１００の整数符号化部１１０の符号化処理における規則の「入力された整数値に割り当てる符号」を「入力された符号」と読み替え、「入力された整数値」を「入力された符号に割り当てる整数値」と読み替えた規則であり、整数復号部１６０に予め記憶されている。なお、復号処理において何れの符号木を最初に用いるかの規則も、第三実施形態の符号化装置１００の整数符号化部１１０が用いた規則と同じ規則であり、整数復号部１６０に予め記憶しておく。
【０１１７】
整数復号部１６０は、上述した複数の符号木を用いて、複数の符号木を用いる上述した規則に従って、入力された整数符号に対応する整数値による列を得て、得られた整数値による列の各整数を予め定めた順としたものを、整数系列x1, x2, …, xNとして得て出力する。例えば、予め定めた順が系列中のサンプル番号順であり、最初に用いる符号木がT(0)である場合に整数復号部１６０が行う復号手順は、例えば、下記の復号手順１や復号手順２の通りである。
【０１１８】
（復号手順１−１）符号化手順4による終端符号の追加を行っていない場合、すなわち、整数符号の終端を復号装置１５０が特定可能な場合
1. 符号化手順3で符号’1’を取り除いた場合は、整数符号の最初に符号’1’を追加する。
2. 符号木番号の初期値を0とする。
3. 読み込んでない整数符号がなくなるまで以下(i)〜(ii)を繰り返し、読み込んでない整数符号がなくなったら4に進む。
(i) 入力された整数符号を順に、符号木番号に対応する符号木に読み込んだ符号に対応する符号がある間（すなわち、符号木番号に対応する符号木に読み込んだ符号に対応する符号がなくなる１つ前のビットまで）、読み込む。
(ii) 符号木番号に対応する符号木から、読み込んだ符号に対応する符号に対応する整数値を得て、当該符号木の整数値についての符号木の遷移の規則に従って新たな符号木番号を得る。
4. 3の(ii)で得た整数値による系列を整数系列x1, x2, …, xNとして出力する。
【０１１９】
（復号手順１−２）符号化手順4による終端符号の追加を行った場合、すなわち、整数符号の終端を復号装置１５０が特定できない場合
1. 符号化手順3で符号’1’を取り除いた場合は、入力された符号列（整数符号と後続する別符号による符号列）の最初に符号’1’を追加する。
2. サンプル番号n, 符号木番号の初期値をそれぞれ1, 0とする。
3. n=Nとなるまで以下(i)〜(ii)を繰り返す。
(i) 入力された符号列を順に、符号木番号に対応する符号木に読み込んだ符号に対応する符号がある間（すなわち、符号木番号に対応する符号木に読み込んだ符号に対応する符号がなくなる１つ前のビットまで）、読み込む。
(ii) 符号木番号に対応する符号木から、読み込んだ符号に対応する符号に対応する整数値を得て、当該符号木の整数値についての符号木の遷移の規則に従って新たな符号木番号を得て、nに1を加算したものを新たなnとする。
4. 3の(ii)で得た整数値による系列を整数系列x1, x2, …, xNとして出力する。
【０１２０】
（復号手順２）
1. 符号化手順4で終端符号の追加を行っていない場合は、入力された符号列の最後に終端符号’1’を追加する。また、符号化手順3で符号’1’を取り除かなかった場合は、入力された符号列の最初に符号’1’を取り除く。
2. サンプル番号n, 符号木番号の初期値をそれぞれ1, 0とする。
3. n≧Nとなるまで以下(i)〜(v)を繰り返す。
(i) Kビット全てが符号’0’である間、入力された符号列を順にKビットずつ読み、その間読んだ符号’0’の個数をKで割った数をZとする。
(ii) 符号木番号が0なら、整数値Zを得る。
(iii) 符号木番号が0でないなら、整数値(Z+1)を得る。
(iv) 入力された符号列の次の1ビットが符号’1’なら、その1ビットを読み、(L-1)個の整数値0を得、0を新たな符号木番号にして、nにLを加算したものを新たなnとする。
(v) 入力された符号列の次の1ビットが符号’0’なら、その1ビットを含むKビットを読み、そのKビットのうちの最初の1ビットを除いた残りのK-1ビットに一対一に対応する符号木がある場合、そのK-1ビットに対応する符号木の番号を新たな符号木番号とし、そのKビットのうちの最初の1ビットを除いた残りのK-1ビットに一対一に対応する符号木がない場合（すなわち、そのK-1ビットが2個の符号木による組に一対一に対応する場合）、次の1ビットを読み、前述のKビットのうちの最初の1ビットを除いた残りのK-1ビットと読み込んだ1ビットによるKビットに一対一に対応する符号木の番号を新たな符号木番号とし、それぞれの場合において(新たな符号木番号-1)個の整数値0を得、nに新たな符号木番号を加算したものを新たなnとする。
4. 得られた整数値がN個よりも多い場合、N+1個目の整数値以降は取り除く。
【０１２１】
本実施形態の発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０１２２】
＜第三実施形態の発明の原理の説明＞
ここで本発明の原理を説明する。
【０１２３】
第三実施形態の符号化装置１００によれば、全ての非負整数値に対して符号を割り当てることが可能であり、当該符号を第三実施形態の復号装置１５０が復号することにより非負整数値そのものを復元可能とするものである。図１１から図１３に示した通り、表現できる整数値0の最大連続個数は2の整数乗に限らないL個である。このことから、第三実施形態で用いた本発明の符号は、第一実施形態や第二実施形態の符号のようにKが整数値に限られることなく、2K-1が自然数Lとなる全てのKについて、式(3)に示した偏りの大きな指数分布（片側ラプラス分布）に従う非負整数値の系列に対して近似的に最適な期待ビット長を与える符号であり、Kが整数値でない分布に従って小さな値に大きく偏った非負整数値の系列に対する平均ビット数を第一実施形態や第二実施形態の符号よりも少なくすることができる符号である。
【０１２４】
なお、上述した式(3)は、第一実施形態や第二実施形態の符号における整数値0の最大連続個数2K-1を用いて下記の式(4a)と近似することができる。
【０１２５】
【数４】
2020077969.tif 000006
【０１２６】
従って、符号で表現できる整数値0の最大連続個数は、圧縮効率が最大となる入力の分布に影響を及ぼす。ここで、符号化パラメータLを用いた第三実施形態で用いた本発明の符号は、下記の式(4b)の分布に従う非負整数値の系列に対して近似的に最適な期待ビット長を与える符号である。
【０１２７】
【数５】
2020077969.tif 000007
【０１２８】
つまり、本発明の符号化パラメータLは、第一実施形態や第二実施形態の符号化パラメータKと同様に、0より大きく1より小さい値に拡張したGolombパラメータや負値に拡張したRiceパラメータとして解釈でき、さらには、整数値0の最大連続個数がどのような値であってもよいように第一実施形態や第二実施形態の符号化パラメータKの取りうる値を拡張したものに対応していることになる。従って、非負整数値の系列に最適なGolombパラメータやRiceパラメータの推定を行うことにより、非負整数値の系列に割り当てる本発明の符号における最適なパラメータLを推定することができるということである。
【０１２９】
＜第四実施形態＞
第三実施形態では、予め定めた符号木を用いて本発明の符号化と復号を実現する形態を説明したが、予め定めた符号木に代えて、予め定めた対応表を用いることでも、第三実施形態と等価な符号化処理と復号処理を実現することが可能である。この予め定めた対応表を用いる形態を第四実施形態として説明する。
【０１３０】
≪符号化装置≫
図２及び図３を参照して、第四実施形態の符号化装置１００が実行する符号化方法の処理手続きを説明する。第四実施形態の符号化装置１００は、図２に示す通り、整数符号化部１１０を含む。第四実施形態の符号化装置１００が図３に示す各ステップの処理を実行することにより、第四実施形態の符号化方法が実現される。
【０１３１】
第四実施形態の符号化装置１００には、第一実施形態から第三実施形態と同様に、非負の整数値の系列が入力される。第四実施形態の符号化装置１００は、予め定めた対応表に従って、非負の整数値の系列を可変長符号化することで、Golomb符号化やGolomb-Rice符号化が想定している指数分布よりも偏りの大きな分布の非負の整数値の系列に対して、Golomb符号化やGolomb-Rice符号化よりも短いビット長となる符号化処理を実現するものである。以下では、符号化装置１００に入力された非負の整数値を単に「整数値」と呼んで説明する。
【０１３２】
［整数符号化部１１０］
整数符号化部１１０には、符号化装置１００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNが入力される。第二実施形態の整数符号化部１１０は、2以上の自然数である符号化パラメータLに対応して予め作成して整数符号化部１１０内に記憶された対応表に基づいて、入力された整数系列x1, x2, …, xNを符号化して符号を得、得た符号を整数符号として出力する（Ｓ１１０）。
【０１３３】
［［符号化処理に用いる対応表］］
予め記憶された対応表は、零値の連続（0個以上の連続）と１つの非零値との組合せによる整数値の部分系列と、当該部分系列に対応する符号と、の対応関係の規則を格納したものである。L=3とL=5における対応表の例を、それぞれ図１４と図１５に挙げる。対応表に格納された規則は、L個連続した零値による部分系列にはビット値が’1’である1ビットの符号が割り当てられ、それ以外の部分系列、すなわち、0個からL-1個連続した零値とそれに後続する１つの非零値xnによる部分系列には、それぞれの零値の連続と非零値xnの組合せに対して、1ビット目からKビット目までに少なくとも1つのビット値’1’と少なくとも1つのビット値’0’を含み、かつ、最後からK×(xn-1)ビットはビット値が’0’である、K×xnビットまたはK×xn+1ビットの符号が割り当てられる規則である。
【０１３４】
より詳しくは、この規則では、0個からL-1個連続した零値と１つの非零値による部分系列のそれぞれには、0個からL-1個の零値の連続数L通りと一対一に対応する以下の（ａ）から（ｃ）のL通りの部分符号を含む符号が割り当てられる。
（ａ）K×xn+1ビットの符号の1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が’1’であり、2ビット目からK+1ビット目までのビット値が’0’である、１通りの部分符号。
（ｂ）K×xnビットの符号の1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が’0’であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が’1’である、p-1通り（すなわち、2K-L-1通り）の部分符号。
（ｃ）K×xn+1ビットの符号の1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が’0’であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が’1’であり、かつ、1ビット目からKビット目までのKビットの組が上述した（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が’1’または’0’である、2q通り（すなわち、2L-2K通り）の部分符号。
【０１３５】
［［対応表を用いた符号化処理］］
整数符号化部１１０は、上述した対応表を用いて、入力された整数系列x1, x2, …, xNに含まれる各整数値を予め定めた順に符号化して符号を得、得た符号を整数符号として出力する。例えば、予め定めた順が系列中のサンプル番号順である場合に整数符号化部１１０が行う符号化手順は下記の通りである。
（符号化手順）
1. サンプル番号nを1とする。
2. n=Nとなるまで、以下の(i)〜(ii)を繰り返す。
(i) xn以降のL個の整数値の中に非零値がある場合には、xn以降の最初の非零値までの部分系列に対応する符号を符号表から得て、xn以降の最初の非零値までのサンプル数をnに加算したものを新たなnとする。
(ii) xn以降のL個の整数値が全て零値である場合には、xn以降のL個の整数値の部分系列に対応する符号を符号表から得て、Lをnに加算したものを新たなnとする。
3. 2により得た符号の最後に符号’1’（終端符号）を加える。
4. 3により得た符号を整数符号として出力する。
【０１３６】
なお、第三実施形態と同様に、符号化装置１００から復号装置１５０への整数符号の伝え方によっては、終端符号を加える処理（符号化手順のうちの3）は行わないでもよい。
【０１３７】
なお、第四実施形態の符号化装置１００の整数符号化部１１０における図１４と図１５を用いた符号化処理により得られる符号は、それぞれ、第三実施形態の符号化装置１００の整数符号化部１１０における図１１(B)と図１２(B)の符号木を用いる符号化処理において、最初に用いる符号木をT(1)にした場合に得られる符号に一致する。また、第四実施形態の符号化装置１００の整数符号化部１１０にて、図１４と図１５のそれぞれを用いて符号化する際に、入力された整数系列x1, x2, …, xNの先頭に(L-1)個の零値を追加してから符号化を行い、得られた整数符号の最初にある符号’1’を取り除くようにすれば、第三実施形態の符号化装置１００の整数符号化部１１０における図１１(B)と図１２(B)のそれぞれの符号木を用いる符号化処理において、最初に用いる符号木をT(0)にした場合に得られる符号に一致する。このように、第四実施形態の符号化装置１００の整数符号化部１１０における対応表を用いた符号化処理は、第三実施形態の符号化装置１００の整数符号化部１１０における符号木を用いた符号化処理と等価なものである。
【０１３８】
≪復号装置≫
図７及び図８を参照して、第四実施形態の復号装置１５０が実行する復号方法の処理手続きを説明する。第四実施形態の復号装置１５０は、図７に示す通り、整数復号部１６０を含む。第四実施形態の復号装置１５０が図８に示す各ステップの処理を実行することにより、第四実施形態の復号方法が実現される。
【０１３９】
第四実施形態の復号装置１５０には、第三実施形態の復号装置１５０と同様、第四実施形態の符号化装置１００が出力した整数符号が入力される。第四実施形態の復号装置１５０は、入力された整数符号を、第四実施形態の符号化装置１００の整数符号化部１１０に記憶された対応表と同じ対応表を用いた復号処理で復号して非負の整数値の系列を得ることで、第四実施形態の符号化装置１００に入力された非負の整数値の系列そのものを復元するものである。以下では、上述した符号化装置の説明と同様に、非負の整数値を単に「整数値」と呼んで説明する。
【０１４０】
［整数復号部１６０］
整数復号部１６０には、復号装置１５０に入力された整数符号が入力される。整数復号部１６０は、予め作成して整数復号部１６０内に記憶された対応表であり、符号化パラメータLに対応する予め作成された対応表であり、符号化装置１００の整数符号化部１１０内に予め記憶され整数符号化部１１０で用いられたのと同じ対応表に基づいて、入力された整数符号を復号して整数系列x1, x2, …, xNを得て出力する（Ｓ１６０）。
【０１４１】
より具体的には、整数復号部１６０は、入力された整数符号のうちのまだ読み込んでいない符号部分を最初から対応表に対応する符号がある部分まで読み込み、読み込んだ符号に対応する整数の部分系列を対応表から得る処理を、入力された整数符号の最初から最後まで繰り返し行うことで得た整数の部分系列を纏めた系列を整数系列x1, x2, …, xNとして出力する。この復号処理により、第三実施形態の復号装置１５０の整数復号部１６０における図１１(B)と図１２(B)のそれぞれの符号木を用いる復号処理において、最初に用いる符号木をT(1)にした場合と同じ整数系列x1, x2, …, xNを得ることができる。
【０１４２】
なお、符号化装置１００の整数符号化部１１０にて、入力された整数系列x1, x2, …, xNの先頭に(L-1)個の零値を追加してから符号化を行い、得られた整数符号の最初にある符号’1’を取り除く処理を行った場合は、整数復号部１６０は、入力された整数符号の先頭に符号’1’を追加してから上記対応表に基づいて上述した復号処理で各部分系列を得、はじめに得られた(L-1)個の零値を省略した後、部分系列を纏めた整数系列x1, x2, …, xNを出力すればよい。この復号処理により、第三実施形態の復号装置１５０の整数復号部１６０における図１１(B)と図１２(B)のそれぞれの符号木を用いる復号処理において、最初に用いる符号木をT(0)にした場合と同じ整数系列x1, x2, …, xNを得ることができる。このように、第四実施形態の復号装置１５０の整数復号部１６０における対応表を用いた復号処理は、第三実施形態の復号装置１５０の整数復号部１６０における符号木を用いた復号処理と等価なものである。
【０１４３】
以上から分かるように、第三実施形態の符号化装置１００によって符号木を用いた符号化処理で得た整数符号を、第四実施形態の復号装置１５０によって当該符号化処理と対応する対応表を用いた復号処理で復号して整数系列x1, x2, …, xNを得たり、第四実施形態の符号化装置１００によって対応表を用いた符号化処理で得た整数符号を、第三実施形態の復号装置１５０によって当該符号化処理と対応する符号木を用いた復号処理で復号して整数系列x1, x2, …, xNを得たりしてもよい。
【０１４４】
本実施形態の発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０１４５】
＜第五実施形態＞
第三実施形態及び第四実施形態では、予め定めた符号木または予め定めた対応表を用いて符号化復号する手続き的側面から本発明の符号化と復号を実現する形態について説明した。第五実施形態では、これらの手続きにより得られる符号や整数値の系列というデータ的側面から本発明の符号化と復号を実現する形態について説明する。
【０１４６】
本実施形態の説明では、Lを2以上の整数とする。また、2KがLを上回る最小の自然数をK、2KからLを引いた自然数をp、Lから2K-1を引いた自然数をqとする。さらに、ビット値“x”はビット値“1”でありビット値“y”はビット値“0”である、または、ビット値“x”はビット値“0”でありビット値“y”はビット値“1”であるとする。
【０１４７】
≪符号化装置≫
図２及び図３を参照して、第五実施形態の符号化装置１００が実行する符号化方法の処理手続きを説明する。第五実施形態の符号化装置１００は、図２に示す通り、整数符号化部１１０を含む。第五実施形態の符号化装置１００が図３に示す各ステップの処理を実行することにより、第五実施形態の符号化方法が実現される。
【０１４８】
第五実施形態の符号化装置１００には、非負の整数値xn、n∈{1, 2, ..., N}の系列（以下、「整数系列」という）が入力される。以下では、符号化装置１００に入力された非負の整数値を単に「整数値」と呼んで説明する。
【０１４９】
［整数符号化部１１０］
整数符号化部１１０は、整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）を得、整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）を得る（Ｓ１１０）。具体的には、Nサンプルずつの整数系列x1, x2, …, xNを、第三実施形態で説明した符号木や第四実施形態で説明した対応表を用いて符号化して、符号Ａや符号Ｂを得る。
【０１５０】
なお、符号Ｂについては、整数系列における整数値0の0個からL-1個のL通りの連続個数と、以下のL通りの部分符号の間に一対一の対応関係が存在する。
（符号Ｂの部分符号）
（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号。
（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号。
（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が上述した（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号。
【０１５１】
≪復号装置≫
図７及び図８を参照して、第五実施形態の復号装置１５０が実行する復号方法の処理手続きを説明する。第五実施形態の復号装置１５０は、図７に示す通り、整数復号部１６０を含む。第五実施形態の復号装置１５０が図８に示す各ステップの処理を実行することにより、第五実施形態の復号方法が実現される。
【０１５２】
第五実施形態の復号装置１５０には、第五実施形態の符号化装置１００が出力した符号列が入力される。以下では、先述した符号化装置の説明と同様に、非負の整数値を単に「整数値」と呼んで説明する。
【０１５３】
［整数復号部１６０］
整数復号部１６０は、入力された符号列に含まれる、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）から、整数値0のL個の連続を得、入力された符号列に含まれる、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）から、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組を得る（Ｓ１６０）。具体的には、入力された符号列に含まれる符号を、第三実施形態で説明した符号木や第四実施形態で説明した対応表を用いて復号して、符号Ａや符号Ｂに対応する上記整数値の系列を得る。
【０１５４】
整数復号部１６０は、例えば、以下の２つの処理を行うことにより、入力された符号列に含まれる符号Ａと符号Ｂを特定する。２つの処理とは、整数復号部１６０は、入力された符号列の最初から順に、入力された符号列を、連続するKビット（以下、「Kビット列」という）ずつ読みこむことと、読み込まれたKビット列が“y”を含むものであるとき、該“y”を含むKビット列の直前のビットが、符号Ａまたは符号Ｂの終端のビットであると識別することと、を行うことである。
【０１５５】
なお、符号Ｂについては、以下のL通りの部分符号と、整数復号部１６０により得られた整数値による系列における整数値0の0個からL-1個のL通りの連続個数との間に一対一の対応関係が存在する。
（符号Ｂの部分符号）
（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号。
（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号。
（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が上述した（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号。
【０１５６】
≪符号列のデータ構造≫
第五実施形態の符号化装置及び復号装置が扱う符号列のデータ構造、つまり、第三実施形態及び第四実施形態の符号化装置が整数値の系列から得た符号列であり、第三実施形態及び第四実施形態の復号装置が整数値の系列を得るために用いる符号列のデータ構造について説明する。
【０１５７】
［符号列のデータ構造］
非負値である整数値xn、n∈{1, 2, ..., N}の系列（以下、「整数系列」という）を表す符号列は、整数系列から符号列を得る符号化装置や符号列から整数系列を得る復号装置で用いられるものである。
【０１５８】
符号列のデータ構造は、整数系列に含まれる整数値0のL個の連続に対応する符号として、ビット値が“x”である1ビットの符号（以下、「符号Ａ」という）と、整数系列に含まれる、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組、に対応する符号として、1ビット目からKビット目までに少なくとも1つのビット値“x”と少なくとも1つのビット値“y”を含み、かつ、最後からK×(xn-1)ビットはビット値が“y”である、K×xnビットまたはK×xn+1ビットの符号（以下、「符号Ｂ」という）と、を含む。
【０１５９】
なお、符号Ｂについては、整数系列における整数値0の0個からL-1個のL通りの連続個数と、以下のL通りの部分符号の間に一対一の対応関係が存在する。
（符号Ｂの部分符号）
（ａ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“x”であり、2ビット目からK+1ビット目までのビット値が“y”である、１通りの部分符号。
（ｂ）符号ＢがK×xnビットであるときの、該符号Ｂの1ビット目からKビット目までのKビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”である、p-1通り（すなわち、2K-L-1通り）の部分符号。
（ｃ）符号ＢがK×xn+1ビットであるときの、該符号Ｂの1ビット目からK+1ビット目までのK+1ビットで構成され、1ビット目のビット値が“y”であり、2ビット目からKビット目までのK-1ビット中の少なくとも1ビットのビット値が“x”であり、かつ、1ビット目からKビット目までのKビットの組が上述した（ｂ）のp-1通り（すなわち、2K-L-1通り）とは異なり、K+1ビット目のビット値が“x”または“y”である、2q通り（すなわち、2L-2K通り）の部分符号。
【０１６０】
本実施形態の発明によれば、零値ではない小さな値も含んで小さな値に大きく偏っている整数値の系列や、非特許文献２の技術では対応しきれないくらいに値の偏った整数値の系列であっても、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０１６１】
＜第六実施形態＞
上述の通り、本発明の符号に用いる符号化パラメータLは、0より大きく1より小さい値に拡張したGolombパラメータや負値に拡張したRiceパラメータに対応し、本発明の符号は0より大きく1より小さい値に拡張したGolombパラメータに対するGolomb符号や負値のRiceパラメータに対するGolomb-Rice符号としても解釈できる。従って、従来の最適なGolombパラメータの推定法を基に最適な符号化パラメータLを入力された整数値による系列の部分系列に対して求め、求めた符号化パラメータLを用いた第三実施形態から第五実施形態の整数符号化部の処理をGolomb符号化と組み合わせて入力された整数値の系列を符号化してもよく、この符号化に対応する復号を行ってもよい。この形態を第六実施形態として説明する。
【０１６２】
≪符号化装置≫
図１６及び図１７を参照して、第六実施形態の符号化装置４００が実行する符号化方法の処理手続きを説明する。第六実施形態の符号化装置４００は、図１６に示す通り、パラメータ決定部４２０と整数符号化部４１０を含む。第六実施形態の符号化装置４００が図１７に示す各ステップの処理を実行することにより、第六実施形態の符号化方法が実現される。
【０１６３】
第六実施形態の符号化装置４００には、第三から第五実施形態と同様に、非負の整数値の系列が入力される。第六実施形態の符号化装置４００に入力された非負の整数値の系列はNサンプルずつパラメータ決定部４２０と整数符号化部４１０に入力される。すなわち、第六実施形態の符号化装置４００は、例えばマイクロホンで収音した音声や音楽などをディジタル信号に変換して量子化して得た整数値の絶対値による系列などの整数値の系列を、Nサンプルによるフレームごとに符号化する。
【０１６４】
以下では、本実施形態の符号化装置に入力された非負の整数値を単に「整数値」と呼んで説明する。
【０１６５】
［パラメータ決定部４２０］
パラメータ決定部４２０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNが入力される。パラメータ決定部４２０は、入力された整数系列x1, x2, …, xNに基づき、その整数系列に対応するGolombパラメータｓとそのパラメータを表す符号であるパラメータ符号と、を得て出力する（Ｓ４２０）。パラメータ符号は、復号装置４５０が当該パラメータ符号を復号することによりパラメータ決定部４２０が決定したGolombパラメータｓを得られるように、Golombパラメータを符号化して得ればよい。
【０１６６】
パラメータ決定部４２０は、例えば、入力された整数系列x1, x2, …, xNに含まれる各整数値を用いて式(5)によりGolombパラメータｓを得る。
【０１６７】
【数６】
2020077969.tif 000008
【０１６８】
式(5)で求まるGolombパラメータsは、整数系列x1, x2, …, xNについて式(2)により推定されるGolomb符号化時の総ビット長の推定値を最小化するものである。
【０１６９】
そして、パラメータ決定部４２０は、例えば、式(5)により得たGolombパラメータsをスカラ量子化して符号を得て、得た符号をパラメータ符号として出力し、当該パラメータ符号に対応するGolombパラメータsの量子化値をGolombパラメータsとして出力する。
【０１７０】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力したGolombパラメータsが入力される。整数符号化部４１０は、Golombパラメータsが1以上である場合には、Golombパラメータsの小数第一位を四捨五入するなどによりGolombパラメータｓを丸めて整数値にした後に、整数系列x1, x2, …, xNに対して整数値のGolombパラメータｓによるGolomb符号化を行って、Golomb符号化により得た符号を整数符号として出力し、Golombパラメータｓが１未満である場合には、Golombパラメータｓから後述する処理によりLの値を得て、得たLの値の小数第一位を四捨五入するなどによりLの値を丸めて整数値にすることで符号化パラメータLを得て、得た符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。なお、符号化パラメータLが1と2の間の値である場合には、例えば、丸め後の整数値を2とすればよい。
【０１７１】
GolombパラメータｓからLの値を得る処理は、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同じになるLの値を求めるか、または、ｓで表現される指数分布p(x,2-1/s)をLで表現される指数分布p(x,1-2-1/L)で近似できるようなLの値を求めることにより行う。すなわち、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、GolombパラメータsからLの値を得る。例えば、p(x,2-1/s)=p(x,1-2-1/L)から直接導かれるｓからLへの変換式である式(6a)を用いて、GolombパラメータｓからLの値を求める。
【０１７２】
【数７】
2020077969.tif 000009
【０１７３】
また、例えば、ｓで表現される指数分布p(x,2-1/s)をLで表現される指数分布p(x,1-2-1/L)で近似するLの値として、上記式(6a)を近似して得られる式(6b)を用いてLの値を求めてもよい。
【０１７４】
【数８】
2020077969.tif 000010
【０１７５】
≪復号装置≫
図１８及び図１９を参照して、第六実施形態の復号装置４５０が実行する復号方法の処理手続きを説明する。第六実施形態の復号装置４５０は、図１８に示す通り、パラメータ復号部４７０と整数復号部４６０を含む。第六実施形態の復号装置４５０が図１９に示す各ステップの処理を実行することにより、第六実施形態の復号方法が実現される。
【０１７６】
第六実施形態の復号装置４５０には、第六実施形態の符号化装置４００が出力した整数符号、及びパラメータ符号が入力される。復号装置４５０に入力された整数符号及びパラメータ符号は、整数値の系列のNサンプルに対応する符号ごとにパラメータ復号部４７０と整数復号部４６０に入力される。すなわち、復号装置４５０は、符号化装置４００と同じフレームごとに復号処理を行う。
【０１７７】
［パラメータ復号部４７０］
パラメータ復号部４７０には、復号装置４５０に入力されたパラメータ符号が入力される。パラメータ復号部４７０は、パラメータ決定部４２０がパラメータ符号を得たのと対応する復号処理により、パラメータ符号を復号してGolombパラメータsを得て出力する（Ｓ４７０）。パラメータ復号部４７０は、例えば、符号化装置４００のパラメータ決定部４２０が行ったスカラ量子化に対応する復号処理により、パラメータ符号に対応するGolombパラメータsの量子化値をGolombパラメータsとして得て出力する。
【０１７８】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力したGolombパラメータsが入力される。整数復号部４６０は、Golombパラメータsが１以上である場合には、Golombパラメータｓを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に整数符号に対してGolombパラメータｓによるGolomb復号を行って整数系列x1, x2, …, xNを得て出力し、Golombパラメータｓが１未満である場合には、第六実施形態の整数符号化部４１０と同じ処理によりGolombパラメータsから符号化パラメータLを得て、得た符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０１７９】
本実施形態の発明によれば、整数値の系列やその部分系列に最適な符号化パラメータLを用いることで、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０１８０】
＜第六実施形態の変形例１＞
第六実施形態では、Golomb符号化・復号と組み合わせた符号化・復号処理を行ったが、Golomb符号化・復号と組み合わせないでもよい。Golomb符号化・復号と組み合わせない形態を第六実施形態の変形例１として説明する（図１６、図１７参照）。第六実施形態の変形例１の符号化装置４００と第六実施形態の符号化装置４００とは、整数符号化部４１０の動作のみ異なる。また、第六実施形態の変形例１の復号装置４５０と第六実施形態の復号装置４５０とは、整数復号部４６０の動作のみ異なる。そこで、以下では、整数符号化部４１０の動作と整数復号部４６０の動作について説明する。
【０１８１】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力したGolombパラメータsが入力される。整数符号化部４１０は、Golombパラメータsが１以上である場合には、2を符号化パラメータLとして用いて、第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力し、Golombパラメータsが１未満である場合には、第六実施形態の整数符号化部４１０と同じ処理によりGolombパラメータsから符号化パラメータLを得、得た符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。なお、符号化パラメータLが1と2の間の値である場合には、例えば、丸め後の整数値を2とすればよい。
【０１８２】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力したGolombパラメータsが入力される。整数復号部４６０は、Golombパラメータsが１以上である場合には、2を符号化パラメータLとして用いて、第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力し、Golombパラメータsが１未満である場合には、第六実施形態の変形例１の整数符号化部４１０と同じ処理によりGolombパラメータsから符号化パラメータLを得て、得た符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０１８３】
＜第六実施形態の変形例２＞
第六実施形態では、整数符号化部４１０においてGolombパラメータsが１未満である場合にGolombパラメータｓから符号化パラメータLを得る構成としていたが、パラメータ決定部４２０においてGolombパラメータsが１未満である場合に整数系列から符号化パラメータLを直接得る構成としてもよい。この形態を第六実施形態の変形例２として、以下説明する（図１６、図１７参照）。
【０１８４】
［パラメータ決定部４２０］
第六実施形態のパラメータ決定部４２０は、Golombパラメータの値に関わらず、Golombパラメータと当該Golombパラメータに対応するパラメータ符号とを必ず出力する構成であったが、第六実施形態の変形例２のパラメータ決定部４２０は、Golombパラメータsが１以上である場合には、Golombパラメータsと当該Golombパラメータsに対応するパラメータ符号とを出力し、Golombパラメータsが１未満である場合には、整数系列から符号化パラメータLを得て、符号化パラメータLと当該符号化パラメータLに対応するパラメータ符号とを出力する（Ｓ４２０）。
【０１８５】
パラメータ決定部４２０は、例えば、入力された整数系列x1, x2, …, xNに含まれる各整数値を用いて式(7a)により符号化パラメータLを得る。
【０１８６】
【数９】
2020077969.tif 000011
【０１８７】
式(7a)で求まる符号化パラメータLは、整数系列x1, x2, …, xNについての式(4b)に基づく分布p(x,1-2-1/L)に対する対数尤度を最大化するものである。なお、後述する通り、整数符号化部４１０が符号化処理で用いる符号化パラメータLやGolombパラメータsは、パラメータ決定部４２０が求めた符号化パラメータLの値そのものではなく、符号化パラメータLや符号化パラメータLから求めたGolombパラメータsを整数値としたものである。そこで、パラメータ決定部４２０は、式(7a)ではなく、式(7a)を近似した、例えば下記の式(7b)で符号化パラメータLを得るようにしてもよい。
【０１８８】
【数１０】
2020077969.tif 000012
【０１８９】
すなわち、式(7a)や式(7b)はあくまでも例であって、パラメータ決定部４２０は、整数系列x1, x2, …, xNについて指数分布p(x, 1-2-1/L)に対する尤度、尤度の推定値、対数尤度、対数尤度の推定値のいずれかが最大となるような符号化パラメータLを得ればよい。
【０１９０】
そして、パラメータ決定部４２０は、上述した処理により得た符号化パラメータLを例えばスカラ量子化して符号を得て、当該符号に対応する符号化パラメータLの量子化値を符号化パラメータLとして出力する。
【０１９１】
パラメータ符号は、対応する復号装置４５０がGolombパラメータsの値と符号化パラメータLの値を一意に特定可能な符号とすればよい。例えば、パラメータ決定部４２０が、Golombパラメータsを符号化して得た符号の前に１ビットの符号’1’を付したものをパラメータ符号とし、符号化パラメータLを符号化して得た符号の前に１ビットの符号’0’を付したものをパラメータ符号とするなどにより、Golombパラメータsに割り当てるパラメータ符号の符号群と、符号化パラメータLに割り当てるパラメータ符号の符号群とに同じ符号が含まれないようにすればよい。
【０１９２】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力したGolombパラメータsまたは符号化パラメータLが入力される。整数符号化部４１０は、Golombパラメータsが入力された場合には、Golombパラメータsを丸めて整数値にし、整数系列x1, x2, …, xNに対して整数値のGolombパラメータsによるGolomb符号化を行って、Golomb符号化により得た符号を整数符号として出力し、符号化パラメータLが入力された場合には、符号化パラメータLを丸めて整数値にし、整数値の符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。なお、符号化パラメータLが1と2の間の値である場合には、例えば、丸め後の整数値を2とすればよい。
【０１９３】
［パラメータ復号部４７０］
第六実施形態のパラメータ復号部４７０はパラメータ符号を復号してGolombパラメータを得るものであったが、第六実施形態の変形例２のパラメータ復号部４７０は、パラメータ符号を復号してGolombパラメータsまたは符号化パラメータLを得て出力する（Ｓ４７０）。
【０１９４】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力したGolombパラメータsまたは符号化パラメータLが入力される。整数復号部４６０は、Golombパラメータsが入力された場合には、Golombパラメータsを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に、整数符号に対して整数値のGolombパラメータsによるGolomb復号を行って整数系列x1, x2, …, xNを得て出力し、符号化パラメータLが入力された場合には、符号化パラメータLを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に、整数値の符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０１９５】
＜第七実施形態＞
第六実施形態の符号化装置では、まずGolombパラメータsを求めて、求めたGolombパラメータsから符号化パラメータLを求めていたが、符号化パラメータLを、本発明の符号が最適な指数分布p(x, 1-2-1/L)に対して尤もらしいLを推定することにより、入力された整数値の系列から直接推定してもよい。この場合、Golomb符号は１以下の値をとるLによる本発明の符号と解釈することができる。従って、最適な符号化パラメータLを入力された整数値による系列の部分系列から直接求め、求めた符号化パラメータLを用いた第三実施形態から第五実施形態の整数符号化部１１０の処理をGolomb符号化と組み合わせて入力された整数値の系列を符号化してもよく、この符号化に対応する復号を行ってもよい。この形態を第七実施形態として説明する。
【０１９６】
≪符号化装置≫
図１６及び図１７を参照して、第七実施形態の符号化装置４００が実行する符号化方法の処理手続きを説明する。第七実施形態の符号化装置４００は、図１６に示す通り、パラメータ決定部４２０と整数符号化部４１０を含む。第七実施形態の符号化装置４００が図１７に示す各ステップの処理を実行することにより、第七実施形態の符号化方法が実現される。
【０１９７】
第七実施形態の符号化装置４００には、第三から第六実施形態と同様に、非負の整数値の系列が入力される。第七実施形態の符号化装置４００に入力された非負の整数値の系列はNサンプルずつパラメータ決定部４２０と整数符号化部４１０に入力される。すなわち、第七実施形態の符号化装置４００は、例えばマイクロホンで収音した音声や音楽などをディジタル信号に変換して量子化して得た整数値の絶対値による系列などの整数値の系列を、Nサンプルによるフレームごとに符号化する。
【０１９８】
以下では、本実施形態の符号化装置に入力された非負の整数値を単に「整数値」と呼んで説明する。
【０１９９】
［パラメータ決定部４２０］
パラメータ決定部４２０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNが入力される。パラメータ決定部４２０は、入力された整数系列x1, x2, …, xNに基づき、その整数系列に対応する符号化パラメータLとそのパラメータを表す符号であるパラメータ符号と、を得て出力する（Ｓ４２０）。パラメータ符号は、復号装置４５０が当該パラメータ符号を復号することによりパラメータ決定部４２０が決定した符号化パラメータLを得られるように、符号化パラメータLを符号化して得ればよい。
【０２００】
パラメータ決定部４２０は、入力された整数系列x1, x2, …, xNについて指数分布p(x, 1-2-1/L)に対する尤度、尤度の推定値、対数尤度、対数尤度の推定値のいずれかが最大となるような符号化パラメータLを得る。このような符号化パラメータLを得る処理は第六実施形態の変形例２のパラメータ決定部４２０の説明において上述した通りであり、パラメータ決定部４２０は、例えば、入力された整数系列x1, x2, …, xNに含まれる各整数値を用いて式(7a)または式(7b)により符号化パラメータLを得る。
【０２０１】
そして、パラメータ決定部４２０は、上述した処理により得た符号化パラメータLを例えばスカラ量子化して符号を得て、得た符号をパラメータ符号として出力し、当該パラメータ符号に対応する符号化パラメータLの量子化値を符号化パラメータLとして出力する。
【０２０２】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力した符号化パラメータLが入力される。整数符号化部４１０は、符号化パラメータLが１以下である場合には、符号化パラメータLから後述する処理によりsの値を得て、得たsの値の小数第一位を四捨五入するなどによりsの値を丸めて整数値にすることでGolombパラメータsを得て、得たGolombパラメータsを用いて整数系列x1, x2, …, xNに対してGolombパラメータsによるGolomb符号化を行って、Golomb符号化により得た符号を整数符号として出力し、符号化パラメータLが１よりも大きい場合には、符号化パラメータLの小数第一位を四捨五入するなどによりLの値を丸めて整数値にした後に、整数値の符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。なお、符号化パラメータLが1と2の間の値である場合には、例えば、丸め後の整数値を2とすればよい。
【０２０３】
符号化パラメータLからsの値を得る処理は、Lで表現される指数分布p(x,1-2-1/L)とｓで表現される指数分布p(x,2-1/s)とが同じになるsの値を求めるか、または、Lで表現される指数分布p(x,1-2-1/L)をｓで表現される指数分布p(x,2-1/s)で近似できるようなsの値を求めることにより行う。すなわち、Lで表現される指数分布p(x,1-2-1/L)とｓで表現される指数分布p(x,2-1/s)とが同一または近似の関係となるように、符号化パラメータLからsの値を得る。例えば、p(x,1-2-1/L)=p(x,2-1/s)から直接導かれるLからsへの変換式である式(8a)を用いて、符号化パラメータLからsの値を求める。
【０２０４】
【数１１】
2020077969.tif 000013
【０２０５】
また、例えば、Lで表現される指数分布p(x,1-2-1/L)をｓで表現される指数分布p(x,2-1/s)で近似するsの値として、上記式(8a)を近似して得られる式(8b)を用いてsの値を求めてもよい。
【０２０６】
【数１２】
2020077969.tif 000014
【０２０７】
≪復号装置≫
図１８及び図１９を参照して、第七実施形態の復号装置４５０が実行する復号方法の処理手続きを説明する。第七実施形態の復号装置４５０は、図１８に示す通り、パラメータ復号部４７０と整数復号部４６０を含む。第七実施形態の復号装置４５０が図１９に示す各ステップの処理を実行することにより、第七実施形態の復号方法が実現される。
【０２０８】
第七実施形態の復号装置４５０には、第七実施形態の符号化装置４００が出力した整数符号、及びパラメータ符号が入力される。復号装置４５０に入力された整数符号及びパラメータ符号は、整数値の系列のNサンプルに対応する符号ごとにパラメータ復号部４７０と整数復号部４６０に入力される。すなわち、復号装置４５０は、符号化装置４００と同じフレームごとに復号処理を行う。
【０２０９】
［パラメータ復号部４７０］
パラメータ復号部４７０には、復号装置４５０に入力されたパラメータ符号が入力される。パラメータ復号部４７０は、パラメータ決定部４２０がパラメータ符号を得たのと対応する復号処理により、パラメータ符号を復号して符号化パラメータLを得て出力する（Ｓ４７０）。パラメータ復号部４７０は、例えば、符号化装置４００のパラメータ決定部４２０が行ったスカラ量子化に対応する復号処理により、パラメータ符号に対応する符号化パラメータLの量子化値を符号化パラメータLとして得て出力する。
【０２１０】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力した符号化パラメータLが入力される。整数復号部４６０は、符号化パラメータLが１以下である場合には、第七実施形態の整数符号化部４１０と同じ処理により符号化パラメータLからGolombパラメータsを得て、得たGolombパラメータsを用いて整数符号に対してGolombパラメータsによるGolomb復号を行って整数系列x1, x2, …, xNを得て出力し、符号化パラメータLが１よりも大きい場合には、符号化パラメータLを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に、整数値の符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０２１１】
本実施形態の発明によれば、整数値の系列やその部分系列に最適な符号化パラメータLを用いることで、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０２１２】
＜第七実施形態の変形例１＞
第七実施形態では、Golomb符号化・復号と組み合わせた符号化・復号処理を行ったが、Golomb符号化・復号と組み合わせないでもよい。Golomb符号化・復号と組み合わせない形態を第七実施形態の変形例１として説明する（図１６、図１７参照）。第七実施形態の変形例１の符号化装置４００と第七実施形態の符号化装置４００とは、整数符号化部４１０の動作のみ異なる。また、第七実施形態の変形例１の復号装置４５０と第七実施形態の復号装置４５０とは、整数復号部４６０の動作のみ異なる。そこで、以下では、整数符号化部４１０の動作と整数復号部４６０の動作について説明する。
【０２１３】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力した符号化パラメータLが入力される。整数符号化部４１０は、入力された符号化パラメータLの小数第一位を四捨五入するなどによりLの値を丸めて整数値にした後に、整数値の符号化パラメータLが1以下である場合には、2を符号化パラメータLとして用いて、第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力し、整数値の符号化パラメータLが１よりも大きい場合には、整数値の符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。
【０２１４】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力した符号化パラメータLが入力される。整数復号部４６０は、入力された符号化パラメータLを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に、整数値の符号化パラメータLが１以下である場合には、2を符号化パラメータLとして用いて、第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力し、整数値の符号化パラメータLが１よりも大きい場合には、整数値の符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０２１５】
＜第七実施形態の変形例２＞
第七実施形態では、整数符号化部４１０において符号化パラメータLが１以下である場合に符号化パラメータLからGolombパラメータsを得る構成としていたが、パラメータ決定部４２０において符号化パラメータLが１以下である場合に整数系列からGolombパラメータsを直接得る構成としてもよい。この形態を第七実施形態の変形例２として、以下説明する（図１６、図１７参照）。
【０２１６】
［パラメータ決定部４２０］
第七実施形態のパラメータ決定部４２０は、符号化パラメータLの値に関わらず、符号化パラメータLと当該符号化パラメータLに対応するパラメータ符号とを必ず出力する構成であったが、第七実施形態の変形例２のパラメータ決定部４２０は、符号化パラメータLが1よりも大きい場合には、符号化パラメータLと当該符号化パラメータLに対応するパラメータ符号とを出力し、符号化パラメータLが1以下である場合には、式(5)により整数系列からGolombパラメータsを得て、Golombパラメータsと当該Golombパラメータsに対応するパラメータ符号とを出力する（Ｓ４２０）。その際、第六実施形態の変形例２と同様に、パラメータ符号は、対応する復号装置４５０がGolombパラメータsの値と符号化パラメータLの値を一意に特定可能な符号とすればよい。
【０２１７】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力した符号化パラメータLまたはGolombパラメータsが入力される。整数符号化部４１０は、Golombパラメータsが入力された場合には、Golombパラメータsの値を丸めて整数値にした後に、整数系列x1, x2, …, xNに対して整数値のGolombパラメータsによるGolomb符号化を行って、Golomb符号化により得た符号を整数符号として出力し、符号化パラメータLが入力された場合には、符号化パラメータLを丸めて整数値にした後に、整数値の符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。なお、符号化パラメータLが1と2の間の値である場合には、例えば、丸め後の整数値を2とすればよい。
【０２１８】
［パラメータ復号部４７０］
第七実施形態のパラメータ復号部４７０はパラメータ符号を復号して符号化パラメータLを得るものであったが、第七実施形態の変形例２のパラメータ復号部４７０は、パラメータ符号を復号して符号化パラメータLまたはGolombパラメータsを得て出力する（Ｓ４７０）。
【０２１９】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力した符号化パラメータLまたはGolombパラメータsが入力される。整数復号部４６０は、Golombパラメータsが入力された場合には、符号化装置４００の整数符号化部４１０が行ったのと同じ方法によりGolombパラメータsの値を丸めて整数値とし、整数符号に対して整数値のGolombパラメータsによるGolomb復号を行って整数系列x1, x2, …, xNを得て出力し、符号化パラメータLが入力された場合には、符号化パラメータLを符号化装置４００の整数符号化部４１０が行ったのと同じ方法により丸めて整数値にした後に、整数値の符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。
【０２２０】
＜第六実施形態及び第七実施形態のその他の変形＞
なお、Golombパラメータsと符号化パラメータLとは、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係にあることに基づいて、式(6a), (6b), (8a), (8b)などにより相互に変換可能なものであるので、符号化装置４００の整数符号化部４１０と復号装置４５０の整数復号部４６０で同じパラメータの同じ値を用いるようにできるのであれば、何れのパラメータを符号化・復号の対象とするかと上記の変換とをどのように組み合わせて用いてもよい。また、符号化装置４００の整数符号化部４１０と復号装置４５０の整数復号部４６０で同じパラメータの同じ値を用いるようにできるのであれば、Golombパラメータsと符号化パラメータLのどちらの値を丸め処理の対象としてもよいし、パラメータの符号化前後（すなわち量子化前後）のどちらの値を丸めの処理の対象としてもよいし、符号化における値の量子化と丸めの処理を同時に行うようにしてもよい。要するに、第六実施形態及び第七実施形態及びこれらの変形例１と変形例２で説明したのはあくまでも例であって、Nサンプルによるフレームごとに、符号化装置４００の整数符号化部４１０と復号装置４５０の整数復号部４６０で同じパラメータの同じ値を用いた符号化処理と復号処理を行えるようにすればよい。
【０２２１】
また、上述した通りsが2のべき乗数であるGolomb符号がGolomb-Rice符号であるので、Golombパラメータsに代えてRiceパラメータrを用いたり、Golomb符号化とGolomb復号に代えてGolomb-Rice符号化とGolomb-Rice復号を用いたりするようにしてもよい。なお、Riceパラメータrと符号化パラメータLとは、GolombパラメータsとRiceパラメータrの関係を表す式であるs=2rとGolombパラメータsと符号化パラメータLとの変換式とを組み合わせた式、例えば下記の式(9)および式(10)により相互に変換可能である。すなわち、2rであるｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、Riceパラメータrから符号化パラメータLを得ることも、符号化パラメータLからRiceパラメータrを得ることもできる。
【０２２２】
【数１３】
2020077969.tif 000015
【０２２３】
＜第八実施形態＞
第六実施形態及び第七実施形態では、入力された整数値による系列の部分系列に対して求めたゴロムパラメータs、ライスパラメータr、符号化パラメータLを用いて第三実施形態から第五実施形態の符号化・復号をすることにより、本発明の符号化と復号を実現する形態について説明した。第八実施形態では、ゴロムパラメータs、ライスパラメータr、符号化パラメータLの少なくとも何れかを用いて、本発明の符号化と復号を実現する形態について説明する。
【０２２４】
≪符号化装置≫
図１６及び図１７を参照して、第八実施形態の符号化装置４００が実行する符号化方法の処理手続きを説明する。第八実施形態の符号化装置４００は、図１６に示す通り、パラメータ決定部４２０と整数符号化部４１０を含む。第八実施形態の符号化装置４００が図１７に示す各ステップの処理を実行することにより、第八実施形態の符号化方法が実現される。
【０２２５】
第八実施形態の符号化装置４００には、非負の整数値の系列が入力される。第八実施形態の符号化装置４００に入力された非負の整数値の系列はNサンプルずつパラメータ決定部４２０と整数符号化部４１０に入力される。
【０２２６】
以下では、本実施形態の符号化装置に入力された非負の整数値を単に「整数値」と呼んで説明する。
【０２２７】
［パラメータ決定部４２０］
パラメータ決定部４２０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNが入力される。パラメータ決定部４２０は、入力された整数系列x1, x2, …, xNに基づき、その整数系列に対応するゴロムパラメータs、ライスパラメータr、符号化パラメータLの少なくとも何れかと、そのゴロムパラメータs、ライスパラメータr、符号化パラメータLの少なくとも何れかを表すパラメータ符号と、を得て出力する（Ｓ４２０）。つまり、パラメータ決定部４２０は、入力された非負の整数値による系列に含まれる所定サンプル毎の整数値による系列である整数系列ごとに、整数系列に含まれる整数値に基づいてゴロムパラメータsを求める処理と、整数系列に含まれる整数値に基づいてライスパラメータrを求める処理と、整数系列について指数分布p(xn, 1-2-1/L)に対する尤度、尤度の推定値、対数尤度、対数尤度の推定値のいずれかが最大となる符号化パラメータLを求める処理と、の少なくとも何れかと、ゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかを符号化してパラメータ符号を得る処理と、を行う。
【０２２８】
［整数符号化部４１０］
整数符号化部４１０には、符号化装置４００に入力された整数値の系列のうちの、Nサンプルずつの整数系列x1, x2, …, xNと、パラメータ決定部４２０が出力したゴロムパラメータs、ライスパラメータr、符号化パラメータLの少なくとも何れかが入力される。整数符号化部４１０は、符号化パラメータLが入力された場合には、入力された符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力し、ゴロムパラメータsが入力された場合には、入力されたゴロムパラメータsから得た符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力し、ライスパラメータrが入力された場合には、入力されたライスパラメータrから得た符号化パラメータLを用いて第三から第五実施形態の整数符号化部１１０の何れかの処理と同じ処理により整数符号を得て出力する（Ｓ４１０）。つまり、整数符号化部４１０は、所定サンプル毎の整数値による系列である整数系列ごとに、パラメータ決定部４２０が得た符号化パラメータL、または、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、パラメータ決定部４２０が得たゴロムパラメータsから得た符号化パラメータL、または、2rであるｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、パラメータ決定部４２０が得たライスパラメータrから得た符号化パラメータL、を符号化パラメータLとして用いて符号Ａや符号Ｂの符号を得る。なお、整数系列に対応する符号化パラメータLが１以下である場合、または、整数系列に対応するゴロムパラメータsが１以上である場合、または、整数系列に対応するライスパラメータrが非負である場合には、整数系列をゴロム符号化またはゴロムライス符号化して符号列を得て整数符号として出力するようにしてもよい。
【０２２９】
≪復号装置≫
図１８及び図１９を参照して、第八実施形態の復号装置４５０が実行する復号方法の処理手続きを説明する。第八実施形態の復号装置４５０は、図１８に示す通り、パラメータ復号部４７０と整数復号部４６０を含む。第八実施形態の復号装置４５０が図１９に示す各ステップの処理を実行することにより、第八実施形態の復号方法が実現される。
【０２３０】
第八実施形態の復号装置４５０には、第八実施形態の符号化装置４００が出力した整数符号、及びパラメータ符号が入力される。復号装置４５０に入力された整数符号及びパラメータ符号は、整数値の系列のNサンプルに対応する符号ごとにパラメータ復号部４７０と整数復号部４６０に入力される。つまり、パラメータ復号部４７０と整数復号部４６０には、所定単位ごとのパラメータ符号と符号列とが入力される。
【０２３１】
［パラメータ復号部４７０］
パラメータ復号部４７０は、パラメータ決定部４２０がパラメータ符号を得たのと対応する復号処理により、パラメータ符号を復号してゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかを得て出力する（Ｓ４７０）。つまり、パラメータ復号部４７０は、所定単位ごとに、パラメータ符号を復号してゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかを得る。
【０２３２】
［整数復号部４６０］
整数復号部４６０には、復号装置４５０に入力された整数符号と、パラメータ復号部４７０が出力したゴロムパラメータsとライスパラメータrと符号化パラメータLの少なくとも何れかが入力される。整数復号部４６０は、符号化パラメータLが入力された場合には、入力された符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力し、ゴロムパラメータsが入力された場合には、入力されたゴロムパラメータsから得た符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力し、ライスパラメータrが入力された場合には、入力されたライスパラメータrから得た符号化パラメータLを用いて第三から第五実施形態の整数復号部１６０の何れかの処理と同じ処理により整数系列x1, x2, …, xNを得て出力する（Ｓ４６０）。つまり、整数復号部４６０は、所定単位ごとに、パラメータ復号部４７０が得た符号化パラメータL、または、ｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、パラメータ復号部４７０が得たゴロムパラメータsから得た符号化パラメータL、または、2rであるｓで表現される指数分布p(x,2-1/s)とLで表現される指数分布p(x,1-2-1/L)とが同一または近似の関係となるように、パラメータ復号部４７０が得たライスパラメータrから得た符号化パラメータL、を符号化パラメータLとして用いて整数値0のL個の連続や、0個からL-1個連続する整数値0と、1個の0以外の整数値xnと、による組からなる、整数値による系列を得る。なお、符号化パラメータLが１以下である場合、または、ゴロムパラメータsが１以上である場合、または、ライスパラメータrが非負である場合には、符号列をゴロム復号またはゴロムライス復号して整数値による系列を得て出力するようにしてもよい。
【０２３３】
本実施形態の発明によれば、整数値の系列やその部分系列に最適な符号化パラメータLを用いることで、少ない平均ビット数で符号化することができる。また、そのような符号を復号することができる。
【０２３４】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【０２３５】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【０２３６】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【０２３７】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【０２３８】
例えば、上述の実施形態では、符号化装置に入力される非負の整数値の系列が、音や画像や映像信号をディジタル信号に変換して得た信号を量子化して有限精度の値にして得た整数値の絶対値による系列である例を説明したが、符号化装置に入力される非負の整数値の系列は、上記以外の信号、例えば心電図や心磁図、脳波、表面筋電図、皮膚電位などの生体信号に基づく時系列信号を量子化して有限精度の値にして得た整数値の絶対値による系列であってもよい。
【０２３９】
または、符号化装置に入力される非負の整数値の系列は、時系列信号ではない、例えばコンピュータ断層撮影、核磁気共鳴画像法、超音波断層画像、血管造影などから得られる医療用画像に基づくの信号を量子化して有限精度の値にして得た整数値の絶対値による系列であってもよい。さらには、符号化装置に入力される非負の整数値の系列は、例えば遺伝子情報系列の各遺伝子に関する測定誤差を表すクオリティースコアのような、信号ではない数値の系列を量子化して有限精度の値にして得た整数値の絶対値による系列であってもよい。
【０２４０】
また、符号化装置に入力される非負の整数値の系列は、例えば音や画像や映像信号をディジタル信号に変換して得た信号をコサイン変換等で周波数スペクトルに変換した後に量子化して有限精度の値にして得た整数値の絶対値による系列であってもよいし、例えば上述の信号や信号ではない数値の系列にハイパスフィルタやローパスフィルタなどのフィルタ処理を行った系列を量子化して有限精度の値にして得た整数値の絶対値による系列であってもよい。
【０２４１】
本発明の符号化装置には、これらの入力に対応するために、符号化装置に入力された信号や数値の系列を非負の整数値の系列に変換する処理部として、図２や図１６の符号化装置の前段に図示しない変換部を備えるようにしてもよい。同様に、本発明の復号装置には、上述した入力に対応する出力を得るために、整数復号部が得た非負の整数値の系列を信号や数値の系列に変換する処理部として、図７や図１８の整数復号部の後段に図示しない逆変換部を備えるようにしてもよい。
【０２４２】
また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０２４３】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０２４４】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０２４５】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０２４６】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０２４７】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【０２４８】
上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。
【図１】
2020077969.tif 000016
【図２】
2020077969.tif 000017
【図３】
2020077969.tif 000018
【図４】
2020077969.tif 000019
【図５】
2020077969.tif 000020
【図６】
2020077969.tif 000021
【図７】
2020077969.tif 000022
【図８】
2020077969.tif 000023
【図９】
2020077969.tif 000024
【図１０】
2020077969.tif 000025
【図１１】
2020077969.tif 000026
【図１２】
2020077969.tif 000027
【図１３】
2020077969.tif 000028
【図１４】
2020077969.tif 000029
【図１５】
2020077969.tif 000030
【図１６】
2020077969.tif 000031
【図１７】
2020077969.tif 000032
【図１８】
2020077969.tif 000033
【図１９】
2020077969.tif 000034