以下、本発明に係る実施の形態を図面を参照して説明する。
(実施の形態1)
図1は、本発明の動画像符号化方法が適用される符号化装置の機能構成を示すブロック図である。なお、この実施の形態1では、本発明の動画像符号化方法で入力画像をフレーム内符号化処理する場合の機能構成が図示されている。
同図に示されるように、符号化装置100aは、ブロック変換部110と、周波数変換部120と、量子化部130と、可変長符号化部140とから構成される。なお、このような符号化装置100aを構成する各部は、CPU、CPUによって実行されるプログラムやデータを予め格納するROM、プログラム実行の際にワークエリアを提供したり、入力画像等を一時的に格納するメモリ等により実現される。
ブロック変換部110は、入力画像を水平4画素、垂直4画素の大きさを有するブロックに分割し、各画素ブロックごとに周波数変換部120に出力する。
周波数変換部120は、入力された画素ブロックに対して周波数変換を施し、周波数係数に変換する。そして、周波数変換部120は、変換された周波数係数を量子化部130に出力する。
量子化部130は、入力された周波数係数に対して量子化処理を行う。ここで量子化処理とは、周波数係数値を所定の量子化値によって除算する処理に相当する処理を意味する。この量子化値は、一般的にブロックごと、周波数帯域ごとによって異なる。量子化された周波数係数は可変長符号化部140に入力される。
可変長符号化部140は、所定サイズのブロック(水平4画素、垂直4画素)の周波数係数値を可変長符号化する。
図2は、可変長符号化部140の詳細な機能構成を示すブロック図である。
図2に示すように可変長符号化部140は、RL列生成部141、並べ替え部142、コード割り当て部143、テーブル記憶部144とから構成される。
量子化部130から出力された量子化された周波数係数は、RL列生成部141に入力される。
RL列生成部141は、まず量子化された周波数係数値を所定の走査方法で一次元化する。そして、RL列生成部141は、一次元化された係数値に対して、連続する係数値「0」の個数Rとそれに続く「0」以外の係数値Lとの組み合わせ(以下、RL値と呼ぶ)の列(以下、RL列と呼ぶ)を生成する。その例を図3、図4を用いて説明する。
図3(a)は、量子化部130から出力された量子化された1ブロック内の周波数係数を示す図である。ここで、左上の係数が直流成分を示すとし、右に向かうほど水平方向の周波数成分が高くなり、下に向かうほど垂直方向の周波数成分が高くなる。図3(b)は、量子化された周波数係数値を一次元化する際の走査方法を示す図である。RL列生成部141は、低周波数領域から高周波数領域に向かって走査することにより、一次元化を行う。
そして、RL列生成部141によって一次元化された係数値に対して、RL列を生成した結果が図4(a)に示されるようになる。ここで図4(a)の中で、EOB(End Of Block)とはブロック中のそれ以降の係数値がすべて「0」であることを示す識別子である。一般的に高周波数成分ほど係数値が「0」になりやすいので、低周波数領域から高周波数領域に向かって走査することにより、RL列の情報量を小さくすることができる。生成されたRL列は並べ替え部142に入力される。
並べ替え部142は、入力されたRL列を逆方向に並べ直す。ただし、EOBは並べ替えの対象からは除外する。並べ替えた後の状態は図4(b)に示されるようになる。このように並べ替えられたRL列は、コード割り当て部143に入力される。
テーブル記憶部144は、RL値とこのRL値に対して割り当てられるコード番号とを対応付けたテーブル(コードテーブル、図5参照)と、コード番号と可変長符号とを対応付けた複数種類のテーブル(可変長符号テーブル、図6)等とを予め保持する。
コード割り当て部143は、テーブル記憶部144に保持されているテーブルを用いてRL列の各組に対して可変長符号を割り当てる。
具体的には、コード割り当て部143は、まず、RL値に対してコード番号を割り当てる。この際には、テーブル記憶部144に保持されている予め定められたコードテーブル(図5参照)を用いてコード番号への変換を行う。
図5は、コードテーブルの一例を示す図である。
このコードテーブルは、一般にRL値の頻度が大きいほど小さなコード番号が割り当てられるが、一般にはR、L共に小さい値ほど頻度が高くなるので、この性質を利用して構成される。このコードテーブルを用いた場合、例えば最初のRL値(0、−1)はコード番号「2」となる。また2番目〜5番目のRL値(1、1)、(0、−2)、(0、3)、(0、4)は、それぞれコード番号「3」、「8」、「13」、「15」となる。
そして、コード割り当て部143は、続いてコード番号を可変長符号に変換する。この可変長符号への変換の際には、テーブル記憶部144に保持されている複数の可変長符号テーブル(図6参照)を用いて可変長符号への変換を行う。
図6は、可変長符号テーブルの一例を示す図である。
この実施の形態1においては、可変長符号テーブルは2種類保持されて構成される。
第1の可変長符号テーブル1および第2の可変長符号テーブル2はコード番号が大きくなるにつれて可変長符号長が長くなるように構成される一方、可変長符号テーブル1は、可変長符号テーブル2と比較して、コード番号が小さいときに可変長符号長が短くなるように構成され、可変長符号テーブル2は、可変長符号テーブル1と比較して、コード番号が大きいときに可変長符号長が短くなるように構成される。すなわち、小さなコード番号では可変長符号テーブル1の方が短い符号が割り当てられ、大きなコード番号では可変長符号テーブル2の方が短い符号が割り当てられる構成となっている。
1番目のRL値に対しては、可変長符号テーブル1が用いられる。そして、この場合は、1番目のRL値のコード番号は「2」であるので、この際の可変長符号は「011」となる。そして順に可変長符号への変換を行っていき、Lの絶対値がしきい値を超えると、次のRL値以降では可変長符号テーブル2を用いる。ここでLの絶対値に対するしきい値を「2」とすると、4番目のRL値(0、3)でしきい値を超えることになる。したがって、1〜4番目のRL値に対しては、可変長符号テーブル1を用いて変換を行い、5番目以降のRL値に対しては、可変長符号テーブル2を用いて変換を行うことになる。
ここで、7番目のRL値(1、2)でLの絶対値が再びしきい値以下となるが、可変長符号テーブルVLC1への切り替えは行わず、可変長符号テーブル2を用いて変換する。つまり、テーブルの切り替え方向が、一方向である。ここで、一方向とは、一旦使い終えたテーブルを再使用しないことをいう。これによって、係数値によって、テーブルが頻繁に入れ替わることが防止され、テーブルの切り替え回数が減る。高周波数成分から低周波数成分に向けて一次元化した場合、一般的にLの絶対値は増加傾向にある。
したがって、Lの絶対値が一度しきい値を超えた場合、その後のLの絶対値が再度そのしきい値を下回ったとしても、しきい値を下回るのはその係数のみである場合が多い。よって、Lの絶対値が再度しきい値を下回ったとしても、再び元の可変長符号テーブルは用いないようにすることにより、符号化効率を向上させることができる。例えば、メモリのワークエリアが限られるので次に使用するテーブルだけをワークエリアに置くのが一般的である。この場合には、テーブルを切り替えるごとにROMから次のテーブルを読み出してワークエリアに展開するのに時間がかかるので、次の係数値の符号化まで時間がかかる。このため、一方向とすることによって、テーブルの切り替え回数を制限し、次の係数値の符号化までの時間をトータルとして短縮できるという効果が発揮される。
また、RL列生成部141では係数値列の係数値を低周波数成分から高周波数成分に向かう順序で走査し、コード割り当て部143では、係数値列の後ろから順番に可変長符号に符号化するようにしているのは、係数の絶対値が「1」付近から段々大きくなる傾向が強いので、ブロック内の最初の係数値を符号化するのに用いるテーブルを決定しやすくしたり、各テーブルの構成を簡単に決めることができたり、しきい値を決定しやすくしたりすることができるからである。
以上のように、本実施の形態1の可変長符号化方法は、ブロック内の周波数係数値を低周波数域から高周波数域に向けて走査し一次元化する。そして、一次元化された係数値に対して、連続する係数値「0」の個数Rとそれに続く「0」以外の係数値Lとの組み合わせであるRL値の列を生成する。そして、RL値を走査順とは逆順に可変長符号に変換していく。つまり、RL値を直接可変長符号に変換してもよい。可変長符号に変換する際には、可変長符号テーブルを複数用意する。
そして、まず、第1の可変長符号テーブルを用いて変換を行い、Lの絶対値がしきい値を超えると、以降のRL値に対しては第2の可変長符号テーブルを用いて変換を行う。この際には、第1の可変長符号テーブルは、第2の可変長符号テーブルと比較して、コード番号が小さいときに可変長符号長が短くなる構成とし、第2の可変長符号テーブルは、第1の可変長符号テーブルと比較して、コード番号が大きいときに可変長符号長が短くなる構成とする。
一般に低周波数成分ほどLの絶対値は大きくなるため、低周波数域から高周波数域に走査してRL値を生成したのとは逆順にRL値を可変長符号に変換していくと、Lの絶対値は大きくなっていく。
したがって、Lの絶対値がしきい値を超えた後に、コード番号が大きいとき、すなわちLの絶対値が大きいときに可変長符号長が短くなる可変長符号テーブルを用いることにより、合計の符号量を小さくすることができる。つまり、LをRと別個に、かつ複数の可変長符号テーブルを用いて符号化することによっても、Lについての合計の符号量を小さくすることができる。
なお、本実施の形態1では、フレーム内符号化により画像を符号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてフレーム間符号化をする場合であっても良く、本実施の形態の方法により、同様の効果が得られる。
また、本実施の形態1では、入力画像を水平4画素、垂直4画素のブロックに分割する場合について説明したが、ブロックの大きさは他の大きさであっても良い。
また、本実施の形態1では、ブロック内の走査方法として図3(b)を用いて説明したが、これは低周波数域から高周波数域への走査であれば他の走査順序であっても良い。
また、本実施の形態1では、コードテーブルの例として図5を用いて説明したが、これは他のコードテーブルであっても良い。
また、本実施の形態1では、可変長符号テーブルの例として図6を用いて説明したが、これは他のテーブルであっても良い。
また、可変長符号テーブルを2つ用いる場合について説明したが、これは可変長符号テーブルを3つ以上用い、複数のしきい値を用いて、各しきい値を超える度に可変長符号テーブルを切り替えるようにしても良い。
また、本実施の形態では、Lの絶対値がしきい値を超えた場合に、可変長符号テーブルを切り替える場合について説明したが、これはコード番号がしきい値を超えた場合に、可変長符号テーブルを切り替えても、同様の効果が得られる。
また、本実施の形態では、RL列の最後にEOBを付加する場合について説明したが、これはRL列の最初にRL値の個数を付加しても良い。この場合の図4に対応する、符号化すべきRL値の個数、およびRL列は、図7(a)、図7(b)のようになる。また、図5に示すコードテーブルにおいて、EOBへのコード番号の割り当ては不要となる。
(実施の形態2)
図8は、本発明の実施の形態に係る可変長復号化方法が適用される復号化装置の機能構成を示すブロック図である。なお、ここでは、実施の形態1で説明した本発明の可変長符号化方法により生成された符号列が入力されるとする。
図8に示されるように、復号化装置500aは、可変長復号化部510と、逆量子化部520と、逆周波数変換部530と、フレームメモリ540とから構成される。なお、このような復号化装置500aを構成する各部は、符号化装置100aと同様にCPU、CPUによって実行されるプログラムやデータを予め格納するROM、プログラム実行の際にワークエリアを提供したり、入力符号化列等を一時的に格納するメモリ等により実現される。
符号列は可変長復号化部510に入力される。可変長復号化部510は、可変長符号化された符号列を復号化する。この符号列は、上記したように、画像データを所定の大きさを有するブロック単位で分割し、前記ブロックの周波数係数値を、所定の走査順序で一次元化し、連続する係数値が0である係数の連続数Rと、それに続く係数値Lとの組み合わせ(RL値)の列を符号化することにより生成されている。
図9は、可変長復号化部510の詳細な機能構成を示すブロック図である。
図9に示すように可変長復号化部510は、コード変換部511と、テーブル記憶部512と、並べ替え部513と、係数生成部514とから構成される。
テーブル記憶部512は、テーブル記憶部144の場合と同様に構成され、コード番号と可変長符号とを対応付けた複数種類のテーブル(可変長符号テーブル、図6)と、テーブル記憶部144の場合と同様に構成され、RL値とこのRL値に対して割り当てられるコード番号とを対応付けたテーブル(コードテーブル、図5参照)等とを予め保持する。
コード変換部511は、テーブル記憶部512に保持されているテーブル(複数の可変長符号テーブル)を用いて、まず入力された符号列に対して、可変長符号からコード番号への変換を行う。コード番号への変換は、複数の可変長符号テーブルを用いて行う。この可変長符号テーブルはテーブル記憶部512に保持されており、テーブル記憶部512を参照することによりコード番号への変換を行う。
可変長符号テーブルの一例を図6を用いて説明する。可変長符号テーブルは2種類保持されている。小さなコード番号では可変長符号テーブル1の方が短い符号が割り当てられ、大きなコード番号では可変長符号テーブルVLCの方が短い符号が割り当てられる構成となっている。ここでは、入力符号列の先頭部の符号が「01100100000100100011100010011」であるとする。1番目の可変長符号に対しては、可変長符号テーブル1が用いられる。今、図6の可変長テーブル1を参照した場合、入力符号列に一致するのは、可変長符号「011」であり、この場合のコード番号は「2」となる。
次にコード変換部511では、得られたコード番号をRL値に変換する。この際には、予め定められたコードテーブルを用いて行う。コードテーブルはテーブル記憶部512に保持されており、テーブル記憶部512を参照することによりRL値への変換を行う。コードテーブルの一例を図5に示す。この場合のコード番号は「2」であるので、RL値は(0、−1)となる。
同様にして、可変長符号からコード番号への変換を順に行っていくと、可変長符号テーブル1を用いて、可変長符号「00100」がコード番号「3」に、可変長符号「0001001」がコード番号「8」に、可変長符号「0001110」がコード番号「13」に変換され、さらにそれぞれのコード番号はRL値(1、1)、(0、−2)、(0、3)に変換される。
ここで、コード変換部511は、得られたRL値のうち、Lの絶対値がしきい値を超えると、以降の可変長符号の変換では、可変長符号テーブル2を用いる。ここでLの絶対値に対するしきい値を「2」とすると、4番目のRL値(0、3)でしきい値を超えることになる。したがって、これ以降のRL値に対しては、可変長符号テーブル2を用いて変換を行うことになる。よって、次の可変長符号「0010011」は、コード番号15に変換され、さらにRL値(0、4)に変換される。
また、以降の復号化において得られたRL値のうち、Lの絶対値が再びしきい値以下となっても、可変長符号テーブル1への切り替えは行わず、可変長符号テーブル2を用いて変換を行う。以上のようにして、1ブロック分のRL値が生成されると(EOBが検出されると)、それらは並べ替え部513に入力される。ここでは、図10(a)のRL列が生成されたとする。
並べ替え部513は、入力されたRL列を逆方向に並べ直す。ただし、EOBは並べ替えの対象からは除外する。並べ替えた後の状態は図10(b)となる。このように並べ替えられたRL列は係数生成部514に入力される。
係数生成部514は、入力されたRL列を係数値に変換し、所定の走査方法で係数ブロックに二次元化する。この係数値への変換の際には、所定の走査順序に基づいて、Rで示された値だけ係数値「0」を生成し、その次にLで示された値の係数値を生成する、を繰り返すことにより、RL列から係数値への変換を行う。ここでは、低周波数領域から高周波数領域に向かってジグザグに走査するとすると、図10(b)のRL列は図11に示される係数ブロックに変換されることになる。生成された係数ブロックは逆量子化部520に入力される。
逆量子化部520は、入力された係数ブロックに対して、逆量子化処理を行う。ここで逆量子化処理とは、係数値に所定の量子化値を積算する処理に相当する処理を意味する。ここで量子化値は、一般的にブロックごと、周波数帯域ごとによって異なっており、符号列中から得られる、または所定の値を用いるものとする。逆量子化された係数ブロックは逆周波数変換部530に入力される。逆周波数変換部530は、逆量子化された係数ブロックに対して、逆周波数変換を施し、画素ブロックに変換する。変換された画素ブロックはフレームメモリ540に入力される。
フレームメモリ540には、復号化された画素ブロックが順に蓄積され、1画面分の画素ブロックが蓄積されると、出力画像として出力される。
以上のように、本発明の可変長復号化方法は、入力符号列をまず第1の可変長テーブルを用いて復号化し、連続する係数値0の個数Rとそれに続く0以外の係数値Lとの組み合わせであるRL値の列を生成する。そして、Lの絶対値がしきい値を超えると、それ以降の可変長符号の復号化には、第2の可変長テーブルを用いる。そして、RL値を逆順に並べ替えた後、ブロック内の所定の走査順に基づいて、RL値を係数値に変換する。
以上の動作により、本発明の可変長復号化方法を用いることにより、本発明の可変長符号化方法を用いて符号化された符号列を正しく復号化することが可能となる。
なお、本実施の形態2では、フレーム内符号化により生成された符号列を復号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてフレーム間符号化をして生成された符号列を復号化する場合であっても良く、本実施の形態の方法により、同様の効果が得られる。
また、本実施の形態2では、入力画像が水平4画素、垂直4画素のブロックに分割されて符号化されている場合について説明したが、ブロックの大きさは他の大きさであっても良い。
また、本実施の形態2では、ブロック内の走査方法として図11を用いて説明したが、これは符号化の際に用いた走査方法と同じであれば、他の走査順序であっても良い。
また、本実施の形態2では、コードテーブルの例として図5を用いて説明したが、これは符号化の際に用いたコードテーブルと同じであれば、他のコードテーブルであっても良い。
また、本実施の形態2では、可変長符号テーブルの例として図6を用いて説明したが、これは符号化の際に用いた可変長符号テーブルと同じであれば、他のテーブルであっても良い。また、可変長符号テーブルを2つ用いる場合について説明したが、これは可変長符号テーブルを3つ以上用い、複数のしきい値を用いて、各しきい値を超える度に可変長符号テーブルを切り替えるようにしても良い。ただし、この際の可変長テーブルの構成およびしきい値は、符号化の際に用いたものと同じでなければならない。
また、本実施の形態2では、Lの絶対値がしきい値を超えた場合に、可変長符号テーブルを切り替える場合について説明したが、これはコード番号がしきい値を超えた場合に、可変長符号テーブルを切り替えても同様の効果が得られる。
また、本実施の形態2では、RL列の最後にEOBを付加されて符号化されている符号列を復号化する場合について説明したが、これはRL列の最初にRL値の個数を付加されて符号化されている符号列を復号化しても良い。この場合の図10に対応する、復号化により得られるRL値の個数、およびRL列は、図12(a)、図12(b)のようになる。またこの際、図5に示すコードテーブルにおいて、EOBへのコード番号の割り当ては不要となる。
以上のように本発明の可変長符号化方法では、ブロック内の周波数係数値を低周波数域から高周波数域に向けて走査し一次元化する。そして、一次元化された係数値に対して、連続する係数値0の個数Rとそれに続く0以外の係数値Lとの組み合わせであるRL値の列を生成する。そして、RL値を走査順とは逆順に可変長符号に変換していく。可変長符号に変換する際には、可変長符号テーブルを複数用意する。
そして、まず、第1の可変長符号テーブルを用いて変換を行い、Lの絶対値またはコード番号がしきい値を超えると、以降のRL値に対しては第2の可変長符号テーブルを用いて変換を行う。この際には、第1の可変長符号テーブルは、第2の可変長符号テーブルと比較して、コード番号が小さいときに可変長符号長が短くなる構成とし、第2の可変長符号テーブルは、第1の可変長符号テーブルと比較して、コード番号が大きいときに可変長符号長が短くなる構成とする。
一般に低周波数成分ほどLの絶対値やコード番号は大きくなるため、低周波数域から高周波数域に走査してRL値を生成したのとは逆順にRL値を可変長符号に変換していくと、Lの絶対値は大きくなっていく。したがって、Lの絶対値がしきい値を超えた後に、コード番号が大きいときに可変長符号長が短くなる可変長符号テーブルを用いることにより、合計の符号量を小さくすることができる。
また、本発明の可変長復号化方法は、入力符号列をまず第1の可変長テーブルを用いて復号化し、連続する係数値0の個数Rとそれに続く0以外の係数値Lとの組み合わせであるRL値の列を生成する。そして、Lの絶対値またはコード番号がしきい値を超えると、それ以降の可変長符号の復号化には、第2の可変長テーブルを用いる。そして、RL値を逆順に並べ替えた後、ブロック内の所定の走査順に基づいて、RL値を係数値に変換する。
以上の動作により、本発明の可変長復号化方法を用いることにより、本発明の可変長符号化方法を用いて符号化された符号列を正しく復号化することが可能となる。
(実施の形態3)
以下、本発明の第3の実施の形態における画像符号化装置について図面を参照しながら説明する。
図13は、本発明の第3の実施の形態における画像符号化装置100bの構成を示すブロック図である。
この画像符号化装置100bは、入力画像(画像データ)に対して符号化効率を向上してピクチャ内符号化処理を行うものであって、ブロック変換部101、周波数変換部102、量子化部103、および可変長符号化部150を備えている。
ブロック変換部101は、入力画像を水平4×垂直4画素の大きさの画素ブロックに分割して周波数変換部102に出力する。
周波数変換部102は、分割された上記各画素ブロックに対して、周波数変換を施して周波数係数を生成する。そして周波数変換部102は、生成された周波数係数を量子化部103に出力する。
量子化部103は、周波数変換部102から出力された周波数係数に対して、量子化処理を行う。ここで量子化処理とは、周波数係数を所定の量子化値によって除算することに相当する処理を意味する。また量子化値は、一般的に画素ブロックごと、周波数帯域ごとによって異なる。そして量子化部103は、量子化された周波数係数を可変長符号化部150に出力する。
可変長符号化部150は、量子化部103で量子化された周波数係数を可変長符号化する。
図14は、可変長符号化部150の内部構成を示すブロック図である。
この図14に示すように、可変長符号化部150は、RL列生成部201、並べ替え部202、2値化部203、テーブル記憶部204、および算術符号化部205を備えている。
RL列生成部201は、量子化部103から出力された量子化された周波数係数(以下、「係数」と略す)を所定の走査方法で一次元化する。そして、RL列生成部201は、一次元化された係数に対して、連続する係数の値「0」の個数Rとそれに続く「0」以外の係数の値Lとの組み合わせ(以下、「RL値」と称す)の列(以下、「RL列」と称す)を生成する。その例を図15、図16を用いて説明する。
図15の(a)は、量子化部103から出力される複数の係数により構成される係数ブロックを示す。ここで、係数ブロック内の左上の周波数係数が直流成分を示し、右に向かうほど水平方向の周波数成分が高くなり、下に向かうほど垂直方向の周波数成分が高くなる。
図15の(b)は、係数ブロック内の複数の係数を一次元化する際の走査方法を説明するための説明図である。RL列生成部201は、図15の(b)の矢印で示すように、係数ブロック内を低周波数領域から高周波数領域に向かって走査することにより、係数の一次元化を行う。
図16の(a)は、RL列生成部201から出力されるRL列を示す。
この図16の(a)の中で、最初の数字は係数の個数を示す。一般的に高周波数領域ほど係数の値が「0」になり易いので、低周波数領域から高周波数領域に向かって走査することにより、RL列の情報量(のうちの個数Rの情報量)を小さくすることができる。生成されたRL列は並べ替え部202に入力される。
並べ替え部202は、入力されたRL列を逆方向に並べ直す。ただし、係数の個数は並べ替えの対象からは除外する。
図16の(b)は、並び替え部202で並び替えられたRL列を示す。このように並び替えることで、上述のように情報量を小さくしながらも、結果的に、係数ブロック内を高周波数領域から低周波数領域に向かって走査して係数の一次元化が行われたことになる。そして、このように並べ替えられたRL列は2値化部203に出力される。
2値化部203は、係数の個数および各RL値に対して、2値化、すなわち「0」や「1」からなる2値化データへの変換を行う。ここで、個数Rと係数値Lとはそれぞれ別に2値化される。
図16の(c)は、並び替え部202で並び替えられたRL列の係数値Lのみを示す。これらの係数値Lに対しては、その絶対値と正負符号とが別に処理される。また2値化部203は、例えば図21に示すような予め定められた2値化テーブルを用いて、個数Rと係数値Lの絶対値に対して2値化を行う。そして2値化部203は、これらに対して2値化を施された2値化データを算術符号化部205に対して出力する。
算術符号化部205は、2値化データとして表される個数R値および係数値Lの絶対値に対して2値算術符号化を行うとともに、係数値Lの正負符号に対しても符号化を行う。ここでは、係数値Lの絶対値の算術符号化について説明する。算術符号化部205は、2値化データとして表される係数値Lの絶対値に算術符号化を施す場合には、複数の確率テーブルを切り替えて用いる。これら複数の確率テーブルはテーブル記憶部204に記憶されている。
図17は、確率テーブルの切り替え方法を示す遷移図である。
この図17に示すように、算術符号化部205は確率テーブルを4つ用い、先頭の係数値Lの絶対値に対しては、確率テーブル1を用いてこれを算術符号化する。そして、それ以降の係数値Lの絶対値に対しては、算術符号化部205は、直前の係数値Lの絶対値を符号化する際に用いられた確率テーブルのテーブル番号と、その絶対値とに応じて、使用される確率テーブルを切り替える。ここで、4つの確率テーブルは、確率テーブル1、確率テーブル2、確率テーブル3、確率テーブル4であり、確率テーブル1のテーブル番号は「1」、確率テーブル2のテーブル番号は「2」、確率テーブル3のテーブル番号は「3」、確率テーブル4のテーブル番号は「4」である。
具体的に、直前の係数値Lの絶対値が確率テーブル1を用いて符号化され、且つその絶対値が「1」の場合、または、直前の係数値Lの絶対値が確率テーブル2を用いて符号化され、且つその絶対値が「1」の場合には、確率テーブル2が用いられる。直前の係数値Lの絶対値が確率テーブル1を用いて符号化され、且つその絶対値が「2」の場合、または、直前の係数値Lの絶対値が確率テーブル2を用いて符号化され、かつその絶対値が「2」の場合、または、直前の係数値Lの絶対値が確率テーブル3を用いて符号化され、且つその絶対値が「2以下」の場合には、確率テーブル3が用いられる。直前の係数値Lの絶対値が「3以上」の場合、または、直前の係数値Lの絶対値が確率テーブル4を用いて符号化されている場合には、確率テーブル4が用いられる。
このように確率テーブルの切り替えは、テーブル番号が小さい確率テーブルからテーブル番号が大きい確率テーブルへの一方向であり、直前の係数値Lの絶対値が所定のしきい値以下となっても、逆方向への切り替えは行われない。これが従来例とは異なる点である。
図18は、上記4つの確率テーブル1〜4の内容を示す確率テーブル内容表示図である。
確率テーブル1〜4のそれぞれは、図18に示すように、「0」の発生する確率と、「1」の発生する確率とから構成される。
例えば確率テーブル1は、「0」の発生する確率「0.1」と、「1」の発生する確率「0.9」とから構成され、確率テーブル2は、「0」の発生する確率「0.2」と、「1」の発生する確率「0.8」とから構成されている。
つまり、係数値Lの絶対値が「2」であれば、この「2」が2値化されたものが「01」であるため、算術符号化部205は、これを確率テーブル1を用いて算術符号化するときには、上記「01」の「0」に対応する確率「0.1」と、上記「01」の「1」に対応する確率「0.9」とを用いて、この「01」を算術符号化する。
ここで、「0」が発生する確率と「1」の発生する確率との合計は1.0であるので、両者の確率を保持しておく必要はなく、一方の確率のみを保持しても良い。
図16の(c)に示す係数値Lの絶対値(2値化されたもの)が符号化される場合における、確率テーブルの切り替え例を以下に説明する。
算術符号化部205は、最初の係数値L(−2)の絶対値に対しては、確率テーブル1を用いる。ここで係数値Lの絶対値が2であるので、算術符号化部205は、使用される確率テーブルを確率テーブル1から確率テーブル3に遷移させる。これにより算術符号化部205は、2番目の係数値L(3)の絶対値を確率テーブル3を用いて算術符号化する。
ここでの係数値Lの絶対値は「3」であるので、算術符号化部205は、使用される確率テーブルを確率テーブル3から確率テーブル4に遷移させる。これにより算術符号化部205は、3番目の係数値(6)の絶対値を確率テーブル4を用いて算術符号化する。ここで使用される確率テーブルが確率テーブル4に遷移されたので、算術符号化部205は、以降の係数値Lの絶対値をすべて確率テーブル4を用いて算術符号化する。例えば、5番目の係数値Lの絶対値は「2」となるが、従来例とは異なり、算術符号化部205は、6番目以降の係数値Lの絶対値を算術符号化するときには、確率テーブルを遷移させずに確率テーブル4を用いる。
また、各確率テーブルは、入力が「0」であるか「1」であるかによって随時更新されるため、入力に適応した確率テーブルに更新されていく。
以上のように、本発明に係る画像符号化装置100bの可変長符号化部150における可変長符号化方法は、係数ブロック内の係数を低周波数領域から高周波数領域に向けて走査して一次元化する。そして、一次元化された係数に対して、連続する係数値「0」の個数Rとそれに続く「0」以外の係数値Lとの組み合わせであるRL値の列(RL列)を生成する。
そして、RL値を走査順とは逆順に可変長符号に変換していく。可変長符号に変換する際には、個数R、係数値Lの絶対値、係数値Lの正負符号を個別に変換する。これらの変換の際には、まず2値化を行い、その後、算術符号を施す。係数値Lの絶対値に対して算術符号を施す際には、複数の確率テーブルを切り替える。確率テーブルを切り替える際には、現在の確率テーブルのテーブル番号および係数値Lの絶対値によって、次の係数値Lの絶対値を符号化する際の確率テーブルを決定する。そして、確率テーブルの遷移は一方向のみとし、係数値Lの絶対値が一度所定の値を超えると、それ以降はすべて同じ確率テーブルで算術符号化を行う。
一般に低周波数領域ほど係数値Lの絶対値は大きいため、高周波数領域から低周波数領域の順に走査すると、係数値Lの絶対値は順に大きくなっていくことが多い。したがって、係数値Lの絶対値が一度所定の値を超えると、それ以降は係数値Lの絶対値が所定値よりも小さくなったとしても、小さくなるのはその係数値Lの絶対値だけである可能性が非常に高く、同じ確率テーブルを用いて算術符号化することにより、確率テーブルの更新が入力に適応しやすくなり、それにより各確率テーブルのシンボル(2値化データの「0」または「1」)の発生確率に偏りが生じやすくなる(すなわち、「0」または「1」のいずれかの発生確率が1.0に近い値になる)。算術符号化は、確率テーブル内の確率値に偏りが生じるほど、符号化効率が高くなる特徴を有する。よって、本発明の可変長符号化方法を用いることにより、符号化効率の改善を図ることができる。
以上、本発明に係る画像符号化装置について本実施の形態を用いて説明したが、本発明はこれらに限定されるものではない。
例えば、本実施の形態では、ピクチャ内符号化により画像を符号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてピクチャ間符号化をする場合であっても良く、同様の効果が得られる。
また、本実施の形態では、入力画像を水平4×垂直4画素の画素ブロックに分割する場合について説明したが、その画素ブロックの大きさは他の大きさであっても良い。
また、本実施の形態では、係数ブロック内の走査方法として図15の(b)を用いて説明したが、これは低周波数領域から高周波数領域への走査であれば他の走査順序であっても良い。
また、本実施の形態では、RL列生成部201が、量子化された周波数係数を所定の走査方法で一次元化し、一次元化された係数に対して、連続する係数値「0」の個数Rとそれに続く「0」以外の係数値Lとの組み合わせの列(RL列)を生成する場合について説明したが、個数Rの列と係数値Lの列とを個別に生成しても良い。例えば、係数値Lの列を生成する場合、高周波数領域から低周波数領域に向かって走査し、係数値が0以外の係数を選択することにより生成すれば、並べ替え部202を省くことができる。
また、本実施の形態では4つの確率テーブルを用い、図17に示す遷移図に基づいて確率テーブルが遷移する場合について説明したが、確率テーブルの数や、図17における遷移の際の、係数値Lの絶対値に対するしきい値は他の値であっても良い。
また、本実施の形態では、2値化テーブルの例として図21を用いて説明したが、これは他のテーブルであっても良い。
また、本実施の形態では、算術符号化部が2値算術符号を行う場合について説明したが、多値算術符号を行っても良い。この場合、2値化部203を省くことができる。
(実施の形態4)
以下、本発明の第4の実施の形態における画像復号化装置について図面を参照しながら説明する。
図19は、本発明の第4の実施の形態における画像復号化装置500bの構成を示すブロック図である。
この画像復号化装置500bは、画像データがピクチャ内符号化処理された符号列に対し、ピクチャ内復号化処理を行うものであって、可変長復号化部601、逆量子化部602、逆周波数変換部603、およびフレームメモリ604を備えている。ここで入力される上記符号列は、例えば、実施の形態3の画像符号化装置100bの可変長符号化方法により生成されたものであって、まず可変長復号化部601がこれを取得する。
可変長復号化部601は、符号列を取得すると、この符号列に対して可変長復号化することで図15の(a)に示すような複数の係数から構成される係数ブロックを作成する。
逆量子化部602は、可変長復号化部601から上記係数ブロックを取得すると、この係数ブロックに対して逆量子化処理を行う。ここで逆量子化処理とは、係数ブロックの各係数に所定の量子化値を積算することを意味する。ここで量子化値は、一般的に個々の係数ブロックや周波数帯域ごとによって異なっており、符号列中から得られる。そして逆量子化部602は、逆量子化された係数ブロックを逆周波数変換部603に出力する。
逆周波数変換部603は、逆量子化された係数ブロックに対して、逆周波数変換を施し、係数ブロックを画素ブロックに変換する。そして逆周波数変換部603は、変換された画素ブロックをフレームメモリ604に出力する。
フレームメモリ604は、復号化された画素ブロックを順に蓄積し、1画面分の画素ブロックが蓄積されると、これらの画素ブロックを出力画像として出力する。
ここで上述の可変長復号化部601について詳細に説明する。
図140は、可変長復号化部601の内部構成を示すブロック図である。
この図20に示すように可変長復号化部601は、算術復号化部701、多値化部702、テーブル記憶部703、並べ替え部704、および係数生成部705を備えている。
テーブル記憶部703は、例えば図18に示すような4つの確率テーブル1〜4を保持している。
算術復号化部701は、符号列を取得すると、まずこの符号列に対して、算術復号化を行う。ここでは、符号列に含まれる符号化された係数値Lの絶対値(2値化されたもの)に対する2値算術復号化について説明する。
算術復号化部701は、符号化された係数値Lの絶対値に対して算術復号化を行う際には、既に復号化されて多値化された直前の係数値Lの絶対値を多値化部702から取得し、その係数値Lの絶対値に応じてテーブル記憶部703に保持されている確率テーブル1〜4を図17に示すように切り替えて用い、符号化された各係数値Lの絶対値を2値算術復号化してこれらに対応する2値化データを出力する。
多値化部702は、算術符号化部701から出力される2値化データに対して、例えば図21に示すような2値化テーブルを用いることで多値化し、係数値Lの絶対値とする。そして多値化部702は、係数値Lの絶対値を算術復号化部701と並べ替え部704に出力する。
このような算術復号化部701および多値化部702の詳細な動作について説明する。
まず算術復号化部701は、符号化された先頭の係数値Lの絶対値を確率テーブル1を用いて算術復号化する。そして、算術復号化部701は、算術復号化して得られた2値化データを多値化部702に対して出力する。多値化部702は、2値化テーブルを用いることで2値化データから係数値Lの絶対値への変換を行い、その絶対値を算術復号化部701および並べ替え部704に対して出力する。
次に、算術復号化部701は、それ以降の符号化された係数値Lの絶対値に対しては、直前の符号化された係数値Lの絶対値を2値算術復号化する際に用いられた確率テーブルのテーブル番号と、多値化部702から取得された直前の係数値Lの絶対値によって、使用される確率テーブルを切り替える。図17に示すように、直前の符号化された係数値Lの絶対値が確率テーブル1を用いて算術復号化され、かつ多値化部702から取得された直前の係数値Lの絶対値が「1」の場合、または、直前の符号化された係数値Lの絶対値が確率テーブル2を用いて算術復号化され、かつ多値化部702から取得された直前の係数値Lの絶対値が「1」の場合には、確率テーブル2が用いられる。
直前の符号化された係数値Lの絶対値が確率テーブル1を用いて算術復号化され、かつ多値化部702から取得された直前の係数値Lの絶対値が「2」の場合、または、直前の符号化された係数値Lの絶対値が確率テーブル2を用いて算術復号化され、かつ多値化部702から取得された直前の係数値Lの絶対値が「2」の場合、または、直前の符号化された係数値Lの絶対値が確率テーブル3を用いて算術復号化され、かつ多値化部702から取得された直前の係数値Lの絶対値が「2以下」の場合には、確率テーブル3が用いられる。
多値化部702から取得された直前の係数値Lの絶対値が「3以上」の場合、または、直前の符号化された係数値Lの絶対値が確率テーブル4を用いて算術復号化されている場合には、確率テーブル4が用いられる。このように確率テーブル1〜4の切り替えは、テーブル番号が小さい確率テーブルからテーブル番号が大きい確率テーブルへの一方向であり、多値化部702から取得された直前の係数値Lの絶対値が所定のしきい値以下となっても、逆方向への切り替えは行われない。これが従来例とは異なる点である。
図16の(c)に示す係数値Lの絶対値に復号化される場合における、確率テーブルの切り替え例を以下に説明する。
算術復号化部701は、最初の符号化された係数値L(−2)の絶対値に対しては、確率テーブル1を用いて2値化データ「01」に算術復号化する。ここで、算術復号化部701は、その2値化データ「01」に対して多値化された「2」を多値化部702から取得するので、使用される確率テーブルを確率テーブル1から確率テーブル3に遷移させる。これにより算術復号化部701は、2番目の符号化された係数値L(3)の絶対値を、確率テーブル3を用いて2値化データ「001」に算術復号化する。
ここで、算術復号化部701は、その2値化データ「001」に対して多値化された「3」を多値化部702から取得するので、使用される確率テーブルを確率テーブル3から確率テーブル4に遷移させる。これにより算術復号化部701は、3番目の符号化された係数値L(6)の絶対値を、確率テーブル4を用いて2値化データ「000001」に算術復号化する。ここで使用される確率テーブルが確率テーブル4に遷移されたので、算術復号化部701は、以降の符号化された係数値Lの絶対値をすべて確率テーブル4を用いて算術復号化する。例えば、5番目の符号化された係数値Lの絶対値が復号化され多値化された結果は「2」となるが、従来例とは異なり、算術復号化部701は、6番目以降の符号化された係数値Lの絶対値を算術復号化するときには、確率テーブルを遷移させずに確率テーブル4を用いる。
以上のような動作により、1つの係数ブロック分の係数値Lの絶対値および個数R並びに係数値Lの正負符号が生成されると、これらはRL列として並べ替え部704に入力される。
並べ替え部704は、入力されたRL列を逆方向に並べ直す。ただし、係数の個数は並べ替えの対象からは除外する。並べ替えた後の状態は図16の(a)となる。そして並べ替え部704は、このように並べ替えられたRL列を係数生成部705に出力する。
係数生成部705は、入力されたRL列を係数ブロックに変換する。この際には、係数生成部705は、所定の走査順序に基づいて、個数Rで示された個数だけ値「0」の係数を生成し、その次に係数値Lで示された値の係数を生成することを繰り返すことにより、RL列から係数ブロックへの変換を行う。ここでは、係数生成部705は、図15の(b)に示すように低周波数領域から高周波数領域に向かってジグザグに走査し、図16の(a)に示すRL列を、図15の(a)に示す係数ブロックに変換する。そして係数生成部705は、このように生成された係数ブロックを逆量子化部602に出力する。
以上のように、本発明に係る画像復号化装置500bの可変長復号化部601における可変長復号化方法は、入力符号列中の、係数値Lの絶対値の算術復号化を行う場合に、複数の確率テーブルを切り替える。確率テーブルを切り替える際には、現在の確率テーブルのテーブル番号および復号化により得られた係数値Lの絶対値によって、次の係数値Lの絶対値を復号化する際の確率テーブルを決定する。この際の、確率テーブルの遷移は一方向のみとし、復号化により得られた係数値Lの絶対値が一度所定の値を超えると、それ以降はすべて同じ確率テーブルで算術復号化を行う。
このように、本発明の可変長復号化方法を用いることにより、本発明の可変長符号化方法を用いて符号化された符号列を正しく復号化することが可能となる。
以上、本発明に係る画像復号化装置について、本実施の形態を用いて説明したが、本発明はこれらに限定されるものではない。
例えば、本実施の形態では、ピクチャ内符号化により生成された符号列を復号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてピクチャ間符号化をして生成された符号列を復号化する場合であっても良く、同様の効果が得られる。
また、本実施の形態では、画像データが水平4×垂直4画素の画素ブロックに分割されて符号化されている符号列について説明したが、その画素ブロックの大きさは他の大きさであっても良い。
また、本実施の形態では4つの確率テーブルを用い、図17に示す遷移図に基づいて確率テーブルが遷移する場合について説明したが、確率テーブルの数や、図17における遷移の際の、係数値Lの絶対値に対するしきい値は他の値であっても良い。
また、本実施の形態では、係数ブロック内の走査方法として図15(b)を用いて説明したが、これは符号化の際に用いた走査方法と同じであれば、他の走査順序であっても良い。
また、本実施の形態では、2値化テーブルの例として図21を用いて説明したが、これは符号化の際に用いた2値化テーブルと同じであれば、他のテーブルであっても良い。
また、本実施の形態では、算術復号化部701が2値算術復号化を行う場合について説明したが、これは多値算術復号化を行っても良い。この場合、多値化部702を省くことができる。
次いで、本発明に係るさらに他の実施の形態を、図面を参照しながら説明する。
(実施の形態5)
図22は、本発明の可変長符号化方法およびこれを用いた動画像符号化方法が適用される符号化装置の機能構成を示すブロック図である。なお、この実施の形態5においても、実施の形態1,3の符号化装置100a,100bと同様に、本発明の動画像符号化方法で入力画像をフレーム内符号化処理する場合の機能構成が図示されている。また、このような符号化装置100cを構成する各部は、CPU、CPUによって実行されるプログラムやデータを予め格納するROM、プログラム実行の際にワークエリアを提供したり、入力画像等を一時的に格納するメモリ等により実現される。
図22に示されるように、この実施の形態5に係る符号化装置100cは、ブロック変換部110、周波数変換部120、量子化部130、可変長符号化部160から構成される。
ここで、上記実施の形態1に係る符号化装置100aではRとLのペアを複数の可変長符号テーブル(VLCテーブル)を用いて符号化するように構成され、上記実施の形態3に係る符号化装置100bではLをRと別個に複数の確率テーブルを用いて算術符号化するように構成されていたが、この実施の形態5に係る符号化装置100cにおいては、LをRと別個に、かつ複数の可変長符号テーブルを用いて符号化するように構成されている点が符号化装置100a,100bと異なっている。このため、符号化装置100cは、符号化装置100a,100bの可変長符号化部140,150に代えて可変長符号化部160を用いて構成される。なお、他の構成については、符号化装置100a,100bと同一であるのでその説明を省略し、可変長符号化部160について詳述する。
この可変長符号化部160は、量子化部130によって量子化された周波数係数に基づいてL列とR列とを個別に生成し、1次元VLC切り替え方式で係数の絶対値|L|等の符号列を生成する。
図23は、可変長符号化部160の詳細な機能構成を示すブロック図である。
図23に示されるように、可変長符号化部160は、R列・L列生成部161と、コード割り当て部163と、テーブル記憶部164とから構成される。
R列・L列生成部161は、量子化された周波数係数(以下、単に「係数」とも記す。)を周波数の低い方から高い方にジグザグスキャンしてL列とR列とを個別に生成する。
具体的には、図3(a)に示されるブロックの係数が入力された場合、R列・L列生成部161は、図3(b)に示されるようにジグザグスキャンする。そして、R列・L列生成部161は、まず、L列について、図24(a)に示されるように、係数値が「0」以外であるLの個数mと、その係数の絶対値|L|の列と、その係数の符号の列とを取得する。これは、RがLに依存するのに対して、LはRに依存せず、独立に取得できるからである。次いで、R列・L列生成部161は、図24(b)に示されるように、Rの列(R列)を生成する。
テーブル記憶部164は、L列の各係数の絶対値|L|を可変長符号化するための複数(例えは、8個)の可変長符号テーブル1641a〜1641gと、係数の絶対値|L|に対するしきい値を複数保持し、係数の絶対値|L|に応じて各可変長符号テーブル1641a〜1641gを適応的に切り替えるためのしきい値テーブル1642等とを保持している。
図25は、各可変長符号テーブル1641a〜1641gの構成例を示す図である。なお、各可変長符号テーブル1641a〜1641gは、実際には係数の絶対値|L|とその2値化コードとをそれぞれ対応づけて構成されるが、同図においては1つのテーブルで図示されている。
ここで、係数の絶対値|L|の出現頻度が高いほど小さなコード番号が割り当てられるが、一般には係数の絶対値|L|の小さい値ほど出現頻度が高くなる。これは、係数の絶対値|L|の最大値は映像によっても、画面の中によっても、その値が分散し、同じ値の出現頻度が少ないのに対し、係数の絶対値|L|の最小値、すなわち高周波成分はほぼ「1」や「2」程度に集中する傾向が強く、同じ値の出現頻度が多くなるためである。一方、係数の絶対値|L|と2値化コードと1つの可変長符号テーブルだけで対応づけてしまうと、係数の絶対値|L|が大きいほどその符号長が非常に長くなってしまう。このため、係数の絶対値|L|が大きくなってもその符号長があまり長くならないように、係数の絶対値|L|に応じて適用される可変長符号テーブル1641a〜1641gが予め用意される。
各可変長符号テーブル1641a〜1641gは、係数値の最小値における符号長が各前記テーブルにそれぞれ付与される番号kの順番に長くなり、係数値の最大値における符号長が番号kの順番に短くなるように係数値に対する符号長の変化率を異ならせて構成される。
より詳しくは、可変長符号テーブル1641aは、各テーブル中で、係数の絶対値|L|が小さいときにはその符号長が一番短く、係数の絶対値|L|が大きいときにはその符号長が一番長いテーブルである。すなわち、可変長符号テーブル1641aは、各可変長符号テーブル1641a〜1641gの中で、係数の絶対値|L|に対する符号長の変化率が一番大きなテーブルであって、係数の絶対値|L|が小さい場合(例えば、「1」〜「3」)に適用するのに適している。
可変長符号テーブル1641gは、各テーブル中で、係数の絶対値|L|が小さいときにはその符号長が一番長く、係数の絶対値|L|が大きいときにはその符号長が一番短いテーブルである。すなわち、可変長符号テーブル1641gは、各可変長符号テーブル1641a〜1641gの中で、係数の絶対値|L|に対する符号長の変化率が一番小さなテーブルであって、係数の絶対値|L|が大きい場合(例えば、「193」〜)に適用するのに適している。
その間の可変長符号テーブル1641b〜1641fは、1641b〜1641fの順に、係数の絶対値|L|が小さいときにはその符号長が徐々に長くなり、係数の絶対値|L|が大きいときにはその符号長が徐々に短くなるテーブルである。すなわち、可変長符号テーブル1641b〜1641fは、1641b〜1641fの順に、係数の絶対値|L|に対する符号長の変化率が徐々に小さくなるテーブルであって、可変長符号テーブル1641bにおいては係数の絶対値|L|が例えば「4」〜「6」である場合に使用するのに、可変長符号テーブル1641cにおいては係数の絶対値|L|が例えば「7」〜「12」である場合に適用するのに、…、それぞれ適している。
これによって、係数値に応じた符号長の可変長符号を各テーブルに適応させることが可能となるので、符号化効率を向上させることができる。つまり、あるテーブルでは係数値が小さい場合に他のテーブルよりも短い符号長の可変長符号に符号化するようにし、他のあるテーブルでは係数値が大きい場合に他のテーブルよりも短い符号長の可変長符号に符号化するようにし、係数値に応じてテーブルを切り替えることで、符号長を飛躍的に短くすることができる。さらに、各テーブルごとに符号長が短くなる範囲を割り当てることができるので、符号化効率の向上を実現できる。なお、符号化が非算術符号化、すなわちVLC方式であるので、算術符号化のような複雑な処理が不用となり、符号化に用いるテーブルが決まるとそのテーブルを参照するだけで簡単に可変長符号に符号化することができる。
図26は、しきい値テーブル1642の構成例を示す図である。
このしきい値テーブル1642は、可変長符号テーブル1641a〜1641gの特性に応じて予め設定され、各可変長符号テーブル1641a〜1641fの切り替えに用いるしきい値を複数保持する。例えば、可変長符号テーブル1641a,1641bの切り替えに対するしきい値は「4」に、可変長符号テーブル1641b,1641cの切り替え(遷移)に対するしきい値は「7」に、…、可変長符号テーブル1641f,1641gの切り替えに対するしきい値は「193」に、それぞれ設定される。これによって、テーブルの切り替えのタイミングを簡単に判断でき、係数の絶対値|L|に応じた最適なテーブルに切り替えることが可能となる。
コード割り当て部163は、テーブル記憶部164が保持する可変長符号テーブル1641a〜1641gおよびしきい値テーブル1642を用いて、R列・L列生成部161から出力された係数の絶対値|L|をR列と個別に可変長符号化し、2値コードを割り当てる。すなわち、コード割り当て部163は、係数の絶対値|L|を1次元符号化する。
次いで、符号化装置100cにおける符号化動作を説明する。なお、ブロック変換部110〜量子化部130の動作については、上記した符号化装置100a,100bにおける動作と同じであるのでその動作の説明を省略し、可変長符号化部160における可変長符号化動作を詳細に説明する。
量子化部130によって量子化された周波数係数は可変長符号化部160のR列・L列生成部161に入力される。
R列・L列生成部161は、まず、上記図3(b)の場合と同様に、ブロック内の量子化された周波数係数値を直流成分の領域から高周波成分の領域に向かってジグザグスキャンすることによって周波数係数値を一次元化する。次いで、R列・L列生成部161は、「0」以外の係数値Lの列(以下、「L列」とも記す。)と、連続する係数値「0」の個数Rの列(以下、「R列」とも記す。)とを個別に生成する。この生成されたL列とR列との例を、図24に示す。なお、L列については、係数の個数mと、係数の絶対値|L|と、係数の正負号と、等に分けられる。なお、係数の正負号については、例えば、正は「0」に、負は「1」に対応付けされる。
ここで、一般的に高周波数成分ほど係数値が「0」になりやすいので、低周波数領域から高周波数領域に向かって走査することにより、L列の係数値が「1」に近づく。
コード割り当て部163は、R列・L列生成部161によって生成されたL列の各L値をジグザグスキャンと逆順、すなわち周波数の高い方から順番に符号化する。すなわち、コード割り当て部163は、L列の後ろから順番に可変長符号テーブル1641a〜1641gを用いて係数の絶対値|L|に対応するハフマン符号(可変長符号)を順次求める。
なお、ジグザグスキャンの順番と逆順にする理由は、高周波領域の「0」以外の係数値「1」近傍に収束に収束し、符号化に用いる最初のテーブルを決定しやすく、可変長符号テーブル1641a〜1641gを作成しやすく、しかも、しきい値を決定しやすいからである。
コード割り当て部163は、テーブル記憶部164に保持されている種々のテーブルを用いてL列のLおよびR列の各Rに対して可変長符号を割り当てる。なお、コード割り当て部163は、係数の個数mについても可変長符号を割り当てたりするが、ここでは、係数の絶対値|L|に対して可変長符号を割り当てる処理を説明する。
図27は、コード割り当て部163が実行する可変長符号の割り当て処理を示すフローチャートである。
コード割り当て部163は、ブロック内係数値(係数の絶対値|L|)の符号化を開始するに当たりR列・L列生成部161から出力された係数値の個数mをセットする(S101)。次いで、コード割り当て部163は、参照する可変長符号テーブルの初期値としてテーブル番号kに「0」をセットする(S102)。次いで、コード割り当て部163は、しきい値テーブル1642を参照し、しきい値=4をセットする(S103)。
係数の個数m、可変長符号テーブルの参照先(この場合、可変長符号テーブル1641a)およびしきい値の設定が終わると、コード割り当て部163は、R列・L列生成部161から出力された係数の絶対値|L|を後ろから読み出し(S104)、セットされた番号の可変長符号テーブルを用いて読み出した係数の絶対値|L|を可変長符号に符号化し(S105)。そして、符号化が終わると、コード割り当て部163は、符号化によって得られた2値化コードを不図示のバッファ(例えば、FIFOバッファ)に格納し(S106)、係数の個数mを「1」デクリメントし(S107)、デクリメントした個数mが「0」か否か、すなわちL列に含まれる係数のすべてを符号化し終わったか否か判断する(S108)。
係数の個数mが「0」でなければ(S108でNo)、直前の係数の絶対値|L|がしきい値を超えたか否か判断する(S109)。超えていなければ(S109でNo)、コード割り当て部163は、次の係数の絶対値|L|を後ろから読み出し(S104)、ステップS105〜S108等を実行する。すなわち、次の係数の絶対値|L|を前と同じ可変長符号テーブルを用いて符号化する。
直前の係数の絶対値|L|がしきい値を超えた場合(S109でNo)、コード割り当て部163は、テーブル番号kを「1」インクリメントする(S110)。これによって、次の係数の絶対値|L|の符号化の際には、符号長の変化率がより少ない、符号長の長い係数の絶対値|L|の符号化に適した可変長符号テーブル(例えば、前の可変長符号テーブルがk=0の1641aであれば、k=1の1641b)が参照されることになる。
テーブル番号kのインクリメントが終わると、コード割り当て部163は、しきい値テーブル1642を参照し、次のしきい値に更新する(例えば、前のしきい値が「4」であれば「7」)(S111)。これによって、係数の絶対値|L|が新たなしきい値を超えた場合にだけ、符号長の変化率がより少ない、符号長の長い係数の絶対値|L|の符号化に適した次の可変長符号テーブルに遷移させることができる。
より詳しくは、直前の係数の絶対値|L|がテーブル番号「0」の可変長符号テーブル1641aとテーブル番号「1」の可変長符号テーブル1641bとの間のしきい値「4」を超えた場合、図28に示されるように、次の係数の絶対値|L|の符号化の際の参照先として、可変長符号テーブル1641aから可変長符号テーブル1641bへ参照先が切り替えられ、しきい値「7」が設定される。
直前の係数の絶対値|L|がテーブル番号「1」〜「6」の可変長符号テーブル1641b〜1641g間のしきい値「7」〜「193」を超えた場合についても、しきい値「4」の場合と同様に、次の係数の絶対値|L|の符号化の際の参照先として、テーブル番号「1」の可変長符号テーブル1641bからテーブル番号2の可変長符号テーブル1641cへ、…、可変長符号テーブル1641gへ順次切り替えられる。この様子を図28に示す。
ここで、テーブルの切り替え方向は、一方向であり、戻ることはない。これによって、係数値によって、テーブルが頻繁に入れ替わることが防止され、テーブルの切り替え回数が減る。したがって、符号化効率を向上させることができる。例えば、メモリのワークエリアが限られるので次に使用するテーブルだけをワークエリアに置くのが一般的である。この場合には、テーブルを切り替えるごとにROMから次のテーブルを読み出してワークエリアに展開するのに時間がかかるので、次の係数値の符号化まで時間がかかる。このため、一方向とすることによって、テーブルの切り替え回数を制限し、次の係数値の符号化まで時間をトータルとして短縮できるという効果が発揮される。
このような、テーブル番号のインクリメントと、しきい値の更新が終わると、コード割り当て部163は、次の係数の絶対値|L|を後ろから読み出し(S104)、ステップS105〜S108等を実行する。すなわち、前よりも係数の絶対値|L|が大きいものに適した可変長符号テーブルを用いて符号化する。
このような処理(S104〜S111)を係数の個数mが「0」になるまで繰り返し実行し、係数の個数mが「0」になると当該ブロック内の係数の絶対値|L|の符号化を終了する。
具体的には、ブロック内における係数の絶対値|L|の列が後ろから「1」、「1」、「2」、「3」、「4」、「12」、「2」、「3」、「31」、「22」、「5」、「9」、「38」である場合、コード割り当て部163は、図29に示されるように、まず可変長符号テーブル1641aを用いて「1」、「1」、「2」、「3」、「4」、「12」をこの順番に2値コード「1」、「1」、「010」、「011」、「00100」、「0001100」にそれぞれ符号化する。そして、係数の絶対値|L|=「12」のコード化の際にしきい値「4」を超えたので、コード割り当て部163は、符号化に使用するテーブルをテーブル番号k=1の可変長符号テーブル1641bに切り替える。
次いで、コード割り当て部163は、切り替えた可変長符号テーブル1641bを用いて次の係数の絶対値|L|=「2」、「3」、「31」をこの順番に2値コード「11」、「0100」、「0000100000」にそれぞれ符号化する。そして、係数の絶対値|L|=「31」のコード化の際にしきい値「7」を超えたので、コード割り当て部163は、符号化に使用するテーブルをテーブル番号k=2の可変長符号テーブル1641cに切り替える。
さらに、コード割り当て部163は、切り替えた可変長符号テーブル1641cを用いて次の係数の絶対値|L|=「22」を2値化コード「0011001」に符号化する。そして、係数の絶対値|L|=「22」のコード化の際にしきい値「13」を超えたので、コード割り当て部163は、符号化に使用するテーブルをテーブル番号k=3の可変長符号テーブル1641dに切り替える。
次いで、コード割り当て部163は、切り替えた可変長符号テーブル1641dを用いて次の係数の絶対値|L|=「5」、「9」、「38」をこの順番に可変長符号テーブル1641dを用いて2値コード「1100」、「010000」、「00101101」にそれぞれ符号化する。
これによって、バッファには、2値化コード「1101001100100000110011010000001000000011001110001000000101101」が格納される。
なお、このバッファには符号化されたL列の係数の個数mや、係数の正負号、R列のR値2値化コードも格納されており、バッファに格納された符号化されたL列の係数の個数m、係数の絶対値|L|の2値化コード、係数の正負号、R列のR値2値化コードは、CD等の記録媒体や、インターネット、衛星放送等の伝送媒体を介して復号化装置に送られる。
ここで、上記L列の係数の絶対値|L|「1」、「1」、「2」、「3」、「4」、「12」、「2」、「3」、「31」、「22」、「5」、「9」、「38」を可変長符号テーブル1641aだけで符号化した場合を想定すると、その2値化コードは「1」、「1」、「010」、「011」、「00100」、「0001100」、「010」、「011」、「000011111」、「000010110」、「00101」、「001001」、「00000100110」となり、64ビットの符号長となる。
これに対して、本実施の形態5の符号化方法では、ブロック内の係数の絶対値|L|の最大値が比較的低く、しかも係数の絶対値|L|が徐々に上昇しない場合であっても、61ビットの符号長となり、符号化効率を上げることができる。これは、係数の絶対値|L|が例えば「22」、「38」である場合、可変長符号テーブル1641aだけでは、「000010110」の9ビット、「00000100110」の11ビットをそれぞれ要するのに対して、本方式では「0011001」の7ビット、「00101101」の8ビットですむことが大きく寄与している。したがって、通常のブロック内の係数の絶対値|L|の最大値が比較的高く、係数の絶対値|L|が徐々に上昇する場合にあっては、符号化効率を飛躍的に上げることができる。
なお、上記実施の形態5においては、直前の係数の絶対値|L|がしきい値を超えると(S109でYes)、テーブル番号kを1つインクリメントし(S110)、次の番号の可変長符号テーブルを用いて符号化するようにしたが(図28参照)、しきい値を超えた直前の係数の絶対値|L|によって、その係数の絶対値|L|に適応した可変長符号テーブルに跳んで切り替えるようにしてもよい。つまり、例えば番号k=1のテーブルを参照して符号化する直前の係数の絶対値|L|が「20」である場合、その次の係数の絶対値|L|が「20」より大きくなる可能性が高いので、その次の係数の絶対値|L|の符号化にはk=3のテーブルを参照して符号化するようにしてもよい。この場合には、しきい値もその可変長符号テーブルに合致したしきい値(例えば、25)をセットすればよい。
また、可変長符号テーブルを8つ用いる場合について説明したが、これは可変長符号テーブルを2つ〜7つ、または8つ以上用い、複数のしきい値を用いて、各しきい値を超える度に可変長符号テーブルを切り替えるようにしても良い。
また、本実施の形態5では、係数値を絶対値と正負符号とに分けて符号化し、係数値の絶対値用の各可変長符号テーブルを正負符号なし(絶対値)で構成したが、係数値を正負号付きで符号化してもよく、その場合には2値化コードを正負符号付きで構成すればよい。この場合には、例えば可変長符号のLSBビットに正負符号を1ビット付加すればよい。
また、本実施の形態5では、フレーム内符号化により画像を符号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてフレーム間符号化をする場合であっても良く、本実施の形態の方法により、同様の効果が得られる。
また、本実施の形態5では、入力画像を水平4画素、垂直4画素のブロックに分割する場合について説明したが、ブロックの大きさは他の大きさであっても良い。
また、本実施の形態5では、ブロック内の走査方法として図3(b)を用いて説明したが、これは低周波数域から高周波数域への走査であれば他の走査順序であっても良い。
また、本実施の形態5では、可変長符号テーブルの例として図25を用いて説明したが、これは他のテーブルであっても良い。
また、本実施の形態5では、これはL列の最初にL値の個数を付加する場合について説明したが、L列の最後にEOBを付加しても良い。
(実施の形態6)
図30は、本発明の実施の形態に係る可変長復号化方法およびこれを用いた動画像復号化方法が適用される復号化装置の機能構成を示すブロック図である。なお、ここでは、実施の形態5で説明した本発明の可変長符号化方法により生成された符号列が入力されるものとして説明する。
図30に示されるように、復号化装置500cは、可変長復号化部560と、逆量子化部520と、逆周波数変換部530と、フレームメモリ540とから構成される。なお、このような復号化装置500cを構成する各部は、符号化装置100cと同様にCPU、CPUによって実行されるプログラムやデータを予め格納するROM、プログラム実行の際にワークエリアを提供したり、入力符号化列等を一時的に格納するメモリ等により実現される。また、逆量子化部520と、逆周波数変換部530と、フレームメモリ540とは、上記復号化装置500a,500bの場合と同じであるのでその説明を省略し、可変長復号化部560の構成を詳述する。
可変長復号化部560は、コード変換部561と、テーブル記憶部562と、係数生成部564とから構成される。
テーブル記憶部562は、可変長符号と係数の絶対値|L|とを対応付けた複数種類(8つ)の可変長符号(復号)テーブル5621a〜5621gと、しきい値テーブル5622等とを予め保持する。なお、この可変長符号テーブル5621a〜5621gは図25に示される可変長符号テーブル1641a〜1641gとそれぞれ同じに構成され、しきい値テーブル5622は図26に示されるしきい値テーブル1642と同じに構成される。
コード変換部561は、テーブル記憶部562に保持されているテーブル(可変長符号テーブル5621a〜5621g、しきい値テーブル5622等)を用いて、入力された符号列に対して、可変長符号からL列の係数の個数m、係数の絶対値|L|、R列のR値への変換を行う。係数の絶対値|L|への変換は、可変長符号テーブル5621a〜5621gを用いて行う。
係数生成部564は、入力されたL列とR列とに基づいて係数値に変換し、所定の走査方法で二次元化する。この係数値への変換の際には、所定の走査順序に基づいて、Rで示された値だけ係数値「0」を生成し、その次にLで示された値の係数値を生成する、を繰り返すことにより、L列とR列から係数値への変換を行う。ここでは、低周波数領域から高周波数領域に向かってジグザグに走査するとすると、上記した図11に示される係数ブロックに変換されることになる。生成された係数ブロックは逆量子化部520に入力される。
次いで、可変長復号化部560の各部における復号化動作を説明する。
なお、ここではコード変換部561に入力された2値化コード入力符号列の符号が先頭から順番に「1」、「1」、「010」、「011」、「00100」、「0001100」、「11」、「0100」、「0000100000」、「0011001」、「1100」、「010000」、「00101101」であるものとして説明する。
コード変換部561は、可変長符号の復号化を開始するに当たり、符号化装置100cから出力された係数の個数mを復号化し、復号化した係数の個数mをセットする。次いで、コード変換部561は、参照する可変長符号テーブルの初期値としてテーブル番号kに「0」をセットする。次いで、コード割り当て部163は、しきい値テーブル5622を参照し、しきい値=4をセットする(S103)。係数の個数m、可変長符号テーブルの参照先(この場合、可変長符号テーブル5621a)およびしきい値の設定が終わると、コード変換部561は、符号化装置100cから出力された順番に係数の絶対値|L|を前(すなわち、高周波側)から読み出し、セットされた番号の可変長符号テーブルを用いて読み出した可変長符号を係数の絶対値|L|に可変長復号化する。そして、復号化が終わると、コード変換部561は、復号化によって得られた係数の絶対値|L|を不図示のバッファ(例えば、FILOバッファ)に格納し、係数の個数mを「1」デクリメントし、デクリメント後の個数mが「0」か否か、すなわちL列に含まれる係数のすべてを復号化し終わったか否か判断する。
係数の個数mが「0」でなければ、可変長復号化した直前の係数の絶対値|L|がしきい値を超えたか否か判断する。超えていなければ、コード変換部561は、次の可変長符号を前ろから読み出し、前と同じ可変長符号テーブルを用いて係数の絶対値|L|に復号化する。
可変長復号化した直前の係数の絶対値|L|がしきい値を超えた場合、コード変換部561は、テーブル番号kを「1」インクリメントする。これによって、次の係数の絶対値|L|の符号化の際には、符号長の変化率がより少ない、符号長の長い係数の絶対値|L|の符号化に適した可変長符号テーブル(例えば、前の可変長符号テーブルが5621aであれば、5621b)が参照されることになる。テーブル番号kのインクリメントが終わると、コード変換部561は、しきい値テーブル5622を参照し、次のしきい値に更新する(例えば、前のしきい値が「4」であれば「7」)。これによって、係数の絶対値|L|が新たなしきい値を超えた場合にだけ、符号長の変化率がより少ない、符号長の長い係数の可変長符号の復号化に適した次の可変長符号テーブルに遷移させることができる。
より詳しくは、1番目の可変長符号に対しては、k=0の可変長符号テーブル5621aを参照する。今、可変長テーブル5621aを参照した場合、入力符号列に一致するのは、可変長符号「1」であり、この場合の係数の絶対値|L|は「1」となる。同様にして、可変長符号テーブル5621aを用いて、可変長符号から係数の絶対値|L|への変換を順に行っていくと、可変長符号「1」が係数の絶対値|L|=「1」に、可変長符号「010」が係数の絶対値|L|=「3」に、可変長符号「00100」が係数の絶対値|L|=「4」に、可変長符号「0001100」が係数の絶対値|L|=「12」にそれぞれ変換される。
ここで係数の絶対値|L|に対するしきい値を「4」とすると、6番目の係数の絶対値|L|=「12」でしきい値を超えることになる。したがって、コード変換部561は、以降の可変長符号の係数の絶対値|L|への変換では、k=1である次の可変長符号テーブル5621bを用い、しきい値に7を設定し、係数の絶対値|L|に変換する。よって、次の7番目の可変長符号「11」は、係数の絶対値|L|=「2」に変換される。
次の8番目の可変長符号「0100」は係数の絶対値|L|=「3」に、9番目の可変長符号「000010000」は係数の絶対値|L|=「31」に、それぞれ変換される。ここで係数の絶対値|L|に対するしきい値を「7」とすると、9番目の係数の絶対値|L|=「31」でしきい値を超えることになる。したがって、コード変換部561は、以降の可変長符号の係数の絶対値|L|への変換では、k=2である次の可変長符号テーブル5621bを用い、しきい値に13を設定し、係数の絶対値|L|に変換する。なお、7番目の係数の絶対値|L|への復号化において得られた係数の絶対値|L|が再びしきい値7以下となっても、可変長符号テーブル5621aへの切り替えは行わず、可変長符号テーブル5621bを用いて変換を行う。
以上のような処理を繰り返して、1ブロック分(m個)の係数の絶対値|L|が生成されると、それらはFILOバッファによる先入れ後出しによって逆順に並べ替えられる。また、係数の正負号についても、FILOバッファによる先入れ後出しによって逆順に並べ替えられる。ただし、個数は並べ替えの対象からは除外する。ここでは、図24(a)に示されるL列と同じ順序(すなわち、低周波から高周波に向かう順序)の列が生成されたとする。このように並べ替えられたL列の各係数の絶対値|L|は係数生成部564に入力される。なお、コード変換部561は、R列の各Rについても係数の絶対値|L|と同様な処理によって復号化し、図24(a)に示されるR列を係数生成部564に出力する。
係数生成部564は、入力されたL列とR列とに基づいて、係数値に変換する。この際には、所定の走査順序に基づいて、Rで示された値だけ係数値「0」を生成し、その次にLで示された値の係数値を正負符号を付加して生成する、を繰り返すことにより、L列とR列とから係数値への変換を行う。ここでは、図11に示されるように低周波数領域から高周波数領域に向かってジグザグに走査するとすると、図24(a)に示されるL列と図24に示されるR列とは係数ブロックに変換されることになる。生成された係数ブロックは逆量子化部520に入力される。
以上のように、本発明の実施の形態6に係る可変長復号化方法は、まず、復号化ステップにおいて、復号化に用いる複数の可変長符号(復号)テーブルを一方向に切り替えつつ、切り替えた可変長符号テーブルを用いて前記符号列の可変長符号を所定の順番に周波数領域に係る「0」以外の係数値に復号化する。次いで、係数値変換ステップにおいて、生成された係数値に基づいてブロック内の係数値に変換する。ここで、各前記テーブルは、最小の係数値における符号長が各前記テーブルにそれぞれ付与される番号の順番に長くなり、最大の係数値における符号長が前記番号の順番に短くなるように係数値に対する符号長の変化率を異ならせて構成される。
また、前記しきい値は、係数値に対応する符号長が他のテーブルよりも短くなる各テーブルの適応特性に基づいて設定される。前記符号列の可変長符号は高周波成分から低周波成分に向かう順序で並べられ、前記復号化ステップは、前記符号列の並びの順番に係数値に復号化し、復号化した係数値を符号列の並びの後ろから順番に出力することにより係数値の係数値列を生成し、前記係数生成ステップは、前記係数値列の並びの順序で係数値を走査する。
前記符号化ステップは、復号化された係数の絶対値がしきい値を超えると、復号化対象の可変長符号の復号化に用いたテーブルから当該テーブルに付与された番号より番号の大きなテーブルに切り替えて次の可変長符号を係数値に復号化する。
以上の動作により、本発明の可変長復号化方法を用いることにより、本発明の可変長符号化方法を用いて符号化された符号列を正しく復号化することが可能となる。
なお、上記実施の形態6においては、実施の形態5の場合にあわせて、と同様に復号化された直前の係数の絶対値|L|がしきい値を超えると、テーブル番号kを1つインクリメントし、次の番号の可変長符号テーブルを用いて復号化するようにしたが、符号化の際に用いたテーブルの切り替え方法と同じであれば、しきい値を超えた直前の係数の絶対値|L|によって、その係数の絶対値|L|に適応した可変長符号テーブルに跳んで切り替えるようにしてもよい。この場合には、しきい値もその可変長符号テーブルに合致したしきい値をセットすればよい。
また、本実施の形態6では、可変長符号テーブルの例として図25を用いて説明したが、これは符号化の際に用いたテーブルと同じであれば、他のテーブルであっても良い。また、可変長符号テーブルを8つ用いる場合について説明したが、これは可変長符号テーブルを2つ〜6つ、あるいは8つ以上用い、複数のしきい値を用いて、各しきい値を超える度に可変長符号テーブルを切り替えるようにしても良い。ただし、この際の可変長テーブルの構成およびしきい値は、符号化の際に用いたものと同じでなければならない。
また、本実施の形態6では、係数値を絶対値と正負符号とに分けて符号化し、係数値の絶対値用の各可変長符号テーブルを正負符号なし(絶対値)で構成したが、係数値を正負号付きで符号化してもよく、その場合には2値化コードを正負符号付きで構成してもよい。この場合には、例えば可変長符号のLSBビットに正負符号を1ビット付加すればよい。
また、本実施の形態6では、Lの値がしきい値を超えた場合に、可変長符号テーブルを切り替えるようにしたが、係数の絶対値|L|の大きい順番(すなわち、高周波側からの順番)に復号化する場合には、番号の大きい可変長符号テーブルを用いて復号化し、復号化した係数の絶対値|L|がしきい値未満になった場合に、番号の小さい可変長符号テーブルに切り替えるようにしてもよい。
また、本実施の形態6では、フレーム内符号化により生成された符号列を復号化する場合について説明したが、これは動画像入力に対して動き補償等を用いてフレーム間符号化をして生成された符号列を復号化する場合であっても良く、本実施の形態の方法により、同様の効果が得られる。
また、本実施の形態6では、入力画像が水平4画素、垂直4画素のブロックに分割されて符号化されている場合について説明したが、ブロックの大きさは他の大きさであっても良い。
また、本実施の形態6では、ブロック内の走査方法として図11を用いて説明したが、これは符号化の際に用いた走査方法と同じであれば、他の走査順序であっても良い。
(実施の形態7)
次に、本発明に係る可変長符号化方法、可変長復号化方法、可変長符号化装置、可変長復号化装置、動画像符号化方法、動画像復号化方法、動画像符号化装置および動画像復号化装置を別の形態で実現した例について説明する。
上記各実施の形態で示した符号化装置または復号化装置の構成を実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
図32は、上記実施の形態1,3,5の動画像符号化方法または実施の形態2,4,6の動画像復号化方法の処理を行うためのプログラムを格納したフレキシブルディスクを用いて、コンピュータシステムにより実施する場合の説明図である。
図32(b)は、フレキシブルディスクの正面からみた外観、断面構造、およびフレキシブルディスクを示し、図32(a)は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクFDはケースF内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。したがって、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクFD上に割り当てられた領域に、上記プログラムとしての動画像符号化装置が記録されている。
また、図32(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsから上記プログラムとしての動画像符号化装置または動画像復号化装置をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記動画像符号化装置をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ICカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
さらにここで、上記実施の形態で示した動画像予測方法、動画像符号化装置、動画像復号化装置の応用例とそれを用いたシステムを説明する。
図33は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図33のような組み合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband-Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、ま
たはPHS(Personal Handyphone System)等であり、いずれでも構わない。
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。
また、カメラ116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はデジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画像符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画像符号化装置あるいは画像復号化装置を用いるようにすればよい。
その一例として携帯電話について説明する。
図34は、上記実施の形態で説明した動画像予測方法、動画像符号化装置および画像復号化装置を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したもの
である。
さらに、携帯電話ex115について図35を用いて説明する。携帯電話ex115は表示部ex202および操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306および音声処理部ex305が同期バスex313を介して互いに接続されている。
電源回路部ex310は、ユーザの操作により終話および電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付デジタル携帯電話ex115を動作可能な状態に起動する。
携帯電話ex115は、CPU、ROMおよびRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってデジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でデジタルアナログ変換処理および周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信信号を増幅して周波数変換処理およびアナログデジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声信号に変換した後、これを音声出力部ex208を介して出力する。
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でデジタルアナログ変換処理および周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303およびLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
画像符号化部ex312は、本願発明で説明した画像符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画像符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してデジタルの音声データとして多重分離部ex308に送出する。
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でデジタルアナログ変換処理および周波数変換処理を施した後にアンテナex201を介して送信する。
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信信号を変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データの符号化ビットストリームと音声データの符号化ビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
次に、画像復号化部ex309は、本願発明で説明した画像復号化装置を備えた構成であり、画像データの符号化ビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声信号に変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
なお、上記システムの例に限られず、最近は衛星、地上波によるデジタル放送が話題となっており、図36に示すようにデジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報の符号化ビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置により符号化ビットストリームを復号化してこれを再生する。
また、記録媒体であるCDやDVD等の蓄積メディアex402に記録した符号化ビットスト
リームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画像復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画像復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画像復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
さらに、画像信号を上記実施の形態で示した画像符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある
。さらにSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画像復号化装置を備えていれば、DVDディスクex421やSDカードex422に記
録した画像信号を再生し、モニタex408で表示することができる。
なお、カーナビゲーションex413の構成は例えば図36に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
このように、上記実施の形態で示した可変長符号化方法、可変長復号化方法、これらの方法を用いた可変長符号化装置、可変長復号化装置、動画像符号化方法、動画像復号化方法、動画像符号化装置および画像復号化装置を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
なお、本発明のすべての実施の形態について、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
また、上記実施の形態1〜6の可変長符号化装置、可変長復号化装置においては係数値を低周波成分から高周波成分に向かう順序で走査するようにしたが、本発明の変形例として、係数値を高周波成分から低周波成分に向かう順序で走査するように構成してもよい。この場合には、係数値の並び替え等の処理を省略することができる。