以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
(第1実施形態)
以下、図1〜図7を参照して、本発明の第1実施形態に係る画像処理システム10について説明する。図1は、本実施形態に係る実施形態に係る画像処理システム10を示す図である。
図1に示すように、画像処理システム10は、画像符号化装置100及び画像復号装置200を有する。
画像符号化装置100は、入力画像信号を符号化することによって符号化データを生成するように構成されている。画像復号装置200は、符号化データを復号することによって出力画像信号を生成するように構成されている。
ここで、かかる符号化データは、画像符号化装置100から画像復号装置200に対して伝送路を介して送信されてもよい。また、符号化データは、記憶媒体に格納された上で、画像符号化装置100から画像復号装置200に提供されてもよい。
(画像符号化装置100)
以下、図2を参照して、本実施形態に係る画像符号化装置100について説明する。図2は、本実施形態に係る画像符号化装置100の機能ブロックの一例について示す図である。
図2に示すように、画像符号化装置100は、インター予測部111と、イントラ予測部112と、減算器121と、加算器122と、変換・量子化部131と、逆変換・逆量子化部132と、符号化部140と、インループフィルタ処理部150と、フレームバッファ160とを有する。
インター予測部111は、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
具体的には、インター予測部111は、符号化対象のフレーム(以下、対象フレーム)とフレームバッファ160に格納される参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する動きベクトルを決定するように構成されている。
また、インター予測部111は、参照ブロック及び動きベクトルに基づいて予測ブロックに含まれる予測信号を予測ブロック毎に生成するように構成されている。インター予測部111は、予測信号を減算器121及び加算器122に出力するように構成されている。ここで、参照フレームは、対象フレームとは異なるフレームである。
イントラ予測部112は、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
具体的には、イントラ予測部112は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。また、イントラ予測部112は、予測信号を減算器121及び加算器122に出力するように構成されている。
ここで、参照ブロックは、予測対象のブロック(以下、対象ブロック)について参照されるブロックである。例えば、参照ブロックは、対象ブロックに隣接するブロックである。
減算器121は、入力画像信号から予測信号を減算し、予測残差信号を変換・量子化部131に出力するように構成されている。ここで、減算器121は、イントラ予測又はインター予測によって生成される予測信号と入力画像信号との差分である予測残差信号を生成するように構成されている。
加算器122は、逆変換・逆量子化部132から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、かかるフィルタ処理前復号信号をイントラ予測部112及びインループフィルタ処理部150に出力するように構成されている。
ここで、フィルタ処理前復号信号は、イントラ予測部112で用いる参照ブロックを構成する。
変換・量子化部131は、予測残差信号の変換処理を行うとともに、係数レベル値を取得するように構成されている。さらに、変換・量子化部131は、係数レベル値の量子化を行うように構成されていてもよい。
ここで、変換処理は、予測残差信号を周波数成分信号に変換する処理である。かかる変換処理では、離散コサイン変換(DCT;Discrete Cosine Transform)に対応する基底パターン(変換行列)が用いられてもよく、離散サイン変換(DST;Discrete Sine Transform)に対応する基底パターン(変換行列)が用いられてもよい。
逆変換・逆量子化部132は、変換・量子化部131から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部132は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
ここで、逆変換処理及び逆量子化は、変換・量子化部131で行われる変換処理及び量子化とは逆の手順で行われる。
符号化部140は、変換・量子化部131から出力された係数レベル値を符号化し、符号化データを出力するように構成されている。
ここで、例えば、符号化は、係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化である。
また、符号化部140は、係数レベル値に加えて、復号処理で用いる制御データを符号化するように構成されている。
ここで、制御データは、符号化ブロック(CU:Coding Unit)サイズ、予測ブロック(PU:Prediction Unit)サイズ、変換ブロック(TU:Transform Unit)サイズ等のサイズデータを含んでもよい。
インループフィルタ処理部150は、加算器122から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ160に出力するように構成されている。
ここで、例えば、フィルタ処理は、ブロック(符号化ブロック、予測ブロック又は変換ブロック)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ160は、インター予測部111で用いる参照フレームを蓄積するように構成されている。
ここで、フィルタ処理後復号信号は、インター予測部111で用いる参照フレームを構成する。
(インター予測部111)
以下、図3を参照して、本実施形態に係る画像符号化装置100のインター予測部111について説明する。図3は、本実施形態に係る画像符号化装置100のインター予測部111の機能ブロックの一例について示す図である。
図3に示すように、インター予測部111は、動きベクトル探索部111Aと、動きベクトル符号化部111Bと、洗練化部111Cと、予測信号生成部111Dとを有する。
インター予測部111は、動きベクトルに基づいて予測ブロックに含まれる予測信号を生成するように構成されている予測部の一例である。
動きベクトル探索部111Aは、対象フレームと参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する動きベクトルを探索するように構成されている。
また、上述の探索を複数の参照フレーム候補に対して行い、当該予測ブロックで予測に用いる参照フレーム及び動きベクトルを決定する。参照フレーム及び動きベクトルは、一つのブロックに対して最大二つずつ用いることができる。一つのブロックに対して参照フレーム及び動きベクトルを一組のみ用いる場合を片予測と呼び、参照フレーム及び動きベクトルを二組用いる場合を双予測と呼ぶ。以降、一組目をL0と呼び、二組目をL1と呼ぶ。
更に、動きベクトル探索部111Aは、参照フレーム及び動きベクトルの符号化方法を決定するように構成されている。符号化方法には、参照フレーム及び動きベクトルの情報をそれぞれ伝送する通常の方法に加え、後述するマージモード等がある。
なお、動きベクトルの探索方法、参照フレームの決定方法及び参照フレーム及び動きベクトルの符号化方法の決定方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
動きベクトル符号化部111Bは、動きベクトル探索部111Aで決定した参照フレームと動きベクトルの情報を、同じく動きベクトル探索部111Aで決定した符号化方法を用いて符号化するように構成されている。
当該ブロックの符号化方法がマージモードの場合、画像符号化装置100側において、初めに、当該ブロックに対するマージリストが作成される。ここで、マージリストは、参照フレームと動きベクトルとの組み合わせが複数列挙されたリストである。
各組み合わせには、インデックスが振られており、画像符号化装置100は、参照フレーム及び動きベクトルの情報を個別に符号化する代わりに、かかるインデックスのみを符号化し、画像復号装置200に伝送する。画像符号化装置100側と画像復号装置200側とでマージリストの作成方法を共通化しておくことで、画像復号装置200側では、かかるインデックスに係る情報のみから参照フレーム及び動きベクトルの情報を復号することができる。
なお、マージリストの作成方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
動きベクトル情報の符号化については、初めに、符号化対象の動きベクトルの予測値である予測動きベクトルを生成し、かかる予測動きベクトルと実際に符号化したい動きベクトルとの差分値である差分動きベクトルを符号化する。
洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトルを修正する洗練化処理(例えば、DMVR)を行うように構成されている。
具体的には、洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトルによって特定される参照位置を基準として探索範囲を設定し、探索範囲の中から所定コストが最も小さい修正参照位置を特定し、修正参照位置に基づいて動きベクトルを修正する洗練化処理を行うように構成されている。
図4は、洗練化部111Cの処理手順の一例を示すフローチャートである。
図4に示すように、ステップS41において、洗練化部111Cは、洗練化処理を適用するための所定条件が満足されているかどうかについて判定する。かかる所定条件が全て満足されている場合に、本処理手順は、ステップS42へ進む。一方、かかる所定条件のどれか一つでも満足されていない場合は、本処理手順は、ステップS48へ進み、洗練化処理を終了する。
ここで、所定条件は、当該ブロックが双予測を行うブロックであるという条件を含む。さらに、所定条件は、動きベクトルがマージモードで符号化されているという条件を含んでもよい。
ステップS42において、洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトル及び参照フレームの情報に基づいて、探索用画像を生成する。
ここで、動きベクトルが非整数画素位置を指していた場合は、洗練化部111Cは、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。この時、洗練化部111Cは、後述する予測信号生成部111Dで用いる内挿フィルタより、少ないタップ数の内挿フィルタを用いることで、演算量を削減することができる。例えば、洗練化部111Cは、バイリニア補間によって非整数画素位置の画素値を内挿することができる。
ステップS43において、洗練化部111Cは、ステップS42で生成した探索用画像を用いて、初期位置での探索コストを算出する。
ここで、初期位置は、動きベクトル符号化部111Bで符号化された動きベクトルが指し示す位置である。また、探索コストは、上述の動きベクトルが指し示すL0側(第1参照フレーム側)の参照ブロックとL1側(第2参照フレーム側)の参照ブロックとの類似度の指標値であり、例えば、画素値同士の絶対値誤差和や二乗誤差和を用いることができる。
ステップS44において、洗練化部111Cは、ステップS43で算出した初期位置での探索コストを入力として、当該ブロックの洗練化処理を打ち切るための終了条件が満足されているか否かについて判定する。かかる終了条件が全て満足されている場合に、本処理手順は、ステップS45へ進む。一方、かかる終了条件のどれか一つでも満足されていない場合は、本処理手順は、ステップS48へ進み、洗練化処理を終了する。
ここで、ステップS44における終了条件(打ち切り条件)には、例えば、上述の初期位置での探索コストが予め定めた第1閾値より小さいこと(或いは、上述の初期位置での探索コストが予め定めた第1閾値以下であること)という条件を含めることができる。
また、ステップS44における終了条件(打ち切り条件)には、例えば、上述の初期位置での探索コストが予め定めた第2閾値より大きいこと(或いは、上述の初期位置での探索コストが予め定めた第1閾値以上であること)という条件を含めることができる。
ステップS45において、洗練化部111Cは、ステップS42で生成した探索用画像を用いて、整数画素精度での探索を行う。
ここで、整数画素精度は、動きベクトル符号化部111Bで符号化された動きベクトルを基準として、整数画素間隔となる点のみを探索することを意味する。
洗練化部111Cは、ステップS45の探索によって、整数画素間隔位置での修正後の動きベクトルを決定する。ここで、かかる探索の方法としては、既知の手法を用いることができる。
例えば、洗練化部111Cは、L0側及びL1側の差分動きベクトルが符号のみを反転した組み合わせとなる点のみを探索するという方法で探索することもできる。
ここでは、各探索位置における探索コストが最も小さくなった探索点を、整数画素間隔位置での修正後の動きベクトルする。探索コストとしては、上述の通り、絶対値差分和や二乗誤差和等の指標を用いることができる。この時、洗練化部111Cは、上述の絶対値差分和等のブロック間の類似度を評価する指標に、修正後の動きベクトルと初期位置の動きベクトルとの差分ベクトルのLpノルムを加算したものを探索コストとしてもよい。
具体的には、洗練化部111Cは、例えば、絶対値差分和と差分ベクトルのL1ノルムとの和を探索コストとしてもよい。また、洗練化部111Cは、絶対値差分和にL1ノルムを加算する際に、予め定めた比率で重み付けをしてから加算してもよい。例えば、洗練化部111Cは、L1ノルムを2倍した値を絶対値差分和に加えてもよい。この時、倍率が2のべき乗であれば、ビットシフトによって等価な処理を実現できる。
なお、ステップS45における探索の結果、探索前の動きベクトルと同じ値になる可能性もある。
ステップS46において、洗練化部111Cは、ステップS45で決定した整数画素間隔位置での修正後動きベクトルに対応する探索コストを用いて、当該ブロックでの洗練化処理を打ち切るための終了条件が満足されているか否かについて判定する。かかる終了条件が全て満足されている場合に、本処理手順は、ステップS47へ進む。一方、かかる終了条件のどれか一つでも満足されていない場合は、本処理手順は、ステップS48へ進み、洗練化処理を終了する。
ここで、ステップS46における終了条件(打ち切り条件)には、例えば、上述の探索コストが予め定めた第3閾値より大きいこと(或いは、上述の探索コストが予め定めた第3閾値以上であること)という条件を含めることができる。この時、第3閾値は、上述の第2閾値と同じ値に設定されてもよい。
また、洗練化部111Cは、かかる終了条件が満足されていると判定した場合に、ステップS45での探索結果を破棄して、洗練化処理を行わなかった場合と同じ動きベクトル(すなわち、動きベクトル符号化部111Bで符号化された動きベクトル)を、当該ブロックの最終的な動きベクトルとしてもよい。
また、ステップS46における終了条件(打ち切り条件)には、例えば、ステップS43で算出した初期位置での探索コストと、ステップS45で算出した修正後動きベクトルに対応する探索コストとの差分値が、予め定めた第4閾値より小さいこと(或いは、上述の差分値が予め定めた第4閾値以下であること)という条件を含んでもよい。この時、第4閾値は、第1の閾値と同じ値に設定されてもよい。
また、洗練化部111Cは、かかる終了条件が満足されていると判定した場合に、ステップS45での探索結果を破棄して、洗練化処理を行わなかった場合と同じ動きベクトルを、当該ブロックの最終的な動きベクトルとしてもよい。
ステップS47において、洗練化部111Cは、ステップS43で決定した整数画素精度での修正後の動きベクトルを初期値として、非整数画素精度での動きベクトルの探索を行う。ここで、動きベクトルの探索方法としては、既知の手法を用いることができる。
また、洗練化部111Cは、実際に探索を行わずに、ステップS43の結果を入力として、パラボラフィッティング等のパラメトリックなモデルを用いて非整数画素精度での動きベクトルを決定することもできる。
洗練化部111Cは、ステップS47において、非整数画素精度での修正後の動きベクトルを決定した後、ステップS48へ移り洗練化処理を終了する。ここでは、便宜上、非整数画素精度の修正後動きベクトルという表現を用いたが、ステップS47の探索結果により、結果的に、ステップS45で求めた整数画素精度の動きベクトルと同じ値になる可能性もある。
以上では、便宜上ステップS43とステップS45とを別のステップとして説明したが、両者の処理は、同一のステップ内で実行されてもよい。例えば、本処理手順は、ステップS42の直後にステップS45に移り、洗練化部111Cは、ステップS45において、初期位置での探索コスト及び画素間隔位置での修正後動きベクトルに対応する探索コストの両方を算出することができる。その後、本処理手順は、ステップS46に移り、洗練化部111Cは、ステップS44として説明した条件及びステップS46として説明した条件の中の少なくともいずれか一つを勘案して、終了条件が満たされているか否かについての判定を行うことができる。
また、例えば、ステップS48において、洗練化部111Cは、初期位置での探索コストや画素間隔位置での修正後動きベクトルに対応する探索コストを用いて、探索結果を破棄するかどうか決定することもできる。
例えば、初期位置での探索コストが、第2閾値より大きい場合(或いは、第2閾値以上である場合)、洗練化部111Cは、かかる探索結果を破棄して、洗練化処理を行わなかった場合と同じ動きベクトル(すなわち、動きベクトル符号化部111Bで符号化された動きベクトル)を、当該ブロックの最終的な動きベクトルとしてもよい。
また、例えば、整数画素間隔位置での修正後動きベクトルに対応する探索コストが、第3閾値より大きい場合(或いは、第3閾値以上である場合)、洗練化部111Cは、かかる探索結果を破棄して、洗練化処理を行わなかった場合と同じ動きベクトルを、当該ブロックの最終的な動きベクトルとしてもよい。
さらに、例えば、初期位置での探索コストと整数画素間隔位置での修正後動きベクトルに対応する探索コストとの差分値が、第4閾値より小さかった場合(或いは、第4閾値以下である場合)、洗練化部111Cは、かかる探索結果を破棄して、洗練化処理を行わなかった場合と同じ動きベクトルを、当該ブロックの最終的な動きベクトルとしてもよい。
以上では、ステップS41〜S48を全て含む構成について説明したが、ステップS44及びステップS46は、必ずしも構成に含まれている必要はない。
洗練化部111Cは、予め定めた閾値より大きなブロックを、小さなサブブロックに分割してサブブロックごとに洗練化処理を実行してもよい。例えば、洗練化部111Cは、洗練化処理の実行単位を16×16画素と設定しておき、ブロックの水平方向又は垂直方向のサイズが16画素より大きい場合、それぞれ16画素以下となるように分割することができる。この時、洗練化処理の基準となる動きベクトルとしては、同一ブロック内の全てのサブブロックについて、動きベクトル符号化部111Bで符号化された当該ブロックの動きベクトルを用いる。
サブブロックごとに処理を行う場合、洗練化部111Cは、図4の全ての手順をサブブロックごとに実行してもよい。また、洗練化部111Cは、図4の処理の一部のみをサブブロックごとに処理してもよい。具体的には、洗練化部111Cは、図4のステップS41及びS42については、ブロック毎に処理を行い、ステップS43からS48について、サブブロックごとに処理してもよい。
予測信号生成部111Dは、洗練化部111Cから出力される修正された動きベクトルに基づいて予測信号を生成するように構成されている。
ここで、後述するように、予測信号生成部111Dは、上述の洗練化処理の過程で算出される情報(例えば、探索コスト)に基づいて、ブロック毎にBDOF(Bi-Directional Optical Flow)処理を行うるか否かについて判定するように構成されている。
具体的には、予測信号生成部111Dは、動きベクトルが修正されない場合には、動きベクトル符号化部111Bで符号化された動きベクトルに基づいて予測信号を生成するように構成されている。一方で、予測信号生成部111Dは、動きベクトルが修正される場合には、洗練化部111Cで修正された動きベクトルに基づいて予測信号を生成するように構成されている。
図5は、予測信号生成部111Dの処理手順の一例を示すフローチャートである。ここで、洗練化部111Cにてサブブロック単位で洗練化処理が行われた場合、予測信号生成部111Dの処理もサブブロック単位で実行される。その場合、以下の説明のブロックという単語は、適宜、サブブロックに読み替えることができる。
また、洗練化部111Cにて洗練化処理が行われなかったブロックについても、予め定めた閾値よりブロックサイズが大きな場合、小さなサブブロックに分割してサブブロックごとに洗練化処理を実行してもよい。例えば、洗練化部111Cと同様に、予測信号生成処理の実行単位を16×16画素と設定しておき、ブロックの水平方向又は垂直方向のサイズが16画素より大きい場合、それぞれ16画素以下となるように分割することができる。この場合も、以下の説明のブロックという単語は、適宜、サブブロックに読み替えることができる。
図5に示すように、ステップS51において、予測信号生成部111Dは、予測信号を生成する。
具体的には、予測信号生成部111Dは、動きベクトル符号化部111Bで符号化された動きベクトル或いは洗練化部111Cで符号化された動きベクトルを入力として、かかる動きベクトルが指す位置が非整数画素位置の場合は、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。ここで、具体的なフィルタについては、非特許文献1で開示されている最大8タップの水平垂直可分型のフィルタを適用することができる。
予測信号生成部111Dは、当該ブロックが双予測を行うブロックである場合は、一つ目(以後、L0と呼ぶ)の参照フレーム及び動きベクトルによる予測信号及び二つ目(以後、L1と呼ぶ)の参照フレーム及び動きベクトルによる予測信号の両方を生成する。
ステップS52において、予測信号生成部111Dは、後述するBDOF処理の適用条件が満足されているかどうかについて確認する。
かかる適用条件としては、非特許文献1に記載の条件を適用できる。適用条件は、少なくとも当該ブロックが双予測を行うブロックであることという条件を含む。また、適用条件は、非特許文献1に記載のように、当該ブロックの動きベクトルがSymmetric MVDモードで符号化されていないことという条件を含んでもよい。
適用条件が満足されていない場合、本処理手順は、ステップS55に移って処理を終了する。この時、予測信号生成部111Dは、ステップS51で生成した予測信号を最終的な予測信号として出力する。
一方、適用条件が全て満足される場合、本処理手順は、ステップS53へ移る。ステップS53において、本処理手順は、適用条件を満足しているブロックについて、実際に、ステップS54のBDOF処理を実行するかどうかについて判定する。
以下では、探索コストとして絶対値差分和を用いた場合を例に説明するが、他の指標を探索コストに用いることもできる。例えば、局所的な平均値を除去した後の信号同士の絶対値差分和や二乗誤差和等、画像信号同士の類似性を判断するための指標値であれば、かかる探索コストとして用いることができる。
例えば、予測信号生成部111Dは、L0の予測信号とL1の予測信号との絶対値差分和を算出し、算出された値が予め定めた閾値よりも小さい場合(或いは、算出された値が予め定めた閾値以下であった場合)は、BDOF処理を行わないといったような判定を行う。
また、例えば、予測信号生成部111Dは、L0の予測信号とL1の予測信号との絶対値差分和を算出し、算出された値が予め定めた閾値より大きい場合(或いは、算出された値が予め定めた閾値以上であった場合)は、BDOF処理を行わないといったような判定を行うこともできる。
ここで、予測信号生成部111Dは、洗練化部111Cで洗練化処理を実行したブロックについては、BDOF処理の適用の有無の判断に、洗練化処理の結果を用いることもできる。
予測信号生成部111Dは、上述の洗練化処理の過程で算出された探索コスト(例えば、L0側の参照ブロックの画素値とL1側の参照ブロックの画素値との絶対値差分和)を用いて、BDOF処理を適用するか否かを判定することもできる。
例えば、予測信号生成部111Dは、ステップS45における整数画素精度での探索において、上述の探索コスト(絶対値差分和)が最小となる探索点の絶対値差分和が、予め定めた第5閾値よりも小さい場合(或いは、予め定めた第5閾値以下である場合)に、BDOF処理を適用しないという判定をすることができる。この時、第5閾値は、第1閾値と同じ値に設定されてもよい。
例えば、予測信号生成部111Dは、ステップS45における整数画素精度での探索において、上述の探索コスト(絶対値差分和)が最小となる探索点の絶対値差分和が、予め定めた第6閾値よりも大きい場合(或いは、予め定めた第6閾値以上である場合)に、BDOF処理を適用しないという判定をすることができる。この時、第6閾値は、第2閾値又は第3閾値と同じ値に設定されてもよい。
例えば、予測信号生成部111Dは、ステップS43で算出した初期位置での探索コストが、予め定めた第5閾値よりも小さい場合(或いは、予め定めた第5閾値以下である場合)に、BDOF処理を適用しないという判定をすることができる。この時、第5閾値は、第1閾値と同じ値に設定されてもよい。
例えば、予測信号生成部111Dは、ステップS43で算出した初期位置での探索コストが、予め定めた第6閾値よりも大きい場合(或いは、予め定めた第6閾値以上である場合)に、BDOF処理を適用しないという判定をすることができる。この時、第6閾値は、第2閾値又は第3閾値と同じ値に設定されてもよい。
例えば、予測信号生成部111Dは、ステップS43で算出した初期位置での探索コストと、ステップS45における整数画素精度での探索における最小の探索コストとの差分値が、予め定めた第7閾値よりも小さい場合(或いは、予め定めた第7閾値以下である場合)に、BDOF処理を適用しないという判定をすることができる。この時、第7閾値は、第1閾値又は第4閾値と同じ値に設定されてもよい。
また、予測信号生成部111Dは、洗練化処理が実行されたブロックでは洗練化処理の結果による方法、それ以外のブロックでは絶対値差分和による方法で、それぞれ判断してもよい。
また、予測信号生成部111Dは、上述のように、新たにL0側の予測信号とL1側の予測信号との絶対値差分和を算出する処理について行わずに、洗練化処理の結果から得られる情報のみを用いて、BDOF処理の適否を判定するという構成をとることもできる。この場合、予測信号生成部111Dは、ステップS53においては、予測信号生成部111Dは、洗練化処理が実行されていないブロックについては常にBDOF処理を適用すると判断することになる。
かかる構成によれば、この場合、予測信号生成部111Dにおける絶対値差分和の算出処理を行う必要がないため、ハードウェア実装の観点で処理量及び処理遅延を削減することができる。
また、かかる構成によれば、ソフトウェア実装の観点において、洗練化処理の結果を用いて、BDOF処理の効果が低いと推測されるブロックにおいてBDOF処理を実行しないようにすることで、符号化効率は維持しつつ、画像全体での処理時間を短縮することができる。
また、上述の洗練化処理の結果を用いる判定処理自体は、洗練化部111Cの内部で実行され、その結果を示す情報が予測信号生成部111Dへ伝達されることで、予測信号生成部111Dは、BDOF処理の適否を判定することもできる。
例えば、上述のように、洗練化処理前後の動きベクトルや探索コストの値を判定し、BDOF処理を適用しない条件に当てはまる場合は「1」となり、BDOF処理を適用しない条件に当てはまらない場合及び洗練化処理が適用されなかった場合には「0」となるようなフラグを用意しておき、予測信号生成部111Dは、かかるフラグの値を参照してBDOF処理の適否を判定することができる。
また、ここでは、便宜上、ステップS52及びステップS53を異なるステップとして説明したが、ステップS52及びステップS53における判定を同時に行うことも可能である。
上述のような判定において、BDOF処理を適用しないと判定したブロックについては、本処理手順は、ステップS55へ移る。それ以外のブロックについては、本処理手順は、ステップS54へ移る。
ステップS54において、予測信号生成部111Dは、BDOF処理を実行する。BDOF処理自体は、既知の手法を用いることができるため、詳細についての説明は省略する。BDOF処理が実施された後、本処理手順は、ステップS55に移り処理を終了する。
上述の第1閾値〜第7閾値は、それぞれブロックサイズ(ブロックの高さと幅の積)または当該ブロック内でSADなどの探索コスト算出に用いる画素数に応じて値を変化させるように定義されていてもよい。
上述の第1閾値〜第7閾値は、それぞれ当該ブロックの量子化パラメータ(QP)に応じて値を変化させるように定義されていてもよい。例えば、量子化パラメータが大きいときにコスト値も大きくなりやすい傾向がある場合は、量子化パラメータが大きくなるにつれて閾値も大きくなるように定義することができる。
(画像復号装置200)
以下、図6を参照して、本実施形態に係る画像復号装置200について説明する。図6は、本実施形態に係る画像復号装置200の機能ブロックの一例について示す図である。
図6に示すように、画像復号装置200は、復号部210と、逆変換・逆量子化部220と、加算器230と、インター予測部241と、イントラ予測部242と、インループフィルタ処理部250と、フレームバッファ260とを有する。
復号部210は、画像符号化装置100によって生成される符号化データを復号し、係数レベル値を復号するように構成されている。
ここで、例えば、復号は、符号化部140で行われるエントロピー符号化とは逆の手順のエントロピー復号である。
また、復号部210は、符号化データの復号処理によって制御データを取得するように構成されていてもよい。
なお、上述したように、制御データは、符号化ブロックサイズ、予測ブロックサイズ、変換ブロックサイズ等のサイズデータを含んでもよい。
逆変換・逆量子化部220は、復号部210から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部220は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
ここで、逆変換処理及び逆量子化は、変換・量子化部131で行われる変換処理及び量子化とは逆の手順で行われる。
加算器230は、逆変換・逆量子化部220から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、フィルタ処理前復号信号をイントラ予測部242及びインループフィルタ処理部250に出力するように構成されている。
ここで、フィルタ処理前復号信号は、イントラ予測部242で用いる参照ブロックを構成する。
インター予測部241は、インター予測部111と同様に、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
具体的には、インター予測部241は、符号化データから復号した動きベクトルと参照フレームに含まれる参照信号とに基づいて予測信号を予測ブロック毎に生成するように構成されている。インター予測部241は、予測信号を加算器230に出力するように構成されている。
イントラ予測部242は、イントラ予測部112と同様に、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
具体的には、イントラ予測部242は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。イントラ予測部242は、予測信号を加算器230に出力するように構成されている。
インループフィルタ処理部250は、インループフィルタ処理部150と同様に、加算器230から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ260に出力するように構成されている。
ここで、例えば、フィルタ処理は、ブロック(符号化ブロック、予測ブロック、変換ブロック、あるいはそれらを分割したサブブロック)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ260は、フレームバッファ160と同様に、インター予測部241で用いる参照フレームを蓄積するように構成されている。
ここで、フィルタ処理後復号信号は、インター予測部241で用いる参照フレームを構成する。
(インター予測部241)
以下、図7を参照して、本実施形態に係るインター予測部241について説明する。図7は、本実施形態に係るインター予測部241の機能ブロックの一例について示す図である。
図7に示すように、インター予測部241は、動きベクトル復号部241Bと、洗練化部241Cと、予測信号生成部241Dとを有する。
インター予測部241は、動きベクトルに基づいて予測ブロックに含まれる予測信号を生成するように構成されている予測部の一例である。
動きベクトル復号部241Bは、画像符号化装置100から受信する制御データの復号によって動きベクトルを取得するように構成されている。
洗練化部241Cは、洗練化部111Cと同様に、動きベクトルを修正する洗練化処理を実行するように構成されている。
予測信号生成部241Dは、予測信号生成部111Dと同様に、動きベクトルに基づいて予測信号を生成するように構成されている。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、洗練化部111C、241Cにおいて、探索コストが予め定めた閾値よりも大きい場合(或いは、探索コストが予め定めた閾値以上である場合)に、探索結果を破棄する構成をとることができる。ここで、洗練化処理は、当該ブロックと、L0側の参照ブロックと、L1側の参照ブロック間の画素値の相関がそれぞれ高い場合に、符号化効率を改善することができる。上述の構成とすることで、画像符号化装置100側から付加情報(洗練化処理を適用するか否かについての情報)を伝送することなく、時間方向の相関が小さいブロックにおいて洗練化処理を行わないようにすることができ、符号化効率の低下を防ぐことができる。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、洗練化部111C、241Cにおいて、初期位置での探索コストと、探索後の点に対応する探索コストとの差分値が、予め定めた閾値よりも小さい場合(或いは、予め定めた閾値以下である場合)に、探索結果を破棄する構成をとることができる。これにより、ノイズ等の影響で、偶然、初期位置よりもわずかに小さな探索コストが得られた点に、不必要に動きベクトルを修正することを避けることができ、符号化効率の低下を防ぐことができる。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、洗練化部111C、241Cにおいて、初期位置と探索点との差分ベクトルのノルムを探索コストに含める構成をとることができる。この場合、絶対値誤差和等の類似度を評価する指標値が、各探索点でほぼ同じ値になった場合、差分ベクトルのノルムで正則化することで、不必要に動きベクトルの修正量が大きくならないようにすることができ、符号化効率の低下を防ぐことができる。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、予測信号生成部111D、241DにおいてBDOF処理を実行するか否かの判定に、L0側の参照ブロックとL1側の参照ブロックの類似度(例えば、絶対値誤差和)が予め定めた閾値よりも大きいこと(或いは、かかる類似度が予め定めた閾値以上であること)という条件を含めることができる。BDOF処理も、洗練化処理と同様に、当該ブロックとL0側の参照ブロックとL1側の参照ブロックとの相関が高い場合に有効な処理である。よって、上述の構成とすることで、画像符号化装置100側から付加情報(BDOF処理を適用するか否かについての情報)を伝送することなく、時間方向の相関が小さいブロックにおいてBDOF処理を行わないようにすることができ、符号化効率の低下を防ぐことができる。また、上述の判定に、上述の洗練化処理の結果を用いることができる。これにより、上述の絶対値差分を算出する処理を削減することができる。
また、上述の画像符号化装置100及び画像復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を画像符号化装置100及び画像復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、画像符号化装置100及び画像復号装置200の各機能を備えた画像符号化/復号システムにも同様に適用できる。
本発明によれば、時間方向の相関が低いブロックについて洗練化処理を行わないようにすることで、符号化効率の低下を防ぐことができる。