以下、図1を参照して、本発明の実施形態に係る画像処理システム1について説明する。図1は、本実施形態に係る画像処理システム1について示す図である。
図1に示すように、本実施形態に係る画像処理システム1は、画像符号化装置10及び画像復号装置30を有する。
画像符号化装置10は、入力画像信号を符号化することによって符号化データを生成するように構成されている。画像復号装置30は、符号化データを復号することによって出力画像信号を生成するように構成されている。
符号化データは、画像符号化装置10から画像復号装置30に対して伝送路を介して送信されてもよい。符号化データは、記憶媒体に格納された上で、画像符号化装置10から画像復号装置30に提供されてもよい。
(画像符号化装置10について)
以下、図2を参照して、本実施形態に係る画像符号化装置10について説明する。図2は、本実施形態に係る画像符号化装置について示す図である。
図2に示すように、画像符号化装置10は、インター予測部11と、イントラ予測部12と、減算器13と、加算器14と、変換・量子化部15と、逆変換・逆量子化部16と、符号化部17と、インループフィルタ18と、フレームバッファ19とを有する。
インター予測部11は、インター予測(フレーム間予測)によって予測画像信号を生成するように構成されている。
具体的には、インター予測部11は、符号化対象フレーム(以下、対象フレーム)とフレームバッファ19に格納されている参照フレームとの比較によって、かかる参照フレームに含まれる参照ユニットを特定し、特定された参照ユニットに対する予測対象ブロック(予測ユニット、例えば、PU:Prediction Unit)の動きベクトルを決定するように構成されている。
ここで、かかる参照フレームは、対象フレームとは異なるフレームである。また、かかる参照ユニットは、予測対象ブロックについて参照されるブロックである。
また、インター予測部11は、予測対象ブロック毎に、予測対象ブロック及び動きベクトルに基づいて、予測画像信号を生成するように構成されている。インター予測部11は、かかる予測画像信号を減算器13及び加算器14に出力するように構成されている。
イントラ予測部12は、イントラ予測(フレーム内予測)によって予測画像信号を生成するように構成されている。
具体的には、イントラ予測部12は、対象フレームに含まれる参照ユニットを特定し、特定された参照ユニットに基づいて、予測対象ブロック毎に予測画像信号を生成するように構成されている。また、イントラ予測部12は、かかる予測画像信号を減算器13及び加算器14に出力するように構成されている。
例えば、かかる参照ユニットは、予測対象ブロックに隣接するブロック(隣接ブロック)である。
減算器13は、入力画像信号から予測画像信号を減算し、入力画像信号と予測画像信号との差分である予測残差信号を生成して変換・量子化部15に出力するように構成されている。
加算器14は、逆変換・逆量子化部16から出力される予測残差信号にインター予測部111又はイントラ予測部112から出力される予測画像信号を加算してフィルタ前復号信号を生成し、かかるフィルタ前復号信号をイントラ予測部12及びインループフィルタ18に出力するように構成されている。
ここで、フィルタ前復号信号は、イントラ予測部12で用いられる参照ユニットを構成する。
変換・量子化部15は、入力された予測残差信号に対する変換処理を行い、係数レベル値を取得するように構成されている。さらに、変換・量子化部15は、かかる係数レベル値の量子化を行うように構成されていてもよい。
ここで、かかる変換処理は、上述の予測残差信号を周波数成分信号に変換する処理である。なお、かかる変換処理では、離散コサイン変換(DCT:Discrete Cosine Transform)に対応する基底パターン(変換行列)が用いられてもよく、離散サイン変換(DCT:Discrete Sine Transform)に対応する基底パターン(変換行列)が用いられてもよい。
逆変換・逆量子化部16は、変換・量子化部15から出力された係数レベル値に対する逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部16は、かかる逆変換処理に先立って、かかる係数レベル値の逆量子化を行うように構成されていてもよい。
ここで、かかる逆変換処理及び逆量子化は、変換・量子化部15で行われる変換処理及び量子化とは逆の手順で行われる。
符号化部17は、変換・量子化部17から出力された係数レベル値を符号化し、符号化データを生成して出力するように構成されている。
例えば、かかる符号化は、かかる係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化である。
また、符号化部17は、かかる係数レベル値に加えて、画像復号装置30における復号処理で用いられる制御データを符号化するように構成されている。
ここで、かかる制御データは、符号化対象ユニット(CU:Coding Unit)のサイズや、予測対象ブロックのサイズや、変換ユニット(TU:Transform Unit)のサイズ等のサイズデータを含んでもよい。
インループフィルタ18は、加算器14から出力されるフィルタ前復号信号に対してフィルタ処理を行うことでフィルタ後復号信号を生成し、かかるフィルタ後復号信号をフレームバッファ19に出力するように構成されている。
例えば、かかるフィルタ処理は、ブロック(予測対象ブロック又は変換ユニット)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ19は、インター予測部11で用いられる参照フレームを蓄積するように構成されている。
ここで、かかるフィルタ後復号信号は、インター予測部11で用いられる参照フレームを構成する。
(インター予測部11について)
以下、図3を参照して、本実施形態に係る画像符号化装置10のインター予測部11について説明する。図3は、本実施形態に係るインター予測部11について示す図である。
図3に示すように、インター予測部11は、動き探索部11aと、マージ部11bと、動き補償予測部(以下、MC予測部)11cとを有する。
動き探索部11aは、入力画像信号(原画像)やフレームバッファ19に格納されている参照フレーム(再構成画像)や予測対象ブロックの隣接ブロックの動きベクトルを入力とし、予測対象ブロック毎に動きベクトル及び参照フレームを決定するように構成されている。
例えば、具体的には、動き探索部11aは、動き補償(MC)予測部11a1と、コスト算出部11a2とを有する。
動き補償(MC)予測部11a1は、予測対象ブロックに対応する入力画像信号に対して、参照フレーム及び参照フレーム内の参照位置を変えながら予測画像信号を生成するように構成されている。
コスト算出部11a2は、動き補償予測部11a1によって生成された予測画像信号と入力画像信号とのコストが最小となり、かつ、隣接ブロックの動きベクトルとの符号量差が最小になる参照位置(すなわち、動きベクトル)及び参照フレームを決定するように構成されている。
ここで、コスト算出部に11a2において用いられるコスト関数として、例えば、二乗誤差和(SSE:Sum of Squared Error)や絶対値誤差和(SAD:Sum of Absolute Difference)等が想定され、コスト算出部11a2は、演算負荷に基づいて、適宜、どのコスト関数を用いるべきか選択するように構成されていてもよい。
画像符号化装置10は、コスト算出部11a2によって決定された動きベクトル及び参照フレームに係る情報を、符号化データに重畳して画像復号装置30に伝送するように構成されている。
マージ部11bは、入力画像信号とフームバッファ19に格納されている参照フレームと隣接ブロックの動きベクトルとから、予測対象ブロックに対するマージ候補(動きベクトル)を決定するように構成されている。
画像符号化装置10は、マージ部11bによって決定されたマージ候補に係る情報を、符号化データに重畳して画像復号装置30に伝送するように構成されている。
(MC予測部11cについて)
以下、図4を参照して、本実施形態に係る画像符号化装置10のインター予測部11のMC予測部11cについて説明する。図4は、本実施形態に係る画像符号化装置10のインター予測部11のMC予測部11cについて示す図である。
図4に示すように、MC予測部11cは、標準動き補償予測部(標準MC予測部)11c1と、OBMC適用判定部11c2と、OBMC適用部11c3とを有する。
ここで、MC予測部11cは、動き探索部11aからの動きベクトル及び参照フレームに係る情報(参照画像リスト及び参照画像インデックス)や、マージ部11bからのマージ候補に係る情報に基づいて、予測画像信号(予測画素値)を出力するように構成されている。なお、出力される予測画像信号は、OBMCが適用されるか否かによって変わる。
また、画像符号化装置10からOBMC適用判定フラグが送られる場合は、MC予測部11cは、かかるOBMC適用判定フラグに基づいて、OBMCの適否について判定するように構成されている。
具体的には、標準MC予測部11c1は、ブロック単位の動きベクトル及び参照フレームに基づいて、予測対象ブロックの予測画像信号を生成するように構成されている。
OBMC適用判定部11c2は、予測対象ブロックに対してOBMCを適用するか否かについて判定するように構成されている。ここで、OBMCを適用しないと判定された場合は、OBMC適用判定部11c2は、標準MC予測部11c1によって生成された予測画像信号をそのまま出力するように構成されている。
一方、OBMCを適用すると判定された場合は、OBMC適用部11c3は、予測対象ブロックに対してOBMCを適用し、生成された予測画像信号を出力するように構成されている。ここで、OBMCが適用される場合には、画像符号化装置10は、OBMC適用判定フラグを符号化データに重畳して画像復号装置30に伝送するように構成されている。
なお、具体的なOBMCを適用するか否かについての判定方法やOBMCの適用方法については後述する。
(画像復号装置30について)
以下、図5を参照して、本実施形態に係る画像復号装置30について説明する。図5は、本実施形態に係る画像復号装置について示す図である。
図5に示すように、画像復号装置30は、復号部31と、逆変換・逆量子化部32と、加算器33と、インター予測部34と、イントラ予測部35と、インループフィルタ36と、フレームバッファ37とを有する。
復号部31は、画像符号化装置10によって生成された符号化データを復号し、係数レベル値を復号するように構成されている。
ここで、例えば、復号は、画像符号化装置10の符号化部17で行われるエントロピー符号化とは逆の手順のエントロピー復号である。
また、復号部31は、符号化データの復号処理によって制御データを取得するように構成されていてもよい。
上述したように、かかる制御データは、符号化ユニットのサイズや予測対象ブロックのサイズや変換ユニットのサイズ等のサイズデータを含んでもよい。また、かかる制御データは、第2成分の予測サンプルの生成に用いられる入力ソースを示す情報要素を含んでもよい。ここで、第2成分とは、例えば、画像信号を構成する輝度信号以外の色差信号を指す。
逆変換・逆量子化部32は、復号部31から出力された係数レベル値に対する逆変換処理を行うように構成されている。なお、逆変換・逆量子化部32は、かかる逆変換処理に先立って、かかる係数レベル値の逆量子化を行うように構成されていてもよい。
ここで、かかる逆変換処理及び逆量子化は、変換・量子化部15で行われる変換処理及び量子化とは逆の手順で行われる。
加算器33は、逆変換・逆量子化部32から出力された予測残差信号に予測画像信号を加算してフィルタ前復号信号を生成し、かかるフィルタ前復号信号をイントラ予測部35及びインループフィルタ36に出力するように構成されている。
ここで、かかるフィルタ前復号信号は、イントラ予測部35で用いられる参照ユニットを構成する。
インター予測部34は、画像符号化装置10のインター予測部11と同様に、インター予測(フレーム間予測)によって予測画像信号を生成するように構成されている。
具体的には、インター予測部34は、符号化対象フレームとフレームバッファ37に格納される参照フレームとの比較によって、かかる参照フレームに含まれる参照ユニットを特定し、特定された参照ユニットに対する予測対象ブロックの動きベクトルを決定するように構成されている。
ここで、インター予測部34は、予測対象ブロック及び動きベクトルに基づいて、予測対象ブロック毎に予測画像信号を生成するように構成されている。インター予測部34は、かかる予測画像信号を加算器33に出力するように構成されている。
イントラ予測部35は、画像符号化装置10のイントラ予測部12と同様に、イントラ予測(フレーム内予測)によって予測画像信号を生成するように構成されている。
具体的には、イントラ予測部35は、符号化対象フレームに含まれる参照ユニットを特定し、特定された参照ユニットに基づいて、予測対象ブロック毎に予測画像信号を生成するように構成されている。イントラ予測部35は、かかる予測画像信号を加算器33に出力するように構成されている。
インループフィルタ36は、画像符号化装置10のインループフィルタ18と同様に、加算器33から出力されたフィルタ前復号信号に対してフィルタ処理を行うことでフィルタ後復号信号を生成し、かかるフィルタ後復号信号をフレームバッファ37に出力するように構成されている。
例えば、かかるフィルタ処理は、ブロック(予測対象ブロック又は変換ユニット)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ37は、画像符号化装置10のフレームバッファ19と同様に、インター予測部34で用いられる参照フレームを蓄積するように構成されている。
ここで、かかるフィルタ後復号信号は、インター予測部11で用いられる参照フレームを構成する。
(インター予測部34について)
以下、図6を参照して、本実施形態に係る画像復号装置30のインター予測部34について説明する。図6は、本実施形態に係る画像復号装置30のインター予測部34について示す図である。
図6に示すように、インター予測部34は、動きベクトル復号部34aと、動き補償(MC)予測部34bとを有する。
動きベクトル復号部34aは、符号化データに重畳されたブロック毎の動きベクトル及び参照フレームに係る情報(参照画像リスト及び参照画像インデックス)や、マージ候補に係る情報や、OBMC適用判定フラグを復号し、MC予測部34bに出力するように構成されている。
MC予測部34bは、動きベクトル復号部34aによって復号された動きベクトル及び参照フレームに係る情報やマージ候補に係る情報を入力とし、出力画像信号(予測画素値)を生成して出力するように構成されている。
(MC予測部34bについて)
以下、図7を参照して、本実施形態に係る画像復号装置30のインター予測部34のMC予測部34bについて説明する。図7は、本実施形態に係る画像復号装置30のインター予測部34のMC予測部34bについて示す図である。
図7に示すように、MC予測部34bは、標準動き補償予測部(標準MC予測部)34b1と、OBMC適用判定部34b2と、OBMC適用部34b3とを有する。
MC予測部34bは、動きベクトル復号部34aからの動きベクトル及び参照フレームに係る情報(参照画像リスト及び参照画像インデックス)やマージ候補に係る情報やOBMC適用判定フラグに基づいて、予測画像信号(予測画素値)を生成して出力するように構成されている。なお、出力される予測画像信号は、OBMCが適用されるか否かによって変わる。
具体的には、標準MC予測部34b1は、ブロック単位の動きベクトル及び参照フレームに係る情報に基づいて、予測対象ブロックの予測画像信号を生成するように構成されている。
OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用するか否かについて判定するように構成されている。ここで、OBMCを適用しないと判定された場合は、OBMC適用判定部34b2は、標準MC予測部34b1によって生成された予測画像信号をそのまま出力するように構成されている。
一方、OBMCを適用すると判定された場合は、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用し、生成された予測画像信号を出力するように構成されている。
なお、具体的なOBMCを適用するか否かについての判定方法やOBMCの適用方法については後述する。
OBMC適用部34b3は、OBMC適用判定部34b2による判定結果に基づいて、すなわち、OBMCを適用すると判定された場合に、予測対象ブロックに対してOBMCを適用するように構成されている。
ここで、OBMCは、予測対象ブロックの予測画像信号と、予測対象ブロックの隣接ブロックの動きベクトル及び参照フレームに係る情報に基づいて生成される予測画像信号とを加重平均することによって、予測対象ブロックの予測画像信号を補正する重複動き補償処理である。
以下、図8~図23を参照して、具体的なOBMCを適用するか否かについての判定方法やOBMCの適用方法について説明する。以下の例では、画像復号装置30におけるMC予測部34bについて説明するが、画像符号化装置10におけるMC予測部11cについても同様の機能を有するものとする。
また、上述の判定方法及び適用方法は、予測対象ブロックの動きベクトルと隣接ブロックの動きベクトルがそれぞれ異なる場合に適用される。両者の動きベクトルが等しい又はその差分が小さいとみなされる場合には、予測対象ブロックと隣接ブロックとの境界にOBMCを適用する意味がない。したがって、以下、本明細書では、予測対象ブロックの動きベクトルと隣接ブロックの動きベクトルがそれぞれ異なることを前提として説明する。
なお、書面簡略化のために、上述の判定方法及び適用方法が予測対象ブロック単位で行われる場合について事例として挙げるが、上述の判定方法及び適用方法は、予測対象ブロックを分割したサブブロック単位で実施されてもよい。
(第1実施形態)
以下、図8を参照して、本発明の第1実施形態について説明する。図8は、本実施形態におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
本実施形態において、MC予測部34bのOBMC適用判定部34b2は、予測対象ブロックの予測方向の種類(片方向予測又は双方向予測)に基づいて、予測対象ブロックに対してOBMCを適用するかについて判定するように構成されている。
図8に示すように、ステップS101において、OBMC適用判定部34b2は、予測対象ブロックに片方向予測が適用されているか否かについて判定する。
予測対象ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS102に進み、予測対象ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS103に進む。
ステップS102において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS103において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
なお、予測対象ブロックに双方向予測が適用されている場合に予測対象ブロックに対してOBMCを適用する場合、予測対象ブロックに片方向予測が適用されている場合に予測対象ブロックに対してOBMCを適用する場合と比べて、追加でフェッチが必要なメモリバンド幅と演算回数が増大する。したがって、本実施形態に係る画像符号化装置10及び画像復号装置30によれば、予測対象ブロックに片方向予測が適用されている場合に限り予測対象ブロックに対してOBMCを適用することによって、意図しないメモリバンド幅及び演算回数の増大を防ぐことができる。
(第2実施形態)
以下、図9を参照して、本発明の第2実施形態について説明する。図9は、本実施形態におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
本実施形態において、MC予測部34bのOBMC適用判定部34b2は、予測対象ブロックのサイズが所定閾値以上である場合に、予測対象ブロックに対してOBMCを適用すると判定するように構成されている。
図9に示すように、ステップS201において、OBMC適用判定部34b2は、予測対象ブロックのサイズが所定閾値以上であるか否かについて判定する。
予測対象ブロックのサイズが所定閾値以上であると判定された場合、本手順は、ステップS202に進み、予測対象ブロックのサイズが所定閾値未満であると判定された場合、本手順は、ステップS203に進む。
ステップS202において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS203において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
ここで、かかる所定閾値は、例えば、OBMCを適用する際に必要なメモリバンド幅及び演算回数が、OBMCを適用しない場合の双方向予測におけるメモリバンド幅及び演算回数と比較して、小さくなる値に設定してもよい。
また、上述の例では、OBMC適用判定部34b2は、予測対象ブロックの画素数を用いて予測対象ブロックのサイズを判定しているが、その他の手法として、予測対象ブロックの高さ及び幅を用いて予測対象ブロックのサイズを判定するように構成されていてもよい。
また、OBMC適用判定部34b2は、かかる所定閾値ではなく、テーブルを用いて、予測対象ブロックに対してOBMCを適用すると判定するように構成されていてもよい。
なお、サイズが比較的小さい予測対象ブロックに対してOBMCを適用する場合、追加でフェッチが必要なメモリバンド幅と演算回数が増大する。したがって、本実施形態に係る画像符号化装置10及び画像復号装置30によれば、予測対象ブロックのサイズに基づいて予測対象ブロックに対してOBMCを適用するか否かについて制御することによって、意図しないメモリバンド幅及び演算回数の増大を防ぐことができる。
(第3実施形態)
以下、図10を参照して、本発明の第1実施形態について説明する。図10は、本実施形態におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
本実施形態において、MC予測部34bのOBMC適用判定部34b2は、予測対象ブロックの隣接ブロックの予測方向の種類(片方向予測又は双方向予測)に基づいて、予測対象ブロックに対してOBMCを適用するかについて判定するように構成されている。
図10に示すように、ステップS301において、OBMC適用判定部34b2は、隣接ブロックに片方向予測が適用されているか否かについて判定する。
隣接ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS302に進み、隣接ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS303に進む。
ステップS302において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS303において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
なお、隣接ブロックに双方向予測が適用されている場合に予測対象ブロックに対してOBMCを適用する場合、隣接ブロックに片方向予測が適用されている場合に予測対象ブロックに対してOBMCを適用する場合と比べて、追加でフェッチが必要なメモリバンド幅と演算回数が増大する。したがって、本実施形態に係る画像符号化装置10及び画像復号装置30によれば、隣接ブロックに片方向予測が適用されている場合に限り予測対象ブロックに対してOBMCを適用することによって、意図しないメモリバンド幅及び演算回数の増大を防ぐことができる。
(変更例1)
以下、図11を参照して、本発明の変更例1について、上述の第1~第3実施形態との相違点に着目して説明する。図11は、本変更例1におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
図11に示すように、ステップS401において、MC予測部34bは、予測対象ブロックに片方向予測が適用されているか否かについて判定する。
予測対象ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS403に進み、予測対象ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS402に進む。
ステップS402において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
ステップS403において、OBMC適用判定部34b2は、予測対象ブロックのサイズが所定閾値以上であるか否かについて判定する。
予測対象ブロックのサイズが所定閾値以上であると判定された場合、本手順は、ステップS405に進み、予測対象ブロックのサイズが所定閾値未満であると判定された場合、本手順は、ステップS404に進む。
ステップS404において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
ステップS405おいて、MC予測部34bは、隣接ブロックに片方向予測が適用されているか否かについて判定する。
隣接ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS406に進み、隣接ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS407に進む。
ステップS406において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS407において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
上述のように、本変更例1では、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用するに際して、第1に、予測対象ブロックに対して片方向予測が適用されているか否かについて判定し、第2に、予測対象ブロックのサイズが所定閾値以上であるか否かについて判定し、第3に、隣接ブロックに対して片方向予測が適用されているか否かについて判定する。
本変更例1において、予測対象ブロックに対して片方向予測が適用されているか否かについての判定の後に、予測対象ブロックのサイズが所定閾値以上であるか否かについての判定が行われる効果は、以下の通りである。
上述の第1実施形態によれば、予測対象ブロックに対して片方向予測が適用されている場合には、一律にOBMCを適用するとしていたが、予測対象ブロックに対して片方向予測が適用されているか否かについての判定の後に予測対象ブロックのサイズに基づく制約を導入することで、OBMC適用時のワーストケースを回避することができるためである。
かかるワーストケースとは、符号化ツリーブロックが最小の符号化対象ブロック或いは予測対象ブロックで埋め尽くされる場合に発生し得るもので、このときにOBMC適用に必要なメモリバンド幅及び演算回数は最大となる。つまり、このワーストケースこそが、OBMC適用時に必要なメモリバンド幅及び演算回数といえる。
したがって、OBMCの適否の判定に予測対象ブロックのサイズを導入することで、例えば、予測対象ブロックに対して片方向予測が適用されており且つOBMCが適用される場合に必要なメモリバンド幅及び演算回数を、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用される場合の標準MCに必要なメモリバンド幅及び演算回数と比較して、小さくすることができる。
また、本変更例1において、予測対象ブロックのサイズが所定閾値以上であるか否かについての判定の後に、隣接ブロックに対して片方向予測が適用されているか否かについての判定が行われる効果は、以下の通りである。
上述の構成によれば、予測対象ブロックに対して片方向予測が適用されており且つ予測対象ブロックのサイズが所定閾値以上である場合には、一律にOBMCを適用するとしていたが、かかる場合であっても、隣接ブロックに双方向予測が適用されている場合には、必要なメモリバンド幅及び演算回数がワーストケースを超える可能性がある。
これに対して、隣接ブロックに対して双方向予測が適用されている場合には、OBMCを非適用とすることで、OBMC適用時に必要なメモリバンド幅及び演算回数を、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用される場合の標準MCに必要なメモリバンド幅及び演算回数と比較して、小さくすることができる。
ここで、例えば、予測対象ブロック及びOBMC関連のパラメータが以下のような値を持つ場合の条件分岐の具体例を示す。
・ 符号化ツリーブロック:128×128
・ 予測対象ブロックの最小サイズ:4×4
・ 輝度に対する標準動き補償タップ数:8
・ 色差に対する標準動き補償タップ数:4
・ 輝度に対するOBMCのタップ数:8
・ 色差に対するOBMCのタップ数:4
・ OBMCライン数:4ライン
・ 予測対象ブロックでの双方向予測禁止サイズ:4×4
ここで、図11の条件分岐に従えば、OBMCが適用されるか否かについての判定条件は、以下のように設定される。なお、以下の所定閾値は、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用される場合の標準MCに必要なメモリバンド幅を超えないように設定されている。ここで、S及びLは、予測対象ブロックの高さと横幅とを比較して得られた短辺と長辺を示している(S≦L)。
・ 予測対象ブロックに対して片方向予測が適用されている場合で、
-(S=4且つL<64)又は(S=8且つL=8)⇒ OBMCを適用しない。
-(S=4且つL≧64)又は(S=8且つL≧16)又は(S≧16)⇒隣接ブロックに対して片方向予測が適用されている場合にOBMCを適用する。・ 予測対象ブロックが双方向予測である場合、OBMCを適用しない。
一方で、OBMC適用判定部34b2は、所定閾値の代わりに、例えば、図12に示すようなテーブルに基づいて、OBMCの適否について判定するように構成されていてもよい。
図12の「短辺」及び「長辺」は、予測対象ブロックの高さと横幅とを比較して得られた短辺及び長辺を示しており、図12の「非適用」は、OBMCを適用しないことを示し、図12の「片方向」は、隣接ブロックに対して片方向予測が適用されている場合にOBMCを適用することを示す。また、図12において、図示されていないが、「双方向」は、隣接ブロックに対して片方向予測又は双方向予測が適用されている場合にOBMCを適用することを意味する。
上述の例では、メモリバンド幅を超えない値を目安に設定した所定閾値或いはテーブル(図12)について述べたが、演算回数を目安とした場合には、かかる所定閾値の設定方法が、メモリバンド幅で述べたように、予測対象ブロックのサイズ(高さと横幅)で対称な閾値にはならない。
何故なら、演算回数は、MCの処理順によって変わるためである。そのため、演算回数を目安としたテーブルは、例えば、図13に示すように、サイズで非対称な値となり得る。
実際の所定閾値の設定やテーブルの設計については、上記で挙げたパラメータより、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用されている場合よりも、メモリバンド幅及び演算回数が小さくなるように設定するが、メモリバンド幅及び演算回数に対してそれぞれ求まる条件のうち、より厳しい条件を設定するようにする。
(第4実施形態)
以下、図14及び図15を参照して、本発明の第4実施形態について説明する。図14は、本実施形態におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
上述の変更例1では、予測対象ブロックのサイズが所定閾値以上となる場合は、OBMCの適用対象となるが、実際に、OBMCが適用されるケースは、隣接ブロックに対して片方向予測が適用されている場合に制限されていた。
しかしながら、予測対象ブロックのサイズによっては、隣接ブロックに対して双方向予測が適用される場合であっても、OBMCの適用に必要なメモリバンド幅と演算回数が、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用されている場合の標準MCに必要なメモリバンド幅及び演算回数よりも小さくできるケースがあり、その場合は、隣接ブロックに対して双方向予測が適用されている場合であっても、OBMCを適用した方が、符号化性能が向上する。
図14に示すように、ステップS501において、OBMC適用判定部34b2は、予測対象ブロックに片方向予測が適用されているか否かについて判定する。
予測対象ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS503に進み、予測対象ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS502に進む。
ステップS502において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
ステップS503において、OBMC適用判定部34b2は、予測対象ブロックのサイズについて判定する。
予測対象ブロックのサイズが閾値TH1未満であると判定された場合、本手順は、ステップS504に進み、予測対象ブロックのサイズが閾値TH1以上閾値TH2未満であると判定された場合、本手順は、ステップS506に進み、予測対象ブロックのサイズが閾値TH以上であると判定された場合、本手順は、ステップS505に進む。
ステップS504において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
ステップS505において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS506において、OBMC適用判定部34b2は、隣接ブロックに片方向予測が適用されているか否かについて判定する。
隣接ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS507に進み、隣接ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS5087に進む。
ステップS507において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
ステップS508において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用しないと判定し、標準MC予測部34b1によって生成された予測画像信号をそのまま出力する。
本実施形態では、OBMC適用判定部34b2は、2つの閾値(ただし、閾値TH1≦閾値TH2)を用いるように構成されている。
そして、OBMC適用判定部34b2は、予測対象ブロックのサイズが閾値TH1未満である場合には、予測対象ブロックに対してOBMCを適用しないと判定し、予測対象ブロックのサイズが閾値TH1以上且つ閾値TH2未満である場合には、隣接ブロックに対して片方向予測が適用されているか否かについての判定に移行し、予測対象ブロックのサイズが閾値TH2以上である場合には、隣接ブロックに対して双方向予測が適用されているか否かに関わらず予測対象ブロックに対してOBMCを適用すると判定する。
すなわち、OBMC適用判定部34b2は、予測対象ブロックのサイズに基づいて、隣接ブロックに適用されている予測方向の種類(片方向予測或いは双方向予測)を制御して、予測対象ブロックに対してOBMCを適用するかについて判定するように構成されている。
ここで、例えば、予測対象ブロック及びOBMC関連のパラメータが以下のような値を持つ場合の条件分岐の具体例(閾値の設定方法)を示す。
・ 符号化ツリーブロック:128×128
・ 予測対象ブロックの最小サイズ:4×4
・ 輝度信号に対する標準動き補償タップ数:8
・ 色差信号に対する標準動き補償タップ数:4
・ 輝度信号に対するOBMCのタップ数:8
・ 色差信号に対するOBMCのタップ数:4
・ OBMCライン数:4ライン
・ 予測対象ブロックでの双方向予測禁止サイズ:4×4
なお、上記は画像信号が輝度信号(Y)と色差信号(CbCr)がそれぞれ4:2:0で構成される事例を示しており、これが他の構成(4:4:4や4:2:2)となる場合は適宜OBMCのタップ数などを変更してもよい。
ここで、OBMCが適用されるか否かについての判定条件は、以下のように設定される。なお、以下の閾値は、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用される場合の標準MCに必要なメモリバンド幅を超えないように設定されている。ここで、S及びLは、予測対象ブロックの高さと横幅を比較して得られた短辺と長辺を示している(S≦L)。
・ 予測対象ブロックに対して片方向予測が適用されている場合で、
-(S=4且つL<64)又は(S=8且つL=8)⇒ OBMCを適用しない。
-(S=4且つ&L≧64)又は(S=8且つL≧16)又は(S≧16)⇒ 隣接ブロックに対して片方向予測が適用されている場合にOBMCを適用する。
-(S≧16)⇒ 隣接ブロックに対して双方向予測が適用されている場合であってもOBMCを適用する。・ 予測対象ブロックが双方向予測である場合、OBMCを適用しない。
一方で、OBMC適用判定部34b2は、所定閾値の代わりに、例えば、図15に示すようなテーブルに基づいて、OBMCの適否について判定するように構成されていてもよい。なお、図15のグレーアウトされた箇所は、上述の短辺Sと長辺LでS≧Lとなる個所のために、考慮不要である。
(第5実施形態)
以下、図16を参照して、本発明の第4実施形態について説明する。
上述の第4実施形態では、OBMCのタップ数(重複動き補償タップ数)が「8」であるケースについて説明したが、OBMCのタップ数が「8」から「4」になった場合及びOBMCのタップ数が「8」から「2」になった場合には、OBMC適用時に必要なメモリバンド幅及び演算回数が小さくなるため、OBMC適用の制約が緩和される。
例えば、上述の実施形態では、フィルタのタップ数のみを変更した場合に、OBMCが適用されるか否かについての判定条件は、以下のように設定される。ただし、以下の閾値は、上述のケースと同様に、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用される場合の標準MCに必要なメモリバンド幅を超えないように設定されている。
・ 予測対象ブロックに対して片方向予測が適用されている場合で、
-(S=4且つL=4)⇒ 2タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)。
-(S=4且つL>4且つL<64)又は(S=8且つL=8)⇒ 4タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)。
-(S=4且つH≦64)又は(S=8且つL≧16)又は(S≧16)⇒ 8タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)。
・ 予測対象ブロックが双方向予測である場合、OBMCを適用しない。
一方で、OBMC適用判定部34b2は、所定閾値の代わりに、例えば、図16に示すようなテーブルに基づいて、OBMCの適否について判定するように構成されていてもよい。
ここで、上述の条件で分岐されるタップ数は、下位互換であり、例えば、8タップのOBMCが使用できる条件では、8タップの代わりに4タップ或いは2タップのOBMCを使用してもよい。
さらに、上述のように、予測対象ブロックのサイズに基づいて、隣接ブロックのOBMCタップ数を制御することにより、サイズの小さな予測対象ブロックに対するOBMCの適用制約を緩和させてもよい。例えば、上述の例では、図15でOBMCが非適用であったサイズの小さな予測対象ブロック(4×4)に対して、タップ数を8タップから2タップに変更することで、当該サイズの予測対象ブロックに対してもOBMCの適用を可能としている。
図16において、「2tap」は、2タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)ことを示し、「4tap」は、4タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)ことを示し、「8tap」は、8タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)ことを示す。ただし、図16中のタップ数は、下位互換であり、例えば、「4tap」の場合には、2タップのOBMCを適用してもよいし、「8tap」の場合には、2タップ又は4タップのOBMCを適用してもよい。
ここで、4タップについては、例えば、色差信号向けの標準MCフィルタ(4タップ)を流用してもよい。また、2タップについては、例えば、bi-linearフィルタを用いてもよい。なお、4タップにおいて、色差信号向けの標準MCを流用すれば、ハードウェア実装時に追加のフィルタ設計が不要となるという効果が得られる。
上述のように、本実施形態では、OBMC適用判定部34b2は、予測対象ブロックのサイズに基づいて、OBMCのタップ数を制御して、予測対象ブロックに対してOBMCを適用するかについて判定するように構成されている。
(変更例2)
ここまでは、予測対象ブロックのサイズに応じた隣接ブロックの予測方向の種類或いはOBMCのタップ数を制御する方法について述べたが、OBMCが適用されず且つ予測対象ブロックに対して双方向予測が適用されている場合の標準MCに必要なメモリバンド幅及び演算回数よりも、OBMC適用時に必要なメモリバンド幅と演算回数が下回り且つ符号化性能向上幅を最大限に狙うために、予測対象ブロックのサイズに応じた隣接ブロックの予測方向の種類及びOBMCのタップ数の双方を組み合わせて、OBMCの適用可否の条件を最大限緩和する手法が考えられる。
かかる場合、閾値或いはテーブルは、上述と同じ思想で設計される。例えば、閾値については、
・ 予測対象ブロックに対して片方向予測が適用されている場合で、
-(S=4且つL=4)⇒ 2タップのOBMCを適用する(ただし、隣接ブロックには片方向予測が適用されている場合)。
-(S=4且つL=8)⇒ 2タップのOBMCを適用する(ただし、隣接ブロックに双方向予測が適用されている場合も許容)。
-(S=4且つL≧16)又は(S=8且つL≧8)⇒ 4タップのOBMCを適用する(ただし、隣接ブロックに双方向予測が適用されている場合も許容)。
-(S≧16)⇒ 8タップのOBMCを適用する(ただし、隣接ブロックに双方向予測が適用されている場合も許容)。
・ 予測対象ブロックが双方向予測である場合、OBMCを適用しない。
ここで、上述の条件で分岐されるOBMCのタップ数は、下位互換であり、例えば、8タップのOBMCが使用できる条件では、8タップの代わりに4タップ或いは2タップのOBMCを使用してもよい。
また、上述の条件で分岐される隣接ブロックの予測方向について、双方向予測の適用が許容されている条件は、片方向予測を使用してもよい。
さらに、上述のように、予測対象ブロックのサイズに基づいて、隣接ブロックのOBMCタップ数又は予測方向の種類を制御することにより、サイズの小さな予測対象ブロックに対するOBMCの適用制約を緩和させてもよい。
例えば、上述の例では、図15でOBMCが非適用であったサイズの小さな予測対象ブロック(4×4)に対して、タップ数を8タップから2タップに変更することで、当該サイズの予測対象ブロックに対してもOBMCの適用を可能としている。また、4×8又は8×4の予測対象ブロックに対しては、タップ数を8タップから2タップに変更することで、双方向予測である隣接ブロックに対してもOBMCを適用しても、OBMCを適用せず且つ双方向予測である予測対象ブロックの標準MCに対するメモリバンド幅と演算回数を超えないことから、2タップの隣接双方向予測のOBMCを可能としている。
フィルタのタップ数及び予測方向の種類の組み合わせについては、上述の通り、OBMCを適用せず且つ予測対象ブロックが双方向予測である場合の標準MCに必要なメモリバンド幅及び演算回数に対して、OBMC適用時に必要なメモリバンド幅及び演算回数が超えないような組み合わせ条件であれば、設計者の意思で自由に設定してもよい。
一方で、OBMC適用判定部34b2は、所定閾値の代わりに、例えば、図17に示すようなテーブルに基づいて、OBMCの適否について判定するように構成されていてもよい。
なお、図17のテーブルによれば、OBMC適用判定部34b2は、第1サイズ(例えば、4×4)の予測対象ブロックに対して適用される隣接ブロックのOBMCのタップ数(「2」)を、第1サイズよりも大きい第2サイズ(例えば、128×128)の予測対象ブロックに対して適用される隣接ブロックのOBMCのタップ数(「8」)よりも小さくするように構成されている。
或いは、図17のテーブルによれば、OBMC適用判定部34b2は、第1サイズ(例えば、4×4)の予測対象ブロックに対して適用される隣接ブロックの予測方向の種類(片方向)を、第1サイズよりも大きい第2サイズ(例えば、4×8または8×4)の予測対象ブロックに対して適用される隣接ブロックの予測方向の種類(双方向)よりも少なくするように構成されている。
ここで、上記隣接ブロックに対するOBMCフィルタタップ数または予測方向の種類を分岐させる閾値は、図17に示すように、複数あってもよい。(変更例3)
ここまでは、予測対象ブロックのサイズに応じた隣接ブロックの予測方向の種類或いはOBMCのタップ数を制御する方法について述べたが、OBMC適用時のメモリバンド幅及び演算回数を低減させる同様な手段として、予測対象ブロックのサイズに応じたOBMC適用時の隣接ブロックの動きベクトルの精度の変更やOBMCの適用ライン数の変更が挙げられる。
動きベクトルの精度の変更に関しては、例えば、予測対象ブロックのサイズが所定閾値よりも小さい場合には、動きベクトルの精度を小数から整数化し、予測対象ブロックのサイズが所定閾値よりも大きい場合には、動きベクトルの精度を小数とするように構成されていてもよい。
また、予測対象ブロックのサイズが所定閾値よりも小さい場合には、OBMCの適用ライン数を減少させ、一方で、予測対象ブロックのサイズが所定閾値よりも大きい場合には、OBMCの適用ライン数を増大させるように構成されていてもよい。
かかる場合における閾値やテーブルの設定方法については、上述の実施形態や変更例のケースと同様であるため、説明を省略する。
(変更例4)
以下、図18及び図19を参照して、本発明の変更例4について、上述の実施形態或いは変更例との相違点に着目して説明する。図18は、本変更例4におけるインター予測部34のMC予測部34bの動作の一例を示すフローチャートである。
図18に示すように、ステップS601において、OBMC適用判定部34b2は、隣接ブロックに片方向予測が適用されているか否かについて判定する。
隣接ブロックに片方向予測が適用されていると判定された場合、本手順は、ステップS603に進み、隣接ブロックに片方向予測が適用されていないと判定された場合、本手順は、ステップS602に進む。
ステップS602において、OBMC適用判定部34b2は、所定方法により、隣接ブロックに適用されている予測方法を双方向予測から片方向予測に変換する。
ステップS603において、OBMC適用判定部34b2は、予測対象ブロックに対してOBMCを適用すると判定し、OBMC適用部34b3は、予測対象ブロックに対してOBMCを適用する。
本変更例4によれば、隣接ブロックに対して双方向予測が適用されている場合に、所定方法により、隣接ブロックに対して適用されている予測方法を双方向予測から片方向予測に変換することで、OBMCを適用するように構成されている。なお、かかる所定方法については後述する。
かかる変更例4によれば、隣接ブロックに対して適用されている予測方法を双方向予測から片方向予測に変換することで、OBMCが適用される予測対象ブロックの数を増やし且つOBMCに必要なメモリバンド幅及び演算回数を低減することができる。
上述のように、OBMC適用判定部34b2は、隣接ブロックに対して双方向予測が適用されている場合に、所定方法により、前記隣接ブロックに適用されている予測方法を双方向予測から片方向予測に変換するように構成されている。
以下、図19及び図20を参照して、隣接ブロックに対して適用されている予測方法を双方向予測から片方向予測に変換する際に用いられる所定方法について説明する。
図19において、「Cp」は、予測対象ブロックの現フレームであり、「Cn」は、隣接ブロックの現フレームであり、両者のPOC(Picture Order Count)は、同じ(「5」)である。
また、「Lp0」及び「Lp1」は、予測対象ブロックの2つの参照フレームであり、「Ln0」及び「Ln1」は、隣接ブロックの2つの参照フレームをそれぞれ示す。
なお、図20のテーブルには、「Lp0」、「Lp1」、「Ln0」及び「Ln1」は、それぞれ1つのPOCしか記載されていないが、これは、符号化データに重畳された参照画像リストと参照画像インデックスとが指し示すPOCであり、「Lp0」、「Lp1」、「Ln0」及び「Ln1」のPOCが、必ず1つであるとは限らない。ただし、設計者によって自由に参照フレームの枚数が設定できるが、参照画像リストと参照画像インデックスとによって一意にPOCは決まる。
ここで、隣接ブロックの予測方向を双方向予測から片方向予測に変換するには、隣接ブロックの参照フレームを一意に選択する必要があるが、以下では、予測対象ブロックの現フレームと予測対象ブロックの参照フレームと隣接ブロックの参照フレームとの相関に応じた手法について説明する。
(方法1)
方法1では、OBMC適用判定部34b2は、予測対象ブロックの現フレームCpと隣接ブロックの2つの参照フレームLn0/Ln1のそれぞれとのPOCの差の絶対値を比較するように構成されている。
例えば、図19及び図20の例のように、予測対象ブロックの現フレームCpのPOCが「5」であり、隣接ブロックの参照フレームLn0のPOCが「0」であり、隣接ブロックの参照フレームLn1のPOCが「8」である場合、|Cp-Ln0|=5、|Cp-Ln0|=3となるため、OBMC適用判定部34b2は、隣接ブロックの参照フレームLn1を選択する。
かかる方法は、POCの差の絶対値が小さい方が、予測精度が高くなりやすいという考えに基づいている。
すなわち、方法1では、OBMC適用判定部34b2は、予測対象ブロックの現フレームCpと隣接ブロックの参照フレームLn0/Ln1との間のPOC差の絶対値が小さい方を選択し、選択した隣接ブロックの参照フレームLn1を用いた片方向予測が隣接ブロックに適用されていると判定するように構成されている。
(方法2)
OBMC適用判定部34b2は、予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1とのPOCの差の絶対値を比較するように構成されている。
例えば、図19及び図20の例のように、予測対象ブロックの参照フレームLp0/Lp1のPOCが「4」/「6」であり、隣接ブロックの参照フレームLn0/Ln1のPOCが「0」/「8」である場合、|Lp0-Ln0|=4、|Lp0-Ln1|=4、|Lp1-Ln0|=6、|Lp1-Ln1|=2となるため、OBMC適用判定部34b2は、予測対象ブロックが参照フレームLp1を有する場合は、POCの差の絶対値が小さい隣接ブロックの参照フレームLn1を選択する。
ここで、予測対象ブロックが参照フレームLp0を有する場合は、POCの差の絶対値が隣接ブロックの参照フレームLn0/Ln1で等しいため、後述する選択手法で、隣接ブロックの参照フレームを一意に決定する。
かかる方法は、POCの差の絶対値が小さい方が、予測精度が高くなりやすいという考えに基づいている。
すなわち、方法2では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1との間のPOC差の絶対値が小さい方を選択し、選択した隣接ブロックの参照フレームLn1を用いた片方向予測が隣接ブロックに適用されていると判定するように構成されている。
(方法3)
方法3では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1とのPOCの差の絶対値を比較することで選択するように構成されている。
例えば、図19及び図20の例のように、予測対象ブロックの参照フレームLp0/Lp1のPOCが「4」/「6」であり、隣接ブロックの参照フレームLn0/Ln1のPOCが「0」/「8」である場合、|Lp0-Ln0|=4、|Lp0-Ln1|=4、|Lp1-Ln0|=6、|Lp1-Ln1|=2となるため、OBMC適用判定部34b2は、予測対象ブロックが参照フレームLp1を有する場合は、POCの差の絶対値が大きい隣接ブロックの参照フレームLn0を選択する。
ここで、予測対象ブロックが参照フレームLp0を有する場合は、POCの差の絶対値が隣接ブロックの参照フレームLn0/Ln1で等しいため、後述する選択手法で、隣接ブロックの参照フレームを一意に大きい方が、予測誤差が生じやすくなり、そのようなブロック(ブロック境界)に対してOBMCを寧ろ積極的に適用した方がよいという考えに基づいている。
すなわち、方法3では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1との間のPOC差の絶対値が大きい方を選択し、選択した隣接ブロックの参照フレームLn1を用いた片方向予測が隣接ブロックに適用されていると判定するように構成されている。
(方法4)
方法4では、OBMC適用判定部34b2は、予測対象ブロックの参照画像リスト及び参照画像インデックスが等しい隣接ブロックの参照フレームを選択するように構成されている。
すなわち、方法4では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームと等しい隣接ブロックの参照フレームを選択し、選択した隣接ブロックの参照フレームを用いた片方向予測が接ブロックに適用されていると判定するように構成されている。
かかる方法は、予測対象ブロックの参照画像リスト及び参照画像インデックスが等しい方の参照フレームを隣接ブロックで選択した場合に、予測対象ブロック及び隣接ブロックの予測方向が等しくなりやすいため、予測精度を向上させられるという考えに基づいている。
(方法5)
方法5では、OBMC適用判定部34b2は、予測対象ブロックの参照画像リスト及び参照画像インデックスが異なる隣接ブロックの参照フレームを選択するように構成されている。
かかる方法は、予測対象ブロックの参照画像リスト及び参照画像インデックスが異なる方の参照フレームを隣接ブロックで選択した場合に、予測対象ブロック及び隣接ブロックの予測方向が異なりやすいため、その影響で生じた予測誤差が生じやすくなり、予測誤差が生じやすくなり、そのようなブロック(ブロック境界)に対してはOBMCを積極的に適用した方がよいという考えに基づいている。
(方法6)
方法6では、予測対象ブロックの現フレームCpと隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値の比較において、絶対値が等しくなった場合の選択方法について説明する。
例えば、予測対象ブロックの現フレームCpと隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値が、|Cp-Ln0|=A、|Cp-Ln1|=Bで、A=Bとなる場合、OBMC適用判定部34b2は、新たに予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値を比較することで、隣接ブロックの参照フレームを一意に選択するように構成されている。
例えば、予測対象ブロックが参照フレームLp0を有する場合に、|Lp0-Ln0|=C、|Lp0-Ln1|=Dで、C<Dとなる場合は、OBMC適用判定部34b2は、絶対値が小さいLn0を隣接ブロックの参照フレームとして選択するように構成されている。
(方法7)
方法7では、予測対象ブロックの参照フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値の比較において、絶対値が等しくなった場合の選択方法について説明する。
例えば、予測対象ブロックの参照現フレームLp0/Lp1と隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値が、|Lp0-Ln0|=X、|Lp0-Ln1|=Yで、X=Yとなる場合、OBMC適用判定部34b2は、新たに予測対象ブロックの現フレームCpと隣接ブロックの参照フレームLn0/Ln1との間のPOCの差の絶対値を比較することで、隣接ブロックの参照フレームを一意に選択するように構成されている。
例えば、|Cp-Ln0|=U、|Cp-Ln1|=Vで、U<Vとなる場合は、OBMC適用判定部34b2は、絶対値が小さいLn0を隣接ブロックの参照フレームとして選択するように構成されている。
(方法8)
方法8では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームと隣接ブロックの参照フレームとの間のPOCの差の絶対値の比較で、絶対値が等しくなった場合に、隣接ブロックの参照フレームを予め定められたLn0(或いは、Ln1)に選択するように構成されている。
また、方法8では、OBMC適用判定部34b2は、予測対象ブロックの参照フレームと隣接ブロックの参照フレームとの間のPOCの差の絶対値の比較の結果に関わらず、隣接ブロックの参照フレームを予め定められたLn0(或いは、Ln1)に選択するように構成されていてもよい。
(変更例5)
なお、OBMC適用判定部34b2は、予測対象ブロック単位ではなく、非特許文献1に記載されているように、予測対象ブロックを分割した予測対象サブブロック単位で、OBMCを適用するか否かについて判定するように構成されていてもよい、
図21及び図22は、OBMCを適用するか否かについての判定及びOBMCを適用する際の処理単位として、予測対象ブロックを予測対象サブブロックに分割した事例を示している。
図21の例では、符号化対象ブロックに2つの予測対象ブロック#1/#2(16×32単位)が含まれている。ここで、OBMC適用判定部34b2は、かかる予測対象ブロック#1/#2の境界を4×4単位の予測対象サブブロックに分割して、かかる予測対象サブブロックに対してOBMCを適用するか否かについて判定する。
ここで、隣接ブロックが予測対象ブロックと異なる動きベクトルを持つ場合は、上述したように、OBMCの適否が判定され、OBMCが適用されると判定された場合は、予測対象ブロックの境界がOBMCによって平滑化され、予測誤差を低減し、結果的に、客観性能が向上する。
図22の例は、予測対象ブロックが符号化対象ブロック内で異なる動きベクトルを持つケースについて示す。
予測対象ブロックが符号化対象ブロック内で異なる動きベクトルを持つ場合とは、例えば、非特許文献1で提案されているATMVP(Alternative Temporal Motion Vector Prediction)モード、AFFINEモード、FRUC(Frame-Rate-Up Conversion)モードが適用された場合等が挙げられる。
かかる場合、予測対象ブロックに対するOBMCの適用判定領域は、予測対象ブロック境界のみならず、予測対象サブブロック境界にも及ぶことになる。この場合、予測対象ブロックの境界のみに対してOBMCを適用する場合に比べて、必要なメモリバンド幅や演算負荷が増大するため、上述の通り、OBMCの適用ライン数を減らす等の方法を取ることができる。
(第6実施形態)
以下、本発明の第6実施形態について、上述の実施形態及び変更例との相違点に着目して説明する。本実施形態では、OBMC適用時に使用する重み係数マトリクスの重み値の決定方法について説明する。
第1に、重み係数マトリクスのサイズは、予測対象ブロックに対してOBMCを適用する領域によって決定される。
例えば、予測対象ブロック境界から4ライン分(4×4予測対象サブブロック単位)でOBMCが適用される場合は、重み係数マトリクスは、4ライン分(4×4)となる。
第2に、予測対象ブロックの参照画素値及び隣接ブロックの参照画素値についての重み係数マトリクスの重み値は、予測対象ブロック境界からの距離の比に基づいて決定される。OBMCが適用される場合、予測対象ブロックの参照画素値の重み値は、予測対象ブロック境界から近い順に(3/4、7/8、15/16、31/32)となり、隣接ブロックの参照画素値は、予測対象ブロック境界から近い順に(1/4、1/8、1/16、1/32)となる。
一方で、予測サブブロックの上左或いは上下左右の境界がOBMCの対象となる場合は、隣接ブロック数に基づいて、重み係数マトリクスの重み値を変えてもよい。
ただし、隣接ブロックが予測対象サブブロックと同じ動きベクトルと参照フレームをもつ場合はOBMCが適用されないため、隣接ブロック数にカウントするのは、予測対象サブブロックとは異なる動きベクトル又は参照フレームを持つ隣接ブロックに限定する。
例えば、予測対象サブブロックが上左に対してOBMCの対象となる隣接ブロックを持つ場合、予測対象ブロックの参照画素値の重み値は、予測対象ブロック境界から近い順に(2/4、6/8、14/16、30/32)となり、上隣接ブロックの参照画素値の重み値は、予測対象ブロック境界から近い順に(1/4、1/8、1/16、1/32)となり、左隣接ブロックの参照画素値の重み値は、予測対象ブロック境界から近い順に(1/4、1/8、1/16、1/32)となる。
これは、上隣接ブロックと左隣接ブロックをそれぞれ別々に予測対象ブロックに対して重み値(1/4、1/8、1/16、1/32)として加重平均すると、処理の順番によって掛かる重み値が変わってしまうため、処理順によらず、重み値を一定とするためである。
また、以下、かかる重み値を予測対象ブロックと隣接ブロックのサイズに基づいて決定する方法について説明する。
重みマトリクスの重み値は、非特許文献1に記載の従来手法では、予測対象ブロック境界からの距離に基づいて重み付けするとされているが、予測対象ブロックのサイズが大きい場合は、平坦な画像である可能性が高いため、OBMCで加重平均する際の予測対象ブロックと隣接ブロックの参照画素値との重み付け比は小さいほうが良いと考えられる。
一方で、予測対象ブロックのサイズが小さい場合は、複雑な模様やエッジを含む画像である可能性が高いため、予測対象ブロックと隣接ブロックとの重み付け比を大きくしてエッジを保存するようにしたほうが良いと考えられる。
本実施形態では、OBMC適用部34b3は、隣接ブロックの数又は予測対象ブロックのサイズに基づいて、OBMCにおける加重平均で用いる重み係数マトリクスの重み値を変更するように構成されている。
(第7実施形態)
以下、図23を参照して、本発明の第7実施形態について、上述の実施形態及び変更例との相違点に着目して説明する。本実施形態では、OBMC適用時にデブロッキングフィルタの適用条件を修正するMC予測部34bについて説明する。
非特許文献2で採用されているデブロッキングフィルタは、ブロック境界の平滑化効果があることが知られているが、その適用判定の1に、境界強度(BS値:Boundary Strength値)が用いられる。
例えば、HEVCでは、図23に示すように、BS値は、ブロック境界を挟む2つのブロックの条件ごとに規定されており、BS値が「0」の場合は、デブロッキングフィルタがブロック境界に適用されず、BS値が「1」以上のときにブロック境界に対してデブロッキングフィルタが適用されることが知られている。
ここで、OBMCは、上述の通り、予測対象ブロック及び隣接ブロックが異なる動きベクトルを持つ場合に、それぞれの動きベクトルが参照フレーム内で指す参照画素値を加重平均することで、ブロック境界を平滑化するように構成されている。
そのため、OBMCが適用された上で、デブロッキングフィルタを適用すると、ブロック境界が二重で平滑化されることとなるため、意図せず境界付近が平坦になりすぎてしまう可能性がある。
したがって、OBMCが適用された場合に、デブロッキングフィルタによる意図しない二重の平滑化を防ぐため、デブロッキングフィルタの適否を判定するために、図23に示すように、BS値を修正する。
図23では、OBMCが適用される場合において、条件3及び条件4におけるBS値を修正した。
条件3及び条件4は、ブロック境界に生じるブロック歪の発生起因を、2つのブロックの動きベクトルが異なること、2つのブロックの動き補償の参照画像が異なること、2つのブロックの動きベクトルの数が異なることとしている。
そのため、本実施形態は、ブロック境界を挟む2つのブロックが異なる動きベクトルを持つ場合に、基本的に適用されるOBMCが、ブロック境界に対して既に適用されている場合、条件3及び条件4についてはBS値を「0」として、デブロッキングフィルタによる二重の平滑化を禁止してもよいという考えに基づいている。
すなわち、本実施形態では、OBMC適用部34b3は、OBMCが適用されるか否かに基づいて、デブロッキングフィルタの適用条件を変更するように構成されている。
(第8実施形態)
以下、本発明の第8実施形態について、上述の実施形態及び変更例との相違点に着目して説明する。本実施形態では、OBMC適用時のメモリバンド幅や演算回数の削減方法として、予測対象ブロックの隣接ブロックが有する動きベクトルが異なる場合、所定の削減手法によりOBMCに必要な動きベクトル及び参照フレームの数を削減するように構成されているMC予測部34bについて説明する。
予測対象ブロックの隣接ブロックが異なる動きベクトルを有する場合、予測対象ブロックのOBMC適用に必要なメモリバンド幅や演算回数は、隣接ブロックの数だけ増大する。
そのため、隣接ブロックが異なる動きクトルを有する場合に、OBMC適用に必要な動きベクトル及び参照フレームの数を削として、例えば、以下のような手法が考えられる。
・ 異なる動きベクトルを有する隣接ブロックについて所定のブロックサイズにマージする(例えば、4×4の隣接ブロックについては4×8の隣接ブロック又は8×4の隣接ブロックにマージする)方法。
・ 異なる動きベクトルを有する隣接ブロックが並ぶ場合、OBMC適用時に用いる隣接ブロックを間引く(例えば、16×16の予測対象ブロックの上部に対して、4×4の隣接ブロックが4つ並ぶ場合、OBMC適用時に用いる隣接ブロックとして左端及び左端から数えて3番目の2つを用いる、或いは、左端及び右端の隣接ブロックを用いる等)手法。
また、上述した隣接ブロックのマージ方法や間引き方法は、閾値を用いて決定されてもよい。
例えば、異なる動きベクトルを有する隣接ブロックの動きベクトルの差が1画素未満の場合は、同じ動きベクトルを持つ隣接ブロックとして扱う。
また、かかる動きベクトルの差の閾値は、隣接ブロックに対して片方向予測又は双方向予測が適用されているかに基づいて変更されてもよい。例えば、片方向予測が適用されている場合は、1.5画素未満、双方向予測が適用されている場合は、1画素未満等)。
すなわち、本実施形態において、OBMC適用部34b3は、予測対象ブロックの動きベクトル及び隣接ブロックの動きベクトルが異なる場合、所定の削減手法によりOBMCに必要な動きベクトル及び参照フレームの数を削減するように構成されている。
また、上述の画像符号化装置10及び画像復号装置30は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を画像符号化装置10及び画像復号装置30への適用を例にして説明したが、本発明は、これのみに限定されるものではなく、画像符号化装置10及び画像復号装置30の各機能を備えた符号化/復号システムにも同様に適用できる。