本発明の実施の形態について、図面を参照して説明する。
(実施の形態1)
まず、動画像符号化装置の全体的な動作について図1を用いて説明する。図1は、フレームメモリ101、差分演算部102、予測誤差符号化部103、符号列生成部104、予測誤差復号化部105、加算演算部106、フレームメモリ107、動きベクトル検出部108、モード選択部109、符号化制御部110、スイッチ111〜115から構成される動画像符号化装置のブロック図である。
フレームメモリ101で並び替えが行われた各ピクチャは、マクロブロックの単位で読み出されるとする。ここでは、マクロブロックは水平16×垂直16画素の大きさであるとする。また、動き補償は16×16、16×8、8×16、8×8、8×4、4×8、4×4のブロック単位で行うものとする。ここで例えば16×8とは、水平16画素、垂直8画素の大きさを有するブロックを示すとする。またここでは、前方参照予測符号化ピクチャ(Pピクチャ)の符号化を例として説明する。
Pピクチャの符号化においては、符号化制御部110は、スイッチ113をオンにする。また、Pピクチャが他のピクチャの参照ピクチャとして用いられる場合には、スイッチ114、115がオンになるように各スイッチを制御する。他のピクチャの参照ピクチャとして用いられない場合には、スイッチ114、115はオフになるように各スイッチを制御する。したがって、フレームメモリ101から読み出されたPピクチャのマクロブロックは、まず動きベクトル検出部108、モード選択部109、差分演算部102に入力される。
動きベクトル検出部108では、フレームメモリ107に蓄積された参照ピクチャの復号化画像データを前方参照ピクチャとして用いることにより、マクロブロックに含まれる各ブロックの前方動きベクトルの検出を行う。
モード選択部109では、動きベクトル検出部108で検出した動きベクトルを用いて、マクロブロックの符号化モードを決定する。ここで、Pピクチャの符号化モードは、例えば、ピクチャ内符号化、前方参照によるピクチャ間予測符号化から選択することができるとする。また、前方参照によるピクチャ間予測符号化を用いた場合には、マクロブロックをどのようなブロックに分割して動き補償するかという情報も符号化モードに含む。
モード選択部109で決定された符号化モードは符号列生成部104に対して出力される。また、モード選択部109で決定された符号化モードに基づいた参照画像が差分演算部102と加算演算部106に出力される。ただし、ピクチャ内符号化が選択された場合には、参照画像は出力されない。また、モード選択部109でピクチャ内符号化が選択された場合には、スイッチ111はaに、スイッチ112はcに接続するように制御し、ピクチャ間予測符号化が選択された場合には、スイッチ111はbに、スイッチ112はdに接続するように制御する。以下では、モード選択部109でピクチャ間予測符号化が選択された場合について説明する。
差分演算部102には、モード選択部109から参照画像が入力される。差分演算部102では、Pピクチャのマクロブロックと参照画像との差分を演算し、予測誤差画像を生成し出力する。
予測誤差画像は予測誤差符号化部103に入力される。予測誤差符号化部103では、入力された予測誤差画像に対して周波数変換や量子化等の符号化処理を施すことにより、符号化データを生成して出力する。ここで、予測誤差画像に対する周波数変換は、モード選択部109において決定された動き補償の大きさに基づいて行うものとする。例えば8×8以上の大きさで動き補償された場合には、8×8の大きさで周波数変換し、8×8未満の大きさで動き補償された場合には、動き補償と同じ大きさで周波数変換するものとする。予測誤差符号化部103から出力された符号化データは、符号列生成部104に入力される。
符号列生成部104では、入力された符号化データに対して、可変長符号化等を施し、モード選択部109から入力された符号化モード、ヘッダ情報、等の情報を付加することにより符号列を生成し出力する。
次に、動画像復号化装置の全体的な動作について、図3を用いて説明する。図3は、符号列解析部301、予測誤差復号化部302、モード復号部303、動き補償復号部305、動きベクトル記憶部306、フレームメモリ307、加算演算部308、スイッチ309、310、可変長復号化部311から構成される動画像復号化装置のブロック図である。
以下では、前方予測参照符号化ピクチャ(Pピクチャ)の復号化処理について説明する。
符号列は符号列解析部301に入力される。符号列解析部301では、入力された符号列から、各種データの抽出を行う。ここで各種データとは、モード選択の情報や動きベクトル情報等である。抽出されたモード選択の情報は、モード復号部303に対して出力される。また、抽出された動きベクトル情報は、動き補償復号部305に対して出力される。さらに、予測誤差符号化データは可変長復号部311に対して出力される。
モード復号部303では、符号列から抽出されたモード選択の情報を参照し、スイッチ309と710の制御を行う。モード選択がピクチャ内符号化である場合には、スイッチ309はaに、スイッチ710はcに接続するように制御する。また、モード選択がピクチャ間予測符号化である場合には、スイッチ309はbに、スイッチ710はdに接続するように制御する。
またモード復号部303では、モード選択の情報を動き補償部に対しても出力する。以下では、モード選択がピクチャ間予測符号化である場合について説明する。
可変長復号部311では、入力された予測誤差符号化データに対して可変長復号を施す。可変長復号を施されたデータは、予測誤差復号化部302に対して出力される。
予測誤差復号化部302では、入力されたデータに対して、逆量子化処理や、逆周波数変換を施すことにより、予測誤差画像を生成する。ここで、逆周波数変換は、モード選択部109において決定された動き補償の大きさに基づいて行うものとする。例えば8×8以上の大きさで動き補償された場合には、8×8の大きさで周波数変換し、8×8未満の大きさで動き補償された場合には、動き補償と同じ大きさで周波数変換するものとする。生成された予測誤差画像はスイッチ309に対して出力される。ここでは、スイッチ309はbに接続されているので、予測誤差画像は加算演算部308に対して出力される。
動き補償復号部305は、可変長復号化部311から入力された、符号化された動きベクトルに対して、復号化処理を行う。そして、復号化された動きベクトルに基づいて、フレームメモリ307から動き補償画像を取得する。このようにして生成された動き補償画像は加算演算部308に対して出力される。
加算演算部308では、入力された予測誤差画像と動き補償画像とを加算し、復号化画像を生成する。生成された復号化画像はスイッチ310を介してフレームメモリ307に対して出力される。
さて、上記で説明した動画像符号化装置における符号列生成部104、および動画像復号化装置における可変長復号化部311の動作について、詳細を以下で説明する。
まず、符号列生成部104または可変長復号化部311において、CAVLC方式によって、各ブロックの有意係数の個数を符号化または復号化する方法について説明する。
各ブロックの有意係数の個数を符号化または復号化する場合には、周辺ブロックの有意係数の個数を参照する。ここでは、周辺ブロックとして、対象ブロックの上および左に位置するブロックを用いる場合について説明する。周辺ブロックがすべて画面内にあり、かつ同じスライス内であるとすると、対象ブロックの有意係数の個数を符号化または復号化する際には、周辺ブロックの有意係数の個数を用いて可変長符号化(復号化)テーブルを決定する。ここで、対象ブロックの有意係数の最大個数と、周辺ブロックの有意係数の最大個数が異なる場合、対象ブロックと周辺ブロックの有意係数の最大個数を一致させるように、周辺ブロックの有意係数の個数を求める。ここで、対象ブロックの有意係数の個数の最大値をNとすると(例えば対象ブロックの大きさが8×8である場合、Nは64となる)、周辺ブロックを参照して得られる有意係数の個数がN/8未満であれば図4のVLC0、N/8以上N/4未満であれば図4のVLC1、N/4以上であれば図4のVLC2を用いる、といったように可変長符号化(復号化)テーブルを決定する。ここで図4においては、有意係数の個数が16の場合までしか可変長符号化(復号化)テーブルを示していないが、これらのテーブルは有意係数の個数が17以上まで拡張したものを用いるとする。以下では図2を用いて説明するが、図2においてブロックCが可変長符号化または可変長復号化を施そうとしているブロックであるとする。
第1の例を図2(a)を用いて説明する。図2(a)において、また、ブロックA1、A2、B1、B2がブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは8×8の大きさを有し、周辺ブロックは、8×4の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックA1とA2との有意係数の個数の和を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックB1とB2との有意係数の個数の和を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックA1、A2の有意係数の個数の和と、ブロックB1、B2の有意係数の個数の和との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。ここで、ブロックB1とB2との有意係数の個数の和を用いる代わりに、ブロックCに隣接するブロックB1の有意係数の個数を2倍して用いても良い。
第2の例を図2(b)を用いて説明する。図2(b)において、ブロックA1、A2、A3、A4、B1、B2、B3、B4がブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは8×8の大きさを有し、ブロックA1、A2、A3、A4、B1、B2、B3、B4は、4×4の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックA1、A2、A3、A4の有意係数の個数の和を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックB1、B2、B3、B4の有意係数の個数の和を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックA1、A2、A3、A4の有意係数の個数の和と、ブロックB1、B2、B3、B4の有意係数の個数の和との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。ここで、A1、A2、A3、A4の有意係数の個数の和を用いる代わりに、ブロックCに隣接するブロックA2、A4の有意係数の個数の和の2倍の値や、ブロックB1、B2、B3、B4の有意係数の個数の和を用いる代わりに、ブロックCに隣接するブロックB3、B4の有意係数の個数の和の2倍の値、等を用いても良い。
第3の例を図2(c)を用いて説明する。図2(c)において、ブロックA、BがブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは8×4の大きさを有し、ブロックA、Bは、8×8の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックAの有意係数の個数の1/2の値を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックBの有意係数の個数の1/2の値を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックAの有意係数の個数の1/2の値と、ブロックBの有意係数の個数の1/2の値との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。
第4の例を図2(d)を用いて説明する。図2(d)において、ブロックA1、A2、B1、B2がブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは8×4の大きさを有し、ブロックA1、A2、B1、B2は、4×8の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックA1、A2の有意係数の個数の和の1/2の値を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックB1、B2の有意係数の個数の和の1/2の値を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックA1、A2の有意係数の個数の和の1/2の値と、ブロックB1、B2の有意係数の個数の和の1/2の値との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。ここで、A1、A2の有意係数の個数の和を用いる代わりに、ブロックA1、A2のいずれかの有意係数の個数や、ブロックB1、B2の有意係数の個数の和を用いる代わりに、ブロックB1、B2のいずれかの有意係数の個数、等を用いても良い。
第5の例を図2(e)を用いて説明する。図2(e)において、ブロックA1、A2、A3、A4、B1、B2、B3、B4がブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは8×4の大きさを有し、ブロックA1、A2、A3、A4、B1、B2、B3、B4は、4×4の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックA1、A2の有意係数の個数の和を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックB3、B4の有意係数の個数の和を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックA1、A2の有意係数の個数の和と、ブロックB3、B4の有意係数の個数の和との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。ここで、A1、A2の有意係数の個数の和を用いる代わりに、ブロックA1、A2、A3、A4の有意係数の個数の和の1/2の値や、ブロックB3、B4の有意係数の個数の和を用いる代わりに、ブロックB1、B2、B3、B4の有意係数の個数の和の1/2の値、等を用いても良い。
第6の例を図2(f)を用いて説明する。図2(f)において、ブロックA、BがブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは4×4の大きさを有し、ブロックA、Bは、8×8の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックAの有意係数の個数の1/4の値を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックBの有意係数の個数の1/4の値を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックAの有意係数の個数の1/4の値と、ブロックBの有意係数の個数の1/4の値との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。
第7の例を図2(g)を用いて説明する。図2(g)において、ブロックA1、A2、B1、B2がブロックCの左および上に位置する周辺ブロックとなる。ここでブロックCは4×4の大きさを有し、ブロックA1、A2、B1、B2、4×8の大きさを有するとする。この場合、ブロックCの左に位置するブロックの有意係数の個数として、ブロックA2の有意係数の個数の1/2の値を用い、ブロックCの上に位置するブロックの有意係数の個数として、ブロックB1の有意係数の個数の1/2の値を用いる。そして、ブロックCの左および上に位置するブロックの有意係数の個数の平均値、すなわちここでは、ブロックA2の有意係数の個数の1/2の値と、ブロックB1の有意係数の個数の1/2の値との平均値を求め、この平均値により、ブロックCの有意係数の個数を符号化(復号化)する際の可変長符号化(復号化)テーブルを決定する。ここで、A2の有意係数の個数の1/2の値を用いる代わりに、ブロックA1、A2の有意係数の個数の和の1/4の値や、ブロックB1の有意係数の個数の1/2の値を用いる代わりに、ブロックB1、B2の有意係数の個数の和の1/4の値、等を用いても良い。
次に、符号列生成部104または可変長復号化部311において、CABAC方式によって、各ブロックが有意係数を有するか否かを示すビット(CBPビット)を符号化または復号化する方法について説明する。
各ブロックのCBPビットを符号化または復号化する場合、周辺ブロックのCBPビットを参照する。ここでは、周辺ブロックとして、対象ブロックの上および左に位置するブロックを用いる場合について説明する。周辺ブロックがすべて画面内にあり、かつ同じスライス内であり、符号化(復号化)対象ブロックと同じ種類であるとすると、対象ブロックのCBPビットを符号化または復号化する際には、周辺ブロックの有意係数の有無によって可変長符号化(復号化)の際の確率テーブルを決定する。この場合には、対象ブロックの左に位置するブロックの有意係数の個数の合計値が0であるか否か、および対象ブロックの上に位置するブロックの有意係数の個数の合計値が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、対象ブロックのCBPビットを算術符号化する際に用いる確率テーブルを4通りの中から選択する。ここで、対象ブロックの有意係数の最大個数と、周辺ブロックの有意係数の最大個数が異なる場合、対象ブロックと周辺ブロックの有意係数の最大個数を一致させるように、CBPビットを求める。以下では図2を用いて説明するが、図2においてブロックCが可変長符号化または可変長復号化を施そうとしているブロックであるとする。
第1の例を図2(a)を用いて説明する。図2(a)において、ブロックA1、A2、B1、B2はそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックA1とA2との有意係数の個数の合計値が0であるか否か、およびブロックB1とB2との有意係数の個数の合計値が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA1とA2との有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックA1(またはブロックA2)の有意係数の個数が0であるか否かという判断基準や、ブロックB1とB2との有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックB1(またはブロックB2)の有意係数の個数が0であるか否か、という判断基準を用いても良い。
第2の例を図2(b)を用いて説明する。図2(b)において、ブロックA1、A2、A3、A4、B1、B2、B3、B4はそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックA1、A2、A3、A3の有意係数の個数の合計値が0であるか否か、およびブロックB1、B2、B3、B4との有意係数の個数の合計値が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA1、A2、A3、A4の有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックCに隣接するブロックA2とA4の有意係数の個数の和が0であるか否かという判断基準や、ブロックB1、B2、B3、B4の有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックCに隣接するブロックB3とB4との有意係数の個数の和が0であるか否か、という判断基準を用いても良い。
第3の例を図2(c)を用いて説明する。図2(c)において、ブロックA、BはそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックAの有意係数の個数が0であるか否か、およびブロックBの有意係数の個数が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA(ブロックB)の有意係数の個数が0であるか否か、という判断基準を用いる代わりに、ブロックA(ブロックB)の有意係数の個数の1/2が0であるか否かという判断基準や、ブロックA(ブロックB)の有意係数の個数が所定値以上であるか未満であるかという判断基準を用いても良い。
第4の例を図2(d)を用いて説明する。図2(d)において、ブロックA1、A2、B1、B2はそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックA1とA2との有意係数の個数の和が0であるか否か、およびブロックB1とB2との有意係数の個数の和が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA1とA2(ブロックB1とB2)の有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックA1とA2(ブロックB1とB2)の有意係数の個数の和の1/2が0であるか否かという判断基準や、ブロックA1とA2(ブロックB1とB2)の有意係数の個数が所定値以上であるか未満であるかという判断基準を用いても良い。
第5の例を図2(e)を用いて説明する。図2(e)において、ブロックA1、A2、A3、A4、B1、B2、B3、B4はそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックA1とA2との有意係数の個数の和が0であるか否か、およびブロックB3とB4との有意係数の個数の和が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA1とA2の有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックA1、A2、A3、A4の有意係数の個数の和、またはその和の1/2が0であるか否か、または所定値以上であるか未満であるか、という判断基準や、ブロックB3とB4の有意係数の個数の和が0であるか否か、という判断基準を用いる代わりに、ブロックB1、B2、B3、B4の有意係数の個数の和、またはその和の1/2(切り捨て値)が0であるか否か、または所定値以上であるか未満であるか、という判断基準等を用いても良い。
第6の例を図2(f)を用いて説明する。図2(f)において、ブロックA、BはそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックAの有意係数の個数が0であるか否か、およびブロックBの有意係数の個数が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA(ブロックB)の有意係数の個数が0であるか否か、という判断基準を用いる代わりに、ブロックA(ブロックB)の有意係数の個数の1/4が0であるか否かという判断基準や、ブロックA(ブロックB)の有意係数の個数が所定値以上であるか未満であるかという判断基準等を用いても良い。
第7の例を図2(g)を用いて説明する。図2(g)において、ブロックA1、A2、B1、B2はそれぞれブロックCの左および上に位置する周辺ブロックである。この場合、ブロックA2の有意係数の個数が0であるか否か、およびブロックB1の有意係数の個数が0であるか否か、の4通りの組合せのいずれであるかを求め、それによって、ブロックCのCBPビットを算術符号化する際に用いる確率テーブルを選択する。またこの場合、ブロックA2(ブロックB1)の有意係数の個数が0であるか否か、という判断基準を用いる代わりに、ブロックA2(ブロックB1)の有意係数の個数の1/2が0であるか否かや、ブロックA2(ブロックB1)の有意係数の個数が所定値以上であるか未満であるか、という判断基準や、ブロックA1とA2(ブロックB1とB2)の有意係数の個数の和、またはその和の1/2(切り捨て値)が0であるか否か、または所定値以上であるか未満であるか、という判断基準等を用いても良い。
次に、符号列生成部104または可変長復号化部311において、CABAC方式によって、ブロック内の各係数が有意係数であるか否かを示すビットの符号化方法について説明する。ブロック内の係数は、従来例の説明において図6を用いて説明したように、所定の走査順序で並べ替えたのち、SIGビットとLASTビットとを用いて表現し、これらのビットを算術符号化するとする。
第1の例では、SIGビットおよびLASTビットを算術符号化する際の確率テーブルを、ブロックの大きさ別に用意する。すなわち、4×4ブロック用の確率テーブル、4×8ブロック用の確率テーブル、8×4ブロック用の確率テーブル、8×8ブロック用の確率テーブル、といったように確率テーブルを用意する。そして各ブロックの種類毎に、各係数位置(走査順での位置)毎に確率テーブルを用意する。したがって例えば、4×4ブロックに対しては、SIGビット、LASTビットのそれぞれに対して確率テーブルが15個ずつ用いられ、8×8ブロックに対しては、SIGビット、LASTビットのそれぞれに対して確率テーブルが63個ずつ用いる。これは最終位置に有意係数が存在する場合、この係数は符号化する必要がないためである。
第2の例では、SIGビットおよびLASTビットを算術符号化する際の確率テーブルを、ブロックの大きさに関係なく1組のテーブルとする。すなわち、最大のブロックサイズに合わせて確率テーブルを用意する。ここで、最大のブロックサイズが8×8であるとすると、SIGビット、LASTビットのそれぞれに対して確率テーブルが63個ずつ用いられる。そして、4×4ブロックに対しては、最初の15個の確率テーブルを用い、4×8ブロックや8×4ブロックに対しては、最初の31個の確率テーブルを用いる。
以上のように、本発明の可変長符号化方法および可変長復号化方法は、CAVLC方式によって、各ブロックの有意係数の個数を符号化する場合、符号化対象ブロックの大きさと、周辺ブロックの大きさとが異なる場合には、周辺ブロックの有意係数の個数を、符号化対象ブロックと周辺ブロックとの大きさの比に基づいて変換し、この変換された値を可変長符号化テーブルの決定に用いる。
以上のような動作により、符号化対象ブロックの大きさと、周辺ブロックの大きさとが異なる場合であっても、符号化対象ブロックの大きさに応じた可変長テーブルの決定を行うことができ、符号化効率の向上を図ることが出来る。
また、本発明の可変長符号化方法は、CABAC方式によって、各ブロックが有意係数を有するか否かを示すビット(CBPビット)を符号化する場合、符号化対象ブロックの大きさと、周辺ブロックの大きさとが異なる場合には、周辺ブロックの有意係数の有無を、符号化対象ブロックと周辺ブロックとの大きさの比に基づいて変換し、この変換された値をCABAC方式において用いる確率テーブルの決定に用いる。
以上のような動作により、符号化対象ブロックの大きさと、周辺ブロックの大きさとが異なる場合であっても、符号化対象ブロックの大きさに応じた確率テーブルの決定を行うことができ、符号化効率の向上を図ることが出来る。
また、本発明の可変長符号化方法は、CABAC方式によって、ブロック内の各係数が有意係数であるか否かを示すビットの符号化方法する場合、符号化対象ブロックの大きさ別に確率テーブルを用意し、ブロックサイズ毎に異なる組の確率テーブルを用意する。または、符号化対象ブロックの最大ブロックサイズに合わせて確率テーブルを用意し、ブロックの大きさの違いに関わらず同じ確率テーブルの組を用いる。
以上のような動作により、ブロックが複数の大きさを有する場合であっても、ブロックの大きさ別に確率テーブルの組を持つことにより、符号化効率の向上を図ることができる。また、ブロックの大きさの最大値に合わせて確率テーブルを用意し、ブロックの大きさの違いに関わらず同じ確率テーブルの組を用いることにより、確率テーブルの数を減らすことができ、メモリサイズを小さくすることができる。
なお、本実施の形態においては、マクロブロックは水平16×垂直16画素の単位で、動き補償は16×16から4×4画素のブロック単位で処理する場合について説明したが、これらの単位は別の画素数でも良い。
また、本実施の形態においては、周波数変換は8×8、8×4、4×8、4×4のいずれかのブロック単位で処理する場合について説明したが、これらの単位は別の画素数でも良い。
また、本実施の形態においては、符号化対象ブロックの周辺ブロックとして、左および上に位置するブロックを参照して、可変長符号化テーブルや確率テーブルを決定する場合について説明したが、これらの周辺ブロックは、他のブロックであっても良い。例えば、右上や左上のブロック等を用いる方法、等がある。
また本実施の形態においては、CAVLC方式の説明においては、図4に示す3つの可変長符号化テーブルを用いる場合について説明したが、可変長符号化テーブルの個数およびテーブルの構成については、図4に限るものではない。また、周辺ブロックの有意係数の個数に対するしきい値として、N/8、N/4といった値を用いる場合について説明したが、これらの値は他の値であっても良い。また、符号化対象ブロックの大きさ毎に異なるしきい値を用いても良い。
また、本実施の形態では、周辺ブロックが画面内にあり、かつ同じスライス内である場合について説明したが、これらの周辺ブロックがこの条件を満たさない場合には、条件を満たす周辺ブロックのみを使って、可変長符号化テーブルや確率テーブルの決定を行えばよい。
(実施の形態2)
次に、インタレース信号に対してマクロブロック毎、又はMBP(マクロブロックペア;以下MBPと記す)毎にフレーム構造又はフィールド構造が混在する場合において動画像符号化及び動画像復号化を行う場合に、CAVLC方式又はCABAC方式を用いてコンテキストを決定する方法について説明する。ここでMBPは、上下に隣接する2つのマクロブロックをまとめた単位であり、詳しい構成は後述する。
図7は、本実施の形態2に係る動画像符号化装置の構成を示す機能ブロック図である。本実施の形態2においては、上述した実施の形態1に係る動画像符号化装置に示す構成に加えて、ブロックカウンタ701が備えられている。
このブロックカウンタ701は、前記フレームメモリ101に対して、可変長符号化の対象となるブロック単位での出力を指示し、また、前記符号列生成部104に対して、その対象ブロックがMBPの境界であるか否かの指示を行う。また、モード選択部109では、当該MBPをフレーム構造とフィールド構造のいずれで符号化するかを決定し、その結果を符号列生成部104に対して出力する。ブロックカウンタ701から出力されるMBPの境界情報、およびモード選択部109から出力されるMBPの構造情報とにより、符号列生成部104は、本実施の形態2に係る対象ブロックの可変長符号化をスタートさせる。なお、動画像符号化装置の全体的な動作は、上述した動作と同様である。
図8は、フレーム構造で符号化されるMBPのデータ構造とフィールド構造で符号化されるMBPのデータ構造との関係を示す説明図である。同図において、白丸は奇数水平走査線上の画素を示し、斜線でハッチングした黒丸は偶数水平走査線上の画素を示している。入力画像を表す各フレームからMBPを切り出した場合、図8の中央に示すように、奇数水平走査線上の画素と偶数水平走査線上の画素とは垂直方向に交互に配置されている。このようなMBPをフレーム構造で符号化する場合、当該MBPは2つのマクロブロック1およびマクロブロック2毎に処理される。また、フィールド構造で符号化する場合、当該MBPは、水平走査線方向にインタレースした場合のトップフィールドを表すマクロブロックMBtとボトムフィールドを表すマクロブロックMBbとに分けられる。
図9は、本実施の形態2に係るCAVLC方式でコンテキストを決定し、対応するVLCテーブルを決定する場合における計算手順の大きな流れを示すフローチャートである。
なお、符号化対象ブロックCの周辺ブロックであるブロックA及びブロックBの位置関係は、前記図5と同様のものとして説明する。また、符号化対象ブロックCと周辺ブロックA、Bとは、4×4画素(係数)の大きさを有し、各ブロックの有意係数の個数の最大値は16として説明する。また、符号化対象ブロックCの左に位置する周辺ブロックAの有意係数の個数をNL、符号化対象ブロックCの上に位置する周辺ブロックBの有意係数の個数をNUとする。
まず、符号列生成部104は、符号化対象ブロックCの左に位置する対象ブロックAの有意係数の個数NLを決定する(ステップ901)。次に、符号化対象ブロックCの上に位置する対象ブロックBの有意係数NUの個数を決定し(ステップ902)、最後に、それらNLとNUとを利用することにより、対象ブロックの有意係数の個数Nを決定する(ステップ903)。
なお、Nの決定は後述する方法により行い、Nの値に対応するVLCテーブルを可変長符号に用いるVLCテーブルとして決定する。
ここで、最終的に決定された有意係数の個数NとVLCテーブルとの関係は、例えば、図10に示される表の通りである。ここでは、有意係数の個数Nが0から2の場合には、図4に示されたVLC0のテーブルを用い、有意係数の個数Nが3から10の場合には、VLC1のVLCテーブルを用い、有意係数の個数Nが11から16の場合には、VLC2のVLCテーブルを用いることが示されている。
以下、図9に示されたフローチャートにおける各ステップの詳細な手順を説明する。
図11は、図9におけるステップ901、つまり、周辺ブロックAの有意係数の個数NLを求める計算手順((a)及び(b)の2通り)の詳細を示すフローチャートである。
まず、図11(a)を用いて第1の動作手順を説明すると、符号列生成部104は、符号化対象ブロックCの左に位置する周辺ブロックAが同じMBP内に位置するか調べ(ステップ1101)、同じMBP内であるならば、それら2つのブロックは同一タイプであるので、周辺ブロックAの有意係数の個数NLとして、NL=Num(A)で特定する(ステップ1104)。ここでNum(x)は、ブロックxの有意係数の個数を示す。また、タイプとは、対象のブロックがフィールド構造で符号化されているかフレーム構造で符号化されているかの符号化構造を指す。
そして、周辺ブロックAが同じMBP内に位置しないと判断した場合には、周辺ブロックAが対象ブロックCと同じタイプのMBPかを調べる(ステップ1102)。その結果、周辺ブロックAと対象ブロックCとが同じタイプのMBPである場合には、NL=Num(A)(ステップ1104)とし、それらのタイプが異なる場合には、NL=(Num(A)+Num(A´))/2として算出する(ステップ1103)。なお、周辺ブロックA´は、ブロックAに対応するブロックのことであり、その詳細な位置関係については後述する。
次に、図11(b)を用いて第2の動作手順を説明すると、符号化対象ブロックCの左に位置する周辺ブロックAが同じMBP内に位置するか調べ(ステップ1101)、同じMBP内であるならば、周辺ブロックAの有意係数の個数を用いて、NL=Num(A)とし(ステップ1104)、周辺ブロックAが同じMBP内に位置しないと判断された場合には、周辺ブロックAは、対象ブロックCと同じタイプのMBPか調べる(ステップ1102)。そして、周辺ブロックAは、対象ブロックCと同じタイプのMBPである場合には、NL=Num(A)(ステップ1104)とし、それらのタイプが異なる場合には、NL=N・A(Not Available;不定)とする(ステップ1105)。
図12は、符号化対象ブロックCがフィールド構造及びフレーム構造である場合における周辺ブロックA及びA´の配置の一例を示す図である。
図12(a)は、符号化対象ブロックCがフィールド構造で符号化されたMBP1201に属し、周辺ブロックAがフレーム構造で符号化されたMBP1202に属する場合を示している。周辺ブロックA´は、周辺ブロックAの下に位置することとなる。これは、図8に示されたフレーム構造及びフィールド構造のMBPから分かるように、各ブロックに属する画素の走査線が同一となるように、対応関係が決定されているからである。つまり、ブロックCに属する走査線は、ブロックA及びA´に分散されるので、ブロックCの有意係数の個数を決定するのに用いるNLとして、ブロックA及びA´の有意係数の個数を採用している。
一方、図12(b)は、符号化対象ブロックCがフレーム構造で符号化されたMBP1203に属し、周辺ブロックAがフィールド構造で符号化されたMBP1204に属する場合を示している。周辺ブロックA´は、周辺ブロックが属するMBの下に位置するMBにおける同一の相対位置に位置する。これは、上記図12(a)と同一の理由、つまり、ブロックCに属する走査線は、ブロックA及びA´に分散されるので、ブロックCの有意係数の個数を決定するのに用いるNLとして、ブロックA及びA´の有意係数の個数を採用するためである。
図13は、図9におけるステップ902、つまり、CAVLC方式を用いて周辺ブロックBの有意係数の個数NUを求める計算手順((a)及び(b)の2通り)の詳細を説明するフローチャートである。
第1の計算手順を示す図13(a)では、符号列生成部104は、周辺ブロックBに位置するブロック又はマクロブロックが同じMBP内に位置するか調べる(ステップ1301)。同じMBP内に位置する場合には、それらブロックは同一タイプとなるので、周辺ブロックBの有意係数の個数NUとして、NU=Num(B)とする(ステップ1305)。そして、同じMBP内に位置しない場合には、符号化対象ブロックCがフレーム構造かを調べる(ステップ1302)。フレーム構造でなくフィールド構造である場合には、続いて周辺ブロックBがフレーム構造か否かを調べ(ステップ1303)、周辺ブロックBがフレーム構造である場合には、周辺ブロックBの有意係数の個数NUとして、NU=Num(B)(ステップ1305)とする。また、周辺ブロックBがフィールド構造の場合には、有意係数の個数Nuとして、Nu=(Num(B)+Num(B´))/2として算出する(ステップ1308)。
そして、対象ブロックCが前記フィールド構造の場合には、周辺ブロックBがフィールド構造か否かを調べ(ステップ1304)、周辺ブロックBがフィールド構造の場合には、有意係数の個数NUとして、NU=Num(B´)(ステップ1306)とする。一方、周辺ブロックBがフレーム構造の場合には、有意係数の個数Nuとして、NU=Num(B)又はNU=(Num(B)+Num(B´))/2として算出する(ステップ1307)。そして、前記各ステップを経て前記ステップ803へ続く。
また、第2の計算手順を示す図13(b)では、周辺ブロックBに位置するブロック又はマクロブロックが同じMBP内に位置するか調べ(ステップ1301)、同じMBP内に位置する場合には、それらブロックは同一タイプであるので、周辺ブロックBの有意係数の個数NUとして、NU=Num(B)とする(ステップ1305)。そして、同じMBP内に位置しない場合には、符号化対象ブロックCはフレーム構造かを調べ(ステップ1302)、フレーム構造でない場合には、続いて、周辺ブロックBがフレーム構造か否かを調べ(ステップ1303)、周辺ブロックBがフレーム構造である場合には、有意係数の個数NUとして、NU=N・A(不定)(ステップ1305)とする。また、周辺ブロックBがフィールド構造の場合には、有意係数の個数として、Nu=(Num(B)+Num(B´))/2として算出する(ステップ1308)。そして、対象ブロックCが前記フィールド構造の場合には、周辺ブロックBがフィールド構造か否かを調べ(ステップ1304)、周辺ブロックBがフィールド構造の場合には、有意係数の個数NUとして、NU=Num(B´)(ステップ1306)とする一方、周辺ブロックBがフレーム構造の場合には、有意係数の個数Nuとして、NU=N・A(不定)とし(ステップ1307)、前記ステップ903へ続く。
図14は、符号化対象ブロックCがフィールド構造及びフレーム構造である場合における周辺ブロックB及びB´の配置の一例を示す図である。
図14(a)は、符号化対象ブロックCがフィールド構造で符号化されたMBP1401に属し、周辺ブロックBがフレーム構造で符号化されたMBP1402に属する場合を示している。周辺ブロックB´は、周辺ブロックB上に位置する。これは、図8に示されたフレーム構造及びフィールド構造のMBPから分かるように、フィールド構造のブロックCは、空間的な大きさとして、フレーム構造の2つの縦に連続するブロックB及びB´と同一となるので、ブロックCの有意係数の個数を決定するのに用いるNUとして、ブロックB及びB´の有意係数の個数を採用している。ただし、空間的にはブロックCとブロックB´には連続性はないため、S1307に示すように、NU=Num(B)又はNU=(Num(B)+Num(B´))/2と2通りの計算方法が考えられる。
一方、図14(b)は、符号化対象ブロックCがフィールド構造で符号化されたMBP1401に属し、周辺ブロックBもフィールド構造で符号化されたMBP1403に属する場合を示している。周辺ブロックB´は、周辺ブロックBが属するMBの上に位置するMBにおける同一の相対位置に位置する。これは、ブロックC及びB´は同一の種類のフィールド(トップフィールド/ボトムフィールド)構造で符号化されたMBに属するので、ブロックCの有意係数の個数を決定するのに用いるNUとして、ブロックB´の有意係数の個数を採用するためである。
さらに一方、図14(c)は、符号化対象ブロックCがフレーム構造で符号化されたMBP1404に属し、周辺ブロックがフィールド構造で符号化されたMBP1403に属する場合を示している。周辺ブロックB´は、周辺ブロックBが属するMBの上に位置するMBにおける同一の相対位置に位置する。これは、ブロックB及びB´とはMBPにおける空間位置が同一領域であるので、ブロックCの有意係数の個数を決定するのに用いるNUとして、ブロックB及びB´の有意係数の個数を採用するためである。
次に、図15は、図9におけるステップ903、つまり、本実施の形態2に係るVLCテーブルの決定手順((a)及び(b)の2通り)の詳細を示すフローチャートである。
第1の決定手順を示す図15(a)において、符号列生成部104は、まず符号化対象ブロックCの有意係数の個数Nを、対象ブロックB及びAの有意係数の個数NL及びNUを用いて、N=(NL+NU)/2により決定する(ステップ1501)。次に、このNと前記図10に示すテーブルを用いてVLCテーブルを決定することが可能となる(ステップ1502)。
また、第2の決定手順を示す図15(b)においては、符号列生成部104は、まずNL、NUのいずれかがN・A(不定)かを調べ(ステップ1503)、NLとNUとが不定の場合には、例えば、N=0のVLCテーブルを用いる等のデフォルトを採用し(ステップ1504)、一方、NUのみが不定の場合には、N=NLとし、そのNに対応するVLCテーブルを決定し(ステップ1505)、さらに一方、NLのみが不定の場合には、N=NUとし、そのNによりVLCテーブルを決定し(ステップ1506)、そして、NL及びNUのいずれも不定でない場合、すなわちNL及びNUが共に決定している場合には、「その他」を採用し、N=(NL+NU)/2として算出し、VLCテーブルを決定することができる(ステップ1507)。
次に、本実施の形態2に係るCABAC方式のコンテキストに用いる確率テーブルの決定手順について説明する。
図16は、本実施の形態2に係るCABAC方式でコンテキストを決定し、対応する確率テーブルを決定する場合における計算手順の大きな流れを示すフローチャートである。符号列生成部104は、まず、符号化対象ブロックCの左に位置する周辺ブロックAのコンテキスト値ctxAを決定し(ステップ1601)、次に符号化対象ブロックCの上に位置する周辺ブロックBのコンテキスト値ctxBを決定する(ステップ1602)。そして、これらのctxA及びctxBの値を利用することにより、符号化対象ブロックCのコンテキスト値ctxCを決定する(ステップ1603)。
そして、決定したコンテキスト値ctxCに対応する確率テーブルを用いて可変長符号化を行う。
以下、図16に示されたフローチャートにおける各ステップの詳細な手順を説明する。
図17は、図16におけるステップ1601、つまり、CABAC方式を用いて周辺ブロックAのコンテキスト値ctxAを求める計算手順((a)及び(b)の2通り)の詳細を示すフローチャートである。ここで、コンテキスト値は、どのような情報(CBPビット、マクロブロックの符号化モード、参照ピクチャ番号、差分量子化パラメータ、等)を扱うかにより、取りうる値が異なる。例えばCBPビット(有意係数を有するか否かを示すビット)を符号化する場合には、コンテキストは各ブロックの有意係数の有無により0と1とに分けられ、例えば、有意係数がある場合には1となり、有意係数が含まれない場合には0となる。従って、ここでのコンテキスト値は有意係数の存否に対応する。その他、マクロブロックの符号化モードを符号化する場合には、コンテキストは各ブロックがスキップブロックであるか、ダイレクトモードで符号化されたブロックであるか、等により、それぞれ0と1に分けられる。また、参照ピクチャ番号、差分量子化パラメータは0であるか否かにより0と1に分けられる。
図17(a)を用いて第1の計算手順を説明すると、符号列生成部104は、周辺ブロックAに位置するブロック又はマクロブロックが符号化対象ブロックCと同じMBP内かを調べる(ステップ1701)。同じMBP内であれば、周辺ブロックAのコンテキスト値ctxAとして、ctxA=ctx(A)(ステップ1704)とする。ここでctx(x)はブロックxのコンテキスト値を示す。
また、周辺ブロックAが符号化対象ブロックCと同じMBP内でない場合には、周辺ブロックAが符号化対象ブロックCと同じ構造のタイプのMBPか否かを調べる(ステップ1702)。この場合、同じ構造のタイプであれば、周辺ブロックAのコンテキスト値ctxAとして、ctxA=ctx(A)(ステップ1704)とする。一方、周辺ブロックAと対象ブロックCとの構造が異なるタイプのブロックである場合には、周辺ブロックAのコンテキスト値ctxAとして、コンテキスト値ctxA=F1(ctx(A),ctx(A´))と算出する(ステップ1703)。ここで、F1は、何らかの演算操作を施す関数であり、例えば、F1(a,b)=a+b、a+2b、a&bである。そして、前記ステップ1602へ続く。
そして、図17(b)を用いて第2の動作手順について説明すると、周辺ブロックAに位置するブロック又はマクロブロックが符号化対象ブロックCと同じMBP内かを調べ(ステップ1701)、同じMBP内であれば、周辺ブロックAのコンテキスト値ctxAとして、ctxA=ctx(A)(ステップ1704)とし、また、周辺ブロックAが符号化対象ブロックCと同じMBP内でない場合には、周辺ブロックAは符号化対象ブロックCと同じ構造のタイプのMBPか否かを調べる(ステップ1702)。この場合、同じ構造のタイプであれば、周辺ブロックAのコンテキスト値ctxAとして、ctxA=ctx(A)(ステップ1704)とする一方、周辺ブロックAと対象ブロックCとの構造が異なるタイプのブロックである場合には、コンテキスト値ctxAをデフォルト値に設定する(ステップ1705)。このデフォルト値としては、コンテキスト値が取りうる値のいずれかであり、例えば、0又は1である。
図18は、図16におけるステップ1602、つまり、CABAC方式を用いて周辺ブロックBのコンテキスト値を求める計算手順((a)及び(b)の2通り)の詳細を示すフローチャートである。
第1の計算手順を示す図18(a)では、まず、符号列生成部104は、周辺ブロックBに位置するブロック又はマクロブロックがMBPかを調べる(ステップ1801)。同じMBP内に位置する場合には、コンテキスト値ctxB=ctx(B)(ステップ1805)とする。そして、対象ブロックCが周辺ブロックBと同じMBP内に位置しない場合には、対象ブロックCがフレーム構造か否かを調べる(ステップ1802)。この結果、対象ブロックCがフレーム構造である場合には、周辺ブロックBがフレーム構造かを調べる(ステップ1803)。周辺ブロックBがフレーム構造である場合には、コンテキスト値ctxB=ctx(B)(ステップ1805)とする。一方、対象ブロックCがフレーム構造であり、周辺ブロックBがフィールド構造である場合には、コンテキスト値ctxB=F1(ctx(B),ctx(B´))とする(ステップ1808)。
また、対象ブロックCがフィールド構造の場合には、次に、周辺ブロックBがフィールド構造かを調べる(ステップ1804)。周辺ブロックBがフィールド構造である場合には、コンテキスト値ctxB=ctx(B´)(ステップ1806)とする。また、対象ブロックCがフィールド構造であり、周辺ブロックBがフレーム構造である場合には、コンテキスト値ctxB=ctx(B)、又はctxB=F1(ctx(B),ctx(B´))とする(ステップ1807)。なお、ここでF1の処理は上述と同様となる。そして、前記各ステップを経て前記ステップ1603へ続く。
図19は、図16におけるステップ1603、つまり、本実施の形態2に係る確率テーブルの決定手順の詳細を示すフローチャートである。
図19においては、前記図18に続くステップであり、符号列生成部104は、まず符号化対象ブロックCのコンテキスト値をctxC=F2(ctx(A),ctx(B))とする(ステップ1901)。ここで、F2は、F1と同様に何らかの演算操作を施す関数であり、例えば、F2(a,b)=a+b、a+2b、a&b、a、bである。次に、このctxCを用いることにより確率テーブルを決定することができる(ステップ1902)。
尚、上述した動画像符号化のみでなく動画像復号化において、CAVLC方法におけるVLCテーブルの決定方法、CABAC方法におけるコンテキストの決定方法は、前記図3に示す可変長復号部311における動作となり、前記符号列生成部104と同様の動作を行うものとなる。ここで、可変長復号部311において、VLCテーブルの決定、コンテキストの決定を行う際に必要となる、ブロックがMBPの境界であるか否か、またMBPがフレームまたはフィールドのいずれの構造で符号化されているかを示す情報は、符号列解析部301から得られる。
以上のように、実施の形態2に係る可変長符号化方法及び可変長復号化方法においては、CAVLC方式やCABAC方式を用いる際に、複数の周辺ブロックの有意係数の情報を用いる。従って、より効果的に符号化効率が向上するVLCテーブルや確率テーブルの選択方法を実現することができる。尚、本実施の形態2において、マクロブロックの構造のタイプをMBPごとにフレーム構造及びフィールド構造に相互に変換することができるのは言うまでもない。また、フレーム構造及びフィールド構造のいずれを選択する単位は、MBPでなくても構わず、例えばマクロブロックを単位としても良い。
また、本実施の形態においては、図9および図16を用いて説明した形態において、符号化または復号化対象ブロックの左側に位置するブロックの有意係数の個数またはコンテキストを求めた後、符号化または復号化対象ブロックの上側に位置するブロックの有意係数の個数またはコンテキストを求める場合について説明したが、これらの順序は逆であっても構わず、図9におけるS903、図16におけるS1603の決定結果には影響は及ぼさない。
さらにここで、上記実施の形態で示した可変長符号化方法や可変長復号化方法の応用例とそれを用いたシステムを説明する。
図20は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図20のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局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は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した可変長符号化装置あるいは可変長復号化装置を用いるようにすればよい。
その一例として携帯電話について説明する。
図21は、上記実施の形態で説明した可変長符号化方法と可変長復号化方法を用いた携帯電話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について図22を用いて説明する。携帯電話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に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図23に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局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の構成は例えば図22に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
このように、上記実施の形態で示した可変長符号化方法あるいは可変長復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。