(57)【要約】【課題】画像符号化及び復号化に適したブロック分割を行うことにより、符号化効率を向上させる技術を提供する。【解決手段】  符号化対象ブロックに空間的に近接するブロックの有するアフィンモデルを継承するアフィン継承マージ候補を導出するアフィン継承マージ候補導出部と、符号化対象ブロックに空間的又は時間的に近接するブロックの有する複数の動き情報から、アフィン構築マージ候補を導出するアフィン構築マージ候補導出部と、を備え、アフィン構築マージ候補導出部は、空間的又は時間的に近接するブロックの動き情報が双予測を示す場合には、Ｌ０予測又はＬ１予測のいずれか一方の動き情報を選択し、単予測としてアフィン構築マージ候補を導出する。【選択図】図１
2020141271.tif 000002
【特許請求の範囲】
【請求項１】
符号化ブロック単位でアフィン変換動き補償を行う動画像符号化装置であって、
符号化対象ブロックに空間的に近接するブロックの有するアフィンモデルを継承するアフィン継承マージ候補を導出するアフィン継承マージ候補導出部と、
符号化対象ブロックに空間的又は時間的に近接するブロックの有する複数の動き情報から、アフィン構築マージ候補を導出するアフィン構築マージ候補導出部と、
を備え、
前記アフィン構築マージ候補導出部は、前記空間的又は時間的に近接するブロックの動き情報が双予測を示す場合には、Ｌ０予測又はＬ１予測のいずれか一方の動き情報を選択し、単予測として前記アフィン構築マージ候補を導出する、
ことを特徴とする動画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像をブロックに分割して予測を行う画像符号化及び復号技術に関する。
【背景技術】
【０００２】
画像の符号化及び復号では、処理の対象となる画像を所定数の画素の集合であるブロックに分割し、ブロック単位で処理をする。適切なブロックに分割し、画面内予測（イントラ予測）、画面間予測（インター予測）を適切に設定することにより、符号化効率が向上する。
【０００３】
動画像の符号化・復号では、符号化・復号済みのピクチャから予測するインター予測により符号化効率を向上している。特許文献１には、インター予測の際に、アフィン変換を適用する技術が記載されている。動画像では、物体が拡大・縮小、回転といった変形を伴うことは珍しいことではなく、特許文献１の技術を適用することにより、効率的な符号化が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１７２６４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は画像の変換を伴うものであるため、処理負荷が多大という課題がある。本発明は上記の課題に鑑み、低負荷で効率的な符号化技術を提供する。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の態様の画像符号化装置は、符号化対象ブロックに空間的に近接するブロックの有するアフィンモデルを継承するアフィン継承マージ候補を導出するアフィン継承マージ候補導出部と、符号化対象ブロックに空間的又は時間的に近接するブロックの有する複数の動き情報から、アフィン構築マージ候補を導出するアフィン構築マージ候補導出部と、を備え、前記アフィン構築マージ候補導出部は、前記空間的又は時間的に近接するブロックの動き情報が双予測を示す場合には、Ｌ０予測又はＬ１予測のいずれか一方の動き情報を選択し、単予測として前記アフィン構築マージ候補を導出する。
【発明の効果】
【０００７】
本発明によれば、高効率な画像符号化・復号処理を低負荷で実現することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態に係る画像符号化装置のブロック図である。
【図２】本発明の実施の形態に係る画像復号装置のブロック図である。
【図３】ツリーブロックを分割する動作を説明するためのフローチャートである。
【図４】入力された画像をツリーブロックに分割する様子を示す図である。
【図５】ｚ−スキャンを説明する図である。
【図６】ブロックの分割形状を示す図である。
【図７】ブロックを４分割する動作を説明するためのフローチャートである。
【図８】ブロックを２分割または３分割する動作を説明するためのフローチャートである。
【図９】ブロック分割の形状を表現するためのシンタックスである。
【図１０】イントラ予測を説明するための図である。
【図１１】インター予測の参照ブロックを説明するための図である。
【図１２】符号化ブロック予測モードを表現するためのシンタックスである。
【図１３】インター予測に関するシンタックスエレメントとモードの対応を示す図である。
【図１４】制御点２点のアフィン変換動き補償を説明するための図である。
【図１５】制御点３点のアフィン変換動き補償を説明するための図である。
【図１６】図１のインター予測部２０１の詳細な構成のブロック図である。
【図１７】図１６の通常予測動きベクトルモード導出部３０１の詳細な構成のブロック図である。
【図１８】図１６の通常マージモード導出部３０２の詳細な構成のブロック図である。
【図１９】図１６の通常予測動きベクトルモード導出部３０１の通常予測動きベクトルモード導出処理を説明するためのフローチャートである。
【図２０】通常予測動きベクトルモード導出処理の処理手順を表すフローチャートである。
【図２１】通常マージモード導出処理の手順を説明するフローチャートである。
【図２２】図２のインター予測部２０３の詳細な構成のブロック図である。
【図２３】図２２の通常予測動きベクトルモード導出部３０１の詳細な構成のブロック図である。
【図２４】図１６の通常マージモード導出部３０２の詳細な構成のブロック図である。
【図２５】図２２の通常予測動きベクトルモード導出部３０１の通常予測動きベクトルモード導出処理を説明するためのフローチャートである。
【図２６】図１６のサブブロック予測動きベクトルモード導出部３０３の詳細な構成のブロック図である。
【図２７】図２２のサブブロック予測動きベクトルモード導出部４０３の詳細な構成のブロック図である。
【図２８】図１６のサブブロックマージモード導出部３０４の詳細な構成のブロック図である。
【図２９】図２２のサブブロックマージモード導出部４０４の詳細な構成のブロック図である。
【図３０】アフィン継承予測動きベクトル候補導出を説明する図である。
【図３１】アフィン構築予測動きベクトル候補導出を説明する図である。
【図３２】アフィン継承マージ候補導出を説明する図である。
【図３３】アフィン構築マージ候補導出を説明する図である。
【図３４】アフィン継承予測動きベクトル候補導出のフローチャートである。
【図３５】アフィン構築予測動きベクトル候補導出のフローチャートである。
【図３６】アフィン継承マージ候補導出のフローチャートである。
【図３７】アフィン構築マージ候補導出のフローチャートである。
【図３８】履歴予測動きベクトル候補リスト初期化・更新処理手順を説明するフローチャートである。
【図３９】履歴予測動きベクトル候補導出処理手順における、同一要素確認処理手順のフローチャートである。
【図４０】履歴予測動きベクトル候補導出処理手順における、要素シフト処理手順のフローチャートである。
【図４１】履歴予測動きベクトル候補導出処理手順を説明するフローチャートである。
【図４２】履歴マージ候補導出処理手順を説明するフローチャートである。
【図４３】履歴予測動きベクトル候補リスト更新処理の一例を説明する図である。
【図４４】サブブロック時間マージ候補導出部３８１の動作を説明するためのフローチャートである。
【図４５】ブロックの隣接動き情報を導出する処理を説明するためのフローチャートである。
【図４６】テンポラル動きベクトルを導出する処理を説明するためのフローチャートである。
【図４７】インター予測情報の導出を説明するためのフローチャートである。
【図４８】サブブロック動き情報を導出する処理を説明するためのフローチャートである。
【図４９】ピクチャの時間的な前後関係を説明するための図である。
【図５０】通常予測動きベクトルモード導出部301における時間予測動きベクトル候補の導出処理を説明するためのフローチャートである。
【図５１】通常予測動きベクトルモード導出部301における時間予測動きベクトル候補の導出処理における、ColPicの導出処理を説明するためのフローチャートである。
【図５２】通常予測動きベクトルモード導出部301における時間予測動きベクトル候補の導出処理における、ColPicの符号化情報を導出する処理を説明するためのフローチャートである。
【図５３】インター予測情報の導出処理を説明するためのフローチャートである。
【図５４】符号化ブロックcolCbのインター予測モードが双予測（Pred_BI）のときの符号化ブロックのインター予測情報の導出処理手順を示すフローチャートである。
【図５５】動きベクトルのスケーリング演算処理手順を説明するためのフローチャートである。
【図５６】時間マージ候補の導出処理を説明するためのフローチャートである。
【図５７】Ｌ０予測であってＬ０の参照ピクチャ（ＲｅｆＬ０Ｐｉｃ）が処理対象ピクチャ（ＣｕｒＰｉｃ）より前の時刻にある場合の動き補償予測を説明するための図である。
【図５８】Ｌ０予測であってＬ０予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測を説明するための図である。
【図５９】双予測であってＬ０予測の参照ピクチャが処理対象ピクチャより前の時刻にあって、Ｌ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測を明するための図である。
【図６０】双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより前の時刻にある場合の動き補償予測の予測方向を説明するための図である。
【図６１】双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測の予測方向を説明するための図である。
【図６２】平均マージ候補導出処理手順を説明するフローチャートである。
【図６３】マージ差分動きベクトルに関する情報を示す表である。
【図６４】マージ差分動きベクトルの導出を説明する図である。
【図６５】参照リストＬ０に対する各制御点の動き情報導出のフローチャートである。
【図６６】参照リストＬ１に対する各制御点の動き情報導出のフローチャートである。
【発明を実施するための形態】
【０００９】
本実施の形態において使用する技術、及び技術用語を定義する。
【００１０】
＜ツリーブロック＞
実施の形態では、所定の大きさで符号化・復号処理対象画像を均等分割する。この単位をツリーブロックと定義する。図４に示す通り、本実施の形態では、ツリーブロックのサイズを１２８ｘ１２８画素と設定するが、ツリーブロックのサイズはこれに限定されるものではなく、任意のサイズを設定してよい。処理対象（符号化処理においては符号化対象、復号処理においては復号対象に対応する。）のツリーブロックは、ラスタスキャン順、すなわち左から右、上から下の順序で切り替わる。各ツリーブロックの内部は、さらに再帰的な分割が可能である。ツリーブロック分割後の、符号化・復号の対象となるブロックを符号化ブロックと定義する。また、ツリーブロック、符号化ブロックを総称してブロックと定義する。適切なブロック分割を行うことにより効率的な符号化が可能となる。ツリーブロックのサイズは、符号化装置と復号装置で予め取り決めた固定値とすることもできるし、符号化装置が決定したツリーブロックのサイズを復号装置に伝送するような構成をとることもできる。
【００１１】
＜予測モード＞
処理対象符号化ブロック単位で、処理対象画像の処理済み（符号化処理においては符号化が完了した信号を復号した画像、画像信号、ツリーブロック、ブロック、符号化ブロック等に用い、復号処理においては復号が完了した画像、画像信号、ツリーブロック、ブロック、符号化ブロック等に用いる。）の周囲の画像信号から予測を行うイントラ予測（MODE_INTRA）、及び処理済み画像の画像信号から予測を行うインター予測（MODE_INTER）を切り替える。このイントラ予測（MODE_INTRA）とインター予測（MODE_INTER）を識別するモードを予測モード（PredMode）と定義する。予測モード（PredMode）はイントラ予測（MODE_INTRA）、またはインター予測（MODE_INTER）を値として持つ。
【００１２】
＜インター予測＞
処理済み画像の画像信号から予測を行うインター予測では、複数の処理済み画像を参照ピクチャとして用いることができる。複数の参照ピクチャを管理するため、Ｌ０（参照リスト０）とＬ１（参照リスト１）の２種類の参照リストを定義し、それぞれ参照インデックスを用いて参照ピクチャを特定する。ＰスライスではＬ０予測（Pred_L0）が利用可能である。ＢスライスではＬ０予測（Pred_L0）、Ｌ１予測（Pred_L1）、双予測（Pred_BI）が利用可能である。Ｌ０予測（Pred_L0）はＬ０で管理されている参照ピクチャを参照するインター予測であり、Ｌ１予測（Pred_L1）はＬ１で管理されている参照ピクチャを参照するインター予測である。双予測（Pred_BI）はＬ０予測とＬ１予測が共に行われ、Ｌ０とＬ１のそれぞれで管理されている１つずつの参照ピクチャを参照するインター予測である。Ｌ０予測、Ｌ１予測、双予測を特定する情報を、インター予測モードと定義する。以降の処理において出力に添え字ＬＸが付いている定数、変数に関しては、Ｌ０、Ｌ１ごとに処理が行われることを前提とする。
【００１３】
＜予測動きベクトルモード＞
予測動きベクトルモードは、予測動きベクトルを特定するためのインデックス、差分動きベクトル、インター予測モード、参照インデックスを伝送し、処理対象ブロックのインター予測情報を決定するモードである。予測動きベクトルは、処理対象ブロックに隣接する処理済みブロック、または処理済み画像に属するブロックで処理対象ブロックと同一位置またはその付近（近傍）に位置するブロックから導出した予測動きベクトル候補と、予測動きベクトルを特定するためのインデックスから導出する。
【００１４】
＜マージモード＞
マージモードは、差分動きベクトル、参照インデックスを伝送せずに、処理対象ブロックに隣接する処理済みブロック、または処理済み画像に属するブロックで処理対象ブロックと同一位置またはその付近（近傍）に位置するブロックのインター予測情報から、処理対象ブロックのインター予測情報を導出するモードである。
【００１５】
処理対象ブロックに隣接する処理済みブロック、およびその処理済みブロックのインター予測情報を空間マージ候補と定義する。処理済み画像に属するブロックで処理対象ブロックと同一位置またはその付近（近傍）に位置するブロック、およびそのブロックのインター予測情報から導出されるインター予測情報を時間マージ候補と定義する。各マージ候補はマージ候補リストに登録され、マージインデックスにより処理対象ブロックの予測で使用するマージ候補を特定する。
【００１６】
＜隣接ブロック＞
図１１は、予測動きベクトルモード、マージモードで、インター予測情報を導出するために参照する参照ブロックを説明する図である。Ａ０，Ａ１，Ａ２，Ｂ０，Ｂ１，Ｂ２，Ｂ３は、処理対象ブロックに隣接する処理済みブロックである。Ｔ０は、処理済画像に属するブロックで、処理対象画像の処理対象符号化ブロックと同一位置またはその付近（近傍）に位置するブロックである。
【００１７】
Ａ１，Ａ２は、処理対象符号化ブロックの左側に位置し、処理対象符号化ブロックに隣接するブロックである。Ｂ１，Ｂ３は、処理対象符号化ブロックの上側に位置し、処理対象符号化ブロックに隣接するブロックである。Ａ０，Ｂ０，Ｂ２はそれぞれ、処理対象符号化ブロックの左下、右上、左上に位置するブロックである。
【００１８】
予測動きベクトルモード、マージモードにおいて隣接ブロックをどのように扱うかの詳細については後述する。
【００１９】
＜アフィン変換動き補償＞
アフィン変換動き補償は、符号化ブロックを所定単位のサブブロックに分割し、各サブブロックに対して個別に動きベクトルを設定して動き補償を行うものである。各サブブロックの動きベクトルは、処理対象ブロックに隣接する処理済みブロック、または処理済み画像に属するブロックで処理対象ブロックと同一位置またはその付近（近傍）に位置するブロックのインター予測情報から導出する１つ以上の制御点に基づき導出する。本実施の形態では、サブブロックのサイズを４ｘ４画素とするが、サブブロックのサイズはこれに限定されるものではないし、画素単位で動きベクトルを導出してもよい。
【００２０】
図１４に、制御点が２つの場合のアフィン変換動き補償の例を示す。この場合、２つの制御点が水平方向成分、垂直方向成分の２つのパラメータを有するため、制御点が２つの場合のアフィン変換を、４パラメータアフィン変換と呼称する。図１４のＣＰ１、ＣＰ２が制御点である。図１５に、制御点が３つの場合のアフィン変換動き補償の例を示す。この場合、３つの制御点が水平方向成分、垂直方向成分の２つのパラメータを有するため、制御点が３つの場合のアフィン変換を、６パラメータアフィン変換と呼称する。図１５のＣＰ１、ＣＰ２、ＣＰ３が制御点である。
【００２１】
アフィン変換動き補償は、予測動きベクトルモードおよびマージモードのいずれのモードにおいても利用可能である。予測動きベクトルモードでアフィン変換動き補償を適用するモードをサブブロック予測動きベクトルモードと定義し、マージモードでアフィン変換動き補償を適用するモードをサブブロックマージモードと定義する。
【００２２】
＜インター予測のシンタックス＞
図１２、図１３を用いて、インター予測に関するシンタックスを説明する。図１２のmerge_flagは、処理対象符号化ブロックをマージモードとするか、予測動きベクトルモードとするかを示すフラグである。merge_affine_flagは、マージモードの処理対象符号化ブロックでサブブロックマージモードを適用するか否かを示すフラグである。inter_affine_flagは、予測動きベクトルモードの処理対象符号化ブロックでサブブロック予測動きベクトルモードを適用するか否かを示すフラグである。cu_affine_type_flagは、サブブロック予測動きベクトルモードにおいて、制御点の数を決定するためのフラグである。図１３に各シンタックスエレメントの値と、それに対応する予測方法を示す。merge_flag=1,merge_affine_flag=0は、サブブロックマージでないマージモードである、通常マージモードに対応する。merge_flag=1,merge_affine_flag=1は、サブブロックマージモードに対応する。merge_flag=0,inter_affine_flag=0は、サブブロック予測動きベクトルモードでない予測動きベクトルマージである、通常予測動きベクトルモードに対応する。merge_flag=0,inter_affine_flag=1は、サブブロック予測動きベクトルモードに対応する。merge_flag=0,inter_affine_flag=1の場合は、さらにcu_affine_type_flagを伝送し、制御点の数を決定する。
【００２３】
＜ＰＯＣ＞
ＰＯＣ（Picture Order Count）は符号化されるピクチャに関連付けられる変数とし、ピクチャの出力順序で１ずつ増加する値が設定される。ＰＯＣの値によって、同じピクチャであるかを判別したり、出力順序でのピクチャ間の前後関係を判別したり、ピクチャ間の距離を導出したりすることができる。例えば、２つのピクチャのＰＯＣが同じ値を持つ場合、同一のピクチャであると判断できる。２つのピクチャのＰＯＣが違う値を持つ場合、ＰＯＣの値が小さいピクチャのほうが、先に出力されるピクチャであると判断でき、２つのピクチャのＰＯＣの差が時間軸方向でのピクチャ間距離を示す。
【００２４】
（第１の実施の形態）
本発明の第１の実施の形態に係る画像符号化装置１００及び画像復号装置２００について説明する。
【００２５】
図１は、第１の実施の形態に係る画像符号化装置１００のブロック図である。実施の形態の動画像符号化装置は、画像符号化装置１００、ブロック分割部１０１、インター予測部１０２、イントラ予測部１０３、復号画像メモリ１０４、予測方法決定部１０５、残差信号生成部１０６、直交変換・量子化部１０７、ビット列符号化部１０８、逆量子化・逆直交変換部１０９、復号画像信号重畳部１１０、および符号化情報格納メモリ１１１を備える。
【００２６】
ブロック分割部１０１は、入力した画像を再帰的に分割して、符号化ブロックを生成する。ブロック分割部１０１は、分割対象となるブロックを水平方向と垂直方向にそれぞれ分割する４分割部と、分割対象となるブロックを水平方向または垂直方向のいずれかに分割する２−３分割部を含む。生成した処理対象符号化ブロックの画像信号を、インター予測部１０２、イントラ予測部１０３および残差信号生成部１０６に供給する。また、決定した再帰分割構造を示す情報をビット列符号化部１０８に供給する。ブロック分割部１０１の詳細な動作は後述する。
【００２７】
インター予測部１０２は、処理対象符号化ブロックのインター予測を行う。符号化情報格納メモリに格納されているインター予測情報、復号画像メモリ１０４に格納されている復号済みの画像信号から複数のインター予測情報の候補を導出し、複数の候補の中から適したインター予測モードを選択し、選択されたインター予測モード、及び選択されたインター予測モードに応じた予測画像信号を予測方法決定部１０５に供給する。インター予測部１０２の詳細な構成と動作は後述する。
【００２８】
イントラ予測部１０３は、処理対象符号化ブロックのイントラ予測を行う。復号画像メモリ１０４に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、複数のイントラ予測モードの中から適したイントラ予測モードを選択し、選択されたイントラ予測モード、及び選択されたイントラ予測モードに応じた予測画像信号を予測方法決定部１０５に供給する。図１０にイントラ予測の例を示す。図１０（ａ）は、イントラ予測の予測方向とイントラ予測モード番号の対応を示したものである。例えば、イントラ予測モード５０は、垂直方向に画素をコピーすることによりイントラ予測画像を生成する。イントラ予測モード１は、ＤＣモードであり、処理対象ブロックのすべての画素値を参照画素の平均値とするモードである。イントラ予測モード０はＰｌａｎａｒモードであり、垂直方向・水平方向の参照画素から２次元的なイントラ予測画像を作成するモードである。図１０（ｂ）は、イントラ予測モード４０の場合のイントラ予測画像を生成する例である。処理対象ブロックの各画素に対し、イントラ予測モードの示す方向の参照画素の値をコピーする。イントラ予測モードの参照画素が整数位置でない場合には、周辺の整数位置の参照画素値から補間により参照画素値を決定する。
【００２９】
復号画像メモリ１０４は、復号画像信号重畳部１１０で生成した復号画像を格納する。復号画像メモリに格納されている復号画像は、インター予測部１０２、イントラ予測部１０３に供給する。
【００３０】
予測方法決定部１０５は、各予測に対して、符号化情報及び残差信号の符号量、予測画像信号と処理対象画像信号との間の歪量等を用いて評価することにより、最適な予測モード（インター予測またはイントラ予測）を決定する。インター予測のマージモードの場合は、マージインデックス、サブブロックマージモードか否かを示す情報（サブブロックマージフラグ）の符号化情報をビット列符号化部１０８に供給し、インター予測の予測動きベクトルモードの場合はインター予測モード、予測動きベクトルインデックス、Ｌ０、Ｌ１の参照インデックス、差分動きベクトル、サブブロックモードか否かを示す情報（サブブロック予測動きベクトルフラグ）等の符号化情報をビット列符号化部１０８に供給する。決定した符号化情報を符号化情報格納メモリ１１１に供給する。
【００３１】
残差信号生成部１０６は、処理対象の画像信号から予測画像信号を減ずることにより残差信号を生成し、直交変換・量子化部１０７に供給する。
【００３２】
直交変換・量子化部１０７は、残差信号に対して量子化パラメータに応じて直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、ビット列符号化部１０８と逆量子化・逆直交変換部１０９に供給する。
【００３３】
ビット列符号化部１０８は、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報に加えて、符号化ブロック毎に予測方法決定部１０５によって決定された予測方法に応じた符号化情報を符号化する。具体的には、符号化ブロック毎の予測モードPredMode、分割モードPartMode、インター予測（PRED_INTER）の場合、マージモードか否かを判別するフラグ、サブブロックマージフラグ、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトルに関する情報、サブブロック予測動きベクトルフラグ等の符号化情報を後述する規定のシンタックス規則に従って符号化し、第１の符号化ビット列を生成する。また、ビット列符号化部１０８は、直交変換及び量子化された残差信号を規定のシンタックス規則に従ってエントロピー符号化して第２の符号化ビット列を生成する。第１の符号化ビット列と第２の符号化ビット列を規定のシンタックス規則に従って多重化し、ビットストリームを出力する。
【００３４】
逆量子化・逆直交変換部１０９は、直交変換・量子化部１０７から供給された直交変換・量子化された残差信号を逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部１１０に供給する。
【００３５】
復号画像信号重畳部１１０は、予測方法決定部１０５による決定に応じた予測画像信号と逆量子化・逆直交変換部１０９で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、復号画像メモリ１０４に格納する。なお、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施した後、復号画像メモリ１０４に格納してもよい。
【００３６】
符号化情報格納メモリ１１１は、予測方法決定部１０５で決定した、予測モード（インター予測またはイントラ予測）等の符号化情報を格納する。符号化情報格納メモリ１１１が格納する符号化情報は、インター予測の場合は、決定した動きベクトル、参照リスト、参照インデックスに加え、インター予測のマージモードの場合は、マージインデックス、サブブロックマージモードか否かを示す情報（サブブロックマージフラグ）の符号化情報、インター予測の予測動きベクトルモードの場合はインター予測モード、予測動きベクトルインデックス、Ｌ０、Ｌ１の参照インデックス、差分動きベクトル、サブブロックモードか否かを示す情報（サブブロック予測動きベクトルフラグ）、イントラ予測の場合は、決定したイントラ予測モード等である。符号化情報格納メモリ１１１で管理される履歴候補リストの構築については後述する。
【００３７】
図２は図１の動画像符号化装置に対応した本発明の実施の形態に係る動画像復号装置の構成を示すブロックである。実施の形態の動画像復号装置は、ビット列復号部２０１、ブロック分割部２０２、インター予測部２０３、イントラ予測部２０４、符号化情報格納メモリ２０５、逆量子化・逆直交変換部２０６、復号画像信号重畳部２０７、および復号画像メモリ２０８を備える。
【００３８】
図２の動画像復号装置の復号処理は、図１の動画像符号化装置の内部に設けられている復号処理に対応するものであるから、図２の符号化情報格納メモリ２０５、逆量子化・逆直交変換部２０６、復号画像信号重畳部２０７、および復号画像メモリ２０８の各構成は、図１の動画像符号化装置の逆量子化・逆直交変換部１０９、復号画像信号重畳部１１０、符号化情報格納メモリ１１１、および復号画像メモリ１０４の各構成とそれぞれ対応する機能を有する。
【００３９】
ビット列復号部２０１に供給されるビットストリームは規定のシンタックスの規則に従って分離する。分離された第１の符号化ビット列を復号し、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報、及び、符号化ブロック単位の符号化情報を得る。具体的には、符号化ブロック単位でインター予測（PRED_INTER）かイントラ予測（PRED_INTRA）かを判別する予測モードPredMode、分割モードPartMode、インター予測（PRED_INTER）の場合、マージモードか否かを判別するフラグ、マージモードの場合はマージインデックス、サブブロックマージフラグ、予測動きベクトルモードである場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトル、サブブロック予測動きベクトルフラグ等に関する符号化情報を後述する規定のシンタックス規則に従って復号し、符号化情報をインター予測部２０３またはイントラ予測部２０４、および符号化情報格納メモリ２０５に供給する。分離した第２の符号化ビット列を復号して直交変換・量子化された残差信号を算出し、直交変換・量子化された残差信号を逆量子化・逆直交変換部２０６に供給する。
【００４０】
インター予測部２０３は、処理対象の符号化ブロックの予測モードPredModeがインター予測（PRED_INTER）で予測動きベクトルモードである時に、符号化情報格納メモリ２０５に記憶されている既に復号された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を導出して後述する予測動きベクトル候補リストに登録し、予測動きベクトル候補リストに登録された複数の予測動きベクトルの候補の中から、ビット列復号部２０１で復号され供給される予測動きベクトルインデックスに応じた予測動きベクトルを選択し、ビット列復号部２０１で復号された差分ベクトルと選択された予測動きベクトルから動きベクトルを算出し、他の符号化情報とともに符号化情報格納メモリ２０５に格納する。ここで供給・格納する符号化ブロックの符号化情報は、予測モードPredMode、分割モードPartMode、Ｌ０予測、及びＬ１予測を利用するか否かを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、Ｌ０、Ｌ１の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、Ｌ０、Ｌ１の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等である。ここで、xP、yPはピクチャ内での符号化ブロックの左上の画素の位置を示すインデックスである。予測モードPredModeがインター予測（MODE_INTER）で、インター予測モードがＬ０予測（Pred_L0）の場合、Ｌ０予測を利用するか否かを示すフラグpredFlagL0は１, Ｌ１予測を利用するか否かを示すフラグpredFlagL1は０である。インター予測モードがＬ１予測（Pred_L1）の場合、Ｌ０予測を利用するか否かを示すフラグpredFlagL0は０, Ｌ１予測を利用するか否かを示すフラグpredFlagL1は１である。インター予測モードが双予測（Pred_BI）の場合、Ｌ０予測を利用するか否かを示すフラグpredFlagL0、Ｌ１予測を利用するか否かを示すフラグpredFlagL1は共に１である。さらに、処理対象の符号化ブロックの予測モードPredModeがインター予測（PRED_INTER）でマージモードの時に、マージ候補を導出する。符号化情報格納メモリ２０５に記憶されている既に復号された符号化ブロックの符号化情報を用いて、複数のマージの候補を導出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中からビット列復号部２０１で復号され供給されるマージインデックスに対応したマージ候補を選択し、選択されたマージ候補のＬ０予測、及びＬ１予測を利用するか否かを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、Ｌ０、Ｌ１の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、Ｌ０、Ｌ１の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報を符号化情報格納メモリ２０５に格納する。ここで、xP、yPはピクチャ内での符号化ブロックの左上の画素の位置を示すインデックスである。インター予測部の詳細な構成と動作は後述する。
【００４１】
イントラ予測部２０４は、処理対象の符号化ブロックの予測モードPredModeがイントラ予測（PRED_INTRA）の時に、イントラ予測を行う。ビット列復号部２０１で復号された符号化情報にはイントラ予測モードが含まれており、イントラ予測モードに応じて、復号画像メモリ２０８に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、予測画像信号を復号画像信号重畳部２０７に供給する。イントラ予測部２０４は、画像符号化装置１００のイントラ予測部１０３に対応するものであるから、イントラ予測部１０３と同様の処理を行う。
【００４２】
逆量子化・逆直交変換部２０６は、ビット列復号部２０１で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
【００４３】
復号画像信号重畳部２０７は、インター予測部２０３でインター予測された予測画像信号、またはイントラ予測部２０４でイントラ予測された予測画像信号と、逆量子化・逆直交変換部２０６により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、復号画像メモリ２０８に格納する。復号画像メモリ２０８に格納する際には、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施した後、復号画像メモリ２０８に格納してもよい。
【００４４】
次に、画像符号化装置１００におけるブロック分割部１０１の動作について説明する。図３は、画像をツリーブロックに分割し、各ツリーブロックをさらに分割する動作を示すフローチャートである。まず、入力された画像を、所定サイズのツリーブロックに分割する（ステップＳ１００１）。各ツリーブロックについては、所定の順序、すなわちラスタスキャン順に走査し（ステップＳ１００２）、処理対象のツリーブロックの内部を分割する（ステップＳ１００３）。
【００４５】
図７は、ステップＳ１００３の分割処理の詳細動作を示すフローチャートである。まず、処理対象のブロックを４分割するか否かを判断する（ステップＳ１１０１）。
【００４６】
処理対象ブロックを４分割すると判断した場合は、処理対象ブロックを４分割する（ステップＳ１１０２）。処理対象ブロックを分割した各ブロックについて、Ｚスキャン順、すなわち左上、右上、左下、右下の順に走査する（ステップＳ１１０３）。図５は、Ｚスキャン順の例であり、図６の６０１は、処理対象ブロックを４分割した例である。図６の６０１の番号０〜３は処理の順番を示したものである。そしてステップＳ１１０１で分割した各ブロックについて、図７のフローチャートを再帰的に呼び出す。
【００４７】
処理対象ブロックを４分割しないと判断した場合は、２−３分割を行う（ステップＳ１１０５）。
【００４８】
図８は、ステップＳ１１０５の２−３分割処理の詳細動作を示すフローチャートである。まず、処理対象のブロックを２−３分割するか否か、すなわち２分割または３分割の何れかを行うか否かを判断する（ステップＳ１２０１）。
【００４９】
処理対象ブロックを２−３分割すると判断しない場合、すなわち分割しないと判断した場合は、分割を終了し（ステップＳ１２１１）、上位階層のブロックに戻る。
【００５０】
処理対象のブロックを２−３分割すると判断した場合は、さらに処理対象ブロックを２分割するか否か（ステップＳ１２０２）を判断する。
【００５１】
処理対象ブロックを２分割すると判断した場合は、処理対象ブロックを垂直方向に分割するか否かを判断し（ステップＳ１２０３）、その結果に基づき、処理対象ブロックを垂直方向に分割する（ステップＳ１２０４）か、処理対象ブロックを水平方向に分割する（ステップＳ１２０５）。ステップＳ１２０４の結果、処理対象ブロックは、図６０２に示す通り、垂直方向２分割に分割され、ステップＳ１２０５の結果、処理対象ブロックは、図６０４に示す通り、水平方向２分割に分割される。
【００５２】
ステップＳ１２０２において、処理対象のブロックを２分割すると判断しなかった場合、すなわち３分割すると判断した場合は、処理対象ブロックを垂直方向に分割するか否かを判断し（ステップＳ１２０６）、その結果に基づき、処理対象ブロックを垂直方向に分割する（ステップＳ１２０７）か、処理対象ブロックを水平方向に分割する（ステップＳ１２０８）。ステップＳ１２０７の結果、処理対象ブロックは、図６０３に示す通り、垂直方向３分割に分割され、ステップＳ１２０８の結果、処理対象ブロックは、図６０５に示す通り、水平方向３分割に分割される。
【００５３】
ステップＳ１２０４からステップＳ１２０５のいずれかを実行後、処理対象ブロックを分割した各ブロックについて、左から右、上から下の順に走査する（ステップＳ１２０９）。図６の６０２から６０５の番号０〜３は処理の順番を示したものである。分割した各ブロックについて、図８のフローチャートを再帰的に呼び出す。
【００５４】
ここで説明した再帰的なブロック分割は、分割する回数、または、処理対象のブロックのサイズ等により、分割要否を制限してもよい。分割要否を制限する情報は、符号化装置と復号化装置の間で予め取り決めを行うことで、情報の伝達を行わない構成で実現してもよいし、符号化装置が分割要否を制限する情報を決定し、符号化ビット列に記録することにより、復号化装置に伝達する構成で実現してもよい。
【００５５】
ここで、あるブロックを分割した場合、分割前のブロックを親ブロックと呼び、分割後の各ブロックを子ブロックと呼ぶ。
【００５６】
次に、画像復号装置２００におけるブロック分割部２０２の動作について説明する。ブロック分割部２０２は、画像符号化装置１００のブロック分割部１０１と同様の処理手順でツリーブロックを分割するものである。ただし、画像符号化装置１００のブロック分割部１０１では、画像認識による最適形状の推定や歪レート最適化等最適化手法を適用し、最適なブロック分割の形状を決定するのに対し、画像復号装置２００におけるブロック分割部２０２は、符号化ビット列に記録されたブロック分割情報を復号することにより、ブロック分割形状を決定する点が異なる。
【００５７】
第１の実施の形態のブロック分割に関するシンタックス（符号化ビット列の構文規則）を図９に示す。coding_quadtree()はブロックの４分割処理にかかるシンタックスを表し、multi_type_tree()はブロックの２分割または３分割処理にかかるシンタックスを表す。qt_splitはブロックを４分割するか否かを示すフラグであり、ブロックを４分割する場合は、qt_split=1、４分割しない場合は、qt_split=0とする。４分割する場合(qt_split=1)、４分割した各ブロックについて、再帰的に４分割処理をする(coding_quadtree(0), coding_quadtree(1), coding_quadtree(2), coding_quadtree(3))。４分割しない場合(qt_split=0)は、multi_type_tree()に従い、後続の分割を決定する。mtt_splitは、さらに分割をするか否かを示すフラグである。さらに分割をする場合(mtt_split=1)、垂直方向に分割するか水平方向に分割するかを示すフラグであるmtt_split_verticalと、２分割するか３分割するかを決定するフラグであるmtt_split_binaryを参照する。mtt_split_vertical=1は、垂直方向に分割することを示し、mtt_split_vertical=0は、水平方向に分割することを示す。mtt_split_binary=1は、２分割することを示し、mtt_split_binary=0は３分割することを示す。mtt_split=0となるまで、再帰的にmulti_type_treeを呼び出すことにより、階層的なブロック分割を行う。
【００５８】
＜インター予測＞
実施の形態に係るインター予測方法は、図１の動画像符号化装置のインター予測部１０２および図２の動画像復号装置のインター予測部２０３において実施される。
【００５９】
実施の形態によるインター予測方法について、図面を用いて説明する。インター予測方法は符号化ブロック単位で符号化及び復号の処理の何れでも実施される。
【００６０】
＜符号化側のインター予測部１０２の説明＞
図１６は図１の動画像符号化装置のインター予測部１０２の詳細な構成を示す図である。通常予測動きベクトルモード導出部３０１は複数の通常予測動きベクトル候補を導出して予測動きベクトルを選択し、検出した動きベクトルとの差分ベクトルを算出する。検出されたインター予測モード、参照インデックス、動きベクトル、算出された差分ベクトルが通常予測動きベクトルモードのインター予測情報となる。このインター予測情報がインター予測モード判定部３０５に供給される。通常予測動きベクトルモード導出部３０１の詳細な構成と処理については後述する。
【００６１】
通常マージモード導出部３０２では複数の通常マージ候補を導出して通常マージ候補を選択し、通常マージモードのインター予測情報を得る。このインター予測情報がインター予測モード判定部３０５に供給される。通常マージモード導出部３０２の詳細な構成と処理については後述する。
【００６２】
サブブロック予測動きベクトルモード導出部３０３では複数のサブブロック予測動きベクトル候補を導出してサブブロック予測動きベクトルを選択し、検出した動きベクトルとの差分ベクトルを算出する。検出されたインター予測モード、参照インデックス、動きベクトル、算出された差分ベクトルが通常予測動きベクトルモードのインター予測情報となる。このインター予測情報がインター予測モード判定部３０５に供給される。サブブロック予測動きベクトルモード導出部３０３の詳細な構成と処理については後述する。
【００６３】
サブブロックマージモード導出部３０４では複数のサブブロックマージ候補を導出してサブブロックマージ候補を選択し、サブブロックマージモードのインター予測情報を得る。このインター予測情報がインター予測モード判定部３０５に供給される。サブブロックマージモード導出部３０４の詳細な構成と処理については後述する。
【００６４】
インター予測モード判定部３０５では通常予測動きベクトルモード導出部３０１、通常マージモード導出部３０２、サブブロック予測動きベクトルモード導出部３０３、サブブロックマージモード導出部３０４から供給されるインター予測情報に基づいて、インター予測モードを判定する。インター予測モード判定部の３０５から判定結果に応じたインター予測情報が動き補償予測部３０６に供給される。
【００６５】
動き補償予測部３０６では判定されたインター予測情報に基づいて、復号画像メモリ１０４に格納されている参照画像信号に対してインター予測を行う。詳細な構成と処理については後述する。
【００６６】
＜復号側のインター予測部２０３の説明＞
図２２は図２の動画像復号装置のインター予測部２０３の詳細な構成を示す図である。
【００６７】
通常予測動きベクトルモード導出部４０１は複数の通常予測動きベクトル候補を導出して予測動きベクトルを選択し、検出した動きベクトルとの差分ベクトルを算出する。検出されたインター予測モード、参照インデックス、動きベクトル、差分ベクトルが通常予測動きベクトルモードのインター予測情報となる。このインター予測情報がスイッチ４０８を経由して動き補償予測部４０６に供給される。通常予測動きベクトルモード導出部４０１の詳細な構成と処理については後述する。
【００６８】
通常マージモード導出部４０２では複数の通常マージ候補を導出して通常マージ候補を選択し、通常マージモードのインター予測情報を得る。このインター予測情報がスイッチ４０８を経由して動き補償予測部４０６に供給される。通常マージモード導出部４０２の詳細な構成と処理については後述する。
【００６９】
サブブロック予測動きベクトルモード導出部４０３では複数のサブブロック予測動きベクトル候補を導出してサブブロック予測動きベクトルを選択し、検出した動きベクトルとの差分ベクトルを算出する。検出されたインター予測モード、参照インデックス、動きベクトル、算出された差分ベクトルが通常予測動きベクトルモードのインター予測情報となる。このインター予測情報がスイッチ４０８を経由して動き補償予測部４０６に供給される。サブブロック予測動きベクトルモード導出部４０３の詳細な構成と処理については後述する。
【００７０】
サブブロックマージモード導出部４０４では複数のサブブロックマージ候補を導出してサブブロックマージ候補を選択し、サブブロックマージモードのインター予測情報を得る。このインター予測情報がスイッチ４０８を経由して動き補償予測部４０６に供給される。サブブロックマージモード導出部４０４の詳細な構成と処理については後述する。
【００７１】
動き補償予測部４０６では判定されたインター予測情報に基づいて、復号画像メモリ２０８に格納されている参照画像信号に対してインター予測を行う。詳細な構成と処理については符号化側と同様である。
【００７２】
＜通常予測動きベクトルモード導出部（通常AMVP）＞
図１７の通常予測動きベクトルモード導出部３０１は、空間予測動きベクトル候補導出部３２１、時間予測動きベクトル候補導出部３２２、履歴予測動きベクトル候補導出部３２３、予測動きベクトル候補補充部３２５、通常動きベクトル検出部３２６、予測動きベクトル候補選択部３２７、動きベクトル減算部３２８を含む。
【００７３】
図２３の通常予測動きベクトルモード導出部４０１は、空間予測動きベクトル候補導出部４２１、時間予測動きベクトル候補導出部４２２、履歴予測動きベクトル候補導出部４２３、予測動きベクトル候補補充部４２５、予測動きベクトル候補選択部４２６、動きベクトル加算部４２７を含む。
【００７４】
符号化側の通常予測動きベクトルモード導出部３０１および復号側の通常予測動きベクトルモード導出部４０１の処理手順について、それぞれ図１９、図２５のフローチャートを用いて説明する。図１９は符号化側の通常動きベクトルモード導出部３０１による通常予測動きベクトルモード導出処理手順を示すフローチャートであり、図２５は復号側の通常動きベクトルモード導出部４０１による通常予測動きベクトルモード導出処理手順を示すフローチャートである。
【００７５】
＜通常予測動きベクトルモード導出部（通常AMVP）：符号化側の説明＞
図１９を参照して符号化側の通常予測動きベクトルモード導出処理手順を説明する。図１９の処理手順の説明において、明細書の動きベクトルという用語と、図１９の通常動きベクトルという用語は対応するものとする。  まず、通常動きベクトル検出部３２６でインター予測モードおよび参照インデックス毎に通常動きベクトルを検出する（図１９のステップＳ１００）。
【００７６】
続いて、空間予測動きベクトル候補導出部３２１、時間予測動きベクトル候補導出部３２２、履歴予測動きベクトル候補導出部３２３、予測動きベクトル候補補充部３２５、予測動きベクトル候補選択部３２７、動きベクトル減算部３２８で、通常予測動きベクトルモードのインター予測で用いる動きベクトルの差分動きベクトルをＬ０、Ｌ１毎にそれぞれ算出する（図１９のステップＳ１０１〜Ｓ１０６）。具体的には処理対象ブロックの予測モードPredModeがインター予測（MODE_INTER）で、インター予測モードがＬ０予測（Pred_L0）の場合、Ｌ０の予測動きベクトル候補リストmvpListL0を算出して、予測動きベクトルmvpL0を選択し、Ｌ０の動きベクトルmvL0の差分動きベクトルmvdL0を算出する。処理対象ブロックのインター予測モードがＬ１予測（Pred_L1）の場合、Ｌ１の予測動きベクトル候補リストmvpListL1を算出して、予測動きベクトルmvpL1を選択し、Ｌ１の動きベクトルmvL1の差分動きベクトルmvdL1を算出する。処理対象ブロックのインター予測モードが双予測（Pred_BI）の場合、Ｌ０予測とＬ１予測が共に行われ、Ｌ０の予測動きベクトル候補リストmvpListL0を算出して、Ｌ０の予測動きベクトルmvpL0を選択し、Ｌ０の動きベクトルmvL0の差分動きベクトルmvdL0を算出するとともに、Ｌ１の予測動きベクトル候補リストmvpListL1を算出して、Ｌ１の予測動きベクトルmvpL1を算出し、Ｌ１の動きベクトルmvL1の差分動きベクトルmvdL1をそれぞれ算出する。
【００７７】
Ｌ０、Ｌ１それぞれについて、差分動きベクトル算出処理を行うが、Ｌ０、Ｌ１ともに共通の処理となる。したがって、以下の説明においてはＬ０、Ｌ１を共通のＬＸとして表す。Ｌ０の差分動きベクトルを算出する処理ではＸが０であり、Ｌ１の差分動きベクトルを算出する処理ではＸが１である。また、ＬＸの差分動きベクトルを算出する処理中に、ＬＸではなく、もう一方のリストの情報を参照する場合、もう一方のリストをＬＹとして表す。
【００７８】
ＬＸの動きベクトルmvLXを使用する場合（図１９のステップＳ１０２：ＹＥＳ）、ＬＸの予測動きベクトルの候補を算出してＬＸの予測動きベクトル候補リストmvpListLXを構築する（図１９のステップＳ１０３）。通常予測動きベクトルモード導出部３０１の中の空間予測動きベクトル候補導出部３２１、時間予測動きベクトル候補導出部３２２、履歴予測動きベクトル候補導出部３２３、予測動きベクトル候補補充部３２５で複数の予測動きベクトルの候補を導出して予測動きベクトル候補リストmvpListLXを構築する。図１９のステップＳ１０３の詳細な処理手順については図２０のフローチャートを用いて後述する。
【００７９】
続いて、予測動きベクトル候補選択部３２７により、ＬＸの予測動きベクトル候補リストmvpListLXからＬＸの予測動きベクトルmvpLXを選択する（図１９のステップＳ１０４）。動きベクトルmvLXと予測動きベクトル候補リストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分であるそれぞれの差分動きベクトルを算出する。それら差分動きベクトルを符号化したときの符号量を予測動きベクトル候補リストmvpListLXの要素ごとに算出する。そして、予測動きベクトル候補リストmvpListLXに登録された各要素の中で、予測動きベクトルの候補毎の符号量が最小となる予測動きベクトルの候補mvpListLX[i]を予測動きベクトルmvpLXとして選択し、そのインデックスiを取得する。予測動きベクトル候補リストmvpListLXの中で最小の発生符号量となる予測動きベクトルの候補が複数存在する場合には、予測動きベクトル候補リストmvpListLXの中のインデックスiが小さい番号で表される予測動きベクトルの候補mvpListLX[i]を最適予測動きベクトルmvpLXとして選択し、そのインデックスiを取得する。
【００８０】
続いて、動きベクトル減算部３２８で、ＬＸの動きベクトルmvLXから選択されたＬＸの予測動きベクトルmvpLXを減算し、
mvdLX = mvLX - mvpLX
としてＬＸの差分動きベクトルmvdLXを算出する（図１９のステップＳ１０５）。
【００８１】
＜通常予測動きベクトルモード導出部（通常AMVP）：復号側の説明＞
次に、図２５を参照して復号側の通常予測動きベクトルモード処理手順を説明する。復号側では、空間予測動きベクトル候補導出部４２１、時間予測動きベクトル候補導出部４２２、履歴予測動きベクトル候補導出部４２３、予測動きベクトル候補補充部４２５で、通常予測動きベクトルモードのインター予測で用いる動きベクトルをＬ０，Ｌ１毎にそれぞれ算出する（図２５のステップＳ２０１〜Ｓ２０６）。具体的には処理対象ブロックの予測モードPredModeがインター予測（MODE_INTER）で、処理対象ブロックのインター予測モードがＬ０予測（Pred_L0）の場合、Ｌ０の予測動きベクトル候補リストmvpListL0を算出して、予測動きベクトルmvpL0を選択し、Ｌ０の動きベクトルmvL0を算出する。処理対象ブロックのインター予測モードがＬ１予測（Pred_L1）の場合、Ｌ１の予測動きベクトル候補リストmvpListL1を算出して、予測動きベクトルmvpL1を選択し、Ｌ１の動きベクトルmvL1を算出する。処理対象ブロックのインター予測モードが双予測（Pred_BI）の場合、Ｌ０予測とＬ１予測が共に行われ、Ｌ０の予測動きベクトル候補リストmvpListL0を算出して、Ｌ０の予測動きベクトルmvpL0を選択し、Ｌ０の動きベクトルmvL0を算出するとともに、Ｌ１の予測動きベクトル候補リストmvpListL1を算出して、Ｌ１の予測動きベクトルmvpL1を算出し、Ｌ１の動きベクトルmvL1をそれぞれ算出する。
【００８２】
符号化側と同様に、復号側でもＬ０、Ｌ１それぞれについて、動きベクトル算出処理を行うが、Ｌ０、Ｌ１ともに共通の処理となる。したがって、以下の説明においてはＬ０、Ｌ１を共通のＬＸとして表す。ＬＸは処理対象の符号化ブロックのインター予測に用いるインター予測モードを表す。Ｌ０の動きベクトルを算出する処理ではＸが０であり、Ｌ１の動きベクトルを算出する処理ではＸが１である。また、ＬＸの動きベクトルを算出する処理中に、算出対象のＬＸと同じ参照リストではなく、もう一方の参照リストの情報を参照する場合、もう一方の参照リストをＬＹとして表す。
【００８３】
ＬＸの動きベクトルmvLXを使用する場合（図２５のステップＳ２０２：ＹＥＳ）、ＬＸの予測動きベクトルの候補を算出してＬＸの予測動きベクトル候補リストmvpListLXを構築する（図２５のステップＳ２０３）。通常予測動きベクトルモード導出部４０１の中の空間予測動きベクトル候補導出部４２１、時間予測動きベクトル候補導出部４２２、履歴予測動きベクトル候補導出部４２３、予測動きベクトル候補補充部４２５で複数の予測動きベクトルの候補を算出し、予測動きベクトル候補リストmvpListLXを構築する。図２５のステップＳ２０３の詳細な処理手順については図２０のフローチャートを用いて後述する。
【００８４】
続いて、予測動きベクトル候補選択部４２６で予測動きベクトル候補リストmvpListLXからビット列復号部２０１にて復号されて供給される予測動きベクトルのインデックスmvpIdxLXに対応する予測動きベクトルの候補mvpListLX[mvpIdxLX]を選択された予測動きベクトルmvpLXとして取り出す（図２５のステップＳ２０４）。
【００８５】
続いて、動きベクトル加算部４２７でビット列復号部２０１にて復号されて供給されるＬＸの差分動きベクトルmvdLXとＬＸの予測動きベクトルmvpLXを加算し、
mvLX = mvpLX + mvdLX
としてＬＸの動きベクトルmvLXを算出する（図２５のステップＳ２０５）。
【００８６】
＜通常予測動きベクトルモード導出部（通常AMVP）：動きベクトルの予測方法＞
図２０は本発明の実施の形態に係る動画像符号化装置の通常予測動きベクトルモード導出部３０１及び動画像復号装置の通常予測動きベクトルモード導出部４０１とで共通する機能を有する通常予測動きベクトルモード導出処理の処理手順を表すフローチャートである。
【００８７】
通常予測動きベクトルモード導出部３０１及び通常予測動きベクトルモード導出部４０１では、予測動きベクトル候補リストmvpListLXを備えている。予測動きベクトル候補リストmvpListLXはリスト構造を成し、予測動きベクトル候補リスト内部の所在を示す予測動きベクトルインデックスと、インデックスに対応する予測動きベクトル候補を要素として格納する記憶領域が設けられている。予測動きベクトルインデックスの数字は０から開始され、予測動きベクトル候補リストmvpListLXの記憶領域に、予測動きベクトル候補が格納される。本実施の形態においては、予測動きベクトル候補リストmvpListLXは少なくとも２個の予測動きベクトル候補（インター予測情報）を登録することができるものとする。さらに、予測動きベクトル候補リストmvpListLXに登録されている予測動きベクトル候補数を示す変数numCurrMvpCandに０を設定する。
【００８８】
空間予測動きベクトル候補導出部３２１及び４２１は、左側に隣接するブロックからの予測動きベクトルの候補を導出する。この処理では、左側に隣接するブロック（Ａ０またはＡ１）の予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXA、及び動きベクトルmvLXA、参照インデックスrefIdxAを導出し、mvLXAを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０１）。なお、Ｌ０のときＸは０、Ｌ１のときＸは１とする（以下同様）。続いて、空間予測動きベクトル候補導出部３２１及び４２１は、上側に隣接するブロック（Ｂ０，Ｂ１またはＢ２）からの予測動きベクトルの候補を導出する。この処理では、上側に隣接するブロックの予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXB、及び動きベクトルmvLXB、参照インデックスrefIdxBを導出し、mvLXAとmvLXBが等しくなければ、mvLXBを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０２）。図２０のステップＳ３０１とＳ３０２の処理は参照する隣接ブロックの位置と数が異なる点以外は共通であり、符号化ブロックの予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXN、及び動きベクトルmvLXN、参照インデックスrefIdxN（ＮはＡまたはＢ、以下同様）を導出する。
【００８９】
続いて、時間予測動きベクトル候補導出部３２２及び４２２は、現在の処理対象ピクチャとは時間が異なるピクチャにおける符号化ブロックからの予測動きベクトルの候補を導出する。この処理では、異なる時間のピクチャにおける符号化ブロックの予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXCol、及び動きベクトルmvLXCol、参照インデックスrefIdxCol、参照リストlistColを導出し、mvLXColを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０３）。このステップＳ３０３の導出処理手順を後ほど詳細に説明する。
【００９０】
なお、シーケンス（SPS)、ピクチャ（PPS）またはスライスの単位で時間予測動きベクトル候補導出部３２２及び４２２の処理を省略することができるものとする。
【００９１】
続いて、履歴予測動きベクトル候補導出部３２３及び４２３は履歴予測動きベクトル候補リストHmvpCandListに登録されている履歴予測動きベクトル候補を予測動きベクトル候補リストmvpListLXに追加する。（図２０のステップＳ３０４）。このステップＳ３０４の登録処理手順については図４１のフローチャートを用いて後ほど詳細に説明する。
【００９２】
続いて予測動きベクトル候補補充部３２５及び４２５は予測動きベクトル候補リストmvpListLXを満たすまで（０，０）等、所定の値の動きベクトルを追加する（図２０のＳ３０５）。
【００９３】
＜通常マージモード導出部（通常マージ）＞
図１８の通常マージモード導出部３０２は、空間マージ候補導出部３４１、時間マージ候補導出部３４２、平均マージ候補導出部３４４、履歴マージ候補導出部３４５、マージ候補補充部３４６、マージ候補選択部３４７を含む。
【００９４】
図２４の通常マージモード導出部４０２は、空間マージ候補導出部４４１、時間マージ候補導出部４４２、平均マージ候補導出部４４４、履歴マージ候補導出部４４５、マージ候補補充部４４６、マージ候補選択部４４７を含む。
【００９５】
図２１は本発明の実施の形態に係る動画像符号化装置の通常マージモード導出部３０２及び動画像復号装置の通常マージモード導出部４０２とで共通する機能を有する通常マージモード導出処理の手順を説明するフローチャートである。
【００９６】
以下、諸過程を順を追って説明する。なお、以下の説明においては特に断りのない限りスライスタイプslice_typeがＢスライスの場合について説明するが、Ｐスライスの場合にも適用できる。ただし、スライスタイプslice_typeがＰスライスの場合、インター予測モードとしてＬ０予測（Pred_L0）だけがあり、Ｌ１予測（Pred_L1）、双予測（Pred_BI）がないので、Ｌ１に纏わる処理を省略することができる。
【００９７】
通常マージモード導出部３０２及び通常マージモード導出部４０２では、マージ候補リストmergeCandListを備えている。マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は０から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスｉのマージ候補は、mergeCandList[i]で表すこととする。本実施の形態においては、マージ候補リストmergeCandListは少なくとも６個のマージ候補（インター予測情報）を登録することができるものとする。さらに、マージ候補リストmergeCandListに登録されているマージ候補数を示す変数numCurrMergeCandに０を設定する。
【００９８】
空間マージ候補導出部３４１及び空間マージ候補導出部４４１では、動画像符号化装置の符号化情報格納メモリ１１１または動画像復号装置の符号化情報格納メモリ２０５に格納されている符号化情報から、処理対象ブロックの左側と上側に隣接するブロックからの空間マージ候補Ａ，Ｂを導出して、導出された空間マージ候補をマージ候補リストmergeCandListに登録する（図２１のステップＳ４０１）。ここで、空間マージ候補Ａ，Ｂまたは時間マージ候補Ｃｏｌのいずれかを示すＮを定義する。ブロックＮのインター予測情報が空間マージ候補Ｎとして利用できるか否かを示すフラグavailableFlagN、空間マージ候補ＮのＬ０の参照インデックスrefIdxL0N及びＬ１の参照インデックスrefIdxL1N、Ｌ０予測が行われるか否かを示すＬ０予測フラグpredFlagL0NおよびＬ１予測が行われるか否かを示すＬ１予測フラグpredFlagL1N、Ｌ０の動きベクトルmvL0N、Ｌ１の動きベクトルmvL1Nを導出する。ただし、本実施の形態においては処理対象となる符号化ブロックを含むブロックに含まれる他の符号化ブロックを参照せずに、マージ候補を導出するので、処理対象の符号化ブロックを含むブロックに含まれる空間マージ候補は導出しない。
【００９９】
続いて、時間マージ候補導出部３４２及び時間マージ候補導出部４４２では、異なる時間のピクチャからの時間マージ候補を導出して、導出された時間マージ候補をマージ候補リストmergeCandListに登録する（図２１のステップＳ４０２）。時間マージ候補が利用できるか否かを示すフラグavailableFlagCol、時間マージ候補のＬ０予測が行われるか否かを示すＬ０予測フラグpredFlagL0ColおよびＬ１予測が行われるか否かを示すＬ１予測フラグpredFlagL1Col、及びＬ０の動きベクトルmvL0Col、Ｌ１の動きベクトルmvL1Colを導出する。ステップＳ４０２の詳細な処理手順については後ほど図５６を参照して詳細に説明する。
【０１００】
なお、シーケンス（SPS）、ピクチャ（PPS）またはスライスの単位で時間マージ候補導出部３４２及び時間マージ候補導出部４４２の処理を省略することができるものとする。
【０１０１】
続いて、履歴マージ候補導出部３４５及び履歴マージ候補導出部４４５では、履歴予測動きベクトル候補リストHmvpCandListに登録されている履歴予測動きベクトル候補をマージ候補リストmergeCandListに追加する（図２１のステップＳ４０３）。ステップＳ４０３の詳細な処理手順については図６２のフローチャートを用いて後ほど詳細に説明する。
【０１０２】
続いて、平均マージ候補導出部３４４及び平均マージ候補導出部４４４では、マージ候補リストmergeCandListから平均マージ候補を導出して、導出された平均マージ候補をマージ候補リストmergeCandListに登録する（図２１のステップＳ４０４）。ステップＳ４０４の詳細な処理手順については図４１のフローチャートを用いて後ほど詳細に説明する。
【０１０３】
続いて、マージ候補補充部３４６及びマージ候補補充部４４６では、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが、最大マージ候補数MaxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが最大マージ候補数MaxNumMergeCandを上限として追加マージ候補を導出して、マージ候補リストmergeCandListに登録する（図２１のステップＳ４０５）。最大マージ候補数MaxNumMergeCandを上限として、Ｐスライスでは、異なる参照インデックスで動きベクトルが（０，０）の値を持つ予測モードがＬ０予測（Pred_L0）のマージ候補を追加する。Ｂスライスでは、異なる参照インデックスで動きベクトルが（０，０）の値を持つ予測モードが双予測（Pred_BI）のマージ候補を追加する。
【０１０４】
続いて、マージ候補選択部３４７及びマージ候補選択部４４７では、マージ候補リストmergeCandList内に登録されているマージ候補からマージ候補を選択する。符号化側のマージ候補選択部３４７では、符号量とひずみ量を算出することによりマージ候補を選択し、選択されたマージ候補を示すマージインデックス、マージ候補のインター予測情報を動き補償予測部３０６に供給する。一方、復号側のマージ候補選択部４４７では、復号されたマージインデックスに基づいて、マージ候補を選択し、選択されたマージ候補を動き補償予測部４０６に供給する。
【０１０５】
通常マージモード導出部３０２及び通常マージモード導出部４０２は、ある符号化ブロックのサイズ（幅と高さの積）が３２未満の場合、その符号化ブロックの親ブロックにおいてマージ候補が導出される。そして、全ての子ブロックでは、親ブロックにおいて導出されたマージ候補を用いる。ただし、親ブロックのサイズが３２以上で、かつ画面内に収まっている場合に限る。
【０１０６】
＜サブブロック予測動きベクトルモード導出＞
サブブロック予測動きベクトルモード導出について説明する。
【０１０７】
図２６は、本実施の形態の符号化装置におけるサブブロック予測動きベクトルモード導出部３０３のブロック図である。
【０１０８】
まず、アフィン継承予測動きベクトル候補導出部３６１において、アフィン継承予測動きベクトル候補を導出する。アフィン継承予測動きベクトル候補導出の詳細については後述する。
【０１０９】
続いて、アフィン構築予測動きベクトル候補導出部３６２において、アフィン構築予測動きベクトル候補を導出する。アフィン構築予測動きベクトル候補導出の詳細については後述する。
【０１１０】
続いて、アフィン同一予測動きベクトル候補導出部３６３において、アフィン同一予測動きベクトル候補を導出する。アフィン同一予測動きベクトル候補導出の詳細については後述する。
【０１１１】
サブブロック動きベクトル検出部３６６は、サブブロック予測動きベクトルモードに適するサブブロック動きベクトルを検出し、検出したベクトルをサブブロック予測動きベクトル候補選択部３６７、差分演算部３６８に供給する。
【０１１２】
サブブロック予測動きベクトル候補選択部３６７は、アフィン継承予測動きベクトル候補導出部３６１、アフィン構築予測動きベクトル候補導出部３６２、アフィン同一予測動きベクトル候補導出部３６３において導出されたサブブロック予測動きベクトル候補の中から、サブブロック動きベクトル検出部３６６から供給された動きベクトルに基づいて、サブブロック予測動きベクトル候補を選択し、選択されたサブブロック予測動きベクトル候補に関する情報をインター予測モード判定部３０５、差分演算部３６８に供給する。
【０１１３】
差分演算部３６８は、サブブロック動きベクトル検出部３６６から供給された動きベクトルベクトルから、サブブロック予測動きベクトル候補選択部３６７で選択されたサブブロック予測動きベクトルを減算した差分予測動きベクトルを、インター予測モード判定部３０５に供給する。
【０１１４】
図２７は、本実施の形態の復号装置におけるサブブロック予測動きベクトルモード導出部４０３のブロック図である。
【０１１５】
まず、アフィン継承予測動きベクトル候補導出部４６１において、アフィン継承予測動きベクトル候補を導出する。アフィン継承予測動きベクトル候補導出部４６１の処理は本実施の形態の符号化装置におけるアフィン継承予測動きベクトル候補導出部３６１の処理と同一である。
【０１１６】
続いて、アフィン構築予測動きベクトル候補導出部４６２において、アフィン構築予測動きベクトル候補を導出する。アフィン構築予測動きベクトル候補導出部４６２の処理は本実施の形態の符号化装置におけるアフィン構築予測動きベクトル候補導出部３６２の処理と同一である。
【０１１７】
続いて、アフィン同一予測動きベクトル候補導出部４６３において、アフィン同一予測動きベクトル候補を導出する。アフィン同一予測動きベクトル候補導出部４６３の処理は本実施の形態の符号化装置におけるアフィン同一予測動きベクトル候補導出部３６３の処理と同一である。
【０１１８】
サブブロック予測動きベクトル候補選択部４６６は、アフィン継承予測動きベクトル候補導出部４６１、アフィン構築予測動きベクトル候補導出部４６２、アフィン同一予測動きベクトル候補導出部４６３において導出されたサブブロック予測動きベクトル候補の中から、符号化装置から伝送され復号される予測動きベクトルインデックスに基づいて、サブブロック予測動きベクトル候補を選択し、選択されたサブブロック予測動きベクトル候補に関する情報を動き補償予測部４０６、加算演算部４６７に供給する。
【０１１９】
加算演算部４６７は、サブブロック予測動きベクトル候補選択部４６６で選択されたサブブロック予測動きベクトルに、符号化装置から伝送され復号される差分動きベクトルを加算して生成した動きベクトルを動き補償予測部４０６に供給する。
【０１２０】
本実施の形態では、アフィンモードのメモリバンド帯域を削減するため、サブブロック予測動きベクトルモードの双予測を禁止する。サブブロック予測動きベクトルモードは、処理対象ブロックのサイズによらず処理対象ブロック内をサブブロックに分割して動き補償を行うため、双予測を許容してしまうと、動き補償の参照画像をメモリから取得する際のメモリバンド帯域が増加してしまうためである。
【０１２１】
具体的には、サブブロック予測動きベクトルモードのインター予測モードを伝送する際に、単予測であるＬ０予測、及び、Ｌ１予測に制限する。なお、インター予測モードをＬ０予測、又は、Ｌ１予測のいずれかに制限することでも同様の効果が得られる。
【０１２２】
＜アフィン継承予測動きベクトル候補導出＞
アフィン継承予測動きベクトル候補導出部３６１について説明する。アフィン継承予測動きベクトル候補導出部４６１についてもアフィン継承予測動きベクトル候補導出部３６１と同様である。
【０１２３】
アフィン継承予測動きベクトル候補は、制御点の動きベクトル情報を継承する。
【０１２４】
図３０は、アフィン継承予測動きベクトル候補導出を説明する図である。
【０１２５】
アフィン継承予測動きベクトル候補は、空間的に隣接する符号化済・復号済ブロックの有する制御点の動きベクトルを探索することで得られる。
【０１２６】
具体的には、処理対象のブロックの左側に隣接するブロック（Ａ０，Ａ１）と、処理対象のブロックの上側に隣接するブロック（Ｂ０，Ｂ１，Ｂ２）から、それぞれ最大１つのアフィンモードを探索し、アフィン継承予測動きベクトルとする。
【０１２７】
図３４は、アフィン継承予測動きベクトル候補導出のフローチャートである。
【０１２８】
まず、処理対象のブロックの左側に隣接するブロック（Ａ０，Ａ１）を左グループとし（ステップＳ３１０１）、Ａ０を含むブロックがアフィン変換動き補償を用いたブロック（アフィンモード）であるか否かを判断する（ステップＳ３１０２）。Ａ０がアフィンモードである場合（ステップＳ３１０２：ＹＥＳ）、Ａ０が使用したアフィンモードを取得し（ステップＳ３１０３）、上側に隣接するブロックの処理に移る。Ａ０がアフィンモードでない場合（ステップＳ３１０２：ＮＯ）、アフィン継承予測動きベクトル候補導出の対象をＡ０−＞Ａ１とし、Ａ１を含むブロックからアフィンモードの取得を試みる。
【０１２９】
続いて、処理対象のブロックの上側に隣接するブロック（Ｂ０，Ｂ１，Ｂ２）を上グループとし（ステップＳ３１０４）、Ｂ０を含むブロックがアフィンモードであるか否かを判断する（ステップＳ３１０５）。Ｂ０がアフィンモードである場合（ステップＳ３１０５：ＹＥＳ）、Ｂ０が使用したアフィンモードを取得し（ステップＳ３１０６）、処理を終了する。Ｂ０がアフィンモードでない場合（ステップＳ３１０５：ＮＯ）、アフィン継承予測動きベクトル候補導出の対象をＢ０−＞Ｂ１とし、Ｂ１を含むブロックからアフィンモードの取得を試みる。さらに、Ｂ１がアフィンモードでない場合（ステップＳ３１０５：ＮＯ）、アフィン継承予測動きベクトル候補導出の対象をＢ１−＞Ｂ２とし、Ｂ２を含むブロックからアフィンモードの取得を試みる。
【０１３０】
このように、左側ブロックと上側ブロックにグループを分けて、左側ブロックについては、左下から左上のブロックの順にアフィンモードを探索し、左側ブロックについては、右上から左上のブロックの順にアフィンモードを探索することで、可能な限り異なる２つのアフィンモードを取得することができ、アフィン予測動きベクトルのいずれかが差分動きベクトルの小さくなるアフィン予測動きベクトル候補を導出することができる。
【０１３１】
＜アフィン構築予測動きベクトル候補導出＞
アフィン構築予測動きベクトル候補導出部３６２について説明する。アフィン構築予測動きベクトル候補導出部４６２についてもアフィン構築予測動きベクトル候補導出部３６２と同様である。
【０１３２】
アフィン構築予測動きベクトル候補は、空間的に隣接するブロックの動き情報から制御点の動きベクトル情報を構築する。
【０１３３】
図３１は、アフィン構築予測動きベクトル候補導出を説明する図である。
【０１３４】
アフィン構築予測動きベクトル候補は、空間的に隣接する符号化済・復号済ブロックの有する動きベクトルを組み合わせて新たなアフィンモードを構築することで得られる。
【０１３５】
具体的には、処理対象のブロックの左上側に隣接するブロック（Ｂ２，Ｂ３，Ａ２）から左上制御点ＣＰ０の動きベクトルを導出し、処理対象のブロックの右上側に隣接するブロック（Ｂ１，Ｂ０）から右上制御点ＣＰ１の動きベクトルを導出し、処理対象のブロックの左下側に隣接するブロック（Ａ１，Ａ０）から左下制御点ＣＰ２の動きベクトルを導出する。
【０１３６】
図３５は、アフィン構築予測動きベクトル候補導出のフローチャートである。
【０１３７】
まず、左上制御点ＣＰ０、右上制御点ＣＰ１、左下制御点ＣＰ２を導出する（ステップＳ３２０１）。左上制御点ＣＰ０は、処理対象のブロックと同一の参照画像をもつ参照ブロックを、Ｂ２、Ｂ３、Ａ２参照ブロックの優先順で探索することで算出される。右上制御点ＣＰ１は、処理対象のブロックと同一の参照画像をもつ参照ブロックを、Ｂ１、Ｂ０参照ブロックの優先順で探索することで算出される。左下制御点ＣＰ２は、処理対象のブロックと同一の参照画像をもつ参照ブロックを、Ａ１、Ａ０参照ブロックの優先順で探索することで算出される。
【０１３８】
アフィン構築予測動きベクトルとして、制御点３本モードを選択する場合（ステップＳ３２０２：ＹＥＳ）、３つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１，左下制御点ＣＰ２）がすべて導出されたか否かを判断する（ステップＳ３２０３）。３つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１，左下制御点ＣＰ２）がすべて導出された場合（ステップＳ３２０３：ＹＥＳ）、３つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１，左下制御点ＣＰ２）を用いたアフィンモデルをアフィン構築予測動きベクトルとする（ステップＳ３２０４）。制御点３本モードを選択せず、制御点２本モードを選択した場合（ステップＳ３２０２：ＮＯ）、２つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１）がすべて導出されたか否かを判断する（ステップＳ３２０５）。２つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１）がすべて導出された場合（ステップＳ３２０５：ＹＥＳ）、２つの制御点（左上制御点ＣＰ０，右上制御点ＣＰ１）を用いたアフィンモデルをアフィン構築予測動きベクトルとする（ステップＳ３２０６）。
【０１３９】
＜アフィン同一予測動きベクトル候補導出＞
アフィン同一予測動きベクトル候補導出部３６３について説明する。アフィン同一予測動きベクトル候補導出部４６３についてもアフィン同一予測動きベクトル候補導出部３６３と同様である。
【０１４０】
アフィン同一予測動きベクトル候補は、各制御点で同一の動きベクトルを導出することで得られる。
【０１４１】
具体的には、アフィン構築予測動きベクトル候補導出部３６２・４６２と同様に、各制御点情報を導出し、すべての制御点をＣＰ０〜ＣＰ２のいずれかで同一に設定することで得られる。また、通常予測動きベクトルモードと同様に導出した時間動きベクトルをすべての制御点に設定することでも得られる。
【０１４２】
＜サブブロックマージモード導出＞
サブブロックマージモード導出について説明する。
【０１４３】
図２８は、本実施の形態の符号化装置におけるサブブロックマージモード導出部３０４のブロック図である。サブブロックマージモード導出部３０４は、サブブロックマージ候補リストsubblockMergeCandListを備えている。これは、通常マージモード導出部３０２におけるマージ候補リストmergeCandListと同様にリスト構造を成し、サブブロックマージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するサブブロックマージ候補を要素として格納する記憶領域が設けられている。本実施の形態においては、サブブロックマージ候補リストsubblockMergeCandListは少なくとも５個のマージ候補（インター予測情報）を登録することができるものとする。ただし、各マージ候補は、さらにサブブロック単位の動きベクトル情報を持つか、あるいは制御点の動きベクトル情報を持つ。
【０１４４】
まず、サブブロック時間マージ候補導出部３８１において、サブブロック時間マージ候補を導出する。サブブロック時間マージ候補導出の詳細については後述する。
【０１４５】
続いて、アフィン継承マージ候補導出部３８２において、アフィン継承マージ候補を導出する。アフィン継承マージ候補導出の詳細については後述する。
【０１４６】
続いて、アフィン構築マージ候補導出部３８３において、アフィン構築マージ候補を導出する。アフィン構築マージ候補導出の詳細については後述する。
【０１４７】
続いて、アフィン固定マージ候補導出部３８５において、アフィン固定マージ候補を導出する。アフィン固定マージ候補導出の詳細については後述する。
【０１４８】
サブブロックマージ候補選択部３８６は、サブブロック時間マージ候補導出部３８１、アフィン継承マージ候補導出部３８２、アフィン構築マージ候補導出部３８３、アフィン固定マージ候補導出部３８５において導出されたサブブロックマージ候補の中から、サブブロックマージ候補を選択し、選択されたサブブロックマージ候補に関する情報をインター予測モード判定部３０５に供給する。
【０１４９】
図２９は、本実施の形態の復号装置におけるサブブロックマージモード導出部４０４のブロック図である。サブブロックマージモード導出部４０４は、サブブロックマージ候補リストsubblockMergeCandListを備えている。これは、サブブロックマージモード導出部３０４と同じものである。
【０１５０】
まず、サブブロック時間マージ候補導出部４８１において、サブブロック時間マージ候補を導出する。サブブロック時間マージ候補導出部４８１の処理はサブブロック時間マージ候補導出部３８１の処理と同一である。
【０１５１】
続いて、アフィン継承マージ候補導出部４８２において、アフィン継承マージ候補を導出する。アフィン継承マージ候補導出部４８２の処理はアフィン継承マージ候補導出部３８２の処理と同一である。
【０１５２】
続いて、アフィン構築マージ候補導出部４８３において、アフィン構築マージ候補を導出する。アフィン構築マージ候補導出部４８３の処理はアフィン構築マージ候補導出部３８３の処理と同一である。
【０１５３】
続いて、アフィン固定マージ候補導出部４８５において、アフィン固定マージ候補を導出する。アフィン固定マージ候補導出部４８５の処理はアフィン固定マージ候補導出部４８５の処理と同一である。
【０１５４】
サブブロックマージ候補選択部４８６は、サブブロック時間マージ候補導出部４８１、アフィン継承マージ候補導出部４８２、アフィン構築マージ候補導出部４８３、アフィン固定マージ候補導出部４８５において導出されたサブブロックマージ候補の中から、符号化装置から伝送され復号されるインデックスに基づいて、サブブロックマージ候補を選択し、選択されたサブブロックマージ候補に関する情報を動き補償予測部４０６に供給する。
【０１５５】
サブブロックマージモード導出部３０４及びサブブロックマージモード導出部４０４は、ある符号化ブロックのサイズ（幅と高さの積）が３２未満の場合、その符号化ブロックの親ブロックにおいてサブブロックマージ候補が導出される。そして、全ての子ブロックでは、親ブロックにおいて導出されたサブブロックマージ候補を用いる。ただし、親ブロックのサイズが３２以上で、かつ画面内に収まっている場合に限る。
【０１５６】
＜サブブロック時間マージ候補導出＞
サブブロック時間マージ候補導出部３８１の動作については後述する。
【０１５７】
＜アフィン継承マージ候補導出＞
アフィン継承マージ候補導出部３８２について説明する。アフィン継承マージ候補導出部４８２についてもアフィン継承マージ候補導出部３８２と同様である。
【０１５８】
アフィン継承マージ候補は、空間的に隣接するブロックの有するアフィンモデルから制御点のアフィンモデルを継承する。
【０１５９】
図３２は、アフィン継承マージ候補導出を説明する図である。アフィンマージ継承マージモード候補の導出は、アフィン継承予測動きベクトルの導出と同様に、空間的に隣接する符号化済・復号済ブロックの有する制御点の動きベクトルを探索することで得られる。
【０１６０】
具体的には、処理対象のブロックの左側に隣接するブロック（Ａ０，Ａ１）と、処理対象のブロックの上側に隣接するブロック（Ｂ０，Ｂ１，Ｂ２）から、それぞれ最大１つのアフィンモードを探索し、アフィンマージモードに使用する。
【０１６１】
図３６は、アフィン継承マージ候補導出のフローチャートである。
【０１６２】
まず、処理対象のブロックの左側に隣接するブロック（Ａ０，Ａ１）を左グループとし（ステップＳ３３０１）、Ａ０を含むブロックがアフィンモードであるか否かを判断する（ステップＳ３３０２）。Ａ０がアフィンモードである場合（ステップＳ３１０２：ＹＥＳ）、Ａ０が使用したアフィンモデルを取得し（ステップＳ３３０３）、上側に隣接するブロックの処理に移る。Ａ０がアフィンモードでない場合（ステップＳ３３０２：ＮＯ）、アフィン継承マージ候補導出の対象をＡ０−＞Ａ１とし、Ａ１を含むブロックからアフィンモードの取得を試みる。
【０１６３】
続いて、処理対象のブロックの上側に隣接するブロック（Ｂ０，Ｂ１，Ｂ２）を上グループとし（ステップＳ３３０４）、Ｂ０を含むブロックがアフィンモードであるか否かを判断する（ステップＳ３３０５）。Ｂ０がアフィンモードである場合（ステップＳ３３０５：ＹＥＳ）、Ｂ０が使用したアフィンモデルを取得し（ステップＳ３３０６）、処理を終了する。Ｂ０がアフィンモードでない場合（ステップＳ３３０５：ＮＯ）、アフィン継承マージ候補導出の対象をＢ０−＞Ｂ１とし、Ｂ１を含むブロックからアフィンモードの取得を試みる。さらに、Ｂ１がアフィンモードでない場合（ステップＳ３３０５：ＮＯ）、アフィン継承マージ候補導出の対象をＢ１−＞Ｂ２とし、Ｂ２を含むブロックからアフィンモードの取得を試みる。
【０１６４】
アフィン継承マージ候補導出では、アフィンモードを有する符号化・復号処理済の隣接ブロックからアフィンモードを継承するため、符号化・復号処理済の隣接ブロックのアフィンモードが単予測であれば、双予測のアフィン継承マージ候補が生成されることはない。
【０１６５】
＜アフィン構築マージ候補導出＞
アフィン構築マージ候補導出部３８３について説明する。アフィン構築マージ候補導出部４８３についてもアフィン構築マージ候補導出部３８３と同様である。
【０１６６】
図３３は、アフィン構築マージ候補導出を説明する図である。アフィン構築マージ候補は、空間的に隣接するブロックの有する動き情報及び時間符号化ブロックからアフィンモデルを構築する。
【０１６７】
具体的には、処理対象のブロックの左上側に隣接するブロック（Ｂ２，Ｂ３，Ａ２）から左上制御点ＣＰ０の動きベクトルを導出し、処理対象のブロックの右上側に隣接するブロック（Ｂ１，Ｂ０）から右上制御点ＣＰ１の動きベクトルを導出し、処理対象のブロックの左下側に隣接するブロック（Ａ１，Ａ０）から左下制御点ＣＰ２の動きベクトルを導出し、処理対象のブロックとの右下側に隣接する符号化ブロック（Ｔ０）から右下制御点ＣＰ３の動きベクトルを導出する。
【０１６８】
図３７は、アフィン構築マージ候補導出のフローチャートである。
【０１６９】
まず、左上制御点ＣＰ０、右上制御点ＣＰ１、左下制御点ＣＰ２、右下制御点ＣＰ３を導出する（ステップＳ３４０１）。左上制御点ＣＰ０は、動き情報を有するブロックを、Ｂ２、Ｂ３、Ａ２ブロックの優先順で探索することで算出される。右上制御点ＣＰ１は、動き情報を有するブロックを、Ｂ１、Ｂ０ブロックの優先順で探索することで算出される。左下制御点ＣＰ２は、動き情報を有するブロックを、Ａ１、Ａ０ブロックの優先順で探索することで算出される。右下制御点ＣＰ３は、時間ブロックの動き情報を探索することで算出される。
【０１７０】
続いて、導出された左上制御点ＣＰ０、右上制御点ＣＰ１、左下制御点ＣＰ２により３本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４０２）、構築可能である場合（ステップＳ３４０２：ＹＥＳ）、左上制御点ＣＰ０、右上制御点ＣＰ１、左下制御点ＣＰ２による３本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４０３）。
【０１７１】
続いて、導出された左上制御点ＣＰ０、右上制御点ＣＰ１、右下制御点ＣＰ３により３本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４０４）、構築可能である場合（ステップＳ３４０４：ＹＥＳ）、左上制御点ＣＰ０、右上制御点ＣＰ１、右下制御点ＣＰ３による３本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４０５）。
【０１７２】
続いて、導出された左上制御点ＣＰ０、左下制御点ＣＰ２、右下制御点ＣＰ３により３本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４０６）、構築可能である場合（ステップＳ３４０６：ＹＥＳ）、左上制御点ＣＰ０、左下制御点ＣＰ２、右下制御点ＣＰ３による３本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４０７）。
【０１７３】
続いて、導出された右上制御点ＣＰ１、左下制御点ＣＰ２、右下制御点ＣＰ３により３本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４０８）、構築可能である場合（ステップＳ３４０８：ＹＥＳ）、右上制御点ＣＰ１、左下制御点ＣＰ２、右下制御点ＣＰ３による３本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４０９）。
【０１７４】
続いて、導出された左上制御点ＣＰ０、右上制御点ＣＰ１により２本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４１０）、構築可能である場合（ステップＳ３４１０：ＹＥＳ）、左上制御点ＣＰ０、右上制御点ＣＰ１による２本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４１１）。
【０１７５】
続いて、導出された左上制御点ＣＰ０、左下制御点ＣＰ２により２本制御点によるアフィンモデルを構築可能であるか否かを判断し（ステップＳ３４１２）、構築可能である場合（ステップＳ３４１２：ＹＥＳ）、左上制御点ＣＰ０、左下制御点ＣＰ２による２本制御点アフィンモデルをアフィンマージ候補とする（ステップＳ３４１３）。
【０１７６】
ここで、アフィンモデルを構築可能であるか否かは、少なくとも、すべての制御点の参照画像が同一である（アフィン変換可能）ことを条件とする。また、左上制御点ＣＰ０，右上制御点ＣＰ１，左下制御点ＣＰ２による３本制御点アフィンモデル、左上制御点ＣＰ０，右上制御点ＣＰ１による２本制御点アフィンモデル以外のアフィンモデルは、３本制御アフィンモデルについては、左上制御点ＣＰ０，右上制御点ＣＰ１，左下制御点ＣＰ２による３本制御点アフィンモデルに、２本制御アフィンモデルについては、左上制御点ＣＰ０，右上制御点ＣＰ１による２本制御点アフィンモデルに変換する。
【０１７７】
ここで、双予測のアフィン構築マージ候補の導出制限について説明する。
【０１７８】
図６５は参照リストＬ０に対する各制御点の動き情報導出のフローチャートである。
【０１７９】
まず、Ｂ２ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３５０１）。Ｂ２ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有する場合は（ステップＳ３５０１：ＹＥＳ）、Ｂ２ブロックの参照リストＬ０の動き情報を左上制御点とする（ステップＳ３５０２）。Ｂ２ブロックが参照リストＬ０の参照インデックスが０の動き情報を有さない場合は（ステップＳ３５０１：Ｎｏ）、Ｂ３ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３５０３）。Ｂ３ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有する場合は（ステップＳ３５０３：ＹＥＳ）、Ｂ３ブロックの参照リストＬ０の動き情報を左上制御点とする（ステップＳ３５０４）。Ｂ３ブロックが参照リストＬ０の参照インデックスが０の動き情報を有さない場合は（ステップＳ３５０３：Ｎｏ）、Ａ２ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３５０５）。Ａ２ブロックについて、参照リストＬ０の参照インデックスが０の動き情報を有する場合は（ステップＳ３５０５：ＹＥＳ）、Ａ２ブロックの参照リストＬ０の動き情報を左上制御点とする（ステップＳ３５０６）。Ａ２ブロックが参照リストＬ０の参照インデックスが０の動き情報を有さない場合は（ステップＳ３５０５：Ｎｏ）、左上制御点の参照リストＬ０の候補は導出されない（ステップＳ３５０７）。
【０１８０】
図６６は参照リストＬ１に対する各制御点の動き情報導出のフローチャートである。
【０１８１】
参照リストＬ１についても参照リストＬ０と同様に処理を行う。
【０１８２】
まず、Ｂ２ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３６０１）。Ｂ２ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有する場合は（ステップＳ３６０１：ＹＥＳ）、Ｂ２ブロックの参照リストＬ１の動き情報を左上制御点ＣＰ０とする（ステップＳ３６０２）。Ｂ２ブロックが参照リストＬ１の参照インデックスが０の動き情報を有さない場合は（ステップＳ３６０１：Ｎｏ）、Ｂ３ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３６０３）。Ｂ３ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有する場合は（ステップＳ３６０３：ＹＥＳ）、Ｂ３ブロックの参照リストＬ１の動き情報を左上制御点ＣＰ０とする（ステップＳ３６０４）。Ｂ３ブロックが参照リストＬ１の参照インデックスが０の動き情報を有さない場合は（ステップＳ３６０３：Ｎｏ）、Ａ２ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有するか否か判断する（ステップＳ３６０５）。Ａ２ブロックについて、参照リストＬ１の参照インデックスが０の動き情報を有する場合は（ステップＳ３６０５：ＹＥＳ）、Ａ２ブロックの参照リストＬ１の動き情報を左上制御点ＣＰ０とする（ステップＳ３６０６）。Ａ２ブロックが参照リストＬ１の参照インデックスが０の動き情報を有さない場合は（ステップＳ３６０５：Ｎｏ）、左上制御点ＣＰ０の参照リストＬ１の候補は導出されない（ステップＳ３６０７）。
【０１８３】
続いて、左上制御点ＣＰ０以外（右上制御点ＣＰ１、左下制御点ＣＰ２、右下制御点ＣＰ３）についても左上制御点ＣＰ０と同様に参照リストＬ０と参照リストＬ１の動き情報を導出する。
【０１８４】
参照リストＬ０について、図３７に示した各アフィン構築マージ候補の条件を満たす場合は参照リストＬ０の動き情報をアフィンモデルとする。参照リストＬ０について、図３７に示した各アフィン構築マージ候補の条件を満たさない場合は、参照リストｌ１の動き情報をアフィンモデルとする。参照リストＬ０、参照リストＬ１ともに図３７に示した各アフィン構築マージ候補の条件を満たさない場合は、対象のアフィン構築マージ候補は導出されない。
【０１８５】
このように、アフィン構築マージ候補導出では、双予測のアフィン構築マージ候補が導出されないように、空間的又は時間的に近接するブロックの動き情報が双予測を示す場合には、Ｌ０予測又はＬ１予測のいずれか一方の動き情報を選択し、単予測として前記アフィン構築マージ候補を導出する。
【０１８６】
これにより、双予測のアフィン構築マージ候補が導出されることを防ぎ、サブブロックに分割した動き補償を行うアフィンマージモードのメモリバンド帯域の増加を抑制できる。  また、双予測のアフィンモードを導出した後に、単予測のアフィンモードに動き情報を変換する場合と比較して、少ない処理量で双予測アフィンモードの制限を実現できる。
【０１８７】
さらに、空間的又は時間的に近接するブロックの動き情報が双予測を示す場合に、双予測の動き情報を排除せず、Ｌ０予測又はＬ１予測のいずれか一方の動き情報を選択してアフィン構築マージ候補導出に使用するため、双予測のアフィンモード制限の影響を最小化し、予測効率の高いアフィン構築マージ候補を導出でき、符号化効率が向上する。
【０１８８】
＜アフィン固定マージ候補導出＞
アフィン固定マージ候補導出部３８５について説明する。アフィン固定マージ候補導出部４８５についてもアフィン固定マージ候補導出部３８５と同様である。
【０１８９】
アフィン固定マージ候補は、固定された動き情報で制御点の動き情報を固定する。
【０１９０】
具体的には、各制御点の動きベクトルを（０，０）に固定する。
【０１９１】
＜時間予測動きベクトル導出＞
時間予測動きベクトルの説明に先行して、ピクチャの時間的な前後関係について図４９を参照して説明する。図４９（ａ）は、処理対象の符号化ブロックと、処理対象ピクチャとは時間的に異なる符号化済みのピクチャの関係を示す。処理対象ピクチャの符号化において参照する、特定の符号化済みのピクチャをColPicと定義する。ColPicはシンタックスにより特定される。
【０１９２】
また、図４９（ｂ）は、ColPicにおいて、処理対象の符号化ブロックと同一位置、およびその近傍に存在する、符号化済みの符号化ブロックを示す。ただし、図４９（ｂ）に示したＴ０およびＴ１の符号化ブロックは模式的なものであり、実際の位置や大きさはこの限りでない。いま、処理対象の符号化ブロックについて、位置を(xCb, yCb)、幅をcbWidth、高さをcbHeightとする。そして、
xColBr = xCb + cbWidth
yColBr = yCb + cbHeight
を算出する。位置((xColBr >> 3) << 3, (yColBr >> 3) << 3)を含むColPic上の符号化ブロックがＴ０となる。また、
xColCtr = xCb + (cbWidth >> 1)
yColCtr = yCb + (cbHeight >> 1)
を算出する。位置((xColCtr >> 3) << 3, (yColCtr >> 3) << 3)を含むColPic上の符号化ブロックがＴ１となる。
【０１９３】
上記したピクチャの時間的な前後関係の説明は、符号化時のものであるが、復号時も同様となる。つまり、復号時は、上記の説明における符号化を復号と置き換えて、同様に説明される。
【０１９４】
図１７の通常予測動きベクトルモード導出部３０１における時間予測動きベクトル候補導出部３２２の動作について、図５０を参照して説明する。
【０１９５】
まず、ColPicを導出する（ステップＳ４２０１）。ColPicの導出について、図５１を参照して説明する。
【０１９６】
スライスタイプslice_typeがＢスライスで、フラグcollocated_from_l0_flagが０の場合（ステップＳ４２１１：ＹＥＳ、ステップＳ４２１２：ＹＥＳ）、異なる時間のピクチャColPicは、参照リストＬ１の参照インデックスが０のピクチャRefPicList1[0]となる（ステップＳ４２１３）。そうでない場合、すなわちスライスタイプslice_typeがＢスライスで前述のフラグcollocated_from_l0_flagが１の場合（ステップＳ４２１１：ＹＥＳ、ステップＳ４２１２：ＮＯ）、またはスライスタイプslice_typeがＰスライスの場合（ステップＳ４２１１：ＮＯ、ステップＳ４２１４：ＹＥＳ）、異なる時間のピクチャColPicは、参照リストＬ０の参照インデックスが０のピクチャRefPicList0[0]となる（ステップＳ４２１５）。slice_typeがＰスライスでない場合（ステップＳ４２１４：ＮＯ）、処理を終了する。
【０１９７】
再び、図５０を参照する。ColPicを導出したら、符号化ブロックcolCbを導出し、符号化情報を取得する（ステップＳ４２０２）。この処理について、図５２を参照して説明する。
【０１９８】
まず、異なる時間のピクチャColPic内で、符号化対象の符号化ブロックと同一位置の右下位置を含む符号化ブロックを、異なる時間の符号化ブロックcolCbとする（ステップＳ４２２１）。この符号化ブロックの例を、図４９の符号化ブロックＴ０に示す。
【０１９９】
次に、異なる時間の符号化ブロックcolCbの符号化情報を取得する（ステップＳ４２２２）。異なる時間の符号化ブロックcolCbのPredModeが利用できないか、異なる時間の符号化ブロックcolCbの予測モードPredModeがイントラ予測（MODE_INTRA）である場合（ステップＳ４２２３：ＮＯ、ステップＳ４２２４：ＹＥＳ）、異なる時間のピクチャColPic内で処理対象の符号化ブロックと同一位置の中央右下位置を含む符号化ブロックを異なる時間の符号化ブロックcolCbとする（ステップＳ４２２５）。この符号化ブロックの例を、図４９の符号化ブロックＴ１に示す。
【０２００】
再び、図５０を参照する。次に、参照リストごとに、インター予測情報を導出する（ステップＳ４２０３、Ｓ４２０４）。ここでは、符号化ブロックcolCbについて、参照リストごとの動きベクトルmvLXColと符号化情報が有効か否かを示すフラグavailableFlagLXColを導出する。LXは参照リストを示し、参照リスト０の導出ではLXはL0となり、参照リスト1の導出ではLXはL1となる。インター予測情報の導出について、図５３を参照して説明する。
【０２０１】
異なる時間の符号化ブロックcolCbが利用できない場合（ステップＳ４２３１：ＮＯ）、または予測モードPredModeがイントラ予測（MODE_INTRA）の場合（ステップＳ４２３２：ＮＯ）、フラグavailableFlagLXColとフラグpredFlagLXColを共に０とし（ステップＳ４２３３）、動きベクトルmvLXColを（０，０）として（ステップＳ４２３４）、処理を終了する。
【０２０２】
符号化ブロックcolCbが利用でき（ステップＳ４２３１：ＹＥＳ）、予測モードPredModeがイントラ予測（MODE_INTRA）でない場合（ステップＳ４２３２：ＹＥＳ）、以下の手順でmvCol、refIdxColおよびavailableFlagColを算出する。
【０２０３】
符号化ブロックcolCbのＬ０予測が利用されているか否かを示すフラグPredFlagL0[xPCol][yPCol]が０の場合（ステップＳ４２３５：ＹＥＳ）、符号化ブロックcolCbの予測モードはPred_L1であるので、動きベクトルmvColが符号化ブロックcolCbのＬ１の動きベクトルであるMvL1[xPCol][yPCol]と同じ値に設定され（ステップＳ４２３６）、参照インデックスrefIdxColがＬ１の参照インデックスRefIdxL1[xPCol][yPCol]と同じ値に設定され（ステップＳ４２３７）、参照リストlistColがＬ１に設定される（ステップＳ４２３８）。ここで、xPCol、yPColは異なる時間のピクチャColPic内での符号化ブロックcolCbの左上の画素の位置を示すインデックスである。
【０２０４】
一方、符号化ブロックcolCbのＬ０予測フラグPredFlagL0[xPCol][yPCol]が０でない場合（ステップＳ４２３５：ＮＯ）、符号化ブロックcolCbのＬ１予測フラグPredFlagL1[xPCol][yPCol]が０か否かを判定する。符号化ブロックcolCbのＬ１予測フラグPredFlagL1[xPCol][yPCol]が０の場合（ステップＳ４２３９：ＹＥＳ）、動きベクトルmvColが符号化ブロックcolCbのＬ０の動きベクトルであるMvL0[xPCol][yPCol]と同じ値に設定され（ステップＳ４２４０）、参照インデックスrefIdxColがＬ０の参照インデックスRefIdxL0[xPCol][yPCol] と同じ値に設定され（ステップＳ４２４１）、参照リストlistColがＬ０に設定される（ステップＳ４２４２）。
【０２０５】
符号化ブロックcolCbのＬ０予測フラグPredFlagL0[xPCol][yPCol]と符号化ブロックcolCbのＬ１予測フラグPredFlagL1[xPCol][yPCol]が共に０でない場合（ステップＳ４２３５：ＮＯ、かつＳ４２３９：ＮＯ）、符号化ブロックcolCbのインター予測モードは双予測（Pred_BI）であるので、Ｌ０、Ｌ１の２つの動きベクトルから、一方を選択する（ステップＳ４２４３）。
【０２０６】
図５４は、符号化ブロックcolCbのインター予測モードが双予測（Pred_BI）のときの符号化ブロックのインター予測情報の導出処理手順を示すフローチャートである。
【０２０７】
まず、すべての参照リストに登録されているすべてのピクチャのＰＯＣが現在の処理対象ピクチャのＰＯＣより小さいか否かを判定し（ステップＳ４２５１）、符号化ブロックcolCbのすべての参照リストであるＬ０及びＬ１に登録されているすべてのピクチャのＰＯＣが現在の処理対象ピクチャのＰＯＣより小さい場合で（ステップＳ４２５１：ＹＥＳ）、ＬＸがＬ０、即ち処理対象の符号化ブロックのＬ０の動きベクトルの予測ベクトル候補を導出している場合（ステップＳ４２５２：ＹＥＳ）、符号化ブロックcolCbのＬ０の方のインター予測情報を選択し、ＬＸがＬ１、即ち処理対象の符号化ブロックのＬ１の動きベクトルの予測ベクトル候補を導出している場合（ステップＳ４２５２：ＮＯ）、符号化ブロックcolCbのＬ１の方のインター予測情報を選択する。一方、符号化ブロックcolCbのすべての参照リストＬ０及びＬ１に登録されているピクチャのＰＯＣの少なくとも１つが現在の処理対象ピクチャのＰＯＣより大きい場合で（ステップＳ４２５１：ＮＯ）、フラグcollocated_from_l0_flagが０場合（ステップＳ４２５３：ＹＥＳ）、符号化ブロックcolCbのＬ０の方のインター予測情報を選択し、フラグcollocated_from_l0_flagが１の場合（ステップＳ４２５３：ＮＯ）、符号化ブロックcolCbのＬ１の方のインター予測情報を選択する。
【０２０８】
符号化ブロックcolCbのＬ０の方のインター予測情報を選択する場合（ステップＳ４２５２：ＹＥＳ、またはステップＳ４２５３：ＹＥＳ）、動きベクトルmvColがMvL0[xPCol][yPCol]と同じ値に設定され（ステップＳ４２５４）、参照インデックスrefIdxColがRefIdxL0[xPCol][yPCol]と同じ値に設定され（ステップＳ４２５５）、リストlistColがＬ０に設定される（ステップＳ４２５６）。
【０２０９】
符号化ブロックcolCbのＬ１の方のインター予測情報を選択する場合（ステップＳ４２５２：ＮＯ、またはステップＳ４２５３：ＮＯ）、動きベクトルmvColがMvL1[xPCol][yPCol]と同じ値に設定され（ステップＳ４２５７）、参照インデックスrefIdxColがRefIdxL1[xPCol][yPCol]と同じ値に設定され（ステップＳ４２５８）、リストlistColがＬ１に設定される（ステップＳ４２５９）。
【０２１０】
図５３に戻り、符号化ブロックcolCbからインター予測情報が取得できたら、フラグavailableFlagLXColとフラグpredFlagLXColを共に１とする（ステップＳ４２４４）。
【０２１１】
続いて、動きベクトルmvColをスケーリングして、動きベクトルmvLXColとする（ステップＳ４２４５）。この動きベクトルmvLXColのスケーリング演算処理手順を図５５を用いて説明する。
【０２１２】
異なる時間のピクチャColPicのＰＯＣから、符号化ブロックcolCbのリストlistColで参照する参照インデックスrefIdxColに対応する参照ピクチャのＰＯＣを減算してピクチャ間距離ｔｄを、
ｔｄ ＝ [異なる時間のピクチャColPicのＰＯＣ] − [符号化ブロックcolCbのリストlistColで参照する参照ピクチャのＰＯＣ]
と算出する（ステップＳ４２６１）。なお、異なる時間のピクチャColPicよりも符号化ブロックcolCbのリストlistColで参照する参照ピクチャのＰＯＣの方が表示順序で前の場合、ピクチャ間距離ｔｄは正の値となり、異なる時間のピクチャColPicよりも符号化ブロックcolCbのリストlistColで参照する参照ピクチャのＰＯＣの方が表示順序で後の場合、ピクチャ間距離ｔｄは負の値となる。
【０２１３】
次に、現在の処理対象ピクチャのＰＯＣから現在の処理対象ピクチャのリストＬＸが参照する参照ピクチャのＰＯＣを減算してピクチャ間距離ｔｂを、
ｔｂ ＝ [現在の処理対象ピクチャのＰＯＣ] − [時間マージ候補のＬＸの参照インデックスに対応する参照ピクチャのＰＯＣ]
と算出する（ステップＳ４２６２）。なお、現在の処理対象ピクチャよりも現在の処理対象ピクチャのリストＬＸで参照する参照ピクチャの方が表示順序で前の場合、ピクチャ間距離ｔｂは正の値となり、現在の処理対象ピクチャのリストＬＸで参照する参照ピクチャの方が表示順序で後の場合、ピクチャ間距離ｔｂは負の値となる。
【０２１４】
続いて、ピクチャ間距離ｔｄとｔｂを比較し（ステップＳ４２６３）、ピクチャ間距離ｔｄとｔｂが等しい場合（ステップＳ４２６３：ＹＥＳ）、動きベクトルmvLXColを、
mvLXCol = mvCol
と算出して（ステップＳ４２６４）、本スケーリング演算処理を終了する。
【０２１５】
一方、ピクチャ間距離ｔｄとｔｂが等しくない場合（ステップＳ４２６３：ＮＯ）、変数ｔｘを、
tx = ( 16384 + Abs( td ) >> 1 ) / td
と算出する（ステップＳ４２６５）。続いて、スケーリング係数distScaleFactorを、
distScaleFactor = Clip3( -4096, 4095, ( tb * tx + 32 ) >> 6 )
と算出する（ステップＳ４２６６）。ここで、Clip3(x,y,z)は値zについて、最小値をx、最大値をyに制限する関数である。続いて、動きベクトルmvLXColを、
mvLXCol = Clip3( -32768, 32767, Sign( distScaleFactor * mvLXCol ) 
* ( (Abs( distScaleFactor * mvLXCol ) + 127 ) >> 8 ) )
と算出して（ステップＳ４２６７）、本スケーリング演算処理を終了する。ここで、Sign(x)は値xの符号を返す関数であり、Abs(x)は値xの絶対値を返す関数である。
【０２１６】
再び、図５０を参照する。そして、Ｌ０の動きベクトルmvL0Colとを前述の通常予測動きベクトルモード導出部３０１における予測動きベクトル候補リストmvpListLXに候補として追加する（ステップＳ４２０５）。ただし、この追加は、参照リスト0の符号化ブロックcolCbが有効か否かを示すフラグavailableFlagL0Col=1の場合のみである。また、L1の動きベクトルmvL1Colを前述の通常予測動きベクトルモード導出部３０１における予測動きベクトル候補リストmvpListLXに候補として追加する（ステップＳ４２０５）。ただし、この追加は、参照リスト1の符号化ブロックcolCbが有効か否かを示すフラグavailableFlagL1Col=1の場合のみである。以上により、時間予測動きベクトル候補導出部３２２の処理を終了する。
【０２１７】
上記した通常予測動きベクトルモード導出部３０１の説明は、符号化時のものであるが、復号時も同様となる。つまり、図２３の通常予測動きベクトルモード導出部４０１における時間予測動きベクトル候補導出部４２２の動作は、上記の説明における符号化を復号と置き換えて、同様に説明される。
【０２１８】
＜時間マージ候補導出＞
図１８の通常マージモード導出部３０２における時間マージ候補導出部３４２の動作について、図５６を参照して説明する。
【０２１９】
まず、ColPicを導出する（ステップＳ４３０１）。次に、符号化ブロックcolCbを導出し、符号化情報を取得する（ステップＳ４３０２）。さらに、参照リストごとに、インター予測情報を導出する（ステップＳ４３０３,Ｓ４３０４）。以上の処理は、時間予測動きベクトル候補導出部３２２におけるＳ４２０１からＳ４２０４と同じであるため、説明を省略する。
【０２２０】
次に、符号化ブロックcolCbが有効か否かを示すフラグavailableFlagColを算出する（ステップＳ４３０５）。フラグavailableFlagL0Col、またはフラグavailableFlagL1Colが1の場合に、availableFlagColは1となる。それ以外ではavailableFlagColは０となる。
【０２２１】
そして、L0の動きベクトルmvL0Col、およびL1の動きベクトルmvL1Colを、前述の通常マージモード導出部３０２におけるマージ候補リストmergeCandListに候補として追加する（ステップＳ４３０６）。ただし、この追加は、符号化ブロックcolCbが有効か否かを示すフラグavailableFlagCol=1の場合のみである。以上により、時間マージ候補導出部３4２の処理を終了する。
【０２２２】
上記した時間マージ候補導出部３４２の説明は、符号化時のものであるが、復号時も同様となる。つまり、図２４の通常マージモード導出部４０２における時間マージ候補導出部４４２の動作は、上記の説明における符号化を復号と置き換えて、同様に説明される。
【０２２３】
＜履歴予測動きベクトル候補リストの更新＞
次に、符号化側の符号化情報格納メモリ１１１及び復号側の符号化情報格納メモリ２０５に備える履歴予測動きベクトル候補リストHmvpCandListの初期化と更新方法について詳細に説明する。図３８は履歴予測動きベクトル候補リスト初期化・更新処理手順を説明するフローチャートである。
【０２２４】
本実施の形態では、履歴予測動きベクトル候補リストHmvpCandListの更新は、符号化情報格納メモリ１１１及び符号化情報格納メモリ２０５で実施されるものとする。インター予測部１０２及びインター予測部２０３の中に履歴候補リスト更新部を設置して履歴予測動きベクトル候補リストHmvpCandListの更新を実施させてもよい。
【０２２５】
スライスの先頭で履歴予測動きベクトル候補リストHmvpCandListの初期設定を行い、符号化側では予測方法決定部１０５で通常予測ベクトルモードまたは通常マージモードが選択された場合に履歴予測動きベクトル候補リストHmvpCandListを更新し、復号側では、ビット列復号部２０１で復号されたインター予測モードが通常予測ベクトルモードまたは通常マージモードの場合に履歴予測動きベクトル候補リストHmvpCandListを更新する。
【０２２６】
通常予測ベクトルモードまたは通常マージモードでインター予測を行う際に用いるインター予測情報を、インター予測情報候補hMvpCandとして履歴予測動きベクトル候補リストHmvpCandListに登録する。インター予測情報候補hMvpCandには、Ｌ０の参照インデックスrefIdxL0及びＬ１の参照インデックスrefIdxL1、Ｌ０予測が行われるか否かを示すＬ０予測フラグpredFlagL0およびＬ１予測が行われるか否かを示すＬ１予測フラグpredFlagL1、Ｌ０の動きベクトルmvL0、Ｌ１の動きベクトルmvL1が含まれる。符号化側の符号化情報格納メモリ１１１及び復号側の符号化情報格納メモリ２０５に備える履歴予測動きベクトル候補リストHmvpCandListに登録されている要素（すなわち、インター予測情報）の中に、インター予測情報候補hMvpCandと同じ値のインター予測情報が存在する場合は、履歴予測動きベクトル候補リストHmvpCandListからその要素を削除する。一方、インター予測情報候補hMvpCandと同じ値のインター予測情報が存在しない場合は、履歴予測動きベクトル候補リストHmvpCandListの先頭の要素を削除し、履歴予測動きベクトル候補リストHmvpCandListの最後に、インター予測情報候補hMvpCandを追加する。
【０２２７】
本発明の符号化側の符号化情報格納メモリ１１１及び復号側の符号化情報格納メモリ２０５に備える履歴予測動きベクトル候補リストHmvpCandListの要素の数は６とする。
【０２２８】
まず、スライス単位での履歴予測動きベクトル候補リストHmvpCandListの初期化を行う（図３８のステップＳ２１０１）。スライスの先頭で履歴予測動きベクトル候補リストHmvpCandListのすべての要素を空にし、履歴予測動きベクトル候補リストHmvpCandListに登録されている履歴予測動きベクトル候補の数NumHmvpCandの値は0に設定する。
【０２２９】
なお、履歴予測動きベクトル候補リストHmvpCandListの初期化をスライス単位（スライスの最初の符号化ブロック）で実施するとしたが、ピクチャ単位、タイル単位やツリーブロック行単位で実施しても良い。
【０２３０】
続いて、スライス内の符号化ブロック毎に以下の履歴予測動きベクトル候補リストHmvpCandListの更新処理を繰り返し行なう（図３８のステップＳ２１０２〜Ｓ２１０７）。
【０２３１】
まず、符号化ブロック単位での初期設定を行う。同一候補が存在するか否かを示すフラグidenticalCandExistにFALSE（偽）の値を設定し、削除対象インデックスremoveIdxに０を設定する（図３８のステップＳ２１０３）。
【０２３２】
履歴予測動きベクトル候補リストHmvpCandListに登録対象のインター予測情報候補hMvpCandが存在するか否かを判定する（図３８のステップＳ２１０４）。符号化側の予測方法決定部１０５で通常予測動きベクトルモードまたは通常マージモードと判定された場合、または復号側のビット列復号部２０１で通常予測動きベクトルモードまたは通常マージモードとして復号された場合、そのインター予測モードをhMvpCandとする。符号化側の予測方法決定部１０５でイントラ予測モード、サブブロック予測動きベクトルモードまたはサブブロックマージモードと判定された場合、または復号側のビット列復号部２０１でイントラ予測モード、サブブロック予測動きベクトルモードまたはサブブロックマージモードとして復号された場合、履歴予測動きベクトル候補リストHmvpCandListの更新処理を行わず、登録対象のインター予測情報候補hMvpCandは存在しない。登録対象のインター予測情報候補hMvpCandが存在しない場合はステップＳ２１０５〜Ｓ２１０６をスキップする（図３８のステップＳ２１０４：ＮＯ）。登録対象のインター予測情報候補hMvpCandが存在する場合はステップＳ２１０５以下の処理を行う（図３８のステップＳ２１０４：ＹＥＳ）。
【０２３３】
続いて、履歴予測動きベクトル候補リストHmvpCandListの各要素の中に登録対象のインター予測情報候補hMvpCandと同一の要素が存在するか否かを判定する（図３８のステップＳ２１０５）。図３９はこの同一要素確認処理手順のフローチャートである。履歴予測動きベクトル候補の数NumHmvpCandの値が0の場合（図３９のステップＳ２１２１：ＮＯ）、履歴予測動きベクトル候補リストHmvpCandListは空で、同一候補は存在しないので図３９ステップＳ２１２２〜Ｓ２１２５をスキップし、本同一要素確認処理手順を終了する。履歴予測動きベクトル候補の数NumHmvpCandの値が0より大きい場合（図３９のステップＳ２１２１：ＹＥＳ）、履歴予測動きベクトルインデックスhMvpIdxが0からNumHmvpCand-1まで、ステップＳ２１２３の処理を繰り返す（図３９のステップＳ２１２２〜Ｓ２１２５）。まず、履歴予測動きベクトル候補リストの０から数えてhMvpIdx番目の要素HmvpCandList[hMvpIdx]がインター予測情報候補hMvpCandと同一か否かを比較する（図３９のステップＳ２１２３）。同一の場合（図３９のステップＳ２１２３：ＹＥＳ）、同一候補が存在するか否かを示すフラグidenticalCandExistにTRUE（真）の値を設定し、削除対象インデックスremoveIdxにhMVpIndexの値を設定し、本同一要素確認処理を終了する。同一でない場合（図３９のステップＳ２１２３：ＮＯ）、hMvpIdxを1インクリメントし、履歴予測動きベクトルインデックスhMvpIdxがNumHmvpCand-1以下であれば、ステップＳ２１２３以降の処理を行う（図３９のステップＳ２１２２〜Ｓ２１２５）。
【０２３４】
再び図３８のフローチャートに戻り、履歴予測動きベクトル候補リストHmvpCandListの要素のシフト及び追加処理を行う（図３８のステップＳ２１０６）。図４０は図３８のステップＳ２１０６の履歴予測動きベクトル候補リストHmvpCandListの要素シフト／追加処理手順のフローチャートである。まず、履歴予測動きベクトル候補リストHmvpCandListに格納されている要素を除いてから新たな要素を追加するか、要素を除かずに新たな要素を追加するかを判定する。具体的には、同一候補が存在するか否かを示すフラグidenticalCandExistがTRUE（真）またはNumHmvpCandが6か否かを比較する（図４０のステップＳ２１４１）。同一候補が存在するか否かを示すフラグidenticalCandExistがTRUE（真）またはNumHmvpCandが6のいずれかの条件を満たす場合（図４０のステップＳ２１４１：ＹＥＳ）、履歴予測動きベクトル候補リストHmvpCandListに格納されている要素を除いてから新たな要素を追加する。インデックスiの初期値をremoveIdx + 1の値に設定する。この初期値からNumHmvpCandまで、ステップＳ２１４３の要素シフト処理を繰り返す。（図４０のステップＳ２１４２〜Ｓ２１４４）。HMVPCandList[ i -  1 ]にHMVPCandList[ i ]の要素をコピーすることで要素を前方にシフトし（図４０のステップＳ２１４３）、iを１インクリメントする（図４０のステップＳ２１４２〜Ｓ２１４４）。インデックスiがNumHmvpCand+1となり、ステップＳ２１４３の要素シフト処理が完了したら、履歴予測動きベクトル候補リストの最後にインター予測情報候補hMvpCandを追加する（図４０のステップＳ２１４５）。ここで、履歴予測動きベクトル候補リストの最後とは、０から数えて(NumHmvpCand-1)番目のHMVPCandList[NumHmvpCand-1]である。以上で、本履歴予測動きベクトル候補リストHMVPCandListの要素シフト・追加処理を終了する。一方、同一候補が存在するか否かを示すフラグidenticalCandExistがTRUE（真）およびNumHmvpCandが6のいずれの条件も満たさない場合（図４０のステップＳ２１４１：ＮＯ）、履歴予測動きベクトル候補リストHmvpCandListに格納されている要素を除かずに、履歴予測動きベクトル候補リストの最後にインター予測情報候補hMvpCandを追加する（図４０のステップＳ２１４６）。ここで、履歴予測動きベクトル候補リストの最後とは、０から数えてNumHmvpCand番目のHMVPCandList[NumHmvpCand]である。また、NumHmvpCandを１インクリメントして、本履歴予測動きベクトル候補リストHMVPCandListの要素シフト／追加処理を終了する。
【０２３５】
図４３は履歴予測動きベクトルリストの更新処理の一例を説明する図である。履歴予測動きベクトル候補リストHMVPCandListに６つの要素（インター予測情報）が登録されている際に、新たなインター予測情報を追加する場合、履歴予測動きベクトル候補リストHMVPCandListの各要素と前方から新たなインター予測情報を比較して（図４３（ａ））、新たなインター予測情報が履歴予測動きベクトル候補リストHMVPCandListの先頭から３番目の要素HMVP2と同じ値であれば、履歴予測動きベクトル候補リストHMVPCandListから要素HMVP2を削除して後方の要素HMVP3〜HMVP5を前方に１つずつシフト（コピー）し、履歴予測動きベクトル候補リストHMVPCandListの最後に新たなインター予測情報を追加して（図４３（ｂ））、履歴予測動きベクトル候補リストHMVPCandListの更新を完了する（図４３（ｃ））。
【０２３６】
＜履歴予測動きベクトル候補導出処理＞
次に、符号化側の通常予測動きベクトルモード導出部３０１の履歴予測動きベクトル候補導出部３２３、復号側の通常予測動きベクトルモード導出部４０１の履歴予測動きベクトル候補導出部４２３で共通の処理である図２０のステップＳ３０４の処理手順である履歴予測動きベクトル候補リストHMVPCandListからの履歴予測動きベクトル候補の導出方法について詳細に説明する。図４１は履歴予測動きベクトル候補導出処理手順を説明するフローチャートである。
【０２３７】
現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数（ここでは２とする）以上または履歴予測動きベクトル候補の数NumHmvpCandの値が0の場合（図４１のステップＳ２２０１：ＮＯ）、図４１のステップＳ２２０２からＳ２２０９の処理を省略し、履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合、かつ履歴予測動きベクトル候補の数NumHmvpCandの値が0より大きい場合（図４１のステップＳ２２０１：ＹＥＳ）、図４１のステップＳ２２０２からＳ２２０９の処理を行う。
【０２３８】
続いて、インデックスｉが０から、３と履歴予測動きベクトル候補の数NumHmvpCandのいずれか小さい値まで、図４１のステップＳ２２０３からＳ２２０８の処理を繰り返す（図４１のステップＳ２２０２〜Ｓ２２０９）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２以上の場合（図４１のステップＳ２２０３：ＮＯ）、図４１のステップＳ２２０４からＳ２２０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図４１のステップＳ２２０３：ＹＥＳ）、図４１のステップＳ２２０４以降の処理を行う。
【０２３９】
続いて、ステップＳ２２０５からＳ２２０７までの処理をＹが０と１（Ｌ０とＬ１）についてそれぞれ行う（図４１のステップＳ２２０４〜Ｓ２２０８）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２以上の場合（図４１のステップＳ２２０５：ＮＯ）、図４１のステップＳ２２０６からＳ２２０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図４１のステップＳ２２０５：ＹＥＳ）、図４１のステップＳ２２０６以降の処理を行う。
【０２４０】
続いて、履歴予測動きベクトル候補リストHmvpCandList[i]のLYの参照インデックスが、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じ場合（図４１のステップＳ２２０６：ＹＥＳ）、予測動きベクトル候補リストの最後の要素として、予測動きベクトル候補リストの０から数えてnumCurrMvpCand番目の要素mvpListLX[numCurrMvpCand]に履歴予測動きベクトル候補HmvpCandList[i]のLYの動きベクトルを追加し（図４１のステップＳ２２０７）、現在の予測動きベクトル候補の数numCurrMvpCandを１インクリメントする。履歴予測動きベクトル候補リストHmvpCandList[i]のLYの参照インデックスが、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じでない場合（図４１のステップＳ２２０６：ＮＯ）、ステップＳ２２０７の追加処理をスキップする。
【０２４１】
以上の図４１のステップＳ２２０５からＳ２２０７の処理をＬ０とＬ１で双方ともに行う（図４１のステップＳ２２０４〜Ｓ２２０８）。
【０２４２】
インデックスｉを１インクリメントし、インデックスｉが３と履歴予測動きベクトル候補の数NumHmvpCandのいずれか小さい値以下の場合、再びステップＳ２２０３以降の処理を行う（図４１のステップＳ２２０２〜Ｓ２２０９）。
【０２４３】
＜履歴マージ候補導出処理＞
次に、符号化側の通常マージモード導出部３０２の履歴マージ候補導出部３４５、復号側の通常マージモード導出部４０２の履歴マージ候補導出部４４５で共通の処理である図２１のステップＳ４０４の処理手順である履歴マージ候補リストHmvpCandListからの履歴マージ候補の導出方法について詳細に説明する。図４２は履歴マージ候補導出処理手順を説明するフローチャートである。
【０２４４】
まず、初期化処理を行う（図４２のステップＳ２３０１）。isPruned[i]の0から(numCurrMergeCand -1)番目のそれぞれの要素にFALSEの値を設定し、変数numOrigMergeCandに現在のマージ候補リストに登録されている要素の数numCurrMergeCandを設定する。
【０２４５】
続いて、インデックスhMvpIdxの初期値を1に設定し、この初期値からNumHmvpCandまで、図４２のステップＳ２３０３からステップＳ２３１０までの追加処理を繰り返す（図４２のステップＳ２３０２〜Ｓ２３１１）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下でなければ、マージ候補リストのすべての要素にマージ候補が追加されたので、本履歴マージ候補導出処理を終了する（図４２のステップＳ２３０３：ＮＯ）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下の場合（図４２のステップＳ２３０３：ＹＥＳ）、ステップＳ２３０４以降の処理を行う。
【０２４６】
まず、sameMotionにFALSE（偽）の値を設定する（図４２のステップＳ２３０４）。続いて、インデックスiの初期値を0に設定し、この初期値から1まで図４２のステップＳ２３０６、Ｓ２３０７の処理を行う（図４２のＳ２３０５〜Ｓ２３０８）。
【０２４７】
次に、履歴動きベクトル予測候補リストの０から数えて(NumHmvpCand-hMvpIdx)番目の要素HmvpCandList[NumHmvpCand-hMvpIdx]と、マージ候補リストの０から数えてi番目の要素mergeCandList[i]が同じ値か否かを比較する（図４２のステップＳ２３０６）。ここで、マージ候補が同じ値とは、マージ候補が持つすべての構成要素（インター予測モード、参照インデックス、動きベクトル）の値が同じであることを示す。ただし、このステップＳ２３０６の処理は、hMvpIdxがNumHmvpCand-2より大きく、かつmergeCandList[i]が空間マージ候補で、かつisPruned[i]がFALSE（偽）の場合に限る。同じ値の場合（図３９のステップＳ２３０６：ＹＥＳ）、sameMotionおよびisPruned[i]共にTRUE（真）を設定する（図４２のステップＳ２３０７）。同じ値でない場合（図３９のステップＳ２３０６：ＮＯ）、ステップＳ２３０７の処理をスキップする。図４２のステップＳ２３０５からステップＳ２３０８までの繰り返し処理が完了したらsameMotionがFALSE（偽）か否かを比較し（図４２のステップＳ２３０９）、sameMotionが FALSE（偽）の場合（図４２のステップＳ２３０９：ＹＥＳ）、マージ候補リストのnumCurrMergeCand番目のmergeCandList[numCurrMergeCand]に履歴予測動きベクトル候補リストの０から数えて(NumHmvpCand - hMvpIdx)番目の要素HmvpCandList[NumHmvpCand - hMvpIdx]を追加し、numCurrMergeCandを1インクリメントする（図４２のステップＳ２３１０）。インデックスhMvpIdxを１インクリメントし（図４２のステップＳ２３０２）、図４２のステップＳ２３０２〜Ｓ２３１１の繰り返し処理を行う。
【０２４８】
履歴予測動きベクトル候補リストのすべての要素の確認が完了するか、マージ候補リストのすべての要素にマージ候補が追加されたら、本履歴マージ候補の導出処理を完了する。
【０２４９】
＜平均マージ候補導出処理＞
次に、符号化側の通常マージモード導出部３０２の平均マージ候補導出部３４４、復号側の通常マージモード導出部４０２の平均マージ候補導出部４４４で共通の処理である図２１のステップＳ４０３の処理手順である平均マージ候補の導出方法について詳細に説明する。図６２は平均マージ候補導出処理手順を説明するフローチャートである。
【０２５０】
まず、初期化処理を行う（図６２のステップＳ１３０１）。変数numOrigMergeCandに現在のマージ候補リストに登録されている要素の数numCurrMergeCandを設定する。
【０２５１】
続いて、マージ候補リストの先頭から順に走査し、２つの動き情報を決定する。１つ目の動き情報を示すインデックスi=0、２つ目の動き情報を示すインデックスj=1とする。（図６２のステップＳ１３０２〜Ｓ１３０３）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下でなければ、マージ候補リストのすべての要素にマージ候補が追加されたので、本履歴マージ候補導出処理を終了する（図６２のステップＳ１３０４）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下の場合は、ステップＳ１３０５以降の処理を行う。
【０２５２】
マージ候補リストのi番目の動き情報mergeCandList[i]とマージ候補リストのj番目の動き情報mergeCandList[j]がともに無効であるか否かを判定し（図６２のステップＳ１３０５）、ともに無効である場合は、mergeCandList[i]とmergeCandList[j]の平均マージ候補の導出を行わず、次の要素に移る。mergeCandList[i]とmergeCandList[j]がともに無効でない場合は、Xを0と1として以下の処理を繰り返す（図６２のステップＳ１３０６からＳ１３１４）。
【０２５３】
mergeCandList[i]のLX予測が有効であるかを判定する（図６２のステップＳ１３０７）。mergeCandList[i]のLX予測が有効である場合は、mergeCandList[j]のLX予測が有効であるかを判定する（図６２のステップＳ１３０８）。mergeCandList[j]のLX予測が有効である場合、すなわち、mergeCandList[i]のLX予測とmergeCandList[j]のLX予測がともに有効である場合は、mergeCandList[i]のLX予測の動きベクトルとmergeCandList[j]のLX予測の動きベクトルを平均したLX予測の動きベクトルとmergeCandList[i]のLX予測の参照インデックスを有するLX予測の平均マージ候補を導出してaverageCandのLX予測に設定し、averageCandのLX予測を有効とする（図６２のステップＳ１３０９）。図６２のステップＳ１３０８で、mergeCandList[j]のLX予測が有効でない場合、すなわち、mergeCandList[i]のLX予測が有効、かつmergeCandList[j]のLX予測が無効である場合は、mergeCandList[i]のLX予測の動きベクトルと参照インデックスを有するLX予測の平均マージ候補を導出してaverageCandのLX予測に設定し、averageCandのLX予測を有効とする（図６２のステップＳ１３１０）。図６２のステップＳ１３０７で、mergeCandList[i]のLX予測が有効でない場合、mergeCandList[j]のLX予測が有効であるか否かを判定する（図６２のステップＳ１３１１）。mergeCandList[j]のLX予測が有効である場合、すなわちmergeCandList[i]のLX予測が無効、かつmergeCandList[j] のLX予測が有効である場合は、mergeCandList[j]のLX予測の動きベクトルと参照インデックスを有するLX予測の平均マージ候補を導出してaverageCandのLX予測に設定し、averageCandのLX予測を有効とする（図６２のステップＳ１３１２）。図６２のステップＳ１３１１で、mergeCandList[j]のLX予測が有効でない場合、すなわちmergeCandList[i]のLX予測、mergeCandList[j]のLX予測がともに無効である場合は、averageCandのLX予測を無効とする（図６２のステップＳ１３１２）。
【０２５４】
以上のように生成されたL0予測、L1予測またはBI予測の平均マージ候補averageCandを、マージ候補リストのnumCurrMergeCand番目のmergeCandList[numCurrMergeCand]に追加し、numCurrMergeCandを1インクリメントする（図６２のステップＳ１３１５）。以上で、平均マージ候補の導出処理を完了する。
【０２５５】
なお、平均マージ候補は動きベクトルの水平成分と動きベクトルの垂直成分それぞれで平均される。
【０２５６】
＜サブブロック時間マージ候補導出＞
図１６のサブブロックマージモード導出部３０４におけるサブブロック時間マージ候補導出部３８１の動作について、図４４を参照して説明する。
【０２５７】
まず、符号化ブロックが8x8画素未満か否かを判定する（ステップＳ４００２）。
【０２５８】
符号化ブロックが8x8画素未満の場合（ステップＳ４００２：ＹＥＳ）、サブブロック時間マージ候補の存在を示すフラグavailableFlagSbCol=0に設定して（ステップＳ４００３）、サブブロック時間マージ候補導出部の処理を終了する。ここで、シンタックスによりテンポラル動きベクトル予測が禁止されている場合、またはサブブロック時間マージが禁止されている場合には、符号化ブロックが8x8画素未満の場合（ステップＳ４００２：ＹＥＳ）と同じ処理をする。
【０２５９】
一方、符号化ブロックが8x8画素以上の場合（ステップＳ４００２：ＮＯ）、符号化ピクチャにおける符号化ブロックの隣接動き情報を導出する（ステップＳ４００４）。
【０２６０】
符号化ブロックの隣接動き情報を導出する処理について、図４５を参照して説明する。隣接動き情報を導出する処理は、前述の空間予測動きベクトル候補導出部321の処理と相似している。ただし、隣接ブロックの探索をする順番はA0,B0,B1,A1であり、B2は探索しない。まず、隣接ブロックn=A0として、符号化情報を取得する（ステップＳ４０５２）。符号化情報とは、隣接ブロックを利用できるか否かを示すフラグavailableFlagN、参照リストごとの参照インデックスrefIdxLXN、および動きベクトルmvLXNを示す。
【０２６１】
次に、隣接ブロックnが有効か無効かを判断する（ステップＳ４０５４）。隣接ブロックを利用できるか否かを示すフラグavailableFlagN=1であれば有効、それ以外は無効とする。
【０２６２】
隣接ブロックnが有効であれば（ステップＳ４０５４：ＹＥＳ）、参照インデックスrefIdxLXNを、隣接ブロックnの参照インデックスrefIdxLXnとする（ステップＳ４０５６）。また、動きベクトルmvLXNを、隣接ブロックnの動きベクトルmvLXnとして（ステップＳ４０５６）、ブロックの隣接動き情報を導出する処理を終了する。
【０２６３】
一方、隣接ブロックnが無効であれば（ステップＳ４０５４：ＮＯ）、隣接ブロックn=B0として、符号化情報を取得し（ステップＳ４０５２）、隣接ブロックnが有効か無効かを判断する（ステップＳ４０５４）。以下、同様の処理をして、B1,A1の順番にループする。隣接動き情報を導出する処理は、隣接ブロックが有効となるまでループし、全ての隣接ブロックA0,B0,B1,A1が無効であれば、ブロックの隣接動き情報を導出する処理を終了する。
【０２６４】
再び、図４４を参照する。隣接動き情報を導出したら（ステップＳ４００４）、テンポラル動きベクトルを導出する（ステップＳ４００６）。
【０２６５】
テンポラル動きベクトルを導出する処理について、図４６を参照して説明する。まず、テンポラル動きベクトルtempMv=(0,0)として初期化する（ステップＳ４０６２）。
【０２６６】
次に、隣接動き情報が有効か無効かを判断する（ステップＳ４０６４）。隣接ブロックを利用できるか否かを示すフラグavailableFlagN=1であれば有効、それ以外は無効とする。隣接動き情報が無効の場合（ステップＳ４０６４：ＮＯ）、テンポラル動きベクトルを導出する処理を終了する。
【０２６７】
一方、隣接動き情報が有効の場合（ステップＳ４０６４：ＹＥＳ）、隣接ブロックNにおいてL1予測を利用しているか否かを示すフラグpredFlagL1Nが１か否かを判断する（ステップＳ４０６６）。predFlagL1N=0の場合（ステップＳ４０６６：ＮＯ）、次の処理（ステップＳ４０７８）に進む。predFlagL1N=1の場合（ステップＳ４０６６：ＹＥＳ）、すべての参照リストに登録されているすべてのピクチャのＰＯＣが、現在の処理対象ピクチャのＰＯＣ以下か否かを判断する（ステップＳ４０６８）。この判断が真の場合（ステップＳ４０６８：ＹＥＳ）、次の処理（ステップＳ４０７０）に進む。
【０２６８】
スライスタイプslice_typeがＢスライスで、フラグcollocated_from_l0_flagが０の場合（ステップＳ４０７０：ＹＥＳ、ステップかつＳ４０７２：ＹＥＳ）、ColPicと参照ピクチャRefPicList1[refIdxL1N]（参照リストＬ１の参照インデックスrefIdxL1Nのピクチャ）が同じか否かを判断する（ステップＳ４０７４）。この判断が真の場合（ステップＳ４０７４：ＹＥＳ）、テンポラル動きベクトルtempMv=mvL1Nとする（ステップＳ４０７６）。この判断が偽の場合（ステップＳ４０７４：ＮＯ）、次の処理（ステップＳ４０７８）に進む。スライスタイプslice_typeがＢスライスでなく、フラグcollocated_from_l0_flagが０でない場合（ステップＳ４０７０：ＮＯ、またはステップＳ４０７２：ＮＯ）、次の処理（ステップＳ４０７８）に進む。
【０２６９】
そして、隣接ブロックNにおいてL0予測を利用しているか否かを示すフラグpredFlagL0Nが１か否かを判断する（ステップＳ４０７８）。predFlagL0N=1の場合（ステップＳ４０７８：ＹＥＳ）、ColPicと参照ピクチャRefPicList0[refIdxL0N]（参照リストＬ０の参照インデックスrefIdxL0Nのピクチャ）が同じか否かを判断する（ステップＳ４０８０）。この判断が真の場合（ステップＳ４０８０：ＹＥＳ）、テンポラル動きベクトルtempMv=mvL0Nとする（ステップＳ４０８２）。この判断が偽の場合（ステップＳ４０８０：ＮＯ）、テンポラル動きベクトルを導出する処理を終了する。
【０２７０】
再び、図４４を参照する。次に、ColPicを導出する（ステップＳ４０１６）。この処理は、時間予測動きベクトル候補導出部３２２におけるＳ４２０１と同じであるから、説明を省略する。
【０２７１】
そして、異なる時間の符号化ブロックcolCbを設定する（ステップＳ４０１７）。これは、異なる時間のピクチャColPic内で処理対象の符号化ブロックと同一位置の中央右下に位置する符号化ブロックを、colCbとして設定するものである。この符号化ブロックは図４９の符号化ブロックＴ１に相当する。
【０２７２】
次に、符号化ブロックcolCbにテンポラル動きベクトルtempMvを加算した位置を、新たなcolCbとする（ステップＳ４０１８）。いま、符号化ブロックcolCbの左上の位置を(xColCb, yColCb)、テンポラル動きベクトルtempMvを1/16画素精度で(tempMv[0], tempMv[1])とする。そして、
xColCb = Clip3( xCtb, xCtb + CtbSizeY + 3, xColCb + ( tempMv[0] >> 4 ) )
yColCb = Clip3( yCtb, yCtb + CtbSizeY - 1, yColCb + ( tempMv[1] >> 4 ) )
を算出する。ここで、ツリーブロックの左上の位置は(xCtb, yCtb)、ツリーブロックの大きさはCtbSizeYとする。位置((xColCb >> 3) << 3, (yColCb >> 3) << 3)を含むColPic上の符号化ブロックが、新たなcolCbとなる。上式に示すように、tempMv加算後の位置は、tempMv加算前に比べて大きくずれないように、ツリーブロックの大きさ程度の範囲に補正される。もしこの位置が画面外となった場合は、画面内に補正される。
【０２７３】
そして、この符号化ブロックcolCbの予測モードPredModeがインター予測（MODE_INTER）か否かを判定する（ステップＳ４０２０）。colCbの予測モードがインター予測でない場合（ステップＳ４０２０：ＮＯ）、サブブロック時間マージ候補の存在を示すフラグavailableFlagSbCol=0に設定して（ステップＳ４００３）、サブブロック時間マージ候補導出部の処理を終了する。
【０２７４】
一方、colCbの予測モードがインター予測の場合（ステップＳ４０２０：ＹＥＳ）、参照リストごとにインター予測情報を導出する（ステップＳ４０２２、Ｓ４０２３）。ここでは、colCbについて、参照リストごとの中心動きベクトルctrMvLXと、LX予測を利用しているか否かを示すフラグctrPredFlagLXを導出する。LXは参照リストを示し、参照リスト０の導出ではLXはL0となり、参照リスト1の導出ではLXはL1となる。インター予測情報の導出について、図４７を参照して説明する。
【０２７５】
異なる時間の符号化ブロックcolCbが利用できない場合（ステップＳ４１１２：ＮＯ）、または予測モードPredModeがイントラ予測（MODE_INTRA）の場合（ステップＳ４１１４：ＮＯ）、フラグavailableFlagLXColとフラグpredFlagLXColを共に０とし（ステップＳ４１１６）、動きベクトルmvColを（０，０）として（ステップＳ４１１８）、インター予測情報の導出処理を終了する。
【０２７６】
符号化ブロックcolCbが利用でき（ステップＳ４１１２：ＹＥＳ）、予測モードPredModeがイントラ予測（MODE_INTRA）でない場合（ステップＳ４１１４ ：ＹＥＳ）、以下の手順でmvCol、refIdxColおよびavailableFlagColを算出する。
【０２７７】
符号化ブロックcolCbのＬＸ予測が利用されているか否かを示すフラグPredFlagLX[xPCol][yPCol]が1の場合（ステップＳ４１２０：ＹＥＳ）、動きベクトルmvColが符号化ブロックcolCbのＬＸの動きベクトルであるMvLX[xPCol][yPCol]と同じ値に設定され（ステップＳ４１２２）、参照インデックスrefIdxColがＬＸの参照インデックスRefIdxLX[xPCol][yPCol]と同じ値に設定され（ステップＳ４１２４）、リストlistColがＬＸに設定される（ステップＳ４１２６）。ここで、xPCol、yPColは異なる時間のピクチャColPic内での符号化ブロックcolCbの左上の画素の位置を示すインデックスである。
【０２７８】
一方、符号化ブロックcolCbのＬＸ予測が利用されているか否かを示すフラグPredFlagLX[xPCol][yPCol]が0の場合（ステップＳ４１２０：ＮＯ）、以下の処理をする。まず、すべての参照リストに登録されているすべてのピクチャのＰＯＣが、現在の処理対象ピクチャのＰＯＣ以下か否かを判断する（ステップＳ４１２８）。かつ、colCbのＬＹ予測が利用されているか否かを示すフラグPredFlagLY[xPCol][yPCol]が1か否かを判断する（ステップＳ４１２８）。ここで、LY予測とはLX予測とは異なる参照リストと定義する。つまり、LX=L0ではLY=L1、LX=L1ではLY=L0となる。
【０２７９】
この判断が真の場合（ステップＳ４１２８：ＹＥＳ）、動きベクトルmvColが符号化ブロックcolCbのＬＹの動きベクトルであるMvLY[xPCol][yPCol]と同じ値に設定され（ステップＳ４１３０）、参照インデックスrefIdxColがＬＹの参照インデックスRefIdxLY[xPCol][yPCol]と同じ値に設定され（ステップＳ４１３２）、リストlistColがＬＸに設定される（ステップＳ４１３４）。
【０２８０】
一方、この判断が偽の場合（ステップＳ４１２８：ＮＯ）、フラグavailableFlagLXColとフラグpredFlagLXColを共に０とし（ステップＳ４１１６）、動きベクトルmvColを（０，０）として（ステップＳ４１１８）、インター予測情報の導出処理を終了する。
【０２８１】
符号化ブロックcolCbからインター予測情報が取得できたら、フラグavailableFlagLXColとフラグpredFlagLXColを共に１とする（ステップＳ４１３６）。
【０２８２】
続いて、動きベクトルmvColをスケーリングして、動きベクトルmvLXColとする（ステップＳ４１３８）。この処理は、時間予測動きベクトル候補導出部３２２におけるＳ４２４５と同じであるから、説明を省略する。
【０２８３】
再び、図４４を参照する。参照リストごとにインター予測情報を導出したら、算出された動きベクトルmvLXColを中心動きベクトルctrMvLX、算出されたフラグpredFlagLXColをフラグctrPredFlagLXとする（ステップＳ４０２２, ステップＳ４０２３）。
【０２８４】
そして、中心動きベクトルが有効か無効かを判断する（ステップＳ４０２４）。ctrPredFlagL0=0かつctrPredFlagL1=0であれば無効、それ以外は無効と判断する。中心動きベクトルが無効の場合（ステップＳ４０２４：ＮＯ）、サブブロック時間マージ候補の存在を示すフラグavailableFlagSbCol=0に設定して（ステップＳ４００３）、サブブロック時間マージ候補導出部の処理を終了する。
【０２８５】
一方、中心動きベクトルが有効の場合（ステップＳ４０２４：ＹＥＳ）、サブブロック時間マージ候補の存在を示すフラグavailableFlagSbCol=1に設定して（ステップＳ４０２５）、サブブロック動き情報を導出する（ステップＳ４０２６）。この処理について、図４８を参照して説明する。
【０２８６】
まず、符号化ブロックcolCbの幅cbWidthと高さcBheightから、幅方向のサブブロック数numSbXおよび高さ方向のサブブロック数numSbYを算出する（ステップＳ４１５２）。また、refIdxLXSbCol=0とする（ステップＳ４１５２）。この処理以降は、予測サブブロックcolSbの単位で繰り返し処理をする。この繰り返しは、高さ方向のインデックスySbIdxを0からnumSbYまで、幅方向のインデックスxSbIdxを0からnumSbXまで変更しながら処理をする。
【０２８７】
符号化ブロックcolCbの左上の位置を(xCb,yCb)とすると、予測サブブロックcolSbの左上の位置(xSb,ySb)は、
xSb = xCb + xSbIdx * sbWidth
ySb = yCb + ySbIdx * sbHeight
と算出される。次に、予測サブブロックcolSbにテンポラル動きベクトルtempMvを加算した位置を、新たなcolSbとする（ステップＳ４１５４）。予測サブブロックcolSbの左上の位置を(xColSb, yColSb)、テンポラル動きベクトルtempMvを1/16画素精度で(tempMv[0], tempMv[1])とすると、新たなcolSbの左上の位置は、
xColSb = Clip3( xCtb, xCtb + CtbSizeY + 3, xSb + ( tempMv[0] >> 4 ) )
yColSb = Clip3( yCtb, yCtb + CtbSizeY - 1, ySb + ( tempMv[1] >> 4 ) )
となる。ここで、ツリーブロックの左上の位置は(xCtb, yCtb)、ツリーブロックの大きさはCtbSizeYとする。上式に示すように、tempMv加算後の位置は、tempMv加算前に比べて大きくずれないように、ツリーブロックの大きさ程度の範囲に補正される。もしこの位置が画面外となった場合は、画面内に補正される。
【０２８８】
そして、参照リストごとにインター予測情報を導出する（ステップＳ４１５６,Ｓ４１５８）。ここでは、予測サブブロックcolSbについて、サブブロック単位で参照リストごとの動きベクトルmvLXSbColと、予測サブブロックが有効か否かを示すフラグavailableFlagLXSbColを導出する。LXは参照リストを示し、参照リスト０の導出ではLXはL0となり、参照リスト1の導出ではLXはL1となる。インター予測情報の導出は、図４７のＳ４０２２,Ｓ４０２３と同じであるため、説明を省略する。
【０２８９】
インター予測情報を導出後（ステップＳ４１５６,Ｓ４１５８）、予測サブブロックcolSbが有効か否かを判断する（ステップＳ４１６０）。availableFlagL0SbCol=0かつavailableFlagL1SbCol=0の場合はcolSbが無効、それ以外は有効と判断する。colSbが無効の場合（ステップＳ４１６０：ＮＯ）、動きベクトルmvLXSbColを、中心動きベクトルctrMvLXとする（ステップＳ４１６２）。さらに、LX予測を利用しているか否かを示すフラグpredFlagLXSbColを、中心動きベクトルにおけるフラグctrPredFlagLXとする（ステップＳ４１６２）。以上により、サブブロック動き情報の導出を終了する。
【０２９０】
再び、図４４を参照する。そして、L0の動きベクトルmvL0SbCol、およびL1の動きベクトルmvL1SbColを、前述のサブブロックマージモード導出部３０４におけるサブブロックマージ候補リストsubblockMergeCandListに候補として追加する（ステップＳ４０２８）。ただし、この追加は、サブブロック時間マージ候補の存在を示すフラグavailableSbCol=1の場合のみである。以上により、時間マージ候補導出部３４２の処理を終了する。
【０２９１】
上記したサブブロック時間マージ候補導出部３８１の説明は、符号化時のものであるが、復号時も同様となる。つまり、図２２のサブブロックマージモード導出部４０４におけるサブブロック時間マージ候補導出部４８１の動作は、上記の説明における符号化を復号と置き換えて、同様に説明される。
【０２９２】
＜動き補償予測処理＞
動き補償予測部３０６は、符号化において現在予測処理の対象となっているブロックの位置およびサイズを取得する。また、動き補償予測部３０６は、インター予測情報をインター予測モード判定部３０５から取得する。取得したインター予測情報から参照インデックスおよび動きベクトルを導出し、復号画像メモリ内の参照インデックスで特定される参照ピクチャを、動きベクトルの分だけ予測ブロックの画像信号と同一位置より移動させた位置の画像信号を取得した後に予測信号を生成する。
【０２９３】
インター予測におけるインター予測モードがL0予測やL1予測のような、単一の参照ピクチャからの予測の場合には、１つの参照ピクチャから取得した予測信号を動き補償予測信号とし、インター予測モードがBI予測のような、予測モードが２つの参照ピクチャからの予測の場合には、２つの参照ピクチャから取得した予測信号を重みづけ平均したものを動き補償予測信号とし、動き補償予測信号を予測方法決定部に供給する。ここでは双予測の重みづけ平均の比率を１：１とするが、他の比率を用いて重みづけ平均を行っても良い。例えば、予測対象となっているピクチャと参照ピクチャとのピクチャ間隔が近いものほど重みづけの比率が大きくなるようにしてもよい。また、重みづけ比率の算出をピクチャ間隔の組み合わせと重みづけ比率との対応表を用いて行うようにしても良い。
【０２９４】
動き補償予測部４０６は、符号化側の動き補償予測部３０６と同様の機能をもつ。動き補償予測部４０６は、インター予測情報を、通常予測動きベクトルモード導出部４０１、通常マージモード導出部４０２、サブブロック予測動きベクトルモード導出部４０３、サブブロックマージモード導出部４０４から、スイッチ４０８を介して取得する。
【０２９５】
動き補償予測部４０６は、得られた動き補償予測信号を、復号画像信号重畳部２０７に供給する。
【０２９６】
＜インター予測モードについて＞
単一の参照ピクチャからの予測を行う処理を単予測と定義し、単予測の場合はＬ０予測またはＬ１予測という、参照リストＬ０、Ｌ１に登録された２つの参照ピクチャのいずれか一方を利用した予測を行う。Ｌ０予測およびＬ１予測は前方向予測（前方の参照画像を参照する予測）であっても後方向予測（後方の参照画像を参照する予測）であってもよい。図５７〜５８は、Ｌ０予測（単予測）での動き補償予測を説明するための図である。
【０２９７】
図５７はインター予測モードがＬ０予測であってＬ０の参照ピクチャ（ＲｅｆＬ０Ｐｉｃ）が処理対象ピクチャ（ＣｕｒＰｉｃ）より前の時刻にある場合を示している。図５８はＬ０予測であってＬ０の参照ピクチャが処理対象ピクチャより後の時刻にある場合を示している。同様に、図５７および図５８のＬ０予測の参照ピクチャをＬ１予測の参照ピクチャ（ＲｅｆＬ１Ｐｉｃ）に置き換えて単予測を行うこともできる。
【０２９８】
２つの参照ピクチャからの予測を行う処理を双予測と定義し、双予測の場合はＬ０予測とＬ１予測の双方を利用して双予測と表現する。図５９〜６１は、双予測での動き補償予測を説明するための図である。図５９は双予測であってＬ０予測の参照ピクチャが処理対象ピクチャより前の時刻にあって、Ｌ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合を示している。図６０は双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより前の時刻にある場合を示している。図６１は双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合を示している。
【０２９９】
このように、Ｌ０／Ｌ１の予測種別と時間の関係は、Ｌ０が前方向予測（前方の参照画像を参照する予測）、Ｌ１が後方向予測（後方の参照画像を参照する予測）とは限定されずに用いることが可能である。また双予測の場合に、同一の参照ピクチャを用いてＬ０予測及びＬ１予測のそれぞれを行ってもよい。なお、動き補償予測を単予測で行うか双予測で行うかの判断は、例えばＬ０予測を利用するか否か及びＬ１予測を利用するか否かを示す情報（例えば、フラグ）に基づき判断される。
【０３００】
＜参照インデックスについて＞
本発明の実施の形態では、動き補償予測の精度向上のために、動き補償予測において複数の参照ピクチャの中から最適な参照ピクチャを選択することを可能とする。そのため、動き補償予測で利用した参照ピクチャを参照インデックスとして利用するとともに、参照インデックスを符号化ベクトルとともに符号化ストリーム中に符号化する。
【０３０１】
＜通常予測動きベクトルモードに基づく動き補償処理＞
動き補償予測部３０６は、図１６の符号化側におけるインター予測部１０２でも示されるように、インター予測モード判定部３０５において、通常予測動きベクトルモード導出部３０１によるインター予測情報が選択された場合には、このインター予測情報をインター予測モード判定部３０５から取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、予測方法決定部１０５に供給される。
【０３０２】
同様に、動き補償予測部４０６は、図２２の復号側におけるインター予測部２０３でも示されるように、復号の過程でスイッチ４０８が通常予測動きベクトルモード導出部４０１に接続された場合には、通常予測動きベクトルモード導出部４０１によるインター予測情報を取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、復号画像信号重畳部２０７に供給される。
【０３０３】
＜通常マージモードに基づく動き補償処理＞
動き補償予測部３０６は、図１６の符号化側におけるインター予測部１０２でも示されるように、インター予測モード判定部３０５において、通常マージモード導出部３０２によるインター予測情報が選択された場合には、このインター予測情報をインター予測モード判定部３０５から取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、予測方法決定部１０５に供給される。
【０３０４】
同様に、動き補償予測部４０６は、図２２の復号側におけるインター予測部２０３でも示されるように、復号の過程でスイッチ４０８が通常マージモード導出部４０２に接続された場合には、通常マージモード導出部４０２によるインター予測情報を取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、復号画像信号重畳部２０７に供給される。
【０３０５】
＜サブブロック予測動きベクトルモードに基づく動き補償処理＞
動き補償予測部３０６は、図１６の符号化側におけるインター予測部１０２でも示されるように、インター予測モード判定部３０５において、サブブロック予測動きベクトルモード導出部３０３によるインター予測情報が選択された場合には、このインター予測情報をインター予測モード判定部３０５から取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、予測方法決定部１０５に供給される。
【０３０６】
同様に、動き補償予測部４０６は、図２２の復号側におけるインター予測部２０３でも示されるように、復号の過程でスイッチ４０８がサブブロック予測動きベクトルモード導出部４０３に接続された場合には、サブブロック予測動きベクトルモード導出部４０３によるインター予測情報を取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、復号画像信号重畳部２０７に供給される。
【０３０７】
＜サブブロックマージモードに基づく動き補償処理＞
動き補償予測部３０６は、図１６の符号化側におけるインター予測部１０２でも示されるように、インター予測モード判定部３０５において、サブブロックマージモード導出部３０４によるインター予測情報が選択された場合には、このインター予測情報をインター予測モード判定部３０５から取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、予測方法決定部１０５に供給される。
【０３０８】
同様に、動き補償予測部４０６は、図２２の復号側におけるインター予測部２０３でも示されるように、復号の過程でスイッチ４０８がサブブロックマージモード導出部４０４に接続された場合には、サブブロックマージモード導出部４０４によるインター予測情報を取得し、現在処理対象となっているブロックのインター予測モード、参照インデックス、動きベクトルを導出し、動き補償予測信号を生成する。生成された動き補償予測信号は、復号画像信号重畳部２０７に供給される。
【０３０９】
＜アフィンモードに基づく動き補償処理＞
本実施の形態においてはアフィンモデルによる動き補償が利用できる。アフィンモデルによる動き補償は符号化ブロックの２〜４個の角を制御点とし、制御点の動きベクトルからサブブロックの動きベクトルを導出し、サブブロック単位で動き補償を行う。
【０３１０】
以下のフラグは、符号化処理においてインター予測モード判定部３０５により決定されるインター予測の条件に基づいて以下のフラグに反映され、符号化ストリーム中に符号化される。復号処理においては、符号化ストリーム中の以下のフラグに基づいてアフィンモデルによる動き補償を行うか否かを特定する。
【０３１１】
sps_affine_enabled_flagは、インター予測において、アフィンモデルによる動き補償が利用できるか否かを表す。sps_affine_enabled_flagが０であれば、シーケンス単位でアフィンモデルによる動き補償ではないように抑制される。また、inter_affine_flag とcu_affine_type_flag は、符号化ビデオシーケンスのＣＵ（符号化ユニット）シンタックスにおいて伝送されない。sps_affine_enabled_flagが１であれば、符号化ビデオシーケンスにおいてアフィンモデルによる動き補償を利用できる。
【０３１２】
sps_affine_type_flagは、インター予測において、6パラメータアフィンモードによる動き補償が利用できるか否かを表す。6パラメータアフィンモデルは３つの制御点のそれぞれの動きベクトルの水平及び垂直成分の６つのパラメータからサブブロックの動きベクトルを導出し、サブブロック単位で動き補償を行うモードである。サブブロック単位で動きベクトルを導出するが、符号化ブロック単位で共通の参照インデックスを導出する。
【０３１３】
sps_affine_type_flagが０であれば、6パラメータアフィンモデルによる動き補償ではないように抑制される。また、cu_affine_type_flagは、符号化ビデオシーケンスのＣＵシンタックスにおいて伝送されない。sps_affine_type_flagが１であれば、符号化ビデオシーケンスにおいて6パラメータアフィンモデルによる動き補償を利用できる。
【０３１４】
sps_affine_type_flagが存在しない場合には、０であるものとする。
【０３１５】
PまたはBスライスを復号している場合、現在処理対象となっているＣＵにおいて、inter_affine_flagが１であれば、現在処理対象となっているＣＵの動き補償予測信号を生成するために、アフィンモデルによる動き補償が用いられる。
【０３１６】
inter_affine_flagが０であれば、現在処理対象となっているＣＵにアフィンモデルは用いられない。
【０３１７】
inter_affine_flagが存在しない場合には、０であるものとする。
【０３１８】
PまたはBスライスを復号している場合、現在処理対象となっているＣＵにおいて、cu_affine_type_flagが１であれば、現在処理対象となっているＣＵの動き補償予測信号を生成するために、6パラメータアフィンモデルによる動き補償が用いられる。
【０３１９】
cu_affine_type_flagが０であれば、現在処理対象となっているＣＵの動き補償予測信号を生成するために、4パラメータアフィンモデルによる動き補償が用いられる。4パラメータアフィンモデルは２つの制御点のそれぞれの動きベクトルの水平成分及び垂直成分の４つのパラメータからサブブロックの動きベクトルを導出し、サブブロック単位で動き補償を行うモードである。
【０３２０】
＜マージ差分動きベクトル（MMVD）＞
マージ候補の上位２つ（マージ候補リスト内のマージインデックスが０および１のマージ候補）の動きベクトルに対し、差分動きベクトルを加算することができる。この差分動きベクトルを、マージ差分動きベクトルと呼ぶ。
【０３２１】
符号化側のマージ候補選択部３４７においてマージ差分動きベクトルを加算する場合、マージ差分動きベクトルが加算された動きベクトルは、インター予測モード判定部３０５を介して動き補償予測部３０６に供給される。また、ビット列符号化部１０８は、マージ差分動きベクトルに関する情報を符号化する。マージ差分動きベクトルに関する情報とは、動きベクトルに加算する距離を示すインデックスmmvd_distance_idxと、動きベクトルを加算する方向を示すインデックスmmvd_direction_idxである。これらのインデックスは、図６３（ａ）および図６３（ｂ）に示す表のように定義される。そして、マージ差分動きベクトルオフセットMmvdOffsetのx,y成分をそれぞれMmvdOffset[0], MmvdOffset[1]で表すと、
MmvdOffset[0] = ( MmvdDistance << 2 ) * MmvdSign[0]
MmvdOffset[1] = ( MmvdDistance << 2 ) * MmvdSign[1]
となる。マージ差分動きベクトルは、上式のマージ差分動きベクトルオフセットMmvdOffsetより導出される。マージ差分動きベクトルを導出する詳細は、以下の復号側の場合において説明する。
【０３２２】
復号側において、マージ差分動きベクトルが存在する場合、ビット列復号部２０１に供給されるビットストリームからマージ差分動きベクトルに関する情報を分離し、マージ差分動きベクトルオフセットMmvdOffsetを導出する。また、マージ候補選択部４４７は、復号されたマージ差分動きベクトルオフセットから、マージ差分動きベクトルを導出する。このマージ差分動きベクトルを動きベクトルに加算してから、その動きベクトルを動き補償予測部４０６に供給する。
【０３２３】
マージ候補選択部４４７におけるマージ差分動きベクトルmMvdLXの導出について、図６４（ａ）のフローチャートを参照して説明する。まず、符号化ブロックのインター予測モードが双予測（PRED_BI）であるか否かを判定する（Ｓ４４０２）。双予測でない場合（Ｓ４４０２：No）、L0予測（PRED_L0）であるか否かを判定する（Ｓ４４０４）。L0予測の場合（Ｓ４４０４：Yes）、
mMvdL0 = MmvdOffset
mMvdL1 = 0
として（Ｓ４４０６）、マージ差分動きベクトルを導出する処理は終了する。L1予測の場合（Ｓ４４０４：No）、
mMvdL0 = 0
mMvdL1 = MmvdOffset
として（Ｓ４４０８）、マージ差分動きベクトルを導出する処理は終了する。
【０３２４】
一方、双予測の場合（Ｓ４４０２：Yes）、処理対象ピクチャcurrPicと参照ピクチャのPOCの差を、参照リストごとに計算し、それぞれcurrPocDiffL0, currPocDiffL1とする（Ｓ４４１０）。ここで、picAとpicBのPOCの差DiffPicOrderCnt(picA, picB)は、
DiffPicOrderCnt( picA, picB ) = [picAのPOC] - [picBのPOC]
を示す。また、参照ピクチャRefPicList0[ refIdxL0 ]は、参照リストL0の参照インデックスrefIdxL0が示すピクチャである。同様に、参照ピクチャRefPicList1[ refIdxL1 ]は、参照リストL1の参照インデックスrefIdxL1が示すピクチャである。
【０３２５】
次に、-currPocDiffL0 * currPocDiffL1 >= 0か否かを判定する（ステップＳ４４１２）。この判定が真の場合（ステップＳ４４１２：Yes）、
mMvdL0 = MmvdOffset
mMvdL1 = -MmvdOffset
として（ステップＳ４４１４）、マージ差分動きベクトルを導出する処理は終了する。一方、この判定が偽の場合（ステップＳ４４１２：No）、
mMvdL0 = MmvdOffset
mMvdL1 = MmvdOffset
とする（ステップＳ４４１６）。次に、参照リストL0とのPOCの差の絶対値が、参照リストL1とのPOCの差の絶対値以上か否かを判定する（ステップＳ４４１８）。この判定が真の場合（ステップＳ４４１８：Yes）、X=0, Y=1とし（ステップＳ４４２０）、L1のマージ差分動きベクトルmMvdL1をスケーリングする（ステップＳ４４２４）。ここで、mMvdLYは、Y=0の場合はmMvdL0、Y=1の場合はmMvdL1であることを示す。一方、この判定が偽の場合（ステップＳ４４１８：No）、X=1, Y=0とし（ステップＳ４４２２）、L0のマージ差分動きベクトルmMvdL0をスケーリングする（ステップＳ４４２４）。マージ差分動きベクトルmMvdLYのスケーリングは、図６４(b)のように、
td = Clip3( -128, 127, currPocDiffLX )
tb = Clip3( -128, 127, currPocDiffLY )
tx = ( 16384 + Abs( td ) >> 1 ) / td
distScaleFactor = Clip3( -4096, 4095,  ( tb * tx + 32 ) >> 6 )
mMvdLY = Clip3( -32768, 32767, Sign( distScaleFactor * mMvdLY ) 
* ( (Abs( distScaleFactor * mMvdLY ) + 127 ) >> 8 ) )
として導出する。ここで、currPocDiffLXは、X=0の場合はcurrPocDiffL0、X=1の場合はcurrPocDiffL1であることを示す。同様に、currPocDiffLYは、Y=0の場合はcurrPocDiffL0、Y=1の場合はcurrPocDiffL1であることを示す。また、Clip3(x,y,z)は値zについて、最小値をx、最大値をyに制限する関数である。Sign(x)は値xの符号を返す関数であり、Abs(x)は値xの絶対値を返す関数である。以上により、マージ差分動きベクトルを導出する処理は終了する。
【０３２６】
マージ差分動きベクトルは、サブブロックマージ候補の上位２つの動きベクトルに対して加算しても良い。この場合、動きベクトルに加算する距離を示すインデックスmmvd_distance_idxは、図６３（ｃ）に示す表のように定義される。サブブロックマージ候補選択部３８６の動作は、マージ候補選択部３４７と同じであるため、説明を省略する。また、サブブロックマージ候補選択部４８６の動作は、マージ候補選択部４４７と同じであるため、説明を省略する。
【０３２７】
前述の通り、MmvdDistanceは、図６３（ａ）や図６３（ｃ）に示す表のように定義される。これらの表は1/4画素精度で定義されているので、生成されるマージ差分動きベクトルは、小数画素精度を含むことがある。ただし、これらの表の画素精度が1であることを示すフラグをスライス単位で符号化／復号することにより、生成されるマージ差分動きベクトルが、小数画素精度を含まないように変更することができる。
【０３２８】
＜適応動きベクトル解像度（AMVR）＞
符号化ブロック単位で、差分動きベクトルの解像度を適応的に変更することができる。この解像度を、適応動きベクトル解像度と呼ぶ。
【０３２９】
通常予測動きベクトルモードに対して適応動きベクトル解像度を用いる場合について説明する。この場合、空間予測動きベクトル候補導出部３２１および４２１と、時間予測動きベクトル候補導出部３２２および４２２と、履歴予測動きベクトル候補導出部３２３および４２３において、導出された候補の動きベクトルは解像度に応じて丸められる。解像度は1/4,1,4画素精度から選択でき、解像度を変更しない場合は1/4画素精度となる。丸め処理は、処理対象の符号化ブロックにおける動きベクトルの解像度に合わせてなされる。つまり、導出された候補の動きベクトルmvXは、
rightShift = leftShift = MvShift + 2
offset = 1 << ( rightShift - 1 )
mvX = ( mvX >= 0 ? ( mvX + offset ) >> rightShift :
? ( (? mvX + offset ) >> rightShift ) ) << leftShift
と丸め処理される。ここで、処理対象の符号化ブロックにおける動きベクトルの解像度が1/4画素精度の場合、MvShift=0である。同様に、動きベクトルの解像度が1画素精度の場合はMvShift=2であり、動きベクトルの解像度が4画素精度の場合はMvShift=4である。上式により、mvXのx,y成分それぞれが処理される。
【０３３０】
適応動きベクトル解像度は、サブブロック予測動きベクトルモードに対して用いることもできる。この場合、上記の通常予測動きベクトルモードに対して、解像度のみが異なる。すなわち、アフィン継承予測動きベクトル候補導出部３６１および４６１と、アフィン構築予測動きベクトル候補導出部３６２および４６２と、アフィン同一予測動きベクトル候補導出部３６３および４６３において、導出された候補の動きベクトルは解像度に応じて丸められる。解像度は1/16,1/4,1画素精度から選択でき、解像度を変更しない場合は1/16画素精度となる。丸め処理は、処理対象の符号化ブロックにおける動きベクトルの解像度に合わせてなされる。つまり、導出された候補の動きベクトルmvXは、上記の式により丸め処理される。ここで、処理対象の符号化ブロックにおける動きベクトルの解像度が1/４画素精度の場合、MvShift=0である。同様に、動きベクトルの解像度が1画素精度の場合はMvShift=2である。上記の式により、mvXのx,y成分それぞれが処理される。
【０３３１】
（第２の実施の形態）
第２の実施の形態では、参照リストＬ０及び参照リストＬ１の両方がアフィン構築マージ候補導出の条件を満たした場合に、参照リストＬ０のアフィン構築マージ候補と、参照リストＬ１のアフィン構築マージ候補として、それぞれ両方とも使用する。他の構成は第１の実施の形態と同様である。
【０３３２】
これにより、双予測のアフィン構築マージ候補が導出されることを制限しつつ、参照リストＬ０と参照リストＬ１の両方が有効なアフィン構築マージ候補を導出可能な場合に、参照リストＬ０と参照リストＬ１の両方のアフィン構築マージ候補を導出することができ、予測効率の高いアフィン構築マージ候補を導出でき、符号化効率が向上する。
【０３３３】
以上に述べた全ての実施の形態において、画像符号化装置が出力する符号化ビットストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有している。符号化ビットストリームは、ＨＤＤ、ＳＳＤ、フラッシュメモリ、光ディスク等のコンピュータ等で読み解き可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良い。従って、この画像符号化装置に対応する画像復号装置は、提供手段によらず、この特定のデータフォーマットの符号化ビットストリームを復号することができる。
【０３３４】
画像符号化装置と画像復号装置の間で符号化ビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、通信路の伝送形態に適したデータ形式に符号化ビットストリームを変換して伝送してもよい。その場合、画像符号化装置が出力する符号化ビットストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する送信装置と、ネットワークから符号化データを受信して符号化ビットストリームに復元して画像復号装置に供給する受信装置とが設けられる。  送信装置は、画像符号化装置が出力する符号化ビットストリームをバッファするメモリと、符号化ビットストリームをパケット化するパケット処理部と、ネットワークを介してパケット化された符号化データを送信する送信部とを含む。受信装置は、ネットワークを介してパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ビットストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
【０３３５】
画像符号化装置と画像復号装置の間で符号化ビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、送信装置、受信装置に加え、さらに、送信装置が送信する符号化データを受信し、受信装置に供給する中継装置が設けられても良い。中継装置は、送信装置が送信するパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、パケットされた符号化データとネットワークに送信する送信部とを含む。さらに、中継装置は、パケット化された符号化データをパケット処理して符号化ビットストリームを生成する受信パケット処理部と、符号化ビットストリームを蓄積する記録媒体と、符号化ビットストリームをパケット化する送信パケット処理部を含んでも良い。
【０３３６】
また、画像復号装置で復号された画像を表示する表示部を構成に追加することで、表示装置としても良い。その場合、表示部は、復号画像信号重畳部２０７により生成され、復号画像メモリ２０８に格納された復号画像信号を読み出して画面に表示する。
【０３３７】
また、撮像部を構成に追加し、撮像した画像を画像符号化装置に入力することで、撮像装置としても良い。その場合、撮像部は、撮像した画像信号をブロック分割部１０１に入力する。
【０３３８】
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現しても良いのは勿論のこと、ＲＯＭ（リード・オンリー・メモリ）やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによって実現しても良い。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良いし、地上波あるいは衛星ディジタル放送のデータ放送として提供しても良い。
【０３３９】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【０３４０】
１００  画像符号化装置、  １０１  ブロック分割部、  １０２  インター予測部、  １０３  イントラ予測部、１０４  復号画像メモリ、  １０５  予測方法決定部、  １０６  残差信号生成部、  １０７  直交変換・量子化部、  １０８  ビット列符号化部、  １０９  逆量子化・逆直交変換部、  １１０  復号画像信号重畳部、  １１１  符号化情報格納メモリ、  ２００  画像復号装置、  ２０１  ビット列復号部、  ２０２  ブロック分割部、  ２０３  インター予測部  ２０４  イントラ予測部、  ２０５  符号化情報格納メモリ、  ２０６  逆量子化・逆直交変換部、  ２０７  復号画像信号重畳部、  ２０８  復号画像メモリ。
【図１】
2020141271.tif 000003
【図２】
2020141271.tif 000004
【図３】
2020141271.tif 000005
【図４】
2020141271.tif 000006
【図５】
2020141271.tif 000007
【図６】
2020141271.tif 000008
【図７】
2020141271.tif 000009
【図８】
2020141271.tif 000010
【図９】
2020141271.tif 000011
【図１０】
2020141271.tif 000012
【図１１】
2020141271.tif 000013
【図１２】
2020141271.tif 000014
【図１３】
2020141271.tif 000015
【図１４】
2020141271.tif 000016
【図１５】
2020141271.tif 000017
【図１６】
2020141271.tif 000018
【図１７】
2020141271.tif 000019
【図１８】
2020141271.tif 000020
【図１９】
2020141271.tif 000021
【図２０】
2020141271.tif 000022
【図２１】
2020141271.tif 000023
【図２２】
2020141271.tif 000024
【図２３】
2020141271.tif 000025
【図２４】
2020141271.tif 000026
【図２５】
2020141271.tif 000027
【図２６】
2020141271.tif 000028
【図２７】
2020141271.tif 000029
【図２８】
2020141271.tif 000030
【図２９】
2020141271.tif 000031
【図３０】
2020141271.tif 000032
【図３１】
2020141271.tif 000033
【図３２】
2020141271.tif 000034
【図３３】
2020141271.tif 000035
【図３４】
2020141271.tif 000036
【図３５】
2020141271.tif 000037
【図３６】
2020141271.tif 000038
【図３７】
2020141271.tif 000039
【図３８】
2020141271.tif 000040
【図３９】
2020141271.tif 000041
【図４０】
2020141271.tif 000042
【図４１】
2020141271.tif 000043
【図４２】
2020141271.tif 000044
【図４３】
2020141271.tif 000045
【図４４】
2020141271.tif 000046
【図４５】
2020141271.tif 000047
【図４６】
2020141271.tif 000048
【図４７】
2020141271.tif 000049
【図４８】
2020141271.tif 000050
【図４９】
2020141271.tif 000051
【図５０】
2020141271.tif 000052
【図５１】
2020141271.tif 000053
【図５２】
2020141271.tif 000054
【図５３】
2020141271.tif 000055
【図５４】
2020141271.tif 000056
【図５５】
2020141271.tif 000057
【図５６】
2020141271.tif 000058
【図５７】
2020141271.tif 000059
【図５８】
2020141271.tif 000060
【図５９】
2020141271.tif 000061
【図６０】
2020141271.tif 000062
【図６１】
2020141271.tif 000063
【図６２】
2020141271.tif 000064
【図６３】
2020141271.tif 000065
【図６４】
2020141271.tif 000066
【図６５】
2020141271.tif 000067
【図６６】
2020141271.tif 000068