以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
(第1実施形態)
以下、図1~図10を参照して、本発明の第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は、参照フレーム及び動きベクトルの符号化方法を決定するように構成されている。符号化方法には、参照フレーム及び動きベクトルの情報をそれぞれ伝送する通常の方法に加え、後述するマージモードや非特許文献2に記載のSymmetric MVDモード等がある。
なお、動きベクトルの探索方法、参照フレームの決定方法及び参照フレーム及び動きベクトルの符号化方法の決定方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
動きベクトル符号化部111Bは、動きベクトル探索部111Aで決定した参照フレームと動きベクトルの情報を、同じく動きベクトル探索部111Aで決定した符号化方法を用いて符号化するように構成されている。
当該ブロックの符号化方法がマージモードの場合、初めに、当該ブロックに対するマージリストを作成する。マージリストは、参照フレームと動きベクトルとの組み合わせが複数列挙されたリストである。各組み合わせには、インデックスが振られており、参照フレーム及び動きベクトルの情報を個別に符号化する代わりに、前記のインデックスのみを符号化し、復号側に伝送する。符号化側と復号側とでマージリストの作成方法を共通化しておくことで、復号側ではインデックス情報のみから参照フレームと動きベクトルの情報を復号することができる。マージリストの作成方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
Symmetric MVDモードは、当該ブロックで双予測を行う場合にのみ使用可能な符号化方法である。Symmetric MVDモードでは、復号側に伝送すべき情報である二つ(L0、L1)の参照フレーム及び二つ(L0、L1)の動きベクトルのうち、L0の動きベクトル(差分動きベクトル)のみを符号化する。残りのL1の動きベクトル及び二つの参照フレームの情報については、予め決められた方法によって符号化側及び復号側でそれぞれ一意に決定する。
動きベクトル情報の符号化については、初めに符号化対象動きベクトルの予測値である予測動きベクトルを生成し、予測動きベクトルと実際に符号化したい動きベクトルとの差分値である差分動きベクトルを符号化する。
Symmetric MVDモードでは、L1の差分動きベクトルとして、符号化されたL0の差分動きベクトルの符号を反転したものを用いる。具体的な方法については、例えば、非特許文献2に記載されている方法を用いることができる。
洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトルを修正する洗練化処理(例えば、DMVR)を行うように構成されている。
具体的には、洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトルによって特定される参照位置を基準として探索範囲を設定し、探索範囲の中から所定コストが最も小さい修正参照位置を特定し、修正参照位置に基づいて動きベクトルを修正する洗練化処理を行うように構成されている。
図4は、洗練化部111Cの処理手順の一例を示すフローチャートである。
図4に示すように、ステップS41において、洗練化部111Cは、洗練化処理を適用するための所定条件が満足されているかどうかについて判定する。所定条件が全て満足されている場合に、本処理手順は、ステップS42へ進む。所定条件のどれか一つでも満足されていない場合は、本処理手順は、ステップS45へ進み、洗練化処理を終了する。
ここで、所定条件は、当該ブロックが双予測を行うブロックであるという条件を含む。
さらに、所定条件は、動きベクトルがマージモードで符号化されているという条件を含んでもよい。
また、所定条件は、動きベクトルがSymmetric MVDモードで符号化されているという条件を含んでもよい。
さらに、所定条件は、動きベクトルがSymmetric MVDモードで符号化されており、Symmetric MVDモードにおいて伝送される差分動きベクトル(L0のMVD)の大きさが予め設定された閾値以内であるという条件を含んでもよい。
ここで、差分動きベクトルの大きさは、例えば、差分動きベクトルの水平及び垂直方向成分それぞれの絶対値で定義することができる。
かかる閾値は、動きベクトルの水平及び垂直方向成分に対してそれぞれ別の閾値を用いてもよいし、水平及び垂直方向成分で共通の閾値を用いても良い。また、閾値の値を0に設定することも可能である。この場合、予測動きベクトル及び符号化される動きベクトルが同じ値であることを意味する。また、閾値について最小値と最大値で定義してもよい。この場合、所定条件として、差分動きベクトルの値又は絶対値が、予め定めた最小値以上かつ最大値以下であることという条件が含まれることになる。
また、所定条件は、動きベクトルがマージモード或いはSymmetric MVDモードで符号化されているという条件を含んでもよい。同様に、所定条件は、動きベクトルがマージモード或いはSymmetric MVDモードで符号化されており、Symmetric MVDモードで符号化されている場合は、伝送される差分動きベクトルの大きさが予め設定された閾値以内であるという条件を含んでいてもよい。
ステップS42において、洗練化部111Cは、動きベクトル符号化部111Bで符号化された動きベクトル及び参照フレームの情報に基づいて、探索用画像を生成する。
ここで、動きベクトルが非整数画素位置を指していた場合は、洗練化部111Cは、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。この時、洗練化部111Cは、後述する予測信号生成部111Dで用いる内挿フィルタより、少ないタップ数の内挿フィルタを用いることで、演算量を削減することができる。例えば、洗練化部111Cは、バイリニア補間によって非整数画素位置の画素値を内挿することができる。
ステップS43において、洗練化部111Cは、ステップS42で生成した探索用画像を用いて、整数画素精度での探索を行う。ここで、整数画素精度とは、動きベクトル符号化部111Bで符号化された動きベクトルを基準として、整数画素間隔となる点のみを探索することを意味する。
洗練化部111Cは、ステップS42の探索によって、整数画素間隔位置での修正後の動きベクトルを決定する。探索の方法としては、既知の手法を用いることができる。例えば、洗練化部111Cは、L0側及びL1側の差分動きベクトルが符号のみを反転した組み合わせとなる点のみを探索するという方法で探索することもできる。ここで、ステップS43における探索の結果、探索前の動きベクトルと同じ値になる可能性もある。
ステップS44において、洗練化部111Cは、ステップS43で決定した整数画素精度での修正後の動きベクトルを初期値として、非整数画素精度での動きベクトル探索を行う。動きベクトルの探索方法としては、既知の手法を用いることができる。
また、洗練化部111Cは、実際に探索を行わずに、ステップS43の結果を入力として、パラボラフィッティング等のパラメトリックなモデルを用いて非整数画素精度でのベクトルを決定することもできる。
洗練化部111Cは、ステップS44において、非整数画素精度での修正後の動きベクトルを決定した後、ステップS45へ移り洗練化処理を終了する。ここでは、便宜上、非整数画素精度の修正後動きベクトルという表現を用いたが、ステップS44の探索結果により、結果的に、ステップS43で求めた整数画素精度の動きベクトルと同じ値になる可能性もある。
洗練化部111Cは、予め定めた閾値より大きなブロックを、小さなサブブロックに分割してサブブロックごとに洗練化処理を実行してもよい。例えば、洗練化部111Cは、洗練化処理の実行単位を16×16画素と設定しておき、ブロックの水平方向又は垂直方向のサイズが16画素より大きい場合、それぞれ16画素以下となるように分割することができる。この時、洗練化処理の基準となる動きベクトルとしては、同一ブロック内の全てのサブブロックについて、動きベクトル符号化部111Bで符号化された当該ブロックの動きベクトルを用いる。
サブブロックごとに処理を行う場合、洗練化部111Cは、図4の全ての手順をサブブロックごとに実行してもよい。また、洗練化部111Cは、図4の処理の一部のみをサブブロックごとに処理してもよい。具体的には、洗練化部111Cは、図4のステップS41及びS42については、ブロック毎に処理を行い、ステップS43及びS44のみについて、サブブロックごとに処理してもよい。
予測信号生成部111Dは、洗練化部111Cから出力される修正された動きベクトルに基づいて予測信号を生成するように構成されている。
ここで、後述するように、予測信号生成部111Dは、上述の洗練化処理の過程で算出される情報(例えば、探索コスト)に基づいて、ブロック毎にBDOF処理を行うるか否かについて判定するように構成されている。
具体的には、予測信号生成部111Dは、動きベクトルが修正されない場合には、動きベクトル符号化部111Bで符号化された動きベクトルに基づいて予測信号を生成するように構成されている。一方で、予測信号生成部111Dは、動きベクトルが修正される場合には、洗練化部111Cで修正された動きベクトルに基づいて予測信号を生成するように構成されている。
図5は、予測信号生成部111Dの処理手順の一例を示すフローチャートである。ここで、洗練化部111Cにてサブブロック単位で洗練化処理が行われた場合、予測信号生成部111Dの処理もサブブロック単位で実行される。その場合、以下の説明のブロックという単語は、適宜、サブブロックに読み替えることができる。
図5に示すように、ステップS51において、予測信号生成部111Dは、予測信号を生成する。
具体的には、予測信号生成部111Dは、動きベクトル符号化部111Bで符号化された動きベクトル或いは洗練化部111Cで符号化された動きベクトルを入力として、かかる動きベクトルが指す位置が非整数画素位置の場合は参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。ここで、具体的なフィルタについては、非特許文献3で開示されている最大8タップの水平垂直可分型のフィルタを適用することができる。
当該ブロックが双予測を行うブロックである場合は、一つ目(以後、L0と呼ぶ)の参照フレーム及び動きベクトルによる予測信号及び二つ目(以後、L1と呼ぶ)の参照フレーム及び動きベクトルによる予測信号の両方を生成する。
ステップS52において、予測信号生成部111Dは、後述するBDOF(Bi-Directional Optical Flow)の適用条件が満足されているかどうかについて確認する。
かかる適用条件としては、非特許文献3に記載の条件を適用できる。適用条件は、少なくとも当該ブロックが双予測を行うブロックであることという条件を含む。また、適用条件は、非特許文献1に記載のように、当該ブロックの動きベクトルがSymmetric MVDモードで符号化されていないことという条件を含んでもよい。
また、適用条件は、当該ブロックの動きベクトルがSymmetric MVDモードで符号化されていないこと、或いは、Symmetric MVDモードで符号化されている場合には伝送される差分動きベクトルの大きさが予め設定された閾値以内であることという条件を含んでもよい。ここで、差分動きベクトルの大きさは、上述のステップS41と同様の方法で判定することができる。閾値の値は、上述のステップS41と同様に0に設定することも可能である。
適用条件が満足されていない場合、本処理手順は、ステップS55に移って処理を終了する。この時、予測信号生成部111Dは、ステップS51で生成した予測信号を最終的な予測信号として出力する。
一方、適用条件が全て満足される場合、本処理手順は、ステップS53へ移る。ステップS53において、本処理手順は、適用条件を満足しているブロックについて、実際に、ステップS54のBDOF処理を実行するかどうかについて判定する。
例えば、予測信号生成部111Dは、L0の予測信号とL1の予測信号との絶対値差分和を算出し、その値が予め定めた閾値以下であった場合は、BDOF処理を行わないといったような判定を行う。
ここで、予測信号生成部111Dは、洗練化部111Cで洗練化処理を実行したブロックについては、BDOFの適用有無に洗練化処理の結果を用いることもできる。
例えば、洗練化処理を実施した結果、修正前後の動きベクトルの差分が予め定めた閾値以下の場合に、予測信号生成部111Dは、BDOFを適用しないと判断することができる。かかる閾値を水平及び垂直方向成分ともに「0」に設定した場合、洗練化処理を実施した結果、修正前と比べて動きベクトルが変化しなかった場合に、BDOFを適用しないという判定をすることと等価となる。
予測信号生成部111Dは、上述の洗練化処理の過程で算出された探索コスト(例えば、L0側の参照ブロックの画素値とL1側の参照ブロックの画素値との絶対値差分和)を用いて、BDOFを適用するか否かを判定することもできる。
なお、以下では探索コストとして絶対値差分和を用いた場合を例に説明するが、他の指標を探索コストに用いることもできる。例えば、局所的な平均値を除去した後の信号同士の絶対値差分和や、二乗誤差和等、画像信号同士の類似性を判断するための指標値であればよい。
例えば、予測信号生成部111Dは、ステップS43における整数画素位置探索において、上述の探索コスト(絶対値差分和)が最小となる探索点の絶対値差分和が、予め定めた閾値よりも小さい場合に、BDOFを適用しないという判定をすることができる。
また、予測信号生成部111Dは、上述の洗練化処理前後の動きベクトルの変化を用いる方法と上述の洗練化処理の探索コストを用いる方法とを組み合わせて、BFOF処理の適否を判定することもできる。
例えば、予測信号生成部111Dは、洗練化処理前後の動きベクトルの差分が予め定めた閾値以下で且つ洗練化処理の探索コストが予め定めた閾値以下の場合に、BDOF処理を適用しないと判定することができる。
ここで、洗練化処理前後の動きベクトルの差分の閾値を0にした場合、上述の探索コストとして判定されるのは、洗練化処理前の動きベクトル(=洗練化処理後の動きベクトル)が指し示す参照ブロック同士の絶対値差分和となる。
また、予測信号生成部111Dは、洗練化処理が実行されたブロックでは洗練化処理の結果による方法、それ以外のブロックでは絶対値差分和による方法でそれぞれ判断してもよい。
また、予測信号生成部111Dは、上述のように、新たにL0側の予測信号とL1側の予測信号との絶対値差分和を算出する処理について行わずに、洗練化処理の結果から得られる情報のみを用いて、BDOFの適否を判定するという構成をとることもできる。この場合、ステップ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に移り処理を終了する。
(インループフィルタ処理部150)
以下において、本実施形態に係るインループフィルタ処理部150について説明する。図6は、本実施形態に係るインループフィルタ処理部150を示す図である。
図6に示すように、インループフィルタ処理部150は、対象ブロック境界検出部151と、隣接ブロック境界検出部152と、境界強度判定部153と、フィルタ決定部154と、フィルタ処理部155とを有する。
ここで、末尾に「A」が付されている構成は、垂直方向のブロック境界に対するデブロッキングフィルタ処理に関する構成であり、末尾に「B」が付されている構成は、水平方向のブロック境界に対するデブロッキングフィルタ処理に関する構成である。
以下、垂直方向のブロック境界に対するデブロッキングフィルタ処理が行われた後に、水平方向のブロック境界に対するデブロッキングフィルタ処理が行われるケースについて例示する。
デブロッキングフィルタ処理は、上述したように、符号化ブロックに対して適用されてもよく、予測ブロックに対して適用されてもよく、変換ブロックに対して適用されてもよい。また、上記の各ブロックを分割したサブブロックに適用されても良い。すなわち、対象ブロック及び隣接ブロックは、符号化ブロックであってもよく、予測ブロックであってもよく、変換ブロックであってもよく、これらを分割したサブブロックでもよい。
サブブロックの定義には、洗練化部111C及び予測信号生成部111Dの処理単位として説明したサブブロックを含む。サブブロックにデブロッキングフィルタを適用する場合は、適宜、以下の説明のブロックをサブブロックに読み替えることができる。
垂直方向のブロック境界に対するデブロッキングフィルタ処理及び水平方向のブロック境界に対するデブロッキングフィルタ処理は、同様の処理であるため、以下においては、垂直方向のブロック境界に対するデブロッキングフィルタ処理について説明する。
対象ブロック境界検出部151Aは、対象ブロックのブロックサイズを示す制御データに基づいて、対象ブロックの境界を検出するように構成されている。
隣接ブロック境界検出部152Aは、隣接ブロックのブロックサイズを示す制御データに基づいて、隣接ブロックの境界を検出するように構成されている。
境界強度判定部153Aは、対象ブロックと隣接ブロックとのブロック境界の境界強度を判定するように構成されている。
また、境界強度判定部153Aは、対象ブロック及び隣接ブロックがイントラ予測ブロックであるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックの少なくともいずれか1つのブロックがイントラ予測ブロックである場合(すなわち、ブロック境界の両側のブロックの少なくともいずれかがイントラ予測ブロックである場合)に、ブロック境界の境界強度が「2」であると判定ように構成されていてもよい。
また、境界強度判定部153Aは、対象ブロック及び隣接ブロックに非零(ゼロ)の直交変換係数が含まれるか否か及びブロック境界が変換ブロックの境界であるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックの少なくともいずれか1つのブロックが非零の直交変換係数を含み、かつ、ブロック境界が変換ブロックの境界である場合(すなわち、ブロック境界の両側のブロックの少なくともいずれかに非零の変換係数が存在し、TUの境界である場合)に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
また、境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値(例えば、1画素)以上であるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値(例えば、1画素)以上である場合(すなわち、ブロック境界の両側のブロックの動きベクトルの差の絶対値が閾値(例えば、1画素)以上である場合)に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
また、境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なる場合(すなわち、ブロック境界の両側のブロックで参照画像が異なる場合)に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの数が異なるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックの動きベクトルの数が異なる場合(すなわち、ブロック境界の両側のブロックで動きベクトルの数が異なる場合)に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
境界強度判定部153Aは、対象ブロックと隣接ブロックに対して洗練化部111Cによる洗練化処理が適用されているか否かによってブロック境界の境界強度を判定するように構成されていてもよいい。
例えば、図7に示すように、境界強度判定部153Aは、対象ブロック及び隣接ブロックがいずれも洗練化部111Cで洗練化処理が適用されたブロックである場合に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
ここで、境界強度判定部153Aは、当該ブロックにおいて図4のステップS41における所定条件を全て満足したことをもって、「洗練化処理が適用された」と判断してもよい。また、図4のステップS41の判定結果を示すフラグを用意しておき、境界強度判定部153Aは、フラグの値によって洗練化処理の適用有無を判断するように構成されていてもよい。
また、境界強度判定部153Aは、対象ブロック又は隣接ブロックの少なくともいずれかが洗練化部111Cによる洗練化処理が適用されたブロックである場合に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
或いは、境界強度判定部153Aは、当該境界が洗練化部111Cによる洗練化処理におけるサブブロック境界である場合に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
さらに、境界強度判定部153Aは、ブロック境界の両側のブロックの少なくともいずれかでDMVRが適用されている場合に、ブロック境界の境界強度が「1」であると判定するように構成されていてもよい。
例えば、図7に示すように、境界強度判定部153Aは、上述した条件がいずれも満たされない場合に、ブロック境界の境界強度が「0」であると判定するように構成されていてもよい。
なお、境界強度の値が大きいほど、ブロック境界で生じるブロック歪みが大きい可能性が高い。
上述の境界強度判定方法は、輝度信号及び色差信号に対して共通の方法で判定してもよいし、一部異なる条件を用いて判定してもよい。例えば、上述の洗練化処理に関する条件を輝度信号及び色差信号の両方に適用してもよいし、輝度信号のみ或いは色差信号のみに適用してもよい。
また、洗練化処理の結果を境界強度の判定時に考慮するかどうかについて制御するフラグを、SPS(Sequence Parameter Set)やPPS(Picture Parameter Set)と呼ばれるヘッダの中に備えてもよい。
フィルタ決定部154Aは、ブロック境界に適用するフィルタ処理(例えば、デブロッキングフィルタ処理)の種類を決定するように構成されている。
例えば、フィルタ決定部154Aは、ブロック境界の境界強度、対象ブロック及び隣接ブロックに含まれる量子化パラメータ等に基づいて、ブロック境界に対して、フィルタ処理を適用するか否か、弱フィルタ処理及び強フィルタ処理のいずれのフィルタ処理を適用するかについて決定するように構成されていてもよい。
フィルタ決定部154Aは、ブロック境界の境界強度が「0」である場合に、フィルタ処理を適用しないと決定するように構成されていてもよい。
フィルタ処理部155Aは、フィルタ決定部154Aの決定に基づいてデブロッキング前画像に対する処理を行うように構成されている。デブロッキング前画像に対する処理は、フィルタ処理なし、弱フィルタ処理、強フィルタ処理等である。
(画像復号装置200)
以下、図8を参照して、本実施形態に係る画像復号装置200について説明する。図8は、本実施形態に係る画像復号装置200の機能ブロックの一例について示す図である。
図8に示すように、画像復号装置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)
以下、図9を参照して、本実施形態に係るインター予測部241について説明する。図9は、本実施形態に係るインター予測部241の機能ブロックの一例について示す図である。
図9に示すように、インター予測部241は、動きベクトル復号部241Bと、洗練化部241Cと、予測信号生成部241Dとを有する。
インター予測部241は、動きベクトルに基づいて予測ブロックに含まれる予測信号を生成するように構成されている予測部の一例である。
動きベクトル復号部241Bは、画像符号化装置100から受信する制御データの復号によって動きベクトルを取得するように構成されている。
洗練化部241Cは、洗練化部111Cと同様に、動きベクトルを修正する洗練化処理を実行するように構成されている。
予測信号生成部241Dは、予測信号生成部111Dと同様に、動きベクトルに基づいて予測信号を生成するように構成されている。
(インループフィルタ処理部250)
以下において、本実施形態に係るインループフィルタ処理部250について説明する。図10は、本実施形態に係るインループフィルタ処理部250を示す図である。
図10に示すように、インループフィルタ処理部250は、対象ブロック境界検出部251と、隣接ブロック境界検出部252と、境界強度判定部253と、フィルタ決定部254と、フィルタ処理部255とを有する。
ここで、末尾に「A」が付されている構成は、垂直方向のブロック境界に対するデブロッキングフィルタ処理に関する構成であり、末尾に「B」が付されている構成は、水平方向のブロック境界に対するデブロッキングフィルタ処理に関する構成である。
ここでは、垂直方向のブロック境界に対するデブロッキングフィルタ処理が行われた後に、水平方向のブロック境界に対するデブロッキングフィルタ処理が行われるケースについて例示する。
デブロッキングフィルタ処理は、上述したように、符号化ブロックに対して適用されてもよく、予測ブロックに対して適用されてもよく、変換ブロックに対して適用されてもよい。また、上述の各ブロックを分割したサブブロックに適用されてもよい。すなわち、対象ブロック及び隣接ブロックは、符号化ブロックであってもよく、予測ブロックであってもよく、変換ブロックであってもよく、これらを分割したサブブロックでもよい。
垂直方向のブロック境界に対するデブロッキングフィルタ処理及び水平方向のブロック境界に対するデブロッキングフィルタ処理は同様の処理であるため、以下においては、垂直方向のブロック境界に対するデブロッキングフィルタ処理について説明する。
対象ブロック境界検出部251Aは、対象ブロック境界検出部151Aと同様に、対象ブロックのブロックサイズを示す制御データに基づいて、対象ブロックの境界を検出するように構成されている。
隣接ブロック境界検出部252Aは、隣接ブロック境界検出部152Aと同様に、隣接ブロックのブロックサイズを示す制御データに基づいて、隣接ブロックの境界を検出するように構成されている。
境界強度判定部253Aは、境界強度判定部153Aと同様に、対象ブロックと隣接ブロックとのブロック境界の境界強度を判定するように構成されている。ブロック境界の境界強度の判定方法は上述した通りである。
フィルタ決定部254Aは、フィルタ決定部154Aと同様に、ブロック境界に適用するデブロッキングフィルタ処理の種類を決定するように構成されている。デブロッキングフィルタ処理の種類の決定方法は、上述した通りである。
フィルタ処理部255Aは、フィルタ処理部155Aと同様に、フィルタ決定部254Aの決定に基づいてデブロッキング前画像に対する処理を行うように構成されている。デブロッキング前画像に対する処理は、フィルタ処理なし、弱フィルタ処理、強フィルタ処理等である。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、境界強度判定部153、253において、境界強度を決定する際に、当該境界に隣接するブロックにおいて洗練化部111C、241Cによる洗練化処理が適用されたか否かを考慮する。
例えば、上述のように、当該境界に隣接する二つのブロックのうち、少なくとも一つのブロックで洗練化処理が適用された場合に、当該境界の境界強度を1に設定する。
境界強度が「1」以上の境界については、フィルタ決定部154及び254において、量子化パラメータ等のパラメータを考慮して当該ブロック境界にデブロッキングフィルタが適用されるか否かについて及びデブロッキングフィルタの種類を決定する。
このような構成とすることで、ハードウェア実装の制約上、洗練化後の動きベクトルの値が前記境界強度の判定に用いることができない場合も、洗練化処理を実施したブロックの境界で適切にデブロッキングフィルタを適用できるようになり、ブロックノイズを抑制して主観画質を向上させることができる。
デブロッキングフィルタの適否の判定や境界強度の決定方法は、種々提案されている。例えば、特許文献1では、当該ブロックがスキップモードであるか等のシンタックスの情報に基づいてデブロッキングフィルタの適用を省略する技術が開示されている。また、例えば、特許文献2では、量子化パラメータを用いてデブロッキングフィルタの適用を省略する技術が開示されている。
しかし、いずれについても、洗練化処理の適否については考慮されていない。本発明によって解決される課題の一つは、シンタックスから復号した動きベクトルの値を、復号側で修正する洗練化処理において、修正後の動きベクトルの値がデブロッキングフィルタの適用判定に使用できない場合、適切に適用判定ができないという洗練化処理に特有の課題である。
よって、洗練化処理の適否を考慮しない特許文献1や特許文献2の方法で、この課題を解決することはできない。一方、特許文献1や特許文献2の方法を、本発明のデブロッキングフィルタの適用判定と組み合わせることは可能である。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、前記洗練化部111C、241Cにおける洗練化処理の実行条件として、当該処理の基準となる動きベクトルがSymmetric MVDモードで符号化されているか否かを考慮する。
かかる洗練化処理において、L0側とL1側の差分動きベクトルの絶対値が同じで符号が反転した点のみを探索する場合、Symmetric MVDモードで動きベクトルを伝送する場合と同様の動きベクトルを得ることができる。
よって、上述の洗練化処理で本来伝送した動きベクトルが得られる場合、Symmetric MVDモードで伝送する差分動きベクトルを可能な限り小さくすることで、差分動きベクトルに関する符号量を削減することができる。
特に、差分動きベクトルが特定の値(0等)の際にフラグのみを伝送し、それ以外の値の場合は、差分値を直接符号化する符号化方法となっている場合、かかる洗練化処理で修正する動きベクトルの差分が微小でも、符号量の削減効果が大きくなる可能性がある。
また、上述の洗練化処理の実行条件として、かかる洗練化処理の基準となる動きベクトルがSymmetric MVDモードで符号化されており、さらに差分動きベクトルの値が予め定めた閾値以下であることという条件とすることで、差分動きベクトルの値によって洗練化処理を実行するかどうかを暗黙的に切り替えることも可能となる。
同様に、予測信号生成部111D、241DにおけるBDOF処理の適用条件に、当該ブロックの動きベクトルがSymmetric MVDモードで符号化されており、さらに差分動きベクトルの値が予め定めた閾値以下であることという条件を用いることで、差分動きベクトルの値によってBDOF処理を適用するかどうかを暗黙的に切り替えることが可能となる。
本実施形態に係る画像符号化装置100及び画像復号装置200によれば、予測信号生成部111D、241DにおいてBDOF処理を実行するか否かの判定に、前記洗練化処理の結果を考慮する。非特許文献3ではL0とL1の予測信号の絶対値差分値を用いて判定を行っているが、その代わりに洗練化処理の結果による判定を行うことで、前記絶対値差分を算出する処理を削減することができる。
また、上述の画像符号化装置100及び画像復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を画像符号化装置100及び画像復号装置200への適用を例にして説明したが、本発明はこれのみに限定されるものではなく、符号化装置および復号装置の各機能を備えた符号化/復号システムにも同様に適用できる。
本発明によれば、洗練化後の動きベクトルをデブロッキングフィルタの適用判定に用いることができない場合でも、洗練化処理を行ったブロックの境界に適切にデブロッキングフィルタを適用し、ブロックノイズを抑制して主観画質を向上させることができる。