以下、本発明の実施形態について図面を参照して説明する。
図1を参照して一実施形態に係る動画像符号化装置について説明する。減算器101は入力動画像信号11と予測画像信号15との差分を計算し、予測誤差信号12を出力するように構成される。減算器101の出力端は直交変換器102及び量子化器103を介して可変長符号化器111に接続される。直交変換器102は減算器101からの予測誤差信号12を直交変換し、直交変換係数を生成し、量子化器103は直交変換係数を量子化し、量子化直交変換係数情報13を出力する。可変長符号化器111は量子化器103からの量子化直交変換係数情報13を可変長符号化する。
量子化器103の出力端は逆量子化器104及び逆直交変換器105を介して加算器106に接続される。逆量子化器104は量子化直交変換係数情報13を逆量子化して、直交変換係数に変換する。逆直交変換器105は直交変換係数を予測誤差信号に変換する。加算器106は逆直交変換器105の予測誤差信号と予測画像信号15とを加算して、局部復号画像信号14を生成する。加算器105の出力端はフレームメモリ107を介して動き補償予測器108に接続される。
フレームメモリ107は局部復号画像信号14を蓄積する。設定部114は符号化対象ブロックの動き補償予測モード(予測モード)を設定する。予測モードは、1枚の参照画像を用いる単方向予測と、2枚の参照画像を用いる双方向予測とを含む。単方向予測はAVCのL0予測およびL1予測を含む。動き補償予測器108は予測器109と取得部/選択部110とを備えている。取得部/選択部110は符号化対象ブロックに隣接する符号化済みブロックから、動きベクトルを持つブロックである利用可能ブロック及び前記利用可能ブロックの数を求め、利用可能ブロックから、1つの選択ブロックを選択する。動き補償予測器108はフレームメモリ107から局部復号画像信号14と入力動画像信号11とから予測画像信号15を生成する。取得部/選択部110は符号化対象ブロックに隣接する隣接ブロックから1つのブロック(選択ブロック)を選択する。例えば、隣接ブロックのうち適切な動きベクトルを持つブロックが、選択ブロックとして選ばれる。取得部/選択部110は、選択ブロックが有する動きベクトルを動き補償予測に用いる動きベクトル16として選択し、予測器109に送る。また、取得部/選択部110は選択ブロックの選択情報17を生成し、可変長符号化器111に送る。
可変長符号化器111は、選択情報符号化部112を有する。選択情報符号化部112は、符号化済みブロック利用可能ブロックの数と等しい数のエントリーをコード表に持つように符号表を切り替えながら、選択情報17を可変長符号化する。利用可能ブロックとは、符号化対象ブロックに隣接する符号化済みブロックのうち、動きベクトルを持つブロックである。多重化器(マルチプレクサ)113は符号化された量子化直交変換係数情報及び選択情報を多重化し、符号化データを出力する。
上記構成の動画像符号化装置の作用を図2のフローチャートを参照して説明する。
まず、予測誤差信号12が生成される(S11)。この予測誤差信号12の生成においては、動きベクトルが選択され、選択された動きベクトルを用いて予測画像が生成される。この予測画像の信号、即ち予測画像信号15と入力動画像信号11との差分が減算器101により計算されることにより、予測誤差信号12が生成される。
予測誤差信号12に対して直交変換器102により直交変換が施され、直交変換係数が生成される(S12)。直交変換係数は、量子化器103により量子化される(S13)。量子化された直交変換係数情報は、逆量子化器104により逆量子化され(S14)、その後、逆直交変換器105により逆直交変換され、再生された予測誤差信号を得る(S15)。加算器106では、再生された予測誤差信号と予測画像信号15が加算されることによって、局部復号画像信号14が生成される(S16)。局部復号画像信号14はフレームメモリ107に(参照画像として)蓄積され(S17)、フレームメモリ107から読み出される局部復号画像信号は、動き補償予測器108に入力される。
動き補償予測器108の予測器109は、局部復号画像信号(参照画像)を動きベクトル16を用いて動き補償予測して、予測画像信号15を生成する。予測画像信号15は、入力動画像信号11との差分をとるために減算器101に送られ、さらに局部復号画像信号14を生成するために加算器106にも送られる。
取得部/選択部110は、動き補償予測に用いる1つの動きベクトルを隣接ブロックから選択し、選択した動きベクトル16を予測器109に送り、選択情報17を生成する。選択情報17は、選択情報符号化部112に送られる。動きベクトルを隣接ブロックから選択する際には、符号量が小さくなるような適切な動きベクトルを選択することができる。
量子化器103により量子化された直交変換係数情報13は、可変長符号化器111にも入力され、可変長符号化が施される(S18)。取得部/選択部110からは、動き補償予測に用いられた選択情報16が出力され、選択情報符号化部112に入力される。選択情報符号化部112では、符号化対象ブロックに隣接し、動きベクトルを持つ符号化済みブロックである利用可能ブロックの数と等しい数のエントリーをコード表に持つように符号表が切り替えられ、選択情報17が可変長符号化される。可変長符号化器111からの量子化直交変換係数情報及び選択情報が多重化器113によって多重化され、符号化データ18のビットストリームが出力される(S19)。符号化データ18は、図示しない蓄積系あるいは伝送路へ送出される。
図2のフローチャートにおいて、ステップS14~S17のフローとステップS18及びS19のフローは置き換えることができる。即ち、量子化ステップS13に次いで可変長符号化ステップS18及び多重化ステップS19が行われ、多重化ステップS19に対で逆量子化ステップS14~記憶ステップS17を行うことができる。
次に、図3に示すフローチャートを用いて取得部/選択部110の作用について説明する。
まず、フレームメモリ107を参照して、符号化対象ブロックに隣接する、動きベクトルを持った符号化済みブロックである利用可能ブロック候補を探索する(S101)。利用可能ブロック候補が探索されると、これら利用可能ブロック候補の動き補償予測のブロックサイズが判別される(S102)。次に、利用可能ブロック候補が単方向又は双方向予測かが判別される(S103)。判別結果と符号化対象ブロックの予測モードに基づいて、利用可能ブロック候補の中から利用可能ブロックを抽出する。抽出された利用可能ブロックの中から1つの選択ブロックを選択し、選択ブロックを特定する情報を選択情報として求める(S104)。
次に、図4A~4Cを参照してブロックサイズの判別(S102)について説明する。
本実施形態で用いる隣接ブロックは、符号化対象ブロック符号化対象ブロックの左、左上、上、右上に位置するブロックとする。そのため、符号化対象ブロックがフレームの一番左上に位置する場合は、符号化対象ブロックに隣接する利用可能ブロックはないため、この符号化対象ブロックには本発明は適用できない。符号化対象ブロックが画面の上端にある場合、利用可能ブロックは左の1ブロックのみとなり、符号化対象ブロックが画面の左端であり、かつ右端でない場合、利用可能ブロックは符号化対象ブロックの上、右上の2ブロックとなる。
マクロブロックサイズが16x16サイズの場合、隣接ブロックの動き補償予測のブロックサイズは、図4A~4Cに示されるように16x16サイズ、16x8サイズ、8x16サイズ、8x8サイズの4種類がある。これら4種類を考慮した際に、利用可能ブロックに成り得る隣接ブロックは、図4A~4Cに示すような20種類となる。即ち、図4Aに示される16x16サイズで4種類、図4Bに示される16x8サイズ及び8x16サイズで10種類、図4Cに示される8x8サイズで6種類となる。ブロックサイズの判別(S102)では、これら20種類のブロックの中からブロックサイズに応じて、利用可能ブロックを探索する。例えば、利用可能ブロックのサイズを16x16のみとした場合、このブロックサイズで判定された利用可能ブロックは、図4Aに示すように16x16サイズの4種類のブロックである。即ち、利用可能ブロックは、符号化対象ブロックの左上側のブロックと、符号化対象ブロックの上側のブロックと、符号化対象ブロックの左側のブロックと、符号化対象ブロックの右上側のブロックである。また、マクロブロックサイズが16x16サイズ以上に拡張された場合についても、マクロブロックサイズが16x16サイズの場合と同様に利用可能ブロックと成り得る。例えば、マクロブロックサイズが32x32サイズの場合、隣接ブロックの動き補償予測のブロックサイズは、32x32サイズ、32x16サイズ、16x32サイズ、16x16サイズの4種類があり、利用可能ブロックに成り得る隣接ブロックは20種類となる。
次に、図5を参照して取得部/選択部110によって行われる、単方向又は双方向予測の判別(S103)について、例を挙げて説明する。
例えば、ブロックサイズを16x16に制限し、符号化対象ブロックに対し、隣接するブロックの単方向又は双方向予測が図5に示すような場合であったとする。単方向又は双方向予測の判別(S103)では、予測の方向に応じて利用可能ブロックを探索する。例えば、予測方向L0を含む隣接ブロックを予測方向で判定された利用可能ブロックとする。即ち、図5(a)に示される、符号化対象ブロックの上、左、右上のブロックが予測方向で判定された利用可能ブロックとなる。この場合、符号化対象ブロックの左上のブロックは使用されない。予測方向L1を含む隣接ブロックを予測方法で判定された利用可能ブロックとすると、図5(b)に示される、符号化対象ブロックの左上及び上のブロックが予測方向で判定された利用可能ブロックとなる。この場合、符号化対象ブロックの左及び右上のブロックは使用されない。予測方向L0/L1を含む隣接ブロックを予測方法で判定された利用可能ブロックとすると、図5(c)に示される、符号化対象ブロックの上のブロックのみが予測方向で判定された利用可能ブロックとなる。この場合、符号化対象ブロックの左、左上及び右上のブロックは使用されない。なお、予測方向L0(L1)は、AVCにおけるL0予測(L1予測)の予測方向に対応する。
次に、図6に示すフローチャートを参照して選択情報符号化部112について説明する。
符号化対象ブロックに隣接する隣接ブロックの中から、動きベクトルを持った符号化済みブロックである利用可能ブロックを探索し、ブロックサイズ及び単方向又は双方向予測で判定された利用可能ブロック情報を取得する(S201)。この利用可能ブロック情報を用いて、図8に示されるような利用可能ブロックの数に応じた符号表の切り替えを行う(S202)。切り替えられた符号表を用いて、取得部/選択部110より送られた選択情報17を可変長符号化する(S203)。
次に、図7を参照して選択情報のインデクスの一例を説明する。
図7(a)に示すように利用可能ブロックがない場合、本発明はこのブロックに適用不可能なため、選択情報は送らない。図7(b)に示すように利用可能ブロックが1つの場合、符号化対象ブロックの動き補償に用いる利用可能ブロックの動きベクトルは一意に決まるため、選択情報は送らない。図7(c)に示すように利用可能ブロックが2つの場合、インデクス0または1の選択情報を送る。図7(d)に示すように利用可能ブロックが3つの場合、インデクス0、1または2の選択情報を送る。図7(e)に示すように利用可能ブロックが4つの場合、インデクス0、1、2または3の選択情報を送る。
また、利用可能ブロックのインデクスのつけ方の一例として、符号化対象ブロックの左、左上、上、右上の順に、利用可能ブロックにインデクスをつけた例を図7に示す。即ち、使用されないブロックを除いて使用されるブロックに対して連番でインデックスをつける。
次に、図8を用いて選択情報17の符号表について説明をする。
選択情報符号化部112では、利用可能ブロックの数に応じて符号表の切替を行う(S202)。前述したとおり、選択情報17を符号化する必要があるのは、利用可能ブロックが2つ以上の場合である。
まず、利用可能ブロックが2つの場合は、インデクスは0と1が必要となり、符号表は図8の左側に示す表となる。利用可能ブロックが3つの場合は、インデクスは0,1,2が必要となり、符号表は図8の中央に示す表となる。利用可能ブロックが4つの場合は、インデクスは0,1,2,3が必要となり、符号表は図8の右側に示す表となる。これらの符号表が利用可能ブロックの数に応じて切り替えられる。
次に、選択情報の符号化方法について説明する。
図9に本実施の形態で用いられるシンタクスの構造の概略を示す。シンタクスは主に3つのパートから成り、High Level Syntax801はスライス以上の上位レイヤのシンタクス情報が詰め込まれている。Slice Level Syntax804では、スライス毎に必要な情報が明記されており、Macroblock Level Syntax807では、マクロブロック毎に必要とされる可変長符号化された誤差信号やモード情報などが明記されている。
これらシンタックスはそれぞれさらに詳細なシンタクスで構成されており、High Level Syntax801では、Sequence parameter set syntax802とPicture parameter set syntax803などのシーケンス、ピクチャレベルのシンタクスから構成されている。Slice Level Syntax804では、Slice header syntax405、Slice data syntax406などから成る。さらに、Macroblock Level Syntax807は、macroblock layer syntax808、macroblock prediction syntax809などから構成されている。
本実施の形態で必要となるシンタクス情報は、macroblock layer syntax808であり、シンタクスを以下で説明する。
図10(a)(b)に示されるavailable_block_numは、利用可能ブロックの数を示しており、これが2以上の場合は、選択情報の符号化が必要となる。また、mvcopy_flagは動き補償予測において利用可能ブロックの動きベクトルを使用するかどうかを示すフラグであり、利用可能ブロックが1以上であり、且つこのフラグが1の場合、動き補償予測において利用可能ブロックの動きベクトルを使用することができる。さらに、mv_select_infoは選択情報を示しており、符号表は前述したとおりである。
図10(a)は、mb_typeの後に選択情報を符号化する場合のシンタックスを示している。例えばブロックサイズが16x16のみの場合、mb_typeが16x16以外ならばmvcopy_flag及びmv_select_infoは符号化する必要がない。mb_typeが16x16ならばmvcopy_flag及びmv_select_infoを符号化する。
図10(b)は、mb_typeの前に選択情報を符号化する場合のシンタックスを示している。例えばmvcopy_flagが1であるならば、mb_typeを符号化する必要はない。mv_copy_flagが0ならば、mb_typeを符号化する。
本実施の形態では、符号化のスキャン順についてはどのような順序でも構わない。例えば、ラインスキャンやZスキャンなどに対しても、本発明は適応可能である。
図11を参照して他の実施形態に係る動画像復号化装置について説明する。
図1の動画像符号化装置から出力される符号化データ18が蓄積系または伝送系を経て復号対象の符号化データ21として動画像復号化装置の逆多重化器201に入力される。逆多重化器(デマルチプレクサ)201は符号化データ21を逆多重化し、符号化データ21を量子化直交変換係数情報及び選択情報に分離する。逆多重化器201の出力端は可変長復号化器202に接続される。可変長復号化器202は量子化直交変換係数情報及び選択情報を復号する。可変長復号化器202の出力端は逆量子化器204及び逆直交変換器205を加算器206に接続される。逆量子化器204は量子化直交変換係数情報を逆量子化し、直交変換係数に変換する。逆直交変換器205は直交変換係数を逆直交変換し、予測誤差信号に生成する。加算器206は予測誤差信号を予測画像生成器207からの予測画像信号に加算し、動画像信号を生成する。
予測画像生成器207は予測器208と選択部209とを含む。選択部209は可変長復号化器202の選択情報復号化器203によって復号された選択情報23によって動きベクトルを選択し、選択動きベクトル25を予測器208に送る。予測器208はフレームメモリ210に蓄積された参照画像を動きベクトル25によって動き補償し、予測画像を生成する。
上記構成の動画像復号化装置の作用を図12のフローチャートを参照して説明する。
符号化データ21は逆多重化器201により逆多重化され(S31)、可変長復号化器202によって復号され、量子化直交変換係数情報22が生成される(S32)。また、選択情報復号化器203によって、復号対象ブロックに隣接する隣接ブロックの状態が調査され、動きベクトルを持つ隣接する符号化済みブロックである利用可能ブロックの数に応じて符号化装置の選択情報符号化部112と同様にして、符号表を図8のように切り替えて復号される。これにより、選択情報23が出力される(S33)。
可変復号化器202から出力される情報である、量子化された直交変換係数情報22は逆量子化器204に、選択情報復号部203から出力される情報である、選択情報23は選択部209にそれぞれ送られる。
量子化直交変換係数情報22は逆量子化器204によって逆量子化され(S34)、その後、逆直交変換器205により逆直交変換される(S35)。これにより、予測誤差信号24が得られる。加算器206では予測誤差信号24に予測画像信号が加算されることにより、動画像信号26が再生される(S36)。再生される動画像信号27は、フレームメモリ210に蓄積される(S37)。
予測画像生成器207では、復号化された選択情報23によって選択された、復号対象ブロックに隣接し動きベクトルを持つ既復号化ブロックである利用可能ブロックの動きベクトルを用いて、予測画像26を生成する。選択部209では、隣接ブロックの状態を調査し、隣接ブロックの利用可能ブロック情報と選択情報復号部203で復号された選択情報23から、動き補償予測に用いる動きベクトルを符号化装置の取得部/選択部110と同様にして隣接ブロックから1つ選択する。この選択された動きベクトル25を用いて、予測器208により予測画像26が生成され、動画像信号27を得るために加算器206に送られる。
本発明によれば、利用可能ブロックの数に応じた選択情報を符号化することにより、選択情報を適切な符号化テーブルを用いて送ることができ、選択情報の付加情報を削減することができる。
また、利用可能ブロックの動きベクトルを符号化対象ブロックの動き補償予測に用いることにより、動きベクトル情報に関する付加情報を削減できる。
更に、動きベクトル算出方法を固定ではなく、利用可能ブロックから適切な1つを選択することにより、ダイレクトモードに比べ動きベクトル算出の自由度が高くなる。
本発明の実施の形態に記載した本発明の手法は、コンピュータによって実行させることができ、また、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD-ROM、DVDなど)、半導体メモリなどの記録媒体に格納して頒布することもできる。
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。