(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化または復号する方法であって、
第1の参照ピクチャ中での第1の参照ブロックの位置を決定するステップであって、前記ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルが、前記第1の参照ピクチャ中での前記第1の参照ブロックの前記位置を示す、ステップと、
分離可能な双線形補間フィルタを前記第1の参照ピクチャのサンプルに適用して、前記第1の参照ブロックのサンプルを決定するステップと、
第2の参照ピクチャ中での第2の参照ブロックの位置を決定するステップと、
前記分離可能な双線形補間フィルタを前記第2の参照ピクチャのサンプルに適用して、前記第2の参照ブロックのサンプルを決定するステップと、
前記分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定するステップであって、前記第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャであり、
前記現在のブロックの前記動きベクトルが前記現在のブロックの時間的動きベクトルであり、前記現在のピクチャが第1のビューの中にあり、前記第2の参照ピクチャと前記第3の参照ピクチャがともに前記第1のビューと異なる第2のビューの中にあり、前記第3の参照ピクチャのピクチャ順序カウント(POC)値が前記現在のピクチャのPOC値に等しく、前記第1の参照ピクチャのPOC値が前記第2の参照ピクチャのPOC値に等しく、前記第1の参照ピクチャの前記POC値および前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なること、または、
前記現在のブロックの前記動きベクトルが前記現在のブロックの視差動きベクトルであり、前記現在のピクチャと前記第2の参照ピクチャがともに前記第1のビューの中にあり、前記第3の参照ピクチャが前記第2のビューの中にあり、前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第3の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第2の参照ピクチャの前記POC値と等しく、前記第1の参照ピクチャが前記現在のピクチャと同じPOC値を有し、前記第2のビューの中にあること
のうちの1つが当てはまる、ステップと、
予測ブロックを決定するステップであって、前記予測ブロックの各々のそれぞれのサンプルが、前記第1の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、前記それぞれの残差予測子サンプルが、前記第2の参照ブロックのそれぞれのサンプルと前記第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、前記第1の参照ブロックの前記それぞれのサンプル、前記第2の参照ブロックの前記それぞれのサンプル、および前記第3の参照ブロックの前記それぞれのサンプルが、前記予測ブロックの前記それぞれのサンプルの位置に対応する前記第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、ステップと、
前記予測ブロックに少なくとも一部基づいて残差ブロックを決定するステップと、ビットストリームに、前記残差ブロックを表すデータを含めるステップ、または、
ビットストリームから、残差ブロックを表すデータを取得するステップと、前記残差ブロックおよび前記予測ブロックに少なくとも一部基づいて、前記現在のピクチャのコーディングブロックを再構築するステップ
のうち少なくとも１つを実施するステップと、
を備え、
複数の段階の各々のそれぞれの段階に対して、前記それぞれの段階に対する前記分離可能な双線形補間フィルタのそれぞれの係数の合計が64に等しく、前記複数の段階の各々のそれぞれの段階がビデオコーディング規格によって許可されるそれぞれの整数未満の位置に対応し、前記それぞれの段階に対する前記分離可能な双線形補間フィルタの前記それぞれの係数が(x*8, (8-x)*8)に等しく、xが0より大きく8より小さい整数である、
方法。
【請求項２】
前記分離可能な双線形補間フィルタを前記第1の参照ピクチャの前記サンプルに適用するステップ、前記分離可能な双線形補間フィルタを前記第2の参照ピクチャの前記サンプルに適用するステップ、および、前記分離可能な双線形補間フィルタを前記第3の参照ピクチャの前記サンプルに適用するステップが、
前記第1の参照ブロック、前記第2の参照ブロック、および前記第3の参照ブロックの各々のそれぞれのサンプルに対して、前記それぞれのサンプルの場所に基づいて、以下の式の1つまたは複数を適用して前記それぞれのサンプルを決定するステップを備え、
ab0,0 = ( 56* B0,0 + 8 * B1,0 ) >> shift1、
ac0,0 = ( 48 * B0,0 + 16 * B1,0 ) >> shift1、
ad0,0 = ( 40* B0,0 + 24 * B1,0 ) >> shift1、
ae0,0 = ( 32* B0,0 + 32 * B1,0 ) >> shift1、
af0,0 = ( 24* B0,0 + 40 * B1,0 ) >> shift1、
ag0,0 = ( 16* B0,0 + 48 * B1,0 ) >> shift1、
ah0,0 = ( 8* B0,0 + 56 * B1,0 ) >> shift1、
ba0,0 = ( 56* B0,0 + 8 * B0,1 ) >> shift1、
ca0,0 = ( 48* B0,0 + 16 * B0,1 ) >> shift1、
da0,0 = ( 40* B0,0 + 24 * B0,1 ) >> shift1、
ea0,0 = ( 32* B0,0 + 32 * B0,1 ) >> shift1、
fa0,0 = ( 24* B0,0 + 40 * B0,1 ) >> shift1、
ga0,0 = ( 16* B0,0 + 48 * B0,1 ) >> shift1、
ha0,0 = ( 8* B0,0 + 56 * B0,1 ) >> shift1、
bX0,0 = ( 56 * aX0,0 + 8 * aX0,1 ) >> shift2、
cX0,0 = ( 48 * aX0,0 + 16 * aX0,1 ) >> shift2、
dX0,0 = ( 40 * aX0,0 + 24 * aX0,1 ) >> shift2、
eX0,0 = ( 32 * aX0,0 + 32 * aX0,1 ) >> shift2、
fX0,0 = ( 24 * aX0,0 + 40 * aX0,1 ) >> shift2、
gX0,0 = ( 16 * aX0,0 + 48 * aX0,1 ) >> shift2、
hX0,0 = ( 8 * aX0,0 + 56 * aX0,1 ) >> shift2、
bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられるサンプルについて、Xがそれぞれ、b、c、d、e、f、g、およびhによって置き換えられ、
shift1が前記それぞれのサンプルのビット深度から8を引いたものに等しく、shift2が6に等しい、請求項1に記載の方法。
【請求項３】
前記現在のピクチャが前記第1のビューの中にあり、
前記第2の参照ピクチャおよび前記第3の参照ピクチャがともに、前記第2のビューの中にあり、
前記現在のブロックの前記動きベクトルが、前記現在のブロックの前記時間的動きベクトルであり、
前記第3の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値に等しく、
前記方法が、
前記第1の参照ピクチャを決定するステップであって、前記第1の参照ピクチャのPOC値が前記第2の参照ピクチャの前記POC値に等しく、前記第1の参照ピクチャの前記POC値および前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値とは異なる、ステップと、
前記現在のブロックの視差ベクトルに基づいて、前記第3の参照ピクチャ中での前記第3の参照ブロックの位置を決定するステップと
をさらに備え、
前記第2の参照ブロックの前記位置を決定するステップが、前記第2の参照ブロックの前記位置が前記現在のブロックの前記時間的動きベクトルと前記現在のブロックの前記視差ベクトルとの合計によって示されるように、前記第2の参照ブロックの前記位置を決定するステップを備える、請求項1に記載の方法。
【請求項４】
前記現在のピクチャおよび前記第2の参照ピクチャがともに前記第1のビューの中にあり、
前記第3の参照ピクチャが前記第2のビューの中にあり、
前記現在のブロックの前記動きベクトルが、前記現在のブロックの前記視差動きベクトルであり、
前記第2の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値と異なり、
前記第3の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値と異なり、前記第2の参照ピクチャの前記POC値に等しく、
前記方法が、
前記現在のブロックの前記視差動きベクトルに基づいて、前記第1の参照ブロックを決定するステップであって、前記第1の参照ピクチャが、前記現在のピクチャと同じPOC値を有し、前記第2のビューの中にある、ステップと、
前記第3の参照ピクチャ中の前記第3の参照ブロックの位置が前記第1の参照ブロックの時間的動きベクトルによって示されるように、前記第3の参照ブロックの前記位置を決定するステップと
をさらに備え、
前記第2の参照ブロックの前記位置を決定するステップが、前記第1の参照ブロックの前記時間的動きベクトルを再使用して前記第2の参照ブロックの前記位置を決定するステップを備える、請求項1に記載の方法。
【請求項５】
前記予測ブロックが第1の予測ブロックであり、
前記方法が、
第4の参照ピクチャ中での第4の参照ブロックの位置を決定するステップであって、前記現在のブロックの第2の動きベクトルが前記第4の参照ピクチャの前記第4の参照ブロックの位置を示す、ステップと、
前記分離可能な双線形補間フィルタを前記第4の参照ピクチャのサンプルに適用して、前記第4の参照ブロックのサンプルを決定するステップと、
前記現在のブロックの前記第2の動きベクトルに一部基づいて、第5の参照ピクチャ中での第5の参照ブロックの位置を決定するステップと、
前記分離可能な双線形補間フィルタを前記第5の参照ピクチャのサンプルに適用して、前記第5の参照ブロックのサンプルを決定するステップと、
前記分離可能な双線形補間フィルタを第6の参照ピクチャのサンプルに適用して、第6の参照ブロックのサンプルを決定するステップであって、前記第4の参照ピクチャ、第5の参照ピクチャ、および第6の参照ピクチャの各々が異なるピクチャである、ステップと、
第2の予測ブロックを決定するステップであって、前記第2の予測ブロックの各々のそれぞれのサンプルが、前記第4の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、前記それぞれの残差予測子サンプルが、前記第5の参照ブロックのそれぞれのサンプルと前記第6の参照ブロックのそれぞれのサンプルとの差分と乗じられた前記加重係数に等しく、前記第4の参照ブロックの前記それぞれのサンプル、前記第5の参照ブロックの前記それぞれのサンプル、および前記第6の参照ブロックの前記それぞれのサンプルが、前記第2の予測ブロックの前記それぞれのサンプルの位置に対応する前記第4の参照ブロック、第5の参照ブロック、および第6の参照ブロック内の位置にある、ステップと、
残差ブロック、前記第1の予測ブロック、および前記第2の予測ブロックに少なくとも一部基づいて、前記現在のピクチャの前記コーディングブロックを再構築するステップとをさらに備える、請求項1に記載の方法。
【請求項６】
ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
第1の参照ピクチャ中での第1の参照ブロックの位置を決定することであって、前記ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルが、前記第1の参照ピクチャ中での前記第1の参照ブロックの前記位置を示す、ことと、
分離可能な双線形補間フィルタを前記第1の参照ピクチャのサンプルに適用して、前記第1の参照ブロックのサンプルを決定することと、
第2の参照ピクチャ中での第2の参照ブロックの位置を決定することと、
前記分離可能な双線形補間フィルタを前記第2の参照ピクチャのサンプルに適用して、前記第2の参照ブロックのサンプルを決定することと、
前記分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定することであって、前記第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャであり、
前記現在のブロックの前記動きベクトルが前記現在のブロックの時間的動きベクトルであり、前記現在のピクチャが第1のビューの中にあり、前記第2の参照ピクチャと前記第3の参照ピクチャがともに前記第1のビューと異なる第2のビューの中にあり、前記第3の参照ピクチャのピクチャ順序カウント(POC)値が前記現在のピクチャのPOC値に等しく、前記第1の参照ピクチャのPOC値が前記第2の参照ピクチャのPOC値に等しく、前記第1の参照ピクチャの前記POC値および前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なること、または、
前記動きベクトルが前記現在のブロックの視差動きベクトルであり、前記現在のピクチャと前記第2の参照ピクチャがともに前記第1のビューの中にあり、前記第3の参照ピクチャが前記第2のビューの中にあり、前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第3の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第2の参照ピクチャの前記POC値と等しく、前記第1の参照ピクチャが前記現在のピクチャと同じPOC値を有し、前記第2のビューの中にあること
のうちの1つが当てはまる、決定することと、
予測ブロックを決定することであって、前記予測ブロックの各々のそれぞれのサンプルが、前記第1の参照ブロックのそれぞれのサンプルからそれぞれの残差予測子サンプルを引いたものに等しく、前記それぞれの残差予測子サンプルが、前記第2の参照ブロックのそれぞれのサンプルと前記第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、前記第1の参照ブロックの前記それぞれのサンプル、前記第2の参照ブロックの前記それぞれのサンプル、および前記第3の参照ブロックの前記それぞれのサンプルが、前記予測ブロックの前記それぞれのサンプルの位置に対応する前記第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、決定することと、
残差ブロックを決定するステップであって、前記残差ブロックの各々のそれぞれのサンプルが、前記現在のブロックのそれぞれのサンプルと前記予測ブロックのそれぞれのサンプルとの差分に等しく、前記現在のブロックの前記それぞれのサンプルおよび前記予測ブロックの前記それぞれのサンプルが、前記残差ブロックの前記それぞれのサンプルの位置に対応する、ステップと、ビットストリームに、前記残差ブロックを表すデータを含めるステップ、または、
ビットストリームから、残差ブロックを表すデータを取得するステップと、前記残差ブロックおよび前記予測ブロックに少なくとも一部基づいて、前記現在のピクチャのコーディングブロックを再構築するステップ
のうち少なくとも１つを実施することと、
を行うように構成され、
複数の段階の各々のそれぞれの段階に対して、前記それぞれの段階に対する前記分離可能な双線形補間フィルタのそれぞれの係数の合計が64に等しく、前記複数の段階の各々のそれぞれの段階がビデオコーディング規格によって許可されるそれぞれの整数未満の位置に対応し、前記それぞれの段階に対する前記分離可能な双線形補間フィルタの前記それぞれの係数が(x*8, (8-x)*8)に等しく、xが0より大きく8より小さい整数である、ビデオコーディングデバイス。
【請求項７】
前記分離可能な双線形補間フィルタを前記第1の参照ピクチャのサンプルに適用すること、前記分離可能な双線形補間フィルタを前記第2の参照ピクチャの前記サンプルに適用すること、および、前記分離可能な双線形補間フィルタを前記第3の参照ピクチャの前記サンプルに適用することの一部として、
前記第1の参照ブロック、前記第2の参照ブロック、および前記第3の参照ブロックの各々のそれぞれのサンプルに対して、前記それぞれのサンプルの場所に基づいて、以下の式の1つまたは複数を適用して前記それぞれのサンプルを決定するように、前記1つまたは複数のプロセッサが構成され、
ab0,0 = ( 56* B0,0 + 8 * B1,0 ) >> shift1、
ac0,0 = ( 48 * B0,0 + 16 * B1,0 ) >> shift1、
ad0,0 = ( 40* B0,0 + 24 * B1,0 ) >> shift1、
ae0,0 = ( 32* B0,0 + 32 * B1,0 ) >> shift1、
af0,0 = ( 24* B0,0 + 40 * B1,0 ) >> shift1、
ag0,0 = ( 16* B0,0 + 48 * B1,0 ) >> shift1、
ah0,0 = ( 8* B0,0 + 56 * B1,0 ) >> shift1、
ba0,0 = ( 56* B0,0 + 8 * B0,1 ) >> shift1、
ca0,0 = ( 48* B0,0 + 16 * B0,1 ) >> shift1、
da0,0 = ( 40* B0,0 + 24 * B0,1 ) >> shift1、
ea0,0 = ( 32* B0,0 + 32 * B0,1 ) >> shift1、
fa0,0 = ( 24* B0,0 + 40 * B0,1 ) >> shift1、
ga0,0 = ( 16* B0,0 + 48 * B0,1 ) >> shift1、
ha0,0 = ( 8* B0,0 + 56 * B0,1 ) >> shift1、
bX0,0 = ( 56 * aX0,0 + 8 * aX0,1 ) >> shift2、
cX0,0 = ( 48 * aX0,0 + 16 * aX0,1 ) >> shift2、
dX0,0 = ( 40 * aX0,0 + 24 * aX0,1 ) >> shift2、
eX0,0 = ( 32 * aX0,0 + 32 * aX0,1 ) >> shift2、
fX0,0 = ( 24 * aX0,0 + 40 * aX0,1 ) >> shift2、
gX0,0 = ( 16 * aX0,0 + 48 * aX0,1 ) >> shift2、
hX0,0 = ( 8 * aX0,0 + 56 * aX0,1 ) >> shift2、
bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられるサンプルについて、Xがそれぞれ、b、c、d、e、f、g、およびhによって置き換えられ、
shift1が前記それぞれのサンプルのビット深度から8を引いたものに等しく、shift2が6に等しい、請求項6に記載のビデオコーディングデバイス。
【請求項８】
前記現在のピクチャが前記第1のビューの中にあり、
前記第2の参照ピクチャおよび前記第3の参照ピクチャがともに、前記第2のビューの中にあり、
前記現在のブロックの前記動きベクトルが、前記現在のブロックの前記時間的動きベクトルであり、
前記第3の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値に等しく、
前記1つまたは複数のプロセッサがさらに、
前記第1の参照ピクチャを決定することであって、前記第1の参照ピクチャのPOC値が前記第2の参照ピクチャの前記POC値に等しく、前記第1の参照ピクチャの前記POC値および前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値とは異なる、決定することと、
前記現在のブロックの視差ベクトルに基づいて、前記第3の参照ピクチャ中での前記第3の参照ブロックの位置を決定することと
を行うように構成され、
前記第2の参照ブロックの前記位置を決定することの一部として、前記第2の参照ブロックの前記位置が前記現在のブロックの前記時間的動きベクトルと前記現在のブロックの前記視差ベクトルとの合計によって示されるように、前記第2の参照ブロックの前記位置を前記1つまたは複数のプロセッサが決定するように、前記1つまたは複数のプロセッサが構成される、請求項6に記載のビデオコーディングデバイス。
【請求項９】
前記現在のピクチャおよび前記第2の参照ピクチャがともに前記第1のビューの中にあり、
前記第3の参照ピクチャが前記第2のビューの中にあり、
前記現在のブロックの前記動きベクトルが、前記現在のブロックの前記視差動きベクトルであり、
前記第2の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値と異なり、
前記第3の参照ピクチャの前記POC値が、前記現在のピクチャの前記POC値と異なり、前記第2の参照ピクチャの前記POC値に等しく、
前記1つまたは複数のプロセッサがさらに、
前記現在のブロックの前記視差動きベクトルに基づいて、前記第1の参照ブロックを決定することであって、前記第1の参照ピクチャが、前記現在のピクチャと同じPOC値を有し、前記第2のビューの中にある、決定することと、
前記第3の参照ピクチャ中での前記第3の参照ブロックの位置が前記第1の参照ブロックの時間的動きベクトルによって示されるように、前記第3の参照ブロックの前記位置を決定することと
を行うように構成され、
前記第2の参照ブロックの前記位置を決定することの一部として、前記1つまたは複数のプロセッサが前記第1の参照ブロックの前記時間的動きベクトルを再使用して前記第2の参照ブロックの前記位置を決定するように、前記1つまたは複数のプロセッサが構成される、請求項6に記載のビデオコーディングデバイス。
【請求項１０】
前記予測ブロックが第1の予測ブロックであり、前記1つまたは複数のプロセッサが、
第4の参照ピクチャ中での第4の参照ブロックの位置を決定することと、
第4の参照ピクチャ中での第4の参照ブロックの位置を決定することであって、前記現在のブロックの第2の動きベクトルが前記第4の参照ピクチャの前記第4の参照ブロックの位置を示す、ことと、
前記分離可能な双線形補間フィルタを前記第4の参照ピクチャのサンプルに適用して、前記第4の参照ブロックのサンプルを決定することと、
前記現在のブロックの前記第2の動きベクトルに一部基づいて、第5の参照ピクチャ中での第5の参照ブロックの位置を決定することと、
前記分離可能な双線形補間フィルタを前記第5の参照ピクチャのサンプルに適用して、前記第5の参照ブロックのサンプルを決定することと、
前記分離可能な双線形補間フィルタを第6の参照ピクチャのサンプルに適用して、第6の参照ブロックのサンプルを決定することであって、前記第4の参照ピクチャ、第5の参照ピクチャ、および第6の参照ピクチャの各々が異なるピクチャである、決定することと、
第2の予測ブロックを決定することであって、前記第2の予測ブロックの各々のそれぞれのサンプルが、前記第4の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、前記それぞれの残差予測子サンプルが、前記第5の参照ブロックのそれぞれのサンプルと前記第6の参照ブロックのそれぞれのサンプルとの差分と乗じられた前記加重係数に等しく、前記第4の参照ブロックの前記それぞれのサンプル、前記第5の参照ブロックの前記それぞれのサンプル、および前記第6の参照ブロックの前記それぞれのサンプルが、前記第2の予測ブロックの前記それぞれのサンプルの位置に対応する前記第4の参照ブロック、第5の参照ブロック、および第6の参照ブロック内の位置にある、決定することとを行うように構成される、請求項6に記載のビデオコーディングデバイス。
【請求項１１】
前記現在のピクチャの前記再構築されたコーディングブロックを表示するように構成されるディスプレイをさらに備える、請求項6に記載のビデオコーディングデバイス。
【請求項１２】
前記現在のピクチャをキャプチャするように構成されるカメラをさらに備える、請求項6に記載のビデオコーディングデバイス。
【請求項１３】
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイスの少なくとも1つを備える、請求項6に記載のビデオコーディングデバイス。
【請求項１４】
実行されると、ビデオデータをコーディングするためのデバイスに、
第1の参照ピクチャ中での第1の参照ブロックの位置を決定することであって、前記ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルが、前記第1の参照ピクチャ中での前記第1の参照ブロックの前記位置を示す、ことと、
分離可能な双線形補間フィルタを前記第1の参照ピクチャのサンプルへ適用して、前記第1の参照ブロックのサンプルを決定することと、
第2の参照ピクチャ中での第2の参照ブロックの位置を決定することと、
前記分離可能な双線形補間フィルタを前記第2の参照ピクチャのサンプルへ適用して、前記第2の参照ブロックのサンプルを決定することと、
前記分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルへ適用して、第3の参照ブロックのサンプルを決定することであって、前記第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャであり、
前記現在のブロックの前記動きベクトルが前記現在のブロックの時間的動きベクトルであり、前記現在のピクチャが第1のビューの中にあり、前記第2の参照ピクチャと前記第3の参照ピクチャがともに前記第1のビューと異なる第2のビューの中にあり、前記第3の参照ピクチャのピクチャ順序カウント(POC)値が前記現在のピクチャのPOC値に等しく、前記第1の参照ピクチャのPOC値が前記第2の参照ピクチャのPOC値に等しく、前記第1の参照ピクチャの前記POC値および前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なること、または、
前記動きベクトルが前記現在のブロックの視差動きベクトルであり、前記現在のピクチャと前記第2の参照ピクチャがともに前記第1のビューの中にあり、前記第3の参照ピクチャが前記第2のビューの中にあり、前記第2の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第3の参照ピクチャの前記POC値が前記現在のピクチャの前記POC値と異なり、前記第2の参照ピクチャの前記POC値と等しく、前記第1の参照ピクチャが前記現在のピクチャと同じPOC値を有し、前記第2のビューの中にあること
のうちの1つが当てはまる、決定することと、
予測ブロックを決定することであって、前記予測ブロックの各々のそれぞれのサンプルが、前記第1の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、前記それぞれの残差予測子サンプルが、前記第2の参照ブロックのそれぞれのサンプルと前記第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、前記第1の参照ブロックの前記それぞれのサンプル、前記第2の参照ブロックの前記それぞれのサンプル、および前記第3の参照ブロックの前記それぞれのサンプルが、前記予測ブロックの前記それぞれのサンプルの位置に対応する前記第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、決定することと、
前記予測ブロックに少なくとも一部基づいて残差ブロックを決定するステップと、ビットストリームに、前記残差ブロックを表すデータを含めるステップ、または、
ビットストリームから、残差ブロックを表すデータを取得するステップと、前記残差ブロックおよび前記予測ブロックに少なくとも一部基づいて、前記現在のピクチャのコーディングブロックを再構築するステップ
のうち少なくとも１つを実施することと、
を行わせる命令を記憶しており、
複数の段階の各々のそれぞれの段階に対して、前記それぞれの段階に対する前記分離可能な双線形補間フィルタのそれぞれの係数の合計が64に等しく、前記複数の段階の各々のそれぞれの段階がビデオコーディング規格によって許可されるそれぞれの整数未満の位置に対応し、前記それぞれの段階に対する前記分離可能な双線形補間フィルタの前記それぞれの係数が(x*8, (8-x)*8)に等しく、xが0より大きく8より小さい整数である、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2014年6月26日に出願された米国仮特許出願第62/017,754号、および2014年7月4日に出願された米国仮特許出願第62/021,063号の利益を主張するものであり、これらの各々の内容全体が、参照により本明細書に組み込まれている。
【０００２】
本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding(AVC)、ITU-T H.265、High Efficiency Video Coding(HEVC)、現在開発中の規格、およびそのような規格の拡張によって定義される規格に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)は、ビデオブロックに区分され得る。ピクチャのイントラコーディングされる(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされる(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測は、コーディングされるブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コーディングされたブロックと予測ブロックとの差分を示す。イントラコーディングされるブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データはピクセル領域から変換領域に変換されてよく、結果として残差係数をもたらし、残差係数は次いで量子化され得る。最初に2次元アレイに配置される量子化係数は、係数の1次元ベクトルを生成するために走査されることがあり、なお一層の圧縮を達成するためにエントロピーコーディングが適用されることがある。
【０００６】
マルチビューコーディングビットストリームは、たとえば複数の視点からのビューを符号化することによって生成され得る。マルチビューコーディングの態様を利用するいくつかの3次元(3D)ビデオ規格が開発されてきた。たとえば、3Dビデオをサポートするために、異なるビューが左眼のビューおよび右眼のビューを送信し得る。代替的に、いくつかの3Dビデオコーディングプロセスは、いわゆるマルチビュープラス深度コーディングを適用し得る。マルチビュープラス深度コーディングでは、3Dビデオビットストリームは、テクスチャビュー成分だけではなく、深度ビュー成分も含み得る。たとえば、各ビューは、1つのテクスチャビュー成分および1つの深度ビュー成分を備え得る。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Bross他、「High Efficiency Video Coding (HEVC) Defect Report 3」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第16回会合、サンノゼ、米国、2014年1月、文書番号JCTVC-P1003_v11
【非特許文献２】「Advanced video coding for generic audiovisual services」、ITU-T勧告H.264、2010年3月
【非特許文献３】http://phenix.it-sudparis.eu/jct/doc_end_user/documents/16_San%20Jose/wg11/JCTVC-P1003-v1.zip
【非特許文献４】Zhang他、「Test Model 6 of 3D-HEVC and MV-HEVC」、JCT3V-F1005、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第6回会合、ジュネーブ、スイス、2013年11月、http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php?id=1636
【非特許文献５】Tech他、「3D-HEVC Draft Text 2」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第6回会合、ジュネーブ、スイス、2013年11月、文書JCT3V-F1001、http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V-F1001-v4.zip
【非特許文献６】Tech他、「3D-HEVC Draft Text 4」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第8回会合、バレンシア、スペイン、2014年3月29日〜4月4日、文書JCT3V-H1001_v2
【非特許文献７】L. Zhang他、「3D-CE5.h: Disparity vector generation results」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第1回会議:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V-A0097
【非特許文献８】Sung他、「3D-CE5.h: Simplification of disparity vector derivation for HEVC-based 3D video coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第1回会議:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V-A0126
【非特許文献９】Kang他、「3D-CE5.h related: Improvements for disparity vector derivation」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第2回会議:上海、中国、2012年10月13〜19日、文書JCT3V-B0047
【非特許文献１０】Kang他、「CE2: CU-based Disparity Vector Derivation in 3D-HEVC」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第4回会議:仁川、韓国、2013年4月20〜26日、文書JCT3V-D0181
【非特許文献１１】Zhang他、「3D-CE4: Advanced residual prediction for multiview coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第3回会議:ジュネーブ、スイス、2013年1月17〜23日、文書番号JCT3V-C0049
【非特許文献１２】Liu他、「3D-CE2.h: Results of Illumination compensation for inter-view prediction」、TU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第2回会合:上海、中国、2012年10月13〜19日、文書JCT3V-B0045
【非特許文献１３】Ikai他、「3D-CE5.h: Removal of parsing dependency for illumination compensation」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extensions、第4回会合:仁川、韓国、2013年4月20〜26日、文書JCT3V-D0060
【発明の概要】
【課題を解決するための手段】
【０００８】
全般に、本開示は、3D-HEVCコーデックを用いて2つ以上のビューをコーディングすることを含む、高度なコーデックに基づくマルチビューかつ3次元(3D)のビデオコーディングの技法を説明する。より具体的には、本開示は、非ベースビューにおける高度残差予測(ARP:advanced residual predection)に関する例示的な技法を説明する。
【０００９】
1つの例示的な態様では、本開示は、ビデオデータを復号する方法を説明し、この方法は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定するステップと、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して第1の参照ブロックのサンプルを決定するステップと、第2の参照ピクチャ中での第2の参照ブロックの位置を決定するステップと、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して第2の参照ブロックのサンプルを決定するステップと、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して第3の参照ブロックのサンプルを決定するステップであって、第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャである、ステップと、予測ブロックを決定するステップであって、予測ブロックの各々のそれぞれのサンプルが、第1の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、それぞれの残差予測子サンプルが、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルが、予測ブロックのそれぞれのサンプルの位置に対応する第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、ステップと、ビットストリームから、残差ブロックを表すデータを取得するステップと、残差ブロックおよび予測ブロックに少なくとも一部基づいて、現在のピクチャのコーディングブロックを再構築するステップとを備える。
【００１０】
別の例示的な態様では、本開示は、ビデオデータを符号化する方法を説明し、この方法は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定するステップと、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して第1の参照ブロックのサンプルを決定するステップと、第2の参照ピクチャ中での第2の参照ブロックの位置を決定するステップと、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して第2の参照ブロックのサンプルを決定するステップと、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して第3の参照ブロックのサンプルを決定するステップであって、第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャである、ステップと、予測ブロックを決定するステップであって、予測ブロックの各々のそれぞれのサンプルが、第1の参照ブロックのそれぞれのサンプルからそれぞれの残差予測子サンプルを引いたものに等しく、それぞれの残差予測子サンプルが、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルが、予測ブロックのそれぞれのサンプルの位置に対応する第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、ステップと、予測ブロックに少なくとも一部基づいて、残差ブロックを決定するステップと、ビットストリームに、残差ブロックを表すデータを含めるステップとを備える。
【００１１】
別の例示的な態様では、本開示は、ビデオデータを記憶するように構成されるメモリと、1つまたは複数のプロセッサとを備える、ビデオコーディングデバイスを説明し、1つまたは複数のプロセッサは、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定することと、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して第1の参照ブロックのサンプルを決定することと、第2の参照ピクチャ中での第2の参照ブロックの位置を決定することと、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して第2の参照ブロックのサンプルを決定することと、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して第3の参照ブロックのサンプルを決定することであって、第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャである、決定することと、予測ブロックを決定することであって、予測ブロックの各々のそれぞれのサンプルが、第1の参照ブロックのそれぞれのサンプルからそれぞれの残差予測子サンプルを引いたものに等しく、それぞれの残差予測子サンプルが、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルが、予測ブロックのそれぞれのサンプルの位置に対応する第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、決定することとを行うように構成される。
【００１２】
別の例示的な態様では、本開示は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定するための手段と、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して第1の参照ブロックのサンプルを決定するための手段と、第2の参照ピクチャ中での第2の参照ブロックの位置を決定し、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して第2の参照ブロックのサンプルを決定するための手段と、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して第3の参照ブロックのサンプルを決定するための手段であって、第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャである、手段と、予測ブロックを決定するための手段であって、予測ブロックの各々のそれぞれのサンプルが、第1の参照ブロックのそれぞれのサンプルからそれぞれの残差予測子サンプルを引いたものに等しく、それぞれの残差予測子サンプルが、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルが、予測ブロックのそれぞれのサンプルの位置に対応する第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、手段とを備える、ビデオコーディングデバイスを説明する。
【００１３】
別の例示的な態様では、本開示は、実行されると、ビデオデータをコーディングするためのデバイスに、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定することと、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して第1の参照ブロックのサンプルを決定することと、第2の参照ピクチャ中での第2の参照ブロックの位置を決定することと、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して第2の参照ブロックのサンプルを決定することと、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して第3の参照ブロックのサンプルを決定することであって、第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々が異なるピクチャである、決定することと、予測ブロックを決定することであって、予測ブロックの各々のそれぞれのサンプルが、第1の参照ブロックのそれぞれのサンプルとそれぞれの残差予測子サンプルを足したものに等しく、それぞれの残差予測子サンプルが、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しく、第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルが、予測ブロックのそれぞれのサンプルの位置に対応する第1の参照ブロック、第2の参照ブロック、および第3の参照ブロック内の位置にある、決定することとを行わせる命令を記憶したコンピュータ可読記憶媒体を説明する。
【００１４】
本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、その説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】本開示において説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】マルチビューコーディングのための例示的な予測構造を示す概念図である。
【図３】1つのコーディングユニット(CU)に対する例示的な空間的動きベクトルの近隣を示す概念図である。
【図４】マルチビュービデオコーディングにおける時間的残差のための高度残差予測(ARP)の例示的な予測構造を示す図である。
【図５】現在のブロックと参照ブロックとの間の例示的な関係を示す概念図である。
【図６】ビュー間残差のためのARPを示す概念図である。
【図７】照度補償パラメータの導出のための例示的な近隣サンプルを示す概念図である。
【図８】本開示の技法を実装し得る例示的なビデオエンコーダを示すブロック図である。
【図９】本開示の技法を実装し得る例示的なビデオデコーダを示すブロック図である。
【図１０】双線形補間における分数サンプルの場所に依存する変数と周囲の整数の場所のサンプルとを示す概念図である。
【図１１】8分の1サンプル補間のための例示的な整数サンプルと分数サンプルの場所を示す概念図である。
【図１２】本開示の技法による、ビデオエンコーダの例示的な動作を示すフローチャートである。
【図１３】本開示の技法による、ビデオデコーダの例示的な動作を示すフローチャートである。
【発明を実施するための形態】
【００１６】
高度残差予測(ARP)は、マルチビュー/3Dビデオコーディングにおいて使用されるビデオデータ圧縮技法である。ARPを使用するビデオエンコーダは、現在のブロックの残差予測子を生成する。いくつかの例では、現在のブロックは予測ユニット(PU)の予測ブロックである。さらに、いくつかの例では、ビデオエンコーダは、加重係数を残差予測子に適用する。加えて、ビデオエンコーダは、インター予測を使用して現在のブロックの初期予測ブロックを生成する。ビデオエンコーダは次いで、現在のブロックの最終予測ブロック(すなわち、最終予測子)を生成し得る。
【００１７】
概念的には、最終予測ブロック中の各々のそれぞれのサンプルは、現在のブロックの残差予測子中のそれぞれの対応するサンプルと、現在のブロックの初期予測ブロック中のそれぞれの対応するサンプルとの合計に等しい。さらに、ビデオエンコーダは、現在のブロックの残差ブロックを生成する。概念的に、現在のブロックの残差ブロック中の各々のそれぞれのサンプルは、現在のブロックの最終予測ブロック中のそれぞれの対応するサンプルと現在のブロック自体の中のそれぞれの対応するサンプルとの差分を示す。
【００１８】
サンプルは、ピクセルの色成分(たとえば、ルーマ、クロマなど)の値である。本開示では、第1のブロック中のサンプルは、2つのサンプルが第1のブロックおよび第2のブロックの左上のサンプルに対して第1のブロックおよび第2のブロック内で同じ位置を有する場合、第2のブロック中のサンプルに対応すると言われる。ビデオエンコーダは、符号化されたビデオデータを備えるビットストリームにおいて、現在のブロックの残差ブロックを表すデータを含む。
【００１９】
同様に、ARPを使用して現在のブロックを復号するとき、ビデオデコーダは、現在のブロックの残差予測子を生成し、必要であれば加重係数の適用を取り消す。加えて、ビデオデコーダは、インター予測を使用して現在のブロックの初期予測ブロックを決定する。ビデオコーダは次いで、現在のブロックの最終予測ブロック(すなわち、最終予測子)を決定する。概念的には、最終予測ブロックの各々のサンプルは、残差予測子の対応するサンプルと、初期予測ブロックの対応するサンプルとの合計に等しい。
【００２０】
ビデオデコーダは、ビットストリーム中のデータに基づいて、現在のブロックの残差ブロックを決定する。ビデオデコーダは、現在のブロックの残差ブロックおよび現在のブロックの最終予測ブロックに基づいて、現在のブロックを再構築する。概念的には、再構築された現在のブロックの各々のそれぞれのサンプルは、現在のブロックの残差ブロックのそれぞれの対応するサンプルと、現在のブロックの最終予測ブロックのそれぞれの対応するサンプルとの合計に等しい。
【００２１】
上で示されたように、ビデオコーダ、すなわちビデオエンコーダまたはビデオデコーダは、現在のピクチャの現在のブロックの残差予測子を生成する。残差予測子を生成するために、ビデオコーダは、現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定する。いくつかの事例では、動きベクトルは時間的動きベクトルである。いくつかの事例では、動きベクトルは視差動きベクトルである。
【００２２】
参照ピクチャは、現在のピクチャをコーディングする際に使用するためにビデオコーダが利用可能な、以前にコーディングされたピクチャである。参照ブロックは、参照ピクチャ中のサンプルのブロックであり、または参照ピクチャ中のサンプルから補間される。第1の参照ブロックの位置を決定することに加えて、ビデオコーダは、第2の参照ピクチャにおける第2の参照ブロックの位置と、第3の参照ピクチャにおける第3の参照ブロックの位置とを決定する。
【００２３】
いくつかの例では、第1の参照ブロック、第2の参照ブロック、および第3の参照ブロックは、現在のブロックと同じサイズを有する。さらに、いくつかの例では、残差予測子は、現在のブロックと同じサイズを有するブロックであり得る。ビデオコーダは、第2の参照ブロックおよび第3の参照ブロックに基づいて、残差予測子を生成することができる。たとえば、残差予測子の各々のそれぞれの残差サンプルは、第2の参照ブロック中のそれぞれの対応するサンプルと第3の参照ブロック中のそれぞれの対応するサンプルとの差分と乗じられた加重係数に等しくてよい。
【００２４】
いくつかの例では、現在のブロックは双方向にインター予測される。したがって、そのような例では、現在のブロックは、第1の参照ピクチャリスト(L0)中の参照ピクチャを示す動きベクトル、および第2の参照ピクチャリスト(L1)中の参照ピクチャを示す動きベクトルという、2つの別個の動きベクトルを有する。ビデオコーダがARPを使用して双方向にインター予測された現在のブロックをコーディングするとき、ビデオコーダは、現在のブロックのL0動きベクトルを使用して、L0中の時間的参照ピクチャ(すなわち、L0参照ピクチャ)のサンプルに基づいて第1のL0参照ブロックを決定する。加えて、ビデオコーダはL0残差予測子を決定し得る。
【００２５】
ビデオコーダは、ビデオコーダが単方向の場合に動きベクトルを使用して残差予測子を決定するのと同じ方法で、現在のブロックのL0動きベクトルを使用して、L0残差予測子を決定し得る。ビデオコーダは次いで、初期L0予測ブロックを決定し得る。初期L0予測ブロック中の各々のそれぞれのサンプルは、第1のL0参照ブロックのそれぞれのサンプルと、L0残差予測子中の対応するサンプルと乗じられた加重係数との合計を示し得る。ビデオコーダは、L1動きベクトルについてこの処理を繰り返して、初期L1予測ブロックを決定し得る。
【００２６】
次に、ビデオコーダは、現在のブロックの最終予測ブロックを決定し得る。概念的に、最終予測ブロックの各々のそれぞれのサンプルは、初期L0予測ブロックおよび初期L1予測ブロックの中のそれぞれの対応するサンプルの加重平均である。加重平均では、初期L0予測ブロックおよび初期L1予測ブロックのサンプルに割り当てられる重みは、L0参照ピクチャ、L1参照ピクチャ、および現在のピクチャのPOC値に基づき得る。したがって、現在のブロックが単方向にインター予測されるか双方向にインター予測されるか(すなわち、単予測されるか双予測されるか)にかかわらず、ビデオコーダは現在のブロックの最終予測ブロックを生成し得る。本開示では単に、最終予測ブロックを予測ブロックおよび残差予測子と呼び得る。
【００２７】
いくつかの事例では、現在のブロックの動きベクトルは整数未満の精度を有する。言い換えると、動きベクトルは、参照ピクチャの2つの実際のサンプルの間、すなわち、整数の場所にあるサンプルの間の位置を示し得る。本明細書では、参照ピクチャの整数の場所にあるサンプルは「整数サンプル」と呼ばれ得る。動きベクトルが参照ピクチャの2つの実際のサンプルの間の位置を示すとき、ビデオエンコーダは、参照ピクチャの整数サンプルに基づいて、参照ブロックのサンプルを補間する。したがって、ビデオコーダは、ARPにおいて残差予測子を生成することの一部として、参照ブロック中のサンプルを補間し得る。
【００２８】
上の説明では、様々なブロックのサンプルは、他のブロック中の対応するサンプルの合計または差分に等しい値を「概念的に」有するものとして説明される。実際には、ビデオコーダは、サンプルが適用可能な範囲にとどまることを確実にするようにサンプルを切り取り得る。たとえば、ビデオコーダは、8ビットのビット深度を有するサンプルをサポートし得る。したがって、この例では、サンプルは-128から127の範囲を有し得る。加えて、この例では、2つのサンプルの加算は127よりも大きい値をもたらすことがあり、別のサンプルからの1つのサンプルの減算は最小値、たとえば-128よりも小さい値をもたらすことがある。したがって、ビデオコーダは、127よりも大きい値を127へと切り取ることができ、-128よりも小さい値を128へと切り取ることができる。さらに、補間処理により、サンプルが適用可能な範囲の外側に存在するようになり得る。したがって、いくつかの状況では、ビデオコーダは補間されたサンプルを切り取り得る。
【００２９】
3D-HEVCは、マルチビュー/3次元(3D)ビデオデータを符号化するための新興の規格である。3D-HEVCのいくつかのビデオコーダの実装形態は、少なくとも単方向予測の場合にはすべての中間データを切り取り、それは、そのビデオコーダの実装形態がHEVC補間関数を再使用するからである。そのような中間データは、現在のブロックの予測ブロックおよび現在のブロックの参照ブロックのサンプルを含み得る。ビデオコーダが中間データを切り取るので、ビデオコーダは、単予測されるARPに対してサンプルごとに3回の切り取り動作を実行し、それは、ビデオコーダが、補間処理を用いて3つの予測ブロック(すなわち、現在のブロックの予測ブロックおよび参照ブロック)を生成するからである。
【００３０】
さらに、3D-HEVCのいくつかのビデオコーダの実装形態は、ARPを使用するときの第1の参照ブロックおよび第2の参照ブロックのサンプルを決定するとき、分離不可能なフィルタを使用する。ビデオコーダが分離不可能なフィルタを適用して整数未満の場所にあるサンプルの値を決定するとき、ビデオコーダは、切り取り動作を使用して、整数の場所にある周囲のサンプルのx座標およびy座標を決定する。
【００３１】
各切り取り動作は2回の比較動作を伴うことがあり、一方の動作は値を上限と比較するためのものであり、他方の動作は値を下限と比較するためのものである。したがって、切り取り動作を実行することで計算的な複雑さが増し、これはコーディング処理を減速させ、より大きい電力消費をもたらし得る。
【００３２】
本開示の特定の技法は、ARPに関わる切り取り動作の数を減らすことができる。たとえば、本開示の技法によれば、第1の参照ブロックを決定するとき、ビデオコーダは、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して、第1の参照ブロックのサンプルを決定することができる。同様に、第2の参照ブロックを決定するとき、ビデオコーダは、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定することができる。同様に、第3の参照ブロックを決定するとき、ビデオコーダは、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定することができる。そのような分離可能な双線形補間フィルタを適用した結果として、分離不可能なフィルタが関わる切り取り動作を避けることができ、これにより複雑さが下がり得る。加えて、HEVCの設計における加重予測プロセスが再使用され得る。
【００３３】
いくつかの例では、各段階(たとえば、整数未満の位置)に対する分離可能な双線形補間フィルタにおいて使用される係数の合計は64に達することがあり、これは、Bross他、「High Efficiency Video Coding (HEVC) Defect Report 3」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第16回会合、サンノゼ、米国、2014年1月、文書番号JCTVC-P1003_v1(以後、「HEVC version 1」または「HEVC draft specification」)において使用される他の双線形補間フィルタと同じである。言い換えると、複数の段階の各々のそれぞれの段階に対して、それぞれの段階に対する分離可能な双線形補間フィルタの係数の合計は64に等しく、複数の段階は、ビットストリームが適合するビデオコーディング規格(たとえば、3D-HEVC)によって許容される整数未満の位置に対応する。いくつかの例では、複数の段階の各々のそれぞれの段階に対して、それぞれの段階に対する分離可能な双線形補間フィルタのそれぞれの係数の合計は(x*8, (8-x)*8)に等しく、xは0から8の範囲にある値に等しい。合計で64である係数には、ARPにおいて使用される補間フィルタをHEVCバージョン1の他の箇所で使用される双線形補間フィルタと調和させることで複雑さが下がるという、追加の利点があり得る。
【００３４】
したがって、ビデオコーダは、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定することができる。ビデオコーダは、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して、第1の参照ブロックのサンプルを決定することができる。加えて、ビデオコーダは、第2の参照ピクチャ中での第2の参照ブロックの位置を決定することができる。さらに、ビデオコーダは、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定することができる。ビデオコーダは、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定することができる。第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々は異なるピクチャである。ビデオコーダは、予測ブロックを決定し得る。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルと、それぞれの残差予測子サンプルとを足したものに等しい。それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた、0ではない加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。
【００３５】
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。
【００３６】
図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12、宛先デバイス14、およびネットワーク要素15を含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号し得る。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００３７】
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン(すなわち、スマートフォン、携帯電話、セルラー電話)などの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータなどを含む、広範囲のデバイスを備え得る。
【００３８】
ネットワーク要素15は、符号化されたビデオデータを受信することができ、処理された符号化されたビデオデータを出力することができる。ネットワーク要素15は、媒体認識ネットワーク要素(MANE)、コンテンツ配信ネットワーク(CDN)デバイス、または別のタイプのデバイス(たとえば、コンピューティングデバイス)であり得る。ネットワーク要素15、ソースデバイス12、宛先デバイス14、およびビデオデータを処理する他のタイプのデバイスが、ビデオ処理デバイスであると見なされ得る。
【００３９】
宛先デバイス14は、符号化されたビデオデータをソースデバイス12からチャネル16を介して受信し得る。チャネル16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで直接宛先デバイス14に送信することを可能にする、1つまたは複数の通信媒体を備える。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14へ送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路などの、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースネットワークの一部を形成し得る。チャネル16は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にする他の機器を含み得る。
【００４０】
別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体などの、ローカルにアクセスされる様々なデータ記憶媒体を含み得る。
【００４１】
さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶するファイルサーバまたは別の中間記憶デバイスを含み得る。この例では、宛先デバイス14は、ファイルサーバまたは他の中間記憶デバイスにおいて記憶された符号化されたビデオデータに、ストリーミングまたはダウンロードを介してアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶するとともに符号化されたビデオデータを宛先デバイス14へ送信することが可能なタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用の)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
【００４２】
宛先デバイス14は、インターネット接続などの標準的なデータ接続を通じて符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに適切である、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであってよい。
【００４３】
本開示の技法は、ワイヤレスの適用例または設定に限定されない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえば、インターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００４４】
図1は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間に必ずしもデータ通信を含まないビデオコーディングの状況(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データ(たとえば、ビデオデータ)は、ローカルメモリから取り出され、ネットワークを通じてストリーミングされ、または類似の方法で得られる。ビデオ符号化デバイスがデータ(たとえば、ビデオデータ)を符号化してメモリに記憶することができ、かつ/または、ビデオ復号デバイスがメモリからデータ(たとえば、ビデオデータ)を取り出して復号することができる。多くの例では、互いに通信しないが、単にデータをメモリへ符号化し、かつ/またはメモリからデータ(たとえば、ビデオデータ)を取り出して復号するデバイスによって、符号化および復号が実行される。
【００４５】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオデータをビデオコンテンツプロバイダから受信するためのビデオフィードインターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。したがって、いくつかの例では、ソースデバイス12はビデオデータをキャプチャするように構成されるカメラを備える。
【００４６】
ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、符号化されたビデオデータを宛先デバイス14へ出力インターフェース22を介して直接送信する。他の例では、復号および/または再生のために宛先デバイス14が後でアクセスするために、符号化されたビデオデータはまた、記憶媒体またはファイルサーバへ記憶され得る。
【００４７】
図1の例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、符号化されたビデオデータをチャネル16を介して受信し得る。ビデオデコーダ30は、符号化されたビデオデータを復号し得る。ディスプレイデバイス32は、復号されたビデオデータを表示するように構成される。ディスプレイデバイス32は、宛先デバイス14と一体であってよく、または宛先デバイス14の外部にあってもよい。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備え得る。
【００４８】
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適当な回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実施される場合、本開示の技法を実行するために、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読記憶媒体に記憶することができ、1つまたは複数のプロセッサを使用するハードウェアにおいて命令を実行することができる。前述のもの(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれもが、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、組み合わされたエンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中で一体化されてよい。
【００４９】
本開示は一般に、ビデオデコーダ30などの別のデバイスに特定の情報を「シグナリングする」ビデオエンコーダ20に言及することがある。「シグナリングする」という用語は一般に、シンタックス要素、および/または圧縮されたビデオデータを復号するために使用される他のデータの通信を指すことがある。そのような通信は、リアルタイムで、またはほぼリアルタイムで発生し得る。代替的に、そのような通信は、ある時間の範囲にわたって、たとえば、符号化の時点において符号化されたビットストリームの中のシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生することがあり、次いで、シンタックス要素が、この媒体に記憶された後の任意の時点において復号デバイスによって取り出され得る。
【００５０】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC)拡張、マルチビュービデオコーディング(MVC)拡張、およびMVCベースの3DV拡張を含む、ISO/IEC MPEG-4 VisualおよびITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られている)などの、ビデオ圧縮規格に従って動作する。いくつかの事例では、H.264/AVCのMVCベースの3DV拡張に適合する任意のビットストリームが、H.264/AVCのMVC拡張に適合するサブビットストリームを常に含む。MVCの最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU-T勧告H.264、2010年3月に記載されている。さらに、H.264/AVCに対する3次元ビデオ(3DV)コーディング拡張、すなわちAVCベースの3DVを生成するための作業が進行中である。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、およびISO/IEC MPEG-4 Visualに従って動作し得る。
【００５１】
他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発されたHigh Efficiency Video Coding(HEVC)規格に従って動作する。HEVCドラフト仕様は、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/16_San%20Jose/wg11/JCTVC-P1003-v1.zipから入手可能である。
【００５２】
HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと表記される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロであってよく、ルーマサンプルのアレイだけを含んでよい。他の例では、ピクチャは、RGB、YCgCoなどの、異なるタイプの色成分のサンプルアレイを備え得る。
【００５３】
ピクチャの符号化された表現を生成するために、ビデオエンコーダ20が、コーディングツリーユニット(CTU)のセットを生成する。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概ね類似していることがある。しかしながら、CTUは、必ずしも特定のサイズに限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序において連続的に順序付けられた整数個のCTUを含み得る。
【００５４】
本開示は、1つまたは複数のサンプルブロックのサンプルをコーディングするために使用される1つまたは複数のサンプルブロックおよびシンタックス構造を指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかの文脈では、PUの議論はマクロブロックまたはマクロブロック区分の議論と相互に交換され得る。
【００５５】
符号化されたCTUを生成するために、ビデオエンコーダ20がCTUのコーディングツリーブロック上で4分木区分を再帰的に実行してコーディングツリーブロックをコーディングブロックに分割することができ、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイと、CbサンプルアレイおよびCrサンプルアレイと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを有する、ピクチャのルーマサンプルのコーディングブロックと、ピクチャのクロマサンプルの2つの対応するコーディングブロックとを備え得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００５６】
ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの長方形(すなわち、正方形または非正方形)のブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUの予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)の予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)を生成し得る。
【００５７】
ビデオエンコーダ20は、PUの予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUを含むピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUを含むピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【００５８】
ビデオエンコーダ20がCUの1つまたは複数のPUに対して予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)を生成した後、ビデオエンコーダ20は、CUの1つまたは複数の残差ブロックを生成し得る。たとえば、ビデオエンコーダ20は、CUのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックの1つの中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの差分を示す。加えて、ビデオエンコーダ20は、CUのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックの1つの中のCbサンプルとCUの元のCbコーディングブロック中の対応するサンプルとの差分を示し得る。ビデオエンコーダ20はまた、CUのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックの1つの中のCrサンプルとCUの元のCrコーディングブロック中の対応するサンプルとの差分を示し得る。
【００５９】
さらに、ビデオエンコーダ20は、4分木区分を使用して、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に分解し得る。変換ブロックは、同じ変換が適用されるサンプルの長方形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックを有し得る。TUのルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロピクチャ、または3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００６０】
ビデオエンコーダ20は、1つまたは複数の変換をTUの変換ブロックに適用して、TUの係数ブロックを生成し得る。たとえば、ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUのルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUのCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUのCr係数ブロックを生成し得る。
【００６１】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は一般に、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行し得る。
【００６２】
ビットエンコーダ20は、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含むビットストリームを出力し得る。したがって、ビットストリームは、ビデオデータの符号化された表現を備える。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットは、NALユニット中のデータのタイプを示すものと、必要に応じてエミュレーション防止ビットが散りばめられているローバイトシーケンスペイロード(RBSP)の形態でそのデータを含むバイトとを含む、シンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPを封入する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内に封入された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、0個のビットを含む。
【００６３】
異なるタイプのNALユニットは、異なるタイプのRBSPを封入し得る。たとえば、異なるタイプのNALユニットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コーディングされたスライス、supplemental enhancement information(SEI)などのために、異なるRBSPを封入し得る。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPを封入するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。HEVC(すなわち、非マルチレイヤHEVC)では、アクセスユニットは、復号順序において連続しており厳密に1つのコーディングされたピクチャを含む、NALユニットのセットであり得る。コーディングされたピクチャのコーディングされたスライスNALユニットに加えて、アクセスユニットはまた、コーディングされたピクチャのスライスを含まない他のNALユニットを含み得る。いくつかの例では、アクセスユニットの復号は常に、復号されたピクチャをもたらす。Supplemental Enhancement Information(SEI)は、VCL NALユニットからコーディングされたピクチャのサンプルを復号するのに必要ではない情報を含む。SEI RBSPは1つまたは複数のSEIメッセージを含む。
【００６４】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、シンタックス要素をビットストリームから取得するために、ビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも一部基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは全般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して、現在のCUのPUの予測ブロックを決定し得る。加えて、ビデオデコーダ30は、現在のCUのTUの係数ブロックを逆量子化し得る。ビデオデコーダ30は、係数ブロックに対して逆変換を実行して、現在のCUのTUの変換ブロックを再構築し得る。ビデオデコーダ30は、現在のCUのPUの予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャのCUごとにコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
【００６５】
現在、VCEGおよびMPEGのJoint Collaboration Team on 3D Video Coding(JCT-3C)が、HEVCに基づく3DV規格を開発しており、その標準化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV-HEVC)の標準化と、HEVCに基づく3Dビデオコーディング(3D-HEVC)の別の部分とを含む。3D-HEVCでは、テクスチャビューと深度ビューの両方に対する、CP/PUレベルのものを含む新たなコーディングツールが、含まれサポートされ得る。参照ソフトウェアの説明は、Zhang他、「Test Model 6 of 3D-HEVC and MV-HEVC」、JCT3V-F1005、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第6回会合、ジュネーブ、スイス、2013年11月、以後「JCT3V-F1005」から入手可能である。JCT3V-F1005は、http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php?id=1636のリンクからダウンロードが可能である。Tech他、「3D-HEVC Draft Text 2」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第6回会合、ジュネーブ、スイス、2013年11月、文書JCT3V-F1001(以後、「3D-HEVC Draft Text 2」)が、3D-HEVCのワーキングドラフトである。3D-HEVC Draft Text 2は、http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V-F1001-v4.zipのリンクからダウンロードが可能である。
【００６６】
Tech他、「3D-HEVC Draft Text 4」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第8回会合、バレンシア、スペイン、2014年3月29日〜4月4日、文書JCT3V-H1001_v2(以後、「3D-HEVC Draft Text 4」または「現在の3D-HEVC」)が、3D-HEVCの別のワーキングドラフトである。
【００６７】
本開示の技法は、MV-HEVCおよび3D-HEVCを含む、マルチビューコーディングおよび/または3DVの規格と仕様に潜在的に適用可能である。MV-HEVC、3D-HEVC Draft Text 2、および3D-HEVC Draft Text 4において定義されるものなどのマルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。マルチビューコーディングおよびスケーラブルビデオコーディングの文脈では、「アクセスユニット」という用語は、同じ時刻に対応するピクチャのセットを指すために使用され得る。いくつかの事例では、マルチビューコーディングおよびスケーラブルビデオコーディングの文脈では、アクセスユニットは、規定された分類規則に従って互いに関連付けられ、復号順序において連続しており、同じ出力時間と関連付けられるすべてのコーディングされたピクチャのVCL NALユニットとそれらに関連する非VCL NALユニットとを含む、NALユニットのセットであり得る。したがって、ビデオデータは、時間とともに発生する一連のアクセスユニットとして概念化され得る。
【００６８】
3D-HEVC Draft Text 4において定義されるものなどの3DVコーディングでは、「ビュー成分」は、単一のアクセスユニット中のビューのコーディングされた表現であり得る。ビュー成分は、深度ビュー成分およびテクスチャビュー成分を含み得る。深度ビュー成分は、単一のアクセスユニット中のビューの深度のコーディングされた表現であり得る。テクスチャビュー成分は、単一のアクセスユニット中のビューのテクスチャのコーディングされた表現であり得る。本開示では、「ビュー」は、同じビュー識別子と関連付けられるビュー成分のシーケンスを指し得る。
【００６９】
ビューのピクチャのセット内のテクスチャビュー成分および深度ビュー成分は、互いに対応するものと見なされ得る。たとえば、ビューのピクチャのセット内のテクスチャビュー成分は、ビューのピクチャのセット内の深度ビュー成分に対応するものと見なされ、その逆も当てはまる(すなわち、深度ビュー成分はセット中のテクスチャビュー成分に対応し、その逆も当てはまる)。本開示において使用される場合、深度ビュー成分に対応するテクスチャビュー成分は、単一のアクセスユニットの同じビューの一部であるテクスチャビュー成分および深度ビュー成分と見なされ得る。
【００７０】
テクスチャビュー成分は、表示される実際の画像コンテンツを含む。たとえば、テクスチャビュー成分は、ルーマ(Y)成分およびクロマ(CbおよびCr)成分を含み得る。深度ビュー成分は、対応するテクスチャビュー成分におけるピクセルの相対的な深度を示し得る。一例として、深度ビュー成分は、ルーマ値だけを含むグレースケール画像である。言い換えると、深度ビュー成分は画像コンテンツを伝えず、むしろ、テクスチャビュー成分におけるピクセルの相対的な深度の尺度を提供することがある。
【００７１】
マルチビューコーディングおよびSVCコーディングでは、ビットストリームは複数のレイヤを有し得る。マルチビューコーディングでは、レイヤの各々は異なるビューに対応し得る。ビデオデコーダ、たとえばビデオデコーダ30がレイヤ中のピクチャをいずれの他のレイヤ中のピクチャも参照せずに復号できる場合、そのレイヤは「ベースレイヤ」と呼ばれ得る。レイヤの復号が1つまたは複数の他のレイヤ中のピクチャの復号に依存する場合、そのレイヤは「非ベースレイヤ」または「従属レイヤ」と呼ばれ得る。非ベースレイヤの1つの中のピクチャをコーディングするとき、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダは、ピクチャが異なるビューの中にあるが、ビデオコーダが現在コーディングしているピクチャと同じ時刻内に、すなわち同じアクセスユニット内にある場合、参照ピクチャリストにピクチャを追加することができる。他のインター予測参照ピクチャのように、ビデオコーダは、参照ピクチャリストの任意の場所にビュー間予測参照ピクチャを挿入することができる。
【００７２】
SVCでは、ベースレイヤ以外のレイヤは「エンハンスメントレイヤ」と呼ばれることがあり、ビットストリームから復号されるビデオデータの視覚品質を向上させる情報を提供し得る。SVCは、空間分解能、信号対雑音比、すなわち品質、または時間的なレートを向上させることができる。スケーラブルビデオコーディング、たとえばSHVCでは、「レイヤ表現」は、単一のアクセスユニットにおける空間レイヤのコーディングされた表現であり得る。説明を簡単にするために、本開示は、ビュー成分および/またはレイヤ表現を「ビュー成分/レイヤ表現」または単に「ピクチャ」と呼び得る。
【００７３】
レイヤを実装するために、NALユニットのヘッダはnuh_reserved_zero_6bitsシンタックス要素を含んでよく、これは「nuh_layer_id」シンタックス要素とも呼ばれることがある。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なるレイヤに属する。したがって、マルチビューコーディング(たとえば、MV-HEVC)、3DV(たとえば、3D-HEVC)、またはSVC(たとえば、SHVC)では、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は、NALユニットのレイヤ識別子(すなわち、レイヤID)を指定する。いくつかの例では、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は、NALユニットがマルチビューコーディング(たとえば、MV-HEVC)、3DVコーディング(たとえば、3D-HEVC)、またはSVC(たとえば、SHVC)におけるベースレイヤに関する場合、0に等しい。ビットストリームのベースレイヤ中のデータは、ビットストリームのいずれの他のレイヤ中のデータも参照することなく復号され得る。NALユニットがマルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関連しない場合、シンタックス要素のnuh_reserved_zero_6bitsシンタックス要素は、0ではない値を有し得る。上で示されたように、マルチビューコーディングおよび3DVコーディングでは、ビットストリームの異なるレイヤは異なるビューに対応し得る。
【００７４】
さらに、レイヤ内のいくつかのビュー成分/レイヤ表現は、同じレイヤ内の他のビュー成分/レイヤ表現を参照することなく復号され得る。したがって、レイヤのいくつかのビュー成分/レイヤ表現のデータを封入するNALユニットは、レイヤ中の他のビュー成分/レイヤ表現の復号可能性に影響を与えることなく、ビットストリームから除去され得る。そのようなビュー成分/レイヤ表現のデータを封入するNALユニットを除去することで、ビットストリームのフレームレートを下げることができる。レイヤ内の他のビュー成分/レイヤ表現を参照することなく復号され得るレイヤ内のビュー成分/レイヤ表現のサブセットは、「サブレイヤ」または「時間的サブレイヤ」と本明細書では呼ばれ得る。
【００７５】
NALユニットは、NALユニットの時間識別子(すなわち、TemporalId)を指定するtemporal_idシンタックス要素を含み得る。NALユニットの時間識別子は、NALユニットが属するサブレイヤを識別する。したがって、ビットストリームの各サブレイヤは、異なる時間識別子を有し得る。一般に、第1のNALユニットの時間識別子が第2のNALユニットの時間識別子未満である場合、第1のNALユニットによって封入されるデータは、第2のNALユニットによって封入されるデータを参照することなく復号され得る。
【００７６】
図2は、マルチビューコーディングのための例示的な予測構造を示す概念図である。図2のマルチビュー予測構造は、時間的予測とビュー間予測とを含む。図2の例では、各々の四角形がビュー成分に対応する。図2の例では、アクセスユニットはT0...T11と名付けられ、ビューはS0...S7と名付けられる。「I」と名付けられた四角形は、イントラ予測されたビュー成分である。「P」と名付けられた四角形は、単方向にインター予測されたビュー成分である。「B」および「b」と名付けられた四角形は、双方向にインター予測されたビュー成分である。「b」と名付けられた四角形は、「B」と名付けられた四角形を参照ピクチャとして使用し得る。第1の四角形から第2の四角形を指す矢印は、第1の四角形が第2の四角形のための参照ピクチャとしてインター予測において利用可能であることを示す。図2の垂直方向の矢印によって示されるように、同じアクセスユニットの異なるビュー中のビュー成分は、参照ピクチャとして利用可能であり得る。したがって、図2はマルチビュービデオコーディングのための典型的なマルチビューコーディング予測(各ビュー内のピクチャ間予測とビュー間予測の両方を含む)を示し、ここで、予測は矢印によって示され、矢印の終点のオブジェクトは、矢印の始点のオブジェクトを予測参照のために使用する。アクセスユニットの1つのビュー成分を、同じアクセスユニットの別のビュー成分のための参照ピクチャとして使用することは、ビュー間予測と呼ばれ得る。
【００７７】
マルチビューコーディングでは、ビュー間の相関を除去するために、同じアクセスユニットの(すなわち、同じ時刻を伴う)異なるビューにおいてキャプチャされたピクチャの間で、ビュー間予測が実行される。ビュー間予測を用いてコーディングされるピクチャは、他の非ベースビューのビュー間予測のための参照ピクチャリストに追加され得る。ビュー間予測参照ピクチャは、インター予測参照ピクチャと同じ方法で、参照ピクチャリストの任意の場所に置かれ得る。
【００７８】
マルチビュービデオコーディングの文脈では、2つのタイプの動きベクトルがある。一方のタイプは、時間的参照ピクチャを指し示す通常の動きベクトル(すなわち、時間的動きベクトル)であり、対応する時間的インター予測は動き補償された予測(MCP)である。他方のタイプは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指し示す視差動きベクトル(DMV)であり、対応するインター予測は視差補償された予測(DCP: disparity-compensated prediction)である。ビデオコーダは、インター予測のために時間的動きベクトルと視差動きベクトルの両方を使用し得る。一般に、視差ベクトルは、インター予測のために使用されない限り、視差動きベクトルではない。
【００７９】
HEVCバージョン1では、PUに対して、マージモード(スキップはマージの特別な場合であると見なされる)と高度動きベクトル予測(AMVP)モードとそれぞれ名付けられた、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれでも、動きベクトル(MV)候補リストが、複数の動きベクトル予測子のために維持される。現在のPUの動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補を選ぶことによって生成される。
【００８０】
MV候補リストは、マージモードでは5つまでの候補を含み、AMVPモードでは2つだけの候補を含む。マージ候補は、動き情報のセット、たとえば参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含み得る。マージ候補がマージインデックスによって識別される場合、参照ピクチャが現在のブロックの予測のために使用されるだけでなく、関連する動きベクトルが決定される。しかしながら、AMVP候補は動きベクトルだけを含むので、リスト0またはリスト1のいずれかからの各々の潜在的予測方向に対するAMVPモードのもとでは、参照インデックスは、MV候補リストに対するMVPインデックスとともに明示的にシグナリングされる。AMVPモードでは、選択された動きベクトルとMVPインデックスに対応する動きベクトル予測子との間の動きベクトルの差分がさらにシグナリングされる。以上のように、マージ候補は動き情報の全セットに対応するが、AMVP候補は特定の予測方向および参照インデックスに対する1つの動きベクトルしか含まない。
【００８１】
3D-HEVC Draft Text 4では、最終マージ候補リストは、HEVCベースマージリスト(すなわち、HEVCバージョン1に従って生成されるようなマージリスト)からのエントリーと、いわゆるビュー間予測を通じて導出される追加の候補とを含む。より具体的には、主要なプロセスは次のように説明される。
【００８２】
第1に、HEVCバージョン1と同様に、空間マージ候補と時間マージ候補がベースマージ候補リストに挿入される。第2に、組み合わされた双予測マージ候補としても知られている仮想的候補と、0の候補とが、候補の総数がMaxNumMergeCandに等しくなるように必要であればベースマージ候補リストに挿入され、MaxNumMergeCandは、たとえばビュー間予測または動きパラメータ継承(MPI: motion parameter inheritance)が有効である場合、スライスヘッダにおいてシグナリングされるようなシングルビューHEVC候補の数に1を足したものに等しい。この後、HEVCベース候補リストが形成される。第3に、3D-HEVCマージリストが、追加の3D-HEVC候補ならびにHEVCベース候補リスト中の候補を1つのリストに挿入することによって生成される。第4に、追加の3D-HEVC候補は、IvMCと表記されるビュー間予測された動き候補と、IvDCと表記されるビュー間視差ベクトル候補と、VSPと表記されるビュー合成予測候補と、IvMCShiftと表記されるシフトされたビュー間予測された動き候補、またはIvDCShiftと表記されるシフトされた視差マージ候補のいずれかに等しい、IvShiftと表記されるシフト候補とを含む。
【００８３】
ビデオコーダは、2つのビュー間の視差の推定子として視差ベクトル(DV)を使用し得る。ビデオコーダは、近隣ブロックに基づく視差ベクトル(NBDV: neighboring block based disparity vector)プロセスを使用して視差ベクトルを導出し得る。NBDVプロセスは、3D-HEVC Draft Text 4の視差ベクトル導出方法のために使用され、これはすべてのビューに対してテクスチャが最初のコーディング順序を使用する。3D-HEVC Draft Text 4では、NBDVから導出された視差ベクトルは、参照ビューの深度マップから深度データを取り出すことによってさらに改良され得る。
【００８４】
ビデオコーダがNBDVプロセスを実行して視差ベクトルを導出するとき、ビデオコーダは、2つのビューの間の変位の推定子として視差ベクトル(DV)を使用する。近隣ブロックはビデオコーディングにおいてほとんど同じ動き/視差情報を共有するので、現在のブロックは、近隣ブロック中の動きベクトル情報を良好な予測子として使用できる。この考えに従い、NBDVプロセスは、異なるビューにおける視差ベクトルを推定するために近隣視差情報を使用する。
【００８５】
いくつかの空間的隣接ブロックおよび時間的隣接ブロックが最初に定義される。これらの近隣ブロックは、「視差動きベクトル候補」と呼ばれ得る。ビデオコーダは次いで、現在のブロックと候補ブロックとの相関の優先度によって決定される事前に定められた順序で、空間的隣接ブロックと時間的隣接ブロックの各々を確認する。ビデオコーダが視差動きベクトル候補の中に視差動きベクトルを見つけると(すなわち、動きベクトルがビュー間参照ピクチャを指し示すと)、ビデオコーダは視差動きベクトルを視差ベクトルに変換する。ビデオコーダは、視差ベクトルおよび関連するビュー順序インデックスを、NBDVプロセスの出力として返す。ビューのビュー順序インデックスは、他のビューに対するビューのカメラの場所を示し得る。上で示唆されたように、ビデオコーダは、NBDVプロセスにおいて近隣ブロックの2つのセットを使用し得る。近隣ブロックの一方のセットは空間的隣接ブロックであり、隣接ブロックの他方のセットは時間的隣接ブロックである。
【００８６】
L. Zhang他、「3D-CE5.h: Disparity vector generation results」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第1回会議:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V-A0097(以後「JCT3V-A0097」)において提案されたNBDVプロセスは、3D-HEVCにおいて最初に採用された。このNBDV導出プロセスはそれ以降、さらに改変されている。たとえば、Sung他、「3D-CE5.h: Simplification of disparity vector derivation for HEVC-based 3D video coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第1回会議:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V-A0126(以後「JCT3V-A0126」)に、簡略化されたNBDVとともに、暗黙的視差ベクトル(IDV: implicit disparity vector)が含められた。さらに、Kang他、「3D-CE5.h related: Improvements for disparity vector derivation」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第2回会議:上海、中国、2012年10月13〜19日、文書JCT3V-B0047(以後「JCT3V-B0047」)では、復号ピクチャバッファに記憶されているIDVを除去しながら、RAPピクチャの選択に伴うコーディング利得の向上をもたらすことによって、NBDV導出プロセスがさらに簡略化される。Kang他、「CE2: CU-based Disparity Vector Derivation in 3D-HEVC」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第4回会議:仁川、韓国、2013年4月20〜26日、文書JCT3V-D0181は、CUベースのNBDVを提案し、CUベースのNBDVでは、DVがCUのために導出され、CUの中のすべてのPUに対して適用される。
【００８７】
いくつかのNBDVプロセスでは、ビデオコーダは、視差ベクトルの導出のために5つの空間的隣接ブロックを使用する。5つの空間的隣接ブロックは、図3に示されるような、A0、A1、B0、B1、またはB2と表記される、現在のPUを包含するCUの左下のブロック、左のブロック、右上のブロック、上のブロック、および左上のブロックである。図3は、1つのCU40に対する例示的な空間的動きベクトルの近隣を示す概念図である。図3に示される空間的な近隣は、HEVCバージョン1におけるマージモードとAMVPモードにおいて使用されるものと同じである。したがって、いくつかの例では、NBDVプロセスを実行するときに空間的な近隣の動き情報を取り出すために、追加のメモリアクセスは必要とされない。
【００８８】
NBDVプロセスにおいて時間的近隣ブロックを確認するために、ビデオコーダはまず、候補ピクチャリストの構築プロセスを実行する。ビデオコーダは、現在のビューから最大で2つの参照ピクチャを候補ピクチャとして扱い得る。同じ位置の参照ピクチャが候補ピクチャリストにまず挿入され、続いて、参照インデックスの昇順で追加の候補ピクチャが挿入される。現在のブロックを含むスライスのスライスヘッダ中の1つまたは複数のシンタックス要素は、同じ位置の参照ピクチャを示し得る。両方の参照ピクチャリスト中の同じ参照インデックスを有する参照ピクチャが利用可能であるとき、同じ位置のピクチャの同じ参照ピクチャリスト中の参照ピクチャが、他方の参照ピクチャに先行する。候補ピクチャリスト中の各候補ピクチャに対して、時間的隣接ブロックを導出するために3つの候補領域が決定される。
【００８９】
ブロックがビュー間動き予測を用いてコーディングされるとき、視差ベクトルが、異なるビュー中の対応するブロックを選択するために導出される必要がある。暗黙的視差ベクトル(IDV)は、ビュー間動き予測において導出される視差ベクトルと呼ばれる。IDVは、「導出された視差ベクトル」とも呼ばれ得る。ブロックが動き予測を用いてコーディングされるとしても、導出された視差ベクトルは、後続のブロックのコーディングのために、廃棄されない。
【００９０】
「3D-HTM」という用語は、3D-HEVCのテストモデルを指す。3D-HTM 7.0および3D-HTMのより後のバージョンの設計では、NBDVプロセスを実行するビデオコーダは、時間的隣接ブロック中の視差動きベクトル、空間的隣接ブロック中の視差動きベクトル、そしてIDVの順序で確認する。ビデオコーダが視差動きベクトルまたはIDVを見つけると、ビデオコーダはNBDVプロセスを終了する。さらに、3D-HTM 7.0および3D-HTMのより後のバージョンの現在の設計では、NBDVプロセスにおいて確認される空間的隣接ブロックの数はさらに2まで減らされる。
【００９１】
いくつかの例では、ビデオコーダがNBDVプロセスから視差ベクトルを導出するとき、ビデオコーダはさらに、参照ビューの深度マップから深度データを取り出すことによって視差ベクトルを改良する。いくつかのそのような例では、改良プロセスは2つのステップを含む。
1. ベースビューなどの以前にコーディングされた参照深度ビューにおける導出された視差ベクトルによって、対応する深度ブロックを見つける。対応する深度ブロックのサイズは現在のPUのサイズと同じである。
2. 対応する深度ブロックの4つの角のピクセルから1つの深度値を選択し、選択された深度値を改良された視差ベクトルの水平成分に変換する。視差ベクトルの垂直成分は変更されない。
いくつかの例では、ビデオコーダはビュー間動き予測のために改良された視差ベクトルを使用するが、ビデオコーダはビュー間残差予測のために改良されていない視差ベクトルを使用する。加えて、ビデオコーダは、改良された視差ベクトルが後方ビュー合成予測モードを用いてコーディングされる場合、1つのPUの動きベクトルとして改良された視差ベクトルを記憶する。いくつかの設計では、ビデオコーダは、NBDVプロセスから導出されたビュー順序インデックスの値とは無関係に、ベースビューの深度ビュー成分を常に入手する。
【００９２】
高度残差予測(ARP)は、ビュー間の残差の相関を利用するためのコーディングツールである。ARPでは、ビデオコーダは、参照ビューにおける動き補償のために現在のビューにおいて動き情報を揃えることによって、残差予測子を生成する。加えて、ビュー間の品質の差を補償するために、加重係数が導入される。ARPが1つのブロックに対して有効にされるとき、ビデオエンコーダ20は、現在の残差と残差予測子との差分をシグナリングする。いくつかの実装形態では、ARPは、Part_2Nx2Nに等しい区分モード(すなわち、各CUが1つのPUしか有しない)を用いてインターコーディングされたCUだけに適用されることが可能である。ARPは、ルーマ(Y)成分とクロマ(CbおよびCr)成分の両方に対して適用され得る。以下の説明では、1つのブロック(またはピクセル)に対する演算(加算、減算など)の適用は、ブロック(またはピクセル)中の各ピクセルの各成分(Y、Cb、およびCr)に対する演算の適用を意味する。ルーマ成分のためのプロセスとクロマ成分のためのプロセスを区別する必要があるとき、ルーマ成分のためのプロセスはルーマARP(サブPU ARP)と呼ばれ、クロマ成分のためのプロセスはクロマARP(サブPU ARP)と呼ばれる。
【００９３】
「時間的残差のためのARP」という語句は、現在のブロックが時間的動きベクトル(すなわち、現在のピクチャのピクチャ順序カウント(POC)値とは異なるPOC値を有する参照ピクチャにおける位置を示す動きベクトル)を有するときの、ARPの使用を指すために使用され得る。POC値は各ピクチャと関連付けられる変数であるので、関連するピクチャが復号ピクチャバッファから出力されるべきであるとき、POC値は、出力順序における関連するピクチャの場所を、復号ピクチャバッファから出力されるべき同じCVS中の他のピクチャの出力順序の場所に対して示す。時間的残差のためのARPは、Zhang他、「CE4: Advanced residual prediction for multiview coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第4回会合:仁川、韓国、2013年4月20〜26日、文書JCT3V-D0177(以後「JCT3V-D0177」)において提案されたように、第4回のJCT3V会合の3D-HEVC規格において採用された。
【００９４】
図4は、マルチビュービデオコーディングにおける時間的残差(すなわち、1つの参照ピクチャリスト中の現在の参照ピクチャは時間的参照ピクチャである)のためのARPの例示的な予測構造を示す。図4に示されるように、以下のブロックが現在のブロックの予測において呼び出される。
1. 現在のブロック: Curr
2. 視差ベクトル(DV)によって導出される参照/ベースビュー中の参照ブロック: Base
3. 現在のブロックの(時間的)動きベクトル(TMVと表記される)によって導出されるブロックCurrと同じビューの中のブロック: CurrTRef
4. 現在のブロックの時間的動きベクトル(TMV)によって導出されるブロックBaseと同じビューの中のブロック: BaseTRefこのブロックは、現在のブロックCurrと比較されるTMV+DVのベクトルを用いて特定される。
図4の例では、Currは現在のピクチャ70の中にあり、CurrTRefは参照ピクチャ72の中にあり、Baseは参照ピクチャ74の中にあり、BaseTRefは参照ピクチャ76の中にある。
【００９５】
残差予測子はBaseTRef-Baseと表記され、減算演算が表記されたピクセルアレイの各ピクセルに適用される。言い換えると、残差予測子の各々のそれぞれのサンプルは、BaseTRefのそれぞれの対応するサンプルからBaseのそれぞれの対応するサンプルを引いたものに等しくてよい。加重係数wがさらに、残差予測子と乗算される。したがって、現在のブロックの最終予測子は、CurrTRef + w*(BaseTRef-Base)と表記される。言い換えると、現在のブロック(Curr)の最終予測子(すなわち、最終予測ブロック)の各々のそれぞれのサンプルは、CurrTRefの対応するそれぞれのサンプルと、加重残差予測子、すなわちw*(BaseTRef-Base)のそれぞれの対応するサンプルとの合計に基づく。以下の説明と図4は両方とも、単方向予測が適用されるという仮定に基づく。双方向予測の場合に拡張するとき、上のステップは各参照ピクチャリストに対して適用される。
【００９６】
いくつかの例では、3つの加重係数、すなわち0、0.5、および1がARPにおいて使用される。現在のCUに対する最小のレート-歪みコストをもたらす加重係数は、最終加重係数として選択されてよく、対応する加重係数のインデックス(加重係数0、1、および0.5にそれぞれ対応する0、1、および2)がCUレベルでビットストリームにおいて送信される。いくつかの例では、1つのCU中のすべてのPU予測は、同じ加重係数を共有する。加重係数が0に等しいとき、ARPは現在のCUに対して使用されない。
【００９７】
デコーダ側における提案されるARPの主な手順は、次のように記述され得る。まず、ビデオデコーダ30が、ターゲット参照ビューを指し示す、3D-HEVC Draft Text 4において指定されるような視差ベクトルを取得する。次いで、同じアクセスユニット内の参照ビューのピクチャの中で、対応するブロックが視差ベクトルによって位置特定される。第2に、現在のブロックの動き情報が、参照ブロックの動き情報を導出するために再使用される。ビデオデコーダ30が、残差ブロックを導出するために、現在のブロックの同じ動きベクトルと、参照ブロックの参照ビュー中の導出された参照ピクチャとに基づいて、対応するブロックのための動き補償を適用する。
【００９８】
図5は、現在のブロックと参照ブロックとの間の例示的な関係を示す概念図である。具体的には、図5は、現在のブロック、対応するブロック、および動き補償されたブロックとの間の例示的な関係を示す。現在のビュー(Vm)の参照ピクチャと同じPOC値を有する参照ビュー(V0)中の参照ピクチャが、対応するブロックの参照ピクチャとしてビデオデコーダ30によって選択される。第3に、デコーダ30が、加重係数を残差ブロックに適用して加重された残差ブロックを得て、加重された残差ブロックの値を予測されたサンプルに加算する。
【００９９】
図5の例では、現在のブロック80は、時刻T1におけるビューV1の中に存在する。対応するブロック82は、現在のブロック80とは異なるビュー(すなわち、ビューV0)の中にあり、現在のブロック80と同じ時刻(すなわち、時刻T1)の中にある。ビデオコーダは、現在のブロック80の視差ベクトルを使用して対応するブロック82を特定することができる。図5の例では、現在のブロック80は双予測的である。したがって、現在のブロック80は、第1の動きベクトル84と第2の動きベクトル86とを有する。動きベクトル84は、参照ピクチャ88における場所を示す。参照ピクチャ88は、ビューV1の中にあり、時刻T0の中にある。動きベクトル86は、参照ピクチャ90における場所を示す。参照ピクチャ90は、ビューV0の中に存在し、時刻T3の中に存在する。
【０１００】
ARPでは、ビデオコーダは、動きベクトル84および動きベクトル86を対応するブロック82の位置に適用して、参照ブロック93および95の位置を決定し得る(すなわち、動き補償されるブロック)。参照ブロック93および95はそれぞれ、参照ピクチャ92および参照ピクチャ94のサンプルを含み、またはそのサンプルから補間される。現在のブロック80は双線形にインター予測されるので、ビデオコーダは、参照ブロック93および95に基づいて、混合された参照ブロックを決定し得る。混合された参照ブロックの各々のそれぞれのサンプルは、参照ブロック93のそれぞれの対応するサンプルおよび参照ブロック95のそれぞれの対応するサンプルの加重平均である。ビデオコーダは、現在のブロック80の2つの動きベクトルを使用して、第1の残差予測子および第2の残差予測子を決定し得る。加えて、ビデオコーダは、第1の初期予測ブロックおよび第2の初期予測ブロックを決定し得る。第1の初期予測ブロックは、参照ブロック93と第1の残差予測子との合計であり得る。第2の初期予測ブロックは、参照ブロック95と第2の残差予測子との合計であり得る。現在のブロック80の最終残差予測子の各サンプルは、第1の初期予測ブロックと第2の初期予測ブロックの対応するサンプルの加重平均であり得る。
【０１０１】
「ビュー間残差のためのARP」という語句は、現在のブロックが視差動きベクトル(すなわち、現在のピクチャのビューとは異なるビューに属する参照ピクチャにおける位置を示す動きベクトル)を有するときの、ARPの使用を指すために使用され得る。ARPがビュー間残差のために適用されるとき、現在のPUはビュー間ARPを使用している。ARPが時間的残差のために適用されるとき、現在のPUは時間的ARPを使用している。以下の説明では、1つの参照ピクチャリストのための対応する参照が時間的参照ピクチャであり、ARPが適用される場合、それは時間的ARPと表記される。そうではなく、1つの参照ピクチャリストのための対応する参照がビュー間参照ピクチャであり、ARPが適用される場合、それはビュー間ARPと表記される。
【０１０２】
時間的残差のためのARP設計と同様に、現在のPUがビュー間参照ピクチャを使用するとき、ビュー間残差の予測が有効にされ得る。まず、ビデオコーダは、異なるアクセスユニット内のビュー間残差を計算し、次いでビデオコーダは、計算された残差情報を使用して、現在のブロックのビュー間残差を予測する。この部分は、L. Zhang他、「CE4: Further improvements on advanced residual prediction」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extensions、第6回会議:ジュネーブ、スイス、2013年10月25日〜11月1日、文書JCT3V-F0123(以後「JCT3V-F0123」)において提案され、これは3D-HEVCに採用されている。
【０１０３】
図6は、ビュー間残差のためのARPを示す概念図である。実際には、図6に示されるように、現在のブロック(Baseと表記される)の視差動きベクトルによって位置特定される参照ビュー中の参照ブロック、利用可能であればBaseに包含される時間的動きベクトル(mvLX)および参照インデックスによって位置特定される参照ビュー(BaseRefと表記される)中のBaseの参照ブロック、Baseから時間的動き情報を再使用することによって生成される現在のビュー(CurrRefと表記される)中の参照ブロックという、3つの関連するブロックが特定される。いくつかの実装形態では、ビデオデコーダは、BaseRefの位置座標から視差動きベクトル(DMV)を引いたものによって示される位置にあるものとしてCurrRefを決定し、この位置は、Currの位置座標によって示される位置と時間的動きベクトル(mvLX)を足したものに等しい。図6の例では、Currは現在のピクチャ100の中にあり、Baseは参照ピクチャ102の中のサンプルに基づき、BaseRefは参照ピクチャ104の中のサンプルに基づき、CurrRefは参照ピクチャ106の中のサンプルに基づく。
【０１０４】
特定された3つのブロックを用いて、ビデオコーダは、現在のPU(すなわち、Curr)の残差信号の残差予測子を、異なるアクセスユニット中のこれらの2つのブロックの差分: CurrRef - BaseRefとして計算することができる。言い換えると、Currの残差予測子の各々のそれぞれのサンプルは、CurrRefのそれぞれの対応するサンプルからBaseRefのそれぞれの対応するサンプルを引いたものに基づき得る。さらに、ビデオエンコーダ20は、現在のARPにおいて使用されるような加重係数とビュー間予測子を乗じることができる。ビデオデコーダ30は、シフト動作を実行して加重係数の影響をなくすことができる。ビデオエンコーダ20は、最終予測ブロックの各々のそれぞれのサンプルが、Baseのそれぞれの対応するサンプルから場合によっては加重された残差予測子のそれぞれの対応するサンプルを引いたものに基づくように、Currの最終予測ブロックを生成し得る。たとえば、最終残差ブロックの各々のそれぞれのサンプルは、Baseのそれぞれの対応するサンプルから場合によっては加重された残差予測子のそれぞれの対応するサンプルを引いたものに等しくてよい。Currの残差の各々のそれぞれのサンプルは、Currの予測ブロックのそれぞれの対応するサンプルからCurrの最終予測ブロックの対応するそれぞれのサンプルを引いたものに基づき得る。
【０１０５】
時間的残差のためのARPと同様に、ビデオコーダは、双線形フィルタを使用して3つの相対的なブロックを生成し得る。さらに、Baseに包含される時間的動きベクトルが、現在のPU(すなわち、Curr)の第1の利用可能な時間的参照ピクチャの異なるアクセスユニット中にある参照ピクチャを指し示すとき、ビデオコーダはまず、時間的動きベクトルを第1の利用可能な時間的参照ピクチャに対してスケーリングし得る。ビデオコーダは次いで、スケーリングされた動きベクトルを使用して、異なるアクセスユニット(すなわち、BaseRefおよびCurrRef)中の2つのブロックを位置特定し得る。
【０１０６】
Zhang他、「3D-CE4: Advanced residual prediction for multiview coding」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第3回会議:ジュネーブ、スイス、2013年1月17〜23日、文書番号JCT3V-C0049、以後「JCT3V-C0049」では、0ではない加重係数を用いてコーディングされたPUの参照ピクチャは、ブロックごとに異なり得る。したがって、参照ビューからの異なるピクチャが、対応するブロックの動き補償されたブロック(すなわち、図4のBaseTRef)を生成するために入手される必要があり得る。加重係数が0に等しくないとき、時間的残差のために、現在のPUの動きベクトルは、残差生成プロセスと残差予測子生成プロセスの両方のための動き補償を実行する前に、固定されたピクチャに対してスケーリングされる。ARPがビュー間残差に適用されるとき、参照ブロック(すなわち、図4のBase)の時間的動きベクトルは、残差生成プロセスと残差予測子生成プロセスの両方のための動き補償を実行する前に、固定されたピクチャに対してスケーリングされる。JCT3V-C0049では、両方の場合(すなわち、時間的残差またはビュー間残差)について、固定されたピクチャは、各参照ピクチャリストの第1の利用可能な時間的参照ピクチャとして定義される。復号された動きベクトルが固定されたピクチャを指し示さないとき、復号された動きベクトルはまずスケーリングされ、次いでCurrTRefおよびBaseTRefを特定するために使用される。ARPのために使用されるそのような参照ピクチャは、ターゲットARP参照ピクチャと呼ばれる。現在のスライス(すなわち、現在のブロックを含むスライス)がBスライスであるとき、ターゲットARP参照ピクチャは参照ピクチャリストと関連付けられる。したがって、2つのターゲットARP参照ピクチャが使用され得る。
【０１０７】
ビデオコーダは、ターゲットARP参照ピクチャに対して利用可能性の確認を実行することができる。たとえば、参照ピクチャリストX(Xは0または1である)と関連付けられるターゲットARP参照ピクチャを「RpRefPicLX」と表記し、NBDVプロセスから導出されるビュー順序インデックスに等しいビュー順序インデックスを有しRpRefPicLXと同じPOC値を有するビュー中のピクチャを「RefPicInRefViewLX」と表記する。以下の条件の1つが誤りであるとき、ARPは参照ピクチャリストXに対して無効にされる。
- RpRefPicLXが利用不可能である。
- RefPicInRefViewLXが復号ピクチャバッファに記憶されていない。
- RefPicInRefViewLXが、NBDVプロセスからの視差ベクトルまたは現在のブロックの(またはそれと関連付けられる)DMVによって位置特定される対応するブロック(すなわち、図4および図6のBase)の参照ピクチャリストのいずれにも含まれていない。
【０１０８】
いくつかの実装形態では、ARPが適用されるとき、ビデオコーダは、残差および残差予測子を生成するときに双線形フィルタを常に使用する。すなわち、現在のブロックを除いて、ARPプロセスに関わる3つのブロックは、双線形フィルタを使用して生成される(たとえば、図4のBase、BaseTRef、およびCurrTRef、ならびに図6のBase、BaseRef、およびCurrRef)。
【０１０９】
HEVCバージョン1では、1つのインターコーディングされたPUの予測ブロックを得るために、2つのステップが必要とされる。
1) ビット深度が増大した中間予測信号を決定するための、HEVC 8タップ/6タップフィルタを用いた、起こり得る分数補間(詳細はHEVCバージョン1の8.5.3.3.3項において見いだされ得る)。
2) 中間予測信号を元のビット深度精度に戻し、オーバーフローがないことを確実にするために切り取り動作が呼び出される、加重サンプル予測プロセス(8.5.3.3.4項参照)。
一般に、フィルタの「タップ」の数は、フィルタの出力値を決定するために使用されるサンプルの数に対応する。
【０１１０】
3D-HEVC Draft Text 4では、ARPが適用されるとき、ビデオデコーダは、H.264/AVC規格と同様の、定められた双線形フィルタリングプロセスを使用する。ARPとともに使用するための、3D-HEVC Draft Text 4において定められた双線形フィルタリングプロセスは、入力信号と同じビット深度の、すなわち、3D-HEVCコーディングツールの性能評価において使用されるcommon test conditions(CTC)のもとでは8ビットの中間予測信号をもたらす。3D-HEVC Draft Text 4のI.8.5.3.3.7.2項に記述されるように、ビデオデコーダは、次の式を使用して双線形フィルタリングプロセスを実行する。
predPartLX[ x ][ y ] = (refPicLX[ xA ][ yA ] * ( 8 - xFrac ) * ( 8 - yFrac ) +
refPicLX[ xB ][ yB ] * ( 8 - yFrac ) * xFrac +
refPicLX[ xC ][ yC ] * ( 8 - xFrac ) * yFrac +
refPicLX[ xD ][ yD ] * xFrac * yFrac ) >> 6              (I-238)
しかしながら、フィルタリングプロセスの前に、HEVCバージョン1の8.5.3.3.4項のような加重サンプル予測プロセスが呼び出され、(たとえば、CTCのもとでは6の)右シフト演算が誤った予測値を引き起こす。以下は、加重サンプル予測プロセスにおけるシフト動作のいくつかの例である。最終予測信号predSamplesは次のように定義される。
・0に等しいweighted_pred_flagを有する、Pスライス中の単予測されたブロックに対して、以下のことが当てはまる。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[ x ][ y ] + offset1 ) >> shift1 )
ここで、predSamplesLXは双線形フィルタリングプロセスの出力である予測信号を示し、shift1は(14 - bitDepth)に等しく設定され、offset1はshift1が0に等しくないとき1 << ( shift1 - 1)に等しい。最終予測信号は、フィルタ係数の大きさの合計を正規化するために、CTCの場合は6の右シフトを有すると予想される。
・0に等しいweighted_bipred_flagを有する、Bスライス中の双予測されたブロックに対して、以下のことが当てはまる。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1), ( predSamplesL0[ x ][ y ] + predSamplesL1[ x ][ y ] + offset2 ) >> shift2 )    (8-239)
上の式において、shift2は(15 - bitDepth)に等しく設定され、offset2は1 << ( shift2 - 1)に等しい。最終予測信号は、CTCの場合は7の右シフトを有すると予想される。3D-HEVC Draft Text 4の双線形補間は、式I-238のような分離不可能なフィルタと同様の方法で行われる。
【０１１１】
3D-HEVC Draft Text 4の現在の設計には、いくつかの問題がある。たとえば、3D-HEVC Draft Text 4の設計は、双線形動き補償されたデータの誤った精度、すなわち入力ビデオが8ビットであるときには8ビットを保つ。別の例では、3D-HEVC Draft Text 4のための参照ソフトウェアは、少なくとも単方向予測の場合にすべての中間データを切り取り、それは、現在の実装形態がHEVC補間関数を再使用するからである。これにより、単方向予測されるARPに対するピクセルごとの切り取り動作の数が3倍になり、それは、3つの予測ブロックが補間プロセスとともに生成されるからである。以下の式が切り取りを記述する。
predSamplesLXL[ x ][ y ] = clipy(predSamplesLXL[ x ][ y ]) + ( ( clipy(rpSamplesLXL[ x ][ y ]) - clipy(rpRefSamplesLXL[ x ][ y ]) ) >> shiftVal) (I-227)
切り取り動作の数が増えると、符号化および復号の速度が下がり、かつ/または、復号されるピクチャの視覚品質が不必要に下がることがある。
【０１１２】
当業者には明らかなように、以下の技法は独立に、または組み合わせて具現化され得る。具体的には、例は、上で述べられた問題に対処するための、またはコーディング性能を別様に改善するための、以下の態様のいずれかを含み得る。より具体的には、例は、ARPの性能を改善する以下の方法の1つまたは複数を含み得る。
【０１１３】
ARPを伴う1つの例示的な技法では、各段階のフィルタの係数(a, b)の合計が64に達し、HEVCバージョン1において使用される他の補間フィルタの合計と同じになるように、係数を変更することによって、分離可能な双線形補間フィルタは、HEVCバージョン1のHEVC動き補償補間方式を使用するように構成される。この例では、(a, b)は(x*8, (8-x)*8)に等しくてよく、整数xは0から8の範囲にある値に等しい。
【０１１４】
「分離可能なフィルタ」という用語は、2つ以上のフィルタの積として書くことができるフィルタに適用される。対照的に、分離不可能なフィルタは、2つ以上のフィルタの積として書くことができない。本開示のいくつかの技法において使用される双線形補間フィルタの場合、双線形補間フィルタは、第1のフィルタが主要な整数未満の位置にあるサンプルの値を決定するために適用されるという点で、「分離可能」である。主要な整数未満の位置は、整数ピクセル位置から厳密に垂直または水平である。第2のフィルタは、二次的な整数未満の位置にあるサンプルの値を決定するために、主要な整数未満の位置にあるサンプルに適用される。二次的な整数未満の位置は、整数ピクセル位置から厳密には垂直または水平ではない。この文脈では、「段階」という用語は、整数未満の位置を指す。
【０１１５】
ARPを適用するときに分離可能な双線形補間フィルタを使用することで、双線形補間フィルタを適用するときに実行される切り取り動作の数を減らすことができる。さらに、各々の整数未満の位置(すなわち、段階)に対して補間フィルタにおいて使用される係数は合計で64であるので、ARPを適用するときに使用される双線形補間フィルタは、動き補償のためにベースHEVCにおいて使用される双線形補間フィルタハードウェアの再使用を可能にし得る。
【０１１６】
したがって、単方向ARPの例では、ビデオエンコーダ20は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中の第1の参照ブロックの位置を決定することができる。図4の例では、第1の参照ブロックはCurrTRefと名付けられる。図6の例では、第1の参照ブロックはBaseと名付けられる。ビデオエンコーダ20は、第1の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第1の参照ブロックのサンプルを決定する。さらに、この単方向ARPの例では、ビデオエンコーダ20は、第2の参照ピクチャ中の第2の参照ブロックの位置を決定する。図4の例では、第2の参照ブロックはBaseTRefと名付けられる。図6の例では、第2の参照ブロックはCurrRefと名付けられる。さらに、この例では、ビデオエンコーダ20は、第1の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第1の参照ブロックのサンプルを決定することができる。ビデオエンコーダ20は、第2の参照ピクチャのサンプルに同じまたは異なる分離可能な双線形補間フィルタを適用して、第2の参照ブロックのサンプルを決定する。ビデオエンコーダ20は、第3の参照ピクチャのサンプルに同じまたは異なる分離可能な双線形補間フィルタを適用して、第3の参照ブロックのサンプルを決定する。図4の例では、第3の参照ブロックはBaseと名付けられる。図6の例では、第3の参照ブロックはBaseRefと名付けられる。
【０１１７】
この例では、ビデオエンコーダ20は予測ブロックを決定する。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルから、それぞれの残差予測子サンプルを引いたものに等しくてよい。この例では、それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数(たとえば、0ではない加重係数)に等しくてよい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。加えて、この例では、ビデオエンコーダ20は残差ブロックを決定する。この例では、残差ブロックの各々のそれぞれのサンプルは、現在のブロックのそれぞれのサンプルと予測ブロックのそれぞれのサンプルとの差分に等しい。現在のブロックのそれぞれのサンプルおよび予測ブロックのそれぞれのサンプルは、残差ブロックのそれぞれのサンプルの位置に対応する。ビデオエンコーダ20は、ビットストリームに、残差ブロックを表すデータを含める。
【０１１８】
同様の例では、ビデオデコーダ30は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中の第1の参照ブロックの位置を決定する。ビデオデコーダ30は、第1の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第1の参照ブロックのサンプルを決定することができる。図4の例では、第2の参照ブロックはCurrTRefと名付けられる。図6の例では、第2の参照ブロックはBaseと名付けられる。加えて、この例では、ビデオデコーダ30は、第2の参照ピクチャ中の第2の参照ブロックの位置を決定する。図4の例では、第2の参照ブロックはBaseTRefと名付けられる。図6の例では、第3の参照ブロックはCurrRefと名付けられる。この例では、ビデオデコーダ30は、第2の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第2の参照ブロックのサンプルを決定する。ビデオデコーダ30は、第3の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第3の参照ブロックのサンプルを決定する。図4の例では、第3の参照ブロックはBaseと名付けられる。図6の例では、第3の参照ブロックはBaseRefと名付けられる。
【０１１９】
さらに、この例では、ビデオデコーダ30は予測ブロックを決定する。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルと、それぞれの残差予測子サンプルとを足したものに等しい。この例では、それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。この例では、ビデオデコーダ30は、ビットストリームから、残差ブロックを表すデータを取得する。ビデオデコーダ30は、残差ブロックおよび予測ブロックに一部基づいて、現在のピクチャのコーディングブロックを再構築する。
【０１２０】
上で与えられたビデオエンコーダ20およびビデオデコーダ30のための例に従ったいくつかの例では、各段階の分離可能な双線形補間フィルタの係数の合計は64に等しい。そのような例では、分離可能な双線形補間フィルタの係数(a, b)の合計は(x*8, (8-x)*8)に等しく、xは0から8の範囲にある値に等しい。
【０１２１】
さらに、上で与えられたビデオエンコーダ20およびビデオデコーダ30のための例によれば、ビデオエンコーダ20およびビデオデコーダ30は、時間的残差のためにARPを使用し得る。ビデオエンコーダ20およびビデオデコーダ30が時間的残差のためにARPを使用する例では、現在のピクチャ(すなわち、図4の現在のピクチャ70)は第1のビュー(すなわち、図4のV0)の中にある。第2の参照ピクチャ(すなわち、参照ピクチャ76)および第3の参照ピクチャ(すなわち、参照ピクチャ74)はともに、第1のビューとは異なる第2のビュー(すなわち、図4のV1)の中にある。さらに、この例では、現在のブロックの動きベクトルは、現在のブロックの時間的動きベクトル(すなわち、TMV)である。第3の参照ピクチャのPOC値(すなわち、図4のT0)は、現在のピクチャのPOC値に等しい。この例では、ビデオコーダ(たとえば、ビデオエンコーダ20および/またはビデオデコーダ30)は、第1の参照ピクチャ(すなわち、参照ピクチャ72)を決定し得る。第1の参照ピクチャのPOC値(すなわち、T1)は、第2の参照ピクチャのPOC値に等しい。ビデオコーダは、現在のブロックの動き情報の参照インデックスに基づいて、第1の参照ピクチャを決定し得る。第1の参照ピクチャのPOC値および第2の参照ピクチャのPOC値は、現在のピクチャのPOC値とは異なる。さらに、この例では、ビデオコーダは、現在のブロックの視差ベクトル(すなわち、DV)に基づいて、第3の参照ブロック(すなわち、Base)の位置を決定する。この例では、ビデオコーダは、第2の参照ブロックの位置が現在のブロックの時間的動きベクトルと現在のブロックの視差ベクトルとの合計によって示されるように、第2の参照ブロック(すなわち、BaseTRef)の位置を決定する。
【０１２２】
ビデオエンコーダ20およびビデオデコーダ30がビュー間残差のためにARPを使用する別の例では、現在のピクチャ(たとえば、図6の現在のピクチャ100)と第2の参照ピクチャ(たとえば、図6の参照ピクチャ106)の両方が、第1のビュー(たとえば、図6のV0)の中にある。この例では、第3の参照ピクチャ(たとえば、図6の参照ピクチャ102)は、第1のビューとは異なる第2のビュー(たとえば、図6のV1)の中にある。さらに、この例では、現在のブロックの動きベクトルは、現在のブロックの視差動きベクトルである。第2の参照ピクチャのPOC値(たとえば、図6のT1)は、現在のピクチャのPOC値(たとえば、図6のT0)とは異なる。第3の参照ピクチャのPOC値(たとえば、図6のT0)は、現在のピクチャのPOC値とは異なり、第2の参照ピクチャのPOC値に等しい。この例では、ビデオコーダ(たとえば、ビデオエンコーダ20および/またはビデオデコーダ30)は、現在のブロックの視差動きベクトルに基づいて、第1の参照ブロック(たとえば、図6のBase)を決定する。第1の参照ピクチャは、現在のピクチャと同じPOC値(たとえば、図6のT0)を有し、第2のビュー(たとえば、図6のV1)の中にある。この例では、ビデオコーダは、第3の参照ブロックの位置が第1の参照ブロックの時間的動きベクトルによって示されるように、第3の参照ブロック(たとえば、図6のBaseRef)の位置を決定する。さらに、そのような例では、ビデオコーダは、参照ブロックの時間的動きベクトルを再使用して第2の参照ブロックの位置を決定することによって、第2の参照ブロック(たとえば、図6のCurrRef)の位置を決定する。たとえば、いくつかの例では、ビデオコーダは、第2の参照ブロックの位置が第3の参照ブロック(たとえば、図6のBaseRef)の位置座標から現在のブロックの視差動きベクトルを引いたものによって示されるように、第2の参照ブロックの位置を決定し得る。いくつかの例では、ビデオコーダは、第2の参照ブロックの位置が第1の参照ブロックの時間的動きベクトルの位置座標によって示されるように、第2の参照ブロックの位置を決定し得る。
【０１２３】
ARPを伴う別の例示的な技法では、分離可能な双線形補間フィルタが使用されるか、3D-HEVC Draft Text 4のように分離不可能な双線形補間フィルタが使用されるかにかかわらず、動き補償の結果は、結果が(14 - bitDepth)の右シフトによって正規化され、加重サンプル予測プロセス、たとえばHEVCバージョン1の8.5.3.3.4項の式(8-239)と整合し得るような方法で、並べられ得る。この例では、bitDepthは、現在の成分のビット深度である。
【０１２４】
1つの代替的な例では、分離可能な双線形フィルタが使用される場合、各段階のフィルタの係数(a, b)の合計は64に等しい。代替的には、各段階のフィルタの係数(a, b)の合計は8に等しいが、第2の粗いフィルタリング(垂直方向)の後のシフト値は、より小さい値に変更される必要があることがあり、ここではシフト値は6から0に変更される。別の代替的な例では、分離不可能な双線形フィルタが3D-HEVC Draft Text 4のように使用される場合、補間は、3D-HEVC Draft Text 4のような6の右シフトの代わりに(bitDepth - 8)の右シフトが使用されるように変更される。
【０１２５】
ARPの間の動き補償された中間信号に対して相対的に高いビット深度を伴い得る、上の例を含むいくつかの例では、単方向予測が使用されるか双方向予測が使用されるかにかかわらず、中間信号に対しては切り取りが実行されない。たとえば、HEVCバージョン1の加重サンプル予測プロセスだけにおいて、切り取り動作が実行され得る。代替的に、場合によっては2つの双線形補間ベースの動き補償信号の間での減算である残差予測子を、16ビットの範囲に保つために、切り取られたデータを[-215, 215 - 1]の範囲にするために、残差予測子の切り取りが適用され得る。2つの値-215、215-1は、切り取りの後の最小値と最大値(両端を含む)を示すので、切り取り関数を一意に定義する。
【０１２６】
各カメラの光源に対する露出は異なり得るので、マルチビュービデオコーディングにおける照度補償(IC)が、異なるビュー間の照度の不一致を補償するために使用される。通常、加重係数および/またはオフセットが、コーディングされるブロックと異なるビュー中の予測ブロックとの差分を補償するために使用される。このパラメータは、ビデオデコーダに明示的に送信されることもされないこともある。
【０１２７】
Liu他、「3D-CE2.h: Results of Illumination compensation for inter-view prediction」、TU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extension Development、第2回会合:上海、中国、2012年10月13〜19日、文書JCT3V-B0045(以後「JCT3V-B0045」)において提案された設計によれば、照度補償はCUレベルにおいてシグナリングされ、パラメータは、参照ブロックの近隣サンプルとして、現在のブロックの近隣サンプルによって導出される。その後、Ikai他、「3D-CE5.h: Removal of parsing dependency for illumination compensation」、ITU-T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11のJoint Collaborative Team on 3D Video Coding Extensions、第4回会合:仁川、韓国、2013年4月20〜26日、文書JCT3V-D0060(以後「JCT3V-D0060」)において提案されたように、モードのシグナリングが変更された。
【０１２８】
照度補償は、ビュー間参照ピクチャから予測されるブロックのコーディング効率を改善するために導入された。したがって、照度補償は、ビュー間参照ピクチャによって予測されるブロックだけに適用され得る。したがって、現在のPUに対して、上の隣接する行と左の隣接する列の中の近隣サンプルは、参照ブロックの対応する近隣サンプルとともに、線形モデルのための入力パラメータである。線形モデルは、最小二乗法によって、スケーリング係数aおよびオフセットbを導出し得る。参照ビュー中の対応する近隣サンプルは、図7に示されるように、現在のPUの視差動きベクトルによって特定される。
【０１２９】
ビュー間参照ピクチャからの動き補償の後、線形モデルは、現在のPUの予測信号を更新するために、予測ブロックの各値に適用される。図7に示されるように、予測ブロックの各値はさらに、aによってスケーリングされ、さらにbによって加算される。照度補償におけるAMVPモードおよびマージモードは、余剰のビットと不要な計算を減らすために、スライスレベルにおいて適応的に有効または無効にされ得る。
【０１３０】
図7は、照度補償(IC)パラメータの導出のための例示的な近隣サンプルを示す概念図である。図7の例では、非ベースビューピクチャ120は現在のPU122を含む。ビデオコーダは、現在のPU122の視差動きベクトルを使用して、ベースビューピクチャ126中の参照PU124を決定する。ビデオコーダは、現在のPU122の近隣サンプルおよび参照PU124の近隣サンプルに基づいて、スケーリング係数aおよびオフセットbを決定する。図7の例では、近隣サンプルは、四角形によって囲まれる円として示されている。現在のPU122の予測ブロックの各々のそれぞれのサンプルに対して、ビデオコーダは、スケーリング係数aによってスケーリングされた参照PU124のそれぞれの対応するサンプルにオフセットbを足したものに等しい値に、それぞれのサンプルを設定することができる。
【０１３１】
3D-HEVC Draft Text 4では、ICが双方向に予測されるPUに対して有効にされるとき、HEVCと比較すると、各ピクセルに対して4つの追加の切り取りが必要とされる。具体的には、各予測方向に対して、動き補償されたサンプルと照度補償されたサンプルの両方が[0, (1 << BitDepth) - 1]へと切り取られ、ここでBitDepthは現在の成分のビット深度である。
【０１３２】
動き補償されたサンプルと、予測方向Xから場所xにあるICサンプルとをそれぞれ、PredMcLX[x]およびIcPredLX[x]と表記し、Xは0または1に等しい。予測方向Xにある現在のPUのICパラメータをそれぞれ、aLXおよびbLXと表記する。shift1を14 - BitDepthに等しく設定し、offset1を1 << (shift1 - 1)に等しく設定し、shift2を15 - BitDepthに等しく設定し、offset2を1 << ( shift2 - 1)に等しく設定する。場所xにある最終予測サンプルをPred[x]と表記する。Pred[x]は、以下のステップに従って生成され得る。
1. ステップ1:  動き補償されたサンプルの切り取り。
PredMcLX[x] = clip3(0, (1 << BitDepth) - 1, (PredMcLX[x] + offset1) >> shift1)    (1)
2. ステップ2:  照度補償されたサンプルの生成および切り取り。
IcPredLX[x] = aLX*PredMcLX[x] + bLX            (2)
IcPredLX[x] = clip3(0, (1 << BitDepth) - 1, IcPredMcLX[x])            (3)
3. ステップ3:  加重サンプル予測プロセスの前に信号を設定する(式(5)および(6)が式(7)および(8)と同一に見えるような編集上の注記)。
PredLX[x] = IcPredMcLX[x]            (4)
4. 加重サンプル予測プロセス。
a. 現在のPUが方向Xから単方向に予測される場合、
Pred[x] = clip3(0, (1 << BitDepth) - 1, ( PredL0[x] + offset1 ) >> shift1)    (5)
b. 現在のPUが双方向に予測される場合、
Pred[x] = clip3(0, (1 << BitDepth) - 1, ( IcPredL0[x] + IcPredL1[x] + offset2 ) >> shift2)    (6)
【０１３３】
上のステップでは、各予測方向に対して、ステップ1とステップ2の両方において1回の切り取り動作が必要であり、双方向の場合にはステップ3において1回の切り取り動作が必要である。まとめると、ICが有効にされるとき、双方向予測および単方向予測に対してそれぞれ、5回の切り取りと2回の切り取りが必要とされる。
【０１３４】
しかしながら、双方向の場合、Pred[x]がステップ4において[0, (1 << BitDepth) - 1]へと切り取られるので、中間の結果、すなわち、動き補償されたサンプルおよび照度補償されたサンプルを、ステップ1およびステップ2において[0, (1 << BitDepth) - 1]へと追加で切り取る必要はない。同様に、単方向の場合、IcPredLX[x]がステップ2において[0, (1 << BitDepth) - 1]へと切り取られるので、ステップ1において動き補償されたサンプルを追加で切り取る必要はない。
【０１３５】
ICが無効にされるとき、Pred[x]は次のように生成され得る。
1. 現在のPUが方向Xから単方向に予測される場合、
Pred[x] = clip3(0, (1 << BitDepth) - 1, ( PredL0[x] + offset1 ) >> shift1)    (7)
2. 現在のPUが双方向に予測される場合、
Pred[x] = clip3(0, (1 << BitDepth) - 1, ( PredL0[x] + PredL1[x] + offset2 ) >> shift2)    (8)
したがって、ICが無効にされるとき、双方向予測と単方向予測の両方に対して、1回の切り取り動作しか必要とされない。
【０１３６】
上の分析から、ICが有効にされるとき、最大で4つの追加の切り取り動作が必要とされ、これは非常に複雑であり不必要である。各切り取り動作は少なくとも2回の比較を必要とし、たとえば各々の8*8のブロックに対して、比較の数は192である。したがって、ICでは、不必要な回数の切り取りが実行される。たとえば、双方向予測ICの場合、4回の追加の切り取りがある。切り取り動作の回数のこの増加は、符号化および復号の速度を下げることがある。
【０１３７】
本開示の特定の技法は、ICに関わる切り取り動作を減らす。たとえば、本開示の技法によれば、ICにおいて、ステップ1および2におけるすべての上で言及された切り取り、式(1)および(3)がなくなる。別の例では、ICにおいて、動き補償された信号に適用される切り取り動作は、式(1)のステップ1のように適用される。しかしながら、この例では、ステップ2のようなIC信号の上側に対する切り取り動作、式(3)が適用されるので、IC信号は[0, 216-1]の範囲内にある。2つの値0、216-1は、切り取りの後の最小値と最大値(両端を含む)を示すので、切り取り関数を一意に定義する。
【０１３８】
加重予測へのICの適用を無効にするために、加重予測プロセスのいくつかの例では、加重予測がIC補償されたブロックに適用されないように、ICが有効にされるか否かが確認され得る。代替的に、ICがスライス全体に対して無効にされるように、すなわち、slice_ic_enable_flagが1に等しくなるように、たとえば1に等しいweightedPredFlagによって示される(1, 0)、(0, 1)、または(0.5, 0.5)に等しくない重みとともに暗黙的加重予測が適用されるときには、制約が課され得る。
【０１３９】
図8は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図8は説明のために提供され、広く例示されるとともに本開示で説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングの文脈でビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１４０】
図8の例では、ビデオエンコーダ20は、予測処理ユニット200と、残差生成ユニット202と、変換処理ユニット204と、量子化ユニット206と、逆量子化ユニット208と、逆変換処理ユニット210と、再構築ユニット212と、フィルタユニット214と、復号ピクチャバッファ216と、エントロピー符号化ユニット218とを含む。予測処理ユニット200は、インター予測処理ユニット220およびイントラ予測処理ユニット226を含む。インター予測処理ユニット220は、動き推定ユニット222および動き補償ユニット224を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１４１】
ビデオエンコーダ20は、ビデオデータを受信する。ビデオデータメモリ201は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶する。ビデオデータメモリ201に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ216は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ201および復号ピクチャバッファ216は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ201および復号ピクチャバッファ216は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ201は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであってよく、または、これらのコンポーネントに対してオフチップであってよい。
【０１４２】
ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。したがって、スライスの各々のそれぞれのCTUに対して、ビデオエンコーダ20は、それぞれのCTUを表すそれぞれの符号化されたデータを生成する。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB)、および対応するCTBを有し得る。CTUを符号化することの一部として、予測処理ユニット200は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット200は、CTUのCTBを4つの等しいサイズのサブブロックに区分し、サブブロックの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【０１４３】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(すなわち、コーディングされたCU)を生成し得る。言い換えると、CTUの各々のそれぞれのCUに対して、ビデオエンコーダ20は、それぞれのCUを表すそれぞれの符号化されたデータを生成する。CUを符号化することの一部として、予測処理ユニット200は、CUの1つまたは複数のPUの間でCUのコーディングブロックを区分し得る。したがって、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックを有し得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測に対して2N×2NまたはN×NというPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似の、対称のPUサイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測に対して、2N×nU、2N×nD、nL×2N、およびnR×2NというPUサイズのための非対称区分をサポートし得る。
【０１４４】
インター予測処理ユニット220は、インター予測をCUの各PUに対して実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックおよびPUの動き情報を含み得る。インター予測処理ユニット220は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUに対して異なる動作を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット220は、インター予測をPUに対して実行しない。
【０１４５】
PUがPスライス中にある場合、動き推定ユニット222は、PUの参照領域について参照ピクチャのリスト(たとえば、「RefPicList0」)の中の参照ピクチャを検索し得る。PUの参照領域は、PUの予測ブロックに最も密接に対応するサンプルを含む、参照ピクチャ内の領域であり得る。動き推定ユニット222は、PUの参照領域を含む参照ピクチャのRefPicList0の中での場所を示す参照インデックスを生成し得る。加えて、動き推定ユニット222は、PUのコーディングブロックと参照領域に関連付けられた参照位置との間の空間変位を示す動きベクトルを生成し得る。たとえば、動きベクトルは、現在のピクチャの中の座標から参照ピクチャの中の座標までのオフセットを提供する2次元ベクトルであってよい。動き推定ユニット222は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット224は、PUの動きベクトルによって示される参照位置における実際のサンプルまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
【０１４６】
PUがBスライス中にある場合、動き推定ユニット222は、PUのための単予測または双予測を実行し得る。PUに対して単予測を実行するために、動き推定ユニット222は、PUの参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを検索し得る。動き推定ユニット222は、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1の中での場所を示す参照インデックス、PUの予測ブロックと参照領域に関連付けられた参照位置との間の空間変位を示す動きベクトル、および参照ピクチャがRefPicList0の中にあるかRefPicList1の中にあるかを示す1つまたは複数の予測方向インジケータを出力し得る。動き補償ユニット224は、PUの動きベクトルによって示される参照位置における実際のサンプルまたは補間されたサンプルに少なくとも一部基づいて、PUの予測ブロックを生成し得る。
【０１４７】
PUに対して双方向インター予測を実行するために、動き推定ユニット222は、PUの参照領域についてRefPicList0の中の参照ピクチャを検索することができ、また、PUの別の参照領域についてRefPicList1の中の参照ピクチャを検索することができる。動き推定ユニット222は、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1の中での場所を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニット222は、参照領域と関連付けられた参照位置とPUの予測ブロックとの間の空間変位を示す動きベクトルを生成し得る。PUの動き情報は、PUの参照インデックスおよび動きベクトルを含み得る。動き補償ユニット224は、PUの動きベクトルによって示される参照位置における実際のサンプルまたは補間されたサンプルに少なくとも一部基づいて、PUの予測ブロックを生成し得る。
【０１４８】
イントラ予測処理ユニット226は、イントラ予測をPUに対して実行することによって、PUの予測データを生成し得る。PUの予測データは、PUの予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット226は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【０１４９】
イントラ予測をPUに対して実行するために、イントラ予測処理ユニット226は、複数のイントラ予測モードを使用して、PUの予測ブロックの複数のセットを生成し得る。特定のイントラ予測モードを使用してイントラ予測を実行するとき、イントラ予測処理ユニット226は、近隣ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成し得る。PU、CU、およびCTUに対して左から右、上から下への符号化順序を仮定すると、隣接ブロックは、PUの予測ブロックの上、右上、左上、または左であってよい。イントラ予測処理ユニット226は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUの予測ブロックのサイズに依存し得る。
【０１５０】
予測処理ユニット200は、PUのためにインター予測処理ユニット220によって生成される予測データ、またはPUのためにイントラ予測処理ユニット226によって生成される予測データの中から、CUのPUの予測データを選択し得る。いくつかの例では、予測処理ユニット200は、予測データのセットのレート/歪みの尺度に基づいて、CUのPUの予測データを選択する。選択される予測データの予測ブロックは、選択予測ブロックと本明細書で呼ばれることがある。
【０１５１】
予測処理ユニット200は、ARPを実行してPUの予測ブロックを生成し得る。本開示の例示的な技法によれば、予測処理ユニット200は、現在のピクチャ中の現在のPUの動きベクトルに基づいて、第1の参照ピクチャ中の第1の参照ブロックの位置を決定する。この第1の参照ブロックは、動き補償ユニット224によって決定される予測ブロックであり得る。この例では、予測処理ユニット200は、第2の参照ピクチャ中の第2の参照ブロックの位置を決定する。さらに、この例では、予測処理ユニット200は、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定する。加えて、この例では、予測処理ユニット200は、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定する。この例では、予測処理ユニット200は予測ブロックを決定する。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルから、それぞれの残差予測子サンプルを引いたものに等しい。この例では、それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。
【０１５２】
残差生成ユニット202は、CUのコーディングブロックおよびCUのPUの選択された予測ブロックに基づいて、CUの残差ブロックを生成し得る。たとえば、残差生成ユニット202は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびに、CUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。いくつかの例では、残差生成ユニット202は、残差ブロックの中の各サンプルが、CUのコーディングブロック中のサンプルと、CUのPUの対応する選択された予測ブロック中の対応するサンプルとの差分に等しい値を有するように、CUの残差ブロックを生成し得る。
【０１５３】
変換処理ユニット204は、4分木区分を実行して、CUの残差ブロックをCUのTUの変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックおよび2つの対応するクロマ変換ブロックを有し得る。CUのTUの変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび場所に基づいてもよく、基づかなくてもよい。
【０１５４】
変換処理ユニット204は、1つまたは複数の変換をTUの変換ブロックに適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット204は、TUのブロックを変換するために、様々な変換を適用し得る。たとえば、変換処理ユニット204は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット204は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
【０１５５】
量子化ユニット206は、変換係数ブロック中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部またはすべてのビット深度を低減し得る。たとえば、nビットの変換係数は量子化の間にmビットの変換係数へと丸められることがあり、ここでnはmより大きい。量子化ユニット206は、CUの量子化パラメータ(QP)値に基づいて、CUのTUの変換係数ブロックを量子化し得る。ビデオエンコーダ20は、CUのQP値を調整することによって、CUの変換係数ブロックに適用される量子化の程度を調整し得る。量子化が情報の損失をもたらすことがあり、したがって、量子化された変換係数の精度は元の精度よりも低いことがある。
【０１５６】
逆量子化ユニット208および逆変換処理ユニット210は、それぞれ、逆量子化および逆変換を変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構築し得る。再構築ユニット212は、予測処理ユニット200によって生成された1つまたは複数の予測ブロックからの対応するサンプルに、再構築された残差ブロックを加算して、TUの再構築された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
【０１５７】
フィルタユニット214は、1つまたは複数のデブロッキング動作を実行して、CUのコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット214が1つまたは複数のデブロッキング動作を再構築されたコーディングブロックに対して実行した後、復号ピクチャバッファ216は、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット220は、インター予測を他のピクチャのPUに対して実行するために、再構築されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット226は、CUと同じピクチャの中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ216の中の再構築されたコーディングブロックを使用し得る。
【０１５８】
エントロピー符号化ユニット218は、ビデオエンコーダ20の他の機能コンポーネントからデータを受け取り得る。たとえば、エントロピー符号化ユニット218は、量子化ユニット206から変換係数ブロックを受け取ることができ、予測処理ユニット200からシンタックス要素を受け取ることができる。エントロピー符号化ユニット218は、エントロピー符号化されたデータを生成するために、1つまたは複数のエントロピー符号化動作をデータに対して実行し得る。たとえば、エントロピー符号化ユニット218は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット218によって生成された、エントロピー符号化されたデータを含むビットストリームを出力し得る。
【０１５９】
図9は、本開示の技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図9は説明のために提供され、広く例示されるとともに本開示で説明されるような技法を限定するものではない。説明のために、本開示は、HEVCコーディングの文脈においてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１６０】
図9の例では、ビデオデコーダ30は、コーディングピクチャバッファ250と、エントロピー復号ユニット252と、予測処理ユニット254と、逆量子化ユニット256と、逆変換処理ユニット258と、再構築ユニット260と、フィルタユニット262と、復号ピクチャバッファ264とを含む。予測処理ユニット254は、動き補償ユニット266およびイントラ予測処理ユニット268を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【０１６１】
CPB250は、ビットストリームの符号化されたビデオデータ(たとえば、NALユニット)を受信し記憶する。CPB250に記憶されたビデオデータは、たとえば、チャネル16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。CPB250は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するビデオデータメモリを形成し得る。復号ピクチャバッファ264は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。CPB250および復号ピクチャバッファ264は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPB250および復号ピクチャバッファ264は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPB250は、ビデオデコーダ30の他のコンポーネントとともにオンチップであってよく、またはそれらのコンポーネントに対してオフチップであってよい。
【０１６２】
エントロピー復号ユニット252は、CPB250からNALユニットを受け取り、NALユニットを構文解析してビットストリームからシンタックス要素を取得し得る。エントロピー復号ユニット252は、NALユニットの中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット254、逆量子化ユニット256、逆変換処理ユニット258、再構築ユニット260、およびフィルタユニット262は、ビットストリームから取得されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１６３】
ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット252は、シンタックス要素をコーディングされたスライスNALユニットからエントロピー復号し得る。コーディングされたスライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。
【０１６４】
シンタックス要素をビットストリームから取得することに加えて、ビデオデコーダ30は、CUに対して復号動作を実行し得る。CUに対して復号動作を実行することによって、ビデオデコーダ30は、CUのコーディングブロックを再構築し得る。CUに対して復号動作を実行することの一部として、逆量子化ユニット256は、CUのTUの係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット256は、逆量子化ユニット256が適用するべき量子化の程度と、同様に逆量子化の程度とを決定するために、TUのCUのQP値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスを表すために使用されるビット数と圧縮されたシーケンスを表すために使用されるビット数との比が、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
【０１６５】
逆量子化ユニット256が係数ブロックを逆量子化した後、逆変換処理ユニット258は、TUの残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット258は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【０１６６】
PUがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット268は、イントラ予測を実行して、PUの予測ブロックを生成し得る。たとえば、イントラ予測処理ユニット268は、イントラ予測を実行して、PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックを生成し得る。イントラ予測処理ユニット268は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUの予測ブロックを生成し得る。イントラ予測処理ユニット268は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいて、PUのイントラ予測モードを決定し得る。
【０１６７】
予測処理ユニット254は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構築し得る。さらに、PUがインター予測を使用して符号化される場合、動き補償ユニット254は、エントロピー復号ユニット252によってビットストリームから取得されたシンタックス要素に基づいて、PUの動き情報を決定し得る。動き補償ユニット266は、PUの動き情報に基づいて、PUの1つまたは複数の参照領域を決定し得る。動き補償ユニット266は、PUの1つまたは複数の参照ブロックにおけるサンプルに基づいて、PUの予測ブロックを生成し得る。たとえば、動き補償ユニット266は、PUの1つまたは複数の参照ブロックのサンプルに基づいて、PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックを生成し得る。
【０１６８】
予測処理ユニット254は、ARPを実行してPUの予測ブロックを決定し得る。本開示の例示的な技法によれば、予測処理ユニット254は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中の第1の参照ブロックの位置を決定する。この第1の参照ブロックは、動き補償ユニット266によって生成される予測ブロックであり得る。さらに、この例では、予測処理ユニット254は、第2の参照ピクチャ中の第2の参照ブロックの位置を決定する。この例では、予測処理ユニット254は、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定する。加えて、予測処理ユニット254は、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定する。この例では、予測処理ユニット254は予測ブロックを決定する。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルから、それぞれの残差予測子サンプルを引いたものに等しい。この例では、それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。
【０１６９】
再構築ユニット260は、CUのTUの変換ブロックおよびCUのPUの予測ブロックからの残差値を使用して、CUのコーディングブロックを再構築し得る。たとえば、再構築ユニット260は、CUのTUのルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック、ならびに、CUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックからの残差値を使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構築し得る。たとえば、再構築ユニット260は、予測ブロックの対応するサンプルに変換ブロックのサンプルを加算して、CUのコーディングブロックを再構築し得る。
【０１７０】
フィルタユニット262は、デブロッキング動作を実行して、CUのコーディングブロックと関連付けられるブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのコーディングブロックを復号ピクチャバッファ264に記憶し得る。復号ピクチャバッファ264は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ264中のブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。このようにして、ビデオデコーダ30は、ビットストリームから、係数ブロックの変換係数レベルを取得し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも一部基づいて、コーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
【０１７１】
上で示されたように、本開示のいくつかの例示的な技法では、ビデオコーダは、ARPにおいて参照ブロックを決定するときに、分離可能な双線形補間フィルタを使用するように構成される。以下のテキストは、そのような例示的な技法を実装するための3D-HEVC Draft Text 4(すなわち、文書JCT3V-H1001_v2)に対する例示的な変更を示す。以下のテキストでは、角括弧の中に示されるイタリック体のテキストは、3D-HEVC Draft Text 4から削除されるテキストである。下線付きのテキストは、3D-HEVC Draft Text 4に追加されるテキストである。さらに、以下のテキストにおいて言及される図I-1が、本開示の図10として再現される。図10は、双線形補間における分数サンプルの場所に依存する変数と周囲の整数の場所のサンプルとを示す概念図である。以下のテキストにおいて言及される図x-xが、本開示の図11として再現される。
I.8.5.3.3.7.1 双線形サンプル補間プロセス
8.5.3.3.3.1項における規定に、以下の修正が適用される。
- 8.5.3.3.3.2項において規定されるプロセスのすべての呼出しが、0に等しいchromaFlagを追加の入力として伴うI8.5.3.3.7.2項において規定されるプロセスの呼出しで置き換えられる。
- 8.5.3.3.3.3項において規定されるプロセスのすべての呼出しが、1に等しいchromaFlagを追加の入力として伴うI8.5.3.3.7.2項において規定されるプロセスの呼出しで置き換えられる。
I.8.5.3.3.7.2 双線形ルーマおよびクロマサンプル補間プロセス
このプロセスへの入力は以下の通りである。
- 整数サンプル単位での位置(xInt, yInt)、
- 分数サンプル単位での位置オフセット(xFrac, yFrac)、
- サンプル参照アレイrefPicLX、
- フラグchromaFlag。
このプロセスの出力は、予測されたサンプル値predPartLX[x][y]である。
[[図I-1では、A、B、C、およびDと名付けられた場所は、サンプルの所与の2次元アレイrefPicLXの内部の整数サンプル位置にあるサンプルを表す。
1. 図I-1 双線形補間における分数サンプルの場所に依存する変数と、周囲の整数の場所のサンプルA、B、C、およびD]]
変数picWidthInSamplesはpic_width_in_luma_samplesに等しく設定され、変数picHeightInSamplesはpic_height_in_luma_samplesに等しく設定される。
- chromaFlagが0に等しい場合、xFracは(xFrac << 1)に等しく設定され、yFracは(yFrac << 1)に等しく設定される。
- それ以外の場合(chromaFlagが1に等しい)、picWidthInSamplesは( picWidthInSamples/SubWidthC)に等しく設定され、picHeightInSamplesは( picHeightInSamples/SubHeightC )に等しく設定される。
[[場所A、B、C、およびDの座標は次のように導出される:
xA = Clip3( 0, picWidthInSamples - 1, xInt )                      (I-230)
xB = Clip3( 0, picWidthInSamples - 1, xInt + 1 )                  (I-231)
xC = Clip3( 0, picWidthInSamples - 1, xInt )                      (I-232)
xD = Clip3( 0, picWidthInSamples - 1, xInt + 1 )                  (I-233)
yA = Clip3( 0, picHeightInSamples - 1, yInt )                      (I-234)
yB = Clip3( 0, picHeightInSamples - 1, yInt )                      (I-235)
yC = Clip3( 0, picHeightInSamples - 1, yInt + 1 )                  (I-236)
yD = Clip3( 0, picHeightInSamples - 1, yInt + 1 )                  (I-237)]]
HEVC規格の図8-5では、影付きのブロック内の大文字で名付けられた場所Bi,jは、chromaFlagに依存するルーマ/クロマサンプルの所与の2次元アレイrefPicLXの内部の整数サンプル位置にあるルーマ/クロマサンプルを表す。これらのサンプルは、予測されるルーマ/クロマサンプル値predSampleLX[x, y]を生成するために使用され得る。分数サンプル単位での位置オフセット(xFracC, yFracC)は、整数サンプル位置および分数サンプル位置にある生成されたサンプルのいずれが、予測されるサンプル値predSampleLX[x, y]に割り当てられるかを指定する。この割当ては、xFracCをxFracで置き換え、yFracCをyFracで置き換え、predSampleLXC[xC, yC]をpredSampleLX[x, y]で置き換えた、表8-8において指定されるようなものである。出力は、predSampleLX[x, y]の値である。
所与のアレイrefPicLXの内部の対応するサンプルBi,jの各々の位置(xBi,j, yBi,j)は、次のように導出される。
xBi, j = Clip3(0, picWidthInSamples - 1, xIntC + i)  (x-xxx)
yBi, j = Clip3(0, picHeightInSamples - 1, yIntC + j)  (x-xxx)
変数BitDepthをchromaFlag ? BitDepthC : BitDepthYに等しく設定する。
変数shift1、shift2、およびshift3は次のように導出される。
- 変数shift1はBitDepth - 8に等しく設定され、変数shift2は6に等しく設定され、変数shift3は14- BitDepthに等しく設定される。
整数サンプル位置(xBi,j, yBi,j)におけるクロマサンプルBi,jを与えられると、分数サンプルの場所にあるクロマサンプルab0,0からhh0,0は次のように導出される。
- ab0,0、ac0,0、ad0,0、ae0,0、af0,0、ag0,0、およびah0,0と名付けられたサンプルは、2タップのフィルタを最も近い整数の場所のサンプルに適用することによって、次のように導出される。
[Ed. (CY):  下の式の数字は調整される必要がある。]
ab0,0 = ( 56* B0,0 + 8 * B1,0 ) >> shift1                                  (8-216)
ac0,0 = ( 48 * B0,0 + 16 * B1,0 ) >> shift1                                (8-217)
ad0,0 = ( 40 * B0,0 + 24 * B1,0 ) >> shift1                                (8-218)
ae0,0 = ( 32 * B0,0 + 32 * B1,0 ) >> shift1                                (8-219)
af0,0 = ( 24 * B0,0 + 40 * B1,0 ) >> shift1                                (8-220)
ag0,0 = ( 16 * B0,0 + 48 * B1,0 ) >> shift1                                (8-221)
ah0,0 = ( 8 * B0,0 + 56 * B1,0 ) >> shift1                                (8-222)
- ba0,0、ca0,0、da0,0、ea0,0、fa0,0、ga0,0、およびha0,0と名付けられたサンプルは、2タップのフィルタを最も近い整数の場所のサンプルに適用することによって、次のように導出される。
ba0,0 = ( 56 * B0,0 + 8 * B0,1 ) >> shift1                                (8-223)
ca0,0 = ( 48 * B0,0 + 16 * B0,1 ) >> shift1                                (8-224)
da0,0 = ( 40 * B0,0 + 24 * B0,1 ) >> shift1                                (8-225)
ea0,0 = ( 32 * B0,0 + 32 * B0,1 ) >> shift1                                (8-226)
fa0,0 = ( 24 * B0,0 + 40 * B0,1 ) >> shift1                                (8-227)
ga0,0 = ( 16 * B0,0 + 48 * B0,1 ) >> shift1                                (8-228)
ha0,0 = ( 8 * B0,0 + 56 * B0,1 ) >> shift1                                (8-229)
- b、c、d、e、f、g、およびhで置き換えられたXに対して、bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられたサンプルは、それぞれ、2タップのフィルタをi = -1...2である中間値aX0,iに適用することによって、垂直方向に次のように導出される:
bX0,0 = ( 56 * aX0,0 + 8 * aX0,1 ) >> shift2                                (8-230)
cX0,0 = ( 48 * aX0,0 + 16 * aX0,1 ) >> shift2                                (8-231)
dX0,0 = ( 40 * aX0,0 + 24 * aX0,1 ) >> shift2                                (8-232)
eX0,0 = ( 32 * aX0,0 + 32 * aX0,1 ) >> shift2                                (8-233)
fX0,0 = ( 24 * aX0,0 + 40 * aX0,1 ) >> shift2                                (8-234)
gX0,0 = ( 16 * aX0,0 + 48 * aX0,1 ) >> shift2                                (8-235)
hX0,0 = ( 8 * aX0,0 + 56 * aX0,1 ) >> shift2                                (8-236)
図x-x - 8分の1サンプル補間のための整数サンプル(大文字を伴う影付きのブロック)および分数サンプルの場所(小文字を伴う影付きではないブロック) [Ed. (CY):  この図は現在の3D-HEVC WDのテキストからは除去されてよく、それはそのテキストがHEVCバージョン1の仕様を参照するからである。ここでは明確にする目的で残されている。]
[[predPartLX[ x ][ y ]の値は、以下で規定されるように導出される:
predPartLX[ x ][ y ] = (refPicLX[ xA ][ yA ] * ( 8 - xFrac ) * ( 8 - yFrac ) +
refPicLX[ xB ][ yB ] * ( 8 - yFrac ) * xFrac +
refPicLX[ xC ][ yC ] * ( 8 - xFrac ) * yFrac +
refPicLX[ xD ][ yD ] * xFrac * yFrac ) >> 6  (I-238)]]
注意- chromaFlagが0に等しいとき、2つの変数(すなわち、xFracおよびyFrac)は修正された入力であり、ここでxFrac%2とyFrac%2の両方が0に等しいものとする。
【０１７２】
図11は、8分の1サンプル補間のための例示的な整数サンプルと分数サンプルの場所を示す概念図である。図11の例では、大文字の名前を有する影付きの四角形は、整数ピクセル位置に対応する。上のテキストにおいて示されたように、ビデオコーダは、異なるフィルタの式(すなわち、フィルタの式8-216から8-236)を使用して、異なる整数未満のピクセル位置におけるサンプルに対するフィルタリングされた値を決定する。フィルタの式は、分離可能な双線形補間フィルタを表す。
【０１７３】
この双線形補間フィルタは、主要な整数未満の位置におけるサンプルの値を決定するために第1のフィルタが適用されるという点で、「分離可能」である。主要な整数未満の位置は、整数ピクセル位置から厳密に垂直または水平である。図11では、主要な整数未満の位置は、位置ab0,0、ac0,0、ad0,0、ae0,0、af0,0、ag0,0、ah0,0、ba0,0、ca0,0、da0,0、ea0,0、fa0,0、ga0,0、ha0,0、ab0,1、ac0,1、ad0,1、ae0,1、af0,1、ag0,1、ah0,1、ba1,0、ca1,0、da1,0、ea1,0、fa1,0、およびga1,0である。第2のフィルタは、二次的な整数未満の位置にあるサンプルの値を決定するために、主要な整数未満の位置にあるサンプルに適用される。二次的な整数未満の位置は、整数ピクセル位置から厳密には垂直または水平ではない。図11では、二次的な整数未満の位置は、整数ピクセル位置(すなわち、B0,0、B1,0、B0,1、およびB1,1)と主要な整数未満の位置によって画定されるボックス内の整数未満の位置である。
【０１７４】
この文脈では、「段階」という用語は、整数未満の位置を指す。したがって、各々のそれぞれの主要な整数未満の位置および二次的な整数未満の位置は、それぞれ「段階」である。上で示されたように、各段階のフィルタの係数の合計は64である。フィルタの式8-216から8-236の各々は2つの係数を伴い、これらはaおよびbと定義され得る。フィルタの式8-216から8-236の各々において、係数aおよびbの合計は64に等しい。たとえば、整数未満の位置ab0,0のフィルタの式(すなわち、式8-216)は、2つの係数56および8を含み、合計で64である。
【０１７５】
上のテキストにおいて示されたように、双線形補間プロセスは従来、図10に示されるような、ビデオコーダが場所A、B、C、およびDの座標を導出するために使用した一連の切り取り動作(すなわち、式I-230からI-237)を伴っていた。さらに、本開示の他の箇所で論じられるように、切り取り動作はコーディング処理の複雑さを増大させる。この例示的な実装形態の修正されたテキストは、従来使用されていた分離不可能な補間フィルタの代わりに、式(8-216から8-236)に示されるような分離可能な補間フィルタを使用することによって、切り取り動作の数を減らす。
【０１７６】
本開示の別の例示的な技法によれば、上のテキストは、双線形フィルタに対してより小さい係数を利用することによって、さらに簡略化され得る。この例は、上の例示的な実装形態と比較して、必ずしもビットイグザクトな結果をもたらすとは限らない。上で説明された例示的な実装形態に対するこの簡略化された例を実装する変更が、以下の下線付きのテキストにおいて示される。
...
- 変数shift1はBitDepth - 8に等しく設定され、変数shift2は[[6]] 0に等しく設定され、変数shift3は14- BitDepthに等しく設定される。
整数サンプル位置(xBi,j, yBi,j)におけるクロマサンプルBi,jを与えられると、分数サンプルの場所にあるクロマサンプルab0,0からhh0,0は次のように導出される。
- ab0,0、ac0,0、ad0,0、ae0,0、af0,0、ag0,0、およびah0,0と名付けられたサンプルは、2タップのフィルタを最も近い整数の場所のサンプルに適用することによって、次のように導出される。
ab0,0 = ( 7* B0,0 + 1 * B1,0 ) >> shift1                                (8-216)
ac0,0 = ( 6 * B0,0 + 2 * B1,0 ) >> shift1                                (8-217)
ad0,0 = ( 5 * B0,0 + 3 * B1,0 ) >> shift1                                (8-218)
ae0,0 = ( 4 * B0,0 + 4 * B1,0 ) >> shift1                                (8-219)
af0,0 = ( 3 * B0,0 + 5 * B1,0 ) >> shift1                                (8-220)
ag0,0 = ( 2 * B0,0 + 6 * B1,0 ) >> shift1                                (8-221)
ah0,0 = ( 1 * B0,0 + 7 * B1,0 ) >> shift1                                (8-222)
- ba0,0、ca0,0、da0,0、ea0,0、fa0,0、ga0,0、およびha0,0と名付けられたサンプルは、2タップのフィルタを最も近い整数の場所のサンプルに適用することによって、次のように導出される。
ba0,0 = ( 7 * B0,0 + 1 * B0,1 ) >> shift1                                (8-223)
ca0,0 = ( 6 * B0,0 + 2 * B0,1 ) >> shift1                                (8-224)
da0,0 = ( 5 * B0,0 + 3 * B0,1 ) >> shift1                                (8-225)
ea0,0 = ( 4 * B0,0 + 4 * B0,1 ) >> shift1                                (8-226)
fa0,0 = ( 3 * B0,0 + 5 * B0,1 ) >> shift1                                (8-227)
ga0,0 = ( 2 * B0,0 + 6 * B0,1 ) >> shift1                                (8-228)
ha0,0 = ( 1 * B0,0 + 7 * B0,1 ) >> shift1                                (8-229)
- Xがb、c、d、e、f、g、およびhで置き換えられる、bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられたサンプルは、それぞれ、2タップのフィルタをi = -1...2である中間値aX0,iに適用することによって、垂直方向に次のように導出される:
bX0,0 = ( 7 * aX0,0 + 1 * aX0,1 ) >> shift2                              (8-230)
cX0,0 = ( 6 * aX0,0 + 2 * aX0,1 ) >> shift2                              (8-231)
dX0,0 = ( 5 * aX0,0 + 3 * aX0,1 ) >> shift2                              (8-232)
eX0,0 = ( 4 * aX0,0 + 4 * aX0,1 ) >> shift2                              (8-233)
fX0,0 = ( 3 * aX0,0 + 5 * aX0,1 ) >> shift2                              (8-234)
gX0,0 = ( 2 * aX0,0 + 6 * aX0,1 ) >> shift2                              (8-235)
hX0,0 = ( 1 * aX0,0 + 7 * aX0,1 ) >> shift2                              (8-236)
...
【０１７７】
本開示の他の例示的な技法では、双線形フィルタの分離不可能な実装形態が使用される。双線形フィルタの分離不可能な実装形態が使用される例では、3D-HEVC Draft Text 4のI.8.5.3.3.7.1のような式I-238の以下の修正だけが必要とされる。この例示的な実装形態は、上で説明された2つの例示的な実装形態と比較して、必ずしもビットイグザクトな結果をもたらすとは限らない。
predPartLX[ x ][ y ] = (refPicLX[ xA ][ yA ] * ( 8 - xFrac ) * ( 8 - yFrac ) +
refPicLX[ xB ][ yB ] * ( 8 - yFrac ) * xFrac +
refPicLX[ xC ][ yC ] * ( 8 - xFrac ) * yFrac +
refPicLX[ xD ][ yD ] * xFrac * yFrac ) >> [[6]]shift0
上の式では、shift0はbitDepth-8に等しい。
【０１７８】
上で示されたように、照度補償プロセスは、不必要な切り取り動作を伴うことがある。ICにおける冗長な切り取り動作の問題に対処する一例では、ICにおけるすべての冗長な切り取りがなくされる。この例は、式(1)および(3)の計算(すなわち、それぞれ、PredMcLX[x] = clip3(0, (1 << BitDepth) - 1, (PredMcLX[x] + offset1) >> shift1)およびIcPredLX[x] = clip3(0, (1 << BitDepth) - 1, IcPredMcLX[x]))をスキップすることによって、動き補償されたサンプルと照度補償されたサンプルの両方のための切り取りをなくす。この例では、HEVCバージョン1と同じ方式で、ICが有効にされるとき、双方向予測と単方向予測の両方に対して、1回だけの切り取りが実行される。
【０１７９】
ICにおける冗長な切り取り動作に対処する別の例では、照度補償されたサンプルは、ICが16ビットの記憶要素によって実行され得ることを明確に保証するために、[0, 32767]へと切り取られる。この例は、すなわち式(1)の計算をスキップすることによって、動き補償されるサンプルの切り取りをなくす。加えて、この例は、照度補償されたサンプルの切り取り(すなわち、式(3))を次のように変更する。
IcPredLX[x] = clip3(0, 32767, IcPredLX[x])                                (8)
そのような例では、ICが有効にされるとき、双方向予測および単方向予測に対してそれぞれ、3回の切り取りと2回の切り取りが実行される。これらの例の両方が、非規範的な方式での、ICにおける双予測から単予測への変換をサポートする(2つの動きベクトルおよび関連する参照ピクチャが同じである場合、双予測が単予測として実行され得る)。
【０１８０】
以下のテキストは、ICにおける冗長な切り取り動作を減らし、またはなくすための、3D-HEVC Draft Text 4に対する変更を示す。以下のテキストでは、下線は追加されたテキストを示し、二重の角括弧の中のイタリック体のテキストは、3D-HEVC Draft Text 4から削除されるテキストである。
I8.5.3.3.6 照度補償されたサンプル予測プロセス
このプロセスへの入力は以下の通りである。
- 現在のピクチャの左上のサンプルを基準として、現在のルーマコーディングブロックの左上のサンプルを指定する位置(xCb, yCb)、
- 現在のルーマコーディングブロックのサイズnCbS、
- 現在のコーディングブロックの左上のサンプルを基準として、現在の予測ブロックの左上のサンプルを指定する位置(xBl, yBl)、
- この予測ブロックの幅および高さ、nPbWおよびnPbH、
- 2つの(nPbW)x(nPbH)アレイpredSamplesL0およびpredSamplesL1、
- 2つの予測リスト利用フラグ、predFlagL0およびpredFlagL1、
- 2つの参照インデックス、refIdxL0およびrefIdxL1、
- 2つの動きベクトルmvL0およびmvL1、
- 色成分インデックス、cIdx。
このプロセスの出力は以下の通りである。
- 予測サンプル値の(nPbW)x(nPbH)アレイpredSamples。
[[変数shift1、shift2、offset1、およびoffset2は次のように導出される。
- 変数shift1は14 - bitDepthに等しく設定され、変数shift2は15 - bitDepthに等しく設定される。
- 変数offset1は、次のように導出される。
- shift1が0よりも大きい場合、offset1は1 << (shift1 - 1)に等しく設定される。
- それ以外の場合(shift1が0に等しい)、offset1は0に等しく設定される。
- 変数offset2は1 << ( shift2 - 1 )に等しく設定される。]]
変数bitDepthは、次のように導出される。
- cIdxが0に等しい場合、bitDepthはBitDepthYに等しく設定される。
- それ以外の場合(cIdxが1または2に等しい)、bitDepthはBitDepthCに等しく設定される。
I.8.5.3.3.6.1項において規定されるような照度補償モードの利用可能性およびパラメータの導出プロセスは、ルーマ位置(xCb, yCb)、現在のルーマコーディングブロックのサイズnCbS、予測リスト利用フラグpredFlagL0およびpredFalgL1、参照インデックスrefIdxL0およびrefIdxL1、動きベクトルmvL0およびmvL1、サンプルのビット深度bitDepth、色成分インデックスを入力として指定する変数cIdxとともに呼び出され、出力は、フラグpuIcFlagL0およびpuIcFlagL1、照度補償のための重みを指定する変数icWeightL0およびicWeightL1、照度補償のためのオフセットを指定する変数icOffsetL0およびicOffsetL1である。
predFlagL0およびpredFlagL1の値に応じて、x = 0..( nPbW ) - 1かつy = 0..( nPbH ) - 1である、照度補償された予測サンプルpredSamplesIcLX[ x ][ y ]が次のように導出される。
- 両端を含めて0から1の範囲にあるXに対して、以下のことが適用される。
- predFlagLXが1に等しいとき、以下のことが適用される。
[[clipPredVal =
Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[ x ][ y ] + offset1 ) >> shift1 )  (I-192)]]
predSamplesIcLX[ x ][ y ] [[predValX]] = !puIcFlagLX ? predSamplesLX[ x ][ y ] [[clipPredVal]] :
( [[Clip3( 0, ( 1 << bitDepth ) - 1,]] ( [[clipPredVal]] predSamplesLX[ x ][ y ] * icWeightLX ) >> 5 ) + ( icOffsetLX << ( 14 - bitDepth ) ) [[)]]        (I-193)
- [[predFlagL0が1に等しく、predFlagL1が1に等しい場合、以下のことが適用される:
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predVal0 + predVal1 + offset2 ) >> shift2 )                                                (I-194)
- それ以外の場合(predFlagL0が0に等しい、またはpredFlagL1が0に等しい)、以下のことが適用される:
predSamples[ x ][ y ] = predFlagL0 ? predVal0 : predVal1              (I-195)]]
アレイpredSamplesは、予測ブロック幅nPbW、予測ブロック高さnPbH、サンプルアレイpredSamplesIcL0およびpredSamplesIcL1、ならびに変数predFlagL0、predFlagL1、refIdxL0、refIdxL1、およびcIdxを入力とする、8.5.3.3.4項において規定される加重サンプル予測プロセスを呼び出すことによって導出される。
加重サンプル予測プロセス
全般
このプロセスへの入力は以下の通りである。
- ルーマ予測ブロックの幅および高さを指定する2つの変数nPbWおよびnPbH、
- 2つの(nPbW)x(nPbH)アレイpredSamplesL0およびpredSamplesL1、
- 予測リスト利用フラグ、predFlagL0およびpredFlagL1、
- 参照インデックス、refIdxL0およびrefIdxL1、
- 色成分インデックスを指定する変数cIdx。
このプロセスの出力は、予測サンプル値の(nPbW)x(nPbH)アレイpredSamplesである。
変数bitDepthは、次のように導出される。
- cIdxが0に等しい場合、bitDepthはBitDepthYに等しく設定される。
- それ以外の場合、bitDepthはBitDepthCに等しく設定される。
変数weightedPredFlagは、次のように導出される。
- slice_typeがPに等しい場合、weightedPredFlagはweighted_pred_flagに等しく設定される。
- それ以外の場合(slice_typeがBに等しい)、weightedPredFlagはweighted_bipred_flagに等しく設定される。
以下のことが適用される。
- weightedPredFlagが0に等しい場合、またはic_flagが1に等しい場合、予測サンプルのアレイpredSampleは、ルーマ予測ブロック幅nPbW、ルーマ予測ブロック高さnPbH、2つの(nPbW)x(nPbH)アレイpredSamplesL0およびpredSamplesL1、予測リスト利用フラグpredFlagL0およびpredFlagL1、ならびにビット深度bitDepthを入力とする、8.5.3.3.4.2項において規定されるようなデフォルトの加重サンプル予測プロセスを呼び出すことによって導出される。
- それ以外の場合(weightedPredFlagが1に等しい)、予測サンプルのアレイpredSampleは、ルーマ予測ブロック幅nPbW、ルーマ予測ブロック高さnPbH、2つの(nPbW)x(nPbH)アレイpredSamplesL0およびpredSamplesL1、予測リスト利用フラグpredFlagL0およびpredFlagL1、参照インデックスrefIdxL0およびrefIdxL1、色成分インデックスcIdx、ならびにビット深度bitDepthを入力とする、8.5.3.3.4.3項において規定されるような加重サンプル予測プロセスを呼び出すことによって導出される。
...
【０１８１】
図12は、本開示の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。本開示のフローチャートは、例として与えられる。他の例は、より多数の、少数の、または異なる活動を含んでよく、または、異なる順序の、もしくは並列の活動を含んでよい。図12の例では、ビデオエンコーダ20は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中での第1の参照ブロックの位置を決定する(300)。ビデオエンコーダ20は、分離可能な双線形補間フィルタを第1の参照ピクチャのサンプルに適用して、第1の参照ブロックのサンプルを決定することができる(301)。
【０１８２】
加えて、ビデオエンコーダ20は、第2の参照ピクチャ中での第2の参照ブロックの位置を決定する(302)。さらに、ビデオエンコーダ20は、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定する(304)。ビデオエンコーダ20は、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定する(306)。第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々は異なるピクチャである。
【０１８３】
いくつかの例では、各段階の分離可能な双線形補間フィルタの係数の合計は64に等しい。たとえば、分離可能な双線形補間フィルタの係数(a, b)の合計は(x*8, (8-x)*8)に等しく、xは0から8の範囲にある値に等しい。したがって、いくつかの例では、第1の参照ブロック、第2の参照ブロック、または第3の参照ブロックの各々のそれぞれのサンプルに対して、ビデオデコーダ30は、それぞれのサンプルの場所に基づいて、以下の式の1つまたは複数を適用してそれぞれのサンプルを決定することができる。
ab0,0 = ( 56* B0,0 + 8 * B1,0 ) >> shift1、
ac0,0 = ( 48 * B0,0 + 16 * B1,0 ) >> shift1、
ad0,0 = ( 40* B0,0 + 24 * B1,0 ) >> shift1、
ae0,0 = ( 32* B0,0 + 32 * B1,0 ) >> shift1、
af0,0 = ( 24* B0,0 + 40 * B1,0 ) >> shift1、
ag0,0 = ( 16* B0,0 + 48 * B1,0 ) >> shift1、
ah0,0 = ( 8* B0,0 + 56 * B1,0 ) >> shift1、
ba0,0 = ( 56* B0,0 + 8 * B0,1 ) >> shift1、
ca0,0 = ( 48* B0,0 + 16 * B0,1 ) >> shift1、
da0,0 = ( 40* B0,0 + 24 * B0,1 ) >> shift1、
ea0,0 = ( 32* B0,0 + 32 * B0,1 ) >> shift1、
fa0,0 = ( 24* B0,0 + 40 * B0,1 ) >> shift1、
ga0,0 = ( 16* B0,0 + 48 * B0,1 ) >> shift1、
ha0,0 = ( 8* B0,0 + 56 * B0,1 ) >> shift1、
bX0,0 = ( 56 * aX0,0 + 8 * aX0,1 ) >> shift2、
cX0,0 = ( 48 * aX0,0 + 16 * aX0,1 ) >> shift2、
dX0,0 = ( 40 * aX0,0 + 24 * aX0,1 ) >> shift2、
eX0,0 = ( 32 * aX0,0 + 32 * aX0,1 ) >> shift2、
fX0,0 = ( 24 * aX0,0 + 40 * aX0,1 ) >> shift2、
gX0,0 = ( 16 * aX0,0 + 48 * aX0,1 ) >> shift2、
hX0,0 = ( 8 * aX0,0 + 56 * aX0,1 ) >> shift2、
上の式では、bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられるサンプルについて、Xはそれぞれ、b、c、d、e、f、g、およびhによって置き換えられる。shift1はそれぞれのサンプルのビット深度から8を引いたものに等しく、shift2は6に等しい。図11は、上で示された場所を示す。
【０１８４】
ビデオエンコーダ20が、予測ブロックを決定する(308)。予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルから、それぞれの残差予測子サンプルを引いたものに等しい。それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。たとえば、予測ブロックのそれぞれのサンプルは座標(4, 5)にあってよく、ここでこの座標は予測ブロックの左上のサンプルを基準とするものである。この例では、第1、第2の、および第3の参照ブロックのそれぞれのサンプルは座標(4, 5)にあってよく、ここでこの座標はそれぞれ、第1、第2、および第3の参照ブロックの左上のサンプルを基準とするものである。いくつかの例では、加重係数は0、0.5、または1に等しい。加重係数をまったく適用しない例では、加重係数は1に等しくてよいので、それぞれの残差予測子サンプルはなお、第2の参照ブロックのそれぞれのサンプルと、第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数(すなわち、1)に等しい。
【０１８５】
ビデオエンコーダ20が、残差ブロックを決定する(310)。現在のブロックが単方向である例では、残差ブロックの各々のそれぞれのサンプルは、現在のブロックのそれぞれのサンプルと予測ブロックのそれぞれのサンプルとの差分に等しい。現在のブロックのそれぞれのサンプルおよび予測ブロックのそれぞれのサンプルは、残差ブロックのそれぞれのサンプルの位置に対応する。本開示の他の箇所で説明されたように、現在のブロックが双方向である例では、予測ブロックは第1の予測ブロックであり、ビデオエンコーダ20は、第1の予測ブロック中のサンプル、第2の予測ブロック中のサンプル、および現在のブロック中のサンプルに基づいて、残差ブロックを決定する。
【０１８６】
ビデオエンコーダ20は、ビットストリームに、残差ブロックを表すデータを含める(312)。たとえば、ビデオエンコーダ20は、残差ブロックに基づいて、1つまたは複数の変換係数ブロックを生成し得る。さらに、この例では、ビデオエンコーダ20は、変換係数ブロックを量子化することができ、量子化された変換係数ブロックを表すシンタックス要素を生成することができる。ビデオエンコーダ20は、シンタックス要素をエントロピー符号化し、エントロピー符号化されたシンタックス要素をビットストリームに含めることができる。したがって、この例では、エントロピー符号化されたシンタックス要素は、残差ブロックを表すデータを備える。
【０１８７】
図13は、本開示の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図13の例では、ビデオデコーダ30は、ビデオデータの現在のピクチャ中の現在のブロックの動きベクトルに基づいて、第1の参照ピクチャ中の第1の参照ブロックの位置を決定する(350)。ビデオデコーダ30は、第1の参照ピクチャのサンプルに分離可能な双線形補間フィルタを適用して、第1の参照ブロックのサンプルを決定することができる(351)。
【０１８８】
加えて、ビデオデコーダ30は、第2の参照ピクチャ中の第2の参照ブロックの位置を決定する(352)。ビデオデコーダ30は、分離可能な双線形補間フィルタを第2の参照ピクチャのサンプルに適用して、第2の参照ブロックのサンプルを決定する(354)。さらに、ビデオデコーダ30は、分離可能な双線形補間フィルタを第3の参照ピクチャのサンプルに適用して、第3の参照ブロックのサンプルを決定する(356)。第1の参照ピクチャ、第2の参照ピクチャ、および第3の参照ピクチャの各々は異なるピクチャである。いくつかの例では、ビデオデコーダ30は、分離可能な双線形補間フィルタを適用して、第1の参照ブロックのサンプルを決定する。
【０１８９】
いくつかの例では、各段階の分離可能な双線形補間フィルタの係数の合計は64に等しい。たとえば、分離可能な双線形補間フィルタの係数(a, b)の合計は(x*8, (8-x)*8)に等しく、xは0から8の範囲にある値に等しい。したがって、いくつかの例では、第1の参照ブロック、第2の参照ブロック、または第3の参照ブロックの各々のそれぞれのサンプルに対して、ビデオデコーダ30は、それぞれのサンプルの場所に基づいて、以下の式の1つまたは複数を適用してそれぞれのサンプルを決定することができる。
ab0,0 = ( 56* B0,0 + 8 * B1,0 ) >> shift1、
ac0,0 = ( 48 * B0,0 + 16 * B1,0 ) >> shift1、
ad0,0 = ( 40* B0,0 + 24 * B1,0 ) >> shift1、
ae0,0 = ( 32* B0,0 + 32 * B1,0 ) >> shift1、
af0,0 = ( 24* B0,0 + 40 * B1,0 ) >> shift1、
ag0,0 = ( 16* B0,0 + 48 * B1,0 ) >> shift1、
ah0,0 = ( 8* B0,0 + 56 * B1,0 ) >> shift1、
ba0,0 = ( 56* B0,0 + 8 * B0,1 ) >> shift1、
ca0,0 = ( 48* B0,0 + 16 * B0,1 ) >> shift1、
da0,0 = ( 40* B0,0 + 24 * B0,1 ) >> shift1、
ea0,0 = ( 32* B0,0 + 32 * B0,1 ) >> shift1、
fa0,0 = ( 24* B0,0 + 40 * B0,1 ) >> shift1、
ga0,0 = ( 16* B0,0 + 48 * B0,1 ) >> shift1、
ha0,0 = ( 8* B0,0 + 56 * B0,1 ) >> shift1、
bX0,0 = ( 56 * aX0,0 + 8 * aX0,1 ) >> shift2、
cX0,0 = ( 48 * aX0,0 + 16 * aX0,1 ) >> shift2、
dX0,0 = ( 40 * aX0,0 + 24 * aX0,1 ) >> shift2、
eX0,0 = ( 32 * aX0,0 + 32 * aX0,1 ) >> shift2、
fX0,0 = ( 24 * aX0,0 + 40 * aX0,1 ) >> shift2、
gX0,0 = ( 16 * aX0,0 + 48 * aX0,1 ) >> shift2、
hX0,0 = ( 8 * aX0,0 + 56 * aX0,1 ) >> shift2、
上の式では、bX0,0、cX0,0、dX0,0、eX0,0、fX0,0、gX0,0、およびhX0,0と名付けられるサンプルについて、Xはそれぞれ、b、c、d、e、f、g、およびhによって置き換えられる。shift1はそれぞれのサンプルのビット深度から8を引いたものに等しく、shift2は6に等しい。図11は、上で示された場所を示す。
【０１９０】
ビデオデコーダ30が、予測ブロックを決定する(358)。いくつかの例では、予測ブロックの各々のそれぞれのサンプルは、第1の参照ブロックのそれぞれのサンプルと、それぞれの残差予測子サンプルとを足したものに等しい。そのような例では、それぞれの残差予測子サンプルは、第2の参照ブロックのそれぞれのサンプルと第3の参照ブロックのそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第1の参照ブロックのそれぞれのサンプル、第2の参照ブロックのそれぞれのサンプル、および第3の参照ブロックのそれぞれのサンプルは、予測ブロックのそれぞれのサンプルの位置に対応する第1のブロック、第2のブロック、および第3のブロック内の位置にある。たとえば、予測ブロックのそれぞれのサンプルは座標(4, 5)にあってよく、ここでこの座標は予測ブロックの左上のサンプルを基準とするものである。この例では、第1、第2の、および第3の参照ブロックのそれぞれのサンプルは座標(4, 5)にあってよく、ここでこの座標はそれぞれ、第1、第2、および第3の参照ブロックの左上のサンプルを基準とするものである。
【０１９１】
ビデオデコーダ30は、ビットストリームから、残差ブロックを表すデータを取得する(360)。たとえば、ビデオデコーダ30は、ビットストリーム中のビットシーケンスをエントロピー復号して、量子化された変換係数の値を表すシンタックス要素を復元し得る。この例では、ビデオデコーダ30は、量子化された変換係数を逆量子化し、逆変換を適用して、残差ブロックのサンプルを復元し得る。
【０１９２】
さらに、ビデオデコーダ30は、残差ブロックおよび予測ブロックに少なくとも一部基づいて、現在のピクチャのコーディングブロックを再構築する(362)。たとえば、現在のブロックは、CUのコーディングブロックの一部またはすべてに対応する予測ブロックを有するPUであり得る。この例では、PUが単方向であると仮定すると、ビデオデコーダ30は、予測ブロックの各々のそれぞれのサンプルが残差ブロックのそれぞれのサンプルと予測ブロックのそれぞれのサンプルを足したものに等しくなるように、PUの予測ブロック(すなわち、PUに対応するコーディングブロックの部分)を再構築し得る。残差ブロックのそれぞれのサンプルおよび予測ブロックのそれぞれのサンプルは、PUの予測ブロックのそれぞれのサンプルの位置に対応する、残差ブロックおよび予測ブロック内のそれぞれの位置にある。
【０１９３】
図12および図13の例示的な動作では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)はさらに、双方向にインター予測されたブロックのために同様の動作を実行することができる。したがって、上で言及された予測ブロックは、第1の予測ブロックと見なされ得る。たとえば、ビデオコーダは、現在のブロックの第2の動きベクトルに基づいて、第4の参照ピクチャにおける第4の参照ブロック(たとえば、CurrTRef)の位置を決定することができる。ビデオコーダは、分離可能な双線形補間フィルタを第4の参照ピクチャのサンプルに適用して、第4の参照ブロックのサンプルを決定することができる。加えて、ビデオコーダは、第2の動きベクトルに一部基づいて、第5の参照ピクチャにおける第5の参照ブロック(たとえば、BaseTRef)の位置を決定することができる。さらに、ビデオコーダは、分離可能な双線形補間フィルタを第5の参照ピクチャのサンプルに適用して、第5の参照ブロックのサンプルを決定することができる。ビデオコーダは、分離可能な双線形補間フィルタを第6の参照ピクチャのサンプルに適用して、第6の参照ブロック(たとえば、Base)のサンプルを決定することができる。第4の参照ピクチャ、第5の参照ピクチャ、および第6の参照ピクチャの各々は異なるピクチャである。いくつかの例では、ビデオコーダはまた、分離可能な双線形補間フィルタを適用して、第4の参照ブロック(たとえば、CurrTRef)のサンプルを決定することができる。さらに、ビデオコーダは、第2の予測ブロックを決定することができる。第2の予測ブロックの各々のそれぞれのサンプルは、第4の参照ブロック(たとえば、CurrTRef)のそれぞれのサンプルと、それぞれの残差予測子サンプルとを足したものに等しい。この例では、それぞれの残差予測子サンプルは、第5の参照ブロック(たとえば、BaseTRef)のそれぞれのサンプルと第6の参照ブロック(たとえば、Base)のそれぞれのサンプルとの差分と乗じられた加重係数に等しい。第4の参照ブロックのそれぞれのサンプル、第5の参照ブロックのそれぞれのサンプル、および第6の参照ブロックのそれぞれのサンプルは、第2の予測ブロックのそれぞれのサンプルの位置に対応する第4のブロック、第5のブロック、および第6のブロック内の位置にある。いくつかの例では、第5の参照ブロックおよび第6の参照ブロックの少なくとも1つは第2の参照ブロックまたは第3の参照ブロックと同一である。
【０１９４】
この例では、ビデオコーダがビデオデコーダである場合、ビデオコーダは、残差ブロック、第1の予測ブロック、また第2の予測ブロックにも少なくとも一部基づいて、現在のピクチャのコーディングブロックを再構築し得る。たとえば、ビデオデコーダは、第1の予測ブロックおよび第2の予測ブロックに基づいて、最終予測ブロックを決定し得る。最終予測ブロックの各々のそれぞれのサンプルは、第1の予測ブロックおよび第2の予測ブロックの対応するサンプルの加重平均であり得る。この例では、再構築されたコーディングブロックの各々のそれぞれのサンプルは、残差ブロックおよび最終予測ブロックの中の対応するサンプルの合計に等しくてよい。
【０１９５】
ビデオコーダがビデオエンコーダである場合、ビデオコーダは、第1の予測ブロックおよび第2の予測ブロックに少なくとも一部基づいて、残差ブロックを決定し得る。たとえば、この例では、ビデオコーダは、上で説明された方式で最終予測ブロックを決定し得る。この例では、残差ブロックの各々のそれぞれのサンプルは、現在のブロックのそれぞれのサンプルと最終予測ブロックの対応するそれぞれのサンプルとの差分に等しい。第2のブロックのそれぞれのサンプルおよび第2の予測ブロックのそれぞれのサンプルは、第2の残差ブロックのそれぞれのサンプルの位置に対応する。ビデオエンコーダは、ビットストリームに、残差ブロックを表すデータを含め得る。
【０１９６】
1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法を実装するための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１９７】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるものとする。
【０１９８】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくはディスクリート論理回路のような、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明される技法の実装に適した任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で与えられてよく、あるいは複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装されてよい。
【０１９９】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されたが、それらのコンポーネント、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【０２００】
様々な例が説明されてきた。これらの例および他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０２０１】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
15  ネットワーク要素
16  チャネル
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
40  CU
70  現在のピクチャ
72  参照ピクチャ
74  参照ピクチャ
76  参照ピクチャ
80  現在のブロック
82  対応するブロック
84  第1の動きベクトル
86  第2の動きベクトル
88  参照ピクチャ
90  参照ピクチャ
92  参照ピクチャ
93  参照ブロック
94  参照ピクチャ
95  参照ブロック
100  現在のピクチャ
102  参照ピクチャ
104  参照ピクチャ
106  参照ピクチャ
120  非ベースビューピクチャ
122  現在のPU
124  参照PU
126  ベースビューピクチャ
200  予測処理ユニット
201  ビデオデータメモリ
202  残差生成ユニット
204  変換処理ユニット
206  量子化ユニット
208  逆量子化ユニット
210  逆変換処理ユニット
212  再構築ユニット
214  フィルタユニット
216  復号ピクチャバッファ
218  エントロピー復号ユニット
220  イントラ予測処理ユニット
222  MEユニット
224  MCユニット
226  イントラ予測処理ユニット
250  コーディングピクチャバッファ
252  エントロピー復号ユニット
254  予測処理ユニット
256  逆量子化ユニット
258  逆変換処理ユニット
260  再構築ユニット
262  フィルタユニット
264  復号ピクチャバッファ
266  動き補償ユニット
268  イントラ予測処理ユニット
【図１】
0006495345.tif 000002
【図２】
0006495345.tif 000003
【図３】
0006495345.tif 000004
【図４】
0006495345.tif 000005
【図５】
0006495345.tif 000006
【図６】
0006495345.tif 000007
【図７】
0006495345.tif 000008
【図８】
0006495345.tif 000009
【図９】
0006495345.tif 000010
【図１０】
0006495345.tif 000011
【図１１】
0006495345.tif 000012
【図１２】
0006495345.tif 000013
【図１３】
0006495345.tif 000014