本発明の実施の形態は、動画像の符号化技術に関し、特にピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化における動き情報の符号化効率を向上させる為に、処理対象のブロックの周囲の符号化済みの隣接ブロックの動きベクトルや参照先ピクチャ番号等の動き情報を処理対象のブロックの動き情報として使用することで、処理対象のブロックの動き情報を符号化せず、参照する隣接ブロックを示す付加情報を符号化することによって符号量を削減する技術に関する。
本発明の実施の形態では、等しい頻度で発生する上述のフラグmerge_lu_flagに代わり、動き情報の参照先を周辺の隣接ブロックのサイズや予測モード等の情報を用いて予測を行い、その予測により判定された参照先の隣接ブロックと、実際に符号化によって選択された隣接ブロックとの一致を表すフラグmerge_probable_flagを定義する。予測による判定率が高ければ、フラグmerge_probable_flagで表されるビットの発生確率が高くなるので、フラグを表すビット数が小さくなり、発生符号量を削減することが可能となる。
更に、本発明の別の実施の形態では、参照先の予測による参照先となる隣接ブロックの判定の一致精度が高いものとして、前述の参照先の予測との一致を表すフラグmerge_probable_flagそのものを定義せず、参照先の予測により得られた判定結果で参照先の隣接ブロックを示し、参照先の予測が不定の場合にのみmerge_lu_flagと同様の機能を有するフラグmerge_direc_flagで参照先の隣接ブロックを示すことで、フラグmerge_direc_flagによる符号量の増加をフラグmerge_probable_flagに要する符号量の削減で相殺し、相対的に符号化効率を向上させることも可能である。
以下、本発明の実施の形態に係る動画像符号化装置及び動画像復号装置について図面を参照して説明する。
図1は実施の形態に係る動画像符号化装置の構成を示すブロックである。実施の形態の動画像符号化装置は、動きベクトル検出部101、減算部102、直交変換・量子化部103、可変長符号化部104、逆量子化・逆直交変換部105、動き補償部106、重み付き予測部107、加算部108、デブロッキング・フィルタ部109、メモリ110、画面内予測部111、予測選択部112、および参照先指定部113を備える。
画面内予測部111は、入力される符号化対象ブロックと、メモリ110に格納された符号化対象ブロックに隣接する符号化済みの復号ブロック画像とから、面内予測を行い、面内予測ブロックを出力する。
参照先指定部113は、メモリ110に格納された符号化対象ブロックに隣接する複数の隣接ブロックのいずれか一つを、マージ処理を行う場合の参照先の隣接ブロックとして指定し、その参照先隣接ブロックの動きベクトルを動き補償部106に与える。
動きベクトル検出部101は、入力された画像信号と、メモリ110に格納された参照画像信号とを参照して、ピクチャ間でブロック単位にマッチングを行い動きベクトルを検出し、検出された動きベクトルを動き補償部106に与える。
動き補償部106は、動きベクトル検出部101により検出された符号化対象ブロックの動きベクトルまたは参照先指定部113により指定された隣接ブロックの動きベクトルを用いて予測画像を生成する。重み付き予測部107は、動き補償部106により生成された予測画像に適応的に重み係数を掛け算して最終的な予測画像を生成し、予測選択部112に与える。
予測選択部112は、画面内予測部111による画面内予測、動き補償部106による符号化対象ブロックの動きベクトルを利用した画像間予測、および参照先指定部113により指定された参照先隣接ブロックの動きベクトルを利用した画像間予測の中から、符号量が最小となる予測方法を一つ選択し、選択された予測方法による予測画像を減算部102と加算部108に与える。
符号量が最小となる予測方法として、参照先隣接ブロックの動きベクトルを利用した画像間予測が予測選択部112によって選択された場合、参照先指定部113は、マージ処理の参照先の隣接ブロックを予測する処理を実行し、マージ参照先の予測結果を予測選択部112に与える。予測選択部112は、参照先指定部113により予測された参照先隣接ブロックと、実際に選択された予測方法で利用された参照先隣接ブロックとが一致するかどうかを判定し、参照先隣接ブロックの予測結果の有効性を示す参照先有効情報を、選択された予測方法を示す情報とともに可変長符号化部104に供給する。
減算部102は、符号化する画像と予測画像との引き算を行い残差信号を生成し、直交変換・量子化部103に与える。直交変換・量子化部103は、残差信号に対して直交変換及び量子化を行い変換信号を生成し、可変長符号化部104と逆量子化・逆直交変換部105に与える。可変長符号化部104は、直交変換及び量子化された残差信号をエントロピー符号化する。可変長符号化部104は、予測選択部112によって生成される参照先有効情報と選択された予測方法を示す情報も符号化し、符号化画像を含むビットストリームを出力する。
逆量子化・逆直交変換部105は、直交変換・量子化部103から受け取った変換信号を逆量子化及び逆直交変換して元の残差信号に戻す。加算部108は、予測画像と残差信号を加算して復号画像を生成し、デブロッキング・フィルタ部109に与える。デブロッキング・フィルタ部109は、復号画像に対して符号化によるブロック歪を減少させる処理を施し、メモリ110に格納する。メモリ110は、復号画像や既に符号化された画像の情報を記憶する。
図2は図1の動画像符号化装置に対応した実施の形態に係る動画像復号装置の構成を示すブロックである。実施の形態の動画像復号装置は、可変長復号部201、逆量子化・逆直交変換部202、動き補償部203、重み付き予測部204、加算部205、デブロッキング・フィルタ部206、メモリ207、画面内予測部208、画面内/画面間予測選択部209、および動き情報選択部210を備える。
図2の動画像復号装置の復号処理は、図1の動画像符号化装置の内部に設けられている復号処理に対応するものであるから、図2の逆量子化・逆直交変換部202、動き補償部203、重み付き予測部204、加算部205、デブロッキング・フィルタ部206、メモリ207、および画面内予測部208の各構成は、図1の動画像符号化装置の逆量子化・逆直交変換部105、動き補償部106、重み付き予測部107、加算部108、デブロッキング・フィルタ部109、メモリ110、および画面内予測部111の各構成とそれぞれ対応する機能を有する。
可変長復号部201は、ビットストリームを復号して予測残差信号、動きベクトルに関する情報を出力し、予測残差信号を逆量子化・逆直交変換部202に与え、動きベクトルに関する情報を動き情報選択部210に、符号化モードに関する情報を画面内/画面間予測選択部209に与える。
逆量子化・逆直交変換部202は、可変長復号部201で復号された予測残差信号に対して逆直交変換及び逆量子化を行う。加算部205は、逆量子化・逆直交変換部202により逆変換された予測残差成分と、重み付き予測部204により算出された予測画像とを加算することにより、画像信号を復号し、デブロッキング・フィルタ部206に与える。デブロッキング・フィルタ部206は、復号画像に対して符号化によるブロック歪を減少させる処理を施し、メモリ207に格納する。
画面内/画面間予測選択部209は、符号化モードが画面内予測か画面間予測かを判定し、画面内予測であれば、画面内予測部208に画面内予測処理を実行するよう指示し、画面間予測であれば、動き情報選択部210に画面間予測処理を実行するよう指示する。
動き情報選択部210は、動きベクトルなどの動き情報がマージ処理によるものであるか否かを選択し、マージ処理によるものである場合、参照先有効情報にもとづいて、所定の隣接条件にもとづいて判定される隣接ブロックを参照先ブロックとして指定できるかどうかを判定する。
画面内予測部208は、入力される復号対象ブロックと、メモリ207に格納された復号対象ブロックに隣接する復号ブロック画像とから、面内予測を行い、面内予測ブロックを加算部205に渡す。
動き補償部203は、画面間予測がマージ処理でない、すなわち通常の動きベクトル検出処理によるものである場合、復号対象ブロックの復号された動きベクトルを用いて予測画像を生成する。動き補償部203は、画面間予測がマージ処理によるものであり、参照先有効情報が肯定的である場合、動き情報の参照先予測により予測される参照先の隣接ブロックの動きベクトルを用いて予測画像を生成する。
重み付き予測部204は、動き補償部203により生成された予測画像に適応的に重み係数を掛け算して最終的な予測画像を生成し、加算部205に与える。
実施の形態に係る参照先の隣接ブロックの予測方法は、図1の動画像符号化装置の予測選択部112及び図2の動画像復号装置の動き情報選択部210において実施される。
動画像符号化装置の予測選択部112では、通常の動きベクトル検出処理により検出された動き情報またはマージ処理により選択された隣接ブロックの動き情報に基づく画面間予測、および画面内予測の中から、発生符号量が最も少ないか、画質が最も良い、あるいはその両方を満たす符号化モードが一つ選択される。さらに、選択された符号化モードが画面間予測であれば、動き情報が通常の動きベクトル検出処理により検出されたものであるか、マージ処理により選択されたものであるかを判定し、マージ処理の場合は、動き情報の参照先予測が行われ、予測された参照先の隣接ブロックとマージ処理により選択された隣接ブロックとの同一性を判定し、その結果が参照先有効情報として符号化・伝送される。マージ処理でない場合は、通常の動きベクトルの予測が行われ、動きベクトルと予測動きベクトルとの差分動きベクトルとその他の動き情報が符号化・伝送される。
一方、動画像復号装置の動き情報選択部210では、可変長復号部201にてビットストリームから復号された符号化モードや動き情報に基づいて、画面内/画面間予測選択部209にて画面間予測と判定された場合、更にその画面間予測がマージ処理によるものか否かが判定され、マージ処理によるものであると判定された場合、動き情報の参照先予測が行われ、この予測方法により予測された参照先の隣接ブロックと復号された付加情報で指定される隣接ブロックとの同一性を判定することで動き情報を取得する。以下の実施例では、動き情報の参照先予測の詳細について説明する。
[実施例1]
動き情報の参照先予測方法の実施例を説明する前に、本実施例において使用する用語を説明しておく。
(符号化ブロックについて)
実施の形態では、図3に示されるように、画面内を同一サイズの正方の矩形ブロックにて均等分割する。このブロックを符号化ブロックと呼び、符号化及び復号を行う際の処理の基本となる。符号化ブロックは画面内のテクスチャに応じて、符号化処理を最適にすべく、符号化ブロック内を4分割して、ブロックサイズの小さい符号化ブロックにすることが出来る。図3で示される画面内を均等サイズで分割される符号化ブロックを最大符号化ブロックと呼び、その内部を符号化条件に応じて4分割したものを総じて符号化ブロックとする。符号化ブロックをこれ以上4分割出来ない最小のサイズとなる符号化ブロックを最小符号化ブロックと呼ぶこととする。
(予測ブロックについて)
画面内をブロックに分割して動き補償を行う場合、動き補償のブロックサイズをより小さくした方が、よりきめ細かい予測を行うことが出来ることから、いくつかのブロックサイズの中から最適なものを選択して、ブロック内部を分割して動き補償を行う仕組みを取り入れている。この動き補償を行うブロックを予測ブロックと呼ぶ。予測ブロックは符号化ブロックと同一のサイズで表され、動き補償に応じて、予測ブロック内部を分割せず1ブロックとみなす場合を最大とし、水平或いは垂直方向に2分割したもの、水平と垂直の均等分割により4分割したものに分けられる。分割後のサイズに応じて、分割タイプに対応したモードが定義されており、図4に示される。
(パーティションについて)
予測ブロックを分割した個々の領域はパーティションと呼ばれる。予測ブロック内部において、パーティションを管理する為に、0から開始する番号を、予測ブロック内部に存在するパーティションに対してジグザグスキャン順に割り当てる。この番号はパーティション番号と呼ばれ、puPartIdxで表される。図4の予測ブロックのパーティションの中に記述された数字は、そのパーティションのパーティション番号を表す。
実施の形態による動き情報の参照先予測方法を図面を用いて説明する。動き情報の参照先予測方法は、予測ブロックを構成するパーティション単位に、符号化及び復号の処理の何れでも実施される。
図5に示されるように、同一ピクチャ内の符号化ブロック内部を動き補償する為に定義される予測ブロックのパーティション(図5中の処理対象のパーティション)に隣接する周囲のパーティションから動き情報の参照先となるパーティションを選択する。
参照先となるパーティションは、復号においても使用することから、処理対象のパーティションの符号化の前に既に符号化されたパーティションが候補となる。符号化は画面の左上から右下にラスタスキャン順にブロック単位で行うことから、ここでは原則的に処理対象のパーティションの周囲に隣接する左或いは真上のパーティションを参照先の候補として考えることとし、以下断りが無い限りこの仮定を前提として説明することとする。
図5中の太点線の円内で表される領域を拡大したものが図6である。
図6は、処理対象のパーティションとそれに隣接するパーティションを示す。予測動きベクトルの候補は、処理対象のパーティションの左側に隣接するパーティションAk(k=0,…,nA−1)から構成されるパーティション群A、および真上に隣接するパーティションBk(k=0,…,nB−1)から構成されるパーティション群Bの2つのパーティション群からそれぞれ動き情報の参照先となるパーティションを選択する。ここで、nAは左に隣接するパーティション群の総数、nBは真上に隣接するパーティション群の総数を表す。
パーティションのサイズは動き補償によって変わるため、図6に示されるように、処理対象のパーティションとその周囲に隣接するパーティションのサイズが異なる場合は、次の規則に基づいて左或いは真上の参照先の候補となるパーティションを決定する。
・処理対象のパーティションに対して左に複数の隣接するパーティションが存在する場合は、その中の一番上のパーティションA0を参照先の候補とする。
・処理対象のパーティションに対して真上に複数の隣接するパーティションが存在する場合は、その中の一番左のパーティションB0を参照先の候補とする。
(シンタックスについて)
まず、本実施例に係る動き情報の参照先予測方法を備える動画像符号化装置により符号化される動画像のビットストリームのシンタックスについて説明する。
図7は動画像のビットストリームのシーケンス・パラメータ・セット(SPS)に記述される第1のシンタックスパターンを示す。シーケンス・パラメータ・セットはシーケンス全体の符号化に関わる情報が記述されるヘッダーであり、シーケンス全体に渡って、画面間予測を行う場合、本実施の形態に係る動き情報の参照先予測方法を適用するかどうかを示す第1フラグinter_merge_flagが設置される。
図8はスライスの中の予測ブロック単位に記述される第2のシンタックスパターンを示す。予測ブロックの予測モードが画面間予測(MODE_INTER)の場合、予測ブロック内のパーティション毎に、周囲に隣接する有効なパーティションの数NumMergeCandidatesが求められ、NumMergeCandidatesが0を超える場合に、このパーティションにてマージを適用するか否かを表す第2フラグmerge_flag[i]が設置される。ここで、iは予測ブロックの中のパーティション番号を表す。第2フラグmerge_flag[i]は本実施の形態に係る動き情報の参照先予測方法が適用されない場合、即ち、inter_merge_flagが偽(0)の場合には符号化されず、ビットストリーム中に記述されない。
次に、第2フラグmerge_flag[i]が真(1)で且つNumMergeCandidatesが1を超える場合に、本実施の形態に係る動き情報の参照先予測方法にて選択される参照先の隣接パーティションが正しいか否かを表す第3フラグmerge_probable_flag[i]が設置される。第3フラグmerge_probable_flag[i]はマージを適用しない場合、即ちmerge_flag[i]が偽(0)の場合は、通常の動きベクトル検出にて検出された動き情報を使用するので、第3フラグmerge_probable_flag[i]にて判定する必要が無い。また、NumMergeCandidatesが1の場合にも符号化されない。周囲に隣接する有効なパーティションの数が1つであれば、その1つが参照先のパーティションとなるので、merge_probable_flag[i]を伝送せずとも参照先するパーティションの動き情報が確定する為である。
尚、NumMergeCandidatesの算出については、後述する。
以下では説明を簡単にする為に、第2フラグ及び第3フラグの配列部分を取り除いた変数を使用することとする。
(符号化における動き情報の参照先予測)
上述のシンタックスに基づき、動画像のビットストリームを符号化する動画像符号化装置における、実施の形態に係る動き情報の参照先予測方法の動作を説明する。動き情報の参照先予測方法をシーケンス全体に渡って、画面間予測に適用する場合には、シーケンス・パラメータ・セット(SPS)に記載される第1フラグinter_merge_flagが真(1)に設定される。次に、スライスの中の予測モードが画面間予測(MODE_INTER)である予測ブロックのパーティション毎に、本実施の形態に係る動き情報の参照先予測方法の適用/不適用が切り替えられる。
参照先指定部113は、処理対象のパーティションの左及び真上に隣接するパーティションをマージ処理の参照先として使用するか否かの判定を行う。図9のフローチャートを参照して参照先指定部113の動作を説明する。まず、処理対象のパーティションに隣接する周辺のパーティションの候補数NumMergeCandidatesを算出する(S101)。
図10(a)は、候補数NumMergeCandidatesの算出処理の詳細を示すフローチャートである。最初にNumMergeCandidatesを0に設定する(S201)。次に参照先パーティションとして処理対象のパーティションの左に位置するパーティションを設定する(S202)。処理対象のパーティションの画面内の位置情報から参照先パーティションが画面内に存在するかどうかを判定する(S203)。
図10(b)は、処理対象のパーティション(図中の灰色矩形)に隣接する参照先パーティション(図中の斜線で表される矩形)の例を示す。同図に示すように、処理対象のパーティションが左上に位置する場合には参照先パーティションは存在せず、画面上端に位置する場合は左のみ、画面左端に位置する場合は上のみ、その他の位置では左と上に存在する。参照先パーティションが画面内に存在しない場合(S203のNo)、以降の処理を飛ばしてステップS207に進む。
参照先パーティションが画面内に存在する場合(S203のYes)、参照先指定部113は、参照先パーティションの動き情報を取得する(S204)。参照先指定部113は、メモリ110から参照先パーティションに対応する符号化済みの動き情報を読み出す。読み出された参照先パーティションの動き情報に基づき、参照先指定部113は、参照先パーティションの符号化モードがイントラか否かを判定する(S205)。イントラの場合はS207に進み、イントラでない場合はNumMergeCandidatesを1加算する(S206)。
参照先パーティションの設定が処理対象のパーティションの上であるかどうかを判定する(S207)。参照先パーティションが処理対象のパーティションの上に設定されている場合は終了し、NumMergeCandidatesを出力する。参照先パーティションが処理対象のパーティションの上に設定されていない場合は、参照先パーティションを処理対象のパーティションの上に設定し直して、ステップS203以降の判定処理を継続する(S208)。
以上のようにして、候補数NumMergeCandidatesが算出される。
次に、図9に戻り、算出された候補数NumMergeCandidatesが0個より大きいか否かの判定が行われる(S102)。候補数NumMergeCandidatesが0の場合、マージ処理の参照先となる隣接するパーティションが存在しないので、マージ処理により選択された動き情報に基づく動き補償は行わないこととする。候補数NumMergeCandidatesが0より大きい場合、次のステップS103の判定に進む。
候補数NumMergeCandidatesが1より大きいか否かの判定が行われる(S103)。候補数NumMergeCandidatesが1個の場合(S103のNo)、その1個がマージ処理の参照先パーティションとなるので、参照先指定部113は、その参照先パーティションの動き情報をメモリ110から取得する(S105)。参照先指定部113は、取得した参照先パーティションの動き情報を動き補償部106に供給し、動き補償部106は、指定された参照先パーティションの動き情報にもとづいて処理対象パーティションの動き補償を行う。
NumMergeCandidatesが1より大きい、即ち2の場合(S103のYes)、参照先指定部113は、処理対象のパーティションの左と上に隣接するパーティションの動き情報をメモリ110から読み出し、取得する(S104)。
参照先指定部113は、取得された左と上に隣接するパーティションの動き情報を比較する(S106)。具体的には、動き情報を構成する予測方向、参照ピクチャ番号及び動きベクトルを比較する。左と上に隣接するパーティションの動き情報が全く同一の場合(S106のYes)、候補数NumMergeCandidatesを1に変更して(S107)、参照先指定部113は、左または上のどちらか一方の隣接するパーティションの動き情報を参照先パーティションの動き情報として動き補償部106に供給する。ここでは、左に隣接するパーティションの動き情報を選択することにする。左と上に隣接するパーティションの動き情報が異なる場合(S106のYes)、参照先指定部113は、2個の動き情報をそれぞれ動き補償部106に供給する。
以上のように、参照先指定部113は、マージ処理により選択された参照先ブロックのパーティションの動き情報を動き補償部106に供給し、動き補償部106は、指定された参照先ブロックのパーティションの動き情報に基づいて動き補償を行う。また、動き補償部106は、動きベクトル検出部101により検出された予測ブロックのパーティション毎の動きベクトルにもとづいて通常の動き補償を行う。また、画面内予測部111は、画面内の画素相関を利用して面内予測を行う。これら3つの予測方法により生成される予測画像が予測選択部112に入力される。
予測選択部112は、符号化する画像と入力された3つの予測画像との差分により生成される残差画像と動き情報等の付加情報の発生符号量を計算し、符号量が最小となる予測方法を選択する。
ここで、マージ処理により選択された参照先パーティションの動き情報に基づく動き補償による予測方法が選択された場合について説明する。この時、予測選択部112は、マージ処理により選択された参照先パーティションの動き情報として左または上のどちらを使用したかを示すフラグmerge_direc_flagを設定する。merge_direc_flagが1の場合は左に隣接するパーティションの動き情報を、0の場合は上に隣接するパーティションの動き情報を選択することとして、以下説明する。
予測選択部112は、マージ処理による予測方法を選択した場合、上述したシンタックスで定義されるマージ処理用のフラグを設定する。図11は、予測選択部112がマージ処理用のフラグを設定する手順を説明するフローチャートである。
最初に予測選択部112により選択された予測方法がマージ処理で選択された動き情報に基づく予測であるか否かの判定が行われる(S301)。画像内予測や通常の動きベクトル検出を用いた画面間予測の場合(S301のNo)、merge_flagを0に設定して、終了する(S303)。
マージ処理で選択された動き情報に基づく予測であれば(S301のYes)、merge_flagを1に設定する(S302)。次に、マージ処理で選択された動き情報の数を調べる(S304)。具体的には、上述した参照先指定部113が指定する参照先となる隣接するパーティションの候補数NumMergeCandidatesが1より大きいか否かの判定を行う。
候補数NumMergeCandidatesが1以下の場合(S304のNo)、マージ処理を選択していることが前提であり、必ず有効な参照先の隣接するパーティションが1つ存在し、左または上のどちらか一方に特定することができるため、merge_flagのみを設定し、終了する。
候補数NumMergeCandidatesが1より大きい場合、即ち2個の隣接するパーティションの動き情報の候補があった場合(S304のYes)、参照先パーティションの予測に進む(S305)。ここで、参照先パーティションの予測では、後述する動き情報の参照先予測方法が用いられる。処理対象のパーティションの左及び上に隣接するパーティションのサイズや、処理対象パーティションと隣接パーティションが互いに接している辺の長さ等の情報に基づいて、参照先パーティションの予測が行われ、予測された参照先パーティションを示すフラグpred_direc_flagが出力される。
予測された参照先パーティションを示すフラグpred_direc_flagはmerge_direc_flagと同様に、参照先の隣接するパーティションとして左(1)或いは上(0)で選択先を表すとともに、予測によって参照先パーティションが選択できなかった場合は、不定(2)が設定される。
次に、このようにして設定された、予測された参照先パーティションを示すフラグpred_direc_flagの判定を行う(S306)。予測された参照先パーティションを示すフラグpred_direc_flagが2となるのは参照先パーティションの予測において予測不可の場合であり(S306のYes)、この時、実際に発生符号量が最小となる予測方法として選択されたマージ処理による予測で用いた動き情報の参照先パーティションを表すmerge_direc_flagを、参照先有効情報を示すフラグmerge_probable_flagに設定して、終了する(S307)。この場合、参照先有効情報を示すフラグmerge_probable_flagは、マージ処理において従来と同様に参照先のパーティションを直接示すことになる。
予測された参照先パーティションを示すフラグpred_direc_flagが2でない場合(S306のNo)、フラグmerge_direc_flagとpred_direc_flagの比較を行う(S308)。merge_direc_flagは実際に発生符号量が最小となる予測方法として選択されたマージ処理による予測で用いた動き情報の参照先パーティションを表し、参照先パーティションの予測が当たっていればpred_direc_flagは同一の値になるので、その場合フラグmerge_probable_flagを1に設定する(S309)。一方、参照先パーティションの予測が外れていればpred_direc_flagは異なる値になるので、その場合フラグmerge_probable_flagを0に設定する(S310)。
マージ先パーティションの予測の成否を示すmerge_probable_flagを用いると、マージ先パーティションの予測が当たった場合、merge_probable_flagは1となり、予測がはずれた場合のみmerge_probable_flagは0となる。つまり、マージ先パーティションの予測が当たるほどmerge_probable_flagは1である確率が高く、merge_probable_flagが1である確率が高いことを利用した算術符号化を用いることにより、より少ない情報量でmerge_probable_flagを伝送することができる。
以上のようにして、パーティション毎にマージ処理により選択された隣接するパーティションの動き情報に基づく動き補償予測が選択された場合、SPSのヘッダーに記載される第1フラグinter_merge_flag、予測ブロックに記載される第2フラグmerge_flag及び第3フラグmerge_probable_flagが設定され、符号化される。
(復号における動き情報の参照先予測)
上述のシンタックスに基づき、上記の動画像符号化装置により符号化された動画像のビットストリームを復号する動画像復号装置における、実施の形態に係る動き情報の参照先予測方法の動作を説明する。
最初に、可変長復号部201により復号されるビットストリームのSPSに記述されているフラグinter_merge_flagから、ビットストリームのシーケンス全体に対して、本実施の形態に係る動き情報の参照先予測方法を使用したマージ処理による画面間予測が適用されるか否かを判定する。inter_merge_flagが真(1)の場合、マージ処理が適用され、inter_merge_flagが偽(0)の場合、マージ処理が無視され、従来通りのビットストリームから復号された動き情報に基づく画面間予測が実施される。以下、inter_merge_flagが真(1)、即ち、本実施の形態に係る動き情報の参照先予測方法を使用したマージ処理が適用されているものとして説明する。
次に、画面内/画面間予測選択部209により、スライスの中の予測ブロック毎に予測モードを参照して画面内または画面間予測の何れを選択するかが判定される。画面内予測(MODE_INTRA)が選択された場合は画面内予測部208の処理に進み、画面間予測(MODE_INTER)が選択された場合は動き情報選択部210の処理に進む。
ここで、動き情報選択部210は、予測ブロックのパーティション毎にビットストリームから復号された情報として、符号化の動きベクトル検出にて検出された動き情報、或いはマージ処理により選択された参照先パーティションの動き情報のどちらか一方を選択し、選択された動き情報を動き補償部203に出力する。
図12は、動き情報選択部210の選択手順を示すフローチャートであり、この図を参照して説明する。まず、処理対象のパーティションに隣接する周辺のパーティションの候補数NumMergeCandidatesが算出される(S401)。算出手順は符号化におけるS101と同様であるので割愛する。
算出された候補数NumMergeCandidatesが0個より大きいか否かが判定される(S402)。0個の場合、マージ処理の参照先となる隣接するパーティションが存在しないので、動き情報選択部210は、従来同様ビットストリームから復号された動き情報を出力する。0個より大きい場合は、可変長復号部201により復号されたmerge_flagが読み込まれ(S403)、merge_flagに基づき動き情報の選択を判定する(S404)。merge_flagが偽(0)の場合、動き情報選択部210は、従来同様ビットストリームから復号された動き情報を出力する。merge_flagが真(1)の場合、マージ処理での参照先パーティションの動き情報を選択する為の処理に移る。
再度、候補数NumMergeCandidatesが1個より大きいか否かの判定が行われる(S405)。候補数NumMergeCandidatesが1個の場合、その1個がマージ処理の参照先パーティションとなるので、その参照先パーティションの動き情報を、復号済み情報が記録されているメモリ207から取得する(S407)。取得された動き情報は動き補償部203に供給され、その動き情報にもとづいて動き補償が行われる。
候補数NumMergeCandidatesが1個より大きい場合、即ち2個の場合、処理対象のパーティションの左と上に隣接するパーティションの動き情報をメモリ207から読み出し、取得する(S406)。取得された左と上に隣接するパーティションの動き情報を比較する(S408)。具体的には、動き情報を構成する予測方向、参照ピクチャ番号及び動きベクトルを比較する。動き情報が全く同一の場合、左或いは上のどちらか一方の隣接するパーティションの動き情報を取得して、動き補償部203に供給する(S410)。ここでは、符号化と同様に左に隣接するパーティションの動き情報を選択することにする。
動き情報が異なる場合は参照先パーティションの予測に進む(S409)。参照先パーティションの予測は、符号化と同様に、後述する動き情報の参照先予測方法が使用される。処理対象のパーティションと周辺の左及び上に隣接するパーティションのサイズや、処理対象パーティションと隣接パーティションが互いに接している辺の長さ等の情報に基づいて、参照先パーティションの予測が行われ、予測された参照先パーティションを示すフラグpred_direc_flagが出力される。
予測された参照先パーティションを示すフラグpred_direc_flagは、符号化と同様に参照先の隣接するパーティションが選択される場合は左(1)或いは上(0)で表され、予測によって参照先パーティションが選択出来なかった場合は不定(2)が設定される。
次に出力されたpred_direc_flagの判定を行う(S411)。pred_direc_flagが2となるのは参照先パーティションの予測で予測不可の場合であり、この時、case1の処理に進む(S412)。一方、pred_direc_flagが2でない場合は、case2の処理に進む(S413)。
図13(a)は、ステップS412のcase1の処理のフローチャートを示す。case1では参照先パーティションの予測では予測結果が不定であり、参照先の予測結果が示されない。そこで、従来と同様にmerge_probable_flagで示される左或いは上に隣接するパーティションを参照先パーティションとして選択する。この場合、符号化側でmerge_probable_flagには、実際の参照先パーティションを示すmerge_direc_flagが設定されているからである。
可変長復号部201により復号されたmerge_probable_flagが読み込まれ(S421)、merge_probable_flagに基づき参照先パーティションを選択する(S422)。pred_direc_flagが1の場合、左に隣接するパーティション(S423)、merge_probable_flagが0の場合、上に隣接するパーティションを参照先パーティションとして選択する(S424)。
図13(b)は、ステップS413のcase2の処理のフローチャートを示す。case2の処理の場合、予測された参照先パーティションを示すフラグpred_direc_flagの確からしさは、参照先有効性を示すフラグmerge_probable_flagによって表される。即ち、pred_direc_flagで示される参照先パーティションの選択が正しければmerge_probable_flagは1(真)で表され、正しくなければmerge_probable_flagは0(偽)で表されることになる。
可変長復号部201により復号されたmerge_probable_flagが読み込まれ(S431)、merge_probable_flagに基づき参照先パーティションの選択を判定する(S432)。merge_probable_flagが1の場合、参照先パーティションの予測で判定されたpred_direc_flagの示す値のパーティションを参照先パーティションとして選択される(S433)。merge_probable_flagが0の場合、pred_direc_flagの示す値と逆のパーティションを参照先パーティションとして選択する。例えば、pred_direc_flagが0(左)であれば、上に隣接するパーティションを参照先パーティションとする(S434)。
図12に戻り、case1及びcase2の処理で選択された参照先パーティションの動き情報が取得され(S415)、動き補償部203に供給され、終了する。
以上のように、可変長復号部201により復号された各フラグと復号過程での演算結果に応じてマージ処理による画面間予測が選択された場合、後述する動き情報の参照先予測方法によって、参照先パーティションを選択する。選択された参照先パーティションの動き情報から動き補償により生成される予測画像とビットストリームから復号された残差信号とを加算することで復号画像が生成される。
(動き情報の参照先予測方法)
図14は、本実施の形態に係る動き情報の参照先予測方法を説明するフローチャートである。図14に示される処理過程は、パーティション単位で実施される。各過程で処理対象のパーティションに対して動き情報を参照するパーティションの判定が行われ、参照先としてパーティションが決定された場合には次の過程の判定に進まず、終了する。以下、各過程を順を追って説明する。
まず、処理対象のパーティションの左或いは上に隣接する周囲のパーティションとの境界判定を行う(S500)。図15は、ステップS500の隣接する周囲のパーティションとの境界判定処理を示すフローチャートである。この図を用いて処理の詳細を説明する。
最初に処理対象のパーティションとその周囲に隣接するパーティションの動き境界検出を行う(S501)。
図16は、処理対象のパーティションをXとし、左及び上に隣接するパーティションをそれぞれA及びBとした場合の配置例を示す。処理対象のパーティションの矩形サイズを幅wx、高さhxで表し、隣接する左のパーティションの高さをpa、隣接する上のパーティションの幅をpbで表す。
処理対象のパーティションと左および上に隣接するパーティションの境界の判定は、処理対象のパーティションの高さhxと隣接する左のパーティションの高さpaの比較、及び処理対象のパーティションの幅wxと隣接する上のパーティションの幅pbの比較により実施される。
隣接するパーティションが処理対象のパーティションと隣接する辺を「動き境界」と呼ぶ。ここで、動き境界とは、単に隣接する左或いは上の一つのパーティションの高さ或いは幅だけを評価するだけでなく、図17に示されるように、例えば処理対象のパーティションの上に隣接するパーティションが複数存在する場合、参照先の候補となる一番左にあるパーティションB0とその右隣のパーティションB1の動き情報が全く同一であると判定されたなら、動き境界をパーティションB1の位置まで延長し、更に右隣のパーティションBk(k=2,3,...nB−1)について同様の判定を行い、動き情報が同一でないと判定されたパーティションの一つ前のパーティションの位置までの幅を加算した値を動き境界の長さとして定義する。
図17に示される一例では、B0とB1が同一の動き情報を備えるものと判定された場合であり、結果として上に隣接するパーティションの動き境界の長さは、B0とB1の各パーティションの幅を加算したもの、即ちpb=pb0+pb1となる。こうして求められた動き境界の長さが処理対象のパーティションの高さまたは幅と一致するか否かを判定する。
まず、隣接する左のパーティションAと上のパーティションBと両方の動き境界の長さが処理対象のパーティションXの高さまたは幅と一致するか否かの判定を行う(S502)。両方とも一致する場合は参照先パーティションを判定することができないので、次の判定ステップS510に進む。両方とも一致しない場合は、AまたはBのどちらか一方が一致するか否かの判定を行う(S503)。A,Bともに一致しない場合は判定が出来ないので、次の判定ステップS510に進む。AまたはBのどちらか一方の動き境界の長さが処理対象のパーティションXの高さまたは幅と一致する場合、一致するパーティションを参照先として選択し(S504)、次の判定ステップS510には進まずに終了する。これは、動き境界の長さが処理対象のパーティションXの高さまたは幅に一致する場合、その隣接するパーティションと処理対象のパーティションとは動き情報が同一である確率が高いことを利用した参照先パーティションの予測である。
次に、図14に戻り、処理対象のパーティションと隣接する左或いは上のパーティションの互いに隣接する辺の共通部分の長さ(以下、「隣接辺長」と呼ぶ)による判定を行う(S510)。処理対象のパーティションは、隣接辺長が長いパーティションの動きとの相関性が高いとの推定に基づき判定する。図18は、ステップS510の隣接するパーティションとの隣接辺長比較処理を示すフローチャートである。この図を用いて処理の詳細を説明する。
最初に、処理対象のパーティションが隣接する左或いは上のパーティションと接している隣接辺長を算出する(S511)。図16で示されるように、左のパーティションAとの隣接辺長はL(A)、上のパーティションBとの隣接辺長はL(B)で表される(図16中の斜線部が隣接部を表す)。左のパーティションAとの隣接辺長L(A)は処理対象のパーティションXの高さhxと左のパーティションの高さpaとのうち小さい方の長さとなり、次式で表される。
L(A)=min(pa,hx)
ここで、関数min(a,b)はa或いはbのうち小さい方を選択する関数である。一方、上のパーティションBとの隣接辺長L(B)は処理対象のパーティションXの幅wxと上のパーティションの高さpbとのうち小さい方の長さとなり、次式で表される。
L(B)=min(pb,wx)
但し、pa及びpbはステップS500にて求められた動き境界の長さである。
求められた隣接辺長L(A)とL(B)の比較を行い、参照先のパーティションを選択する(S512)。L(A)とL(B)とが等しい場合、参照先のパーティションを判定することができないので、参照先のパーティションを選択せず不定とし(S513)、終了する。L(A)とL(B)とが等しくない場合、L(A)とL(B)の大小比較を行う(S514)。L(A)がL(B)より大きい場合、Aを選択し(S515)、終了する。L(A)がL(B)より小さい場合、Bを選択し(S516)、終了する。
以上述べた隣接パーティションとの境界判定/(S500)及び隣接辺長比較(S510)により、処理対象のパーティションと隣接する左及び上のパーティションの動き境界や辺長の条件で場合分けした判定結果を纏めたものを図19の表に示す。図19の表中の選択欄が参照先となるパーティションを示しており、記号”−”は参照先パーティションが不定の場合を表す。
ここでは、図19の表の中の条件に基づく判定の例を幾つか説明する。例えば、図19の5つ目の境界比較条件”pb<wx且つpa<hx”は、図20に示されるような配置で、隣接するパーティションA,Bの動き境界の長さがともに処理対象のパーティションの幅および高さと一致していない場合である。この場合、動き境界一致による判定は出来ないので、処理対象のパーティションに接している隣接辺長の長さの比較により参照先を判定する。隣接するパーティションA及びBの隣接辺長L(A)及びL(B)はそれぞれ処理対象のパーティションXに接している辺pa及びpbとなるので、paとpbの比較により、参照先のパーティションが判定される。
また、図19の9つ目の境界比較条件”pb>wx且つpa>hx”も、隣接するパーティションA,Bの動き境界の長さがともに処理対象のパーティションの幅および高さと一致していない場合である。この場合も、動き境界一致による判定は出来ないので、処理対象のパーティションに接している隣接辺長の長さの比較により参照先を判定する。図21は境界比較条件”pb>wx且つpa>hx”での処理対象及び隣接するパーティションの配置の一例を示したものである。図4に示されるように、予測ブロック内部のパーティションのサイズや形状は定義されている為、図21で示される境界比較条件”pb>wx且つpa>hx”に合致するパーティションのサイズや形状は限定される。この場合、隣接するパーティションに形状に関わらず、処理対象のパーティションはN×Nに限定される。その為、隣接するパーティションA及びBの隣接辺長L(A)及びL(B)はともにNとなる。L(A)=L(B)=Nになり、隣接辺長による比較からは判定が出来ないので、不定と判定する。
こうして、判定された参照先パーティションの予測結果を、符号化及び復号過程において予測された参照先パーティションを示すフラグpred_direc_flagとして出力する。pred_direc_flagは、merge_direc_flagと同様に、参照先の隣接するパーティションとして選択される場合は”1(左)”或いは”0(上)”で参照先を表し、予測によって参照先パーティションが選択出来なかった場合は”2(不定)”と設定される。
以上述べたように、第1の実施例によれば、マージ処理における参照先ブロックを予測することで、参照先の指定に使用するフラグmerge_probable_flagで表されるビットの発生確率を偏らせ、発生する符号量を削減することが可能となり、符号化効率を向上させることができる。従来は左或いは上の隣接ブロックを参照先として指定する場合、参照先フラグは1/2の頻度になり算術符号化を活かせないでいたが、第1の実施例によれば、予測された参照先の確からしさを表すフラグmerge_probable_flagを用いることで、予測が的中すればフラグのビット頻度を偏らせることが可能であり、算術符号化においては発生符号量を削減することができる。また、符号化対象ブロックのサイズと一致する隣接ブロックや、隣接している辺の長さが長い隣接ブロックの方が符号化対象ブロックとの相関性が高いことを使用して、参照先のブロックを予測するようにしたことで予測の精度を高めることができる。
[実施例2]
本発明の実施の形態による動き情報の参照先予測方法の第2の実施例について説明する。第1の実施例との違いは、参照先予測の判定条件として、処理対象のパーティションに隣接する左或いは上のパーティションの残差信号に基づく判定処理が追加される点である。
図22は、動き情報の参照先予測方法の第2の実施例の動作を説明するフローチャートである。図22に示されるステップS600及びS610の処理は、図14に示される第1の実施例のステップS500及びS510の処理と同一である。処理対象のパーティションの左或いは上に隣接する周囲のパーティションとの境界判定を行い(S600)、処理対象のパーティションと隣接する左或いは上のパーティションの互いに隣接する辺の共通部分の長さ(「隣接辺長」)による判定を行う(S610)。
処理対象のパーティションと隣接する左或いは上のパーティションとの隣接辺長による判定(S610)の後、参照先としてパーティションが決定されなかった場合、残差信号に基づく判定(S620)に進む。
ここで、残差信号に基づく判定処理を実施する際のパラメータについて説明する。図23は、隣接するパーティションの境界残差を算出する画素領域を示す図である。図23に示されるように、処理対象のパーティションXに対して隣接する左のパーティションをA、上のパーティションをBとする。それぞれのパーティションA,Bは、符号化過程における動き補償予測後の画素の残差信号、或いは復号過程における逆量子化・逆直交変換後の画素の残差信号で構成されているものとする。
パーティションAの画素でパーティションXに接している画素領域は、パーティションXの左側の境界に位置する高さがmin(ha,hx)、幅が1ピクセルの領域で表され、その画素の残差信号の絶対値の総和をδ(A)とすると、δ(A)は次式で表される。
ここで、aiはパーティションXに隣接しているパーティションAの画素の残差信号を表す。パーティションXに隣接しているパーティションAの画素数は、パーティションAの高さを表す画素数haとパーティションXの高さhxとの小さい方であり、関数min(ha,hx)で表される。
同様に、パーティションBの画素でパーティションXに接している画素領域は、パーティションXの上側の境界に位置する幅がmin(wb,wx)、高さが1ピクセルの領域で表され、その画素の残差信号絶対値の総和をδ(B)とすると、δ(B)は次式で表される。
ここで、biはパーティションXに隣接しているパーティションBの画素の残差信号を表す。パーティションXに隣接しているパーティションBの画素数は、パーティションBの幅を表す画素数wbとパーティションXの幅wxとの小さい方であり、関数min(wb,wx)で表される。
図24は、隣接するパーティションの境界残差に基づく参照先パーティションの判定の動作を説明するフローチャートである。まず、処理対象のパーティションXに隣接する左或いは上のパーティションのパーティションXとの境界残差として、上述した画素の残差信号絶対値の総和が算出される(S621)。
次に算出された境界残差の正規化を行う(S622)。図23に示されるように、パーティションXに隣接しているパーティションA及びBの隣接辺長が異なる場合、パーティションAの境界残差とパーティションBの境界残差を直接比較することは適切ではないため、次式のように、パーティションA、Bの境界残差をそれぞれパーティションA、Bの隣接辺長で割ることにより正規化する。
パーティションAおよびBの正規化された境界残差を比較する。まず、パーティションAの境界残差δ(A)とパーティションBの境界残差δ(B)とが等しい場合か否かを判定する(S623)。δ(A)とδ(B)とが等しくない場合はδ(A)とδ(B)とで大小関係が成立するので、大小比較を行う。ここでは、δ(A)がδ(B)より小さいか否かを判定する(S624)。処理対象のパーティションXに隣接する画素領域で動き補償予測で算出される残差が小さくなる動き情報を選択してパーティションXに適用した方が、パーティションXの予測誤差を小さくすることができると推測される。そこで、δ(A)がδ(B)より小さい場合はパーティションAを参照先として選択し(S625)、そうでない場合はパーティションBを参照先として選択する(S626)。
パーティションAの境界残差δ(A)とパーティションBの境界残差δ(B)とが等しい場合は、境界残差による参照先の判定はできないので、残差比の算出に進む(S627)。ここで、パーティションA、Bの残差比Δ(A),Δ(B)とは、ステップS621にて算出されたパーティションA、Bの正規化前の境界残差δ(A)、δ(B)のパーティションA、Bの総残差に対する比として次式で表される。
ここで、Ai及びBiはパーティションXに隣接しているパーティションA及びBの画素の残差信号であり、nA及びnBはパーティションA及びBの画素の総数である。但し、処理対象のパーティションXに隣接していない領域については対象とはならない。例えば、図23のパーティションAにおいて、ha>hxの場合、隣接辺長はmin(ha,hx)=hxであるから、パーティションAの高さhxまでの上側の矩形領域の画素が計算の対象であり、それを超える高さ(ha−hx)のパーティションAの下側の矩形領域の画素は対象外とする。更に、パーティションAの幅を表す画素数waとパーティションBの高さを表す画素数hbとを比較し、小さい方を対象領域の幅として定義する。図23で示される例では、対象領域の幅はmin(wa,hb)=hbとなる。したがって、対象領域は、幅hb、高さhxの斜線で示される領域であり、パーティションAの対象領域の画素数nAは次式で与えられる。
同様に、パーティションBの対象領域の幅はパーティションBの隣接辺長min(wb,wx)=wbであり、高さはパーティションAの幅を表す画素数waとパーティションBの高さを表す画素数hbの小さい方であるからmin(wa,hb)=hbである。パーティションBの対象領域の画素数nBは次式で与えられる。
nAは、図23のパーティションA内の太点線内の薄灰色で示される矩形領域が対象となり、Δ(A)の算出式の分母は、この矩形領域内の画素の残差信号の絶対値の総和として表される。一方、nBは図23のパーティションBの全領域が対象となり、Δ(B)の算出式の分母部はパーティションB内の画素の残差信号の絶対値の総和として表される。正規化前の境界残差δ(A)及びδ(B)はそれぞれパーティションXに隣接する画素の残差信号の絶対値の総和であり、それぞれパーティションXに隣接する画素数はmin(ha,hx)=hx、min(wb,wx)=wbであるので、残差比Δ(A)及びΔ(B)は同率の画素数比で算出され、Δ(A)及びΔ(B)はパーティションXと隣接する画素の残差信号がパーティションA及びBの画素の残差信号に占める比率を表すことになる。この比率が高いということは、パーティションXと隣接する画素付近の動き補償予測が当たっていない、即ち、動き補償予測に使用した動き情報がパーティションXと隣接する画素付近の予測に用いるには適切でないことを意味する。即ち、残差比が高い方の隣接するパーティションの動き情報を参照しないと判定することになる。
こうして算出された残差比の比較を行う。Δ(A)とΔ(B)とが等しい場合か否かを判定する(S628)。Δ(A)とΔ(B)とが等しくない場合はΔ(A)とΔ(B)とで大小関係が成立するので、大小比較を行う。ここでは、Δ(A)がΔ(B)より小さいか否かを判定する(S629)。Δ(A)がΔ(B)より小さい場合はAを選択し(S630)、そうでない場合はBを選択する(S631)。Δ(A)とΔ(B)とが等しい場合は、どちらを選択しても発生する残差に差が無いので、Aを選択することとして(S632)、終了する。
以上のようにして、判定された参照先パーティションの予測結果を、符号化及び復号過程にフラグpred_direc_flagとして出力する。pred_direc_flagはmerge_direc_flagと同様に、参照先の隣接するパーティションとして選択される場合は”1(左)”或いは”0(上)”で参照先を表す。ステップS632での選択をAとしたのは、本実施例にてA(左)がビット”1”に割り当てられたためである。これは、動き情報の参照先パーティションの予測として、pred_direc_flagの発生頻度を”1”に偏らせることで、符号化において発生符号量を削減するためである。
尚、実施例2にて、図24で示されるステップS623において、境界残差δ(A)とδ(B)とが等しい場合か否かの厳密な判定を、δ(A)とδ(B)との絶対値差分|δ(A)−δ(B)|が閾値ε未満か否かとして判定を変更してもよい。δ(A)及びδ(B)の値が大きい場合の絶対値差分と小さい場合の絶対値差分とでは同じ差分値になったとしても、その意味合いは異なる。例えば、δ(A)=1000、δ(B)=1001の場合とδ(A)=8、δ(B)=7の場合とでは、共に絶対値差分は1となるが、前者の個々の境界残差の値から見れば誤差に等しい値を意味することになる。そこで、境界残差δ(A)とδ(B)の値の比較において、δ(A)とδ(B)との絶対値差分|δ(A)−δ(B)|と閾値εとの比較を行うことで、従来の境界残差δ(A)とδ(B)とが等しいか否かの場合(ε=0と等価)を含めるようにして、判定を拡張することが可能である。ここで、εは固定値としてもよいし、例えば量子化パラメータQpの値に応じて変更される可変値としてもよい。
更に、実施例2では境界残差及び残差比の2つの差分判定を順に実施したが、境界残差と残差比をそれぞれで判定を行い、それらの結果から最終的な参照先パーティションの選択をしても良い。また、境界残差及び残差比を纏めて新たな評価基準を生成し、判定しても良い。例えば、次式のように境界残差と残差比との組み合わせによって生成される評価値に基づいて判定してもよい。
ここで、変数xはA若しくはBであり、αは重み付け係数である。αは固定値としてもよいし、パーティションやスライス単位、或いはスライスタイプ等に応じて可変値として設定してもよい。
以上述べたように、第2の実施例によれば、符号化対象のブロックの周囲に隣接するブロックの残差信号の大きさに基づいて、参照先のブロックを予測することで参照先の予測の精度をさらに高めることができる。
[実施例3]
本発明の実施の形態による動き情報の参照先予測方法の第3の実施例について説明する。第1の実施例との違いは、参照先パーティションの予測により判定され出力されるフラグpred_direc_flagで表されるパーティションを参照先パーティションとして選定する点である。参照先パーティションの予測によるフラグpred_direc_flagが0或いは1の場合は、参照先の隣接するパーティションとして左(pred_direc_flagが”1”)或いは上(pred_direc_flagが”0”)が選択される。
参照先パーティションの予測において不定として判定された場合、即ちpred_direc_flagが”2”の場合は、実際に発生符号量が最小となる予測方法として選択されたマージ処理による予測で用いた動き情報の参照先パーティションを表すフラグmerge_direc_flagを、参照先のパーティションを表すものとして用いる。この条件をシンタックスとして表現すると図25となる。パーティション単位にマージするか否かを判定するmerge_flagの後に続いて、『マージ処理を実行し、且つ周囲に隣接する有効なパーティションの数NumMergeCandidatesが1よりも大きく、且つ参照先パーティションの予測で不定』である場合に、参照先パーティションを表すフラグmerge_direc_flagが設定される。マージ処理による予測が選択された場合、上述したシンタックスで定義されるマージ処理用のフラグが設定される。図26のフローチャートを使って、符号化における動き情報の参照先予測方法の第3の実施例の動作を説明する。
図26はマージ処理用のフラグを設定する手順を説明するフローチャートである。最初に予測選択部112により選択された予測方法がマージ処理で選択された動き情報に基づく予測であるか否かの判定が行われる(S701)。画像内予測や通常の動きベクトル検出を用いた画面間予測の場合はmerge_flagを0に設定して、終了する(S703)。マージ処理で選択された動き情報に基づく予測であれば、merge_flagを1に設定する(S702)。
次に、マージ処理で選択された動き情報の数を調べる(S704)。参照先指定部113が指定する参照先となる隣接するパーティションの候補数NumMergeCandidatesが1より大きいか否かの判定が行われる。候補数NumMergeCandidatesが1以下の場合、マージ処理を選択していることが前提であり、必ず有効な参照先の隣接するパーティションが1つ存在し、左或いは上のどちらか一方を特定することができるので、merge_flagのみを設定し、終了する。
候補数NumMergeCandidatesが1より大きい場合、即ち2個の隣接するパーティションの動き情報の候補があった場合は参照先パーティションの予測に進む(S705)。ここで、参照先パーティションの予測では、第1の実施例にて説明した動き情報の参照先予測方法が使用される。処理対象のパーティションの左及び上に隣接するパーティションのサイズや、処理対象パーティションと隣接パーティションが互いに接している辺の長さ等の情報に基づいて、参照先パーティションの予測が行われ、フラグpred_direc_flagが出力される。
予測された参照先パーティションを示すフラグpred_direc_flagはmerge_direc_flagと同様に、参照先の隣接するパーティションとして左(1)或いは上(0)で選択先を表されるとともに、予測によって参照先パーティションが選択できなかった場合の不定(2)が設定される。
次に、このようにして設定された、予測された参照先パーティションを示すフラグpred_direc_flagの判定を行う(S706)。予測された参照先パーティションを示すフラグpred_direc_flagが2となるのは参照先パーティションの予測において予測不可の場合であり、この時、実際に発生符号量が最小となる予測方法として選択されたマージ処理による動き補償予測で用いた動き情報の参照先パーティションを表すmerge_direc_flagを設定して、終了する(S707)。一方、pred_direc_flagが2でない場合は、pred_direc_flagが参照先のパーティションを直接示すことになり、”0”の場合は上を、”1”の場合は左に隣接するパーティションを選択する。
参照先パーティションの予測の成否を示すフラグpred_direc_flagにより、参照先パーティションの予測が当たり、参照先として隣接するパーティションが選択される確率が高い程、参照先パーティションを示すフラグmerge_direc_flagを伝送する必要性がなくなるので、符号化効率が向上することになる。
以上のようにして、パーティション毎にマージ処理により選択された隣接するパーティションの動き情報に基づく動き補償予測が選択された場合、SPSのヘッダーに記載される第1フラグinter_merge_flag、予測ブロックに記載される第2フラグmerge_flag及び第3フラグmerge_direc_flagが設定され、符号化される。
次に、上述のシンタックスに基づき、符号化された動画像のビットストリームを復号する場合の参照先予測方法の動作を説明する。
最初に、可変長復号部201により復号されるビットストリームのSPSに記述されているフラグinter_merge_flagから、ビットストリームのシーケンス全体に対して、本実施の形態に係る動き情報の参照先予測方法を使用したマージ処理による画面間予測が適用されるか否かを判定する。inter_merge_flagが真(1)の場合、マージ処理が適用され、inter_merge_flagが偽(0)の場合、マージ処理が無視され、従来通りのビットストリームから復号された動き情報に基づく画面間予測が実施される。以下、inter_merge_flagが真(1)、即ち、本実施の形態に係る動き情報の参照先予測方法を使用したマージ処理が適用されているものとして説明する。
次に、画面内/画面間予測選択部209により、スライスの中の予測ブロック毎に予測モードを参照して画面内または画面間予測の何れを選択するかが判定される。画面内予測(MODE_INTRA)が選択された場合は画面内予測部208の処理に進み、画面間予測(MODE_INTER)が選択された場合は動き情報選択部210の処理に進む。
ここで、動き情報選択部210は、予測ブロックのパーティション毎にビットストリームから復号された情報として、符号化の動きベクトル検出にて検出された動き情報、或いはマージ処理により選択された参照先パーティションの動き情報のどちらか一方を選択し、選択された動き情報を動き補償部203に出力する。
図27は、動き情報選択部210の選択手順を示すフローチャートであり、この図を参照して説明する。まず、処理対象のパーティションに隣接する周辺のパーティションの候補数NumMergeCandidatesが算出される(S801)。算出手順は符号化におけるS701と同様であるので割愛する。
算出された候補数NumMergeCandidatesが0個より大きいか否かが判定される(S802)。0個の場合、マージ処理の参照先となる隣接するパーティションが存在しないので、動き情報選択部210は、従来同様ビットストリームから復号された動き情報を出力する。0個より大きい場合は、可変長復号部201により復号されたmerge_flagが読み込まれ(S803)、merge_flagに基づき動き情報の選択を判定する(S804)。merge_flagが偽(0)の場合、動き情報選択部210は、従来同様ビットストリームから復号された動き情報を出力する。merge_flagが真(1)の場合、マージ処理での参照先パーティションの動き情報を選択する為の処理に移る。
再度、候補数NumMergeCandidatesが1個より大きいか否かの判定が行われる(S805)。候補数NumMergeCandidatesが1個の場合、その1個がマージ処理の参照先パーティションとなるので、その参照先パーティションの動き情報を、復号済み情報が記録されているメモリ207から取得する(S807)。取得された動き情報は動き補償部203に供給され、その動き情報にもとづいて動き補償が行われる。
候補数NumMergeCandidatesが1個より大きい場合、即ち2個の場合、処理対象のパーティションの左と上に隣接するパーティションの動き情報をメモリ207から読み出し、取得する(S806)。取得された左と上に隣接するパーティションの動き情報を比較する(S808)。具体的には、動き情報を構成する予測方向、参照ピクチャ番号及び動きベクトルを比較する。動き情報が全く同一の場合、左或いは上のどちらか一方の隣接するパーティションの動き情報を取得して、動き補償部203に出力する(S810)。ここでは、符号化と同様に左に隣接するパーティションの動き情報を選択することにする。
動き情報が異なる場合は参照先パーティションの予測に進む(S809)。参照先パーティションの予測は、符号化と同様に、実施例1にて説明された動き情報の参照先予測方法が使用される。処理対象のパーティションと周辺の左及び上に隣接するパーティションのサイズや、処理対象パーティションと隣接パーティションが互いに接している辺の長さ等の情報に基づいて、参照先パーティションの予測が行われ、予測された参照先パーティションを示すフラグpred_direc_flagが出力される。
予測された参照先パーティションを示すフラグpred_direc_flagは、符号化と同様に参照先の隣接するパーティションが選択される場合は左(1)或いは上(0)で表され、予測によって参照先パーティションが選択出来なかった場合は不定(2)が設定される。
次に出力されたpred_direc_flagの判定を行う(S811)。pred_direc_flagが2となるのは参照先パーティションの予測で予測不可の場合であり、参照先パーティションの判定は行えない。そこで、可変長復号部201により復号されたmerge_direc_flagが読み込まれる(S812)。merge_direc_flagに基づき、参照先パーティションの選択を判定する(S813)。merge_direc_flagが1の場合、左に隣接するパーティション(S814)、merge_direc_flagが0の場合、上に隣接するパーティションを参照先パーティションとして選択する(S815)。
一方、pred_direc_flagが2でない場合はpred_direc_flagで示される値が直接参照先の隣接パーティションを示す。即ち、pred_direc_flagが1の場合、左に隣接するパーティション、merge_probable_flagが0の場合、上に隣接するパーティションを参照先パーティションとして選択する。こうして選択された参照先パーティションの動き情報が取得され、動き補償部203に供給され、終了する。
以上のように、可変長復号部201により復号された各フラグと復号過程での演算結果に応じてマージ処理による画面間予測が選択された場合、前述した動き情報の参照先予測方法によって、参照先パーティションを選択する。選択された参照先パーティションの動き情報から動き補償により生成される予測画像とビットストリームから復号された残差信号と加算されることで復号画像が生成される。
更に、第2の実施例にて説明した処理対象のパーティションに隣接する左或いは上のパーティションの残差信号に基づく判定処理を同様に適用することも可能である。
以上述べたように、第3の実施例によれば、参照先の予測による参照先となる隣接ブロックの判定の一致精度が高いものとして、merge_probable_flagそのものを定義せず、参照先の予測により得られた判定結果で参照先の隣接ブロックを示し、参照先の予測が不定の場合にのみフラグmerge_direc_flagで参照先の隣接ブロックを示してもよい。この場合、merge_direc_flagによる符号量の増加をmerge_probable_flagに要する符号量の削減で相殺し、相対的に符号化効率を向上させることができる。
更に、上述した第3の実施例において、参照先パーティションの予測で必ず左或いは上に隣接するパーティションを参照先パーティションとして指定するようにして、参照先パーティションの予測により不定と判定されることを無くしてもよい。参照先パーティションの予測で不定として判定されていた場合に、左或いは上の隣接パーティションを一意に指定することを予め既定しておくことで、符号化における動き情報の参照先予測方法では、参照先パーティションの予測により不定判定された場合に参照先パーティションを表すフラグmerge_direc_flagを符号化、伝送する必要性が無くなるので、符号化効率を向上させることができる。符号化に対応した復号における動き情報の参照先予測方法では、符号化側と同じ参照先パーティションの予測を行い、参照先パーティションの予測で判定された左或いは上に隣接するパーティションを参照先パーティションとして選択する。
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。