(57)【要約】【課題】画像符号化及び復号化に適したブロック分割を行うことにより、符号化効率を向上させる技術を提供する。【解決手段】履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納部と、符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成部と、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加部と、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択部と、を備え、前記符号化情報格納部は、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。【選択図】図２
2020182208.tif 000002
【特許請求の範囲】
【請求項１】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像を符号化する画像符号化装置であって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納部と、
符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成部と、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加部と、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択部と、
を備え、
前記符号化情報格納部は、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像符号化装置。
【請求項２】
符号化対象ブロックに隣接する複数のブロックの動きベクトルを予測動きベクトル候補として含む予測動きベクトル候補リストを生成する予測動きベクトル候補リスト生成部と、
前記履歴予測動きベクトル候補リストに含まれる履歴候補の動きベクトルを前記予測動きベクトル候補リストに予測動きベクトル候補として追加して第２の予測動きベクトル候補リストを出力する履歴予測動きベクトル候補追加部と、
前記第２の予測動きベクトル候補リストから予測動きベクトル候補を選択予測動きベクトル候補として選択する予測動きベクトル候補選択部と、
前記選択予測動きベクトル候補が参照するピクチャを示す選択参照インデックスを取得する参照インデックス取得部と、
をさらに備え、
前記符号化情報格納部は、前記選択予測動きベクトル候補と前記選択参照インデックスを前記履歴予測動きベクトル候補リストに履歴候補として追加して第２の履歴予測動きベクトル候補リストを出力する請求項１に記載の画像符号化装置。
【請求項３】
前記所定の動きベクトルと参照インデックスは、それぞれ（０，０）と０である請求項１または２に記載の画像符号化装置。
【請求項４】
前記符号化情報格納部は、前記履歴予測動きベクトル候補リストの全ての履歴候補を重複なく充填する請求項１または２に記載の画像符号化装置。
【請求項５】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像を符号化する画像符号化方法であって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、
符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップと、
を備え、
前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像符号化方法。
【請求項６】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像を符号化する画像符号化プログラムであって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、
符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップとをコンピュータに実行させ、
前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像符号化プログラム。
【請求項７】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像が符号化されたビット列を復号する画像復号装置であって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納部と、
復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成部と、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加部と、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択部と、
を備え、
前記符号化情報格納部は、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像復号装置。
【請求項８】
復号対象ブロックに隣接する複数のブロックの動きベクトルを予測動きベクトル候補として含む予測動きベクトル候補リストを生成する予測動きベクトル候補リスト生成部と、
前記履歴予測動きベクトル候補リストに含まれる履歴候補の動きベクトルを前記予測動きベクトル候補リストに予測動きベクトル候補として追加して第２の予測動きベクトル候補リストを出力する履歴予測動きベクトル候補追加部と、
前記第２の予測動きベクトル候補リストから予測動きベクトル候補を選択予測動きベクトル候補として選択する予測動きベクトル候補選択部と、
前記選択予測動きベクトル候補が参照するピクチャを示す選択参照インデックスを取得する参照インデックス取得部と、
をさらに備え、
前記符号化情報格納部は、前記選択予測動きベクトル候補と前記選択参照インデックスを前記履歴予測動きベクトル候補リストに履歴候補として追加して第２の履歴予測動きベクトル候補リストを出力する請求項７に記載の画像復号装置。
【請求項９】
前記所定の動きベクトルと参照インデックスは、それぞれ（０，０）と０である請求項７または８に記載の画像復号装置。
【請求項１０】
前記符号化情報格納部は、前記履歴予測動きベクトル候補リストの全ての履歴候補を重複なく充填する請求項７または８に記載の画像復号装置。
【請求項１１】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像が符号化されたビット列を復号する画像復号方法であって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、
復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップと、
を備え、
前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像復号方法。
【請求項１２】
動画像の各ピクチャを分割したブロック単位でインター予測情報によるインター予測を用いて前記動画像が符号化されたビット列を復号する画像復号プログラムであって、
履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、
復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、
前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、
前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップとをコンピュータに実行させ、
前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力することを特徴とする画像復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像をブロックに分割し、予測を行う画像符号化及び復号技術に関する。
【背景技術】
【０００２】
画像の符号化及び復号では、処理の対象となる画像を所定数の画素の集合であるブロックに分割し、ブロック単位で処理をする。適切なブロックに分割し、画面内予測（イントラ予測）、画面間予測（インター予測）を適切に設定することにより、符号化効率が向上する。
【０００３】
動画像の符号化・復号では、符号化・復号済みのピクチャから予測するインター予測により符号化効率を向上している。特許文献１には、インター予測の際に、アフィン変換を適用する技術が記載されている。動画像では、物体が拡大・縮小、回転といった変形を伴うことは珍しいことではなく、特許文献１の技術を適用することにより、効率的な符号化が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１７２６４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は画像の変換を伴うものであるため、処理負荷が多大という課題がある。本発明は上記の課題に鑑み、低負荷で効率的な符号化技術を提供する。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の第１の態様の画像符号化装置は、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納部と、符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成部と、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加部と、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択部と、を備え、前記符号化情報格納部は、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【０００７】
本発明の第２の態様の画像符号化方法は、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップと、を備え、前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【０００８】
本発明の第３の態様の画像符号化プログラムは、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、符号化対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップとをコンピュータに実行させ、前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【０００９】
本発明の第４の態様の画像復号装置は、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納部と、復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成部と、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加部と、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択部と、を備え、前記符号化情報格納部は、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【００１０】
本発明の第５の態様の画像復号方法は、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップと、を備え、前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【００１１】
本発明の第６の態様の画像復号プログラムであって、履歴予測動きベクトル候補リストの全ての履歴候補を少なくとも所定の動きベクトルと参照インデックスで充填する符号化情報格納ステップと、復号対象ブロックに隣接するブロックの少なくとも動きベクトルと参照インデックスをマージ候補として含むマージ候補リストを生成するマージ候補リスト生成ステップと、前記履歴予測動きベクトル候補リストに含まれる履歴候補を前記マージ候補リストにマージ候補として追加して第２のマージ候補リストを出力する履歴マージ候補追加ステップと、前記第２のマージ候補リストからマージ候補を選択マージ候補として選択するマージ候補選択ステップとをコンピュータに実行させ、前記符号化情報格納ステップは、前記選択マージ候補を前記履歴予測動きベクトル候補リストに履歴候補として追加して前記履歴予測動きベクトル候補リストを出力する。
【発明の効果】
【００１２】
本発明によれば、高効率な画像符号化・復号処理を低負荷で実現することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る画像符号化装置のブロック図である。
【図２】本発明の実施の形態に係る画像復号装置のブロック図である。
【図３】ツリーブロックを分割する動作を説明するためのフローチャートである。
【図４】入力された画像をツリーブロックに分割する様子を示す図である。
【図５】ｚ−スキャンを説明する図である。
【図６Ａ】ブロックの分割形状を示す図である。
【図６Ｂ】ブロックの分割形状を示す図である。
【図６Ｃ】ブロックの分割形状を示す図である。
【図６Ｄ】ブロックの分割形状を示す図である。
【図６Ｅ】ブロックの分割形状を示す図である。
【図７】ブロックを４分割する動作を説明するためのフローチャートである。
【図８】ブロックを２分割または３分割する動作を説明するためのフローチャートである。
【図９】ブロック分割の形状を表現するためのシンタックスである。
【図１０Ａ】イントラ予測を説明するための図である。
【図１０Ｂ】イントラ予測を説明するための図である。
【図１１】インター予測の参照ブロックを説明するための図である。
【図１２】符号化ブロック予測モードを表現するためのシンタックスである。
【図１３】インター予測に関するシンタックスエレメントとモードの対応を示す図である。
【図１４】制御点２点のアフィン変換動き補償を説明するための図である。
【図１５】制御点３点のアフィン変換動き補償を説明するための図である。
【図１６】図１のインター予測部１０２の詳細な構成のブロック図である。
【図１７】図１６の通常予測動きベクトルモード導出部３０１の詳細な構成のブロック図である。
【図１８】図１６の通常マージモード導出部３０２の詳細な構成のブロック図である。
【図１９】図１６の通常予測動きベクトルモード導出部３０１の通常予測動きベクトルモード導出処理を説明するためのフローチャートである。
【図２０】通常予測動きベクトルモード導出処理の処理手順を表すフローチャートである。
【図２１】通常マージモード導出処理の処理手順を説明するフローチャートである。
【図２２】図２のインター予測部２０３の詳細な構成のブロック図である。
【図２３】図２２の通常予測動きベクトルモード導出部４０１の詳細な構成のブロック図である。
【図２４】図２２の通常マージモード導出部４０２の詳細な構成のブロック図である。
【図２５】図２２の通常予測動きベクトルモード導出部４０１の通常予測動きベクトルモード導出処理を説明するためのフローチャートである。
【図２６】履歴予測動きベクトル候補リスト初期化・更新処理手順を説明する図である。
【図２７】履歴予測動きベクトル候補リスト初期化・更新処理手順における、同一要素確認処理手順のフローチャートである。
【図２８】履歴予測動きベクトル候補リスト初期化・更新処理手順における、要素シフト処理手順のフローチャートである。
【図２９】履歴予測動きベクトル候補導出処理手順を説明するフローチャートである。
【図３０】履歴マージ候補導出処理手順を説明するフローチャートである。
【図３１Ａ】履歴予測動きベクトル候補リスト更新処理の一例を説明するための図である。
【図３１Ｂ】履歴予測動きベクトル候補リスト更新処理の一例を説明するための図である。
【図３１Ｃ】履歴予測動きベクトル候補リスト更新処理の一例を説明するための図である。
【図３２】Ｌ０予測であってＬ０の参照ピクチャ（ＲｅｆＬ０Ｐｉｃ）が処理対象ピクチャ（ＣｕｒＰｉｃ）より前の時刻にある場合の動き補償予測を説明するための図である。
【図３３】Ｌ０予測であってＬ０予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測を説明するための図である。
【図３４】双予測であってＬ０予測の参照ピクチャが処理対象ピクチャより前の時刻にあって、Ｌ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測の予測方向を説明するための図である。
【図３５】双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより前の時刻にある場合の動き補償予測の予測方向を説明するための図である。
【図３６】双予測であってＬ０予測の参照ピクチャとＬ１予測の参照ピクチャが処理対象ピクチャより後の時刻にある場合の動き補償予測の予測方向を説明するための図である。
【図３７】本発明の実施の形態の符号化復号装置のハードウェア構成の一例を説明するための図である。
【図３８】履歴予測動きベクトル候補リストの初期化によって追加される履歴予測動きベクトル候補の別の一例を示す表である。
【図３９】履歴予測動きベクトル候補リストの初期化によって追加される履歴予測動きベクトル候補の別の一例を示す表である。
【図４０】履歴予測動きベクトル候補リストの初期化によって追加される履歴予測動きベクトル候補の別の一例を示す表である。
【図４１】履歴予測動きベクトル候補リストの構成を説明するための図である。
【図４２】履歴予測動きベクトル候補リストへの追加の際に、先頭要素を削除する様子を説明するための図である。
【図４３】履歴予測動きベクトル候補リストへの追加の際に、リスト内で各要素をシフトする様子を説明するための図である。
【図４４】履歴予測動きベクトル候補リストへの追加の際に、新たな要素を追加する様子を説明するための図である。
【図４５】第２の実施の形態の通常マージモードでの履歴予測動きベクトル候補リストの参照順を説明するための図である。
【図４６】第２の実施の形態の通常予測動きベクトルモードでの履歴予測動きベクトル候補リストの参照順を説明するための図である。
【図４７】第２の実施の形態の履歴予測動きベクトル候補導出処理手順を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
本実施の形態において使用する技術、及び技術用語を定義する。
【００１５】
＜ツリーブロック＞
実施の形態では、所定の大きさで符号化・復号処理対象画像を均等分割する。この単位をツリーブロックと定義する。図４では、ツリーブロックのサイズを１２８ｘ１２８画素としているが、ツリーブロックのサイズはこれに限定されるものではなく、任意のサイズを設定してよい。処理対象（符号化処理においては符号化対象、復号処理においては復号対象に対応する。）のツリーブロックは、ラスタスキャン順、すなわち左から右、上から下の順序で切り替わる。各ツリーブロックの内部は、さらに再帰的な分割が可能である。ツリーブロックを再帰的に分割した後の、符号化・復号の対象となるブロックを符号化ブロックと定義する。また、ツリーブロック、符号化ブロックを総称してブロックと定義する。適切なブロック分割を行うことにより効率的な符号化が可能となる。ツリーブロックのサイズは、符号化装置と復号装置で予め取り決めた固定値とすることもできるし、符号化装置が決定したツリーブロックのサイズを復号装置に伝送するような構成をとることもできる。ここでは、ツリーブロックの最大サイズを１２８ｘ１２８画素、ツリーブロックの最小サイズを１６ｘ１６画素とする。また、符号化ブロックの最大サイズを６４ｘ６４画素、符号化ブロックの最小サイズを４ｘ４画素とする。
【００１６】
＜予測モード＞
処理対象符号化ブロック単位で、処理対象画像の処理済み画像信号から予測を行うイントラ予測（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を符号化する。予測モードがインター予測（MODE_INTER）の場合、ビット列符号化部１０８は、マージモードか否かを判別するフラグ、サブブロックマージフラグ、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトルに関する情報、サブブロック予測動きベクトルフラグ等の符号化情報（インター予測情報）を規定のシンタックス（ビット列の構文規則）に従って符号化し、第１のビット列を生成する。予測モードがイントラ予測（MODE_INTRA）の場合、イントラ予測モード等の符号化情報（イントラ予測情報）を規定のシンタックス（ビット列の構文規則）に従って符号化し、第１のビット列を生成する。また、ビット列符号化部１０８は、直交変換及び量子化された残差を規定のシンタックスに従ってエントロピー符号化して第２のビット列を生成する。ビット列符号化部１０８は、第１のビット列と第２のビット列を規定のシンタックスに従って多重化し、ビットストリームを出力する。
【００３９】
逆量子化・逆直交変換部１０９は、直交変換・量子化部１０７から供給された直交変換・量子化された残差を逆量子化及び逆直交変換して残差を算出し、算出した残差を復号画像信号重畳部１１０に供給する。
【００４０】
復号画像信号重畳部１１０は、予測方法決定部１０５による決定に応じた予測画像信号と逆量子化・逆直交変換部１０９で逆量子化及び逆直交変換された残差を重畳して復号画像を生成し、復号画像メモリ１０４に格納する。なお、復号画像信号重畳部１１０は、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施した後、復号画像メモリ１０４に格納してもよい。
【００４１】
符号化情報格納メモリ１１１は、予測方法決定部１０５で決定した、予測モード（インター予測またはイントラ予測）等の符号化情報を格納する。インター予測の場合は、符号化情報格納メモリ１１１が格納する符号化情報には、決定した動きベクトル、参照リストＬ０、Ｌ１の参照インデックス、履歴予測動きベクトル候補リスト等のインター予測情報が含まれる。またインター予測のマージモードの場合は、符号化情報格納メモリ１１１が格納する符号化情報には、上述の各情報に加え、マージインデックス、サブブロックマージモードか否かを示す情報（サブブロックマージフラグ）のインター予測情報が含まれる。またインター予測の予測動きベクトルモードの場合は、符号化情報格納メモリ１１１が格納する符号化情報には、上述の各情報に加え、インター予測モード、予測動きベクトルインデックス、差分動きベクトル、サブブロック予測動きベクトルモードか否かを示す情報（サブブロック予測動きベクトルフラグ）等のインター予測情報が含まれる。イントラ予測の場合は、符号化情報格納メモリ１１１が格納する符号化情報には、決定したイントラ予測モード等のイントラ予測情報が含まれる。
【００４２】
図２は、図１の画像符号化装置に対応した本発明の実施の形態に係る画像復号装置の構成を示すブロックである。実施の形態の画像復号装置は、ビット列復号部２０１、ブロック分割部２０２、インター予測部２０３、イントラ予測部２０４、符号化情報格納メモリ２０５、逆量子化・逆直交変換部２０６、復号画像信号重畳部２０７、および復号画像メモリ２０８を備える。
【００４３】
図２の画像復号装置の復号処理は、図１の画像符号化装置の内部に設けられている復号処理に対応するものであるから、図２の符号化情報格納メモリ２０５、逆量子化・逆直交変換部２０６、復号画像信号重畳部２０７、および復号画像メモリ２０８の各構成は、図１の画像符号化装置の符号化情報格納メモリ１１１、逆量子化・逆直交変換部１０９、復号画像信号重畳部１１０、および復号画像メモリ１０４の各構成とそれぞれ対応する機能を有する。
【００４４】
ビット列復号部２０１に供給されるビットストリームは、規定のシンタックスの規則に従って分離される。ビット列復号部２０１は、分離された第１のビット列を復号し、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報、及び、符号化ブロック単位の符号化情報を得る。具体的には、ビット列復号部２０１は、符号化ブロック単位でインター予測（MODE_INTER）かイントラ予測（MODE_INTRA）かを判別する予測モードPredModeを復号する。予測モードがインター予測（MODE_INTER）の場合、ビット列復号部２０１は、マージモードか否かを判別するフラグ、マージモードの場合はマージインデックス、サブブロックマージフラグ、予測動きベクトルモードである場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトル、サブブロック予測動きベクトルフラグ等に関する符号化情報（インター予測情報）を規定のシンタックスに従って復号し、符号化情報（インター予測情報）をインター予測部２０３、およびブロック分割部２０２を介して符号化情報格納メモリ２０５に供給する。予測モードがイントラ予測（MODE_INTRA）の場合、イントラ予測モード等の符号化情報（イントラ予測情報）を規定のシンタックスに従って復号し、符号化情報（イントラ予測情報）をインター予測部２０３またはイントラ予測部２０４、およびブロック分割部２０２を介して符号化情報格納メモリ２０５に供給する。ビット列復号部２０１は、分離した第２のビット列を復号して直交変換・量子化された残差を算出し、直交変換・量子化された残差を逆量子化・逆直交変換部２０６に供給する。
【００４５】
インター予測部２０３は、処理対象の符号化ブロックの予測モードPredModeがインター予測（MODE_INTER）で予測動きベクトルモードである時に、符号化情報格納メモリ２０５に記憶されている既に復号された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を導出して、導出した複数の予測動きベクトルの候補を、後述する予測動きベクトル候補リストに登録する。インター予測部２０３は、予測動きベクトル候補リストに登録された複数の予測動きベクトルの候補の中から、ビット列復号部２０１で復号され供給される予測動きベクトルインデックスに応じた予測動きベクトルを選択し、ビット列復号部２０１で復号された差分動きベクトルと選択された予測動きベクトルから動きベクトルを算出し、算出した動きベクトルを他の符号化情報とともに符号化情報格納メモリ２０５に格納する。ここで供給・格納する符号化ブロックの符号化情報は、予測モードPredMode、Ｌ０予測、及びＬ１予測を利用するか否かを示すフラグ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がインター予測（MODE_INTER）でマージモードの時に、マージ候補を導出する。符号化情報格納メモリ２０５に記憶されている既に復号された符号化ブロックの符号化情報を用いて、複数のマージの候補を導出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中からビット列復号部２０１で復号され供給されるマージインデックスに対応したマージ候補を選択し、選択されたマージ候補のＬ０予測、及びＬ１予測を利用するか否かを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、Ｌ０、Ｌ１の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、Ｌ０、Ｌ１の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報を符号化情報格納メモリ２０５に格納する。ここで、xP、yPはピクチャ内での符号化ブロックの左上の画素の位置を示すインデックスである。インター予測部２０３の詳細な構成と動作は後述する。
【００４６】
イントラ予測部２０４は、処理対象の符号化ブロックの予測モードPredModeがイントラ予測（MODE_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_binary=1)、２分割した各ブロックについて、再帰的に分割処理をする(multi_type_tree(0), multi_type_tree(1)、引数の０〜１は図６Ｂ〜Ｄの６０２または６０４の番号に対応する。)。３分割する場合(mtt_split_binary=0)、３分割した各ブロックについて、再帰的に分割処理をする(multi_type_tree(0), multi_type_tree(1), multi_type_tree(2)、０〜２は図６Ｂの６０３または図６Ｅの６０５の番号に対応する。)。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を選択する（図１９のステップＳ１０４）。ここで、予測動きベクトル候補リストmvpListLXの中で、ある１つの要素（０から数えてｉ番目の要素）をmvpListLX[i]として表す。動きベクトル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に０を設定する。
【００９４】
空間予測動きベクトル候補導出部３２１及び４２１は、左側に隣接するブロックからの予測動きベクトルの候補を導出する。この処理では、左側に隣接するブロック（図１１のＡ０またはＡ１）のインター予測情報、すなわち予測動きベクトル候補が利用できるか否かを示すフラグ、及び動きベクトル、参照インデックス等を参照して予測動きベクトルmvLXA導出し、導出したmvLXAを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０１）。なお、Ｌ０予測のときＸは０、Ｌ１予測のときＸは１とする（以下同様）。続いて、空間予測動きベクトル候補導出部３２１及び４２１は、上側に隣接するブロックからの予測動きベクトルの候補を導出する。この処理では、上側に隣接するブロック（図１１のＢ０，Ｂ１，またはＢ２）のインター予測情報、すなわち予測動きベクトル候補が利用できるか否かを示すフラグ、及び動きベクトル、参照インデックス等を参照して予測動きベクトルmvLXBを導出し、それぞれ導出したmvLXAとmvLXBとが等しくなければ、mvLXBを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０２）。図２０のステップＳ３０１とＳ３０２の処理は参照する隣接ブロックの位置と数が異なる点以外は共通であり、符号化ブロックの予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXN、及び動きベクトルmvLXN、参照インデックスrefIdxN（ＮはＡまたはＢを示す、以下同様）を導出する。
【００９５】
続いて、時間予測動きベクトル候補導出部３２２及び４２２は、現在の処理対象ピクチャとは時間が異なるピクチャにおけるブロックからの予測動きベクトルの候補を導出する。この処理では、異なる時間のピクチャの符号化ブロックの予測動きベクトル候補が利用できるか否かを示すフラグavailableFlagLXCol、及び動きベクトルmvLXCol、参照インデックスrefIdxCol、参照リストlistColを導出し、mvLXColを予測動きベクトル候補リストmvpListLXに追加する（図２０のステップＳ３０３）。
【００９６】
なお、シーケンス（ＳＰＳ）、ピクチャ（ＰＰＳ）、またはスライスの単位で時間予測動きベクトル候補導出部３２２及び４２２の処理を省略することができるものとする。
【００９７】
続いて、履歴予測動きベクトル候補導出部３２３及び４２３は履歴予測動きベクトル候補リスト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を導出する。
【０１０６】
なお、シーケンス（ＳＰＳ）、ピクチャ（ＰＰＳ）、またはスライスの単位で時間マージ候補導出部３４２及び時間マージ候補導出部４４２の処理を省略することができるものとする。
【０１０７】
続いて、履歴マージ候補導出部３４５及び履歴マージ候補導出部４４５では、履歴予測動きベクトル候補リストHmvpCandListに登録されている履歴予測動きベクトル候補をマージ候補リストmergeCandListに登録する（図２１のステップＳ４０３）。
なお、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが、最大マージ候補数MaxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが最大マージ候補数MaxNumMergeCandを上限として履歴マージ候補は導出されて、マージ候補リストmergeCandListに登録される。
【０１０８】
続いて、平均マージ候補導出部３４４及び平均マージ候補導出部４４４では、マージ候補リストmergeCandListから平均マージ候補を導出して、導出された平均マージ候補をマージ候補リストmergeCandListに追加する（図２１のステップＳ４０４）。
なお、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが、最大マージ候補数MaxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが最大マージ候補数MaxNumMergeCandを上限として平均マージ候補は導出されて、マージ候補リストmergeCandListに登録される。
ここで、平均マージ候補は、マージ候補リストmergeCandListに登録されている第１のマージ候補と第２のマージ候補の有する動きベクトルをＬ０予測及びＬ１予測毎に平均して得られる動きベクトルを有する新たなマージ候補である。
【０１０９】
続いて、マージ候補補充部３４６及びマージ候補補充部４４６では、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが、最大マージ候補数MaxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numCurrMergeCandが最大マージ候補数MaxNumMergeCandを上限として追加マージ候補を導出して、マージ候補リストmergeCandListに登録する（図２１のステップＳ４０５）。最大マージ候補数MaxNumMergeCandを上限として、Ｐスライスでは、動きベクトルが（０，０）の値を持つ予測モードがＬ０予測（Pred_L0）のマージ候補を追加する。Ｂスライスでは、動きベクトルが（０，０）の値を持つ予測モードが双予測（Pred_BI）のマージ候補を追加する。マージ候補を追加する際の参照インデックスは、すでに追加した参照インデックスと異なる。
【０１１０】
続いて、マージ候補選択部３４７及びマージ候補選択部４４７では、マージ候補リストmergeCandList内に登録されているマージ候補からマージ候補を選択する。符号化側のマージ候補選択部３４７では、符号量とひずみ量を算出することによりマージ候補を選択し、選択されたマージ候補を示すマージインデックス、マージ候補のインター予測情報を、インター予測モード判定部３０５を介して動き補償予測部３０６に供給する。一方、復号側のマージ候補選択部４４７では、復号されたマージインデックスに基づいて、マージ候補を選択し、選択されたマージ候補を動き補償予測部４０６に供給する。
【０１１１】
通常マージモード導出部３０２及び通常マージモード導出部４０２では、ある符号化ブロックのサイズ（幅と高さの積）が３２未満の場合、その符号化ブロックの親ブロックにおいてマージ候補が導出される。そして、全ての子ブロックでは、親ブロックにおいて導出されたマージ候補を用いる。ただし、親ブロックのサイズが３２以上で、かつ画面内に収まっている場合に限る。
【０１１２】
＜履歴予測動きベクトル候補リストの更新＞
次に、符号化側の符号化情報格納メモリ１１１及び復号側の符号化情報格納メモリ２０５に備える履歴予測動きベクトル候補リスト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の値を6に設定する。または、スライスの先頭で履歴予測動きベクトル候補リストHmvpCandListのすべての要素を空にし、履歴予測動きベクトル候補リストHmvpCandListに登録されている履歴予測動きベクトル候補の数（現在の候補数）NumHmvpCandの値は0に設定しても良い。
【０１１９】
なお、履歴予測動きベクトル候補リストHmvpCandListの初期化をスライス単位（スライスの最初の符号化ブロック）で実施するとしたが、ピクチャ単位、タイル単位やツリーブロック行単位で実施しても良い。
【０１２０】
図３８は履歴予測動きベクトル候補リストHmvpCandListの初期化によって追加される履歴予測動きベクトル候補の一例を示す表である。スライスタイプがBスライスで、参照ピクチャの枚数が4の場合の例を示す。履歴予測動きベクトルインデックスhMvpIdxが（履歴予測動きベクトル候補の数NumHmvpCand-1）から０までの、スライスタイプに応じて動きベクトルmvLXHmvp（Xは0または1）の値が(0, 0)のインター予測情報を、履歴予測動きベクトル候補として、履歴予測動きベクトル候補リストHmvpCandListに追加して、履歴予測動きベクトル候補リストを履歴候補で充填する。このとき、履歴予測動きベクトルインデックスhMvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）には０から（参照ピクチャの数numRefIdx-1）まで１ずつインクリメントした値を設定する。その後は、履歴予測動きベクトル候補同士の重複を許可して、参照インデックスrefIdxLXには０の値を設定する。履歴予測動きベクトル候補の数NumHmvpCandにすべての値を設定し、履歴予測動きベクトル候補の数NumHmvpCandの値を固定値にすることで、無効な履歴予測動きベクトル候補を無くす。このように、予測動きベクトル候補リストやマージ候補リストに追加される確率の高い履歴予測動きベクトルインデックスhMvpIdxが大きい値の候補から、一般的に選択率の高い参照インデックスrefIdxLXの小さい値を割り当てることで、符号化効率を向上させることができる。
【０１２１】
また、スライス単位で履歴予測動きベクトル候補リストを履歴予測動きベクトル候補で充填しておくことで、履歴予測動きベクトル候補の数を固定値として扱うことができるため、例えば履歴予測動きベクトル候補導出処理や履歴マージ候補導出処理を簡易化することができる。
【０１２２】
ここでは、動きベクトルの値を一般的に選択確率の高い(0, 0)としたが、所定の値であれば他の値でもよい。例えば、(4,4)、(0,32)、(-128,0)などの値にして差分動きベクトルの符号化効率を改善しても良いし、所定値を複数設定して差分動きベクトルの符号化効率を改善しても良い。
【０１２３】
また、履歴予測動きベクトルインデックスhMvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）には０から（参照ピクチャの数numRefIdx-1）まで１ずつインクリメントした値を設定するとしたが、履歴予測動きベクトルインデックスhMvpIdxを０から開始してもよい。
【０１２４】
図３９は履歴予測動きベクトル候補リストHmvpCandListの初期化によって追加される履歴予測動きベクトル候補の別の一例を示す表である。スライスタイプがBスライスで、参照ピクチャの枚数が2の場合の例を示す。この例では履歴予測動きベクトル候補リストHmvpCandListの各要素に履歴予測動きベクトル候補同士の重複がないように、参照インデックスrefIdxLX（Xは0または1）または動きベクトルmvLXHmvp（Xは0または1）の値のいずれかが異なるインター予測情報を履歴予測動きベクトル候補として最大要素数だけ追加して、履歴予測動きベクトル候補リストを充填する。このとき、履歴予測動きベクトルインデックスhMvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）には０から（参照ピクチャの数numRefIdx-1）まで１ずつインクリメントした値を設定する。その後は、参照インデックスrefIdxLXは０とし、（０，０）とは異なる値の動きベクトルmvLXHmvpを履歴予測動きベクトル候補として追加する。履歴予測動きベクトル候補の数NumHmvpCandにすべての値を設定し、履歴予測動きベクトル候補の数NumHmvpCandの値を固定値にすることで、無効な履歴予測動きベクトル候補を無くす。
【０１２５】
このように、スライス単位で履歴予測動きベクトル候補リストを重複しない履歴予測動きベクトル候補で充填しておくことで、さらに、符号化ブロック単位で実施する後述の通常マージモード導出部３０２における履歴マージ候補導出部３４５より後のマージ候補補充部３４６の処理を省略することができ、処理量を削減することができる。
【０１２６】
ここでは、動きベクトルmvLXHmvpの各成分の絶対値を0または1としたが、履歴予測動きベクトル候補同士の重複が生じなければ、動きベクトルmvLXHmvpの各成分の絶対値を1より大きくしてもよい。
【０１２７】
また、履歴予測動きベクトルインデックスhmvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）には０から（参照ピクチャの数numRefIdx-1）まで１ずつインクリメントした値を設定するとしたが、履歴予測動きベクトルインデックスhMvpIdxを０から開始してもよい。
【０１２８】
図４０は履歴予測動きベクトル候補リストHmvpCandListの初期化によって追加される履歴予測動きベクトル候補の別の一例を示す表である。
【０１２９】
スライスタイプがBスライスで、参照ピクチャの枚数が１の場合の例を示す。この例では履歴予測動きベクトル候補リストHmvpCandListの各要素に履歴予測動きベクトル候補同士の重複がないように、参照インデックスrefIdxLXが０で、動きベクトルmvLXHmvpの値が異なるインター予測情報を履歴予測動きベクトル候補として追加して、履歴予測動きベクトル候補リストを充填する。このとき、履歴予測動きベクトルインデックスhMvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）は０で動きベクトルmvLXHmvpの値が異なるインター予測情報を設定する。履歴予測動きベクトル候補の数NumHmvpCandにすべての値を設定し、履歴予測動きベクトル候補の数NumHmvpCandの値を固定値にすることで、無効な履歴予測動きベクトル候補を無くす。
【０１３０】
このように、参照インデックスrefIdxLXを０とすることで、さらに、参照ピクチャの数を考慮することなく初期化することができるため処理を簡易化することができる。
【０１３１】
ここでは、動きベクトルmvLXHmvpの各成分の絶対値を０、１または2の累乗としたが、参照インデックスが０で履歴予測動きベクトル候補同士の重複が生じなければ、動きベクトルmvLXHmvpの各成分の絶対値を3,4など2以外の値の累乗としてもよいし、他の任意の値にしてもよい。
【０１３２】
また、履歴予測動きベクトルインデックスhMvpIdxを（履歴予測動きベクトル候補の数NumHmvpCand-1）から開始し、参照インデックスrefIdxLX（Xは0または1）は０で動きベクトルmvLXHmvpの値が異なるインター予測情報を設定するとしたが、履歴予測動きベクトルインデックスhMvpIdxを０から開始してもよい。
【０１３３】
続いて、スライス内の符号化ブロック毎に以下の履歴予測動きベクトル候補リストHmvpCandListの更新処理を繰り返し行なう（図２６のステップＳ２１０２〜Ｓ２１１１）。
【０１３４】
まず、符号化ブロック単位での初期設定を行う。同一候補が存在するか否かを示すフラグidenticalCandExistにFALSE（偽）の値を設定し、削除対象の候補を示す削除対象インデックスremoveIdxに０を設定する（図２６のステップＳ２１０３）。
【０１３５】
登録対象のインター予測情報候補hMvpCandが存在するか否かを判定する（図２６のステップＳ２１０４）。符号化側の予測方法決定部１０５で通常予測動きベクトルモードまたは通常マージモードと判定された場合、または復号側のビット列復号部２０１で通常予測動きベクトルモードまたは通常マージモードとして復号された場合、そのインター予測情報を登録対象のインター予測情報候補hMvpCandとする。符号化側の予測方法決定部１０５でイントラ予測モード、サブブロック予測動きベクトルモードまたはサブブロックマージモードと判定された場合、または復号側のビット列復号部２０１でイントラ予測モード、サブブロック予測動きベクトルモードまたはサブブロックマージモードとして復号された場合、履歴予測動きベクトル候補リストHmvpCandListの更新処理を行わず、登録対象のインター予測情報候補hMvpCandは存在しない。登録対象のインター予測情報候補hMvpCandが存在しない場合はステップＳ２１０５〜Ｓ２１０６をスキップする（図２６のステップＳ２１０４：ＮＯ）。登録対象のインター予測情報候補hMvpCandが存在する場合はステップＳ２１０５以下の処理を行う（図２６のステップＳ２１０４：ＹＥＳ）。
【０１３６】
続いて、履歴予測動きベクトル候補リストHmvpCandListの各要素の中に登録対象のインター予測情報候補hMvpCandと同じ値の要素（インター予測情報）、すなわち同一の要素が存在するか否かを判定する（図２６のステップＳ２１０５）。図２７はこの同一要素確認処理手順のフローチャートである。履歴予測動きベクトル候補の数NumHmvpCandの値が０の場合（図２７のステップＳ２１２１：ＮＯ）、履歴予測動きベクトル候補リストHmvpCandListは空で、同一候補は存在しないので図２７のステップＳ２１２２〜Ｓ２１２５をスキップし、本同一要素確認処理手順を終了する。履歴予測動きベクトル候補の数NumHmvpCandの値が0より大きい場合（図２７のステップＳ２１２１のＹＥＳ）、履歴予測動きベクトルインデックスhMvpIdxが0からNumHmvpCand-1まで、ステップＳ２１２３の処理を繰り返す（図２７のステップＳ２１２２〜Ｓ２１２５）。まず、履歴予測動きベクトル候補リストの０から数えてhMvpIdx番目の要素HmvpCandList[hMvpIdx]がインター予測情報候補hMvpCandと同一か否かを比較する（図２７のステップＳ２１２３）。同一の場合（図２７のステップＳ２１２３：ＹＥＳ）、同一候補が存在するか否かを示すフラグidenticalCandExistにTRUE（真）の値を設定し、削除対象の要素の位置を示す削除対象インデックスremoveIdxに現在の履歴予測動きベクトルインデックスhMvpIdxの値を設定し、本同一要素確認処理を終了する。同一でない場合（図２７のステップＳ２１２３：ＮＯ）、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を１インクリメントする（図２８のステップＳ２１４２〜Ｓ２１４４）。続いて、履歴予測動きベクトル候補リストの最後に相当する０から数えて(NumHmvpCand-1)番目HmvpCandList[NumHmvpCand-1]にインター予測情報候補hMvpCandを追加し（図２８のステップＳ２１４５）、本履歴予測動きベクトル候補リスト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の値が０より大きい場合（図２９のステップＳ２２０１のＹＥＳ）、図２９のステップＳ２２０２からＳ２２０９の処理を行う。
【０１４１】
続いて、インデックスｉが１から、４と履歴予測動きベクトル候補の数numCheckedHMVPCandのいずれか小さい値まで、図２９のステップＳ２２０３からＳ２２０８の処理を繰り返す（図２９のステップＳ２２０２〜Ｓ２２０９）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２以上の場合（図２９のステップＳ２２０３：ＮＯ）、図２９のステップＳ２２０４からＳ２２０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図２９のステップＳ２２０３：ＹＥＳ）、図２９のステップＳ２２０４以降の処理を行う。
【０１４２】
続いて、ステップＳ２２０５からＳ２２０７までの処理をＹが０と１（Ｌ０とＬ１）についてそれぞれ行う（図２９のステップＳ２２０４〜Ｓ２２０８）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数数である２以上の場合（図２９のステップＳ２２０５：ＮＯ）、図２９のステップＳ２２０６からＳ２２０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図２９のステップＳ２２０５：ＹＥＳ）、図２９のステップＳ２２０６以降の処理を行う。
【０１４３】
続いて、履歴予測動きベクトル候補リストHmvpCandListの中に、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じ参照インデックスの要素であり、予測動きベクトルリストmvpListLXのどの要素とも異なる要素の場合（図２９のステップＳ２２０６：ＹＥＳ）、予測動きベクトル候補リストの０から数えてnumCurrMvpCand番目の要素mvpListLX[numCurrMvpCand]に履歴予測動きベクトル候補HmvpCandList[NumHmvpCand - i]のLYの動きベクトルを追加し（図２９のステップＳ２２０７）、現在の予測動きベクトル候補の数numCurrMvpCandを１インクリメントする。履歴予測動きベクトル候補リストHmvpCandListの中に、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じ参照インデックスの要素であり、予測動きベクトルリストmvpListLXのどの要素とも異なる要素がない場合（図２９のステップＳ２２０６：ＮＯ）、ステップＳ２２０７の追加処理をスキップする。
【０１４４】
以上の図２９のステップＳ２２０５からＳ２２０７の処理をＬ０とＬ１で双方ともに行う（図２９のステップＳ２２０４〜Ｓ２２０８）。インデックスｉを１インクリメントし、インデックスｉが４と履歴予測動きベクトル候補の数NumHmvpCandのいずれか小さい値以下の場合、再びステップＳ２２０３以降の処理を行う（図２９のステップＳ２２０２〜Ｓ２２０９）。
【０１４５】
＜履歴マージ候補導出処理＞
次に、符号化側の通常マージモード導出部３０２の履歴マージ候補導出部３４５、復号側の通常マージモード導出部４０２の履歴マージ候補導出部４４５で共通の処理である図２１のステップＳ４０４の処理手順である履歴マージ候補リストHmvpCandListからの履歴マージ候補の導出方法について詳細に説明する。図３０は履歴マージ候補導出処理手順を説明するフローチャートである。
【０１４６】
まず、初期化処理を行う（図３０のステップＳ２３０１）。isPruned[i]の0から(numCurrMergeCand -1)番目のそれぞれの要素にFALSEの値を設定し、変数numOrigMergeCandに現在のマージ候補リストに登録されている要素の数numCurrMergeCandを設定する。
【０１４７】
続いて、インデックスhMvpIdxの初期値を1に設定し、この初期値からNumHmvpCandまで、図３０のステップＳ２３０３からステップＳ２３１０までの追加処理を繰り返す（図３０のステップＳ２３０２〜Ｓ２３１１）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下でなければ、マージ候補リストのすべての要素にマージ候補が追加されたので、本履歴マージ候補導出処理を終了する（図３０のステップＳ２３０３のＮＯ）。現在のマージ候補リストに登録されている要素の数numCurrMergeCandが(最大マージ候補数MaxNumMergeCand-1)以下の場合、ステップＳ２３０４以降の処理を行う。sameMotionにFALSE（偽）の値を設定する（図３０のステップＳ２３０４）。続いて、インデックスiの初期値を0に設定し、この初期値からnumOrigMergeCand-1まで図３０のステップＳ２３０６、Ｓ２３０７の処理を行う（図３０のＳ２３０５〜Ｓ２３０８）。履歴動きベクトル予測候補リストの０から数えて(NumHmvpCand - hMvpIdx)番目の要素HmvpCandList[NumHmvpCand- hMvpIdx]がマージ候補リストの０から数えてi番目の要素mergeCandList[i]と同じ値か否かを比較する（図３０のステップＳ２３０６）。
【０１４８】
マージ候補の同じ値とはマージ候補が持つすべての構成要素（インター予測モード、参照インデックス、動きベクトル）の値が同じ場合にマージ候補が同じ値とする。マージ候補が同じ値、かつisPruned[i]がFALSEの場合（図３０のステップＳ２３０６のＹＥＳ）、sameMotionおよびisPruned[i]共にTRUE（真）を設定する（図３０のステップＳ２３０７）。同じ値でない場合（図３０のステップＳ２３０６のＮＯ）、ステップＳ２３０７の処理をスキップする。図３０のステップＳ２３０５からステップＳ２３０８までの繰り返し処理が完了したらsameMotionがFALSE（偽）か否かを比較し（図３０のステップＳ２３０９）、sameMotionが FALSE（偽）の場合（図３０のステップＳ２３０９のＹＥＳ）、すなわち履歴予測動きベクトル候補リストの０から数えて(NumHmvpCand - hMvpIdx)番目の要素HmvpCandList[NumHmvpCand - hMvpIdx]はmergeCandListに存在しないので、マージ候補リストのnumCurrMergeCand番目のmergeCandList[numCurrMergeCand]に履歴予測動きベクトル候補リストの０から数えて(NumHmvpCand - hMvpIdx)番目の要素HmvpCandList[NumHmvpCand - hMvpIdx]を追加し、numCurrMergeCandを1インクリメントする（図３０のステップＳ２３１０）。インデックスhMvpIdxを１インクリメントし（図３０のステップＳ２３０２）、図３０のステップＳ２３０２〜Ｓ２３１１の繰り返し処理を行う。
履歴予測動きベクトル候補リストのすべての要素の確認が完了するか、マージ候補リストのすべての要素にマージ候補が追加されたら、本履歴マージ候補の導出処理を完了する。
【０１４９】
＜動き補償予測処理＞
動き補償予測部３０６は、符号化において現在予測処理の対象となっているブロックの位置およびサイズを取得する。また、動き補償予測部３０６は、インター予測情報をインター予測モード判定部３０５から取得する。取得したインター予測情報から参照インデックスおよび動きベクトルを導出し、復号画像メモリ１０４内の参照インデックスで特定される参照ピクチャを、動きベクトルの分だけ予測ブロックの画像信号と同一位置より移動させた位置の画像信号を取得した後に予測信号を生成する。
【０１５０】
インター予測におけるインター予測モードが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パラメータアフィンモデルによる動き補償が利用できるか否かを表す。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パラメータアフィンモデルは２つの制御点のそれぞれの動きベクトルの水平成分及び垂直成分の４つのパラメータからサブブロックの動きベクトルを導出し、サブブロック単位で動き補償を行うモードである。
【０１７２】
（第２の実施の形態）
第１の実施の形態では、通常予測動きベクトルモードと通常マージモードで履歴予測動きベクトル候補リストの要素（候補）を参照する順序は同じであった。一方、第２の実施の形態では、第１の実施の形態に対して、以下のような追加および変更を行う。履歴予測動きベクトル候補リストを利用する際の参照順を、第２の実施の形態の通常予測動きベクトルモードでは図４６で示されるように第１の実施の形態とは逆の順序で行い、第２の実施の形態の通常マージモードでは図４５で示されるように第１の実施の形態と同じ順序で行うようにする。すなわち、通常予測動きベクトルモードと通常マージモードとで履歴予測動きベクトル候補リストに含まれる候補を参照する順序を逆（逆順）にする。それにより、通常予測動きベクトルモードでは、履歴予測動きベクトル候補リスト内の要素が、古い要素から順に予測動きベクトル候補リストに追加され、通常マージモードでは、履歴予測動きベクトル候補リスト内の要素が、新しい要素から順に予測動きベクトル候補リストに追加されることになる。
【０１７３】
＜履歴予測動きベクトル候補リスト＞
ここでは、履歴予測動きベクトル候補リストの構成と動作について説明する。
図４１で示すように、符号化対象ブロックにおいてインター予測により用いられたインター予測情報を、登録すべきインター予測情報候補hMvpCandとし、過去に利用したことのある履歴として、履歴予測動きベクトル候補リストHmvpCandListに登録する。図４１では、履歴予測動きベクトル候補リストは６つの要素を格納できるリスト構造となっており、先に格納された要素から順番に取り出される、先入先出のFIFO(First-In,First Out)方式を基本的な格納動作としている。
【０１７４】
ここでは一例としてHmvpCandListに格納できる最大の要素数を符号化側および復号側での取決めとして６つとして説明するが、特に限定されるものではなく、６つ以上であっても構わない。また、HmvpCandListに格納できる最大の要素数を５つ、もしくはそれ以下の要素数として構成しても良い。例えば、予測動きベクトル候補リストmvpListLXの最大要素数、最大マージ候補数、最大サブブロックマージ候補数などの、インター予測情報候補の最大要素数と同等の最大要素数にHmvpCandListを構成しても良い。また、各モードのインター予測情報候補の最大要素数に連動するように、HmvpCandListを構成しても良い。
【０１７５】
このHmvpCandListの最大要素数をビットストリームのシンタックス要素に含めることにより、符号化側から復号側へ伝達するように構成しても良い。
【０１７６】
図４１で示されるように、HmvpCandListは、リストの先頭である位置０からリストの末尾である位置５に、６つの要素を格納でき、位置０から順番に位置５まで要素を埋めていくことができる。この位置０から位置５までを履歴予測動きベクトルインデックスhMvpIdxとして管理する。例えば、位置０はhMVpIdx[0]、位置５はhMVpIdx[5]と表現できる。HmvpCandListの格納要素数をNumHmvpCandで管理し、０から最大要素数である６の範囲で格納要素の増減を管理する。
【０１７７】
HmvpCandListに最大要素数が格納されている状態で、新たに要素を追加する場合について詳細に説明する。図４２で示されるように、インター予測情報候補hMvpCandを新たに履歴として登録しようとする場合、先頭である位置０の要素を削除し、各要素の位置を１つずつ先頭方向にシフトさせる。シフトの結果、図４３のように格納要素数が１つ減ることにより、末尾の位置５に新たな要素を格納できるようになる。そこで、インター予測情報候補hMvpCandを末尾の位置５に格納することで、図４４のように、HmvpCandListに新たな要素が追加される。
【０１７８】
＜第２の実施の形態の通常予測動きベクトルモードでの履歴予測動きベクトル候補導出処理＞
ここでは、第２の実施の形態の通常予測動きベクトルモードでの履歴予測動きベクトル候補導出処理について説明する。
【０１７９】
図４７は、第２の実施の形態の通常予測動きベクトルモードにおいて、通常マージモードの参照順とは逆の順序で参照しながら履歴予測動きベクトル候補リストHmvpCandListを利用するように構成した場合の、履歴予測動きベクトル候補導出処理手順を説明するフローチャートである。
【０１８０】
現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数（ここでは２とする）以上または履歴予測動きベクトル候補の数NumHmvpCandの値が０の場合（図４７のステップＳ２６０１のＮＯ）、図４７のステップＳ２６０２からＳ２６０９の処理を省略し、履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい、かつ履歴予測動きベクトル候補の数NumHmvpCandの値が０より大きい場合（図４７のステップＳ２６０１のＹＥＳ）、図４７のステップＳ２６０２からＳ２６０９の処理を行う。
【０１８１】
続いて、インデックスｉが０から、４と履歴予測動きベクトル候補の数NumHmvpCandのいずれか小さい値から１を引いた値まで、図４７のステップＳ２６０３からＳ２６０８の処理を繰り返す（図４７のステップＳ２６０２〜Ｓ２６０９）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２以上の場合（図４７のステップＳ２６０３のＮＯ）、図４７のステップＳ２６０４からＳ２６０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図４７のステップＳ２６０３のＹＥＳ）、図４７のステップＳ２６０４以降の処理を行う。
【０１８２】
続いて、ステップＳ２６０５からＳ２６０７までの処理をインデックスＹが０と１（Ｌ０とＬ１）についてそれぞれ行う（図４７のステップＳ２６０４〜Ｓ２６０８）。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２以上の場合（図４７のステップＳ２６０５のＮＯ）、図４７のステップＳ２６０６からＳ２６０９の処理を省略し、本履歴予測動きベクトル候補導出処理手順を終了する。現在の予測動きベクトル候補の数numCurrMvpCandが予測動きベクトル候補リストmvpListLXの最大要素数である２より小さい場合（図４７のステップＳ２６０５のＹＥＳ）、図４７のステップＳ２６０６以降の処理を行う。
【０１８３】
続いて、履歴予測動きベクトル候補リストHmvpCandListの中に、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じ参照インデックスの要素であり、予測動きベクトル候補リストmvpListLXのどの要素とも異なる要素の場合（図４７のステップＳ２６０６のＹＥＳ）、予測動きベクトル候補リストの０から数えてnumCurrMvpCand番目の要素mvpListLX[numCurrMvpCand ]に履歴予測動きベクトル候補HmvpCandList[i]のＬＹの動きベクトルを追加し（図４７のステップＳ２６０７）、現在の予測動きベクトル候補の数numCurrMvpCandを１インクリメントする。履歴予測動きベクトル候補リストHmvpCandListの中に、符号化／復号対象動きベクトルの参照インデックスrefIdxLXと同じ参照インデックスの要素であり、予測動きベクトル候補リストmvpListLXのどの要素とも異なる要素がない場合（図４７のステップＳ２６０７のＮＯ）、ステップＳ２６０７の追加処理をスキップする。
【０１８４】
以上の図４７のステップＳ２６０５からＳ２６０７の処理をＬ０とＬ１で双方ともに行う（図４７のステップＳ２６０４〜Ｓ２６０８）。
【０１８５】
インデックスｉを１インクリメントし（図４７のステップＳ２６０２、Ｓ２６０９）、インデックスｉが４と履歴予測動きベクトル候補の数NumHmvpCandのいずれか小さい値から１を引いた値以下の場合、再びステップＳ２６０３以降の処理を行う（図４７のステップＳ２６０２〜Ｓ２６０９）。
【０１８６】
以上のように、通常予測動きベクトルモードでは、履歴予測動きベクトル候補リスト内で先に追加された要素（古い要素）から順に参照されて予測動きベクトル候補リストに追加される。
【０１８７】
＜変形例  その１＞
本実施の形態のような履歴予測動きベクトル候補リストの参照順となることを示すような履歴参照フラグを導入し、第１の実施の形態の参照順と、本実施の形態の参照順とを切り替えられるように構成しても良い。この履歴参照フラグを、ビットストリームのシンタックス要素に含めて復号側に伝達し、復号側ではこの履歴参照フラグをシンタックス要素に持つビットストリームを取得し、復号できるようにしても良い。
＜変形例  その２＞
本実施の形態では、通常予測動きベクトルモードでは図４６で示されるように履歴予測動きベクトル候補リストの要素０から要素５の順に１つずつ参照し、通常マージモードでは図４５で示されるように履歴予測動きベクトル候補リストの要素５から要素０の順に１つずつ参照したが、通常予測動きベクトルモードと通常マージモードとで履歴予測動きベクトル候補リストを参照する順序が異なっていればこれに限定されない。例えば、通常予測動きベクトルモードでは要素０から要素２を参照し、通常マージモードでは要素５から要素１を参照するように、通常予測動きベクトルモードと通常マージモードとで履歴予測動きベクトル候補リストを参照する数が異なっていてもよい。この場合、候補数の多い通常マージモードの参照数が多くなるようにすることが好ましい。また、通常マージモードでは要素４から要素０までを参照するように開始点を変更してもよい。
【０１８８】
以上のような第２の実施の形態とすることにより、履歴予測動きベクトル候補リストを利用する際の参照順を、通常予測動きベクトルモードとは異なる参照順とすることで、それぞれのモードごとに適した候補を採用できるようになる。特に、差分動きベクトルを符号化する通常予測動きベクトルモードが選択される場合には、符号化対象ブロックの周囲の状況とは異なる動きベクトルを必要とすることが多い。よって履歴予測動きベクトル候補リストを探索し、直近のものとは異なる比較的相関が低いと考えられる要素、つまり先に格納された古い要素から順番に候補として利用することで、通常予測動きベクトルモードに適した候補により符号化効率の向上に寄与できる。
【０１８９】
また、通常マージモードでは符号化対象ブロックの周囲の相関が高いほど符号化効率が向上するため、履歴予測動きベクトル候補リストを探索し、直近のものと比較的相関が高いと考えられる要素、つまり後に格納された新しい要素から順番に候補として利用することで、通常マージモードに適した候補により符号化効率の向上に寄与できる。
【０１９０】
以上に述べた全ての実施の形態は、複数を組み合わせても良い。
【０１９１】
以上に述べた全ての実施の形態において、画像符号化装置が出力するビットストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有している。また、この画像符号化装置に対応する画像復号装置は、この特定のデータフォーマットのビットストリームを復号することができる。
【０１９２】
画像符号化装置と画像復号装置の間でビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、通信路の伝送形態に適したデータ形式にビットストリームを変換して伝送してもよい。その場合、画像符号化装置が出力するビットストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する送信装置と、ネットワークから符号化データを受信してビットストリームに復元して画像復号装置に供給する受信装置とが設けられる。送信装置は、画像符号化装置が出力するビットストリームをバッファするメモリと、ビットストリームをパケット化するパケット処理部と、ネットワークを介してパケット化された符号化データを送信する送信部とを含む。受信装置は、ネットワークを介してパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理してビットストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
【０１９３】
また、画像復号装置で復号された画像を表示する表示部を構成に追加することで、表示装置としても良い。その場合、表示部は、復号画像信号重畳部２０７により生成され、復号画像メモリ２０８に格納された復号画像信号を読み出して画面に表示する。
【０１９４】
また、撮像部を構成に追加し、撮像した画像を画像符号化装置に入力することで、撮像装置としても良い。その場合、撮像部は、撮像した画像信号をブロック分割部１０１に入力する。
【０１９５】
図３７に、本実施の形態の符号化復号装置のハードウェア構成の一例を示す。符号化復号装置は、本発明の実施の形態に係る画像符号化装置、および画像復号装置の構成を包含する。係る符号化復号装置９０００は、ＣＰＵ９００１、コーデックＩＣ９００２、Ｉ／Ｏインターフェース９００３、メモリ９００４、光学ディスクドライブ９００５、ネットワークインターフェース９００６、ビデオインターフェース９００９を有し、各部はバス９０１０により接続される。
【０１９６】
画像符号化部９００７と画像復号部９００８は、典型的にはコーデックＩＣ９００２として実装される。本発明の実施の形態に係る画像符号化装置の画像符号化処理は、画像符号化部９００７により実行され、本発明の実施の形態に係る画像復号装置における画像復号処理は、画像復号部９００８により実行される。Ｉ／Ｏインターフェース９００３は、例えばＵＳＢインターフェースにより実現され、外部のキーボード９１０４、マウス９１０５等と接続する。ＣＰＵ９００１は、Ｉ／Ｏインターフェース９００３を介して入力したユーザー操作に基づき、ユーザーの所望する動作を実行するように符号化復号装置９０００を制御する。キーボード９１０４、マウス９１０５等によるユーザーの操作としては、符号化、復号のどちらの機能を実行するかの選択、符号化品質の設定、ビットストリームの入出力先、画像の入出力先等がある。
【０１９７】
ユーザーがディスク記録媒体９１００に記録された画像を再生する操作を所望する場合、光学ディスクドライブ９００５は、挿入されたディスク記録媒体９１００からビットストリームを読出し、読み出したビットストリームを、バス９０１０を介してコーデックＩＣ９００２の画像復号部９００８に送る。画像復号部９００８は入力したビットストリームに対して本発明の実施の形態に係る画像復号装置における画像復号処理を実行し、復号画像を、ビデオインターフェース９００９を介して外部のモニタ９１０３へ送る。また、符号化復号装置９０００は、ネットワークインターフェース９００６を有し、ネットワーク９１０１を介して、外部の配信サーバ９１０６や、携帯端末９１０７と接続可能である。ユーザーがディスク記録媒体９１００に記録された画像に変えて、配信サーバ９１０６や携帯端末９１０７に記録された画像を再生することを所望する場合は、ネットワークインターフェース９００６は、入力されたディスク記録媒体９１００からビットストリームを読出すことに変えて、ネットワーク９１０１よりビットストリームを取得する。また、ユーザーがメモリ９００４に記録された画像を再生することを所望する場合は、メモリ９００４に記録されたビットストリームに対して、本発明の実施の形態に係る画像復号装置における画像復号処理を実行する。
【０１９８】
ユーザーが外部のカメラ９１０２で撮像した画像を符号化しメモリ９００４に記録する操作を所望する場合、ビデオインターフェース９００９は、カメラ９１０２から画像を入力し、バス９０１０を介し、コーデックＩＣ９００２の画像符号化部９００７に送る。画像符号化部９００７は、ビデオインターフェース９００９を介して入力した画像に対して本発明の実施の形態に係る画像符号化装置における画像符号化処理を実行し、ビットストリームを作成する。そしてビットストリームを、バス９０１０を介し、メモリ９００４へ送る。ユーザーがメモリ９００４に変えて、ディスク記録媒体９１００にビットストリームを記録することを所望する場合は、光学ディスクドライブ９００５は、挿入されたディスク記録媒体９１００に対しビットストリームの書き出しを行う。
【０１９９】
画像符号化装置を有し画像復号装置を有さないハードウェア構成や、画像復号装置を有し画像符号化装置を有さないハードウェア構成を実現することも可能である。そのようなハードウェア構成は、例えばコーデックＩＣ９００２が、画像符号化部９００７、または画像復号部９００８にそれぞれ置き換わることにより実現される。
【０２００】
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現しても良いのは勿論のこと、ＲＯＭ（リード・オンリー・メモリ）やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによって実現しても良い。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良いし、地上波あるいは衛星ディジタル放送のデータ放送として提供しても良い。
【０２０１】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【０２０２】
１００  画像符号化装置、  １０１  ブロック分割部、  １０２  インター予測部、  １０３  イントラ予測部、１０４  復号画像メモリ、  １０５  予測方法決定部、  １０６  残差生成部、  １０７  直交変換・量子化部、  １０８  ビット列符号化部、  １０９  逆量子化・逆直交変換部、  １１０  復号画像信号重畳部、  １１１  符号化情報格納メモリ、  ２００  画像復号装置、  ２０１  ビット列復号部、  ２０２  ブロック分割部、  ２０３  インター予測部  ２０４  イントラ予測部、  ２０５  符号化情報格納メモリ  ２０６  逆量子化・逆直交変換部、  ２０７  復号画像信号重畳部、  ２０８  復号画像メモリ。
【図１】
2020182208.tif 000003
【図２】
2020182208.tif 000004
【図３】
2020182208.tif 000005
【図４】
2020182208.tif 000006
【図５】
2020182208.tif 000007
【図６Ａ】
2020182208.tif 000008
【図６Ｂ】
2020182208.tif 000009
【図６Ｃ】
2020182208.tif 000010
【図６Ｄ】
2020182208.tif 000011
【図６Ｅ】
2020182208.tif 000012
【図７】
2020182208.tif 000013
【図８】
2020182208.tif 000014
【図９】
2020182208.tif 000015
【図１０Ａ】
2020182208.tif 000016
【図１０Ｂ】
2020182208.tif 000017
【図１１】
2020182208.tif 000018
【図１２】
2020182208.tif 000019
【図１３】
2020182208.tif 000020
【図１４】
2020182208.tif 000021
【図１５】
2020182208.tif 000022
【図１６】
2020182208.tif 000023
【図１７】
2020182208.tif 000024
【図１８】
2020182208.tif 000025
【図１９】
2020182208.tif 000026
【図２０】
2020182208.tif 000027
【図２１】
2020182208.tif 000028
【図２２】
2020182208.tif 000029
【図２３】
2020182208.tif 000030
【図２４】
2020182208.tif 000031
【図２５】
2020182208.tif 000032
【図２６】
2020182208.tif 000033
【図２７】
2020182208.tif 000034
【図２８】
2020182208.tif 000035
【図２９】
2020182208.tif 000036
【図３０】
2020182208.tif 000037
【図３１Ａ】
2020182208.tif 000038
【図３１Ｂ】
2020182208.tif 000039
【図３１Ｃ】
2020182208.tif 000040
【図３２】
2020182208.tif 000041
【図３３】
2020182208.tif 000042
【図３４】
2020182208.tif 000043
【図３５】
2020182208.tif 000044
【図３６】
2020182208.tif 000045
【図３７】
2020182208.tif 000046
【図３８】
2020182208.tif 000047
【図３９】
2020182208.tif 000048
【図４０】
2020182208.tif 000049
【図４１】
2020182208.tif 000050
【図４２】
2020182208.tif 000051
【図４３】
2020182208.tif 000052
【図４４】
2020182208.tif 000053
【図４５】
2020182208.tif 000054
【図４６】
2020182208.tif 000055
【図４７】
2020182208.tif 000056