(57)【特許請求の範囲】
【請求項１】
画像復号装置であって、
ブロック毎にＢＤＯＦ（Ｂｉ-Ｄｉｒｅｃｔｉｏｎａｌ  Ｏｐｔｉｃａｌ  Ｆｌｏｗ）処理の適用条件を満足するか否かについて判定し、前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成するように構成されている予測信号生成部を備え、
前記適用条件として、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づく前記２つの参照フレームと当該フレームとの時間的な距離に関する条件を備え、
前記適用条件において、前記２つの参照フレームのそれぞれと当該フレームとの時間的な距離の比率は、前記重み係数の逆数に比例するように決定されることを特徴とする画像復号装置。
【請求項２】
前記重み係数が等しい場合、前記時間的な距離に関する条件として、前記２つの参照フレームのそれぞれと当該フレームとの時間的な距離が等しいことを前記適用条件として備えることを特徴とする請求項１に記載の画像復号装置。
【請求項３】
ブロック毎にＢＤＯＦ処理の適用条件を満足するか否かについて判定する工程と、
前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成する工程とを有し、
前記適用条件として、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づく前記２つの参照フレームと当該フレームとの時間的な距離に関する条件を備え、
前記適用条件において、前記２つの参照フレームのそれぞれと当該フレームとの時間的な距離の比率は、前記重み係数の逆数に比例するように決定されることを特徴とする画像復号方法。
【請求項４】
コンピュータを、画像復号装置として機能させるプログラムであって、
前記画像復号装置は、
ブロック毎にＢＤＯＦ処理の適用条件を満足するか否かについて判定し、前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成するように構成されている予測信号生成部を備え、
前記適用条件として、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づく前記２つの参照フレームと当該フレームとの時間的な距離に関する条件を備え、
前記適用条件において、前記２つの参照フレームのそれぞれと当該フレームとの時間的な距離の比率は、前記重み係数の逆数に比例するように決定されることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像復号装置、画像復号方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ＢＤＯＦ（Ｂｉ−Ｄｉｒｅｃｔｉｏｎａｌ  Ｏｐｔｉｃａｌ  Ｆｌｏｗ）という技術について、２つの参照フレームの画素値を用いて予測信号を生成する方法が知られている。また、ＢＤＯＦのブロック単位の適用条件として、２つの参照フレームのうちいずれか１つが当該フレームより未来のフレームで、残りの１つが当該フレームより過去のフレームであることという条件を持つ方法が知られている（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｖｅｒｓａｔｉｌｅ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （Ｄｒａｆｔ  ６）、ＪＶＥＴ-Ｎ１００１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、非特許文献１のＢＤＯＦ処理は、２つの参照フレーム間の画素値同士及び画素値から算出された勾配等の値同士を演算（例えば、互いに加減算）する際に均等の重みを用いて計算している。この処理は、当該フレームと未来方向の参照フレームとの時間的な距離の絶対値と、当該フレームと過去方向の参照フレームとの時間的な距離の絶対値が等しいことを暗に仮定している。一方、ＢＤＯＦの適用条件では、参照フレーム間の時間的な距離は考慮されていない。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ＢＤＯＦ処理内の演算における各参照フレームの画素値に対する重みに応じて、ＢＤＯＦの適用条件に参照フレームと当該フレームとの距離に関する条件を設けることができる画像復号装置、画像復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の特徴は、画像復号装置であって、ブロック毎にＢＤＯＦ処理の適用条件を満足するか否かについて判定し、前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成し、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づいて、前記適用条件に２つの参照フレームと当該フレームとの時間的な距離に関する条件を備えるように構成されている予測信号生成部を備えることを要旨とする。
本発明の第２の特徴は、画像復号装置であって、ＢＤＯＦ処理を行うように構成されている予測信号生成部と、ＰＲＯＦ処理を行うように構成されているアフィン予測信号生成部とを備え、前記予測信号生成部によって行われる前記ＢＤＯＦ処理中の勾配算出処理及び前記アフィン予測信号生成部によって行われる前記ＰＲＯＦ処理中の勾配算出処理を、前記ＰＲＯＦ処理が２つの参照フレームの両方に適用された場合に同一の処理とすることを要旨とする。
【０００７】
本発明の第３の特徴は、画像復号方法であって、ブロック毎にＢＤＯＦ処理の適用条件を満足するか否かについて判定し、前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成し、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づいて、前記適用条件に２つの参照フレームと当該フレームとの時間的な距離に関する条件を備えることを要旨とする。
【０００８】
本発明の第４の特徴は、コンピュータを、画像復号装置として機能させるプログラム前記画像復号装置は、ブロック毎にＢＤＯＦ処理の適用条件を満足するか否かについて判定し、前記適用条件を満足すると判定された場合には前記ＢＤＯＦ処理を実行して予測信号を生成し、前記ＢＤＯＦ処理において２つの参照フレームの画素値同士又は前記画素値から算出した値同士を用いて演算する場合の重み係数に基づいて、前記適用条件に２つの参照フレームと当該フレームとの時間的な距離に関する条件を備えることを要旨とする。
【発明の効果】
【０００９】
本発明によれば、ＢＤＯＦ処理内での各参照フレームの画素値に対する重みを考慮してＢＤＯＦの適用条件に参照フレームと当該フレームとの時間的な距離に関する条件を設けることで、ＢＤＯＦ処理内の演算と整合が取れている参照フレーム構造を持つブロックのみでＢＤＯＦを適用することとなり、符号化効率の低下を防ぐことができる画像復号装置、画像復号方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係る画像処理システム１０の構成の一例を示す図である。
【図２】一実施形態に係る画像符号化装置１００の機能ブロックの一例を示す図である。
【図３】一実施形態に係る画像符号化装置１００の符号化部１４０から出力される符号化後のデータ（ビットストリーム）の構成の一例を示す図である。
【図４】図３に示すＳＰＳ１４１内に含まれる制御データの一例を示す図である。
【図５】図３に示すスライスヘッダ１４３Ａに含まれる制御データの一例である。
【図６】一実施形態に係る画像符号化装置１００のインター予測部１１１の機能ブロックの一例を示す図である。
【図７】一実施形態に係る画像符号化装置１００のインター予測部１１１の洗練化部１１１Ｃの処理手順の一例を示すフローチャートである。
【図８】一実施形態に係る画像符号化装置１００のインター予測部１１１の予測信号生成部１１１Ｄの処理手順の一例を示すフローチャートである。
【図９】一実施形態に係る画像符号化装置１００のインター予測部１１１のアフィン動きベクトル算出部１１１Ｅの処理手順の一例を示すフローチャートである。
【図１０】一実施形態に係る画像符号化装置１００のインター予測部１１１のアフィン動きベクトル算出部１１１Ｅの処理手順の一例を説明するための図である。
【図１１】一実施形態に係る画像符号化装置１００のインター予測部１１１のアフィン予測信号生成部１１１Ｆの処理手順の一例を示すフローチャートである。
【図１２】一実施形態に係る画像符号化装置１００のインループフィルタ処理部１５０の機能ブロックの一例を示す図である。
【図１３】一実施形態に係る画像符号化装置１００のインループフィルタ処理部１５０の境界強度判定部１５３（１５３Ａ/１５３Ｂ）の処理手順を説明するための図である。
【図１４】一実施形態に係る画像復号装置２００の機能ブロックの一例を示す図である。
【図１５】一実施形態に係る画像復号装置２００のインター予測部２４１の機能ブロックの一例を示す図である。
【図１６】一実施形態に係る画像復号装置２００のインループフィルタ処理部２５０の機能ブロックの一例を示す図である。
【図１７】変更例１について説明するための図である。
【図１８】変更例１について説明するための図である。
【図１９】変更例２について説明するための図である。
【図２０】変更例２について説明するための図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
（第１実施形態）
以下、図１〜図１６を参照して、本発明の第１実施形態に係る画像処理システム１０について説明する。図１は、本実施形態に係る実施形態に係る画像処理システム１０を示す図である。
【００１２】
図１に示すように、画像処理システム１０は、画像符号化装置１００及び画像復号装置２００を有する。
【００１３】
画像符号化装置１００は、入力画像信号を符号化することによって符号化データを生成するように構成されている。画像復号装置２００は、符号化データを復号することによって出力画像信号を生成するように構成されている。
【００１４】
ここで、かかる符号化データは、画像符号化装置１００から画像復号装置２００に対して伝送路を介して送信されてもよい。また、符号化データは、記憶媒体に格納された上で、画像符号化装置１００から画像復号装置２００に提供されてもよい。
（画像符号化装置１００）
以下、図２を参照して、本実施形態に係る画像符号化装置１００について説明する。図２は、本実施形態に係る画像符号化装置１００の機能ブロックの一例について示す図である。
【００１５】
図２に示すように、画像符号化装置１００は、インター予測部１１１と、イントラ予測部１１２と、減算器１２１と、加算器１２２と、変換・量子化部１３１と、逆変換・逆量子化部１３２と、符号化部１４０と、インループフィルタ処理部１５０と、フレームバッファ１６０とを有する。
【００１６】
インター予測部１１１は、インター予測（フレーム間予測）によって予測信号を生成するように構成されている。
【００１７】
具体的には、インター予測部１１１は、符号化対象のフレーム（以下、対象フレーム）とフレームバッファ１６０に格納される参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する動きベクトルを決定するように構成されている。
【００１８】
また、インター予測部１１１は、参照ブロック及び動きベクトルに基づいて予測ブロックに含まれる予測信号を予測ブロック毎に生成するように構成されている。インター予測部１１１は、予測信号を減算器１２１及び加算器１２２に出力するように構成されている。ここで、参照フレームは、対象フレームとは異なるフレームである。
【００１９】
イントラ予測部１１２は、イントラ予測（フレーム内予測）によって予測信号を生成するように構成されている。
【００２０】
具体的には、イントラ予測部１１２は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。また、イントラ予測部１１２は、予測信号を減算器１２１及び加算器１２２に出力するように構成されている。
【００２１】
ここで、参照ブロックは、予測対象のブロック（以下、対象ブロック）について参照されるブロックである。例えば、参照ブロックは、対象ブロックに隣接するブロックである。
【００２２】
減算器１２１は、入力画像信号から予測信号を減算し、予測残差信号を変換・量子化部１３１に出力するように構成されている。ここで、減算器１２１は、イントラ予測又はインター予測によって生成される予測信号と入力画像信号との差分である予測残差信号を生成するように構成されている。
【００２３】
加算器１２２は、逆変換・逆量子化部１３２から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、かかるフィルタ処理前復号信号をイントラ予測部１１２及びインループフィルタ処理部１５０に出力するように構成されている。
【００２４】
ここで、フィルタ処理前復号信号は、イントラ予測部１１２で用いる参照ブロックを構成する。
【００２５】
変換・量子化部１３１は、予測残差信号の変換処理を行うとともに、係数レベル値を取得するように構成されている。さらに、変換・量子化部１３１は、係数レベル値の量子化を行うように構成されていてもよい。
【００２６】
ここで、変換処理は、予測残差信号を周波数成分信号に変換する処理である。かかる変換処理では、離散コサイン変換（ＤＣＴ；Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）に対応する基底パターン（変換行列）が用いられてもよく、離散サイン変換（ＤＳＴ；Ｄｉｓｃｒｅｔｅ  Ｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）に対応する基底パターン（変換行列）が用いられてもよい。
【００２７】
逆変換・逆量子化部１３２は、変換・量子化部１３１から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部１３２は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
【００２８】
ここで、逆変換処理及び逆量子化は、変換・量子化部１３１で行われる変換処理及び量子化とは逆の手順で行われる。
【００２９】
符号化部１４０は、変換・量子化部１３１から出力された係数レベル値を符号化し、符号化データを出力するように構成されている。
【００３０】
ここで、例えば、符号化は、係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化である。
【００３１】
また、符号化部１４０は、係数レベル値に加えて、復号処理で用いる制御データを符号化するように構成されている。
【００３２】
ここで、制御データは、符号化ブロック（ＣＵ：Ｃｏｄｉｎｇ  Ｕｎｉｔ）サイズ、予測ブロック（ＰＵ：Ｐｒｅｄｉｃｔｉｏｎ  Ｕｎｉｔ）サイズ、変換ブロック（ＴＵ：Ｔｒａｎｓｆｏｒｍ  Ｕｎｉｔ）サイズ等のサイズデータを含んでもよい。
【００３３】
インループフィルタ処理部１５０は、加算器１２２から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ１６０に出力するように構成されている。
【００３４】
ここで、例えば、フィルタ処理は、ブロック（符号化ブロック、予測ブロック又は変換ブロック）の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
【００３５】
フレームバッファ１６０は、インター予測部１１１で用いる参照フレームを蓄積するように構成されている。
【００３６】
ここで、フィルタ処理後復号信号は、インター予測部１１１で用いる参照フレームを構成する。
（符号化部１４０）
以下、図３〜図５を用いて符号化部１４０で符号化される制御データについて説明する。図３は、符号化部１４０から出力される符号化後のデータ（ビットストリーム）の構成例である。
【００３７】
まず、かかるビットストリームは、先頭にＳＰＳ（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ：シーケンスパラメータセット）１４１を含んでもよい。ＳＰＳ１４１は、シーケンス（ピクチャの集合）単位での制御データの集合である。具体例については、後述する。各ＳＰＳ１４１は、複数のＳＰＳ１４１が存在する場合に個々を識別するためのｉｄ情報を少なくとも含む。
【００３８】
かかるビットストリームは、ＳＰＳ１４１の次に、ＰＰＳ（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ：ピクチャパラメータセット）１４２を含んでもよい。ＰＰＳ１４２は、ピクチャ（スライスの集合）単位での制御データの集合である。各ＰＰＳ１４２は、複数のＳＰＳ１４１が存在する場合に個々を識別するためのｉｄ情報を少なくとも含む。また、各ＰＰＳ１４２は、各ＰＰＳ１４２に対応するＳＰＳ１４１を指定するためのＳＰＳ  ｉｄ情報を少なくとも含む。
【００３９】
かかるビットストリームは、ＰＰＳ１４２の次に、スライスヘッダ１４３Ａを含んでもよい。スライスヘッダ１４３Ａは、スライス単位での制御データの集合である。具体例については、後述する。各スライスヘッダ１４３Ａは、各スライスヘッダ１４３Ａに対応するＰＰＳ１４２を指定するためのＰＰＳ  ｉｄ情報を少なくとも含む。
【００４０】
かかるビットストリームは、スライスヘッダ１４３Ａの次に、スライスデータ１４４Ａを含んでもよい。スライスデータ１４４Ａは、上述の係数レベル値やサイズデータ等を含んでもよい。
【００４１】
以上のように、各スライスデータ１４４Ａ/１４４Ｂに、１つずつスライスヘッダ１４３Ａ/１４３Ｂ、ＰＰＳ１４２、ＳＰＳ１４１が対応する構成となる。上述のように、スライスヘッダ１４３Ａ/１４３Ｂにて、どのＰＰＳ１４２を参照するかについてＰＰＳ  ｉｄ情報で指定し、さらに、そのＰＰＳ１４２にて、どのＳＰＳ１４１を参照するかについてＳＰＳ  ｉｄ情報で指定するため、複数のスライスデータ１４４Ａ/１４４Ｂに対して共通のＳＰＳ１４１及びＰＰＳ１４２を用いることができる。
【００４２】
言い換えると、ＳＰＳ１４１及びＰＰＳ１４２は、スライスデータ１４４Ａ/１４４Ｂ毎に、必ずしも伝送する必要がない。例えば、図３のように、スライスヘッダ１４３Ｂ及びスライスデータ１４４Ｂの直前では、ＳＰＳ１４１及びＰＰＳ１４２を符号化しないようなストリーム構成とすることもできる。
【００４３】
なお、図３の構成は、あくまで一例である。各スライスデータ１４４Ａ/１４４Ｂに、スライスヘッダ１４４Ａ/１４４Ｂ、ＰＰＳ１４２、ＳＰＳ１４１で指定された制御データが対応する構成となっていれば、ストリームの構成要素として、上述以外の要素が追加されてもよい。また、同様に、伝送に際して、図３と異なる構成に整形されてもよい。
【００４４】
図４は、ＳＰＳ１４１内に含まれる制御データの一例を示す図である。
【００４５】
ＳＰＳ１４１は、上述の通り、少なくとも各ＳＰＳ１４１を識別するためのｉｄ情報 （ｓｐｓ＿ｓｅｑ＿ｐａｒａｍｅｔｅｒ＿ｓｅｔ＿ｉｄ）を含む。
【００４６】
ＳＰＳ１４１は、後述するＢＤＯＦ（Ｂｉ-Ｄｉｒｅｃｔｉｏｎａｌ  Ｏｐｔｉｃａｌ  Ｆｌｏｗ）処理の使用可否（有効・無効）を制御するためのフラグである「ｓｐｓ＿ｂｄｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」を含んでもよい。かかるフラグの値が「０」である時、かかるＳＰＳ１４１に対応するスライス内では、ＢＤＯＦ処理を使用しないことを意味する。一方、かかるフラグの値が「１」である時は、かかるＳＰＳ１４１に対応するスライス内で、ＢＤＯＦ処理を使用可能であることを意味する。スライス内の各ブロックでＢＤＯＦ処理を実際に使用するかどうかは、後述する処理にてブロック毎に決定される。
【００４７】
すなわち、「ｓｐｓ＿ｂｄｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」は、ＳＰＳ１４１に含まれるＢＤＯＦ処理のシーケンス単位での使用可否を示すフラグ（第４フラグ）である。
【００４８】
ＳＰＳ１４１は、後述するＤＭＶＲ（Ｄｅｃｏｄｅｒ-ｓｉｄｅ  Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｒｅｆｉｎｅｍｔｎｔ）処理の使用可否（有効・無効）を制御するためのフラグである「ｓｐｓ＿ｄｍｖｒ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」を含んでもよい。かかるフラグの値が「０」である時、かかるＳＰＳ１４１に対応するスライス内では、ＤＭＶＲ処理を使用しないことを意味する。一方、かかるフラグの値が「１」である時は、かかるＳＰＳ１４１に対応するスライス内で、ＤＭＶＲ処理を使用可能であることを意味する。スライス内の各ブロックでＤＭＶＲ処理を実際に使用するかどうかは、後述する処理にてブロック毎に決定される。
【００４９】
すなわち、「ｓｐｓ＿ｄｍｖｒ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」は、ＳＰＳ１４１に含まれるＤＭＶＲ処理のシーケンス単位での使用可否を示すフラグ（第３フラグ）である。
【００５０】
ＳＰＳ１４１は、後述するアフィン動き補償の使用可否（有効・無効）を制御するためのフラグである「ｓｐｓ＿ａｆｆｉｎｅ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」を含んでもよい。かかるフラグの値が「０」である時、かかるＳＰＳ１４１に対応するスライス内では、アフィン動き補償を使用しないことを意味する。一方、かかるフラグの値が「１」である時は、かかるＳＰＳ１４１に対応するスライス内で、アフィン動き補償を使用可能であることを意味する。スライス内の各ブロックでアフィン動き補償を実際に使用するかどうかは、後述する処理にてブロック毎に決定される。
【００５１】
すなわち、「ｓｐｓ＿ａｆｆｉｎｅ＿ｐｒｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」は、ＳＰＳ１４１に含まれるＰＲＯＦ処理のシーケンス単位での使用可否を示すフラグ（第５フラグ）である。
【００５２】
「ｓｐｓ＿ａｆｆｉｎｅ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」が「１」である時、ＳＰＳ１４１は、追加で「ｓｐｓ＿ａｆｆｉｎｅ＿ｔｙｐｅ＿ｆｌａｇ」というフラグを含んでもよい。かかるフラグの値が「０」である時、かかるＳＰＳ１４１に対応するスライス内では、後述するアフィン動き補償の際のパラメータ数を常に「４」とすることを意味する。一方、かかるフラグの値が「１」である時は、かかるＳＰＳ１４１に対応するスライス内で、アフィン動き補償を行う際にパラメータ数を「４」又は「６」のいずれからかブロック毎に選択可能であることを意味する。
【００５３】
「ｓｐｓ＿ａｆｆｉｎｅ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」の値が「１」である時、ＳＰＳ１４１は、追加で「ｓｐｓ＿ａｆｆｉｎｅ＿ｐｒｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」というフラグを含んでもよい。かかるフラグの値が「０」である時、かかるＳＰＳ１４１に対応するスライス内では、後述するＰＲＯＦ（Ｐｒｅｄｉｃｔｉｏｎ  Ｒｅｆｉｎｅｍｅｎｔ  ｗｉｔｈ  Ｏｐｔｉｃａｌ  Ｆｌｏｗ）処理を使用しないことを意味する。一方、かかるフラグの値が「１」である時は、かかるＳＰＳ１４１に対応するスライス内で、ＰＲＯＦ処理を使用可能であることを意味する。スライス内の各ブロックでＰＲＯＦ処理を実際に使用するかどうかは、後述する処理にてブロック毎に決定される。
【００５４】
「ｓｐｓ＿ｂｄｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」、「ｓｐｓ＿ｄｍｖｒ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」及び「ｓｐｓ＿ａｆｆｉｎｅ＿ｐｒｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」のうち少なくともいずれか１つのフラグの値が「１」である時、ＳＰＳ１４１は、追加で「ｓｐｓ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｓｌｉｃｅ＿ｐｒｅｓｅｎｔ＿ｆｌａｇ」というフラグを含んでもよい。かかるフラグが「１」である時、かかるＳＰＳ１４１に対応するスライスヘッダ１４３Ａ/１４３Ｂ内に、後述する「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」というフラグを含むことを意味する。かかるフラグの値が「０」である時は、かかるＳＰＳ１４１に対応するスライスヘッダ１４３Ａ/１４３Ｂ内に、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」が含まれないことを意味する。
【００５５】
すなわち、「ｓｐｓ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｓｌｉｃｅ＿ｐｒｅｓｅｎｔ＿ｆｌａｇ」は、スライスヘッダ１４３Ａ/１４３Ｂ内に、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」が含まれているか否かについて示すフラグ（第２フラグ）である。なお、かかるフラグが存在しなかった場合は、かかるフラグの値が「０」であると暗黙的にみなすことができる。
【００５６】
図５は、スライスヘッダ１４３Ａ/１４３Ｂに含まれる制御データの一例を示す図である。
【００５７】
スライスヘッダ１４３Ａ/１４３Ｂには、上述の通り、かかるスライスに対応するＰＰＳ１４２を指定するためのＰＰＳ  ｉｄ情報である「ｓｌｉｃｅ＿ｐｉｃ＿ｐａｒａｍｅｔｅｒ＿ｓｅｔ＿ｉｄ」を少なくとも含む。上述の通り、かかるＰＰＳ  ｉｄ情報で指定されたＰＰＳ内で参照されているＳＰＳ１４１が、かかるスライスヘッダ１４３Ａ/１４３Ｂに対応するＳＰＳ１４１となる。
【００５８】
かかるスライスヘッダ１４３Ａ/１４３Ｂに対応するＳＰＳ１４１内に「ｓｐｓ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｓｌｉｃｅ＿ｐｒｅｓｅｎｔ＿ｆｌａｇ」が含まれており、かつ、かかるフラグの値が「１」である時、かかるスライスヘッダ１４３Ａ/１４３Ｂに「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」が含まれていてもよい。かかるフラグの値が「１」である場合、後述のように、かかるスライスに含まれる各ブロックにおいて、ＢＤＯＦ処理、ＤＭＶＲ処理、ＰＲＯＦ処理を使用しないように制御されてもよい。かかるフラグの値が「０」である場合、かかるスライスに含まれる各ブロックにおいて、ＢＤＯＦ処理、ＤＭＶＲ処理、ＰＲＯＦ処理を使用することができるように制御されてもよい。
【００５９】
ずなわち、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」は、スライスヘッダ１４３Ａ/１４３Ｂに含まれるＤＭＶＲ処理、ＢＤＯＦ処理、ＰＲＯＦ処理の使用可否を一括して制御するフラグ（第１フラグ）である。
【００６０】
換言すると、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」は、スライスヘッダ１４３Ａ/１４３Ｂに含まれるＰＲＯＦ処理の使用可否を制御するフラグであり、スライスヘッダ１４３Ａ/１４３Ｂに含まれるＤＭＶＲ処理の使用可否を制御するフラグであり、スライスヘッダ１４３Ａ/１４３Ｂに含まれるＢＤＯＦ処理の使用可否を制御するフラグである。
【００６１】
以上で説明したフラグの値は、あくまでも一例である。フラグの値（「０」及び「１」）に与える意味を逆転させた場合、対応する処理もそれに応じて逆転させることで等価な処理を実現可能である。
【００６２】
また、以上のように、ＢＤＯＦ処理、ＤＭＶＲ処理、ＰＲＯＦ処理をスライス単位で使用しないように制御するフラグを設けることで、画像符号化装置１００側から、かかる機能を使用しないことを明示的に制御することができるため、かかる機能を使用しないことで画像符号化装置１００及び対応する画像復号装置２００の処理負荷や消費電力を削減することができる。
【００６３】
（インター予測部１１１）
以下、図６を参照して、本実施形態に係る画像符号化装置１００のインター予測部１１１について説明する。図６は、本実施形態に係る画像符号化装置１００のインター予測部１１１の機能ブロックの一例について示す図である。
【００６４】
図６に示すように、インター予測部１１１は、動きベクトル探索部１１１Ａと、動きベクトル符号化部１１１Ｂと、洗練化部１１１Ｃと、予測信号生成部１１１Ｄと、アフィン動きベクトル算出部１１１Ｅと、アフィン予測信号生成部１１１Ｆとを有する。
【００６５】
インター予測部１１１は、動きベクトルに基づいて予測ブロックに含まれる予測信号を生成するように構成されている予測部の一例である。
【００６６】
動きベクトル探索部１１１Ａは、対象フレームと参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する動きベクトルを探索するように構成されている。
【００６７】
また、上述の探索を複数の参照フレーム候補に対して行い、当該予測ブロックで予測に用いる参照フレーム及び動きベクトルを決定する。参照フレーム及び動きベクトルは、一つのブロックに対して最大二つずつ用いることができる。一つのブロックに対して参照フレーム及び動きベクトルを一組のみ用いる場合を片予測と呼び、参照フレーム及び動きベクトルを二組用いる場合を双予測と呼ぶ。以降、一組目をＬ０と呼び、二組目をＬ１と呼ぶ。
【００６８】
更に、動きベクトル探索部１１１Ａは、参照フレーム及び動きベクトルの符号化方法を決定するように構成されている。符号化方法には、参照フレーム及び動きベクトルの情報をそれぞれ伝送する通常の方法に加え、後述するマージモードやアフィン動き補償等がある。
【００６９】
なお、動きベクトルの探索方法、参照フレームの決定方法及び参照フレーム及び動きベクトルの符号化方法の決定方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
【００７０】
動きベクトル符号化部１１１Ｂは、動きベクトル探索部１１１Ａで決定した参照フレームと動きベクトルの情報を、同じく動きベクトル探索部１１１Ａで決定した符号化方法を用いて符号化するように構成されている。具体的な参照フレーム及び動きベクトル情報の符号化方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
【００７１】
当該ブロックの符号化方法がマージモードの場合、画像符号化装置１００側において、初めに、当該ブロックに対するマージリストが作成される。ここで、マージリストは、参照フレームと動きベクトルとの組み合わせが複数列挙されたリストである。
【００７２】
各組み合わせには、インデックスが振られており、画像符号化装置１００は、参照フレーム及び動きベクトルの情報を個別に符号化する代わりに、かかるインデックスのみを符号化し、画像復号装置２００に伝送する。画像符号化装置１００側と画像復号装置２００側とでマージリストの作成方法を共通化しておくことで、画像復号装置２００側では、かかるインデックスに係る情報のみから参照フレーム及び動きベクトルの情報を復号することができる。
【００７３】
なお、マージリストの作成方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
【００７４】
アフィン動き補償は、ブロック毎に少数のパラメータを伝送し、そのパラメータと予め定められたモデルとに基づいて、かかるブロックを分割したサブブロック毎の動きベクトルを導出する手法である。かかる動きベクトルを導出する手法の詳細については、後述する。
【００７５】
アフィン動き補償の場合、動きベクトル符号化部１１１Ｂは、後述するコントロールポイント動きベクトルの情報及び参照フレームの情報を符号化するように構成されている。コントロールポイント動きベクトルは、後述のように、ブロック毎に２つ又は３つの動きベクトル情報を伝送する。
【００７６】
また、かかるブロックが、双予測を行うブロックの場合は、Ｌ０及びＬ１について、それぞれ２つ又は３つずつコントロールポイント動きベクトルの情報を伝送する。具体的な符号化方法については、既知の手法を採用することが可能であるため、その詳細については省略する。
【００７７】
当該ブロックにて、アフィン動き補償を用いる場合は、図６に示すアフィン動きベクトル算出部１１１Ｅの処理に移り、そうでない場合は、洗練化部１１１Ｃの処理に移る。
【００７８】
洗練化部１１１Ｃは、動きベクトル符号化部１１１Ｂで符号化された動きベクトルを修正する洗練化処理（例えば、ＤＭＶＲ）を行うように構成されている。
【００７９】
具体的には、洗練化部１１１Ｃは、動きベクトル符号化部１１１Ｂで符号化された動きベクトルによって特定される参照位置を基準として探索範囲を設定し、探索範囲の中から所定コストが最も小さい修正参照位置を特定し、修正参照位置に基づいて動きベクトルを修正する洗練化処理を行うように構成されている。
【００８０】
図７は、洗練化部１１１Ｃの処理手順の一例を示すフローチャートである。
【００８１】
図７に示すように、ステップＳ７１において、洗練化部１１１Ｃは、洗練化処理を適用するための所定条件が満足されているかどうかについて判定する。かかる所定条件が全て満足されている場合に、本処理手順は、ステップＳ７２へ進む。一方、かかる所定条件のどれか一つでも満足されていない場合は、本処理手順は、ステップＳ７５へ進み、洗練化処理を終了する。
【００８２】
ここで、所定条件は、当該ブロックが双予測を行うブロックであるという条件を含む。
【００８３】
また、所定条件は、Ｌ０側の参照フレーム及びＬ１側の参照フレームのいずれか一方が当該フレームに対して時間的に過去のフレームで、他方の参照フレームが当該フレームに対して時間的に未来のフレームであり、当該フレームからの時間的な距離（例えば、ＰＯＣ（Ｐｉｃｔｕｒｅ  Ｏｒｄｅｒ  Ｃｏｕｎｔ）の差の絶対値）がＬ０側とＬ１側とで等しいことという条件を含んでもよい。
【００８４】
また、所定条件は、動きベクトルがマージモードで符号化されているという条件を含んでもよい。
【００８５】
また、所定条件は、当該ブロックが属するシーケンスのＳＰＳ１４１において、「ｓｐｓ＿ｄｍｖｒ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」の値が当該シーケンスにてＤＭＶＲを使用可能であるということを示していること（例えば、当該フラグの値が「１」であること）という条件を含んでもよい。
【００８６】
さらに、所定条件は、当該ブロックが属するスライスのスライスヘッダ１４３Ａ/１４３Ｂにおいて、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」の値が当該スライスにおいてＤＭＶＲを使用可能であるということを示していること（例えば、当該フラグの値が「０」であること）という条件を含んでもよい。
【００８７】
ステップＳ７２において、洗練化部１１１Ｃは、動きベクトル符号化部１１１Ｂで符号化された動きベクトル及び参照フレームの情報に基づいて、探索用画像を生成する。
【００８８】
ここで、動きベクトルが非整数画素位置を指していた場合は、洗練化部１１１Ｃは、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。この時、洗練化部１１１Ｃは、後述する予測信号生成部１１１Ｄで用いる内挿フィルタより、少ないタップ数の内挿フィルタを用いることで、演算量を削減することができる。例えば、洗練化部１１１Ｃは、バイリニア補間によって非整数画素位置の画素値を内挿することができる。
【００８９】
ステップＳ７３において、洗練化部１１１Ｃは、ステップＳ７２で生成した探索用画像を用いて、整数画素精度での探索を行う。ここで、整数画素精度とは、動きベクトル符号化部１１１Ｂで符号化された動きベクトルを基準として、整数画素間隔となる点のみを探索することを意味する。
洗練化部１１１Ｃは、ステップＳ７２の探索によって、整数画素間隔位置での修正後の動きベクトルを決定する。探索の方法としては、既知の手法を用いることができる。
【００９０】
例えば、洗練化部１１１Ｃは、Ｌ０側及びＬ１側の差分動きベクトルが符号のみを反転した組み合わせとなる点のみを探索するという方法で探索することもできる。探索に際しては、洗練化部１１１Ｃは、例えば、各探索点において探索コストを算出し、探索コストが最も小さい探索点に動きベクトルを修正するように決定してもよい。
【００９１】
ここで、洗練化部１１１Ｃは、動きベクトル符号化部１１１Ｂで符号化された動きベクトルに対応する探索点での探索コストのみを小さくするように算出してもよい。例えば、当該探索点に関しては、洗練化部１１１Ｃは、他の探索点と同様の方法で算出した探索コストを、３/４に小さくした値を当該探索点の最終的な探索コストと設定してもよい。
【００９２】
ステップＳ７３における探索の結果、探索前の動きベクトルと同じ値になる可能性もある。
【００９３】
ステップＳ７４において、洗練化部１１１Ｃは、ステップＳ７３で決定した整数画素精度での修正後の動きベクトルを初期値として、非整数画素精度での動きベクトル探索を行う。動きベクトルの探索方法としては、既知の手法を用いることができる。
【００９４】
また、洗練化部１１１Ｃは、実際に探索を行わずに、ステップＳ７３の結果を入力として、パラボラフィッティング等のパラメトリックなモデルを用いて非整数画素精度でのベクトルを決定することもできる。
【００９５】
洗練化部１１１Ｃは、ステップＳ７４において、非整数画素精度での修正後の動きベクトルを決定した後、ステップＳ４５へ移り洗練化処理を終了する。ここでは、便宜上、非整数画素精度の修正後動きベクトルという表現を用いたが、ステップＳ７４の探索結果により、結果的に、ステップＳ７３で求めた整数画素精度の動きベクトルと同じ値になる可能性もある。
【００９６】
洗練化部１１１Ｃは、予め定めた閾値より大きなブロックを、小さなサブブロックに分割してサブブロックごとに洗練化処理を実行してもよい。例えば、洗練化部１１１Ｃは、洗練化処理の実行単位を１６×１６画素と設定しておき、ブロックの水平方向又は垂直方向のサイズが１６画素より大きい場合、それぞれ１６画素以下となるように分割することができる。この時、洗練化処理の基準となる動きベクトルとしては、同一ブロック内の全てのサブブロックについて、動きベクトル符号化部１１１Ｂで符号化された当該ブロックの動きベクトルを用いる。
【００９７】
サブブロックごとに処理を行う場合、洗練化部１１１Ｃは、図７の全ての手順をサブブロックごとに実行してもよい。また、洗練化部１１１Ｃは、図７の処理の一部のみをサブブロックごとに処理してもよい。具体的には、洗練化部１１１Ｃは、図７のステップＳ７１及びＳ７２については、ブロック毎に処理を行い、ステップＳ７３及びＳ７４について、サブブロックごとに処理してもよい。
【００９８】
予測信号生成部１１１Ｄは、洗練化部１１１Ｃから出力される修正された動きベクトルに基づいて予測信号を生成するように構成されている。
【００９９】
ここで、後述するように、予測信号生成部１１１Ｄは、上述の洗練化処理の過程で算出される情報（例えば、探索コスト）に基づいて、ブロック毎にＢＤＯＦ処理を行うか否かについて判定するように構成されている。
【０１００】
具体的には、予測信号生成部１１１Ｄは、動きベクトルが修正されない場合には、動きベクトル符号化部１１１Ｂで符号化された動きベクトルに基づいて予測信号を生成するように構成されている。一方で、予測信号生成部１１１Ｄは、動きベクトルが修正される場合には、洗練化部１１１Ｃで修正された動きベクトルに基づいて予測信号を生成するように構成されている。
【０１０１】
図８は、予測信号生成部１１１Ｄの処理手順の一例を示すフローチャートである。ここで、洗練化部１１１Ｃにてサブブロック単位で洗練化処理が行われた場合、予測信号生成部１１１Ｄの処理もサブブロック単位で実行される。その場合、以下の説明のブロックという単語は、適宜、サブブロックに読み替えることができる。
【０１０２】
図８に示すように、ステップＳ８１において、予測信号生成部１１１Ｄは、予測信号を生成する。
【０１０３】
具体的には、予測信号生成部１１１Ｄは、動きベクトル符号化部１１１Ｂで符号化された動きベクトル或いは洗練化部１１１Ｃで符号化された動きベクトルを入力として、かかる動きベクトルが指す位置が非整数画素位置の場合は、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。ここで、具体的なフィルタについては、非特許文献１で開示されている最大８タップの水平垂直可分型のフィルタを適用することができる。
【０１０４】
予測信号生成部１１１Ｄは、当該ブロックが双予測を行うブロックである場合は、一つ目（以後、Ｌ０と呼ぶ）の参照フレーム及び動きベクトルによる予測信号及び二つ目（以後、Ｌ１と呼ぶ）の参照フレーム及び動きベクトルによる予測信号の両方を生成する。
【０１０５】
ステップＳ８２において、予測信号生成部１１１Ｄは、ブロック毎に、後述するＢＤＯＦ処理の適用条件が満足されているかどうかについて確認する。
【０１０６】
かかる適用条件としては、少なくとも当該ブロックが双予測を行うブロックであることという条件を含む。
【０１０７】
また、適用条件は、洗練化部１１１ＣのステップＳ７３における整数画素位置探索において、上述の探索コストが最小となる探索点の探索コストが、予め定めた閾値よりも大きい又は予め定めた閾値以上であることという条件を含んでもよい。
【０１０８】
また、所定条件は、当該ブロックが属するシーケンスのＳＰＳ１４１において、「ｓｐｓ＿ｂｄｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」の値が当該シーケンスにてＢＤＯＦを使用可能であるということを示していること（例えば、当該フラグの値が「１」であること）という条件を含んでもよい。
【０１０９】
また、適用条件は、当該ブロックが属するスライスのスライスヘッダ１４３Ａ/１４３Ｂにおいて、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」の値が当該スライスにおいてＢＤＯＦ処理を使用可能であるということを示していること（例えば、当該フラグの値が「０」であること）という条件を含んでもよい。
【０１１０】
また、適用条件は、Ｌ０側の参照フレーム及びＬ１側の参照フレームのいずれ一方が当該フレームに対して時間的に過去のフレームで、他方の参照フレームが当該フレームに対して時間的に未来のフレームであり、当該フレームからの時間的な距離（例えば、ＰＯＣの差の絶対値）のＬ０側とＬ１側との比率が、予め定めた比率になっていることという条件を含んでもよい。
【０１１１】
ここで、比率の決定方法は、例えば、後述のＢＤＯＦ処理におけるＬ０側とＬ１側との勾配や輝度値を用いて演算する際の重み係数の逆数に比例するように決定してもよい。
【０１１２】
例えば、Ｌ０側の重み係数を「２/３」とし、Ｌ１側の重み係数を「１/３」とする場合、参照フレームの距離の比率として、Ｌ０と当該フレーム間の距離を「１」とすると、Ｌ１と当該フレーム間の距離が「２」となる場合のみ、ＢＤＯＦ処理を適用するようにしてもよい。
【０１１３】
同様に、例えば、Ｌ０側の重み係数を「１/２」とし、Ｌ１側の重み係数を「１/２」とする場合、参照フレームの距離の比率として、Ｌ０と当該フレーム間の距離を「１」とすると、Ｌ１と当該フレーム間の距離が「１」となる場合、すなわち、当該フレームとＬ０及びＬ１との間の距離が等しい場合のみ。ＢＤＯＦ処理を適用するようにしてもよい。
【０１１４】
すなわち、予測信号生成部１１１Ｄは、かかる適用条件として、２つの参照フレーム（Ｌ０/Ｌ１）の画素値同士又は２つの参照フレーム（Ｌ０/Ｌ１）の画素値から算出した値同士を用いて演算する場合の重み係数の逆数に比例するように、２つの参照フレーム（Ｌ０/Ｌ１）と当該フレームとの時間的な距離に関する条件を備えてもよい。
【０１１５】
また、予測信号生成部１１１Ｄは、かかる適用条件として、かかる重み係数が等しい場合、かかる時間的な距離に関する条件として、２つの参照フレーム（Ｌ０/Ｌ１）のそれぞれと当該フレームとの時間的な距離が等しいことを備えてもよい。
【０１１６】
なお、ここでは、一例として重み係数が「１/２」の場合を説明したが、Ｌ０側及びＬ１側に同じ重み（例えば、「１」でもよい）が用いられている場合に、かかるフレームとＬ０及びＬ１との間の距離が等しい場合のみ、ＢＤＯＦ処理を適用するようにしてもよい。
【０１１７】
かかる適用条件を満足すると判定された場合には、本処理手順は、ステップＳ８３に移り、かかる適用条件が満足されていない場合、本処理手順は、ステップＳ８４に移る。
【０１１８】
ステップＳ８３において、予測信号生成部１１１Ｄは、ＢＤＯＦ処理を実行して予測信号を生成する。ＢＤＯＦ処理の処理自体は、既知の手法を用いることができるため、概要のみを説明し、詳細についての説明は省略する。
【０１１９】
第１に、予測信号生成部１１１Ｄは、当該ブロックの参照ブロック内の各画素について、垂直方向及び水平方向の輝度値の勾配を算出する。具体的な算出方法は、例えば、非特許文献１に記載の方法で算出できる。ここで、Ｌ０の水平方向の勾配を「ｇｒａｄｉｅｎｔＨＬ０」と呼び、Ｌ０の垂直方向の勾配を「ｇｒａｄｉｅｎｔＶＬ０」と呼び、Ｌ１の水平方向の勾配を「ｇｒａｄｉｅｎｔＨＬ１」と呼び、Ｌ１の垂直方向の勾配を「ｇｒａｄｉｅｎｔＶＬ１」と呼ぶこととする。
【０１２０】
第２に、予測信号生成部１１１Ｄは、当該ブロックの補正ＭＶ（ｖｘ、ｖｙ）を算出する。具体的な算出方法は、例えば、非特許文献１に記載の方法で算出できる。ここで、上述の勾配の和（ｔｅｍｐＨ、ｔｅｍｐＶ）及びＬ０及びＬ１の参照ブロック間の輝度値差分（ｄｉｆｆ）について、以下のように算出し、非特許文献１に記載のように、上述の（ｖｘ、ｖｙ）の算出に用いてもよい。
【０１２１】
ｄｉｆｆ＝ｐｒｅｄＳａｍｐｌｅＬ０×ｗｅｉｇｈｔＬ０−ｐｒｅｄＳａｍｐｌｅＬ１×ｗｅｉｇｈｔＬ１
ｔｅｍｐＨ＝ｇｒａｄｉｅｎｔＨＬ０×ｗｅｉｇｈｔＬ０＋ｇｒａｄｉｅｎｔＨＬ１×ｗｅｉｇｈｔＬ１
ｔｅｍｐＶ＝ｇｒａｄｉｅｎｔＶＬ０×ｗｅｉｇｈｔＬ０＋ｇｒａｄｉｅｎｔＶＬ１×ｗｅｉｇｈｔＬ１
ここで、「ｐｒｅｄＳａｍｐｌｅＬ０」及び「ｐｒｅｄＳａｍｐｌｅＬ１」は、それぞれ、Ｌ０及びＬ１の参照ブロックの輝度値であり、「ｗｅｉｇｈｔＬ０」及び「ｗｅｉｇｈｔＬ１」は、それぞれ、上述の勾配及び輝度値差分算出時の重み係数である。
【０１２２】
ここでは、「ｄｉｆｆ」、「ｔｅｍｐＨ」、「ｔｅｍｐＶ」の３つのパラメータを例に共通の重みを用いる例を説明したが、Ｌ０側の情報及びＬ１側の情報を加減乗除する際であれば、同様の重みを設定することができる。
【０１２３】
また、かかる重みの逆数に比例して、上述の通り、ＢＤＯＦ処理の参照フレームとの距離に関する適用条件を設定してもよい。言い換えると、当該フレームとＬ０及びＬ１の各参照フレームとの距離の比の逆数に比例するように、上述のように、加減乗除の際の重みを設定してもよい。
【０１２４】
このように設定することで、Ｌ０とＬ１との間について、勾配や輝度値等が線形に変化すると仮定した場合に、当該フレームの時間的な位置に適切な重み係数を設定することができる。また、重み係数に対応したＢＤＯＦ処理の適用条件を設定することで、適切な重み係数を常に用いることを保証することができる。
【０１２５】
第３に、予測信号生成部１１１Ｄは、上記で求めた勾配及び補正ＭＶを用いて、各画素についての輝度値補正量「ｂｄｏｆＯｆｆｓｅｔ」について、例えば、以下のように算出する。
【０１２６】
ｂｄｏｆＯｆｆｓｅｔ＝ｖｘ×（ｗｅｉｇｈｔＬ０×ｇｒａｄｉｅｎｔＨＬ０―ｗｅｉｇｈｔＬ１×ｇｒａｄｉｅｎｔＨＬ１）＋ｖｙ×（ｗｅｉｇｈｔＬ０×ｇｒａｄｉｅｎｔＶＬ０―ｗｅｉｇｈｔＬ１×ｇｒａｄｉｅｎｔＶＬ１）
第４に、予測信号生成部１１１Ｄは、例えば、非特許文献１に記載のように、「ｂｄｏｆＯｆｆｓｅｔ」を用いて、各画素の補正後の輝度値の予測値を算出することができる。
【０１２７】
すなわち、予測信号生成部１１１Ｄは、ＢＤＯＦ処理において、２つの参照フレーム（Ｌ０/Ｌ１）の画素値同士又は２つの参照フレーム（Ｌ０/Ｌ１）の画素値から算出した値同士を用いて演算する場合の重み係数に基づいて、上述の適用条件に２つの参照フレームと当該フレームとの時間的な距離に関する条件を備えるように構成されている。
【０１２８】
ＢＤＯＦ処理が実施された後、本処理手順は、ステップＳ８５に移り処理を終了する。
【０１２９】
ステップＳ８４では、当該ブロックが、双予測を行うブロックであった場合、予測信号生成部１１１Ｄは、ステップＳ８１で生成したＬ０及びＬ１の予測信号を合成して最終的な予測信号を生成する。具体的な合成方法については、既知の手法を用いることができるため、詳細は省略する。当該ブロックが、片予測を行うブロックであった場合は、予測信号生成部１１１Ｄは、ステップＳ８１で生成した予測信号をそのまま最終的な予測信号とする。
【０１３０】
予測信号生成部１１１Ｄは、以上の手順で最終的な予測信号を生成した後に、ステップＳ８５へ移り処理を終了する。
【０１３１】
アフィン動きベクトル算出部１１１Ｅは、動きベクトル探索部１１１Ａにて当該ブロックでアフィン動き補償を行うと決定した場合に、動きベクトル符号化部１１１Ｂで符号化したコントロールポイント動きベクトルに基づいて当該ブロックを分割したサブブロック毎の動きベクトルを算出するように構成されている。
【０１３２】
図９は、アフィン動きベクトル算出部１１１Ｅの処理手順の一例を示すフローチャートである。
【０１３３】
図９に示すように、ステップＳ９１において、アフィン動きベクトル算出部１１１Ｅは、「ｄＨｏｒＸ」、「ｄＨｏｒＹ」、「ｄＶｅｒＸ」及び「ｄＶｅｒＹ」の計４つのパラメータの値を計算する。
【０１３４】
ここで、アフィン動きベクトル算出部１１１Ｅは、パラメータの計算には、動きベクトル符号化部１１１Ｂで符号化したコントロールポイント動きベクトルの値を用いる。
【０１３５】
コントロールポイント動きベクトルは、上述のように、ブロック毎に２つ又は３つ存在する。図１０に、コントロールポイント動きベクトルが３つ（「ＣＰＭＶ０」、「ＣＰＭＶ１」、「ＣＰＭＶ２」）である場合の例を示す。
【０１３６】
ここで、図１０において、実線が、当該ブロックの境界を示し、点線が、当該ブロックを分割したサブブロックの境界を示し、実線の矢印が、コントロールポイント動きベクトルを示し、点線の矢印が、各サブブロックの動きベクトルを示している。
【０１３７】
コントロールポイント動きベクトルが、２つである場合は、図１０のＣＰＭＶ０とＣＰＭＶ１のみが存在する状態である。コントロールポイント動きベクトルの値から、「ｄＨｏｒＸ」、「ｄＨｏｒＹ」、「ｄＶｅｒＸ」及び「ｄＶｅｒＹ」の計４つのパラメータの値を計算する具体的な方法は、既知の手法を用いることができるため、詳細についての説明は省略する。
【０１３８】
ステップＳ９２において、アフィン動きベクトル算出部１１１Ｅは、「ｆａｌｌｂａｃｋＭｏｄｅ」を当該ブロックに適用するかどうかを決定する。
【０１３９】
ここで、「ｆａｌｌｂａｃｋＭｏｄｅ」は、当該ブロックを分割した全てのサブブロックにおいて、同一の動きベクトルを用いるモードである。「ｆａｌｌｂａｃｋＭｏｄｅ」の判定方法は、既知の手法を用いることができるため、詳細についての説明は省略する。「ｆａｌｌｂａｃｋＭｏｄｅ」を当該ブロックに適用する場合は、本処理手順は、ステップＳ９３に進み、「ｆａｌｌｂａｃｋＭｏｄｅ」を当該ブロックに適用しない場合は、本処理手順は、ステップＳ９４へ進む。
【０１４０】
ステップＳ９３では、アフィン動きベクトル算出部１１１Ｅは、「ｆａｌｌｂａｃｋＭｏｄｅ」を用いる場合の各サブブロックの動きベクトルを算出する。
【０１４１】
上述の通り、「ｆａｌｌｂａｃｋＭｏｄｅ」の場合は、同一ブロック内の全てのサブブロックの動きベクトルの値は、同じになる。具体的な算出方法は、既知の手法を用いることができるため、詳細についての説明は省略する。
【０１４２】
例えば、非特許文献１では、上述の「ｄＨｏｒＸ」、「ｄＨｏｒＹ」、「ｄＶｅｒＸ」及び「ｄＶｅｒＹ」の値と、当該ブロックの左上の座標を原点としたときのブロック中央の座標値（当該ブロックの高さと幅をそれぞれ「１/２」にした値）とを予め定めたモデルに代入し、動きベクトルを算出している。本処理手順は、ステップＳ９３が完了した後、ステップＳ９７へ移り処理を終了する。
【０１４３】
ステップＳ９４において、アフィン動きベクトル算出部１１１Ｅは、「ｆａｌｌｂａｃｋＭｏｄｅ」を適用しない場合の各サブブロックの動きベクトルを算出する。具体的な算出方法は、既知の手法を用いることができるため、詳細についての説明は省略する。
【０１４４】
例えば、非特許文献１では、「ｄＨｏｒＸ」、「ｄＨｏｒＹ」、「ｄＶｅｒＸ」及び「ｄＶｅｒＹ」の値と、当該ブロックの左上の座標を原点としたときの各サブブロック中央の座標値とを予め定めたモデルに代入し、動きベクトルを算出している。本処理手順は、ステップＳ９４が終了した後、ステップＳ９５へ移る。
【０１４５】
ステップＳ９５において、アフィン動きベクトル算出部１１１Ｅは、当該ブロックでＰＲＯＦ処理を適用する条件が満足されているか否かについて判定する。
【０１４６】
適用条件は、「ｓｐｓ＿ａｆｆｉｎｅ＿ｐｒｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」の値が「１」であることという条件を含んでもよい。
【０１４７】
また、適用条件は、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」の値が当該スライスにおいてＰＲＯＦ処理を使用可能であるということを示していること（例えば、当該フラグの値が「０」であること）という条件を含んでもよい。
【０１４８】
さらに、適用条件は、当該ブロックに「ｆａｌｌｂａｃｋＭｏｄｅ」が適用されないことという条件を含んでもよい。
【０１４９】
アフィン動きベクトル算出部１１１Ｅは、全ての適用条件が満足されていると判定するとき、当該ブロックにＰＲＯＦ処理を適用すると決定し、本処理手順は、ステップＳ９６へ進む。それ以外の場合は、当該ブロックにＰＲＯＦ処理を適用しないと決定し、本処理手順は、ステップＳ９７へ移り処理を終了する。
【０１５０】
以上では、アフィン動きベクトル算出部１１１Ｅが、全ての適用条件が満足されているか否かについて判定する例を示したが、アフィン動きベクトル算出部１１１Ｅは、論理的に等価な別の方法で判定してもよい。
【０１５１】
具体的には、上述の適用条件を全て反転させ、ＰＲＯＦ処理を適用しない条件として定義し、アフィン動きベクトル算出部１１１Ｅは、どれか１つでも適用しない条件に当てはまる場合は、当該ブロックにＰＲＯＦ処理を適用しないと決定して、ステップＳ９７へ進み、いずれにも当てはまらない場合は、当該ブロックにＰＲＯＦ処理を適用すると決定して、ステップＳ９６へ進んでもよい。
【０１５２】
上述の例に対応するＰＲＯＦ処理を適用しない条件は、以下のように定義できる。
【０１５３】
かかる適用しない条件は、「ｓｐｓ＿ａｆｆｉｎｅ＿ｐｒｏｆ＿ｅｎａｂｌｅｄ＿ｆｌａｇ」の値が「０」であることという条件を含んでもよい。
【０１５４】
また、かかる適用しない条件は、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」の値が当該スライスにおいてＰＲＯＦ処理を使用禁止であるということを示していること（例えば、当該フラグの値が「１」であること）という条件を含んでもよい。
【０１５５】
さらに、かかる適用しない条件は、当該ブロックに「ｆａｌｌｂａｃｋＭｏｄｅ」が適用されることという条件を含んでもよい。
【０１５６】
ステップＳ９６において、アフィン動きベクトル算出部１１１Ｅは、ＰＲＯＦ処理で用いる「ｄｉｆｆＭＶ」の値を算出する。「ｄｉｆｆＭＶ」の値は、例えば、各サブブロックの左上の座標を原点としたときの各画素位置について算出される。なお、当該ブロック内の各サブブロックのサイズが同じ場合（例えば、４×４画素）は、１つのサブブロック分の各画素位置についての「ｄｉｆｆＭＶ」を算出すれば、他のサブブロックでは、その値を流用することができる。
【０１５７】
「ｄｉｆｆＭＶ」については、例えば、以下のように算出できる。
【０１５８】
ｄｉｆｆＭＶ［ｘ］[ｙ]［０］＝ｘ×（ｄＨｏｒＸ＜＜２）＋ｙ×（ｄＶｅｒＸ＜＜２）−ｐｏｓＯｆｆｓｅｔＸ
ｄｉｆｆＭＶ［ｘ］[ｙ]［１］＝ｘ×（ｄＨｏｒＹ＜＜２）＋ｙ×（ｄＶｅｒＹ＜＜２）−ｐｏｓＯｆｆｓｅｔＹ
ここで、ｘ、ｙは、各サブブロックの左上の座標を原点としたときの各画素位置（ｘ，ｙ）を意味し、［０］は、「ｄｉｆｆＭＶ」のｘ方向成分を意味し、［１］は、「ｄｉｆｆＭＶ」のｙ方向成分を意味している。
【０１５９】
なお、以下の関係が成立する。
【０１６０】
ｐｏｓＯｆｆｓｅｔＸ＝６×ｄＨｏｒＸ＋６×ｄＶｅｒＸ
ｐｏｓＯｆｆｓｅｔＹ＝６×ｄＨｏｒＹ＋６×ｄＶｅｒＹ
この後、アフィン動きベクトル算出部１１１Ｅは、非特許文献１に記載のように、右シフト及びクリッピング処理を行う。
【０１６１】
「ｄｉｆｆＭＶ」が算出された後、本処理手順は、ステップＳ９７へ移り処理を終了する。
【０１６２】
以上の説明は、当該ブロックのうち１つの参照フレームについての処理である。例えば、参照フレームを２つ持つ双予測の場合は、Ｌ０及びＬ１について、上述のステップＳ９１〜Ｓ９７の処理がそれぞれ実行される。よって、ＰＲＯＦ処理の適用有無の判定結果や「ｄｉｆｆＭＶ」の算出結果は、Ｌ０及びＬ１について、それぞれ異なる可能性がある。
【０１６３】
図１１は、アフィン予測信号生成部１１１Ｆの処理の一例を示すフローチャートである。
【０１６４】
アフィン予測信号生成部１１１Ｆは、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」が、スライスヘッダに対応するスライス内において、ＰＲＯＦ処理が使用可であることを示す場合（フラグの値が「０」である場合）にＰＲＯＦ処理を行い、ＰＲＯＦ処理が使用不可であることを示す場合（フラグの値が「０」である場合）にＰＲＯＦ処理を行わずに予測信号を生成するように構成されている。
【０１６５】
なお、アフィン予測信号生成部１１１Ｆは、スライスヘッダに、「ｓｌｉｃｅ＿ｄｉｓａｂｌｅ＿ｂｄｏｆ＿ｄｍｖｒ＿ｐｒｏｆ＿ｆｌａｇ」が含まれていない場合、かかるフラグが使用可を示す（フラグの値が「０」である）と暗黙的に解釈して処理を行うように構成されていてもよい。
【０１６６】
ステップＳ１１１において、アフィン予測信号生成部１１１Ｆは、予測信号を生成する。
【０１６７】
具体的には、アフィン予測信号生成部１１１Ｆは、アフィン動きベクトル算出部１１１Ｅで算出されたサブブロック毎の動きベクトルを入力として、かかる動きベクトルが指す位置が非整数画素位置の場合は、参照フレームの画素値にフィルタを適用して非整数画素位置の画素を内挿する。ここで、具体的なフィルタについては、非特許文献１で開示されている最大６タップの水平垂直可分型のフィルタを適用することができる。
【０１６８】
当該ブロックが双予測を行うブロックである場合は、アフィン予測信号生成部１１１Ｆは、Ｌ０及びＬ１の予測信号の両方を生成する。
【０１６９】
ステップＳ１１２において、アフィン予測信号生成部１１１Ｆは、当該ブロックの当該予測方向（Ｌ０又はＬ１）において、ＰＲＯＦ処理を適用するか否かについて判定する。かかる判定には、上述のステップＳ９５での判定結果がそのまま用いられる。
【０１７０】
当該ブロックの当該予測方向にＰＲＯＦ処理を適用すると判定された場合は、本処理手順は、ステップＳ１１３へ進む。一方、当該ブロックの当該予測方向にＰＲＯＦ処理を適用しないと判定された場合は、本処理手順は、ステップＳ１１４へ進む。
【０１７１】
ステップＳ１１３において、アフィン予測信号生成部１１１Ｆは、ＰＲＯＦ処理を実行する。ＰＲＯＦ処理の具体的な処理は、既知の手法を用いることができるため、詳細は省略する。アフィン予測信号生成部１１１Ｆは、ＰＲＯＦ処理により予測信号の補正を行う。
【０１７２】
ステップＳ１１４において、アフィン予測信号生成部１１１Ｆは、当該ブロックが双予測を行うブロックであった場合、ステップＳ１１１で生成したＬ０とＬ１の予測信号、又は、かかる予測信号をステップＳ１１３で補正した予測信号を合成して、最終的な予測信号を生成する。具体的な合成方法については、既知の手法を用いることができるため、詳細は省略する。アフィン予測信号生成部１１１Ｆは、当該ブロックが片予測を行うブロックであった場合は、ステップＳ１１１で生成した予測信号、又は、かかる予測信号をステップＳ１１３で補正した予測信号を、そのまま最終的な予測信号とする。
【０１７３】
最終的な予測信号の生成が完了した後、本処理手順は、ステップＳ１１５へ移り処理を終了する。
【０１７４】
以上の例では、便宜上、予測信号生成部１１１Ｄとアフィン予測信号生成部１１１Ｆとを異なる処理ブロックとして説明したが、これらの一部の処理は、共通化可能であり、単一の処理ブロックとすることもできる。
【０１７５】
例えば、ステップＳ８１及びＳ１１１、並びに、ステップＳ８４及びステップＳ１１４は、同一の処理とみなすことができる。
【０１７６】
この場合、図８のステップＳ８２でＮｏと判定された後に、図１０のステップＳ１１２、Ｓ１１３及びＳ１１４を順に実行するようにすれば、図８及び図１０のフローチャートを統合して単一の処理ブロックとみなすことができる。この時、ＢＤＯＦ処理及びＰＲＯＦ処理は、ブロック単位で排他的に適用されることとなる。
（インループフィルタ処理部１５０）
以下において、本実施形態に係るインループフィルタ処理部１５０について説明する。図１２は、本実施形態に係るインループフィルタ処理部１５０を示す図である。
【０１７７】
図１２に示すように、インループフィルタ処理部１５０は、ブロック境界検出部１５１と、境界強度判定部１５３と、フィルタ決定部１５４と、フィルタ処理部１５５とを有する。
【０１７８】
ここで、末尾に「Ａ」が付されている構成は、垂直方向のブロック境界に対するデブロッキングフィルタ処理に関する構成であり、末尾に「Ｂ」が付されている構成は、水平方向のブロック境界に対するデブロッキングフィルタ処理に関する構成である。
【０１７９】
以下、垂直方向のブロック境界に対するデブロッキングフィルタ処理が行われた後に、水平方向のブロック境界に対するデブロッキングフィルタ処理が行われるケースについて例示する。
【０１８０】
デブロッキングフィルタ処理は、上述したように、符号化ブロックに対して適用されてもよく、予測ブロックに対して適用されてもよく、変換ブロックに対して適用されてもよい。また、デブロッキングフィルタ処理は、上記の各ブロックを分割したサブブロックに適用されてもよい。すなわち、対象ブロック及び隣接ブロックは、符号化ブロックであってもよく、予測ブロックであってもよく、変換ブロックであってもよく、これらを分割したサブブロックでもよい。
【０１８１】
サブブロックの定義には、洗練化部１１１Ｃ及び予測信号生成部１１１Ｄの処理単位として説明したサブブロックが含まれる。また、サブブロックの定義には、アフィン動きベクトル算出部１１１Ｅ及びアフィン予測信号生成部１１１Ｅの処理単位として説明したサブブロックが含まれる。サブブロックにデブロッキングフィルタを適用する場合は、適宜、以下の説明のブロックをサブブロックに読み替えることができる。
【０１８２】
垂直方向のブロック境界に対するデブロッキングフィルタ処理及び水平方向のブロック境界に対するデブロッキングフィルタ処理は、同様の処理であるため、以下においては、垂直方向のブロック境界に対するデブロッキングフィルタ処理について説明する。
【０１８３】
ブロック境界検出部１５１Ａは、ブロックサイズを示す制御データに基づいて、ブロックの境界を検出するように構成されている。ここで、ブロックは、符号化ブロック（ＣＵ）、予測ブロック（ＰＵ）、変換ブロック（ＴＵ）である。具体的な検出方法は、既知の手法が適用可能なため、詳細の説明は省略する。
【０１８４】
境界強度判定部１５３Ａは、対象ブロックと隣接ブロックとのブロック境界の境界強度を判定するように構成されている。
【０１８５】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックがイントラ予測ブロックであるか否かについて示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０１８６】
例えば、図１３に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの少なくともいずれか１つのブロックがイントラ予測ブロックである場合（すなわち、ブロック境界の両側のブロックの少なくともいずれかがイントラ予測ブロックである場合）に、ブロック境界の境界強度が「２」であると判定ように構成されていてもよい。
【０１８７】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックに非零（ゼロ）の直交変換係数が含まれるか否か及びブロック境界が変換ブロックの境界であるか否かについて示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０１８８】
例えば、図１３に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの少なくともいずれか１つのブロックが非零の直交変換係数を含み、かつ、ブロック境界が変換ブロックの境界である場合（すなわち、ブロック境界の両側のブロックの少なくともいずれかに非零の変換係数が存在し、ＴＵの境界である場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０１８９】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上であるか否かについて示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０１９０】
例えば、図１３に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合（すなわち、ブロック境界の両側のブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０１９１】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なるか否かについて示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０１９２】
例えば、図１３に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なる場合（すなわち、ブロック境界の両側のブロックで参照画像が異なる場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０１９３】
境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの数が異なるか否かについて示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０１９４】
例えば、図１３に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの数が異なる場合（すなわち、ブロック境界の両側のブロックで動きベクトルの数が異なる場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０１９５】
例えば、図１３に示すように、境界強度判定部１５３Ａは、上述した条件がいずれも満たされない場合に、ブロック境界の境界強度が「０」であると判定するように構成されていてもよい。
【０１９６】
なお、境界強度の値が大きいほど、ブロック境界で生じるブロック歪みが大きい可能性が高い。
【０１９７】
上述の境界強度判定方法は、輝度信号及び色差信号に対して、共通の方法で判定してもよいし、一部異なる条件を用いて判定してもよい。
【０１９８】
フィルタ決定部１５４Ａは、ブロック境界に適用するフィルタ処理（例えば、デブロッキングフィルタ処理）の種類を決定するように構成されている。
【０１９９】
例えば、フィルタ決定部１５４Ａは、ブロック境界の境界強度や、対象ブロック及び隣接ブロックに含まれる量子化パラメータ等に基づいて、ブロック境界に対して、フィルタ処理を適用するか否か、弱フィルタ処理及び強フィルタ処理のいずれのフィルタ処理を適用するかについて決定するように構成されていてもよい。
【０２００】
フィルタ決定部１５４Ａは、ブロック境界の境界強度が「０」である場合に、フィルタ処理を適用しないと決定するように構成されていてもよい。
【０２０１】
フィルタ処理部１５５Ａは、フィルタ決定部１５４Ａの決定に基づいて、デブロッキング前画像に対する処理を行うように構成されている。デブロッキング前画像に対する処理は、フィルタ処理無し、弱フィルタ処理、強フィルタ処理等である。
（画像復号装置２００）
以下、図１４を参照して、本実施形態に係る画像復号装置２００について説明する。図１４は、本実施形態に係る画像復号装置２００の機能ブロックの一例について示す図である。
【０２０２】
図１４に示すように、画像復号装置２００は、復号部２１０と、逆変換・逆量子化部２２０と、加算器２３０と、インター予測部２４１と、イントラ予測部２４２と、インループフィルタ処理部２５０と、フレームバッファ２６０とを有する。
【０２０３】
復号部２１０は、画像符号化装置１００によって生成される符号化データを復号し、係数レベル値を復号するように構成されている。
【０２０４】
ここで、例えば、復号は、符号化部１４０で行われるエントロピー符号化とは逆の手順のエントロピー復号である。
【０２０５】
また、復号部２１０は、符号化データの復号処理によって制御データを取得するように構成されていてもよい。
【０２０６】
なお、上述したように、制御データは、符号化ブロックサイズ、予測ブロックサイズ、変換ブロックサイズ等のサイズデータを含んでもよい。
【０２０７】
また、上述したように、制御データは、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、スライスヘッダ等のヘッダ情報を含んでもよい。
【０２０８】
例えば、復号部２１０は、スライスヘッダから、ＰＲＯＦ処理の使用可否を制御するフラグ、或いは、ＤＭＶＲ処理、ＢＤＯＦ処理、ＰＲＯＦ処理の使用可否を一括して制御するフラグ等を復号するように構成されていてもよい。
【０２０９】
逆変換・逆量子化部２２０は、復号部２１０から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部２２０は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
【０２１０】
ここで、逆変換処理及び逆量子化は、変換・量子化部１３１で行われる変換処理及び量子化とは逆の手順で行われる。
【０２１１】
加算器２３０は、逆変換・逆量子化部２２０から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、フィルタ処理前復号信号をイントラ予測部２４２及びインループフィルタ処理部２５０に出力するように構成されている。
【０２１２】
ここで、フィルタ処理前復号信号は、イントラ予測部２４２で用いる参照ブロックを構成する。
【０２１３】
インター予測部２４１は、インター予測部１１１と同様に、インター予測（フレーム間予測）によって予測信号を生成するように構成されている。
【０２１４】
具体的には、インター予測部２４１は、符号化データから復号した動きベクトルと参照フレームに含まれる参照信号とに基づいて予測信号を予測ブロック毎に生成するように構成されている。インター予測部２４１は、予測信号を加算器２３０に出力するように構成されている。
【０２１５】
イントラ予測部２４２は、イントラ予測部１１２と同様に、イントラ予測（フレーム内予測）によって予測信号を生成するように構成されている。
【０２１６】
具体的には、イントラ予測部２４２は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。イントラ予測部２４２は、予測信号を加算器２３０に出力するように構成されている。
【０２１７】
インループフィルタ処理部２５０は、インループフィルタ処理部１５０と同様に、加算器２３０から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ２６０に出力するように構成されている。
【０２１８】
ここで、例えば、フィルタ処理は、ブロック（符号化ブロック、予測ブロック、変換ブロック或いはそれらを分割したサブブロック）の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
【０２１９】
フレームバッファ２６０は、フレームバッファ１６０と同様に、インター予測部２４１で用いる参照フレームを蓄積するように構成されている。
【０２２０】
ここで、フィルタ処理後復号信号は、インター予測部２４１で用いる参照フレームを構成する。
（インター予測部２４１）
以下、図１５を参照して、本実施形態に係るインター予測部２４１について説明する。図１５は、本実施形態に係るインター予測部２４１の機能ブロックの一例について示す図である。
【０２２１】
図１５に示すように、インター予測部２４１は、動きベクトル復号部２４１Ｂと、洗練化部２４１Ｃと、予測信号生成部２４１Ｄと、アフィン動きベクトル算出部２４１Ｅと、アフィン予測信号生成部２４１Ｆとを有する。
【０２２２】
インター予測部２４１は、動きベクトルに基づいて予測ブロックに含まれる予測信号を生成するように構成されている予測部の一例である。
【０２２３】
動きベクトル復号部２４１Ｂは、画像符号化装置１００から受信する制御データの復号によって動きベクトルを取得するように構成されている。
【０２２４】
また、動きベクトル復号部２４１Ｂは、当該ブロックにアフィン動き補償を用いるか否かに関する情報も復号するように構成されている。
【０２２５】
ここで、当該ブロックにアフィン動き補償を用いない場合は、洗練化処理部２４１Ｃと予測信号生成部２４１Ｄの処理を、当該ブロックにアフィン動き補償を用いる場合はアフィン動きベクトル算出部２４１Ｅとアフィン予測信号生成部２４１Ｆの処理を行う。
【０２２６】
洗練化部２４１Ｃは、洗練化部１１１Ｃと同様に、動きベクトルを修正する洗練化処理を実行するように構成されている。
【０２２７】
予測信号生成部２４１Ｄは、予測信号生成部１１１Ｄと同様に、動きベクトルに基づいて予測信号を生成するように構成されている。
【０２２８】
アフィン動きベクトル算出部２４１Ｅは、アフィン動きベクトル算出部１１１Ｅと同様に、動きベクトル復号部２４１Ｂで復号されたコントロールポイント動きベクトルを用いて、各サブブロックの動きベクトルを算出するように構成されている。
【０２２９】
アフィン予測信号生成部２４１Ｆは、アフィン予測信号生成部１１１Ｆと同様に、アフィン動きベクトル算出部２４１Ｅで算出された各サブブロックの動きベクトルを用いて予測信号を及びとアフィン予測信号生成部２４１Ｆは、予測信号生成部１１１Ｄ及びアフィン予測信号生成部１１１Ｆと同様に、同一の処理ブロックに統合することもできる。
（インループフィルタ処理部２５０）
以下において、本実施形態に係るインループフィルタ処理部２５０について説明する。図１６は、本実施形態に係るインループフィルタ処理部２５０を示す図である。
【０２３０】
図１６に示すように、インループフィルタ処理部２５０は、ブロック境界検出部２５１と、境界強度判定部２５３と、フィルタ決定部２５４と、フィルタ処理部２５５とを有する。
【０２３１】
ここで、末尾に「Ａ」が付されている構成は、垂直方向のブロック境界に対するデブロッキングフィルタ処理に関する構成であり、末尾に「Ｂ」が付されている構成は、水平方向のブロック境界に対するデブロッキングフィルタ処理に関する構成である。
【０２３２】
ここでは、垂直方向のブロック境界に対するデブロッキングフィルタ処理が行われた後に、水平方向のブロック境界に対するデブロッキングフィルタ処理が行われるケースについて例示する。
【０２３３】
デブロッキングフィルタ処理は、上述したように、符号化ブロックに対して適用されてもよく、予測ブロックに対して適用されてもよく、変換ブロックに対して適用されてもよい。また、デブロッキングフィルタ処理は、上述の各ブロックを分割したサブブロックに適用されてもよい。すなわち、対象ブロック及び隣接ブロックは、符号化ブロックであってもよく、予測ブロックであってもよく、変換ブロックであってもよく、これらを分割したサブブロックでもよい。
【０２３４】
垂直方向のブロック境界に対するデブロッキングフィルタ処理及び水平方向のブロック境界に対するデブロッキングフィルタ処理は、同様の処理であるため、以下においては、垂直方向のブロック境界に対するデブロッキングフィルタ処理について説明する。
【０２３５】
ブロック境界検出部２５１Ａは、ブロック境界検出部１５１Ａと同様に、ブロックサイズを示す制御データに基づいて、ブロックの境界を検出するように構成されている。
【０２３６】
境界強度判定部２５３Ａは、境界強度判定部１５３Ａと同様に、対象ブロックと隣接ブロックとのブロック境界の境界強度を判定するように構成されている。ブロック境界の境界強度の判定方法は、上述した通りである。
【０２３７】
フィルタ決定部２５４Ａは、フィルタ決定部１５４Ａと同様に、ブロック境界に適用するデブロッキングフィルタ処理の種類を決定するように構成されている。デブロッキングフィルタ処理の種類の決定方法は、上述した通りである。
【０２３８】
フィルタ処理部２５５Ａは、フィルタ処理部１５５Ａと同様に、フィルタ決定部２５４Ａの決定に基づいて、デブロッキング前画像に対する処理を行うように構成されている。デブロッキング前画像に対する処理は、フィルタ処理無し、弱フィルタ処理、強フィルタ処理等である。
（変更例１）
以下、図１７及び図１８を参照して、上述の実施形態の変更例１について説明する。以下においては、上述の実施形態に対する相違点について主として説明する。上述の実施形態では、ＢＤＯＦ処理及びＰＲＯＦ処理について、それぞれ詳細な説明を省略したが、本変更例では、具体的な処理の一例について説明する。
【０２３９】
第１に、ステップＳ８３のＢＤＯＦ処理の具体例について、図１７を用いて説明する。
【０２４０】
図１７に示すように、ステップＳ１７１において、予測信号生成部１１１Ｄ/２４１Ｄは、ＢＤＯＦ処理を適用するブロック又はサブブロックに対応するＬ０及びＬ１の参照ブロック内の各画素について、水平方向及び垂直方向の輝度値勾配をそれぞれ算出する。
【０２４１】
具体的には、予測信号生成部１１１Ｄ/２４１Ｄは、ブロック内の各画素位置（ｘ，ｙ）について、以下の式で、上述の勾配を算出する。
【０２４２】
ｇｒａｄｉｅｎｔＨＬ０［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ＋１］［ｖｙ］＞＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ−１］［ｖｙ］＞＞ｓｈｉｆｔ１）
ｇｒａｄｉｅｎｔＶ０［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ］［ｖｙ＋１＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ］［ｖｙ−１］＞＞ｓｈｉｆｔ１）
ｇｒａｄｉｅｎｔＨＬ１［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓＬ１ｈｘ＋１］［ｖｙ］＞＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓＬ１［ｈｘ−１］［ｖｙ］＞＞ｓｈｉｆｔ１）
ｇｒａｄｉｅｎｔＶ１［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓＬ１［ｈｘ］［ｖｙ＋１］＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ］［ｖｙ−１］＞＞ｓｈｉｆｔ１）
ここで「ｐｒｅｄＳａｍｐｌｅｓＬ０」及び「ｐｒｅｄＳａｍｐｌｅｓＬ１」は、ステップＳ８１で算出したＬ０及びＬ１の予測信号である。また、［ｈｘ］及び［ｖｙ］は、以下の式で定義されている。
【０２４３】
以下の式において、「ｎＣｂＷ」は、当該ブロックの幅であり、「ｎＣｂＨ」は、当該ブロックの高さであり、「Ｃｌｉｐ３（ｍｉｎ，ｍａｘ，ｉｎｐｕｔ）は、「ｉｎｐｕｔ」の値を「ｍｉｎ≦ｉｎｐｕｔ≦ｍａｘ」となるようにクリップする関数である。
【０２４４】
ｈｘ＝Ｃｌｉｐ３（１，ｎＣｂＷ，ｘ）
ｈｙ＝Ｃｌｉｐ３（１，ｎＣｂＨ，ｙ）
なお、「ｓｈｉｆｔ１」は、以下の式によって定義されている。
【０２４５】
ｓｈｉｆｔ１＝Ｍａｘ（６，ｂｉｔＤｅｐｔｈ−６）
ここで、「ｂｉｔＤｅｐｔｈ」は、画素値の処理を行う際のビット深度である。
【０２４６】
ステップＳ１７２において、予測信号生成部１１１Ｄ/２４１Ｄは、補正ＭＶを算出する。
【０２４７】
ここで、第１に、予測信号生成部１１１Ｄ/２４１Ｄは、以下の３つのパラメータの値を、当該ブロック又はサブブロックの各画素について算出する。
【０２４８】
ｄｉｆｆ［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｈｘ］［ｖｙ］＞＞ｓｈｉｆｔ２）−（ｐｒｅｄＳａｍｐｌｅｓＬ１［ｈｘ］［ｖｙ］＞＞ｓｈｉｆｔ２）
ｔｅｍｐＨ［ｘ］［ｙ］＝（ｇｒａｄｉｅｎｔＨＬ０［ｘ］［ｙ］＋ｇｒａｄｉｅｎｔＨＬ１［ｘ］［ｙ］）＞＞ｓｈｉｆｔ３
ｔｅｍｐＶ［ｘ］［ｙ］＝（ｇｒａｄｉｅｎｔＶＬ０［ｘ］［ｙ］＋ｇｒａｄｉｅｎｔＶＬ１［ｘ］［ｙ］）＞＞ｓｈｉｆｔ３
ここで、「ｓｈｉｆｔ２」及び「ｓｈｉｆｔ３」は、以下の式によって定義されている。
【０２４９】
ｓｈｉｆｔ２＝Ｍａｘ（４，ｂｉｔＤｅｐｔｈ−８）
ｓｈｉｆｔ３＝Ｍａｘ（３，１５−ｂｉｔＤｅｐｔｈ）
第２に、予測信号生成部１１１Ｄ/２４１Ｄは、当該ブロック又はサブブロックを４×４画素ブロックに分割し、下記の通り、各４×４画素ブロック毎に、パラメータを算出する。
【０２５０】
【数１】
0006960969.tif 000002
【０２５１】
ここで、「ｘＳｂ」及び「ｙＸｂ」は、当該ブロック又はサブブロックの左上の画素を原点としたときの各４×４画素ブロックの左上の画素の座標である。また、「Ｓｉｇｎ（ｉｎｐｕｔ）」は、「ｉｎｐｕｔ」の値が正の場合は「１」を返し、「ｉｎｐｕｔ」の値が負の場合は「−１」を返し、「ｉｎｐｕｔ」の値が「０」の場合は「０」を返す関数である。
【０２５２】
予測信号生成部１１１Ｄ/２４１Ｄは、以下の通り、上述のように算出した値を用いて、補正ＭＶ（ｖｘ，ｖｙ）を算出する。
【０２５３】
ｖｘ＝ｓＧｘ２＞０  ？  Ｃｌｉｐ３（−ｍｖＲｅｆｉｎｅＴｈｒｅｓ，ｍｖＲｅｆｉｎｅＴｈｒｅｓ−１，−（ｓＧｘｄＩ＜＜３）＞＞Ｆｌｏｏｒ（Ｌｏｇ２（ｓＧｘ２）））：０
ｖｙ＝ｓＧｘ２＞０  ？  Ｃｌｉｐ３（−ｍｖＲｅｆｉｎｅＴｈｒｅｓ，ｍｖＲｅｆｉｎｅＴｈｒｅｓ−１，（（ｓＧｙｄＩ＜＜３）−（（ｖｘ×ｓＧｘＧｙｍ）＜＜１２＋ｖｘ×ｓＧｘＧｙｓ）＞＞１）＞＞Ｆｌｏｏｒ（Ｌｏｇ２（ｓＧｘ２）））：０
ここで、「ｍｖＲｅｆｉｎｅＴｈｒｅｓ」は、以下の式によって定義されている。
【０２５４】
ｍｖＲｅｆｉｎｅＴｈｒｅｓ＝１＜＜Ｍａｘ（５，ｂｉｔＤｅｐｔｈ−７）
以上の構成とすることで、補正ＭＶ（ｖｘ，ｖｙ）の各成分のビット幅を、符号込みで「１＜＜Ｍａｘ（５，ｂｉｔＤｅｐｔｈ−７）＋１」ビット以内に抑えることができる。
【０２５５】
ステップＳ１７３において、予測信号生成部１１１Ｄ/２４１Ｄは、以下の通り、各画素の予測信号を補正する。
【０２５６】
ｂｄｏｆＯｆｆｓｅｔ＝（ｖｘ×（ｇｒａｄｉｅｎｔＨＬ０［ｘ＋１］［ｙ＋１］−ｇｒａｄｉｅｎｔＨＬ１［ｘ＋１］［ｙ＋１］））＞＞１＋（ｖｙ×（ｇｒａｄｉｅｎｔＶＬ０［ｘ＋１］［ｙ＋１］−ｇｒａｄｉｅｎｔＶＬ１［ｘ＋１］［ｙ＋１］））＞＞１
ｐｂＳａｍｐｌｅｓ［ｘ］［ｙ］＝Ｃｌｉｐ３（０，（２ｂｉｔＤｅｐｔｈ）−１，（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｘ＋１］［ｙ＋１］＋ｏｆｆｓｅｔ４＋ｐｒｅｄＳａｍｐｌｅｓＬ１［ｘ＋１］［ｙ＋１］＋ｂｄｏｆＯｆｆｓｅｔ）＞＞ｓｈｉｆｔ４）
ここで、「ｏｆｆｓｅｔ４」及び「ｓｈｉｆｔ４」は、以下の式によって定義されている。
【０２５７】
ｏｆｆｓｅｔ４＝１＜＜（ｓｈｉｆｔ４−１）
ｓｈｉｆｔ４＝Ｍａｘ（３，１５−ｂｉｔＤｅｐｔｈ）
予測信号生成部１１１Ｄ/２４１Ｄは、以上の処理を全て行った後、ステップＳ１７４に進み処理を終了する。
【０２５８】
次に、ステップＳ１１３のＰＲＯＦ処理について、図１８を用いて具体例を説明する。
【０２５９】
図１８に示すように、ステップＳ１８１において、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、ＰＲＯＦ処理を適用するＬ０及びＬ１の参照ブロック内の各画素について、水平方向及び垂直方向の輝度値勾配をそれぞれ算出する。
【０２６０】
具体的には、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、以下の式で、ブロック内の各画素位置（ｘ，ｙ）について勾配を算出する。
【０２６１】
ｇｒａｄｉｅｎｔＨ［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓ［ｘ＋２］［ｙ］＞＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓ［ｘ］［ｙ］＞＞ｓｈｉｆｔ１）
ｇｒａｄｉｅｎｔＶ［ｘ］［ｙ］＝（ｐｒｅｄＳａｍｐｌｅｓ［ｘ］［ｙ＋２］＞＞ｓｈｉｆｔ１）−（ｐｒｅｄＳａｍｐｌｅｓ［ｘ］［ｙ］＞＞ｓｈｉｆｔ１）
ここで、「ｐｒｅｄＳａｍｐｌｅｓ」は、ステップＳ１１１で生成したＬ０又はＬ１の予測信号である。ここで、
ｓｈｉｆｔ１＝Ｍａｘ（６，ｂｉｔＤｅｐｔｈ−６）
とする。
【０２６２】
アフィン予測信号生成部１１１Ｆ/２４１Ｆは、Ｌ０及びＬ１の両方にＰＲＯＦ処理を適用する場合は、上述の「ｇｒａｄｉｅｎｔＨ」及び「ｇｒａｄｉｅｎｔＶ」を、Ｌ０とＬ１のそれぞれについて算出する。この場合、ステップＳ１８１での計算内容は、画素単位で見るとステップＳ１７１の計算内容と完全に同一となる。
【０２６３】
ステップＳ１８２において、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、補正ＭＶを計算する。かかる処理は、実際はステップＳ９６としてアフィン動きベクトル算出部１１１Ｅ/２４１Ｅの内部で行われるが、便宜上、ステップＳ１８２において行われるものとして説明する。実際は、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、ステップＳ９６で算出された値をそのまま用いればよい。
【０２６４】
第１に、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、上述のステップＳ９６の説明の場合と同様に、「ｄｉｆｆＭｖ」の値を算出する。
【０２６５】
ｄｉｆｆＭｖ［ｘ］［ｙ］［０］＝ｘ×（ｄＨｏｒＸ＜＜２）＋ｙ×（ｄＶｅｒＸ＜＜２）−ｐｏｓＯｆｆｓｅｔＸ
ｄｉｆｆＭｖ［ｘ］［ｙ］［１］＝ｘ×（ｄＨｏｒＹ＜＜２）＋ｙ×（ｄＶｅｒＹ＜＜２）−ｐｏｓＯｆｆｓｅｔＹ
第２に、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、上述の「ｄｉｆｆＭｖ」の値を、それぞれ７ビットだけ右にシフトする。
【０２６６】
第３に、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、以下のように、クリッピング処理を行う。
【０２６７】
ｄｉｆｆＭｖ［ｘ］［ｙ］［ｉ］＝Ｃｌｉｐ３（−ｄｍｖＬｉｍｉｔ，ｄｍｖＬｉｍｉｔ−１，ｄｉｆｆＭｖ［ｘ］［ｙ］［ｉ］）
ここで、
ｄｍｖＬｉｍｉｔ＝１＜＜Ｍａｘ（５，ｂｉｔＤｅｐｔｈ−７）
である。
【０２６８】
以上のような構成とすることで、「ｄｉｆｆＭｖ」の各成分のビット幅を、符号込みで「１＜＜Ｍａｘ（５，ｂｉｔＤｅｐｔｈ−７）＋１」ビット以内に抑えることができる。これは、ステップＳ１７２で算出した補正ＭＶと同一のビット幅である。
【０２６９】
ステップＳ１８３において、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、予測信号の補正を行う。
【０２７０】
以下のように、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、ＰＲＯＦ処理を適用するブロック及び予測方向について予測信号「ｐｂＳａｍｐｌｅｓ」の値を補正する。
【０２７１】
ｄＩ＝ｇｒａｄｉｅｎｔＨ［ｘ］［ｙ］×ｄｉｆｆＭｖ［ｘ］［ｙ］［０］＋ｇｒａｄｉｅｎｔＶ［ｘ］［ｙ］×ｄｉｆｆＭｖ［ｘ］［ｙ］［１］
ｐｂＳａｍｐｌｅｓ［ｘ］［ｙ］＝ｐｒｅｄＳａｍｐｌｅｓ［ｘ＋１］［ｙ＋１］＋（ｄＩ＞＞１）
アフィン予測信号生成部１１１Ｆ/２４１Ｆは、Ｌ０及びＬ１の両方でＰＲＯＦ処理を適用する場合は、上述の処理をＬ０及びＬ１のそれぞれについて実行する。
【０２７２】
アフィン予測信号生成部１１１Ｆ/２４１Ｆは、上述の補正が完了した後、ステップＳ１８４へ移動してＰＲＯＦ処理を終了する。
【０２７３】
アフィン予測信号生成部１１１Ｆ/２４１Ｆは、ＰＲＯＦ処理の完了後は、ステップＳ１１４で説明した予測値合成処理を実行する。予測値の合成は、例えば、以下の式で実行できる。
【０２７４】
ｐｒｅｄＳａｍｐｌｅｓ［ｘ］［ｙ］＝Ｃｌｉｐ３（０，（１＜＜ｂｉｔＤｅｐｔｈ）−１，（ｐｒｅｄＳａｍｐｌｅｓＬ０［ｘ］［ｙ］＋ｐｒｅｄＳａｍｐｌｅｓＬ１［ｘ］［ｙ］＋ｏｆｆｓｅｔ２）＞＞ｓｈｉｆｔ２）
ここで、
ｏｆｆｓｅｔ２＝１＜＜（ｓｈｉｆｔ２−１）
ｓｈｉｆｔ２＝Ｍａｘ（３，１５−ｂｉｔＤｅｐｔｈ）
である。
【０２７５】
なお、さらにＬ０側の予測信号「ｐｒｅｄＳａｍｐｌｅｓＬ０」及びＬ１側の予測信号「ｐｒｅｄＳａｍｐｌｅｓＬ１」の両方がＰＲＯＦ処理によって補正されていた場合、「ｐｒｅｄＳａｍｐｌｅｓＬ０」及び「ｐｒｅｄＳａｍｐｌｅｓＬ１」に、ステップＳ１８３の計算を代入すると、以下のように変形できる。
【０２７６】
ｄＩ_Ｂｉ＝（ｄＩ_Ｌ０＞＞１）＋（ｄＩ_Ｌ１＞＞１）
ｐｂＳａｍｐｌｅｓ［ｘ］［ｙ］＝Ｃｌｉｐｓ（０，（１＜＜ｂｉｔＤｅｐｔｈ）−１，（ｐｒｅｄＳａｍｐｌｅｓＬ０_ｏｒｉｇ［ｘ］［ｙ］＋ｏｆｆｓｅｔ２＋ｐｒｅｄＳａｍｐｌｅｓＬ１_ｏｒｉｇ［ｘ］［ｙ］＋ｄＩ_Ｂｉ）＞＞ｓｈｉｆｔ２）
ここで、「ｄＩ_Ｌ０」及び「ｄＩ_Ｌ１」は、それぞれＬ０及びＬ１のｄＩの値であり、「ｐｒｅｄＳａｍｐｌｅｓＬ０_ｏｒｉｇ」及び「ｐｒｅｄＳａｍｐｌｅｓＬ１_ｏｒｉｇ」は、ＰＲＯＦ処理による補正前の予測信号である。
【０２７７】
以上で説明したＢＤＯＦ処理及びＰＲＯＦ処理で算出される勾配及び補正ＭＶの値は、それぞれビット幅が同一になるようにクリッピングされているため、そこから算出した「ｂｄｏｆＯｆｆｓｅｔ」及び「ｄＩ_Ｂｉ」のビット幅も同一となる。
【０２７８】
すなわち、予測信号生成部予測信号生成部１１１Ｄ/２４１Ｄによって行われるＢＤＯＦ処理中で算出するオフセット量及びアフィン予測信号生成部１１１Ｆ/２４１Ｆによって行われるＰＲＯＦ処理中で２つの参照フレーム（Ｌ０/Ｌ１）についてそれぞれ算出したオフセット量の合成後の値のビット幅が同一となるように演算してもよい。
【０２７９】
また、ＰＲＯＦ処理後の予測信号を合成する際の「ｏｆｆｓｅｔ２」及び「ｓｈｉｆｔ２」の値と、ＢＤＯＦ処理の「ｏｆｆｓｅｔ４」及び「ｓｈｉｆｔ４」の値も同一である。よって、ＢＤＯＦ処理時及びＰＲＯＦ処理を、Ｌ０及びＬ１の両方に適用した場合の予測値生成処理は、完全に同一の式となる。
【０２８０】
ＢＤＯＦ処理及びＰＲＯＦ処理を、以上のような構成とすることで、以下の通りとなる。
【０２８１】
第１に、ステップＳ１７１及びステップＳ１８１の勾配算出処理を全く同じ処理とすることができる。
【０２８２】
すなわち、予測信号生成部１１１Ｄ/２４１Ｄによって行われるＢＤＯＦ処理中の勾配算出処理及びアフィン予測信号生成部１１１Ｆ/２４１Ｆによって行われるＰＲＯＦ処理中の勾配算出処理を、ＰＲＯＦ処理が２つの参照フレーム（Ｌ０/Ｌ１）の両方に適用された場合に同一の処理とすることができる。
【０２８３】
第２に、ステップＳ１７２及びステップＳ１８２の出力である補正ＭＶのビット幅を全く同一とすることができる。
【０２８４】
すなわち、予測信号生成部１１１Ｄ/２４１Ｄによって行われるＢＤＯＦ処理中の補正ＭＶ量及びアフィン予測信号生成部１１１Ｆ/２４１Ｆによって行われるＰＲＯＦ処理中で用いる補正ＭＶ量が、それぞれ同一のビット幅になるようにそれぞれクリッピング処理を行うことができる。
【０２８５】
第３に、ステップＳ１７３の予測値補正処理と、ステップＳ１８３及びステップＳ１１４の予測値補正及び予測値合成処理とを、全く同じ処理とすることができる。
【０２８６】
すなわち、予測信号生成部１１１Ｄ/２４１Ｄによって行われるオフセット量を用いた最終的な予測信号生成処理及びアフィン予測信号生成部１１１Ｆ/２４１Ｆによって行われるオフセット量の合成後の値を用いた最終的な予測信号生成処理を同一の処理とすることができる。
【０２８７】
ＢＤＯＦ処理及びＰＲＯＦ処理は、上述のように、ブロック毎に排他的に適用されるため、上述の同一の処理部分は、ハードウェア上で実装した場合に、ＢＤＯＦ処理及びＰＲＯＦ処理で、処理回路を共有することが可能になる。これにより、回路規模の削減が期待できる。
（変更例２）
以下、図１９及び図２０を参照して、上述の実施形態の変更例２について説明する。以下においては、上述の実施形態に対する相違点について主として説明する。本変更例では、ブロック境界検出部１５１/２５１でのブロック境界検出方法及び境界強度判定部１５３/２５３での境界強度の判定方法について、上述の実施形態とは異なる例を説明する。
【０２８８】
以下では、ブロック境界検出部１５１Ａについて説明するが、ブロック境界検出部１５１Ｂ/２５１Ａ/２５１Ｂにおいても同様の処理でブロック境界を検出することができる。
【０２８９】
図１９は、ブロック境界検出部１５１Ａの処理の一例を示すフローチャートである。以下、ＣＵ単位で処理を行う場合を例に説明する。
【０２９０】
ステップＳ１９１において、ブロック境界検出部１５１Ａは、ＣＵ境界を検出する。ブロック境界検出部１５１Ａは、垂直方向の境界を検出する処理ブロックであるため、当該ＣＵの左側の垂直方向の境界をフィルタリング処理対象のブロック境界として検出する。
【０２９１】
なお、「ブロック境界として検出する」とは、例えば、画面内の当該画素位置が境界か否かについて示す二次元のフラグの配列（例えば、「ｅｄｇｅＦａｌｇｓ［ｘ］［ｙ］」）を用意しておき、境界として検出した画素位置のフラグ値を「１」とし、そうでない画素位置のフラグ値を「０」とすることに相当する。
【０２９２】
ここで、当該ＣＵの左側の垂直方向の境界が、ピクチャ境界やスライス境界やタイル境界等の符号化単位の境界に位置する場合は、ブロック境界検出部１５１Ａは、当該境界をブロック境界として検出しないこととしてもよい。
【０２９３】
ブロック境界検出部１５１Ａは、上記の手順で、ＣＵ境界を検出した後、ステップＳ１９２へ移る。
【０２９４】
ステップＳ１９２において、ブロック境界検出部１５１Ａは、ＴＵ境界（変換ブロック境界）を検出する。
【０２９５】
ブロック境界検出部１５１Ａは、当該ＣＵの左側の垂直方向の境界を起点として、水平方向の座標を４画素ずつ、垂直方向の画素位置を１画素ずつ増加させながら、各画素位置がＴＵ境界かどうかを確認する。当該画素位置が、ＴＵ境界であった場合、ブロック境界検出部１５１Ａは、当該画素位置をブロック境界として検出する。
【０２９６】
ブロック境界検出部１５１Ａは、上記の手順で、ＴＵ境界を検出した後、ステップＳ１９３へ移る。
【０２９７】
ステップＳ１９３において、ブロック境界検出部１５１Ａは、サブブロック境界を検出する。
【０２９８】
ステップＳ１９３で検出対象とするサブブロック境界は、例えば、インター予測を行ったＣＵのサブブロック境界としてもよい。
【０２９９】
この時、上述のサブブロック境界には、洗練化部１１１Ｃ/２４１Ｃで実行されるＤＭＶＲ処理におけるサブブロック（例えば、１６×１６画素サイズ）の境界、及び、アフィン動きベクトル算出部１１１Ｅ/２４１Ｅ及びアフィン予測信号生成部１１１Ｆ/２４１Ｆで行われるアフィン動き補償におけるサブブロック（例えば、４×４画素サイズ）の境界の両方が含まれてもよい。
【０３００】
ステップＳ１９３で検出対象とするサブブロック境界は、例えば、アフィン動き補償又は「ｍｅｒｇｅ_ｓｕｂｂｌｏｃｋ」が適用されたＣＵのサブブロック境界としてもよい。
【０３０１】
なお、アフィン動き補償のサブブロックは、当該ＣＵでＰＲＯＦ処理が適用される場合は、ＰＲＯＦ処理のサブブロックと一致する。
【０３０２】
ここで、ステップＳ１９３でアフィン動き補償のサブブロック境界を検出対象とした場合、ブロック境界検出部１５１Ａは、当該ＣＵでＰＲＯＦ処理が適用される場合には、アフィン動き補償のサブブロック境界及びＰＲＯＦ処理のサブブロック境界を検出対象から除外してもよい。
【０３０３】
すなわち、ブロック境界検出部１５１Ａは、当該ＣＵでアフィン動き補償が適用され且つ当該ＣＵでＰＲＯＦ処理が適用されない場合のみ、アフィン動き補償のサブブロック境界を検出対象としてもよい。勿論、ブロック境界検出部１５１Ａは、ＰＲＯＦ処理が適用されるＣＵについても、アフィン動き補償のサブブロック境界及びＰＲＯＦ処理のサブブロック境界を検出対象としてもよい。
【０３０４】
なお、ブロック境界検出部１５１Ａは、双予測を行うブロックのサブブロック境界については、Ｌ０又はＬ１の少なくともいずれかでＰＲＯＦ処理が適用されているときに、「ＰＲＯＦ処理が適用されるＣＵ」とみなしてもよい。また、ブロック境界検出部１５１Ａは、Ｌ０及びＬ１の両方でＰＲＯＦ処理が適用されているときのみ、「ＰＲＯＦ処理が適用されるＣＵ」とみなしてもよい。以下の説明においても同様に解釈できる。
【０３０５】
ブロック境界検出部１５１Ａは、当該ＣＵの左側の垂直方向の境界を起点として、水平方向の座標を、以下の方法で算出したサブブロックサイズずつ、垂直方向の画素位置を１画素ずつ増加させながら、各画素位置がサブブロック境界かどうかを確認する。
【０３０６】
ブロック境界検出部１５１Ａは、当該画素位置がサブブロック境界であった場合、当該画素位置をブロック境界として検出する。ここで、ブロック境界検出部１５１Ａは、当該位置がサブブロック境界であっても、当該ＣＵにＰＲＯＦ処理が適用されている場合には、サブブロック境界として検出しないという処理としてもよい。
【０３０７】
上記のサブブロックサイズは、例えば、以下のように算出できる。
【０３０８】
サブブロックサイズ＝Ｍａｘ（８，（ｎＣｂＷ/ＮｕｍＳｂＸ））
ここで、「ｎＣｂＷ」は、当該ＣＵの幅（水平方向の画素数）であり、「ＮｕｍＳｂＸ」は、当該ＣＵ内の水平方向に含まれるサブブロックの数である。
【０３０９】
上述の式が用いられて場合、サブブロック境界は、当該ＣＵの左側の垂直方向の境界を起点として、最も細かい場合で水平方向に８画素おきの間隔でサブブロック境界かどうかを判定することとなる。
【０３１０】
また、上述のサブブロックサイズは、例えば、以下のように算出してもよい。
【０３１１】
サブブロックサイズ＝Ｍａｘ（４，（ｎＣｂＷ/ＮｕｍＳｂＸ））
この場合、サブブロック境界は、当該ＣＵの左側の垂直方向の境界を起点として、最も細かい場合で水平方向に４画素おきの間隔でサブブロック境界かどうかを判定することとなる。
【０３１２】
すなわち、ブロック境界検出部１５１Ａは、対象ブロックの左端又は上端の座標を基準として、最小で４画素おきの間隔にて、対象画素位置がサブブロック境界であるかどうかについて判定するように構成されている。
【０３１３】
ブロック境界検出部１５１Ａは、以上の手順で、サブブロック境界を検出した後に、ステップＳ１９４へ移り処理を終了する。
【０３１４】
以上では、ＣＵ境界、ＴＵ境界、サブブロック境界をそれぞれ区別せずに単純にブロック境界として検出する例を説明したが、それぞれを区別して記憶しておいてもよい。
【０３１５】
例えば、ＣＵ境界、ＴＵ境界、サブブロック境界という区別で記憶してもよいし、ＴＵ境界、動きベクトル境界として区別してもよい。この時、ＣＵ境界は、ＴＵ境界及び動きベクトル境界の両方として検出される。また、ＴＵ境界は、ＴＵ境界として検出され、サブブロック境界は、動きベクトル境界として検出される。この区別は、例えば、下記の境界強度判定部１５３Ａで用いることができる。
【０３１６】
以下では、境界強度判定部１５３Ａについて説明するが、境界強度判定部１５３Ｂ/２５３Ａ/２５３Ｂにおいても全く同じ判定を行うことができる。
【０３１７】
境界強度判定部１５３Ａは、対象画素位置がブロック境界でない場合に、境界強度を「０」と判定するように構成されていてもよい。
【０３１８】
すなわち、ブロック境界検出部１５１は、ＰＲＯＦ処理が適用されたブロック内のサブブロックをブロック境界として検出しないように構成されており、境界強度判定部１５３Ａは、ブロック境界として検出されなかった画素位置の境界強度を「０」と判定するように構成されており、フィルタ決定部１５４は、境界強度が「０」の場合には、ブロック境界にデブロッキングフィルタを適用しないと決定するように構成されていてもよい。
【０３１９】
境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックがイントラ予測ブロックであるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
【０３２０】
例えば、図２０に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの少なくともいずれか１つのブロックがイントラ予測ブロックである場合（すなわち、ブロック境界の両側のブロックの少なくともいずれかがイントラ予測ブロックである場合）に、ブロック境界の境界強度が「２」であると判定ように構成されていてもよい。
【０３２１】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックに非零（ゼロ）の直交変換係数が含まれるか否か及びブロック境界が変換ブロックの境界であるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
【０３２２】
例えば、図２０に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの少なくともいずれか１つのブロックが非零の直交変換係数を含み、かつ、ブロック境界が変換ブロックの境界である場合（すなわち、ブロック境界の両側のブロックの少なくともいずれかに非零の変換係数が存在し、ＴＵの境界である場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３２３】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上であるか否かを示す制御データに基づいてブロック境界の境界強度を判定するように構成されていてもよい。その際、当該のブロック境界がＰＲＯＦ処理を適用するブロック内のサブブロック境界であるかどうかに基づいてブロック境界の境界強度を判定するように構成されていてもよい。
【０３２４】
例えば、図２０に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合（すなわち、ブロック境界の両側のブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合）、かつ、当該のブロック境界がステップＳ９５においてＰＲＯＦ処理を適用すると判定されたブロックのサブブロック（４×４画素ブロック）境界ではない場合に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３２５】
すなわち、境界強度判定部１５３Ａは、ブロック境界毎に境界強度を判定するように構成されており、かかるブロック境界の両側のブロックの動きベクトルの差の絶対値が１/２画素以上であり、且つ、かかるブロック境界がＰＲＯＦ処理が適用されたサブブロック境界ではない場合に、境界強度を「１」と判定するように構成されていてもよい。
【０３２６】
ここで、フィルタ決定部１５４は、境界強度が「０」の場合には、ブロック境界にデブロッキングフィルタを適用しないと決定するように構成されていてもよい。
【０３２７】
例えば、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合（すなわち、ブロック境界の両側のブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合）、かつ、当該のブロック境界の両側のブロックがステップＳ９５においてＰＲＯＦ処理を適用すると判定されたブロックではない場合に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３２８】
例えば、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合（すなわち、ブロック境界の両側のブロックの動きベクトルの差の絶対値が閾値（例えば、１/２画素）以上である場合）、かつ、当該のブロック境界のうち少なくともどちらかのブロックがステップＳ９５においてＰＲＯＦ処理を適用すると判定されたブロックではない場合に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３２９】
なお、双予測を行うブロックのサブブロック境界については、Ｌ０又はＬ１の少なくともいずれかでＰＲＯＦ処理が適用されているときに、「ＰＲＯＦ処理を適用すると判定されたブロック」とみなしてもよい。すなわち、この場合はＰＲＯＦ処理がＬ０及びＬ１の両方で適用さなかった場合は、動きベクトルの差が閾値以上の場合は境界強度を「１」と判定する。
【０３３０】
すなわち、境界強度判定部１５３Ａは、対象ブロックが双予測である場合で且つ２つの参照フレームのうちの少なくともいずれか１つにＰＲＯＦ処理が適用された場合に、対象ブロックにＰＲＯＦ処理が適用されたとみなすように構成されていてもよい。
【０３３１】
また、Ｌ０とＬ１の両方でＰＲＯＦ処理が適用されているときのみ、「ＰＲＯＦ処理を適用すると判定されたブロック」とみなしてもよい。すなわち、この場合はＰＲＯＦ処理がＬ０又はＬ１のみで適用された場合で、且つ、動きベクトルの差が閾値以上の場合は、境界強度を「１」と判定する。
【０３３２】
また、別の例として、ＰＲＯＦ処理が適用されているブロック境界では、境界強度の判定において、動きベクトルの差を判定しない或いは動きベクトルの差を「０」とみなす、といった判定をすることもできる。具体例としては、以下のように判定できる。
【０３３３】
当該ブロックが片予測を行うブロックで、且つ、当該ブロックでＰＲＯＦが適用される場合、サブブロック境界における境界強度の判定では、動きベクトルの差を判定しない或いは動きベクトルの差を「０」とみなす。
【０３３４】
当該ブロックが双予測を行うブロックで、且つ、Ｌ０側の参照フレーム及びＬ１側の参照フレームが異なる場合、Ｌ０側及びＬ１側のうち、ＰＲＯＦが適用される予測方向（Ｌ０のみ、Ｌ１のみ又は両方）において、動きベクトルの差を判定しない或いは動きベクトルの差を「０」とみなす。
【０３３５】
当該ブロックが双予測を行うブロックで、且つ、Ｌ０側の参照フレーム及びＬ１側の参照フレームが同じフレームの場合、Ｌ０側でＰＲＯＦが適用される場合に、当該サブブロック境界の両側のＬ０の動きベクトル同士の差を判定しない又は当該サブブロック境界の両側のＬ０の動きベクトル同士の差を「０」とみなす。
【０３３６】
同様に、Ｌ１側でＰＲＯＦが適用される場合に、当該サブブロック境界の両側のＬ１の動きベクトル同士の差を判定しない又は当該サブブロック境界の両側のＬ１の動きベクトル同士の差を「０」とみなす。
【０３３７】
この場合、Ｌ０とＬ１との間の動きベクトルの差は、従来通り、境界強度の判定に用いられる。具体的には、例えば、当該サブブロック境界の左側のサブブロックのＬ０側の動きベクトルと当該サブブロック境界の右側のサブブロックのＬ１側の動きベクトルとの差は、境界強度の判定に用いられる。
【０３３８】
すなわち、境界強度判定部１５３Ａは、対象境界の両側ブロックの同一の予測方向同士の動きベクトルの差を判定する際、当該予測方向にＰＲＯＦ処理が適用された場合に、当該予測方向同士の動きベクトルの差を判定しない或いは当該予測方向同士の動きベクトルの差を「０」とみなすように構成されていてもよい。
【０３３９】
または、当該ブロックが双予測を行うブロックで、且つ、Ｌ０側の参照フレームとＬ１側の参照フレームが同じフレームの場合、当該サブブロック境界の両側の動きベクトルがそれぞれＰＲＯＦを適用する場合に、動きベクトルの差を判定しない或いは動きベクトルの差を「０」とみなすこともできる。
【０３４０】
この場合、例えば、Ｌ０側及びＬ１側の両方でＰＲＯＦが適用されている場合、Ｌ０とＬ１間の動きベクトルの差も判定しない或いはＬ０とＬ１間の動きベクトルの差を「０」とみなす点が、上述の例と異なる。
【０３４１】
また、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なるか否かを示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０３４２】
例えば、図２０に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの予測で参照される参照ブロックが異なる場合（すなわち、ブロック境界の両側のブロックで参照画像が異なる場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３４３】
境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの数が異なるか否かを示す制御データに基づいて、ブロック境界の境界強度を判定するように構成されていてもよい。
【０３４４】
例えば、図２０に示すように、境界強度判定部１５３Ａは、対象ブロック及び隣接ブロックの動きベクトルの数が異なる場合（すなわち、ブロック境界の両側のブロックで動きベクトルの数が異なる場合）に、ブロック境界の境界強度が「１」であると判定するように構成されていてもよい。
【０３４５】
以上では、動きベクトルや参照ブロックを用いて境界強度を判定する方法の例について説明したが、動きベクトルや参照ブロックを用いた判定を行うのは、上述のＣＵ境界、サブブロック境界又は動きベクトル境界として検出されたブロック境界のみとしてもよい。
【０３４６】
つまり、ＴＵ境界であって、サブブロック境界や動きベクトル境界ではないブロック境界においては、動きベクトルや参照ブロックを用いた判定をスキップするようにしてもよい。この時、ＴＵ境界では、境界の両側のブロックの少なくともいずれかに、非零の直交変換係数が存在するか否かのみを確認することとなる。
【０３４７】
例えば、図２０に示すように、境界強度判定部１５３Ａは、上述した条件がいずれも満たされない場合に、ブロック境界の境界強度が「０」であると判定するように構成されていてもよい。
【０３４８】
すなわち、アフィン予測信号生成部１１１Ｆ/２４１Ｆは、ブロック毎にＰＲＯＦ処理の適否を判定し、かかるＰＲＯＦ処理の適用時には、ブロックを分割したサブブロック毎にＰＲＯＦ処理を行うように構成されている。
【０３４９】
また、インループフィルタ処理部１５０/２５０は、ブロック境界毎にデブロッキングフィルタの適否を判定し、ＰＲＯＦ処理が適用されたブロックのサブブロック境界についてはデブロッキングフィルタを適用しないと決定するように構成されている。
【０３５０】
以上のような構成とすることで、ＰＲＯＦ処理が適用されたブロック境界又はサブブロック境界の境界強度が「０」となり、デブロッキングフィルタが適用されなくなる。ＰＲＯＦ処理は、主観画質向上効果があるため、このような構成とすることでデブロッキングフィルタによってブロック境界の画素値を補正することで、かえって主観画質を損なってしまうことを防ぐことができる。
【０３５１】
また、上述の画像符号化装置１００及び画像復号装置２００は、コンピュータに各機能（各工程）を実行させるプログラムであって実現されていてもよい。
【０３５２】
なお、上記の各実施形態では、本発明を画像符号化装置１００及び画像復号装置２００への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、画像符号化装置１００及び画像復号装置２００の各機能を備えた画像符号化/復号システムにも同様に適用できる。
【０３５３】
本発明によれば、ＢＤＯＦ処理及びＰＲＯＦ処理内の各変数のビット幅を揃えて回路を共通化することによって回路規模を削減することができる。
【符号の説明】
【０３５４】
１０…画像処理システム
１００…画像符号化装置
１１１、２４１…インター予測部
１１１Ａ…動きベクトル探索部
１１１Ｂ…動きベクトル符号化部
１１１Ｃ、２４１Ｃ…洗練化部
１１１Ｄ、２４１Ｄ…予測信号生成部
１１１Ｅ、２４１Ｅ…アフィン動きベクトル算出部
１１１Ｆ、２４１Ｆ…アフィン予測信号生成部
１１２、２４２…イントラ予測部
１２１…減算器
１２２、２３０…加算器
１３１…変換・量子化部
１３２、２２０…逆変換・逆量子化部
１４０…符号化部
１５０、２５０…インループフィルタ処理部
１６０、２６０…フレームバッファ
２００…画像復号装置
２１０…復号部
２４１Ｂ…動きベクトル復号部 
【図１】
0006960969.tif 000003
【図２】
0006960969.tif 000004
【図３】
0006960969.tif 000005
【図４】
0006960969.tif 000006
【図５】
0006960969.tif 000007
【図６】
0006960969.tif 000008
【図７】
0006960969.tif 000009
【図８】
0006960969.tif 000010
【図９】
0006960969.tif 000011
【図１０】
0006960969.tif 000012
【図１１】
0006960969.tif 000013
【図１２】
0006960969.tif 000014
【図１３】
0006960969.tif 000015
【図１４】
0006960969.tif 000016
【図１５】
0006960969.tif 000017
【図１６】
0006960969.tif 000018
【図１７】
0006960969.tif 000019
【図１８】
0006960969.tif 000020
【図１９】
0006960969.tif 000021
【図２０】
0006960969.tif 000022