(57)【要約】復号器側動きベクトル導出（ＤＭＶＤ）に関する技法が説明される。例えば、この開示は、ＤＭＶＤによって導出された動きベクトル（ＭＶ）、および／または初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分のような動き情報に１つまたは複数の制約を適用することに関する技法を説明する。制約がＤＭＶＤに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。制約には条件が設けられ得る。【選択図】図１６
2020511859.tif 000002
【特許請求の範囲】
【請求項１】
符号化されたビデオビットストリームからビデオデータを復号する方法であって、前記方法は、
復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、前記決定することは、
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすと決定することを備え、前記関係は、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称である、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第１の導出された動きベクトルと前記第２の導出された動きベクトルとを使用して現在のブロックを復号することと
を備える、方法。
【請求項２】
前記複数の導出された動きベクトルを生成するためにＤＭＶＤを使用することは、双方向オプティカルフロー（ＢＩＯ）プロセス、フレームレートアップコンバージョン（ＦＲＵＣ）プロセス、バイラテラルマッチングプロセス、ＦＲＵＣテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの１つを使用することを備える、請求項１に記載の方法。
【請求項３】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記対称動きベクトル差分を有すると決定することは、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、
であると決定することを備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１に記載の方法。
【請求項４】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記反対称動きベクトル差分を有すると決定することは、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）
であると決定することを備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１に記載の方法。
【請求項５】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称であると決定することは、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、
であると決定することを備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、前記第１の導出された動きベクトルのＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、前記第１の導出された動きベクトルのＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、前記第２の導出された動きベクトルのＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、前記第２の導出された動きベクトルのＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１に記載の方法。
【請求項６】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記疑似対称動きベクトル差分を有すると決定することは、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
であると決定することを備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分である、請求項１に記載の方法。
【請求項７】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記疑似反対称動きベクトル差分を有すると決定することは、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
であると決定することを備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分である、請求項１に記載の方法。
【請求項８】
動きベクトル候補リスト中の第１の初期動きベクトルと前記動きベクトル候補リスト中の第２の初期動きベクトルとが、前記第１の初期動きベクトルと前記第２の初期動きベクトルとの間の関係に関する少なくとも１つの条件を満たすと決定することをさらに備え、前記関係は、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが疑似対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが前記対称動きベクトル差分を有する、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが反対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが疑似反対称である、または前記第１の初期動きベクトルと前記第２の初期動きベクトルとが前記反対称動きベクトル差分を有することを備え、
前記複数の導出された動きベクトルを生成することは、前記第１の初期動きベクトルと前記第２の初期動きとが前記少なくとも１つの条件を満たすことに基づく、請求項１に記載の方法。
【請求項９】
動きベクトル候補リスト中の第１の初期動きベクトルと前記動きベクトル候補リスト中の第２の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項１に記載の方法。
【請求項１０】
第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと前記現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項１に記載の方法。
【請求項１１】
第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと前記現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定することをさらに備え、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項１に記載の方法。
【請求項１２】
前記符号化されたビデオビットストリームから前記少なくとも１つの制約を決定することをさらに備える、請求項１に記載の方法。
【請求項１３】
前記コストメトリックは、絶対差分の和を含む、請求項１に記載の方法。
【請求項１４】
符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、前記装置は、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信中の１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、前記決定することは、
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、前記関係は、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称である、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第１の導出された動きベクトルと前記第２の導出された動きベクトルとを使用して現在のブロックを復号することと
を行うように構成される、装置。
【請求項１５】
前記複数の導出された動きベクトルを生成するためにＤＭＶＤを使用することは、双方向オプティカルフロー（ＢＩＯ）プロセス、フレームレートアップコンバージョン（ＦＲＵＣ）プロセス、バイラテラルマッチングプロセス、ＦＲＵＣテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの１つを使用することを備える、請求項１４に記載の装置。
【請求項１６】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記対称動きベクトル差分を有するという前記決定は、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、
という決定を備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１４に記載の装置。
【請求項１７】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記反対称動きベクトル差分を有するという前記決定は、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）
という決定を備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１４に記載の装置。
【請求項１８】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称であるという前記決定は、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、
という決定を備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、前記第１の導出された動きベクトルのＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、前記第１の導出された動きベクトルのＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、前記第２の導出された動きベクトルのＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、前記第２の導出された動きベクトルのＹ成分であり、
ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のピクチャ順序カウント（ＰＯＣ）であり、
Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、
Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである、請求項１４に記載の装置。
【請求項１９】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記疑似対称動きベクトル差分を有するという前記決定は、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
という決定を備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分である、請求項１４に記載の装置。
【請求項２０】
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが前記疑似反対称動きベクトル差分を有するという前記決定は、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、または
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、
という決定を備え、ここにおいて、
Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第１の初期動きベクトルと前記第１の導出された動きベクトルとの間の差分のＹ成分であり、
Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＸ成分であり、
Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、前記第２の初期動きベクトルと前記第２の導出された動きベクトルとの間の差分のＹ成分である、請求項１４に記載の装置。
【請求項２１】
前記１つまたは複数のプロセッサは、
動きベクトル候補リスト中の第１の初期動きベクトルと前記動きベクトル候補リスト中の第２の初期動きベクトルとが、前記第１の初期動きベクトルと前記第２の初期動きベクトルとの間の関係に関する少なくとも１つの条件を満たすと決定するようにさらに構成され、前記関係は、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが疑似対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが前記対称動きベクトル差分を有する、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが反対称である、前記第１の初期動きベクトルと前記第２の初期動きベクトルとが疑似反対称である、または前記第１の初期動きベクトルと前記第２の初期動きベクトルとが前記反対称動きベクトル差分を有することを備え、
前記複数の導出された動きベクトルを生成することは、前記第１の初期動きベクトルと前記第２の初期動きとが前記少なくとも１つの条件を満たすことに基づく、請求項１４に記載の装置。
【請求項２２】
前記１つまたは複数のプロセッサは、
動きベクトル候補リスト中の第１の初期動きベクトルと前記動きベクトル候補リスト中の第２の初期動きベクトルとが現在のピクチャの前にあるか、または前記現在のピクチャの後にあるかを決定するようにさらに構成され、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項１４に記載の装置。
【請求項２３】
前記１つまたは複数のプロセッサは、
第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと前記現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定するようにさらに構成され、
前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記決定にさらに基づく、請求項１４に記載の装置。
【請求項２４】
前記１つまたは複数のプロセッサは、
第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと前記現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定するようにさらに構成され、
前記複数の導出された動きベクトルを生成する前記コストメトリックに基づいて、前記複数の導出された動きベクトルから前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとを決定することは、前記第１の動きベクトル候補リストに関連付けられた前記第１の参照ピクチャと前記現在のピクチャとの間の前記第１のＰＯＣ距離が０であり、前記第２の動きベクトル候補リストに関連付けられた前記第２の参照ピクチャと前記現在のピクチャとの間の前記第２のＰＯＣ距離がゼロ決定であると前記決定することにさらに基づく、請求項１４に記載の装置。
【請求項２５】
前記１つまたは複数のプロセッサは、前記符号化されたビデオビットストリームから前記少なくとも１つの制約を決定するようにさらに構成される、請求項１４に記載の装置。
【請求項２６】
前記コストメトリックは、絶対差分の和を含む、請求項１４に記載の装置。
【請求項２７】
符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、前記装置は、
復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成するための手段と、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定するための手段と、前記決定するための手段は、
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすと決定するための手段を備え、前記関係は、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称である、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第１の導出された動きベクトルと前記第２の導出された動きベクトルとを使用して現在のブロックを復号するための手段と
を備える、装置。
【請求項２８】
前記複数の導出された動きベクトルを生成するためにＤＭＶＤを使用することは、双方向オプティカルフロー（ＢＩＯ）プロセス、フレームレートアップコンバージョン（ＦＲＵＣ）プロセス、バイラテラルマッチングプロセス、ＦＲＵＣテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの１つを使用することを備える、請求項２７に記載の装置。
【請求項２９】
ビデオデータを符号化するように構成された装置であって、前記装置は、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信中の１つまたは複数のプロセッサと
を備え、前記１つまたは複数のプロセッサは、
復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、
コストメトリックに基づいて、前記複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、前記決定することは、
前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、前記関係は、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称である、前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または前記第１の導出された動きベクトルと前記第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備える、
双予測を使用して、前記決定された第１の導出された動きベクトルと前記第２の導出された動きベクトルとを使用して現在のブロックを符号化することと
を行うように構成される、装置。
【請求項３０】
前記複数の導出された動きベクトルを生成するためにＤＭＶＤを使用することは、双方向オプティカルフロー（ＢＩＯ）プロセス、フレームレートアップコンバージョン（ＦＲＵＣ）プロセス、バイラテラルマッチングプロセス、ＦＲＵＣテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセスのうちの１つを使用することを備える、請求項２９に記載の装置。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]  本願は、２０１７年３月２２日に出願された米国仮特許出願第６２／４７５，１７７号の利益を主張し、それは、その全体が参照によってここに組み込まれる。
【技術分野】
【０００２】
[0002]  この開示は、ビデオコーディング（video coding）に関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、幅広い範囲のデバイスへと組み込まれることができる。デジタルビデオデバイスは、ＩＴＵ−Ｔ Ｈ．２６１、ＩＳＯ／ＩＥＣ ＭＰＥＧ−１ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６２またはＩＳＯ／ＩＥＣ ＭＰＥＧ−２ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６３、ＩＴＵ−Ｔ Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ １０、アドバンスドビデオコーディング（ＡＶＣ：Advanced Video Coding）、ＩＴＵ−Ｔ Ｈ．２６５／高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）、およびスケーラブルビデオコーディング（ＳＶＣ：Scalable Video Coding）およびマルチビュービデオコーディング（ＭＶＣ：Multi-view Video Coding）拡張のような、そのような規格の拡張によって定義された規格に説明されているもののような、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信（transmit）、受信（receive）、符号化（encode）、復号（decode）、および／または記憶（store）し得る。
【０００４】
[0004]  ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減または取り除くために、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス（video slice）（例えば、ビデオピクチャまたはビデオピクチャの一部分）は、ビデオブロックへと区分化され得、それはまた、コーディングツリーユニット（ＣＴＵ：coding tree unit）、コーディングユニット（ＣＵ：coding unit）および／またはコーディングノードと呼ばれ得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロック（neighboring block）中の参照サンプルに対して空間的予測（spatial prediction）を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の近隣ブロック中の参照サンプルに対して空間的予測を、または他の参照ピクチャ（reference picture）中の参照サンプルに対して時間的予測（temporal prediction）を使用し得る。ピクチャは、フレームと呼ばれ得、および参照ピクチャは、参照フレーム（reference frame）と呼ばれ得る。
【０００５】
[0005]  空間的または時間的予測は、コーディングされることになるブロックについての予測ブロックをもたらす。残差データ（Residual data）は、コーディングされることになる元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル（motion vector）、およびコーディングされたブロックと予測ブロックとの間の差分（difference）を示す残差データにしたがって符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データにしたがって符号化される。さらなる圧縮のために、残差データは、ピクセルドメインから変換ドメインに変換され得、残差変換係数（residual transform coefficient）をもたらし、それはその後、量子化され得る。最初に２次元アレイ中に配置された、量子化された変換係数は、変換係数の１次元ベクトルを作り出すために走査され得、およびエントロピーコーディングが、さらにいっそうの圧縮を達成するために適用され得る。
【発明の概要】
【０００６】
[0006]  一般に、この開示は、復号器側動きベクトル導出（ＤＭＶＤ：decoder-side motion vector derivation）に関する技法を説明する。例えば、この開示は、ＤＭＶＤによって導出された動きベクトル（ＭＶ：motion vector）、および／または初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分のような動き情報に１つまたは複数の制約（constraint）を適用することに関する技法を説明する。これらの技法は、ＨＥＶＣ（高効率ビデオコーディング）のような既存のビデオコーデックのうちの任意のものに適用され得、および／または任意の将来のビデオコーディング規格における効率的なコーディングツールであり得る。制約がＤＭＶＤで導出されたＭＶおよび／またはＭＶ差分に適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、ＭＶのリストと最終の選択されたＭＶとが異なり得、それは、コーディング効率を増大させ得、および／またはビットレート（bit-rate）を低減し得る。いくつかの例では、制約は、導出されたＭＶが対称（symmetric）であるかどうか、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうか、導出されたＭＶが反対称（anti-symmetric）であるかどうか、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうかを含む。いくつかの例では、対称／反対称ＭＶ／ＭＶ差分制約の有効化（enabling）は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がある特定の例でのみ適用されるように、制約には条件（condition）が設けられ得る。
【０００７】
[0007]  ある例では、符号化されたビデオビットストリーム（encoded video bitstream）からビデオデータ（video data）を復号する方法であって、その方法は、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトル（derived motion vector）を生成することと、コストメトリック（cost metric）に基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係（relationship）に関する少なくとも１つの制約を満たすと決定することを備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分（symmetric motion vector difference）を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称（pseudo symmetric）動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分（anti-symmetric motion vector difference）を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分（pseudo anti-symmetric motion vector difference）を有することを備え、双予測（bi-prediction）を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロック（current block）を復号することとを備える。
【０００８】
[0008]  別の例では、ビデオデータを符号化する方法であって、その方法は、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすと決定することを備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分（pseudo symmetric motion vector difference）を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを符号化することとを備える。
【０００９】
[0009]  別の例では、符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、その装置は、ビデオデータを記憶するように構成されたメモリと、そのメモリと通信中の１つまたは複数のプロセッサとを備え、その１つまたは複数のプロセッサは、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号することとを行うように構成される。
【００１０】
[0010]  別の例では、ビデオデータを符号化するように構成された装置であって、その装置は、ビデオデータを記憶するように構成されたメモリと、そのメモリと通信中の１つまたは複数のプロセッサとを備え、その１つまたは複数のプロセッサは、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号することとを行うように構成される。
【００１１】
[0011]  別の例では、符号化されたビデオビットストリームからビデオデータを復号するように構成された装置であって、その装置は、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成するための手段と、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定するための手段と、ここで、その決定するための手段は、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすと決定するための手段を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号するための手段とを備える。
【００１２】
[0012]  別の例では、ビデオデータを符号化するように構成された装置であって、その装置は、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成するための手段と、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定するための手段と、ここで、その決定するための手段は、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすと決定するための手段を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを符号化するための手段とを備える。
【００１３】
[0013]  別の例では、この開示は、実行されると、構成されたデバイスの１つまたは複数のプロセッサに、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号することとを行わせる命令を記憶するコンピュータ可読記憶媒体（computer-readable storage medium）を説明する。
【００１４】
[0014]  別の例では、この開示は、実行されると、構成されたデバイスの１つまたは複数のプロセッサに、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成することと、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、ここで、その決定することは、第１の導出された動きベクトルと第２の導出された動きベクトルとが、第１の導出された動きベクトルと第２の導出された動きベクトルとの間の関係に関する少なくとも１つの制約を満たすという決定を備え、その関係は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有する、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称である、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有する、または第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有することを備え、双予測を使用して、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号することとを行わせる命令を記憶するコンピュータ可読記憶媒体を説明する。
【００１５】
[0015]  １つまたは複数の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明および図面から、そして特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】[0016]  この開示の復号器側動きベクトル導出（ＤＭＶＤ）を遂行するための技法を利用し得る実例的なビデオ符号化および復号システムを例示するブロック図である。
【図２】[0017]  この開示のＤＭＶＤを遂行するための技法をインプリメントし得るビデオ符号化器（video encoder）の例を例示するブロック図である。
【図３】[0018]  この開示のＤＭＶＤを遂行するための技法をインプリメントし得るビデオ復号器（video decoder）の例を例示するブロック図である。
【図４Ａ】[0019]  近隣ブロックから導出された空間的動きベクトル候補（spatial motion vector candidate）を例示する概念図である。
【図４Ｂ】近隣ブロックから導出された空間的動きベクトル候補を例示する概念図である。
【図５Ａ】[0020]  時間的動きベクトル予測子（ＴＭＶＰ：temporal motion vector predictor）候補のためのプライマリブロックロケーション（primary block location）を例示する概念図である。
【図５Ｂ】時間的動きベクトル予測子（ＴＭＶＰ）候補のためのプライマリブロックロケーションを例示する概念図である。
【図６】[0021]  現在のブロックの動き情報を導出するためのバイラテラルマッチング（bilateral matching）に関する概念を例示する概念図である。
【図７】[0022]  現在のブロックの動き情報を導出するためのテンプレートマッチング（template matching）に関する概念を例示する概念図である。
【図８】[0023]  実例的なフレームレートアップコンバージョン（ＦＲＵＣ：frame-rate up-conversion）テンプレートマッチングプロセス（template matching process）を例示するフローチャートである。
【図９】[0024]  図８のＦＲＵＣテンプレートマッチングプロセスへの実例的な提案された変更を例示するフローチャートである。
【図１０】[0025]  双方向オプティカルフロー（bi-directional optical flow）の例に関する概念を例示する概念図である。
【図１１】[0026]  ８×４ブロックについての勾配算出（gradient calculation）の例を例示する概念図である。
【図１２】[0027]  バイラテラルテンプレートマッチング（bilateral template matching）に基づくＤＭＶＤに関する概念を例示する概念図である。
【図１３Ａ】[0028]  オーバーラップブロック動き補償（ＯＢＭＣ：overlapped block motion compensation）に関する概念を例示する概念図である。
【図１３Ｂ】オーバーラップブロック動き補償（ＯＢＭＣ）に関する概念を例示する概念図である。
【図１４Ａ】[0029]  ＯＢＭＣ重み付けを例示する概念図である。
【図１４Ｂ】ＯＢＭＣ重み付けを例示する概念図である。
【図１４Ｃ】ＯＢＭＣ重み付けを例示する概念図である。
【図１４Ｄ】ＯＢＭＣ重み付けを例示する概念図である。
【図１５】[0030]  現在のブロックの動き情報を導出するためのバイラテラルマッチングに関する概念を例示する概念図である。
【図１６】[0031]  この開示に説明される技法にしたがった、ビデオデータを復号する実例的な方法を例示するフローチャートである。
【図１７】[0032]  この開示に説明される技法にしたがった、ビデオデータを符号化する実例的な方法を例示するフローチャートである。
【詳細な説明】
【００１７】
[0033]  この開示は、復号器側動きベクトル導出（ＤＭＶＤ）に関する技法を説明する。この開示の技法は、任意の将来のビデオコーディング規格における効率的なコーディングツールとして使用され得る。
【００１８】
[0034]  一般に、この開示は、ビデオデータのブロックを符号化するために使用される動き情報（例えば、１つまたは複数の動きベクトル、動きベクトルおよび／または動きベクトル差分精度、および１つまたは複数の参照ピクチャインデックス）を導出するための、およびビデオ符号化器によって決定されるものと同じ動き情報をビデオ復号器によって決定するための技法を説明する。ビデオ符号化器によって使用される同じ（または相反する）導出技法を使用して、ビデオ復号器は、動き情報を具体的に識別するいかなるシンタックス要素（syntax element）も受信することなしに、何の動き情報がビデオデータを符号化するために使用されたのかを決定し得る。いくつかのコーディングシナリオでは、しかしながら、ビデオ符号化器は、ブロックを符号化するために使用される動き情報を依然として明示的にシグナリングし得る。
【００１９】
[0035]  この開示における様々な技法は、ビデオコーダ（video coder）を参照して説明され得、それは、ビデオ符号化器またはビデオ復号器のいずれかを指すことができる総称であることを意図される。別途明示的に記載されない限り、ビデオ符号化器またはビデオ復号器に関して説明される技法は、ビデオ符号化器またはビデオ復号器の他方によって遂行されることができないと想定されるべきではない。例えば、多くの事例では、ビデオ復号器は、符号化されたビデオデータを復号するために、ビデオ符号化器と同じ、または時として相反するコーディング技法を遂行する。多くの事例では、ビデオ符号化器はまた、ビデオ復号ループを含み、およびこのことから、ビデオ符号化器は、ビデオデータを符号化することの一部としてビデオ復号を遂行する。このことから、別途記載されない限り、ビデオ復号器に関してこの開示に説明される技法はまた、ビデオ符号化器によって遂行され得、および逆もまた然りである。
【００２０】
[0036]  この開示はまた、現在のレイヤ、現在のブロック、現在のピクチャ（current picture）、現在のスライス、等のような用語を使用し得る。この開示のコンテキストでは、現在の（current）という用語は、例えば、以前にコーディングされたレイヤ、ブロック、ピクチャ、およびスライス、あるいは未だにコーディングされていないブロック、ピクチャ、およびスライスとは対照的に、現在コーディングされているレイヤ、ブロック、ピクチャ、スライス、等を識別することを意図される。
【００２１】
[0037]  その範囲拡張と、マルチビュー拡張（ＭＶ−ＨＥＶＣ）と、スケーラブル拡張（ＳＨＶＣ）とを含む、（ＩＴＵ−Ｔ Ｈ．２６５とも呼ばれる）高効率ビデオコーディング（ＨＥＶＣ）と名付けられた新しいビデオコーディング規格が、ＩＴＵ−Ｔビデオコーディング専門家グループ（ＶＣＥＧ：Video Coding Experts Group）およびＩＳＯ／ＩＥＣモーションピクチャ専門家グループ（ＭＰＥＧ：Motion Picture Experts Group）のビデオコーディングに関する共同コラボレーションチーム（ＪＣＴ−ＶＣ：the Joint Collaboration Team on Video Coding）ならびに３Ｄビデオコーディング拡張開発に関する共同コラボレーションチーム（ＪＣＴ−３Ｖ： Joint Collaboration Team on 3D Video Coding Extension Development）によって開発された。以下においてＨＥＶＣ ＷＤと呼ばれるＨＥＶＣ仕様書は、phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。
【００２２】
[0038]  ＩＴＵ−Ｔ ＶＣＥＧ（Ｑ６／１６）およびＩＳＯ／ＩＥＣ ＭＰＥＧ（ＪＴＣ １／ＳＣ ２９／ＷＧ １１）は現在、（スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張および近々の拡張を含む）現在のＨＥＶＣ規格のそれを有意に上回る圧縮能力を有する将来のビデオコーディング技術の標準化の潜在的な必要性を研究している。グループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、共同ビデオ調査チーム（ＪＶＥＴ：the Joint Video Exploration Team）として知られている共同コラボレーションの取り組みにおいて、この調査活動で協働している。ＪＶＥＴは、２０１５年１０月１９日〜２１日中に最初の会合を行った。あるバージョンの参照ソフトウェア、すなわち、共同調査モデル５（ＪＥＭ５：Joint Exploration Model 5）は、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-5.0において入手可能である。ＪＥＭ５のアルゴリズム記述は、phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=2714において入手可能である。
【００２３】
[0039]  図１は、この開示のＤＭＶＤを遂行するための技法を利用し得る実例的なビデオ符号化および復号システム１０を例示するブロック図である。図１に示されているように、システム１０は、宛先デバイス１４によって後の時間に復号されることになる符号化されたビデオデータを提供するソースデバイス１２を含む。特に、ソースデバイス１２は、コンピュータ可読媒体１６を介して宛先デバイス１４にビデオデータを提供する。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００２４】
[0040]  宛先デバイス１４は、コンピュータ可読媒体１６を介して、復号されることになる符号化されたビデオデータを受信し得る。コンピュータ可読媒体１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移動させることが可能である任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体１６は、ソースデバイス１２がリアルタイムで宛先デバイス１４に符号化されたビデオデータを直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、および宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理的伝送線路のような任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【００２５】
[0041]  いくつかの例では、符号化されたデータは、出力インターフェース２２から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または非揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体のような、多様な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイスは、ファイルサーバ、またはソースデバイス１２によって生成される符号化されたビデオを記憶し得る別の中間記憶デバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、宛先デバイス１４にその符号化されたビデオデータを送信することとが可能である任意のタイプのサーバであり得る。実例的なファイルサーバは、（例えば、ウェブサイトのための）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続記憶（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む、任意の標準的データ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム、等）、またはその両方の組み合わせを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであり得る。
【００２６】
[0042]  この開示の技法は、ワイヤレスアプリケーションまたは設定に必ずしも限定されるわけではない。本技法は、無線テレビブロードキャスト、ケーブルテレビ送信、衛星テレビ送信、ＨＴＴＰを通した動的適応型ストリーミング（ＤＡＳＨ）のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションのような、多様なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話通信のようなアプリケーションをサポートするための１方向（one-way）または２方向（two-way）ビデオ送信をサポートするように構成され得る。
【００２７】
[0043]  図１の例では、ソースデバイス１２は、ビデオソース１８、ビデオ符号化器２０、および出力インターフェース２２を含む。宛先デバイス１４は、入力インターフェース２８、ビデオ復号器３０、およびディスプレイデバイス３２を含む。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは配置を含み得る。例えば、ソースデバイス１２は、外部カメラのような外部ビデオソース１８からビデオデータを受信し得る。同じように、宛先デバイス１４は、統合されたディスプレイデバイスを含むというよりはむしろ、外部ディスプレイデバイスとインターフェースし得る。この開示にしたがって、ソースデバイス１２のビデオ符号化器２０および／または宛先デバイス１４のビデオ復号器３０は、ここに説明される１つまたは複数のＤＭＶＤ技法を遂行するように構成され得る。例えば、ビデオ符号化器２０および／またはビデオ復号器３０は、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＤとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分に、１つまたは複数の制約を適用するように構成され得る。制約は、ＤＭＶＤプロセスによって導出された動きベクトルに対する制限を含み得る。この開示の実例的な制約は、２つの参照ピクチャリスト（例えば、Ｌｉｓｔ０およびＬｉｓｔ１）中のＭＶとＭＶＤとの間の何らかの予め定義された関係を義務付ける制約を含み得る。制約がＤＭＶＤに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、ＭＶのリストと最終の選択されたＭＶとが異なり得る。第１の例では、制約は、導出されたＭＶが対称であるかどうかを含む。第２の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうかを含む。第３の例では、制約は、導出されたＭＶが反対称であるかどうかを含む。第４の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうかを含む。いくつかの例では、対称／反対称ＭＶ／ＭＶ差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。
【００２８】
[0044]  さらなる例では、制約がある特定の例でのみ適用されるように、制約には条件が設けられ得る。条件は、制約がいつ有効にされるかに対する制限を含み得る。例えば、（１）制約は、初期ＭＶが対称であるときにのみ有効にされる、（２）制約は、初期ＭＶが疑似対称であるときにのみ有効にされる、（３）制約は、初期ＭＶが反対称であるときにのみ有効にされる、（４）制約は、初期ＭＶが疑似反対称（pseudo anti-symmetric）であるときにのみ有効にされる、（５）制約は、初期ＭＶが対称でないときにのみ有効にされる、（６）制約は、初期ＭＶが疑似対称でないときにのみ有効にされる、（７）制約は、初期ＭＶが反対称でないときにのみ有効にされる、（８）制約は、初期ＭＶが疑似反対称でないときにのみ有効にされる、（９）制約は、初期ＭＶのＬｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるときにのみ有効にされる、（１０）制約は、初期ＭＶのＬｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないときにのみ有効にされる、（１１）制約は、初期ＭＶの参照インデックスが両方とも０であるときにのみ有効にされる、（１２）制約は、初期ＭＶの参照インデックスが両方とも０でないときにのみ有効にされる、（１３）制約は、Ｌｉｓｔ０参照ピクチャと現在のピクチャとの間のＰＯＣ距離と、Ｌｉｓｔ１参照ピクチャと現在のピクチャとの間のＰＯＣ距離とが同じであるときにのみ有効にされる、（１４）制約は、Ｌｉｓｔ０参照ピクチャと現在のピクチャとの間のＰＯＣ距離と、Ｌｉｓｔ１参照ピクチャと現在のピクチャとの間のＰＯＣ距離とが同じでないときにのみ有効にされる、（１５）対称ＭＶ差分の制約は、初期ＭＶが対称でないときに適用される、および／または（１６）反対称ＭＶ差分の制約は、初期ＭＶが対称であるときに適用される。
【００２９】
[0045]  さらなる例では、対称制約のＭＶ解像度（resolution）は、決定的な様式で割り当てられることができる。一例では、バイラテラルテンプレートマッチングの整数ペル精緻化（integer-pel refinement）のために、いかなる対称／疑似対称／非対称制約も課されるべきではなく、および前述された制約は、ハーフペル（half-pel）、クォーターペル（quarter-pel）、またはより高い精度の動き精緻化に対してのみである。（そのＭＶ解像度での）制約のレベルは、ＳＰＳ／ＰＰＳ／スライスヘッダを通じてシグナリングされることができる。解像度はまた、ＢＩＯ、サブペルフレームレートアップコンバージョン（ＦＲＵＣ）のような他の動き精緻化ツールが有効にされるかどうかと併せて決められることができる。例えば、ＢＩＯが有効にされるとき、制約は、クォーターペルまたはより高い精度の動き精緻化に対して課せられるべきではない。
【００３０】
[0046]  別の例では、制約のレベルは、（Ｌ０とも呼ばれる）Ｌｉｓｔ０ ＭＶと（Ｌ１と呼ばれる）Ｌｉｓｔ１ ＭＶとの間の絶対差分（absolute difference）、Ｌｉｓｔ０ ＭＶとＬｉｓｔ１ ＭＶとの間の（それらの相対ＰＯＣ距離に基づいて）スケーリングされた絶対差分、またはＬｉｓｔ０とＬｉｓｔ１と（すなわち、この例では、Ｐ０とＰ１と）の補間されたサンプルの間の初期ＳＡＤ値にしたがって適応的にさせられることができる。代替として、（現在のテンプレート、Ｐ０）と現在のテンプレート、Ｐ１）との間のＳＡＤ値の比は、何のＭＶ解像度において制約が課せられるべきかを決めるために使用されることができる。この例では、ＳＡＤ値の比がしきい値より低い場合、いかなる前述された対称制約も課されるべきではない。
【００３１】
[0047]  さらに、いくつかの例では、単一の制約（例えば、対称ＭＶ、対称ＭＶ差分、反対称ＭＶ、または反対称ＭＶ差分）が、ある１つの条件に基づいて、導出されたＭＶに適用される。他の例では、複数の制約が、複数の条件に基づいて、導出されたＭＶに適用される。
【００３２】
[0048]  図１の例示されているシステム１０は単に、一例に過ぎない。この開示のＤＭＶＤを遂行するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって遂行され得る。例えば、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分を制約するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって遂行され得る。概して、この開示の技法は、ビデオ符号化デバイスによって遂行されるが、本技法はまた、典型的に「ＣＯＤＥＣ」と呼ばれるビデオ符号化器／復号器によって遂行され得る。その上、この開示の技法はまた、ビデオプリプロセッサによって遂行され得る。ソースデバイス１２および宛先デバイス１４は単に、ソースデバイス１２が宛先デバイス１４への送信のためのコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。いくつかの例では、デバイス１２、１４は、デバイス１２、１４の各々がビデオ符号化および復号コンポーネントを含むような実質的に対称的な方法で動作し得る。故に、システム１０は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス１２とビデオデバイス１４との間の１方向または２方向ビデオ送信をサポートし得る。
【００３３】
[0049]  ソースデバイス１２のビデオソース１８は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされたビデオを包含するビデオアーカイブ、および／またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてコンピュータグラフィックスベースのデータを、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組み合わせを生成し得る。いくつかのケースでは、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラ電話またはビデオ電話を形成し得る。上述されたように、しかしながら、この開示に説明される技法は、一般にビデオコーディングに適用可能であり得、およびワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。各ケースでは、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオは、ビデオ符号化器２０によって符号化され得る。符号化されたビデオ情報はその後、コンピュータ可読媒体１６上に出力インターフェース２２によって出力され得る。
【００３４】
[0050]  コンピュータ可読媒体１６は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信のような一過性媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Ｂｌｕ−ｒａｙディスク、または他のコンピュータ可読媒体のような記憶媒体（すなわち、非一時的記憶媒体）を含み得る。いくつかの例では、ネットワークサーバ（図示せず）は、ソースデバイス１２から符号化されたビデオデータを受信し、および例えば、ネットワーク送信を介して、宛先デバイス１４に符号化されたビデオデータを提供し得る。同様に、ディスクスタンピング設備のような媒体製造設備（medium production facility）のコンピューティングデバイスは、ソースデバイス１２から符号化されたビデオデータを受信し、および符号化されたビデオデータを包含するディスクを製造し得る。したがって、コンピュータ可読媒体（computer-readable medium）１６は、様々な例において、様々な形態の１つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【００３５】
[0051]  宛先デバイス１４の入力インターフェース２８は、コンピュータ可読媒体１６から情報を受信する。コンピュータ可読媒体１６の情報は、ブロックおよび他のコーディングされたユニットの特性および／または処理を記述するシンタックス要素を含む、ビデオ符号化器２０によって定義されたシンタックス情報を含み得、それはまた、ビデオ復号器３０によって使用される。ディスプレイデバイス３２は、ユーザに復号されたビデオデータを表示し、および陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスのような多様なディスプレイデバイスのうちの任意のものを備え得る。
【００３６】
[0052]  ビデオ符号化器２０およびビデオ復号器３０は、ＩＴＵ−Ｔ Ｈ．２６５とも呼ばれる高効率ビデオコーディング（ＨＥＶＣ）規格のようなビデオコーディング規格にしたがって動作し得る。代替として、ビデオ符号化器２０およびビデオ復号器３０は、ＭＰＥＧ ４、Ｐａｒｔ １０、アドバンスドビデオコーディング（ＡＶＣ）、またはそのような規格の拡張と代替として呼ばれる、ＩＴＵ−Ｔ Ｈ．２６４規格のような、他の所有権または工業規格にしたがって動作し得る。この開示の技法は、しかしながら、いずれの特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、ＭＰＥＧ−２およびＩＴＵ−Ｔ Ｈ．２６３を含む。図１には示されていないが、いくつかの態様では、ビデオ符号化器２０およびビデオ復号器３０は各々、オーディオ符号化器および復号器と統合され得、および共通のデータストリームまたは別個のデータストリーム中でのオーディオおよびビデオの両方の符号化を扱うために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能である場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ Ｈ．２２３マルチプレクサプロトコルに、またはユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルにしたがい得る。
【００３７】
[0053]  ビデオ符号化器２０およびビデオ復号器３０は各々、１つまたは複数のマイクロプロセッサ、（固定機能（fixed-function）回路および／またはプログラマブル処理回路を含む）処理回路、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、様々な適切な符号化器および／または復号器回路のうちの任意のものとしてインプリメントされ得る。本技法がソフトウェアにおいて部分的にインプリメントされるとき、デバイスは、適した非一時的コンピュータ可読媒体中にソフトウェアのための命令を記憶し、およびこの開示の技法を遂行するために、１つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオ符号化器２０およびビデオ復号器３０の各々は、１つまたは複数の符号化器または復号器中に含まれ得、それらのうちのいずれも、それぞれのデバイス中において、組み合わされた符号化器／復号器（ＣＯＤＥＣ）の一部として統合され得る。ビデオ符号化器２０および／またはビデオ復号器３０を含むデバイスは、集積回路、マイクロプロセッサ、および／またはセルラ電話のようなワイヤレス通信デバイスを備え得る。
【００３８】
[0054]  一般に、ＩＴＵ−Ｔ Ｈ．２６５によると、ビデオピクチャは、ルーマサンプルおよびクロマサンプルの両方を含み得るコーディングツリーユニット（ＣＴＵ：coding tree unit）（または最大コーディングユニット（ＬＣＵ：largest coding unit））のシーケンスへと分割され得る。代替として、ＣＴＵは、モノクロームデータ（すなわち、ルーマサンプルのみ）を含み得る。ビットストリーム内のシンタックスデータ（syntax data）は、ＣＴＵについてのサイズを定義し得、それは、ピクセル数の観点から最大コーディングユニットである。スライスは、コーディング順序でいくつかの連続するＣＴＵを含む。ビデオピクチャは、１つまたは複数のスライスへと区分化され得る。各ＣＴＵは四分木（quadtree）にしたがってコーディングユニット（ＣＵ）へと分けられ得る。一般に、四分木データ構造（quadtree data structure）は、ＣＵごとに１つのノードを含み、ルートノード（root node）が、ＣＴＵに対応する。ＣＵが４つのサブＣＵへと分けられる場合、ＣＵに対応するノードは、４つのリーフノード（leaf node）を含み、それらの各々が、サブＣＵのうちの１つに対応する。
【００３９】
[0055]  四分木データ構造の各ノードは、対応するＣＵにシンタックスデータを提供し得る。例えば、四分木におけるノードは、そのノードに対応するＣＵがサブＣＵへと分割されるかどうかを示す分割フラグ（split flag）を含み得る。ＣＵについてのシンタックス要素は再帰的に定義され得、およびＣＵがサブＣＵへと分けられるかどうかに依存し得る。ＣＵがこれ以上分けられない場合、それは、リーフＣＵと呼ばれる。この開示では、リーフＣＵの４つのサブＣＵもまた、元のリーフＣＵの明示的な分割が存在しない場合でも、リーフＣＵと呼ばれることになる。例えば、１６ｘ１６のサイズのＣＵがこれ以上分けられない場合、４つの８ｘ８のサブＣＵもまた、１６ｘ１６のＣＵが決して分けられなかったといえども、リーフＣＵと呼ばれることになる。
【００４０】
[0056]  ＣＵは、ＣＵがサイズ区別（size distinction）を有さないことを除いて、Ｈ．２６４規格のマクロブロックと同様の目的を有する。例えば、ＣＴＵは、（サブＣＵとも呼ばれる）４つの子ノードへと分けられ得、および各子ノードは次に、親ノードになり、および別の４つの子ノードへと分けられ得る。四分木のリーフノードと呼ばれる最終の分けられていない子ノードは、リーフＣＵとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連付けられたシンタックスデータは、最大ＣＵ深度と呼ばれる、ＣＴＵが分けられ得る最大回数を定義し得、およびまた、コーディングノードの最小サイズを定義し得る。それ故に、ビットストリームはまた、最小コーディングユニット（ＳＣＵ：smallest coding unit）を定義し得る。この開示は、ＨＥＶＣのコンテキストにおけるＣＵ、予測ユニット（ＰＵ：prediction unit）、または変換ユニット（ＴＵ：transform unit）のうちの任意のもの、または他の規格のコンテキストにおける同様のデータ構造（例えば、Ｈ．２６４／ＡＶＣにおけるそのマクロブロックおよびサブブロック）を指すために「ブロック（block）」という用語を使用する。
【００４１】
[0057]  ＣＵは、コーディングノードと、そのコーディングノードに関連付けられた予測ユニット（ＰＵ）および変換ユニット（ＴＵ）とを含む。ＣＵのサイズは、コーディングノードのサイズに対応し、および形状が概ね正方形である。ＣＵのサイズは、８×８ピクセルから最大で、最大サイズのＣＴＵのサイズ、例えば、６４×６４ピクセルまたはそれ以上までの範囲に及び得る。各ＣＵは、１つまたは複数のＰＵおよび１つまたは複数のＴＵを包含し得る。ＣＵに関連付けられたシンタックスデータは、例えば、ＣＵの１つまたは複数のＰＵへの区分化を記述し得る。区分化モード（Partitioning mode）は、ＣＵがスキップまたは直接モード符号化されるか、イントラ予測モード符号化されるか、あるいはインター予測モード符号化されるかの間で異なり得る。ＰＵは、形状が非正方形になるように区分化され得る。ＣＵに関連付けられたシンタックスデータはまた、例えば、四分木にしたがったＣＵの１つまたは複数のＴＵへの区分化を記述し得る。ＴＵは、形状が正方形または非正方形（例えば、長方形）であることができる。
【００４２】
[0058]  ＨＥＶＣ規格は、ＴＵにしたがった変換を許容し、それは、ＣＵによって異なり得る。ＴＵは典型的に、区分化されたＣＴＵのために定義された所与のＣＵ内のＰＵ（またはＣＵの区分）のサイズに基づいてサイジングされるが、これは、いつもこのケースが起こり得るわけではない。ＴＵは典型的に、ＰＵ（または、例えば、イントラ予測のケースでは、ＣＵの区分）と同じサイズであるかまたはより小さい。いくつかの例では、ＣＵに対応する残差サンプルは、「残差四分木」（ＲＱＴ：residual quad tree）として知られる四分木構造を使用してより小さいユニットへと再分割され得る。ＲＱＴのリーフノードは、変換ユニット（ＴＵ）と呼ばれ得る。ＴＵに関連付けられたピクセル差分値（Pixel difference value）は、変換係数（transform coefficient）を作り出すために変換され得、それは、量子化され得る。
【００４３】
[0059]  リーフＣＵは、インター予測を使用して予測されるときに、１つまたは複数の予測ユニット（ＰＵ）を含み得る。一般に、ＰＵは、対応するＣＵの全てまたは一部分に対応する空間的エリアを表し、およびそのＰＵについての参照サンプルを取り出すおよび／または生成するためのデータを含み得る。その上、ＰＵは、予測に関するデータを含む。ＣＵがインターモード符号化されるとき、ＣＵの１つまたは複数のＰＵは、１つまたは複数の動きベクトルのような動き情報を定義するデータを含み得るか、またはそれらＰＵは、スキップモードコーディングされ得る。ＰＵについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度（例えば、４分の１ピクセル精度または８分の１ピクセル精度）、動きベクトルが指し示す参照ピクチャ、および／または動きベクトルについての参照ピクチャリスト（例えば、Ｌｉｓｔ０またはＬｉｓｔ１）を記述し得る。
【００４４】
[0060]  リーフＣＵはまた、イントラモード予測され得る。一般に、イントラ予測は、イントラモードを使用してリーフＣＵ（またはその区分）を予測することを伴う。ビデオコーダは、リーフＣＵ（またはその区分）の予測に使用するために、リーフＣＵに近隣する以前にコーディングされたピクセルのセットを選択し得る。
【００４５】
[0061]  リーフＣＵはまた、１つまたは複数の変換ユニット（ＴＵ）を含み得る。変換ユニットは、上述されたように、（ＴＵ四分木構造とも呼ばれる）ＲＱＴを使用して指定され得る。例えば、分割フラグは、リーフＣＵが４つの変換ユニットへと分けられるかどうかを示し得る。その後、各ＴＵは、さらなるサブＴＵへとさらに分けられ得る。ＴＵがこれ以上分けられないとき、それは、リーフＴＵと呼ばれ得る。概して、イントラコーディングの場合、リーフＣＵに属する全てのリーフＴＵは、同じイントラ予測モードを共有する。すなわち、リーフＣＵの全てのＴＵについて予測された値を算出するために、同じイントラ予測モードが概して適用される。イントラコーディングの場合、ビデオ符号化器は、ＴＵに対応するＣＵの一部分と元のブロックとの間の差分として、イントラ予測モードを使用して、各リーフＴＵについての残差値を算出し得る。ＴＵは、必ずしもＰＵのサイズに限定されるわけではない。このことから、ＴＵは、ＰＵより大きいことも小さいこともあり得る。イントラコーディングの場合、ＣＵの区分、またはＣＵ自体は、ＣＵについて対応するリーフＴＵとコロケート（collocate）され得る。いくつかの例では、リーフＴＵの最大サイズは、対応するリーフＣＵのサイズに対応し得る。
【００４６】
[0062]  その上、リーフＣＵのＴＵはまた、残差四分木（ＲＱＴ）と呼ばれる、それぞれの四分木データ構造に関連付けられ得る。すなわち、リーフＣＵは、リーフＣＵがどのようにＴＵへと区分化されるかを示す四分木を含み得る。ＴＵ四分木のルートノードは概して、リーフＣＵに対応するが、その一方で、ＣＵ四分木のルートノードは概して、ＣＴＵ（またはＬＣＵ）に対応する。分けられないＲＱＴのＴＵは、リーフＴＵと呼ばれる。一般に、この開示は、別途記載されない限り、リーフＣＵおよびリーフＴＵそれぞれを指すために、ＣＵおよびＴＵという用語を使用する。
【００４７】
[0063]  ビデオシーケンスは典型的に、ランダムアクセスポイント（ＲＡＰ：random-access point）ピクチャから開始する、一連のビデオフレームまたはピクチャを含む。ビデオシーケンスは、ビデオシーケンスの特性であるシーケンスパラメータセット（ＳＰＳ：sequence parameter set）中にシンタックスデータを含み得る。ピクチャの各スライスは、それぞれのスライスについての符号化モードを記述するスライスシンタックスデータを含み得る。ビデオ符号化器２０は典型的に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロック上で動作する。ビデオブロックは、ＣＵ内のコーディングノードに対応し得る。ビデオブロックは、固定のまたは変動するサイズを有し得、および指定されたコーディング規格にしたがってサイズが異なり得る。
【００４８】
[0064]  例として、予測は、様々なサイズのＰＵについて遂行され得る。特定のＣＵのサイズが２Ｎ×２Ｎであると想定すると、イントラ予測（intra-prediction）は、２Ｎ×２ＮまたはＮ×ＮのＰＵサイズに対して遂行され得、およびインター予測（inter-prediction）は、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、またはＮ×Ｎの対称ＰＵサイズに対して遂行され得る。インター予測のための非対称区分化（asymmetric partitioning）はまた、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズについて遂行され得る。非対称区分化では、ＣＵの一方向は区分化されないが、その一方で、他の方向は、２５％および７５％へと区分化される。２５％区分に対応するＣＵの一部分は、「ｎ」によって示され、その後に「上」、「下」、「左」、または「右」のインジケーションが続く。このことから、例えば、「２Ｎ×ｎＵ」は、上部の２Ｎ×０．５Ｎ ＰＵと下部の２Ｎ×１．５Ｎ ＰＵとで水平に区分化される２Ｎ×２Ｎ ＣＵを指す。
【００４９】
[0065]  この開示では、「Ｎ×Ｎ」および「Ｎ掛けるＮ（N by N）」は、垂直および水平寸法の観点からビデオブロックのピクセル寸法、例えば、１６×１６ピクセルまたは１６掛ける１６ピクセルを指すために交換可能に使用され得る。一般に、１６×１６ブロックは、垂直方向に１６ピクセル（ｙ＝１６）を、および水平方向に１６ピクセル（ｘ＝１６）を有することになる。同じように、Ｎ×Ｎブロックは概して、垂直方向にＮピクセルを、および水平方向にＮピクセルを有し、ここで、Ｎは、自然数値を表す。ブロック中のピクセルは、行と列に配置され得る。その上、ブロックは、水平方向において、垂直方向と同じ数のピクセルを必ずしも有する必要はない。例えば、ブロックは、Ｎ×Ｍピクセルを備え得、ここで、Ｍは、必ずしもＮと等しいわけではない。
【００５０】
[0066]  ＣＵのＰＵを使用するイントラ予測またはインター予測コーディングに続いて、ビデオ符号化器２０は、ＣＵのＴＵについての残差データを算出し得る。ＰＵは、（ピクセルドメインとも呼ばれる）空間的ドメイン中で予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、およびＴＵは、変換、例えば、離散コサイン変換（ＤＣＴ：discrete cosine transform）、整数変換、ウェーブレット変換、または残差ビデオデータへの概念的に同様の変換、の適用に続いて変換ドメイン中に係数を備え得る。残差データは、符号化されていないピクチャとのピクセルと、ＰＵに対応する予測値との間のピクセル差分に対応し得る。ビデオ符号化器２０は、ＣＵについての残差データを表す量子化された変換係数を含むようにＴＵを形成し得る。すなわち、ビデオ符号化器２０は、（残差ブロックの形態の）残差データを算出し、変換係数のブロックを作り出すために残差ブロックを変換し、およびその後、量子化された変換係数を形成するために変換係数を量子化し得る。ビデオ符号化器２０は、量子化された変換係数を含むＴＵ、ならびに他のシンタックス情報（例えば、ＴＵについての分割情報（splitting information））を形成し得る。
【００５１】
[0067]  上述されたように、変換係数を作り出すための任意の変換に続いて、ビデオ符号化器２０は、変換係数の量子化を遂行し得る。量子化は概して、変換係数を表すために使用されるデータの量をできる限り低減するためにそれら係数が量子化されるプロセスを指し、さらなる圧縮を提供する。量子化プロセスは、係数のうちのいくつかまたは全てに関連付けられたビット深度（bit depth）を低減し得る。例えば、ｎビット値は、量子化中にｍビット値に切り捨てられ得、ここで、ｎは、ｍより大きい。
【００５２】
[0068]  量子化に続いて、ビデオ符号化器は、変換係数を走査し得、量子化された変換係数を含む２次元行列から１次元ベクトルを作り出す。走査は、アレイの前方により高いエネルギー（およびしたがって、より低い周波数）係数を置き、且つアレイの後方により低いエネルギー（およびしたがって、より高い周波数）係数を置くように設計され得る。いくつかの例では、ビデオ符号化器２０は、エントロピー符号化（entropy encode）されることができる直列化されたベクトルを作り出すために、量子化された変換係数を走査するための予め定義された走査順序を利用し得る。他の例では、ビデオ符号化器２０は、適応走査を遂行し得る。１次元ベクトルを形成するために量子化された変換係数を走査した後に、ビデオ符号化器２０は、例えば、コンテキスト適応可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ：context-adaptive binary arithmetic coding）、シンタックスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）、確率間隔区分化エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コーディング、または別のエントロピー符号化方法にしたがって、１次元ベクトルをエントロピー符号化し得る。ビデオ符号化器２０はまた、ビデオデータを復号する際に、ビデオ復号器３０によって使用するための符号化されたビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【００５３】
[0069]  ＣＡＢＡＣを遂行するために、ビデオ符号化器２０は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの近隣値が非ゼロであるか否かに関連し得る。ＣＡＶＬＣを遂行するために、ビデオ符号化器２０は、送信されることになるシンボルについての可変長コード（variable length code）を選択し得る。ＶＬＣにおけるコードワードは、比較的より短いコードがより確実なシンボルに対応する一方、より長いコードがより確実でないシンボルに対応するように構築され得る。このように、ＶＬＣの使用は、例えば、送信されることになる各シンボルについての等しい長さのコードワードを使用することを通してビット節約を達成し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【００５４】
[0070]  一般に、ビデオ復号器３０は、符号化されたデータを復号するために、ビデオ符号化器２０によって遂行されるものと実質的に同様であり、にもかかわらず相反する、プロセスを遂行する。例えば、ビデオ復号器３０は、残差ブロックを再び作り出す（reproduce）ために、受信されたＴＵの係数を逆量子化および逆変換する。ビデオ復号器３０は、予測されたブロックを形成するために、シグナリングされた予測モード（イントラまたはインター予測）を使用する。その後、ビデオ復号器３０は、元のブロックを再び作り出すために、（ピクセルごとに）予測されたブロックと残差ブロックとを組み合わせる。ブロック境界に沿って視覚的アーティファクト（visual artifact）を低減するためにデブロッキングプロセス（deblocking process）を遂行するといったような、追加の処理が遂行され得る。さらに、ビデオ復号器３０は、ビデオ符号化器２０のＣＡＢＡＣ符号化プロセスと実質的に同様であり、にもかかわらず相反する方法で、ＣＡＢＡＣを使用してシンタックス要素を復号し得る。
【００５５】
[0071]  ビデオ符号化器２０はさらに、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ：picture parameter set）、またはビデオパラメータセット（ＶＰＳ：video parameter set）のような他のシンタックスデータ中で、ビデオ復号器３０に、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータのようなシンタックスデータを送り得る。
【００５６】
[0072]  図２は、この開示の１つまたは複数のＤＭＶＤ技法を遂行するように構成され得るビデオ符号化器２０の例を例示するブロック図である。例えば、ビデオ符号化器２０は、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＤとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分に、１つまたは複数の制約を適用するように構成され得る。制約がＤＭＶＤに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、ＭＶのリストと最終の選択されたＭＶとが異なり得る。
【００５７】
[0073]  第１の例では、制約は、導出されたＭＶが対称であるかどうかを含む。第２の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうかを含む。第３の例では、制約は、導出されたＭＶが反対称であるかどうかを含む。第４の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうかを含む。いくつかの例では、対称／反対称ＭＶ／ＭＶ差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がいくつかの例でのみ適用されるように、制約には条件が設けられ得る。
【００５８】
[0074]  特に、ビデオ符号化器２０は、再構築ループ中にこの開示のＤＭＶＤ技法を遂行し得、それは、逆量子化ユニット５８、逆変換ユニット６０、および加算器６２によって遂行されるプロセスを含む。さらに、上述されたように、ビデオ符号化器２０は、ＤＭＶＤを遂行する際に、ビデオ復号器３０のようなビデオ復号器を支援し得るある特定の値をシグナリングし得る。
【００５９】
[0075]  ビデオ符号化器２０は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを遂行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または取り除くために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または取り除くために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースのコーディングモードのうちの任意のものを指し得る。単方向（uni-directional）予測（Ｐモード）または双予測（Ｂモード）のようなインターモードは、いくつかの時間ベースのコーディングモードのうちの任意のものを指し得る。
【００６０】
[0076]  図２に示されているように、ビデオ符号化器２０は、符号化されることになるビデオフレーム内の現在のビデオブロックを受信する。図２の例では、ビデオ符号化器２０は、ビデオデータメモリ６６、モード選択ユニット４０、（復号ピクチャバッファ（ＤＰＢ：a decoded picture buffer）とも呼ばれ得る）参照ピクチャメモリ６４、加算器５０、変換処理ユニット５２、量子化ユニット５４、およびエントロピー符号化ユニット５６を含む。モード選択ユニット４０は次に、動き補償ユニット４４、動き推定ユニット４２、イントラ予測ユニット４６、および区分化ユニット（partition unit）４８を含む。ビデオブロック再構築のために、ビデオ符号化器２０はまた、逆量子化ユニット５８、逆変換ユニット６０、および加算器６２を含む。デブロッキングフィルタ（deblocking filter）（図２には図示せず）もまた、再構築されたビデオからブロッキネスアーティファクト（blockiness artifact）を取り除くようにブロック境界をフィルタリングするために含まれ得る。所望される場合、デブロッキングフィルタは典型的に、加算器６２の出力をフィルタリングするであろう。追加のフィルタ（インループまたはポストループ）もまた、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは簡潔さのために示されていないが、所望される場合、（インループフィルタとして）加算器５０の出力をフィルタリングし得る。
【００６１】
[0077]  ビデオデータメモリ６６は、ビデオ符号化器２０のコンポーネントによって符号化されることになるビデオデータを記憶するように構成され得る。ビデオデータメモリ１０１中に記憶されるビデオデータは、例えば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、例えば、イントラまたはインター予測モードで、ビデオ符号化器２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１０１は、同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスを含むＤＲＡＭのような、多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ１０１は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１０１は、ビデオ符号化器２０の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【００６２】
[0078]  符号化プロセス中に、ビデオ符号化器２０は、コーディングされることになるビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックへと分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間的予測を提供するために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対して、受信されたビデオブロックのインター予測符号化を遂行する。イントラ予測ユニット４６は代替として、空間的予測を提供するために、コーディングされることになるブロックと同じフレームまたはスライス中の１つまたは複数の近隣ブロックに対して、受信されたビデオブロックのイントラ予測符号化を遂行し得る。ビデオ符号化器２０は、例えば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパスを遂行し得る。
【００６３】
[0079]  さらに、区分化ユニット（partition unit）４８は、以前のコーディングパスにおける以前の区分化スキームの評価に基づいて、ビデオデータのブロックをサブブロックへと区分化し得る。例えば、区分化ユニット４８は、レート−歪み分析（例えば、レート−歪み最適化）に基づいて、最初にフレームまたはスライスをＣＴＵへと区分化し、およびＣＴＵの各々をサブＣＵへと区分化し得る。モード選択ユニット４０はさらに、ＣＴＵのサブＣＵへの区分化を示す四分木データ構造を作り出し得る。四分木のリーフノードＣＵは、１つまたは複数のＰＵおよび１つまたは複数のＴＵを含み得る。
【００６４】
[0080]  モード選択ユニット４０は、例えば、誤差結果に基づいて、予測モードのうちの１つ、イントラまたはインターを選択し得、および残差データを生成するために加算器５０に、および参照フレームとして使用するための符号化されたブロックを再構築するために加算器６２に、結果として生じる予測されたブロックを提供する。モード選択ユニット４０はまた、エントロピー符号化ユニット５６に、動きベクトル、イントラモードインジケータ、区分化情報、および他のそのようなシンタックス情報のようなシンタックス要素を提供する。
【００６５】
[0081]  動き推定ユニット４２および動き補償ユニット４４は、高度に統合され得るが、概念的な目的のために別個に例示されている。動き推定ユニット４２によって遂行される動き推定は、動きベクトルを生成するプロセスであり、それは、ビデオブロックについての動きを推定する。動きベクトルは、例えば、現在のフレーム（または他のコーディングされたユニット）内でコーディングされている現在のブロックに対する参照フレーム（または他のコーディングされたユニット）内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。予測ブロックは、絶対差分の和（ＳＡＤ：sum of absolute difference）、２乗差分の和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされることになるブロックに密接にマッチすることを見出されるブロックである。いくつかの例では、ビデオ符号化器２０は、参照ピクチャメモリ６４中に記憶された参照ピクチャのサブ整数ピクセル位置についての値を算出し得る。例えば、ビデオ符号化器２０は、参照ピクチャの４分の１ピクセル位置、８分の１ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、全ピクセル位置および分数ピクセル位置に対して動き探索を遂行し、および分数ピクセル精度（fractional pixel precision）で動きベクトルを出力し得る。
【００６６】
[0082]  動き推定ユニット４２は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのＰＵについての動きベクトルを算出する。参照ピクチャは、第１の参照ピクチャリスト（Ｌｉｓｔ０）または第２の参照ピクチャリスト（Ｌｉｓｔ１）から選択され得、それらの各々は、参照ピクチャメモリ６４中に記憶された１つまたは複数の参照ピクチャを識別する。動き推定ユニット４２は、エントロピー符号化ユニット５６および動き補償ユニット４４に算出された動きベクトルを送る。
【００６７】
[0083]  動き補償ユニット４４によって遂行される動き補償は、動き推定ユニット４２によって決定される動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。繰り返すが、いくつかの例では、動き推定ユニット４２および動き補償ユニット４４は機能的に統合され得る。現在のビデオブロックのＰＵについての動きベクトルを受信すると、動き補償ユニット４４は、参照ピクチャリストのうちの１つ中に、動きベクトルが指し示す予測ブロックをロケートし得る。加算器５０は、以下に論述されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット４２は、ルーマ成分に対して動き推定を遂行し、および動き補償ユニット４４は、クロマ成分とルーマ成分との両方について、ルーマ成分に基づいて算出された動きベクトルを使用する。モード選択ユニット４０はまた、ビデオスライスのビデオブロックを復号する際に、ビデオ復号器３０によって使用するための、ビデオブロックおよびビデオスライスに関連付けられたシンタックス要素を生成し得る。
【００６８】
[0084]  イントラ予測ユニット４６は、上述されたように、動き推定ユニット４２および動き補償ユニット４４によって遂行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット４６は、現在のブロックを符号化するために使用するためのイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット４６は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、およびイントラ予測ユニット４６（または、いくつかの例ではモード選択ユニット４０）は、テストされたモードから使用するための適切なイントラ予測モードを選択し得る。
【００６９】
[0085]  例えば、イントラ予測ユニット４６は、様々なテストされたイントラ予測モードについてのレート−歪み分析を使用してレート−歪み値を算出し、およびテストされたモードの中で最良のレート−歪み特性を有するイントラ予測モードを選択し得る。レート−歪み分析は概して、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間の歪み（または誤差）の量、ならびに符号化されたブロックを作り出すために使用されたビットレート（すなわち、ビットの数）を決定する。イントラ予測ユニット４６は、どのイントラ予測モードがブロックについての最良のレート−歪み値を示すかを決定するために、様々な符号化されたブロックについての歪みおよびレートからの比を算出し得る。
【００７０】
[0086]  ブロックについてイントラ予測モードを選択した後に、イントラ予測ユニット４６は、エントロピー符号化ユニット５６にそのブロックについての選択されたイントラ予測モードを示す情報を提供し得る。エントロピー符号化ユニット５６は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオ符号化器２０は、様々なブロックについての符号化コンテキストの定義、およびそれらコンテキストの各々に対して使用するための最確イントラ予測モード（most probable intra-prediction mode）、イントラ予測モードインデックス表、および修正されたイントラ予測モードインデックス表のインジケーションを、送信されたビットストリーム構成データ中に含め得、それは、複数のイントラ予測モードインデックス表および複数の修正されたイントラ予測モードインデックス表（コードワードマッピング表とも呼ばれる）を含み得る。
【００７１】
[0087]  ビデオ符号化器２０は、コード化されている元のビデオブロックから、モード選択ユニット４０からの予測データを減算することによって残差ビデオブロックを形成する。加算器５０は、この減算演算を遂行する１つまたは複数のコンポーネントを表す。変換処理ユニット５２は、残差ブロックに離散コサイン変換（ＤＣＴ）または概念的に同様の変換のような変換を適用し、変換係数値を備えるビデオブロックを作り出す。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換（ＤＳＴ）、または他のタイプの変換が、ＤＣＴの代わりに使用されることができる。いずれのケースでも、変換処理ユニット５２は、残差ブロックに変換を適用し、変換係数のブロックを作り出す。変換は、ピクセルドメインから周波数ドメインのような変換ドメインに残差情報をコンバートし得る。変換処理ユニット５２は、量子化ユニット５４に結果として生じる変換係数を送り得る。量子化ユニット５４は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調節することによって修正され得る。
【００７２】
[0088]  量子化に続いて、エントロピー符号化ユニット５６は、量子化された変換係数をエントロピーコーディングする。例えば、エントロピー符号化ユニット５６は、コンテキスト適応可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分化エントロピー（ＰＩＰＥ）コーディング、または別のエントロピーコーディング技法を遂行し得る。コンテキストベースのエントロピーコーディングのケースでは、コンテキストは近隣ブロックに基づき得る。エントロピー符号化ユニット５６によるエントロピーコーディングに続いて、符号化されたビットストリーム（encoded bitstream）は、別のデバイス（例えば、ビデオ復号器３０）に送信され得るか、または後の送信または取り出しのためにアーカイブされ得る。
【００７３】
[0089]  逆量子化ユニット５８および逆変換ユニット６０は、ピクセルドメイン中の残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。特に、加算器６２は、参照ピクチャメモリ６４中での記憶のための再構築されたビデオブロックを作り出すために、動き補償ユニット４４またはイントラ予測ユニット４６によって先に作り出された動き補償予測ブロックに再構築された残差ブロックを追加する。再構築されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、参照ブロックとして動き推定ユニット４２および動き補償ユニット４４によって使用され得る。
【００７４】
[0090]  図３は、この開示の１つまたは複数のＤＭＶＤ技法を遂行するように構成され得るビデオ復号器３０の例を例示するブロック図である。例えば、ビデオ復号器３０は、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＤとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分に、１つまたは複数の制約を適用するように構成され得る。制約がＤＭＶＤに適用されると、ある特定の例では、制約を満たす導出された動き情報のみが、有効な動き情報であると見なされる。このことから、制約が使用されなかった場合、ＭＶのリストと最終の選択されたＭＶとが異なり得る。
【００７５】
[0091]  第１の例では、制約は、導出されたＭＶが対称であるかどうかを含む。第２の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうかを含む。第３の例では、制約は、導出されたＭＶが反対称であるかどうかを含む。第４の例では、制約は、初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうかを含む。いくつかの例では、対称／反対称ＭＶ／ＭＶ差分制約の有効化は、明示的にシグナリングされる。他の例では、制約は、何らかのコーディングされた情報にしたがって暗示的に決定され得る。さらなる例では、制約がいくつかの例でのみ適用されるように、制約には条件が設けられ得る。
【００７６】
[0092]  図３の例では、ビデオ復号器３０は、ビデオデータメモリ６８、エントロピー復号ユニット７０、動き補償ユニット７２、イントラ予測ユニット７４、逆量子化ユニット７６、逆変換ユニット７８、参照ピクチャメモリ８２および加算器８０を含む。ビデオ復号器３０は、いくつかの例では、ビデオ符号化器２０（図２）に関して説明された符号化パスと概して相反する復号パスを遂行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルに基づいて予測データを生成し得、その一方で、イントラ予測ユニット７４は、エントロピー復号ユニット７０から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【００７７】
[0093]  ビデオデータメモリ６８は、ビデオ復号器３０のコンポーネントによって復号されることになる、符号化されたビデオビットストリームのような符号化されたビデオデータを記憶し得る。ビデオデータメモリ６８中に記憶されるビデオデータは、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理的データ記憶媒体にアクセスすることによって、例えば、コンピュータ可読媒体１６から、例えば、カメラのようなローカルビデオソースから、取得され得る。ビデオデータメモリ６８は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ（ＣＰＢ：a coded picture buffer）を形成し得る。参照ピクチャメモリ８２は、例えば、イントラまたはインター予測モードで、ビデオ復号器３０によってビデオデータを復号する際に使用するための、または出力のための参照ビデオデータを記憶するメモリであり得る。ビデオデータメモリ６８および参照ピクチャメモリ８２は、ＳＤＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、または他のタイプのメモリデバイスを含むＤＲＡＭ）のような多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ６８および参照ピクチャメモリ８２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ６８は、ビデオ復号器３０の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【００７８】
[0094]  ビデオデータメモリ６８は、ビットストリームの符号化されたビデオデータ（例えば、ＮＡＬユニット）を受信および記憶する。エントロピー復号ユニット７０は、ビデオデータメモリ６８から符号化されたビデオデータ（例えば、ＮＡＬユニット）を受信し得、およびシンタックス要素を取得するためにそのＮＡＬユニットを構文解析（parse）し得る。エントロピー復号ユニット７０は、ＮＡＬユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。復号プロセス中に、ビデオ復号器３０は、ビデオ符号化器２０から符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオ復号器３０のエントロピー復号ユニット７０は、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット７０は、動き補償ユニット７２に動きベクトルおよび他のシンタックス要素を転送する。ビデオ復号器３０は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。
【００７９】
[0095]  ビデオスライスがイントラコーディングされた（Ｉ）スライスとしてコーディングされるとき、イントラ予測ユニット７４は、現在のフレームまたはピクチャの以前に復号されたブロックからのデータおよびシグナリングされたイントラ予測モードに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされた（すなわち、ＢまたはＰ）スライスとしてコーディングされるとき、動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを作り出す。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから作り出され得る。ビデオ復号器３０は、参照ピクチャメモリ８２中に記憶された参照ピクチャに基づいて、デフォルト構築技法を使用して参照フレームリスト、Ｌｉｓｔ０およびＬｉｓｔ１、を構築し得る。動き補償ユニット７２は、動きベクトルおよび他のシンタックス要素を構文解析することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、および復号されている現在のビデオブロックについての予測ブロックを作り出すために予測情報を使用する。例えば、動き補償ユニット７２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（例えば、イントラまたはインター予測）と、インター予測スライスタイプ（例えば、ＢスライスまたはＰスライス）と、スライスについての参照ピクチャリストのうちの１つまたは複数についての構築情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測状態と、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【００８０】
[0096]  動き補償ユニット７２はまた、補間フィルタ（interpolation filter）に基づいて補間を遂行し得る。動き補償ユニット７２は、参照ブロックのサブ整数ピクセルについての補間された値を算出するために、ビデオブロックの符号化中にビデオ符号化器２０によって使用されるような補間フィルタを使用し得る。このケースでは、動き補償ユニット７２は、受信されたシンタックス要素からビデオ符号化器２０によって使用される補間フィルタを決定し、および予測ブロックを作り出すために補間フィルタを使用し得る。
【００８１】
[0097]  逆量子化ユニット７６は、ビットストリーム中で提供され、且つエントロピー復号ユニット７０によって復号された、量子化された変換係数を逆量子化（inverse quantize）、すなわち、逆−量子化（de-quantize）する。逆量子化プロセスは、量子化の程度、および同じように、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオ復号器３０によって算出される量子化パラメータＱＰYの使用を含み得る。
【００８２】
[0098]  逆変換ユニット７８は、ピクセルドメイン中に残差ブロックを作り出すために、変換係数に逆変換、例えば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【００８３】
[0099]  動き補償ユニット７２が動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックについての予測ブロックを生成した後に、ビデオ復号器３０は、逆変換ユニット７８からの残差ブロックを、動き補償ユニット７２によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器８０は、この加算演算を遂行する１つまたは複数のコンポーネントを表す。所望される場合、デブロッキングフィルタもまた、ブロッキネスアーティファクトを取り除くために、復号されたブロックをフィルタリングするように適用され得る。（コーディングループ中またはコーディングループ後のいずれかの）他のループフィルタもまた、ピクセル遷移を平滑化するために、またはそうでない場合はビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックはその後、参照ピクチャメモリ８２中に記憶され、それは、後続する動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ８２はまた、図１のディスプレイデバイス３２のようなディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
【００８４】
[0100]  この開示の技法にしたがって、ビデオ符号化器２０およびビデオ復号器３０のようなビデオコーダは、ビデオデータの現在のブロックについての動き情報を導出するために、ＤＭＶＤを遂行し得る。特に、これらの技法は、単独または任意の組み合わせで、以下の技法のうちの任意のものまたは全てを含み得る。
【００８５】
[0101]  この開示の概念のうちの１つは、ＤＭＶＤを改善することである。それら技法は、以下に論述されるように、いくつかの異なる項目別の態様において詳しく説明される。ＤＭＶＤを改善するための以下の技法は、個々に適用され得る。代替として、この開示に説明される技法の任意の組み合わせは、ともに適用され得る。以下のＤＭＶＤ技法は、個々に適用されようと、または任意の組み合わせで適用されようと、コーディング効率を増大させ、および／またはビットレートを低減し得る。例えば、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分を制約することは、コーディング効率を増大させ、および／またはビットレートを低減し得る。前述の例の各々では、制約は、条件に基づいて適用され得る。
【００８６】
[0102]  ＨＥＶＣでは、スライス中の最大コーディングユニットは、コーディングツリーブロック（ＣＴＢ：coding tree block）またはコーディングツリーユニット（ＣＴＵ）と呼ばれる。ＣＴＢは、四分木を包含し、それのノードは、コーディングユニットである。ＣＴＢのサイズは、（技術的には、８×８のＣＴＢサイズがサポートされることができるが）ＨＥＶＣメインプロファイルでは１６×１６〜６４×６４までの範囲中にあることができる。コーディングユニット（ＣＵ）は、ＣＴＢのと同じサイズであることができるが、且つ８×８と同じくらい小さくあることできる。各コーディングユニットは、１つのモードでコーディングされる。ＣＵがインターコーディングされるとき、それは、２つまたは４つの予測ユニット（ＰＵ）へとさらに区分化され得るか、またはさらなる区分化が適用されないときには単に１つのＰＵになり得る。２つのＰＵが１つのＣＵ中に存在するとき、それらは、半分のサイズの矩形、またはＣＵの１／４または３／４のサイズの２つの矩形であることができる。ＣＵがインターコーディングされるとき、動き情報の１つのセットが、各ＰＵについて存在する。加えて、各ＰＵは、動き情報のセットを導出するために、一意のインター予測モードでコーディングされる。
【００８７】
[0103]  ＨＥＶＣ規格では、予測ユニット（ＰＵ）についてそれぞれ、マージモード（スキップは特殊なケースのマージと見なされる）および高度動きベクトル予測（ＡＭＶＰ：advanced motion vector prediction）モードと名付けられた、２つのインター予測モードが存在する。ＡＭＶＰモードまたはマージモード（merge mode）のいずれでも、動きベクトル（ＭＶ）候補リストが、複数の動きベクトル予測子のために維持される。現在のＰＵの動きベクトル（１つ以上）、ならびにマージモードにおける参照インデックスは、ＭＶ候補リストから１つの候補を取ることによって生成される。
【００８８】
[0104]  ＭＶ候補リストは、マージモードの場合は最大で５つまでの候補を、およびＡＭＶＰモードの場合は２つの候補のみを包含する。マージ候補は、動き情報のセット、例えば、両方の参照ピクチャリスト（Ｌｉｓｔ０およびＬｉｓｔ１）に対応する動きベクトルと参照インデックスとを包含し得る。マージ候補がマージインデックスによって識別される場合、参照ピクチャは、現在のブロックの予測のために使用され、ならびに関連する動きベクトルが決定される。しかしながら、ＡＭＶＰモード下では、Ｌｉｓｔ０またはＬｉｓｔ１のいずれかからの各潜在的な予測方向について、ＡＭＶＰ候補が１つの動きベクトルのみを包含することから、ＭＶ候補リストに対するＭＶＰ予測子（ＭＶＰ）インデックスとともに、参照インデックスが明示的にシグナリングされる必要がある。ＡＭＶＰモードでは、予測された動きベクトルは、さらに精緻化されることができる。上記に見られることができるように、マージ候補は、動き情報のフルセットに対応するが、その一方でＡＭＶＰ候補は、特定の予測方向についての単に１つの動きベクトルおよび参照インデックスを包含する。両方のモードについての候補は、同じ空間的および時間的近隣ブロックから同様に導出される。
【００８９】
[0105]  ＤＭＶＤ技法の概念は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）が、以前に復号された情報を使用して、動きベクトルおよび予測方向のような動き情報を導出するためのものである。ここに使用される場合、「ＭＶ」という頭字語は、動きベクトルを表す。Ｌｉｓｔ０およびＬｉｓｔ１は、復号ピクチャバッファ（ＤＰＢ）または（図３の）参照ピクチャメモリ８２中のピクチャのリストとして構築される２つのリストである。参照ピクチャインデックス（reference picture index）と呼ばれるインデックスは、これらのリストのうちの１つ中で特定のピクチャを識別するために使用される。単予測（uni-prediction）の場合、ピクチャは、これらのリストのうちのいずれかから選択されることができる。双予測の場合、２つのピクチャが、各リストにつき１つずつ（例えば、Ｌｉｓｔ０から１つおよびＬｉｓｔ１から１つ）選択される。現在のアプローチでは、ＤＭＶＤによって導出されたＬｉｓｔ０ ＭＶおよびＬｉｓｔ１ ＭＶは、バイラテラルテンプレートマッチングおよびフレームレートアップコンバージョン（ＦＲＵＣ）テンプレートマッチングのようないくつかのＤＭＶＤ技法については独立して決定される。この開示では、初期ＭＶに基づいて双予測ＭＶ（例えば、Ｌｉｓｔ０ ＭＶとＬｉｓｔ１ ＭＶとを含むＭＶのペア）を導出するとき、対称／反対称ＭＶおよび／または対称／反対称ＭＶ差分の制約が適用され得る。いくつかの例では、対称ＭＶ制約および対称ＭＶ差分制約を適用するといったように、１つよりも多くの制約が適用され得る。制約は、１つまたは複数の条件を含み得る。いくつかの例では、制約が（例えば、ＤＭＶＤから導出されたＭＶおよび／またはＭＶ差分に制約を適用することによって）ＤＭＶＤに適用されると、制約を満たす（例えば、パスする）導出された動き情報のみが、有効な動き情報と見なされ得る。例えば、制約を満たす（例えば、パスする）ＤＭＶＤから導出されたＭＶは、有効なＭＶと見なされ得、および制約を満たさないＤＭＶＤから導出されたＭＶは、無効なＭＶと見なされ得る。別の例では、制約を満たすＤＭＶＤから導出されたＭＶ差分は、有効なＭＶ差分と見なされ得、および制約を満たさないＤＭＶＤから導出されたＭＶ差分は、無効なＭＶ差分と見なされ得る。いくつかの例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、ビデオデータ（例えば、ビデオデータの現在のブロック）をコーディングするために有効な動きベクトル情報を使用することと、ビデオデータ（例えば、ビデオデータの現在のブロック）をコーディングするために無効な動きベクトル情報を使用しないこととを行うように構成され得る。いくつかの例では、有効な動きベクトル情報はその後、他の有効な動きベクトル情報と比較され得、および最低コストメトリックを有すると決定された有効な動きベクトル情報が選択される。
【００９０】
[0106]  空間的ＭＶ候補（Spatial MV candidate）は、特定のＰＵ（ＰＵ０）について、図４に示されている近隣ブロックから導出されるが、ブロックから候補を生成するための方法は、マージモードとＡＭＶＰモードとの場合で異なる。マージモードでは、最大で４つまでの空間的ＭＶ候補が、番号付きで図４Ａに示されている順序で導出されることができ、およびその順序は、次の通りである：図４Ａに示されているように、左（０、Ａ１）、上（１、Ｂ１）、右上（２、Ｂ０）、左下（３、Ａ０）、および左上（４、Ｂ２）。
【００９１】
[0107]  ＡＶＭＰモードでは、近隣ブロックは、２つのグループへと分割される：図４Ｂに示されているように、ブロック０および１から成る左グループ、およびブロック２、３、および４から成る上グループ。各グループについて、シグナリングされた参照インデックスによって示されたものと同じ参照ピクチャを指す近隣ブロック中の潜在的な候補は、グループの最終候補を形成するために選ばれるための最高の優先度を有する。全ての隣接ブロックが同じ参照ピクチャを指し示す動きベクトルを包含するわけではない可能性がある。したがって、そのような候補が見出されることができない場合、第１の利用可能な候補が、最終候補を形成するためにスケーリングされることになり、このことから、時間的距離差分（temporal distance difference）が補償されることができる。
【００９２】
[0108]  時間的動きベクトル予測子（ＴＭＶＰ）候補は、有効且つ利用可能である場合、空間的動きベクトル候補の後にＭＶ候補リストへと追加される。ＴＭＶＰ候補についての動きベクトル導出のプロセスは、マージモードとＡＭＶＰモードとの両方の場合で同じであるが、しかしながら、マージモードにおけるＴＭＶＰ候補についてのターゲット参照インデックス（target reference index）は、常に０に設定され得る。ＴＭＶＰ候補導出のためのプライマリブロックロケーションは、空間的近隣候補（spatial neighboring candidate）を生成するために使用される上ブロックおよび左ブロックに対するバイアスを補償するための、ブロック「Ｔ」として図５Ａに示されているような、コロケートされたＰＵの外部の右下ブロックである。しかしながら、そのブロックが現在のＣＴＢ行の外部にロケートされるか、または動き情報が利用可能でない場合、そのブロックは、ＰＵの中心ブロックで代用される（substituted with）。
【００９３】
[0109]  ＴＭＶＰ候補についての動きベクトルは、スライスレベルで示される、コロケートされたピクチャのコロケートされたＰＵから導出される。コロケートされたＰＵについての動きベクトルは、コロケートされたＭＶと呼ばれる。ＡＶＣにおける時間的直接モードと同様に、ＴＭＶＰ候補動きベクトルを導出するために、図５に示されているように、コロケートされたＭＶは、時間的距離差分を補償するためにスケーリングされる必要がある。
【００９４】
[0110]  マージモードおよびＡＭＶＰモードのいくつかの態様が以下に論述される。
【００９５】
[0111]  動きベクトルスケーリング：動きベクトルの値は、提示時間におけるピクチャの距離に比例すると想定される。動きベクトルは、２つのピクチャ、参照ピクチャと、動きベクトルを包含するピクチャ（すなわち、包含ピクチャ（the containing picture））とを関連付ける。動きベクトルが他の動きベクトルを予測するために使用されるとき、包含ピクチャと参照ピクチャとの距離は、ピクチャ順序カウント（ＰＯＣ：Picture Order Count）値に基づいて算出される。
【００９６】
[0112]  動きベクトルが予測されるために、その関連する包含ピクチャと参照ピクチャとの両方が異なり得る。したがって、（ＰＯＣに基づく）新しい距離が算出される。および動きベクトルは、これらの２つのＰＯＣ距離に基づいてスケーリングされる。空間的近隣候補の場合、２つの動きベクトルについての包含ピクチャは同じであるが、その一方で参照ピクチャは異なる。ＨＥＶＣでは、動きベクトルスケーリングは、空間的および時間的近隣候補についてのＴＭＶＰとＡＭＶＰとの両方に適用される。
【００９７】
[0113]  人工動きベクトル候補生成（Artificial motion vector candidate generation）：動きベクトル候補リスト（motion vector candidate list）が完全でない場合（すなわち、所定の最大数の候補より少ない）、リストが全ての候補を有するまで、人工動きベクトル候補が生成され、且つリストの末尾に挿入される。
【００９８】
[0114]  マージモードでは、２つのタイプの人工ＭＶ候補が存在する：Ｂスライスについてのみ導出される合成（combined）候補、および第１のタイプが十分な人工候補を提供しない場合にＡＭＶＰについてのみ使用されるゼロ候補。
【００９９】
[0115]  候補リスト中に既に存在し、且つ必要な動き情報を有する候補の各ペアについて、双方向合成動きベクトル候補（bi-directional combined motion vector candidate）が、Ｌｉｓｔ０中の１つのピクチャを指す第１の候補の動きベクトルと、Ｌｉｓｔ１中の１つのピクチャを指す第２の候補の動きベクトルとの組み合わせによって導出される。
【０１００】
[0116]  候補挿入のためのプルーニングプロセス（Pruning process for candidate insertion）：異なるブロックからの候補は、偶然同じであり得、それは、マージ／ＡＭＶＰ候補リストの効率を低下させる。プルーニングプロセスは、この問題を解決するために適用される。それは、ある特定の範囲で（in certain extent）同一の候補を挿入するのを避けるために、ある１つの候補を現在の候補リスト中の他の複数の候補に対して比較する。複雑性を低減するために、各潜在的な候補を全ての他の既存の候補と比較する代わりに、限定された数のプルーニングプロセスのみが適用される。
【０１０１】
[0117]  ＪＥＭ参照ソフトウェアの一例では、復号器側において現在のブロックについての動きベクトル（ＭＶ）を導出または精緻化するいくつかのインターコーディングツール（inter coding tool）が存在する。これらのＤＭＶＤアプローチは、以下のように詳しく説明される。
【０１０２】
[0118]  図６および７は、パターンマッチ動きベクトル導出（ＰＭＭＶＤ：pattern matched motion vector derivation）のための概念を例示する概念図である。ＰＭＭＶＤモードは、フレームレートアップコンバージョン（ＦＲＵＣ）技法に基づく特殊マージモードである。このマージモードでは、ブロックの動き情報はシグナリングされないが、復号器側において導出される。この技術は、ＪＥＭの一例に含まれた。
【０１０３】
[0119]  ＦＲＵＣフラグは、そのマージフラグが真であるときに、ＣＵについてシグナリングされる。ＦＲＵＣフラグが偽であるとき、マージインデックスがシグナリングされ、および標準的マージモードが使用される。ＦＲＵＣフラグが真であるとき、追加のＦＲＵＣモードフラグが、ブロックについての動き情報を導出するためにどの方法（バイラテラルマッチングまたはテンプレートマッチング）が使用されるべきかを示すためにシグナリングされる。
【０１０４】
[0120]  動き導出プロセス中に、初期動きベクトルがまず、バイラテラルマッチングまたはテンプレートマッチングに基づいてＣＵ全体について導出される。まず、ＣＵのマージリスト、またはＰＭＭＶＤシードと呼ばれるものがチェックされ、および最小マッチングコスト（例えば、レート−歪み（ＲＤ：rate-distortion）コスト）をもたらす候補が、開始点として選択される。次に、開始点の周囲でのバイラテラルマッチングまたはテンプレートマッチングに基づく局所探索が遂行され、および最小マッチングコストをもたらすＭＶが、ＣＵ全体についてのＭＶとして見なされる（taken）。後に、動き情報は、開始点として導出されたＣＵ動きベクトルを用いてサブブロックレベルでさらに精緻化される。
【０１０５】
[0121]  この開示の本技法によると、制約は、例えば、ＤＭＶＤによって導出されたＭＶが対称であるか、または反対称であるか、および／または、（２）初期ＭＤとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分が対称であるか、または反対称であるかに基づいて、導出されたＣＵ動きベクトルに適用され得る。前述の例の各々では、制約は、例えば、初期ＭＶまたは導出されたＭＶについての条件に基づいて適用され得る。
【０１０６】
[0122]  図６に示されているように、バイラテラルマッチングは、２つの異なる参照ピクチャ（Ｒｅｆ０およびＲｅｆ１）中で現在のブロックの動き軌道（motion trajectory）に沿った２つの参照ブロック（Ｒ0およびＲ1）間のベストマッチ（best match）を見出すことによって、現在のブロック（Ｃｕｒ）の動き情報を導出するために使用される。動き軌道は、画像シーケンス（例えば、参照フレームおよび現在のフレーム）を３次元連続的時空間フィールド（3-dimensional continuous spatio-temporal field）と見なすと、空間および時間を通じてブロック中のピクセルがたどる経路を含み得る。連続的動き軌道の想定の下では、２つの参照ブロック（Ｒ0およびＲ1）を指し示す動きベクトルＭＶ０およびＭＶ１は、現在のピクチャ（Ｃｕｒ）と２つの参照ピクチャ（Ｒｅｆ０およびＲｅｆ１）との間の時間的距離（temporal distance）に比例する。導出されたＭＶ６００および６０２は、バイラテラルマッチングを使用して導出され、およびそれぞれ参照ブロックＲ’0およびＲ’1を指し示す。特殊なケースとして、現在のピクチャ（Ｃｕｒ）が時間的に２つの参照ピクチャ（Ｒｅｆ０およびＲｅｆ１）の間にあり、および現在のピクチャから２つの参照ピクチャまでの時間的距離が同じであるとき、バイラテラルマッチングは、ミラーベースの双方向ＭＶになる。その結果として、導出された動きベクトル６００および６０２は、同様にミラーされる（mirrored）。
【０１０７】
[0123]  図７に示されているように、テンプレートマッチングは、現在のピクチャ中のテンプレート（現在のブロックの上部および／または左近隣ブロック）と参照ピクチャ（Ｒｅｆ０およびＲｅｆ１）中のブロック（テンプレートと同じサイズ）との間のベストマッチを見出すことによって、現在のブロック（Ｃｕｒ）の動き情報を導出するために使用される。テンプレートは、Ｒ0およびＲ1の近隣ブロックを探索することによって、関心ブロック（Ｃｕｒ）を、候補参照（ＭＶ０を有するＲ0およびＭＶ１を有するＲ1）または導出された参照（ＭＶ７００を有するＲ’0およびＭＶ７０２を有するＲ’1）と比較するために使用されるブロックの近隣ピクセルを含み得る。最も類似する参照がその後、予測として使用される。
【０１０８】
[0124]  ビデオ符号化器２０において、ＣＵについてＦＲＵＣマージモードを使用するかどうかに関する決定は、通常のマージ候補のためになされたようなＲＤコスト選択に基づく。すなわち、２つのマッチングモード（バイラテラルマッチングおよびテンプレートマッチング）は両方とも、ＲＤコスト選択を使用することによってＣＵについてチェックされる。最小コストをもたらすものは、他のＣＵモードとさらに比較される。ＦＲＵＣマッチングモードが最も効率的なものである場合、ＦＲＵＣフラグは、ＣＵについて真であると設定され、および関連するマッチングモードが使用される。
【０１０９】
[0125]  第５回のＪＶＥＴの会合では、http://phenix.it-sudparis.eu/jvet/において入手可能である「Enhanced Template Matching in FRUC Mode」、JVET-E0035が、ＦＲＵＣテンプレートマッチングをさらに改善するために提案された。例証的なＦＲＵＣテンプレートマッチングモードのフローチャートが、図８に示されている。第１のステップでは、テンプレートＴ0（およびその対応する動き情報ＭＶ０）は、ｌｉｓｔ０参照ピクチャから現在のブロックの現在のテンプレートＴCにマッチすることを見出される。第２のステップでは、テンプレートＴ1（およびその対応する動き情報ＭＶ１）は、ｌｉｓｔ１参照ピクチャから見出される。取得された動き情報ＭＶ０およびＭＶ１は、現在のブロックの予測子を生成すべく双予測を遂行するために使用される。
【０１１０】
[0126]  ＦＲＵＣテンプレートマッチングモードは、双方向テンプレートマッチング（bi-directional template matching）、および単予測と双予測との間での適応的選択を導入することによって向上され得る。図８に対する例証的な修正は、図９において下線が引かれている。
【０１１１】
[0127]  双方向テンプレートマッチングは、単方向テンプレートマッチングに基づいてインプリメントされ得る。図８に示されているように、マッチされたテンプレートＴ0はまず、Ｌｉｓｔ０参照ピクチャからテンプレートマッチングの第１のステップにおいて見出される（８００）。Ｌｉｓｔ０はここでは、例として取り上げられているに過ぎないことに留意されたい。実際には、第１のステップにおいてＬｉｓｔ０が使用されるか、またはＬｉｓｔ１が使用されるかは、対応する参照ピクチャ中の初期テンプレートと現在のテンプレートとの間の初期歪みコスト（initial distortion cost）に適応的である。初期テンプレートは、第１のテンプレートマッチングを遂行する前に利用可能である現在のブロックの初期動き情報で決定されることができる。最小初期テンプレート歪みコスト（minimal initial template distortion cos）に対応する参照ピクチャリストは、テンプレートマッチングの第１のステップにおいて使用されるであろう。例えば、ｌｉｓｔ０に対応する初期テンプレート歪みコストがＬｉｓｔ１に対応するコストより大きくない場合、Ｌｉｓｔ０は、テンプレートマッチングの第１のステップにおいて使用され、およびＬｉｓｔ１は、第２のステップにおいて使用され）、その後、現在のブロックの現在のテンプレートＴCは、次の通りに更新される：  
Ｔ’C＝２＊ＴC−Ｔ0
【０１１２】
[0128]  更新された現在のテンプレートＴ’Cは、現在のテンプレートＴCの代わりに、第２のテンプレートマッチングにおいてＬｉｓｔ１参照ピクチャから別のマッチされたテンプレートＴ1を見出すために使用される（８０２）。結果として、マッチされたテンプレートＴ1は、Ｌｉｓｔ０参照ピクチャとＬｉｓｔ１参照ピクチャとを一緒に使用することによって見出される（８０４）。このマッチングプロセスは、双方向テンプレートマッチングと呼ばれる。
【０１１３】
[0129]  動き補償予測（ＭＣＰ：motion compensation prediction）のための単予測と双予測との間での選択は、テンプレートマッチング歪みに基づき得る。図９に示されているように、テンプレートマッチング中に、テンプレートＴ0とＴC（現在のテンプレート）との間の歪みは、ｃｏｓｔ０として算出されることができ（９００）、現在のテンプレートは、更新され得（９０２）、およびテンプレートＴ1とＴ’C（更新された現在のテンプレート）との間の歪みは、ｃｏｓｔ１として算出されることができる（９０４）。ｃｏｓｔ０が０．５＊ｃｏｓｔ１未満である場合（９０６）、ＭＶ０に基づく単予測が、ＦＲＵＣテンプレートマッチングモードに適用され得（９０８）、そうでない場合は、ＭＶ０およびＭＶ１に基づく双予測が適用される（９１０）。ｃｏｓｔ１が、ＴC（現在のテンプレート）と０．５＊（Ｔ0＋Ｔ1）のその予測との間の差分の２倍である、テンプレートＴ1とＴ’C（更新された現在のテンプレート）との間の差分を示すことから、ｃｏｓｔ０は、０．５＊ｃｏｓｔ１と比較されることに留意されたい。ＭＣＰは、ＰＵレベル動き精緻化に適用され得ることに留意されたい。サブＰＵレベル動き精緻化は、変更されずに保持され得る。
【０１１４】
[0130]  この開示の技法にしたがって、ビデオ符号化器２０およびビデオ復号器３０は、制約が、（１）導出されたＭＶが対称であるかどうか、（２）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうか、（３）導出されたＭＶが反対称であるかどうか、および／または（４）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうか、を含むかどうかに基づいて、ＰＵレベルまたはサブＰＵレベルでＦＲＵＣテンプレートマッチングモード（単方向および双方向の両方）からの導出された動きベクトルを制約し得る。制約が初期ＭＶまたはＦＲＵＣテンプレートに基づいてのみ適用されるように、制約には条件が設けられ得る。
【０１１５】
[0131]  図１０は、ＪＥＭの一例における双方向オプティカルフローに関する概念を例示する概念図である。双方向オプティカルフロー（ＢＩＯ）は、双予測のケースでは、ブロックワイズ動き補償（block-wise motion compensation）に加えて（on top of）遂行されるピクセルワイズ動き精緻化（pixel-wise motion refinement）である。ＢＩＯがブロック内部の微細な動きを補償することから、ＢＩＯを有効にすることは、動き補償のためにブロックサイズを拡大することをもたらす。サンプルレベル動き精緻化（Sample-level motion refinement）は、各サンプルについての微細な動きベクトルを与える明示的な式（an explicit equation）が存在することから、網羅的な探索またはシグナリングを必要としない。
【０１１６】
[0132]  Ｉ(k)を補償ブロック動きの後の基準（reference）ｋ（ｋ＝０，１）からのルミナンス値とすると、∂Ｉ(k)／∂ｘ、∂Ｉ(k)／∂ｙは、それぞれ、Ｉ(k)勾配の水平および垂直成分である。オプティカルフロー（optical flow）が有効であると想定すると、動きベクトルフィールド（ｖx，ｖy）が、式  
【数１】
2020511859.tif 000003
によって与えられる。
【０１１７】
[0133]  各サンプルの動き軌道についてオプティカルフロー式をエルミート補間（Hermite interpolation）と組み合わせると、両端部において（at the ends）関数値Ｉ(k)と導関数（derivatives）∂Ｉ(k)／∂ｘ、∂Ｉ(k)／∂ｙとの両方にマッチする３次の一意の多項式を得られる。ｔ＝０におけるこの多項式の値は、ＢＩＯ予測である：  
【数２】
2020511859.tif 000004
【０１１８】
[0134]  ここで、τ0およびτ1は、図１０に示されているような参照フレームまでの距離を表す。距離τ0およびτ1は、Ｒｅｆ０およびＲｅｆ１についてのＰＯＣに基づいて算出される：τ0＝ＰＯＣ（ｃｕｒｒｅｎｔ）−ＰＯＣ（Ｒｅｆ０），τ1＝ＰＯＣ（Ｒｅｆ１）−ＰＯＣ（ｃｕｒｒｅｎｔ）。両方の予測が同じ時間方向から来る場合（両方とも過去から、または両方とも将来から）、符号（signs）は、異なるτ0・τ1＜０。このケースでは、ＢＩＯは、予測が同じ時間モーメント（time moment）から来ない場合にのみ適用され（τ0≠τ1）、両方の参照される領域は、非ゼロ動きを有し（ＭＶｘ0，ＭＶｙ0，ＭＶｘ1，ＭＶｙ1≠０）、およびブロック動きベクトルは、時間距離に比例する（ＭＶｘ0／ＭＶｘ1＝ＭＶｙ0／ＭＶｙ1＝−τ0／τ1）。
【０１１９】
[0135]  動きベクトルフィールド（ｖx，ｖy）は、点Ａにおける値と点Ｂにおける値との間の差分Δ（図１０における動き軌道と参照フレーム面との交点（intersection））を最小化することによって決定される。モデルは、Δについて局所的テイラー展開の第１の線形項（first linear term of local Taylor expansion）のみを使用する：  
【数３】
2020511859.tif 000005
【０１２０】
[0136]  （１）における全ての値は、サンプルロケーション（ｉ’，ｊ’）に依存し、それは、これまで省略されていた。動きが局所的周辺（local surrounding）において一貫していると想定すると、我々は、現在予測されている点（ｉ，ｊ）を中心とした（２Ｍ＋１）×（２Ｍ＋１）正方形ウィンドウΩ内部のΔを最小化する：  
【数４】
2020511859.tif 000006
【０１２１】
[0137]  この最適化の問題について、簡略化されたソリューションが使用され、まず最小化を垂直方向に、そして次に水平方向に行う。それは、  
【数５】
2020511859.tif 000007
【数６】
2020511859.tif 000008
をもたらし、ここで、  
【数７】
2020511859.tif 000009
になる。
【０１２２】
[0138]  ０または非常に小さい値による除算を避けるために、正則化パラメータ（regularization parameters）ｒおよびｍが、式（２）、（３）に導入される。  
【数８】
2020511859.tif 000010
【数９】
2020511859.tif 000011
【０１２３】
[0139]  ここで、ｄは、入力ビデオの内部ビット深度（internal bit-depth）である。
【０１２４】
[0140]  いくつかの例では、ＢＩＯのＭＶ精緻化は、雑音または不規則な動きに起因して信頼性が低いことがあり得る。したがって、ＢＩＯでは、ＭＶ精緻化の大きさ（magnitude）は、ある特定のしきい値（ｔｈＢＩＯ）にクリップされる。しきい値は、現在のピクチャの全ての参照ピクチャが全て１つの方向からのものであるかどうかに基づいて決定される。現在のピクチャの現在のピクチャの全ての参照ピクチャが１つの方向からのものである場合、しきい値は、１２×２14-dに設定され、そうでない場合は、それは、１２×２13-dに設定される。
【０１２５】
[0141]  ＢＩＯについての勾配（Gradient）は、ＨＥＶＣ動き補償プロセスと一致する演算（２Ｄ分離型有限インパルス応答（ＦＩＲ）（2D separable Finite Impulse Response））を使用して、動き補償補間と同じ時間に算出される。この２Ｄ分離型ＦＩＲのための入力は、ブロック動きベクトルの分数部分（fractional part）にしたがった分数位置（fractional position）（ｆｒａｃＸ，ｆｒａｃＹ）および動き補償プロセスのためのと同じ参照フレームサンプルである。水平勾配∂Ｉ／∂ｘのケースでは、信号がまず、デスケーリングシフト（de-scaling shift）ｄ−８を伴う分数位置ｆｒａｃＹに対応するＢＩＯｆｉｌｔｅｒＳを使用して垂直に補間され、次に１８−ｄだけデスケーリングシフトを伴う分数位置ｆｒａｃＸに対応する勾配フィルタＢＩＯｆｉｌｔｅｒＧが、水平方向に適用される。垂直勾配∂Ｉ／∂ｙのケースでは、まず勾配フィルタが、デスケーリングシフトｄ−８を伴う分数位置ｆｒａｃＹに対応するＢＩＯｆｉｌｔｅｒＧを使用して垂直に適用され、次に信号変位が、１８−ｄだけデスケーリングシフトを伴う分数位置ｆｒａｃＸに対応するＢＩＯｆｉｌｔｅｒＳを使用して水平方向に遂行される。勾配算出のための補間フィルタＢＩＯｆｉｌｔｅｒＧおよび信号変位のための補間フィルタＢＩＯｆｉｌｔｅｒＦの長さは、合理的な複雑性を維持するためにより短い（６タップ）。表１は、ＢＩＯにおけるブロック動きベクトルの異なる分数位置についての勾配算出のために使用されるフィルタを示している。表２は、ＢＩＯにおける予測信号生成のために使用される補間フィルタ（interpolation filter）を示している。
【０１２６】
[0142]  図１１は、８×４ブロックについての勾配算出の例を例示する概念図である。８×４ブロックについて、ビデオコーダは、各ピクセルについてのｖxおよびｖyを解くことが、式（４）に示されているように、各ピクセルを中心としたウィンドウΩ内のピクセルの動き補償予測子（motion compensated predictor）および水平／垂直（ＨＯＲ／ＶＥＲ）勾配値を必要とすることから、動き補償予測子をフェッチし、および現在のブロック内の全てのピクセルのＨＯＲ／ＶＥＲ勾配ならびにピクセルの外側の２つの線を算出する。およびＪＥＭの一例では、このウィンドウのサイズは、５×５に設定される。したがって、ビデオコーダ（例えば、ビデオ符号化器２０および／またはビデオ復号器３０）は、動き補償予測子をフェッチし、および点ＡとＢとの周囲のピクセルの外側の２つの線についての勾配（gradient）を算出する。  
【表１】
2020511859.tif 000012
【表２】
2020511859.tif 000013
【０１２７】
[0143]  ＪＥＭの例では、ＢＩＯは、２つの予測が異なる参照ピクチャからのものであるとき、全ての双方向予測されたブロックに適用される。局所照明補償（ＬＩＣ：local illumination compensation）がＣＵについて有効にされると、ＢＩＯは、無効にされる。
【０１２８】
[0144]  この開示の技法にしたがって、ビデオ符号化器２０およびビデオ復号器３０は、制約が、（１）導出されたＭＶが対称であるかどうか、（２）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうか、（３）導出されたＭＶが反対称であるかどうか、および／または（４）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうか、を含むかどうかに基づいて、ＢＩＯからの導出された動きベクトルを制約し得る。制約が初期ＭＶに基づいてのみ適用されるように、制約には条件が設けられ得る。
【０１２９】
[0145]  図１２は、バイラテラルテンプレートマッチングに基づく提案された復号器側動きベクトル導出（ＤＭＶＤ）に関する概念を例示する概念図である。ビデオコーダは、図１２に示されているように、それぞれ、Ｌｉｓｔ０の初期ＭＶ０およびＬｉｓｔ１のＭＶ１から、２つの予測ブロック（Ｒ0およびＲ1）の重み付けされた組み合わせとしてバイラテラルテンプレート（bilateral template）を生成し得る。一例では、バイラテラルテンプレートは、公式：（Ｒ０＋Ｒ１）＞＞１または（Ｒ０＋Ｒ１）／２を使用してＬｉｓｔ０およびＬｉｓｔ１参照ブロック（Ｒ0およびＲ1）を平均化することによって生成され得る。
【０１３０】
[0146]  テンプレートマッチング演算は、生成されたテンプレートと参照ピクチャ中の（初期予測ブロックの周囲の）サンプル領域との間のコスト測定値（cost measures）を算出することを含む。２つの参照ピクチャ（Ｒ0およびＲ1）の各々について、最小テンプレートコストをもたらすＭＶは、初期ＭＶ（Ｌｉｓｔ０からのＭＶ０またはＬｉｓｔ１からのＭＶ１のいずれか）に取って代わるそのリストの更新されたＭＶと見なされる。最後に、図１２に示されているような、２つの新しいＭＶ、すなわちＭＶ０’およびＭＶ１’が、標準的双予測のために使用される。それはブロックマッチング動き推定において一般に使用されることから、絶対差分の和（ＳＡＤ）が、コスト測定値として利用される。
【０１３１】
[0147]  復号器側動きベクトル導出（ＤＭＶＤ）は、追加のシンタックス要素の送信なしに、過去の参照ピクチャからの１つと将来の参照ピクチャからのもう１つとの双予測のマージモードについて適用され得る。ＪＥＭ４．０では、ＬＩＣ、アフィン（affine）、サブＣＵマージ候補、またはＦＲＵＣが１つのＣＵのために選択されるとき、ＤＭＶＤは適用されない。
【０１３２】
[0148]  この開示の技法にしたがって、ビデオ符号化器２０およびビデオ復号器３０は、制約が、（１）導出されたＭＶが対称であるかどうか、（２）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうか、（３）導出されたＭＶが反対称であるかどうか、および／または（４）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうか、を含むかどうかに基づいて、バイラテラルテンプレートマッチングベースのＤＭＶＤからの導出された動きベクトルを制約し得る。制約が初期ＭＶまたはバイラテラルテンプレートに基づいてのみ適用されるように、制約には条件が設けられ得る。
【０１３３】
[0149]  図１３Ａおよび１３Ｂは、ＪＥＭの例では、オーバーラップブロック動き補償（ＯＢＭＣ）に関する概念を例示する概念図である。ＯＢＭＣは、例えば、Ｈ．２６３においてあるように、初期世代のビデオ規格に対して使用されてきた。ＪＥＭの例では、ＯＢＭＣは、ＣＵの右および下の境界を除き、動き補償（ＭＣ）ブロック境界について遂行される。その上、それは、ルーマ成分とクロマ成分との両方について適用される。ＪＥＭの一例では、ＭＣブロックは、コーディングブロックに対応する。ＣＵが（サブＣＵマージ、アフィンおよびＦＲＵＣモードを含む）サブＣＵモードでコーディングされるとき、ＣＵの各サブブロックは、ＭＣブロックである。均一の様式でＣＵ境界を処理するために、ＯＢＭＣは、全てのＭＣブロック境界についてサブブロックレベルで遂行され、ここで、サブブロックサイズは、図１３Ａおよび１３Ｂに例示されているように、４×４に等しく設定される。
【０１３４】
[0150]  ビデオ符号化器２０およびビデオ復号器３０は、現在の動きベクトルの他に、現在のサブブロック（sub-block）にＯＢＭＣを適用し得、４つの接続された近隣サブブロックの動きベクトルもまた、利用可能であり且つ現在の動きベクトルと同一でない場合に、現在のサブブロックについての予測ブロックを導出するために使用される。複数の動きベクトルに基づくこれらの複数の予測ブロックは、現在のサブブロックの最終予測信号を生成するために組み合わされる。
【０１３５】
[0151]  図１４Ａ〜１４Ｄは、ＯＢＭＣ重み付けを例示する概念図である。図１４Ａ〜１４Ｄは、近隣サブブロックの動きベクトルに基づく予測ブロックがＰNとして表されることを例示し、ここで、Ｎは、近隣する上（図１４Ａ）、下（図１４Ｂ）、左（図１４Ｃ）および右（図１４Ｄ）サブブロックについてのインデックスを示し、および現在のサブブロックの動きベクトルに基づく予測ブロックは、ＰCとして表される。ＰNが現在のサブブロックに対して同じ動き情報を包含する近隣サブブロックの動き情報に基づくとき、ＯＢＭＣは、ＰNから遂行されない。そうでない場合は、ＰNの全てのピクセルは、ＰC中の同じピクセルに追加される、すなわち、ＰNの４つの行／列が、ＰCに追加される。重み付け係数（weighting factor）｛１／４，１／８，１／１６，１／３２｝は、ＰNに対して使用され、および重み付け係数｛３／４，７／８，１５／１６，３１／３２｝は、ＰCに対して使用される。例外は、小さいＭＣブロックであり、（すなわち、コーディングブロックの高さまたは幅が４に等しいか、またはＣＵがサブＣＵモードでコーディングされるとき）、それについては、ＰNの２つの行／列のみが、ＰCに追加される。このケースでは、重み付け係数｛１／４，１／８｝は、ＰNに対して使用され、および重み付け係数｛３／４，７／８｝は、ＰCに対して使用される。垂直に（水平に）近隣するサブブロックの動きベクトルに基づいて生成されるＰNの場合、ＰNの同じ行（列）中のピクセルが、同じ重み付け係数を有するＰCに追加される。ＢＩＯはまた、予測ブロックＰNの導出のために適用されることに留意されたい。
【０１３６】
[0152]  ＪＥＭの例では、２５６個のルーマサンプル以下のサイズを有するＣＵの場合、ＣＵレベルフラグが、ＯＢＭＣが現在のＣＵについて適用されるか否かを示すためにシグナリングされる。２５６個のルーマサンプルより大きいサイズを有するか、またはＡＭＶＰモードでコーディングされないＣＵの場合、ＯＢＭＣは、デフォルトで適用される。符号化器において、ＯＢＭＣがＣＵについて適用されるとき、その影響は、動き推定ステージ中に考慮に入れられる。上部近隣ブロックおよび左近隣ブロックの動き情報を使用することによる予測信号は、現在のＣＵの元の信号の上部および左境界を補償するために使用され、およびその後、通常の動き推定プロセスが適用される。
【０１３７】
[0153]  この開示の技法にしたがって、ビデオ符号化器２０およびビデオ復号器３０は、制約が、（１）導出されたＭＶが対称であるかどうか、（２）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が対称であるかどうか、（３）導出されたＭＶが反対称であるかどうか、および／または（４）初期ＭＶとＤＭＶＤ方法によって導出されたＭＶとの間のＭＶ差分が反対称であるかどうか、を含むかどうかに基づいて、ＯＢＭＣからの導出された動きベクトルを制約し得る。制約が初期ＭＶに基づいてのみ適用されるように、制約には条件が設けられ得る。
【０１３８】
[0154]  ＤＭＶＤ関連方法（例えば、ＢＩＯ、ＦＲＵＣバイラテラルマッチング、ＦＲＵＣテンプレートマッチング、バイラテラルテンプレートマッチング、等）は、有意なビットレート低減を提供し得る。この開示は、ＤＭＶＤをさらに改善し得るいくつかの技法を説明し、それは、コーディング効率を増大させ、および／またはビットレートを低減し得る。例えば、（１）ＤＭＶＤによって導出されたＭＶ、および／または、（２）初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分を制約することは、コーディング効率を増大させ、および／またはビットレートを低減し得る。
【０１３９】
[0155]  以下の表３は、以下に使用される様々な専門用語を説明する。  
【表３】
2020511859.tif 000014
【０１４０】
[0156]  対称動きベクトル−いくつかの例では、ＤＭＶＤによって導出されたＭＶは、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶは、対称でなければならない。一例では、対称になるために、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、導出されたＭＶが互いに対する次の条件のうちの１つまたは複数（例えば、全て）を満たすように、導出されたＭＶを制約するように構成され得る。  
１．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、および／または  
２．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）。
【０１４１】
[0157]  いくつかの例では、上記の条件（１）および（２）は各々、別個の対称ＭＶ制約であると見なされ得るか、または、両方が適用されるときには単一の対称ＭＶ制約であると見なされ得る。この点に関して、ここでの有効にされる制約への言及は、有効にされる条件を指し得、それは、制約として機能する。例えば、有効にされる対称ＭＶ制約への言及は、（ｉ）上記の条件（１）が有効にされること、（ｉｉ）上記の条件（２）が有効にされること、または（ｉｉｉ）条件（１）および（２）が有効にされることを含み得る。
【０１４２】
[0158]  いくつかの例では、さらなる簡略化および／またはコーディングの改善を達成するために、ＤＭＶＤによって導出されたＭＶは、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶは、以下の条件（それは、疑似対称条件と呼ばれ得る）のうちの１つまたは複数（例えば、全て、条件（１）が真であるときには条件（ａ）および／または（ｂ）、および／または条件（２）が真であるときには条件（ｃ）および／または（ｄ））を満たすことを必要とされ得る：  
１．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＞０）、  
ａ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ、および／または  
ｂ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ；  
および／または  
２．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＜０）、  
ｃ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ、および／または  
ｄ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ。
【０１４３】
[0159]  いくつかの例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報を使用するように構成されることによって、ＰＯＣ差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報に基づいて、ＰＯＣ差分をチェックまたは決定するように構成され得る。
【０１４４】
[0160]  対称動きベクトル差分−いくつかの例では、初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、ＭＶ差分は、対称でなければならない。ＭＶ差分は、初期ＭＶとＤＭＶＤによって導出されたＭＶとの間の差分である。ＭＶ差分は、Ｘ成分およびＹ成分ベースで決定され得る。一例では、対称になるために、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、導出されたＭＶ差分が次の条件のうちの１つまたは複数（例えば、全て）を満たすことを必要とするように構成され得る：  
１．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、および／または  
２．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）。
【０１４５】
[0161]  いくつかの例では、さらなる簡略化および／またはコーディングの改善を達成するために、ＤＭＶＤによって導出されたＭＶ差分は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶ差分は、以下の条件（それは、疑似対称条件と呼ばれ得る）のうちの１つまたは複数（例えば、全て、条件（１）が真であるときには条件（ａ）および／または（ｂ）、および／または条件（２）が真であるときには条件（ｃ）および／または（ｄ））を満たすことを必要とされ得る：  
１．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｉｎｉｔ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｉｎｉｔ）＞０）、  
ａ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、および／または  
ｂ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ；  
および／または  
２．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｉｎｉｔ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｉｎｉｔ）＜０）、  
ｃ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、および／または  
ｄ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ。
【０１４６】
[0162]  いくつかの例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報を使用するように構成されることによって、ＰＯＣ差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報に基づいて、ＰＯＣ差分をチェックまたは決定するように構成され得る。
【０１４７】
[0163]  反対称動きベクトル−いくつかの例では、ＤＭＶＤによって導出されたＭＶは、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶは、反対称でなければならない。一例では、反対称になるために、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、導出されたＭＶが次の条件のうちの１つまたは複数（例えば、全て）を満たすことを必要とするように構成され得る：  
１．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、および／または  
２．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）。
【０１４８】
[0164]  いくつかの例では、さらなる簡略化および／またはコーディングの改善を達成するために、ＤＭＶＤによって導出されたＭＶ差分は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶ差分は、以下の条件（それは、疑似反対称条件と呼ばれ得る）のうちの１つまたは複数（例えば、全て、条件（１）が真であるときには条件（ａ）および／または（ｂ）、および／または条件（２）が真であるときには条件（ｃ）および／または（ｄ））を満たすことを必要とされ得る：  
１．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＞０）、  
ａ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ、および／または  
ｂ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ；  
および／または  
２．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＜０）、  
ｃ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ、および／または  
ｄ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ。
【０１４９】
[0165]  いくつかの例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報を使用するように構成されることによって、ＰＯＣ差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報に基づいて、ＰＯＣ差分をチェックまたは決定するように構成され得る。
【０１５０】
[0166]  反対称動きベクトル差分−いくつかの例では、初期ＭＶとＤＭＶＤによって導出されたＭＶとの間のＭＶ差分は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、ＭＶ差分は、反対称でなければならない。一例では、反対称になるために、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、導出されたＭＶ差分が次の条件のうちの１つまたは複数（例えば、全て）を満たすことを必要とするように構成され得る：  
１．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、および／または  
２．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）。
【０１５１】
[0167]  いくつかの例では、さらなる簡略化および／またはコーディングの改善を達成するために、ＤＭＶＤによって導出されたＭＶ差分は、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）によって制約され得、それにより、導出されたＭＶ差分は、以下の条件（それは、疑似反対称条件と呼ばれ得る）のうちの１つまたは複数（例えば、全て、条件（１）が真であるときには条件（ａ）および／または（ｂ）、および／または条件（２）が真であるときには条件（ｃ）および／または（ｄ））を満たすことを必要とされ得る：  
１．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にあるか、または両方とも現在のピクチャの後にあるとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｉｎｉｔ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｉｎｉｔ）＞０）、  
ａ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、および／または  
ｂ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ；  
および／または  
２．Ｌｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在のピクチャの前にないか、または両方とも現在のピクチャの後にないとき、（例えば、（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｉｎｉｔ）＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｉｎｉｔ）＜０）、  
ｃ．Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、および／または  
ｄ．Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ。
【０１５２】
[0168]  いくつかの例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報を使用するように構成されることによって、ＰＯＣ差分をチェックまたは決定するように構成され得る。例えば、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、例えば、初期ＭＶのＰＯＣ情報および／または導出されたＭＶのＰＯＣ情報に基づいて、ＰＯＣ差分をチェックまたは決定するように構成され得る。
【０１５３】
[0169]  ＭＶ／ＭＶ差分制約を適用するための条件−ＤＭＶＤ動き情報に対する制約（例えば、対称／反対称ＭＶ／ＭＶ差分制約）の有効化は、いくつかの例では、明示的にシグナリングされ得るか、または何らかのコーディングされた情報にしたがって暗示的に決定され得る。いくつかの例では、制約の有効化をシグナリングすること、または制約の有効化を決定することは、それぞれ、制約が適用された、または適用されることになることをシグナリングすること、あるいは制約が適用された、または適用されることになることを決定することとして説明され得る。
【０１５４】
[0170]  いくつかの例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、ここに説明されたＭＶおよび／またはＭＶ差分制約のうちの１つまたは複数を有効にするように構成され得る。例えば、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の制約が有効にされるかどうかを示す１つまたは複数の値をシグナリングするように構成され得る。
【０１５５】
[0171]  一例として、ビデオ符号化器（例えば、ビデオ符号化器２０）は、ビットストリーム中で第１のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第１のシンタックス要素に対応する値は、１つまたは複数の対称ＭＶ制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値（例えば、１の値）または無効化を示すための偽の値（例えば、０の値）であり得るか、あるいはその値は、有効化を示すための偽の値（例えば、０の値）または無効化を示すための真の値（例えば、１の値）であり得る。いくつかの例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の対称ＭＶ制約が有効にされるときにのみ、第１のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の対称ＭＶ制約が無効にされるときにのみ、第１のシンタックス要素に対応する値をシグナリングするように構成され得る。
【０１５６】
[0172]  別の例として、ビデオ符号化器（例えば、ビデオ符号化器２０）は、ビットストリーム中で第２のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第２のシンタックス要素に対応する値は、１つまたは複数の対称ＭＶ差分制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値（例えば、１の値）または無効化を示すための偽の値（例えば、０の値）であり得るか、あるいはその値は、有効化を示すための偽の値（例えば、０の値）または無効化を示すための真の値（例えば、１の値）であり得る。いくつかの例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の対称ＭＶ差分制約が有効にされるときにのみ、第２のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の対称ＭＶ差分制約が無効にされるときにのみ、第２のシンタックス要素に対応する値をシグナリングするように構成され得る。
【０１５７】
[0173]  別の例として、ビデオ符号化器（例えば、ビデオ符号化器２０）は、ビットストリーム中で第３のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第３のシンタックス要素に対応する値は、１つまたは複数の反対称ＭＶ制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値（例えば、１の値）または無効化を示すための偽の値（例えば、０の値）であり得るか、あるいはその値は、有効化を示すための偽の値（例えば、０の値）または無効化を示すための真の値（例えば、１の値）であり得る。いくつかの例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の反対称ＭＶ制約が有効にされるときにのみ、第３のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の反対称ＭＶ制約が無効にされるときにのみ、第３のシンタックス要素に対応する値をシグナリングするように構成され得る。
【０１５８】
[0174]  別の例として、ビデオ符号化器（例えば、ビデオ符号化器２０）は、ビットストリーム中で第４のシンタックス要素に対応する値をシグナリングするように構成され得、ここで、第４のシンタックス要素に対応する値は、１つまたは複数の反対称ＭＶ差分制約が有効にされるかどうかを示す。その値は、有効化を示すための真の値（例えば、１の値）または無効化を示すための偽の値（例えば、０の値）であり得るか、あるいはその値は、有効化を示すための偽の値（例えば、０の値）または無効化を示すための真の値（例えば、１の値）であり得る。いくつかの例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の反対称ＭＶ差分制約が有効にされるときにのみ、第４のシンタックス要素に対応する値をシグナリングするように構成され得る。他の例では、ビデオ符号化器（例えば、ビデオ符号化器２０）は、１つまたは複数の反対称ＭＶ差分制約が無効にされるときにのみ、第４のシンタックス要素に対応する値をシグナリングするように構成され得る。
【０１５９】
[0175]  いくつかの例では、ビデオコーダ（例えば、ビデオ復号器３０）は、ビットストリームを受信することと、ビットストリーム中に存在する、１つまたは複数のシンタックス要素（例えば、ここに説明された第１、第２、第３、および第４のシンタックス要素のうちの１つまたは複数）に対応する１つまたは複数の値に基づいて、ここに説明されたＭＶおよび／またはＭＶ差分制約のうちの１つまたは複数が有効にされるかどうかを決定することとを行うように構成され得る。
【０１６０】
[0176]  他の例では、ビデオコーダ（例えば、ビデオ符号化器２０またはビデオ復号器３０）は、他のコーディングされた情報に基づいて、ここに説明されたＭＶおよび／またはＭＶ差分制約のうちの１つまたは複数が有効にされるかどうかを決定する（例えば、暗示的に決定する）ように構成され得る。
【０１６１】
[0177]  ここに説明された１つまたは複数の制約（例えば、対称／反対称ＭＶ／ＭＶ差分制約のうちの１つまたは複数）を適応的に有効にするためのいくつかの実例的な条件が、以下のようにリストされている。  
１．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが対称であるときにのみ有効にされ得る。  
２．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが疑似対称であるときにのみ有効にされ得る。  
３．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが反対称であるときにのみ有効にされ得る。  
４．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが疑似反対称であるときにのみ有効にされ得る。  
５．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが対称でないときにのみ有効にされ得る。  
６．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが疑似対称でないときにのみ有効にされ得る。  
７．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが反対称でないときにのみ有効にされ得る。  
８．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶが疑似反対称でないときにのみ有効にされ得る。  
９．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶのＬｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在ピクチャの前にあるか、または両方とも現在のピクチャの後にあるときにのみ有効にされ得る。  
１０．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶのＬｉｓｔ０およびＬｉｓｔ１参照ピクチャが両方とも現在ピクチャの前にないか、または両方とも現在のピクチャの後にないときにのみ有効にされ得る。  
１１．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶの参照インデックスが両方とも０であるときにのみ有効にされ得る。  
１２．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、初期ＭＶの参照インデックスが両方とも０でないときにのみ有効にされ得る。  
１３．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、Ｌｉｓｔ０参照ピクチャと現在のピクチャとの間のＰＯＣ距離と、Ｌｉｓｔ１参照ピクチャと現在のピクチャとの間のＰＯＣ距離とが同じであるときにのみ有効にされ得る。  
１４．いくつかの例では、ここに説明された１つまたは複数の制約（例えば、１つまたは複数の対称／反対称ＭＶ／ＭＶ差分制約）は、Ｌｉｓｔ０参照ピクチャと現在のピクチャとの間のＰＯＣ距離と、Ｌｉｓｔ１参照ピクチャと現在のピクチャとの間のＰＯＣ距離とが同じでないときにのみ有効にされ得る。  
１５．いくつかの例では、１つまたは複数の対称ＭＶ差分制約は、初期ＭＶが対称でないときに適用され得る、  
１６．いくつかの例では、１つまたは複数の反対称ＭＶ差分制約は、初期ＭＶが対称であるときに適用され得る、  
１７．いくつかの例では、対称制約のうちの１つまたは複数のＭＶ解像度は、決定的な様式で割り当てられ得る。一例では、バイラテラルテンプレートマッチングの整数ペル精緻化のために、いかなる対称／疑似対称／非対称制約も課されないことがあり得、および前述された制約は、ハーフペル、クォーターペル、またはより高い精度の動き精緻化に対してのみである。（そのＭＶ解像度での）制約のレベルは、ＳＰＳ／ＰＰＳ／スライスヘッダを通じてシグナリングされ得る。解像度はまた、ＢＩＯ、サブペルＦＲＵＣのような他の動き精緻化ツールが有効にされるかどうかと併せて決められ得る。例えば、ＢＩＯが有効にされるとき、制約は、クォーターペルまたはより高い精度の動き精緻化に対して課せられないことがあり得る。  
１８．いくつかの例では、制約のレベル（例えば、どの制約が有効にされるか）は、Ｌｉｓｔ０ ＭＶとＬｉｓｔ１ ＭＶとの間の絶対差分、Ｌｉｓｔ０ ＭＶとＬｉｓｔ１ ＭＶとの間の（それらの相対ＰＯＣ距離に基づいて）スケーリングされた絶対差分、またはＬｉｓｔ０とＬｉｓｔ１と（すなわち、この例では、Ｐ０とＰ１と）の補間されたサンプルの間の初期ＳＡＤ値にしたがって適応的にさせられることができる。他の例では、（現在のテンプレート、Ｐ０）と（現在のテンプレート、Ｐ１）との間の絶対差分の和（ＳＡＤ）値の比は、何のＭＶ解像度において制約が課せられるべきかを決めるために使用されることができる。この例では、ＳＡＤ値の比がしきい値より低い場合、いかなる前述された対称制約も課されるべきではない。
【０１６２】
[0178]  表４は、前述の条件が満たされることに基づいて適用される条件および制約の例をリストしている。
【０１６３】
[0179]  この例は、表４に制約の例１として例示されており、それはまた、異なる制約の他の例を含む。  
【表４】
2020511859.tif 000015
【０１６４】
[0180]  図１５は、本開示にしたがったバイラテラルテンプレートマッチングの例証的な使用ケースを例示している。図１５は、ここに説明された１つまたは複数の疑似対称ＭＶ差分制約が、初期ＭＶが対称でないときにのみバイラテラルテンプレートマッチングに適用され得る例を例示している。そのような例にしたがって、バイラテラルテンプレートマッチングのために、初期ＭＶが対称でないときに、最終ＭＶが、初期ＭＶと最終ＭＶとの間のＭＶ差分が疑似対称でなければならないように導出され得る。例えば、図１５に示されているように、バイラテラルテンプレート１５０６はまず、ブロックＲ0 １５０２およびブロックＲ1 １５０４を平均化することによって、Ｌｉｓｔ０中の初期ＭＶ（Ｒ0を指し示すＬ０＿ＭＶ＿Ｉｎｉｔ）とＬｉｓｔ１中の初期ＭＶ（Ｒ1を指し示すＬ１＿ＭＶ＿Ｉｎｉｔ）とを使用して導出され得（例えば、双予測マージング候補のＭＶ）、および次にバイラテラルテンプレート１５０６は、最良のＬｉｓｔ０／Ｌｉｓｔ１ ＭＶを見出すべく、Ｌｉｓｔ０およびＬｉｓｔ１中のベストマッチングブロックを探索するために利用され得る。バイラテラルテンプレートマッチングは、ブロック、例えば、Ｒ’0 １５０８およびＲ’1 １５１０を探索するＬｉｓｔ０／Ｌｉｓｔ１中の初期ＭＶを中心とする予め定義された探索範囲（例えば、−１〜＋１整数ピクセル）内で遂行され得る。初期ブロック（ブロックＲ0 １５０２およびブロックＲ1 １５０４）と探索されたブロック（Ｒ’0 １５０８およびＲ’1 １５１０）との間の差分は、（Ｌ０＿ＭＶ＿ＤｉｆｆおよびＬ１＿ＭＶ＿Ｄｉｆｆと表されている）それぞれのＭＶ差分によって示されている。いくつかの例では、Ｌｉｓｔ０およびＬｉｓｔ１中の（Ｌ０＿ＭＶ＿ＤｉｆｆとＬ１＿ＭＶ＿Ｄｉｆｆとを比較する）疑似対称ＭＶ差分を有するＭＶペアのみが、有効なＭＶと見なされ得る。ベストマッチングコストを伴う有効なＭＶペアはその後、バイラテラルテンプレートマッチングによって最終の導出されたＭＶと見なされ得る。例示されている例は、上記に示されている表４に制約の例１として表されている。
【０１６５】
[0181]  図１６は、この開示の技法にしたがった実例的な方法を例示するフローチャートである。図１６の技法は、宛先デバイス１４またはビデオ復号器３０のうちの１つまたは複数によってインプリメントされ得る（図１および３を参照）。
【０１６６】
[0182]  本開示の一例では、ビデオ復号器３０は、復号器側動きベクトル導出（ＤＭＶＤ）を使用して、複数の導出された動きベクトルを生成するように構成され得る（１００）。いくつかの例では、複数の導出された動きベクトルを生成するためにＤＭＶＤを使用することは、ＢＩＯプロセス、ＦＲＵＣプロセス、バイラテラルマッチングプロセス（Bilateral Matching process）、ＦＲＵＣテンプレートマッチングプロセス、またはバイラテラルテンプレートマッチングプロセス（bilateral template matching process）のうちの１つを使用することを備える。いくつかの例では、ビデオ復号器３０は、第１および第２の初期動きベクトル（second initial motion vector）が１つまたは複数の条件を満たすかどうかの決定に基づいて、複数の導出された動きベクトルを生成し得る。ビデオ復号器３０は、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと制約が満たされているかどうかを決定することを行うように構成され得る（１０２）。ある例では、コストメトリックは、絶対差分の和を含む。制約は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを含み得る。ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを決定するように構成され得る。制約は、ビットストリームを介してシグナリングされ得るか、導出され得るか、または予めプログラムされ得る。
【０１６７】
[0183]  ある例では、ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有すると決定するように構成され得、その決定は、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）またはＬ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）であると決定することを備え、ここにおいて、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトル（first initial motion vector）と第１の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＹ成分であり、Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＹ成分であり、ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のＰＯＣであり、Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである。
【０１６８】
[0184]  別の例では、ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称動きベクトル差分を有すると決定するように構成され得、その決定は、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、またはＬ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）であると決定することを備え、ここにおいて、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＹ成分であり、Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＹ成分であり、ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のＰＯＣであり、Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである。
【０１６９】
[0185]  別の例では、ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが反対称であると決定するように構成され得、その決定は、Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）、またはＬ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄ＊（ＣＵＲＲ ＿ＰＯＣ−Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄ）であると決定することを備え、ここにおいて、Ｌ０＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、第１の導出された動きベクトルのＸ成分であり、Ｌ０＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、第１の導出された動きベクトルのＹ成分であり、Ｌ１＿ＭＶ＿Ｘ＿Ｄｅｒｉｖｅｄは、第２の導出された動きベクトルのＸ成分であり、Ｌ１＿ＭＶ＿Ｙ＿Ｄｅｒｉｖｅｄは、第２の導出された動きベクトルのＹ成分であり、ＣＵＲＲ ＿ＰＯＣは、現在のピクチャの現在のＰＯＣであり、Ｌ０＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第１のリストについての導出されたＰＯＣであり、Ｌ１＿ＰＯＣ＿Ｄｅｒｉｖｅｄは、動きベクトルの第２のリストについての導出されたＰＯＣである。
【０１７０】
[0186]  別の例では、ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似対称動きベクトル差分を有すると決定するように構成され得、その決定は、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、またはＬ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆであると決定することを備え、ここにおいて、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＹ成分であり、Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＹ成分である。
【０１７１】
[0187]  別の例では、ビデオ復号器３０は、第１の導出された動きベクトルと第２の導出された動きベクトルとが疑似反対称動きベクトル差分を有すると決定するように構成され得、その決定は、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆ、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆ、またはＬ０＿ＭＶ＿Ｙ＿Ｄｉｆｆ＝−１＊Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆであるという決定を備え、ここにおいて、Ｌ０＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ０＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第１の初期動きベクトルと第１の導出された動きベクトルとの間の差分のＹ成分であり、Ｌ１＿ＭＶ＿Ｘ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＸ成分であり、Ｌ１＿ＭＶ＿Ｙ＿Ｄｉｆｆは、第２の初期動きベクトルと第２の導出された動きベクトルとの間の差分のＹ成分である。
【０１７２】
[0188]  別の例では、ビデオ復号器３０は、動きベクトル候補リスト中の第１の初期動きベクトルと動きベクトル候補リスト中の第２の初期動きベクトルとが、第１の初期動きベクトルと第２の初期動きベクトルとの間の関係に関する少なくとも１つの条件を満たすと決定するように構成され得、その関係は、第１の初期動きベクトルと第２の初期動きベクトルとが対称である、第１の初期動きベクトルと第２の初期動きベクトルとが疑似対称である、第１の初期動きベクトルと第２の初期動きベクトルとが対称動きベクトル差分を有する、第１の初期動きベクトルと第２の初期動きベクトルとが反対称である、第１の初期動きベクトルと第２の初期動きベクトルとが疑似反対称である、または第１の初期動きベクトルと第２の初期動きベクトルとが反対称動きベクトル差分を有することを備え、ここにおいて、複数の導出された動きベクトルを生成することは、第１の初期動きベクトルと第２の初期動きとが少なくとも１つの条件を満たすことに基づく。
【０１７３】
[0189]  別の例では、ビデオ復号器３０は、動きベクトル候補リスト中の第１の初期動きベクトルと動きベクトル候補リスト中の第２の初期動きベクトルとが現在のピクチャの前にあるか、または現在のピクチャの後にあるかを決定するように構成され得、ここにおいて、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することは、決定にさらに基づく。
【０１７４】
[0190]  別の例では、ビデオ復号器３０は、第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リスト（second motion vector candidate list）に関連付けられた第２の参照ピクチャと現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定するように構成され得、ここにおいて、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することは、決定にさらに基づく。
【０１７５】
[0191]  別の例では、ビデオ復号器３０は、第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のピクチャ順序カウント（ＰＯＣ）距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと現在のピクチャとの間の第２のＰＯＣ距離が０であるかどうかを決定するように構成され得、ここにおいて、複数の導出された動きベクトルを生成するコストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することは、第１の動きベクトル候補リストに関連付けられた第１の参照ピクチャと現在のピクチャとの間の第１のＰＯＣ距離が０であり、第２の動きベクトル候補リストに関連付けられた第２の参照ピクチャと現在のピクチャとの間の第２のＰＯＣ距離がゼロ決定であると決定することにさらに基づく。
【０１７６】
[0192]  別の例では、ビデオ復号器３０は、符号化されたビデオビットストリームから少なくとも１つの制約を決定するように構成され得る。
【０１７７】
[0193]  ビデオ復号器３０は、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを復号するように構成され得る（１０４）。
【０１７８】
[0194]  図１７は、この開示の技法にしたがった実例的な方法を例示するフローチャートである。図１７の技法は、ソースデバイス１２またはビデオ符号化器２０のうちの１つまたは複数によってインプリメントされ得る（図１および２を参照）。
【０１７９】
[0195]  ビデオ符号化器２０は、ＤＭＶＤを使用して、複数の導出された動きベクトルを生成するように構成され得る（２００）。いくつかの例では、ビデオ符号化器２０は、第１および第２の初期動きベクトルが１つまたは複数の条件を満たすかどうかの決定に基づいて、複数の導出された動きベクトルを生成し得る。
【０１８０】
[0196]  ビデオ符号化器２０は、コストメトリックに基づいて、複数の導出された動きベクトルから第１の導出された動きベクトルと第２の導出された動きベクトルとを決定することと、制約が満たされているかどうかを決定することとを行うように構成され得る（２０２）。制約は、第１の導出された動きベクトルと第２の導出された動きベクトルとが対称動きベクトル差分を有するか、疑似対称動きベクトル差分を有するか、反対称であるか、反対称動きベクトル差分を有するか、または疑似反対称動きベクトル差分を有するかを含み得る。ビデオ符号化器２０は、決定された第１の導出された動きベクトルと第２の導出された動きベクトルとを使用して現在のブロックを符号化するように構成され得る（２０４）。ビデオ符号化器２０は、制約をコーディングするように構成され得る。ビデオ符号化器２０はさらに、ビットストリームを介して制約を送るように構成され得る。
【０１８１】
[0197]  例に依存して、ここに説明されたあらゆる技法のある特定の動作（act）またはイベントは、異なるシーケンスで遂行されることができ、追加、統合、または完全に省略され得る（例えば、全ての説明された動作またはイベントが、それら技法の実施のために必要なわけではない）ことが認識されるべきである。その上、ある特定の例では、動作またはイベントは、順次にというよりはむしろ、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通じて、同時に遂行され得る。
【０１８２】
[0198]  １つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合、それら機能は、１つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶され得るか、またはコンピュータ可読媒体を通して送信され得、およびハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルにしたがって、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体、またはコンピュータ可読記憶媒体を含み得、それは、データ記憶媒体のような有形媒体に対応する。このように、コンピュータ可読媒体は概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、この開示に説明された技法のインプリメンテーションのための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１８３】
[0199]  限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいはデータ構造もしくは命令の形態で所望されるプログラムコードを記憶するために使用されることができ、且つコンピュータによってアクセスされることができる任意の他の媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、ウェブサイト、サーバ、あるいは同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用する他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義中に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体（non-transitory, tangible storage media）を対象にすることが理解されるべきである。ディスク（disk）およびディスク（disc）は、ここに使用される場合、コンパクトディスク（ＣＤ）（disc）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（ＤＶＤ）（disc）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は通常、磁気的にデータを再生し、その一方でディスク（disc）は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１８４】
[0200]  命令は、１つまたは複数のデジタルシグナルプロセッサ(ＤＳＰ)、汎用マイクロプロセッサ、（固定機能回路および／またはプログラマブル処理回路を含む）処理回路、特定用途向け集積回路(ＡＳＩＣ)、フィールドプログラマブルゲートアレイ(ＦＰＧＡ)、あるいは他の同等な集積またはディスクリートロジック回路のような１つまたは複数のプロセッサによって実行され得る。それ故に、「プロセッサ」という用語は、ここに使用される場合、前述の構造またはここに説明された技法のインプリメンテーションに適したあらゆる他の構造のうちの任意のものを指し得る。加えて、いくつかの態様では、ここに説明された機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得るか、あるいは組み合わされたコーデック中に組み込まれ得る。また、それら技法は、１つまたは複数の回路またはロジック要素において十分にインプリメントされることができる。
【０１８５】
[0201]  この開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、幅広い多様なデバイスまたは装置においてインプリメントされ得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を遂行するように構成されたデバイスの機能的な態様を強調するためにこの開示に説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わされ得るか、あるいは、適したソフトウェアおよび／またはファームウェアと併せて、上述されたような１つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【０１８６】
[0202]  様々な例が説明されてきた。これらおよび他の例は、次の特許請求の範囲内にある。
【図１】
2020511859.tif 000016
【図２】
2020511859.tif 000017
【図３】
2020511859.tif 000018
【図４Ａ】
2020511859.tif 000019
【図４Ｂ】
2020511859.tif 000020
【図５Ａ】
2020511859.tif 000021
【図５Ｂ】
2020511859.tif 000022
【図６】
2020511859.tif 000023
【図７】
2020511859.tif 000024
【図８】
2020511859.tif 000025
【図９】
2020511859.tif 000026
【図１０】
2020511859.tif 000027
【図１１】
2020511859.tif 000028
【図１２】
2020511859.tif 000029
【図１３Ａ】
2020511859.tif 000030
【図１３Ｂ】
2020511859.tif 000031
【図１４Ａ】
2020511859.tif 000032
【図１４Ｂ】
2020511859.tif 000033
【図１４Ｃ】
2020511859.tif 000034
【図１４Ｄ】
2020511859.tif 000035
【図１５】
2020511859.tif 000036
【図１６】
2020511859.tif 000037
【図１７】
2020511859.tif 000038
【国際調査報告】
2020511859.tif 000039
2020511859.tif 000040
2020511859.tif 000041