[0001] 本願は、ビデオ符号化および復号に関する。場合によっては、広角イントラ予測(wide angle intra prediction)と共に位置依存イントラ予測組み合わせ(PDPC:position dependent intra prediction combination)を実行するためのシステム、装置、方法、およびコンピュータ可読媒体について説明する。
[0002] デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、広範囲のデバイスに組み込まれることができる。このようなデバイス(device)は、ビデオデータ(video data)が処理され、消費のために出力されることを可能にする。デジタルビデオデータは、消費者およびビデオプロバイダの要求を満たすために大量のデータを含む。例えば、ビデオデータの消費者は、忠実度、解像度、フレームレート、および同様のものが高い最高品質のビデオを望む。結果として、これらの要求を満たすために必要とされる大量のビデオデータが、ビデオデータを処理および記憶する通信ネットワークおよびデバイスに負担をかける。
[0003] デジタルビデオデバイスは、ビデオデータを圧縮するためにビデオコーディング技法を実施することができる。ビデオコーディングは、1つまたは複数のビデオコーディング規格にしたがって実行される。例えば、ビデオコーディング規格は、とりわけ、VVC(versatile video coding)、高効率ビデオコーディング(HEVC:high-efficiency video coding)、アドバンスドビデオコーディング(AVC:advanced video coding)、MPEG−2パート2コーディング(MPEGは動画専門家グループを表す)を含む。ビデオコーディングは、一般に、ビデオ画像またはシーケンスに存在する冗長性を利用する予測方法(例えば、インター予測、イントラ予測、または同様のもの)を利用する。ビデオコーディング技法の重要な目標は、ビデオ品質の劣化を回避または最小限に抑えながら、より低いビットレートを使用する形態にビデオデータを圧縮することである。ますます発展するビデオサービスが利用可能になるにつれて、より良好なコーディング効率を有する符号化技法が必要とされる。
[0004] イントラ予測のための広角モードと共に位置依存イントラ予測組み合わせ(PDPC)を実行するための技法およびシステムについて本明細書で説明する。イントラ予測を使用すると、コーディングデバイス(coding device)(例えば、ビデオエンコーダ(video encoder)および/またはビデオデコーダ(video decoder))は、同じピクチャ内の前に符号化された隣接ブロックからの隣接サンプルに基づいて空間予測技法を使用して予測ブロック(prediction block)を形成することができる。隣接サンプルは、プレーナモード(Planar mode)、DCモード、および/または複数の方向性予測モード(垂直モード、水平モード、および様々な角度モード(angular mode))のうちの1つなどの、使用されている特定のイントラ予測モードに基づいて特定され得る。方向性予測モードは、典型的には、予測サンプル(prediction sample)からの垂直方向に対して約−135度から約45度の間の方向(または角度(angle))を使用する。
[0005] 効率的なビデオエンコーダおよび/またはデコーダでは、イントラ予測のための予測ブロックを指定するために使用されるブロック構造は、正方形に制限されない(ブロックは、幅(w)=高さ(h)のときに正方形である)。矩形予測ブロック(w>hまたはw<h)を使用すると、コンテンツの特性に基づいてコーディング効率を高めることができる。このような矩形ブロックでは、イントラ予測の方向を−135度から45度内に制限することにより、予測サンプル(予測されているサンプル)からより遠くにある参照サンプル(reference sample)が、より近い参照サンプルではなく、イントラ予測のために使用される状況が生じ得る。そのような設計は、コーディング効率に悪影響を及ぼす可能性が高い。より近い参照サンプル(例えば、−135から45度の角度を超える)がイントラ予測のために使用されることができるように、制限の範囲を緩和させることがより有益となる。例えば、予測サンプルからの垂直方向に対して−135度より小さいまたは45度より大きい方向(または角度)を使用する方向性予測モード(「広角モード」と呼ばれる)。
[0006] PDPCが、イントラ予測を使用して決定された予測サンプルを修正する(modify)ために使用されることができる。例えば、PDPCを使用すると、コーディングデバイス(例えば、ビデオエンコーダおよび/またはビデオデコーダ)は、現在ブロック(current block)の上および/または左の1つまたは複数のラインに存在する参照サンプルを決定し得、イントラ予測を使用して決定された予測サンプルを修正するために参照サンプルを使用し得る。次いで、修正された予測サンプル(modified prediction sample)が、現在ブロックを符号化(encode)または復号する(decode)ために使用され得る。
[0007] 本明細書で説明する技法およびシステムは、広角イントラ予測モード(wide angle intra-prediction mode)が使用されるときにPDPCを実行するための方法を提供する。関連情報をシグナリングおよび/または復号するための技法も説明する。場合によっては、符号化の場合、ビデオエンコーダは、ビデオデコーダにシグナリングされる残差値(residual value)を決定するために、修正された予測サンプルを使用し得る。場合によっては、復号の場合、ビデオデコーダは、現在ブロックを再構成する(reconstruct)ために、修正された予測サンプルを、受信した残差値に加算し得る。
[0008] 少なくとも1つの例によれば、ビデオデータを復号する方法が提供される。本方法は、ビデオデータの現在ブロックを取得する(obtain)ことと、現在ブロックのサイズ(size)を決定する(determine)こととを含む。本方法は、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することをさらに含む。本方法は、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することをさらに含む。予測ブロックは、複数の予測サンプルを含む。本方法は、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成する(generate)ように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することをさらに含む。予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本方法は、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成することをさらに含む。
[0009] 別の例では、1つまたは複数の予測ブロックを記憶する(store)ように構成されたメモリ(memory)と、固定機能回路(fixed-function circuitry)またはプログラマブル回路(programmable circuitry)のうちの少なくとも1つを備えるビデオデコーダ(video decoder)とを含む、ビデオデータを復号するためのデバイスが提供される。いくつかの例では、本ビデオデコーダは、ビデオデータの現在ブロックを取得し、現在ブロックのサイズを決定するように構成される。本ビデオデコーダは、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定するようにさらに構成される。ビデオデコーダは、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定するようにさらに構成される。予測ブロックは、複数の予測サンプルを含む。ビデオデコーダは、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正するようにさらに構成される。予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本ビデオデコーダは、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成するようにさらに構成される。
[0010] 別の例では、実行されると、ビデオデータを復号するためのデバイスの1つまたは複数のプロセッサに、ビデオデータの現在ブロックを取得することと、現在ブロックのサイズを決定することと、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することと、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することと、予測ブロックは、複数の予測サンプルを含み、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することと、ここにおいて、予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備え、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成することと、を行わせる命令を記憶した、コンピュータ可読記憶媒体(computer-readable storage medium)である。
[0011] 別の例では、ビデオデータを復号するためのデバイスが提供される。本デバイスは、ビデオデータの現在ブロックを取得するための手段と、現在ブロックのサイズを決定するための手段とを含む。本デバイスは、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定するための手段をさらに含む。本デバイスは、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定するための手段をさらに含む。予測ブロックは、複数の予測サンプルを含む。本デバイスは、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正するための手段をさらに含む。予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本デバイスは、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成するための手段をさらに含む。
[0012] 別の例では、ビデオデータを符号化する(encode)方法が提供される。本方法は、ビデオデータの現在ブロックを取得することと、現在ブロックのサイズを決定することとを含む。本方法は、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することをさらに含む。本方法は、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することをさらに含む。予測ブロックは、複数の予測サンプルを含む。本方法は、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することをさらに含む。予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本方法は、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロック(residual block)についての残差値を決定することと、残差値を示す情報をシグナリングすることとをさらに含む。
[0013] 別の例では、1つまたは複数の予測ブロックを記憶するように構成されたメモリと、固定機能回路またはプログラマブル回路のうちの少なくとも1つを備えるビデオエンコーダとを含む、ビデオデータを符号化するためのデバイスが提供される。いくつかの例では、本ビデオエンコーダは、ビデオデータの現在ブロックを取得し、現在ブロックのサイズを決定するように構成される。本ビデオエンコーダは、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定するようにさらに構成される。本ビデオエンコーダは、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定するようにさらに構成される。予測ブロックは、複数の予測サンプルを含む。ビデオエンコーダは、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正するようにさらに構成される。予測サンプルを修正することは、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本ビデオエンコーダは、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロックについての残差値を決定するようにさらに構成される。本ビデオエンコーダは、残差値を示す情報をシグナリングするようにさらに構成される。
[0014] 別の例では、実行されると、ビデオデータを符号化するためのデバイスの1つまたは複数のプロセッサに、ビデオデータの現在ブロックを取得することと、現在ブロックのサイズを決定することと、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することと、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することと、予測ブロックは、複数の予測サンプルを含み、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することと、ここにおいて、予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備え、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロックについての残差値を決定することと、残差値を示す情報をシグナリングすることと、を行わせる命令を記憶した、コンピュータ可読記憶媒体である。
[0015] 別の例では、ビデオデータを符号化するためのデバイスが提供される。本デバイスは、ビデオデータの現在ブロックを取得するための手段と、現在ブロックのサイズを決定するための手段とを含む。本デバイスは、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定するための手段をさらに含む。本デバイスは、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定するための手段をさらに含む。予測ブロックは、複数の予測サンプルを含む。本デバイスは、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正するための手段をさらに含む。予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを備える。本デバイスは、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロックについての残差値を決定するための手段をさらに含む。本デバイスは、残差値を示す情報をシグナリングするための手段をさらに含む。
[0016] いくつかの態様では、現在ブロックのサイズを決定することは、ブロックの幅(width)とブロックの高さ(height)とが異なるサイズであることを決定することを含む。
[0017] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルは、予測サンプルに対する広角イントラ予測モードの角度を使用して決定される。いくつかの例では、広角イントラ予測モードの角度は、予測サンプルに対して−135度より小さい、または45度より大きい。
[0018] いくつかの態様では、上述の方法、デバイス、およびコンピュータ可読媒体は、予測サンプルのx座標(x-coordinate)およびy座標(y-coordinate)に基づいて1つまたは複数の重み(weight)を決定することを備え得る。そのような態様では、予測サンプルを修正することは、決定された1つまたは複数の参照サンプル、決定された1つまたは複数の重み、および予測サンプルに基づいて修正された予測サンプルを生成するように予測サンプルを修正することを備える。
[0019] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、予測ブロック中の予測サンプルのそれぞれのx座標およびy座標の両方とは異なるx座標およびy座標の両方を有する1つまたは複数の参照サンプルを決定することを備える。
[0020] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行(row)を決定することと、決定された行におけるx座標を決定することと、ここにおいて、決定された行におけるx座標は、予測サンプルのx座標+予測サンプルのy座標+1に等しいものであり、決定された行および決定されたx座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを備える。
[0021] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列(column)を決定することと、決定された列におけるy座標を決定することと、ここにおいて、決定された列におけるy座標は、予測サンプルのy座標+予測サンプルのx座標+1に等しいものであり、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを備える。
[0022] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行を決定することと、決定された行におけるx座標を決定することと、ここにおいて、決定された行におけるx座標は、予測サンプルに対する広角イントラ予測モードの角度に基づいており、決定された行および決定されたx座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを備える。場合によっては、決定された行におけるx座標を決定することは、広角イントラ予測モードの角度の余接(cotangent)または正接(tangent)のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された行におけるx座標を決定することとを備える。
[0023] いくつかの態様では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列を決定することと、決定された列におけるy座標を決定することと、ここにおいて、決定された列におけるy座標は広角イントラ予測モードの角度に基づいており、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを備える。場合によっては、決定された列におけるy座標を決定することは、広角イントラ予測モードの角度の余接または正接のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された列におけるy座標を決定することとを備える。
[0024] いくつかの態様では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて1つまたは複数のサンプルのセットを決定することと、1つまたは複数の参照サンプルを生成するために、1つまたは複数のサンプルのセットを補間する(interpolate)こと、オフセット(offset)を用いて丸める(round)こと、またはオフセットを用いずに丸めることのうちの少なくとも1つを行うこととを備える。
[0025] いくつかの態様では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて特定された現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファ(reference line buffer)に記憶されていないことを決定することと、参照ラインバッファに記憶された最後の参照サンプルに基づいて1つまたは複数の参照サンプルを決定することとを備える。
[0026] いくつかの態様では、予測ブロックの複数の予測サンプルのうちの予測サンプルを修正することは、予測ブロックの第1の予測サンプルを修正することを備える。そのような態様では、1つまたは複数の参照サンプルは、1つまたは複数の参照サンプルの第1のセットを備える。そのような態様では、上述の方法、デバイス、およびコンピュータ可読媒体は、予測ブロックの第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することと、第2の予測サンプルにPDPCを適用しないこと、または参照ラインバッファにおいて利用可能な参照サンプルのみを使用してPDPCを適用することのうちの1つを行うこととを備え得る。
[0027] いくつかの態様では、広角イントラ予測モードは、DCイントラ予測モード(DC intra-prediction mode)、プレーナイントラ予測モード(planar intra-prediction mode)、水平イントラ予測モード(horizontal intra-prediction mode)、または垂直イントラ予測モード(vertical intra-prediction mode)のいずれでもない。
[0028] いくつかの態様では、ビデオデータを復号するためのデバイスは、現在ブロックを表示するように構成されたディスプレイを備える。いくつかの態様では、ビデオを復号するためのデバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス(broadcast receiver device)、またはセットトップボックス(set-top box)のうちの1つまたは複数を備える。
[0029] いくつかの態様では、ビデオデータを符号化するためのデバイスは、現在ブロックを表示するように構成されたディスプレイを備える。いくつかの態様では、ビデオを符号化するためのデバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える。
[0030] この発明の概要は、請求項に記載の主題の重要または本質的な特徴を特定することを意図しておらず、また請求項に記載の主題の範囲を決定するために単独で使用されることも意図していない。主題は、本特許の明細書全体のうちの適切な部分、任意またはすべての図面、および各請求項を参照することによって理解されたい。
[0031] 前述のことは、他の特徴および実施形態とともに、この後に続く明細書、特許請求の範囲、および添付図面を参照するとより明らかとなるであろう。
[0032] 本願の例示的な実施形態が、以下の図を参照して以下で詳細に説明される。
[0033] 本開示の技法を実施するように構成された例示的なビデオ符号化および復号システムを例示するブロック図である。
[0034] いくつかの例による、4×4ブロック中の予測サンプル位置についてのDCモード位置依存(イントラ)予測組み合わせ(PDPC)重みの例を例示する概念図である。
いくつかの例による、4×4ブロック中の予測サンプル位置についてのDCモード位置依存(イントラ)予測組み合わせ(PDPC)重みの例を例示する概念図である。
[0035] いくつかの例による、イントラ予測角度モードの例を例示する概念図である。
[0036] いくつかの例による、対角右上モードの一例を例示する概念図である。
[0037] いくつかの例による、対角左下モードの一例を例示する概念図である。
[0038] いくつかの例による、隣接対角右上モードの一例を例示する概念図である。
[0039] いくつかの例による、隣接対角左下モードの一例を例示する概念図である。
[0040] いくつかの例による、方向性イントラ予測モードの一例を例示する概念図である。
[0041] いくつかの例による、広角モードを含む方向性イントラ予測モードの例を例示する概念図である。
[0042] いくつかの例による、広角モードと広角モードを使用して実行されるPDPCとを使用するイントラ予測モードの一例を例示する概念図である。
[0043] いくつかの例による、広角モードと広角モードを使用して実行されるPDPCとを使用するイントラ予測モードの別の例を例示する概念図である。
[0044] いくつかの例による、ビデオデータを復号するためのプロセスの一例を例示するフロー図である。
[0045] いくつかの例による、ビデオデータを符号化するためのプロセスの一例を例示するフロー図である。
[0046] いくつかの例による、ビデオエンコーダの一例を例示するブロック図である。
[0047] いくつかの例による、ビデオデコーダの一例を例示するブロック図である。
詳細な説明
[0048] 本開示のある特定の態様および実施形態が、以下で提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは、独立して適用され得、それらのうちのいくつかは、組み合わせて適用され得る。以下の説明では、説明を目的として、特定の詳細が本願の実施形態の完全な理解を提供するために記載される。しかしながら、様々な実施形態が、これらの特定の詳細なしで実施され得ることは、明らかであろう。図および説明は、制限的となることを意図していない。
[0049] 次に続く説明は、例示的な実施形態のみを提供するものであり、本開示の範囲、適用可能性、または構成を限定することを意図していない。むしろ、例示的な実施形態の次に続く説明は、例示的な実施形態を実施することを可能にする説明を当業者に提供する。添付された特許請求の範囲に記載の本願の趣旨および範囲から逸脱することなく、要素の機能および配置において様々な変更がなされ得ることを理解されたい。
[0050] ビデオコーディングデバイス(ビデオコーダとも呼ばれる)は、ビデオデータを効率的に符号化および復号するためにビデオ圧縮技法を実施する。ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間予測(例えば、イントラフレーム予測またはイントラ予測)、時間予測(例えば、インターフレーム予測またはインター予測)、(ビデオデータの異なるレイヤにわたる)レイヤ間予測、および/または他の予測技法を含む、異なる予測モードを適用することを含み得る。ビデオエンコーダは、元のビデオシーケンスの各ピクチャを、ビデオブロックまたはコーディングユニットと呼ばれる矩形領域に分割することができる(以下でより詳細に説明する)。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
[0051] ビデオブロックは、1つまたは複数の方法で、より小さいブロックの1つまたは複数のグループに分割され得る。ブロックは、コーディングツリーブロック、予測ブロック、変換ブロック、および/または他の好適なブロックを含むことができる。一般に「ブロック」への言及は、別段に指定されない限り、そのようなビデオブロック(例えば、当業者であれば理解するように、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または他の適切なブロックもしくはサブブロック)を指し得る。さらに、これらのブロックの各々は、本明細書では「ユニット」(例えば、コーディングツリーユニット(CTU)、コーディングユニット、予測ユニット(PU)、変換ユニット(TU)、または同様のもの)とも交換可能に呼ばれ得る。場合によっては、ユニットは、ビットストリーム中で符号化されるコーディング論理ユニットを示し得、ブロックは、プロセスがターゲットとするビデオフレームバッファの一部分を示し得る。
[0052] インター予測モードの場合、ビデオエンコーダは、参照フレームまたは参照ピクチャと呼ばれる、別の時間ロケーションに位置するフレーム(またはピクチャ)中で符号化されているブロックに類似するブロックについて探索することができる。ビデオエンコーダは、その探索を、符号化されることになるブロックからのある特定の空間変位に制限し得る。水平変位成分および垂直変位成分を含む2次元(2D)動きベクトルを使用して、最良のマッチが位置特定され得る。イントラ予測モードの場合、ビデオエンコーダは、同じピクチャ内の前に符号化された隣接ブロックからのデータに基づいて空間予測技法を使用して、予測されたブロックを形成し得る。
[0053] ビデオエンコーダは、予測誤差を決定し得る。例えば、予測は、符号化されているブロックおよび予測されたブロックにおける画素値(またはサンプル値)間の差分として決定され得る。予測誤差は残差と呼ぶこともできる。ビデオエンコーダはまた、予測誤差に変換(例えば、離散コサイン変換(DCT)または他の好適な変換)を適用して、変換係数を生成し得る。変換後、ビデオエンコーダは変換係数を量子化し得る。量子化された変換係数および動きベクトルは、シンタックス要素を使用して表され、制御情報とともに、ビデオシーケンスのコーディングされた表現を形成し得る。いくつかの例では、ビデオエンコーダは、シンタックス要素をエントロピーコーディングし得、それによって、それらを表すために必要とされるビット数をさらに低減する。
[0054] ビデオデコーダは、上述のシンタックス要素および制御情報を使用して、現在フレームを復号するための予測データ(例えば、予測ブロック)を構築し得る。例えば、ビデオデコーダは、予測されたブロックと、圧縮された予測誤差とを加算し得る。ビデオデコーダは、量子化された係数を使用して変換基底関数に重み付けすることによって、圧縮された予測誤差を決定し得る。再構成されたフレームと元のフレームとの間の差分は、再構成誤差と呼ばれる。
[0055] 本開示は、イントラ予測および位置依存(イントラ)予測組み合わせ(PDPC)を使用してビデオデータの1つまたは複数のサンプルおよび/またはブロックをコーディングするためのシステムおよび技法について説明する。例えば、予測サンプルの予測ブロックを生成するために、広角イントラ予測モードが実行され得る。広角イントラ予測モードは、−135度(イントラ予測モード2)から45度(イントラ予測モード66)までの標準角度の外の角度を使用し、予測サンプルからの垂直方向に対して−135度より小さい角度および/または45度より大きい角度を使用することができる。本明細書で提供されるシステムおよび技法は、予測ブロックの予測サンプルを修正するために使用される参照サンプルを決定するために、PDPCの使用をそのような広角イントラ予測モードに拡張する。
[0056] 本明細書で説明するシステムおよび技法は、概してビデオデータのサンプルおよび/またはブロックをコーディングする際の圧縮効率の向上をもたらす。例えば、広角モードを使用するPDPC手法を実行することによって圧縮効率が提供され、これは、ひとつには予測サンプルにより近い参照サンプルがPDPCのために使用されることに起因する。圧縮効率は、一般に、既存のビデオコーディング技法の状態を進歩させる上で望ましい目標である。
[0057] 本開示で使用される場合、ビデオコーディングという用語は、概して、ビデオ符号化またはビデオ復号のいずれかを指す。同様に、ビデオコーダという用語は、概して、ビデオエンコーダ、ビデオデコーダ、または複合ビデオエンコーダ・デコーダ(CODEC)を指し得る。さらに、ビデオ復号に関して本開示で説明されるある特定の技法は、ビデオ符号化にも適用され得、逆もまた同様である。例えば、ビデオエンコーダおよびビデオデコーダは、同じプロセス、または逆のプロセスを実行するように構成され得る。また、ビデオエンコーダは典型的には、ビデオデータをどのように符号化するかを決定するプロセスの一部としてビデオ復号を実行する。よって、その反対のことが記載されていない限り、ビデオ復号に関して説明された技法がビデオ符号化の一部としても実行されることはできない、またはその逆に実行されることはできないと仮定されるべきではない。
[0058] 本開示はまた、現在のレイヤ、現在ブロック、現在ピクチャ、現在のスライス等などの用語を使用し得る。本開示のコンテキストでは、現在のという用語は、例えば、前にまたは既にコーディングされているブロック、ピクチャ、およびスライス、またはまだコーディングされていないブロック、ピクチャ、およびスライスとは対照的に、現在コーディングされているブロック、ピクチャ、スライス等を特定することを意図する。
[0059] 本明細書で説明する技法は、既存のビデオコーデック(例えば、高効率ビデオコーディング(HEVC)、アドバンスドビデオコーディング(AVC)、または他の好適な既存のビデオコーデック)のいずれかに適用することができ、および/または、例えば、VVC(Versatile Video Coding)、JEM(joint exploration model)、ならびに/もしくは開発中あるいは開発されることになる他のビデオコーディング規格など、開発中の任意のビデオコーディング規格ならびに/もしくは将来のビデオコーディング規格のための効率的なコーディングツールであり得る。例示の目的でビデオコーディングを使用する例が本明細書で提供されるが、場合によっては、本明細書で説明する技法は、画像コーダ(例えば、JPEGエンコーダおよび/またはデコーダ、または同様のもの)、ビデオコーダ(例えば、ビデオエンコーダおよび/またはビデオデコーダ)、または他の好適なコーディングデバイスなど、任意のコーディングデバイスを使用して実行され得る。
[0060] 図1は、ビデオデータの1つまたは複数のサンプルおよび/またはブロックをコーディングするために本開示の技法を利用し得る例示的なビデオ符号化および復号システム10を例示するブロック図である。いくつかの例では、ビデオ符号化および復号システム10は、イントラコーディングされた予測サンプルを生成するため、および/またはイントラコーディングされた予測サンプルを修正するために使用されるPDPC参照サンプルを生成するために複数参照ライン(multiple reference lines)が使用されるときに、PDPC手法を使用してビデオデータをコーディングすることができる。MRLモードは、現在ブロックの近傍にある複数参照ラインを使用することを含む。
[0061] 図1に示されるように、システム10は、宛先デバイス14によって後の時間に復号されることになる符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14が、ワイヤレス通信のために装備され得る。よって、ソースデバイス12および宛先デバイス14は、ワイヤレス通信デバイスであり得る。ソースデバイス12は、例示的なビデオ符号化デバイス(すなわち、ビデオデータを符号化するためのデバイス)である。宛先デバイス14は、例示的なビデオ復号デバイス(例えば、ビデオデータを復号するためのデバイスまたは装置)である。
[0062] 図1の例では、ソースデバイス12は、ビデオソース18と、ビデオデータを記憶するように構成された記憶媒体20と、ビデオエンコーダ22と、出力インターフェース24とを含む。宛先デバイス14は、入力インターフェース26と、符号化されたビデオデータを記憶するように構成された記憶媒体28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイス12および宛先デバイス14は、他の構成要素または配列を含む。例えば、ソースデバイス12は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなくむしろ、外部ディスプレイデバイスとのインターフェースをとり得る。
[0063] 図1の例示されているシステム10は、単に1つの例にすぎない。ビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスもしくは装置によって実行され得る。一般に、本開示の技法は、ビデオ符号化デバイスおよびビデオ復号デバイスによって実行されるが、本技法は、典型的に「CODEC」と呼ばれる複合ビデオエンコーダ/デコーダによっても実行され得る。ソースデバイス12および宛先デバイス14は単に、ソースデバイス12が宛先デバイス14への送信のための符号化されたビデオデータを生成する、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイス12および宛先デバイス14は、ソースデバイス12および宛先デバイス14の各々がビデオ符号化および復号構成要素を含むように実質的に対称的な方法で動作する。したがって、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話通信のために、ソースデバイス12と宛先デバイス14との間での一方向または二方向のビデオ送信をサポートし得る。
[0064] ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータを、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを、生成し得る。ソースデバイス12は、ビデオデータを記憶するように構成された1つまたは複数のデータ記憶媒体(例えば、記憶媒体20)を備え得る。本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。いずれの場合も、キャプチャされた、事前キャプチャされた、またはコンピュータ生成されたビデオは、ビデオエンコーダ22によって符号化され得る。出力インターフェース24は、符号化されたビデオ情報をコンピュータ可読媒体16に出力し得る。
[0065] 宛先デバイス14は、コンピュータ可読媒体16を介して、復号されることになる符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に、符号化されたビデオデータを移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。いくつかの例では、コンピュータ可読媒体16は、ソースデバイス12が符号化されたビデオデータをリアルタイムに直接宛先デバイス14に送信することを可能にするための通信媒体を備える。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格にしたがって変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルもしくは1つまたは複数の物理的な伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る他の任意の機器を含み得る。宛先デバイス14は、符号化されたビデオデータおよび復号されたビデオデータを記憶するように構成された1つまたは複数のデータ記憶媒体を備え得る。
[0066] いくつかの例では、符号化されたデータ(例えば、符号化されたビデオデータ)は、出力インターフェース24から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェース26によって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための他の任意の好適なデジタル記憶媒体などの、様々な分散型またはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成される符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、符号化されたビデオデータを宛先デバイス14に送信する能力がある任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準データ接続を通して、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi−Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム等)、またはその両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0067] 本開示の技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTPを介した動的適応型ストリーミング(DASH)を含む適応型ストリーミング技法などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されるデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話通信などのアプリケーションをサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
[0068] コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、符号化されたビデオデータをソースデバイス12から受信し、例えばネットワーク送信を介して、符号化されたビデオデータを宛先デバイス14に提供し得る。同様に、ディスクスタンピング設備などの媒体製造設備のコンピューティングデバイスが、符号化されたビデオデータをソースデバイス12から受信し、符号化されたビデオデータを含むディスクを作成し得る。それゆえ、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0069] 宛先デバイス14の入力インターフェース26は、コンピュータ可読媒体16からの情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニット、例えば、ピクチャグループ(GOP)、の処理および/または特性を記述するシンタックス要素を含む、ビデオエンコーダ22のビデオエンコーダ22によって定義されるシンタックス情報を含み得、これは、ビデオデコーダ30によっても使用される。記憶媒体28は、入力インターフェース26によって受信される、符号化されたビデオデータを記憶し得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示する。ディスプレイデバイス32は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちのいずれかを備え得る。
[0070] ビデオエンコーダ22およびビデオデコーダユニット30は、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダまたはデコーダ回路のいずれかとして各々実装され得る。本技法が部分的にソフトウェアにおいて実施されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し得、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ22およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのうちのいずれも、それぞれのデバイスに複合エンコーダ/デコーダ(CODEC)の一部として統合され得る。
[0071] いくつかの例では、ビデオエンコーダ22およびビデオデコーダ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、およびITU−T H.264(ISO/IEC MPEG−4 AVCとしても既知)を含み、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む。ビデオコーディング規格である高効率ビデオコーディング(HEVC)またはITU−T H.265は、その範囲およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D−HEVC)およびマルチビュー拡張(MV−HEVC)およびスケーラブル拡張(SHVC)を含めて、ITU−T VCEG(Video Coding Experts Group)およびISO/IEC MPEG(Motion Picture Experts Group)のJCT−VC(Joint Collaboration Team on Video Coding)によって開発されている。最近のHEVCドラフト仕様書は、以下HEVC WDと呼ばれ、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。
[0072] ビデオエンコーダ22およびビデオデコーダ30はまた、VVC(Versatile Video Coding)とも呼ばれるITU−T H.266またはJEM(Joint Exploration Test Model)などの、他の所有規格または業界規格にしたがって動作し得る。VVC規格の最近のドラフトは、Bross他,“Versatile Video Coding (Draft 4)”,ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJVET(Joint Video Experts Team),第13回会合:Marrakech,MA,2019年1月9日〜18日,JVET−M1001−v5(以下、「VVCドラフト4」)に記載されている。しかしながら、本開示の技法は、いずれの特定のコーディング規格にも限定されるものではない。
[0073] HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは典型的に、一連のピクチャを含む。ピクチャは、「フレーム」とも呼ばれ得る。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの二次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの二次元アレイである。SCrは、Crクロミナンスサンプルの二次元アレイである。クロミナンスサンプルは、本明細書では、「クロマ」サンプルとも呼ばれ得る。画素は、ピクチャのアレイ中の所与のロケーションについての3つのすべての成分(ルーマサンプルおよびクロマサンプル)を指すことができる。他の例では、ピクチャはモノクロであり得、ルーマサンプルのアレイのみを含み得、この場合、画素およびサンプルという用語は交換可能に使用することができる。
[0074] さらに、HEVCおよび他のビデオコーディング仕様では、ピクチャの符号化された表現を生成するために、ビデオエンコーダ22が、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルの1つのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびこれらコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロのピクチャまたは3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、このコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれ得る。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックに大まかに類似し得る。しかしながら、CTUは、必ずしも、特定のサイズに限定されるわけではなく、1つまたは複数のコーディングユニット(CU)を含み得る。1つのスライスは、ラスター走査順に連続して並べられた整数の数のCTUを含み得る。
[0075] HEVCにしたがって動作する場合、コーディングされたCTUを生成するために、ビデオエンコーダ22は、CTUのコーディングツリーブロックに対して四分木分割(quad-tree partitioning)を再帰的に実行して、コーディングツリーブロックをコーディングブロックへと分割し得、それゆえ、「コーディングツリーユニット」と呼ばれる。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルの1つのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、ならびにそれらコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロのピクチャまたは3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、このコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0076] ビットストリーム内のシンタックスデータは、CTUのためのサイズも定義し得る。1つのスライスは、コーディング順に連続する複数のCTUを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスへと分割され得る。上述のように、各ツリーブロックは、四分木にしたがってCUへと分割され得る。一般に、四分木データ構造は、ルートノードがツリーブロックに対応する状態で1つのCUにつき1つのノードを含む。CUが4つのサブCUへと分割される場合、CUに対応するノードは4つのリーフノードを含み、その各々がサブCUのうちの1つに対応する。
[0077] 四分木データ構造の各ノードは、対応するCUにシンタックスデータを提供し得る。例えば、四分木におけるノードは、ノードに対応するCUがサブCUへと分割されるかどうかを示す、分割フラグ(split flag)を含み得る。CUについてのシンタックス要素は、再帰的に定義され得、CUがサブCUへと分割されるかどうかに依存し得る。CUがこれ以上分割されない場合、それはリーフCUと呼ばれる。CUのブロックがさらに分割される場合、それは一般に、非リーフCUと呼ばれ得る。本開示のいくつかの例では、リーフCUの4つのサブCUは、元のリーフCUの明示的な分割が存在しない場合であっても、リーフCUと呼ばれ得る。例えば、16×16のサイズのCUがこれ以上分割されない場合、16×16のCUは一度も分割されていないが、4つの8×8のサブCUもまたリーフCUと呼ばれ得る。
[0078] CUは、CUがサイズ区別(size distinction)を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。例えば、ツリーブロックは4つの子ノード(サブCUとも呼ばれる)へと分割され得、各子ノードは、次に親ノードになり、別の4つの子ノードへと分割され得る。四分木のリーフノードと呼ばれる、最後の非分割子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連付けられたシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、またコーディングノードの最小サイズも定義し得る。したがって、ビットストリームはまた、最小コーディングユニット(SCU)も定義し得る。本開示は、HEVCのコンテキストではCU、PU、またはTUのいずれかを、もしくは他の規格のコンテキストでは同様のデータ構造(例えば、H.264/AVCにおけるマクロブロックおよびそのサブブロック)を指すように、「ブロック」という用語を使用する。
[0079] CUは、コーディングノードと、このコーディングノードに関連付けられた変換ユニット(TU)および予測ユニット(PU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、いくつかの例では、形状が正方形であり得る。HEVCの例では、CUのサイズは、8×8画素から、最大64×64画素以上のツリーブロックのサイズまでの範囲であり得る。各CUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。CUに関連付けられたシンタックスデータは、例えば、1つまたは複数のPUへのCUの分割を記述し得る。分割モードは、CUが、スキップまたはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、インター予測モード符号化されるかで異なり得る。PUは、形状が非正方形になるように分割され得る。CUに関連付けられたシンタックスデータはまた、例えば、四分木にしたがった1つまたは複数のTUへのCUの分割を記述し得る。TUは、形状が正方形または非正方形(例えば、矩形)であり得る。
[0080] HEVC規格は、TUにしたがった変換を可能にする。TUは、CUごとに異なり得る。TUは典型的には、分割されたLCUのために定義された所与のCU内のPUのサイズに基づいてサイズ変更されるが、これは、常に当てはまるわけではない。TUは典型的には、PUと同じサイズであるかそれよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差四分木」(RQT)と呼ばれることがある四分木構造を使用してより小さいユニットへと再分割され得る。RQTのリーフノードは、TUと呼ばれ得る。TUに関連付けられた画素差分値は、量子化され得る変換係数を生成するために変換され得る。
[0081] リーフCUは、1つまたは複数のPUを含み得る。一般に、PUは、対応するCUのすべてまたは一部分に対応する空間的エリアを表し、PUについての参照サンプルを検索するためのデータを含み得る。さらに、PUは、予測に関連するデータを含む。例えば、PUがイントラモード符号化されるとき、PUについてのデータはRQTに含まれ得、それは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、そのPUについての1つまたは複数の動きベクトルを定義するデータを含み得る。PUについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルについての解像度(例えば、4分の1画素精度または8分の1画素精度)、動きベクトルが指し示す参照ピクチャ、および/または動きベクトルについての参照ピクチャリスト(例えば、リスト0、リスト1、またはリストC)を記述し得る。
[0082] 1つまたは複数のPUを有するリーフCUもまた、1つまたは複数のTUを含み得る。TUは、上述のように、RQT(TU四分木構造とも呼ばれる)を使用して指定され得る。例えば、分割フラグが、リーフCUが4つの変換ユニットへと分割されるかを示し得る。いくつかの例では、各変換ユニットは、さらなるサブTUへとさらに分割され得る。TUがこれ以上分割されないとき、それはリーフTUと呼ばれ得る。一般に、イントラコーディングの場合、リーフCUに属するすべてのリーフTUが、同じイントラ予測モードから生成された残差データを含む。すなわち、リーフCUのすべてのTUにおいて変換されることになる予測値を計算するために、同じイントラ予測モードが一般に適用される。イントラコーディングの場合、ビデオエンコーダ22は、TUに対応するCUの部分と元のブロックとの間の差分として、イントラ予測モードを使用して各リーフTUについての残差値を計算し得る。TUは、必ずしもPUのサイズに限定されるわけではない。よって、TUは、PUより大きい場合も小さい場合もある。イントラコーディングの場合、PUは、同じCUについて対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0083] さらに、リーフCUのTUは、それぞれのRQT構造にも関連付けられ得る。すなわち、リーフCUは、リーフCUがどのようにTUへと分割されるかを示す四分木を含み得る。TU四分木のルートノードは一般に、リーフCUに対応し、CU四分木のルートノードは一般に、ツリーブロック(または、LCU)に対応する。
[0084] 上述のように、ビデオエンコーダ22は、CUのコーディングブロックを1つまたは複数の予測ブロックへと分割し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUのPUは、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、これらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロのピクチャまたは3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、この予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ22は、CUの各PUの予測ブロック(例えば、ルーマ、Cb、およびCr予測ブロック)についての予測ブロック(例えば、ルーマ、Cb、およびCr予測ブロック)を生成し得る。
[0085] ビデオエンコーダ22およびビデオデコーダ30は、VVCにしたがって動作するように構成され得る。VVCによれば、ビデオコーダ(ビデオエンコーダ22など)は、ピクチャを複数のコーディングツリーユニット(CTU)に分割する。ビデオエンコーダ22は、四分木二分木(QTBT)構造またはマルチタイプツリー(MTT)構造などのツリー構造にしたがってCTUを分割し得る。QTBT構造は、HEVCのCU、PU、およびTU間の分離など、複数の分割タイプの概念を取り除く。QTBT構造は、四分木分割にしたがって分割された第1のレベルと、二分木分割にしたがって分割された第2のレベルとの2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。二分木のリーフノードは、コーディングユニット(CU)に対応する。
[0086] MTT分割構造では、ブロックは、四分木(QT)分割、二分木(BT)分割、および1つまたは複数のタイプの三分木(TT)分割を使用して分割され得る。三分木分割は、ブロックが3つのサブブロックに分割される分割である。いくつかの例では、三分木分割は、中心を通って元のブロックを分割することなくブロックを3つのサブブロックに分割する。MTTにおける分割タイプ(例えば、QT、BT、およびTT)は、対称または非対称であり得る。
[0087] いくつかの例では、ビデオエンコーダ22およびビデオデコーダ30は、ルミナンス成分およびクロミナンス成分の各々を表すように単一のQTBTまたはMTT構造を使用し得るが、他の例では、ビデオエンコーダ22およびビデオデコーダ30は、ルミナンス成分のための1つのQTBT/MTT構造と、両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
[0088] VVCでは、ピクチャは、スライス、タイル、およびブリック(brick)に分割され得る。一般に、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域であり得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、ピクチャパラメータセット中のシンタックス要素によって指定された幅とを有するCTUの矩形領域である。タイル行は、ピクチャパラメータセット中のシンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域である。場合によっては、タイルは、複数のブリックに分割され得、その各々は、タイル内に1つまたは複数のCTU行を含むことができる。複数のブリックへと分割されないタイルもブリックと呼ばれる。しかしながら、タイルの真のサブセットであるブリックは、タイルとは呼ばれない。スライスは、単一のNALユニットに排他的に含まれるピクチャの整数の数のブリックであり得る。場合によっては、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続したシーケンスのみのいずれかを含み得る。
[0089] ビデオエンコーダ22およびビデオデコーダ30は、HEVCによる四分木分割、QTBT分割、MTT分割、または他の分割構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、QTBT分割に関して提示される。しかしながら、本開示の技法はまた、四分木分割、または他のタイプの分割も使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0090] ビデオエンコーダ22は、PUについての予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ22が、PUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ22は、PUを含むピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ22が、CUの1つまたは複数のPUについての予測ブロック(例えば、ルーマ、Cb、およびCr予測ブロック)を生成した後、ビデオエンコーダ22は、このCUについての1つまたは複数の残差ブロックを生成し得る。例えば、ビデオエンコーダ22は、CUについてのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ22は、CUについてのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ22はまた、CUについてのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0091] さらに、上述のように、ビデオエンコーダ22は、CUの残差ブロック(例えば、ルーマ、Cb、およびCr残差ブロック)を1つまたは複数の変換ブロック(例えば、ルーマ、Cb、およびCr変換ブロック)へと分解するために四分木分割を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(例えば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造を備え得る。ゆえに、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックを有し得る。TUのルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロのピクチャまたは3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、この変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0092] ビデオエンコーダ22は、TUについての係数ブロックを生成するために、TUの変換ブロックに1つまたは複数の変換を適用し得る。例えば、ビデオエンコーダ22は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の二次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ22は、TUについてのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオエンコーダ22は、TUについてのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
[0093] いくつかの例では、ビデオエンコーダ22は、変換ブロックへの変換の適用を省略する。そのような例では、ビデオエンコーダ22は、変換係数と同じ方法で残差サンプル値を扱い得る。よって、ビデオエンコーダ22が変換の適用を省略する例では、変換係数および係数ブロックの以下の考察が、残差サンプルの変換ブロックに適用可能であり得る。
[0094] 係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ22は、係数ブロックを表すために使用されるデータ量を可能な限り低減するために、係数ブロックを量子化し得、可能性としてさらなる圧縮を提供する。量子化は一般に、ある範囲の値が単一の値に圧縮されるプロセスを指す。例えば、量子化は、値を定数で除算し、次いで最も近い整数に端数を丸めることによって行われ得る。係数ブロックを量子化するために、ビデオエンコーダ22は、係数ブロックの変換係数を量子化し得る。ビデオエンコーダ22が係数ブロックを量子化した後、ビデオエンコーダ22は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオエンコーダ22は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)または他のエントロピーコーディング技法を実行し得る。
[0095] ビデオエンコーダ22は、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含むビットストリームを出力し得る。よって、ビットストリームは、ビデオデータの符号化された表現を備える。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備え得る。NALユニットは、NALユニット中のデータのタイプを示すインジケーションと、必要に応じてエミュレーション防止ビットが組み入れられている生バイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含むバイトとを含むシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み得、RBSPをカプセル化し得る。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化される整数の数のバイトを含むシンタックス構造であり得る。いくつかの例では、RBSPは0ビットを含む。
[0096] ビデオデコーダ30は、ビデオエンコーダ22によって生成されたビットストリームを受信し得る。ビデオデコーダ30は、ビデオデータのピクチャを再構成するために、ビットストリームを復号し得る。ビットストリームを復号することの一部として、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するためにビットストリームをパース(parse)し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、ビデオエンコーダ22によって実行されるプロセスとはほぼ逆であり得る。例えば、ビデオデコーダ30は、現在のCUのPUについての予測ブロックを決定するために、PUの動きベクトルを使用し得る。加えて、ビデオデコーダ30は、現在のCUのTUの係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUの変換ブロックを再構成するために、係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在のCUのPUについての予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構成し得る。ピクチャの各CUについてのコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。
[0097] 本明細書で開示する技法は、AVC、HEVC、およびVVCを含むビデオ規格の一部であるブロックベースのイントラ予測に基づいて構築される。ブロックベースのイントラ予測では、典型的には、隣接の再構成されたブロックからの参照サンプルのラインが、現在ブロック内のサンプルを予測するために使用される。サンプルの1つまたは複数のラインが予測のために使用され得る。参照サンプルは、DCモード、プレーナモード、および角度/方向性モードなどの典型的なイントラ予測モードによって用いられる。
[0098] イントラ予測は、ブロックの空間的に隣接する再構成された画像サンプルを使用して画像ブロック予測を実行する。イントラ予測を用いて、N×M(例えば、4×4)ブロックが、選択された予測方向に沿った上および左の再構成された隣接サンプル(参照サンプル)によって予測される。1つの例として、ブロックは、選択された予測方向に沿った上および左の再構成された隣接サンプル(すなわち、参照サンプル)によって予測される。参照サンプルは、予測されているブロックの外部にある。参照サンプルを用いて、ビデオエンコーダ22は、参照サンプルに基づいて予測サンプルを有する予測ブロックを構築する。
[0099] 概して、イントラ予測技法では、ビデオエンコーダ22は、予測ブロックと現在ブロックとの間の差分を示す残差ブロック(例えば、予測サンプルと現在ブロックのサンプルとの間の差分を示す残差値)を決定し、残差ブロックにおける残差値を示す情報をシグナリングする。ビデオデコーダ30は、同様に参照サンプルを決定し、予測ブロックを構築する。ビデオデコーダ30は、受信した情報に基づいて残差ブロックの残差値を決定し、残差ブロックの残差値を予測ブロックの予測サンプルに加算して現在ブロックを再構成する。
[0100] より詳細に説明するように、本開示で説明する例示的な技法は、予測ブロックの予測サンプルの1つまたは複数(例えば、すべて)を修正する。ビデオエンコーダ22は、修正された予測サンプルに基づいて残差値を決定し得る。ビデオデコーダ30は、残差値を、修正された予測サンプルに加算して現在ブロックを再構成し得る。
[0101] 複数のイントラ予測モード(「イントラモード」とも呼ばれる)がある。いくつかの例では、ルーマブロックのイントラ予測は、プレーナモード、DCモード、および33個の角度モード(例えば、対角イントラ予測モードおよび対角イントラ予測モードに隣接する角度モード)を含む、35個のモードを含む。エンコーダ22および/またはデコーダ30は、予測ブロックと符号化されることになるブロックとの間の残差を最小にする各ブロックのための予測モードを、(例えば、絶対誤差の和(SAE:Sum of Absolute Errors)、差分絶対値和(SAD:Sum of Absolute Differences)、変換差分絶対値和(SATD:Sum of Absolute Transformed Differences)、または他の類似性の尺度(measure of similarity)に基づいて)選択し得る。例えば、SAEは、符号化されることになるブロックにおける各画素(またはサンプル)と、比較のために使用されている予測ブロックにおける対応する画素(またはサンプル)との間の差分絶対値をとることによって計算され得る。画素(またはサンプル)の差分を合計して、差分画像のL1ノルム、2つの画像ブロック間のマンハッタン距離、または他の計算などのブロック類似性のメトリックを生成する。一例としてSAEを使用すると、イントラ予測モードの各々を使用する各予測についてSAEは予測誤差の大きさを示す。実際の現在ブロックに対する最良のマッチを有するイントラ予測モードは、最小のSAEを与えるイントラ予測モードによって与えられる。
[0102] イントラ予測の35個のモードは、以下の表1に示すようにインデックスを付けられる。他の例では、33個の角度モードによってまだ表されていない場合がある予測角度を含む、より多くのイントラモードが定義され得る。他の例では、角度モードに関連付けられた予測角度は、HEVCにおいて使用されるものとは異なり得る。
[0103] N×Nブロックについてプレーナ予測を実行するために、(x,y)に位置する各サンプルpxyについて、予測サンプル値が、(イントラ予測のための参照サンプルとして使用される)4つの特定の再構成された隣接サンプルにバイリニアフィルタを適用することによって計算され得る。4つの参照サンプルは、右上の再構成されたサンプルTRと、左下の再構成されたサンプルBLと、現在サンプルの同じ列(rx,-1)および行(r-1,y)に位置する2つの再構成されたサンプルとを含む。プレーナモードは、以下のように公式化することができる。
pxy=((N−x1)*・L+(N−y1)*・T+x1*・R+y1*・B)/(2*N)
[0104] ここで、x1=x+1、y1=y+1、R=TR、およびB=BLである。
[0105] DCモードの場合、予測ブロックは、再構成された隣接サンプルの平均値で埋められる。一般に、プレーナモードおよびDCモードの両方が、平滑に変化する一定の画像領域をモデル化するために適用される。
[0106] 33個の異なる予測方向を含む、HEVCにおける角度イントラ予測モードの場合、イントラ予測プロセスは、次の通り説明できる。所与の角度イントラ予測モードごとに、それに応じてイントラ予測方向が特定され得、例えば、イントラモード18は純水平予測方向に対応し、イントラモード26は純垂直予測方向に対応する。角度予測モードを図3に示す。いくつかのコーデックでは、異なる数のイントラ予測モードが使用され得る。例えば、プレーナモードおよびDCモードに加えて、65個の角度モードが定義され得、ここで、モード2は−135°の予測方向を示し、モード34は−45°の予測方向を示し、モード66は45°の予測方向を示す。いくつかのコーデック(例えば、VVC)では、−135°を超える(−135°より小さい)および45°を超える(45°より大きい)角度も定義され得、これらは広角イントラモードと呼ばれ得る。本明細書での説明は、HEVCにおけるイントラモード設計(すなわち、35個のモードを有する)に関するが、開示される技法は、広角イントラモードを含むより多くのイントラモードにも適用され得る。
[0107] 予測ブロックの各サンプルの座標(x,y)が、特定のイントラ予測方向(例えば、角度イントラ予測モードのうちの1つ)に沿って投影される(projected)。例えば、特定のイントラ予測方向が与えられると、予測ブロックのサンプルの座標(x,y)は、まず、イントラ予測方向に沿う再構成された隣接サンプルの行/列に投影される。(x,y)が2つの再構成された隣接サンプルLとRとの間の分数位置αに投影される場合、(x,y)についての予測値は、以下のように公式化する2タップバイリニア補間フィルタ(two-tap bi-linear interpolation filter)を使用して計算され得る。
pxy=(1−a)・L+a・R
[0108] 浮動小数点演算を回避するために、HEVCでは、上記の計算は、以下のように整数演算を使用して近似され得る。
pxy=((32−a’)・L+a’・R+16)>>5
[0109] ここで、a’は32*aに等しい整数である。
[0110] いくつかの例では、イントラ予測の前に、隣接参照サンプルは、イントラ参照平滑化またはモード依存イントラ平滑化(MDIS:mode-dependent intra smoothing)として知られている、2タップバイリニアフィルタまたは3タップ(1、2、1)/4フィルタ(3-Tap (1,2,1)/4 filter)を使用してフィルタリングされる。イントラ予測を行うとき、イントラ予測モードインデックス(predModeIntra)およびブロックサイズ(nTbS)が与えられ、参照平滑化プロセスが実行されるかどうか、およびどの平滑化フィルタが使用されるかが決められる。イントラ予測モードインデックスは、イントラ予測モードを示すインデックスである。
[0111] 予測ブロックの予測サンプルは、上記例示的な技法を使用して生成される。予測サンプルが生成された後、予測サンプルの1つまたは複数は、位置依存(イントラ)予測組み合わせ(PDPC)を使用して修正され得る。PDPCの形態は、その全体がすべての目的のために参照によって本明細書に組み込まれる、ITU-T SG16/Q6 Doc. COM16-C1046, “Position Dependent intra Prediction Combination (PDPC)、およびX. Zhao, V. Seregin, A. Said, M. Karczewicz, “EE1 related: Simplification and extension of PDPC”, 8th JVET Meeting, Macau, Oct. 2018, JVET-H0057 に説明されている。この文献には、以下に要約するように、シグナリングすることなくプレーナモード、DCモード、水平モード、および垂直モードに適用されるPDPCの導入が開示されている。
[0112] 例えば、(x,y)に位置する予測サンプルpred(x,y)が、イントラ予測モード(例えば、プレーナ、DC、または角度)を用いて予測され、その値は、以下のように単一の参照サンプルラインについてのPDPC式を使用して修正される。
pred(x,y)=(wL×R-1,y+wT×Rx,-1−wTL×R-1,-1+(64−wL−wT+wTL)×pred’(x,y)+32)>>6 (式1)
[0113] 式1において、pred’(x,y)は、予測サンプルを生成するために上述のイントラ予測モードを使用して決定された予測サンプルの値であり、pred(x,y)は、pred’(x,y)の修正された値である。項Rx,-1およびR-1,yは、それぞれ、現在サンプル(x,y)の上および左に位置する参照サンプル(現在ブロックの外部の隣接する上および左のサンプル)を表し、項R-1,-1は、現在ブロックの左上角(top-left corner)に位置する参照サンプル(現在ブロックの外部の隣接する左上角)を表す。例えば、図2A(後述)に示すように、ブロック200Aの左上角に位置する第1の予測サンプル202から見ると、Rx,-1は、修正されている予測サンプル(値pred’(x,y)に対応)のx座標と同じx座標を有する現在ブロックの1行上のサンプルを表し、R-1,yは、修正されている予測サンプルのy座標と同じy座標を有する現在ブロックの1列左(または「左側」)のサンプルを表し、R-1,-1は、現在ブロックの1列左かつ現在ブロックの1行上のサンプルを表す。
[0114] (イントラ予測モードを使用して生成された)予測サンプルを修正するために使用されているサンプル(例えば、PDPCのために使用される参照サンプル)は、ピクチャ中のサンプル(例えば、ルーマサンプルおよびクロマサンプル)であり、(可能ではあるが)必ずしも他の予測サンプルではない。例えば、N×Mのサイズを有するイントラ予測されている現在ブロックについて、ビデオエンコーダ22および/またはビデオデコーダ30は、N×Mサイズの予測ブロックを生成し得る。予測サンプルを修正するために使用される参照サンプルは、(現在ブロックを含む)現在ピクチャの参照サンプルであり、現在ブロックの外部にある(現在ブロックの1つまたは複数の隣接ブロック中にある)。
[0115] 現在ブロックの外部のサンプルを特定するための座標系は、現在ブロックに対するものである。例えば、現在ブロックの左上角に位置するサンプルは、(0,0)の座標を有する。ビデオエンコーダ22は、予測ブロックの左上角に位置する(例えば、座標(0,0)を有する)予測サンプルと、座標(0,0)を有する現在ブロック中のサンプルとの間の残差を決定し得る。現在ブロック中の(0,0)に位置するサンプルを再構成するために、ビデオデコーダ30は、予測ブロック中の(0,0)に位置する予測サンプルを、(0,0)に位置するサンプルに対応する残差値に加算し得る。したがって、現在ブロック中のサンプルごとに、(例えば、同じ座標を有する)予測ブロック中に対応するサンプルがある。
[0116] したがって、Rx,-1は、y座標が−1であることを意味し、したがって、現在ブロックの上にある行にあるサンプルを指す。x座標は、修正されている予測サンプルのx座標と同じであり得る。R-1,yの場合、x座標は−1であり、したがって、現在ブロックの左にある列を指す。y座標は、修正されている予測サンプルのy座標と同じであり得る。
[0117] (0,0)座標がピクチャの右上サンプルを指す座標系など、異なる座標系を使用することも可能であり得る。例示的な技法を、(0,0)座標がブロックの左上サンプルを指す座標系に関して説明する。
[0118] DCモードの場合、重みは、幅および高さの寸法を有するブロックについて以下のように計算する。
wT=32>>((y<<1)>>shift)、wL=32>>((x<<1)>>shift)、wTL=(wL>>4)+(wT>>4) (式2)
[0119] 式2において、shift=(log2(width)+log2(height)+2)>>2である。プレーナモードの場合はwTL=0であり、水平モードの場合はwL=0およびwTL=wTであり、垂直モードの場合はwT=0およびwTL=wLである。場合によっては、PDPC重みは、加算およびシフトのみを用いて計算することができる。pred(x,y)の値は、式1を使用して単一のステップで算出することができる。
[0120] 図2Aは、1つの4×4ブロック200A内の(サンプル位置(0,0)における)第1の予測サンプル202についてのDCモードPDPC重み(wL、wT、wTL)を例示する図である。図示するように、R-1,yPDPC参照サンプルについての重みwLは32であり、Rx,-1PDPC参照サンプルについての重みwTは32であり、R-1,-1PDPC参照サンプルについての重みwTLは−4である。重み(wL、wT、wTL)は、上式2にしたがって決定することができる。式2に示すように、重みは、現在ブロック中の予測サンプルpred(x,y)の位置(x,y)に基づいて決定される。
[0121] 図2Bは、1つの4×4ブロック内のサンプル位置(1,0)についてのDCモードPDPC重み(wL、wT、wTL)を例示する。図示するように、R-1,yPDPC参照サンプルについての重みwLは8であり、Rx,-1PDPC参照サンプルについての重みwTは32であり、R-1,-1PDPC参照サンプルについての重みwTLは−2である。重み(wL、wT、wTL)は、上式2にしたがって決定することができる。
[0122] 場合によっては、PDPCがDCイントラモード、プレーナイントラモード、水平イントラモード、および垂直イントラモードに適用される場合、DCモード境界フィルタまたは水平/垂直モードエッジフィルタなどの追加の境界フィルタが適用されない。場合によっては、式1は、追加の参照サンプルラインを含むように一般化され得る(例えば、現在ブロックの1行上または1行左のサンプルに限定されない)。この場合、複数の参照サンプルが、Rx,-1、R-1,y、R-1,-1の近傍において利用可能であり、各々には、例えばトレーニングによって最適化することができる重みが割り当てられ得る。
[0123] 場合によっては、PDPCは、概して角度モードに(例えば、対角イントラモードに、および対角モードに隣接する角度モードに)拡張され得る。意図される対角イントラモードは、左下および右上の方向にしたがって予測するモード、ならびにいくつかの隣接角度モード(adjacent angular mode)、例えば、対角左下モード(bottom-left diagonal mode)と垂直モード(vertical mode)との間のN個の隣接モード(adjacent mode)、および対角右上モード(top-right diagonal mode)と水平モード(horizontal mode)との間のN個またはM個の隣接モードである。図3は、本明細書に開示される角度モードの特定を例示する。一般に、隣接モードは、利用可能な角度モードの選択されたサブセットであり得る。角度モード間の間隔は、例えば、不均一であり得、いくつかの角度モードは、例えば、スキップされ得る。
[0124] いくつかの例では、ビデオエンコーダ22およびビデオデコーダ30は、DCモード、プレーナモード、垂直モード、または水平モードを除く角度モードで現在ブロックがイントラ予測されるPDPCを実行するように構成され得る。しかしながら、PDPCを角度イントラ予測モードに拡張する際に技術的な複雑さがあり得る。例えば、参照サンプルは、現在ブロックの外部に位置するが、修正されている予測サンプルと同じx座標および/またはy座標を有する必要はない。したがって、ビデオコーディング効率が得られるように予測サンプルを修正するためにどの参照サンプルを使用すべきかが不確かであり得る。
[0125] 例えば、残差値をシグナリングするのに必要な情報を低減した場合、帯域幅効率が増加する。したがって、(イントラ予測を使用して決定された)予測ブロックを修正するために使用されるPDPC参照サンプルは、修正された予測ブロックから生成される残差値が、他の技法と比較して、シグナリングされるのにより少ない量の情報を必要とするようにするべきである。しかしながら、どの参照サンプルを使用すべきかの決定が過度に集中的である場合、ビデオデコーダ30が現在ブロックを再構成するのに要する時間に待ち時間があり得る。
[0126] 図4A〜図4Dは、対角イントラモードおよび隣接角度イントラモードに拡張されたPDPCによって使用されるサンプルの定義を例示する。図4A〜図4D中の破線矢印は、(例えば、図3からの)予測方向を示し、イントラ予測された予測サンプルpred(x’,y’)のために使用される参照サンプルから生じている。図4Aは、PDPCを対角右上モードに拡張するためのPDPC参照サンプルR(x,-1)、R(-1,y)、およびR(-1,-1)の定義を例示する。予測サンプルpred(x’,y’)は、予測ブロック内の(x’,y’)に位置する。PDPC参照サンプルR(x,-1)の座標xは、x=x’+y’+1によって与えられ、PDPC参照サンプルR(-1,y)の座標yは、同様に、y=x’+y’+1によって与えられる。対角右上モードのためのPDPC重みは、例えば、wT=16>>((y’<<1)>>shift)、wL=16>>((x’<<1)>>shift)、wTL=0である。
[0127] 図4Bは、PDPCを対角左下モードに拡張するための参照サンプルR(x,-1)、R(-1,y)、およびR(-1,-1)の定義を例示する。PDPC参照サンプルR(x,-1)の座標xは、x=x’+y’+1によって与えられ、PDPC参照サンプルR(-1,y)の座標yは、y=x’+y’+1によって与えられる。対角右上モードのためのPDPC重みは、例えば、wT=16>>((y’<<1)>>shift)、wL=16>>((x’<<1)>>shift)、wTL=0である。
[0128] 図4Aおよび図4Bでは、ビデオエンコーダ22およびビデオデコーダ30の各々は、現在ブロックの上にある行(例えば、すぐ上にあるが、本技法はそのように限定されない)を決定し、決定された行におけるx座標を決定し得る。決定された行におけるx座標は、予測サンプルのx座標+予測サンプルのy座標+1に等しい。ビデオエンコーダ22およびビデオデコーダ30は、決定された行および決定されたx座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定し得る。
[0129] 同様に、図4Aおよび図4Bでは、ビデオエンコーダ22およびビデオデコーダ30は、現在ブロックの左にある列(例えば、すぐ左にあるが、本技法はそのように限定されない)を決定し得、決定された列におけるy座標を決定し得る。決定された列におけるy座標は、予測サンプルのx座標+予測サンプルのy座標+1に等しい。ビデオエンコーダ22およびビデオデコーダ30は、決定された列および決定されたy座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定し得る。
[0130] 決定されたx座標およびy座標に基づいて、ビデオエンコーダ22およびビデオデコーダ30は、参照サンプルを(例えば、決定された行および決定されたx座標に基づいて第1の参照サンプルを、および決定された列および決定されたy座標に基づいて第2の参照サンプルを)決定し得る。ビデオエンコーダ22およびビデオデコーダ30はまた、対角モード(例えば、2つの例として、対角右上モードおよび対角左下モード)のための上記例示的な技法にしたがって重みを決定し得る。次いで、(1つの非限定的な例として)式1に基づいて、ビデオエンコーダ22およびビデオデコーダ30は、修正された予測サンプル(例えば、pred(x,y))を決定し得る。
[0131] 隣接対角右上モードの場合が図4Cに例示されている。一般に、図3で定義する角度αについて、PDPC参照サンプルR(-1,y)のy座標は、y=y’+tan(α)×(x’+1)のように決定され、PDPC参照サンプルR(x,-1)のx座標は、x=x’+cotan(α)×(y’+1)によって与えられ、tan(α)およびcotan(α)は、それぞれ角度αの正接および余接である。隣接対角右上モードのためのPDPC重みは、例えば、wT=32>>((y’<<1)>>shift)、wL=32>>((x’<<1)>>shift)、wTL=0、またはwT=32>>((y’<<1)>>shift)、wL=0、wTL=0である。
[0132] 同様に、隣接対角左下モードの場合が図4Dに例示されている。一般に、図3で定義する角度βについて、PDPC参照サンプルR(x,-1)のx座標は、x=x’+tan(β)×(y’+1)のように決定され、PDPC参照サンプルR(-1,y)のy座標は、y=y’+cotan(β)×(x’+1)によって与えられ、tan(β)およびcotan(β)は、それぞれ角度βの正接および余接である。隣接対角左下モードのためのPDPC重みは、例えば、wL=32>>((x’<<1)>>shift)、wT=32>>((y’<<1)>>shift)、wTL=0、またはwL=32>>((x’<<1)>>shift)、wT=0、wTL=0である。
[0133] 図4Cおよび図4Dでは、ビデオエンコーダ22およびビデオデコーダ30の各々は、現在ブロックの上にある行を(例えば、すぐ上にあるが、本技法はそのように限定されない)決定し得、決定された行におけるx座標を決定し得る。決定された行におけるx座標は、角度イントラ予測モードの角度に基づく。ビデオエンコーダ22およびビデオデコーダ30は、決定された行および決定されたx座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定し得る。
[0134] 決定された行におけるx座標を決定するために、ビデオエンコーダ22およびビデオデコーダ30は、角度イントラ予測モードの角度の余接(例えば、隣接対角右上モードの場合)または正接(例えば、隣接対角左下モードの場合)のうちの1つを決定し得る。ビデオエンコーダ22およびビデオデコーダ30は、角度イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された行におけるx座標を決定し得る。例えば、隣接対角右上の角度イントラ予測モードの場合、決定された行におけるx座標は、x’+cotan(α)×(y’+1)に等しく、隣接対角左下モードの場合、決定された行におけるx座標は、x’+tan(β)×(y’+1)に等しく、ここで、x’およびy’は、修正されている予測サンプルのx座標およびy座標である。
[0135] 同様に、図4Cおよび図4Dでは、ビデオエンコーダ22およびビデオデコーダ30の各々は、現在ブロックの左にある列(例えば、すぐ左にあるが、本技法はそのように限定されない)を決定し得、決定された列におけるy座標を決定し得る。決定された列におけるy座標は、角度イントラ予測モードの角度に基づく。ビデオエンコーダ22およびビデオデコーダ30は、決定された列および決定されたy座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定し得る。
[0136] 決定された列におけるy座標を決定するために、ビデオエンコーダ22およびビデオデコーダ30は、角度イントラ予測モードの角度の余接(例えば、隣接対角左下モードの場合)または正接(例えば、隣接対角右上モードの場合)のうちの1つを決定し得る。ビデオエンコーダ22およびビデオデコーダ30は、角度イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された列におけるy座標を決定し得る。例えば、隣接対角右上の角度イントラ予測モードの場合、決定された列におけるy座標は、y’+tan(α)×(x’+1)に等しく、隣接対角左下モードの場合、決定された列におけるy座標は、y’+cotan(β)×(x’+1)に等しく、ここで、x’およびy’は、修正されている予測サンプルのx座標およびy座標である。
[0137] 決定されたx座標およびy座標に基づいて、ビデオエンコーダ22およびビデオデコーダ30は、参照サンプルを(例えば、決定された行および決定されたx座標に基づいて第1の参照サンプルを、および決定された列および決定されたy座標に基づいて第2の参照サンプルを)決定し得る。ビデオエンコーダ22およびビデオデコーダ30はまた、隣接対角モード(例えば、2つの例として、隣接対角右上モードおよび隣接対角左下モード)のための上記例示的な技法にしたがって重みを決定し得る。次いで、(1つの非限定的な例として)式1に基づいて、ビデオエンコーダ22およびビデオデコーダ30は、修正された予測サンプル(例えば、pred(x,y))を決定し得る。
[0138] 上述のように、PDPCは、複雑さへの影響を最小にしたまま、角度イントラ予測モードに適用され得る。実際の実施では、角度の正接および余接の値は、それらがオンザフライで(例えば、実行時に)算出されないようにテーブルに記憶され得る。以下は、合計129個の角度モードのための例示的なテーブルである。
[0139] TanAngTable[33]={0、1、2、3、4、5、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、49、52、55、58、61、64}
[0140] CotanAngTable[33]={0、65536、32768、21845、16384、13107、10923、8192、6554、5461、4681、4096、3641、3277、2979、2731、2521、2341、2185、2048、1928、1820、1725、1638、1560、1489、1425、1337、1260、1192、1130、1074、1024}
[0141] 正接テーブル中の値は、イントラ予測モードを使用して見つけられたサンプルのロケーションを示す。余接テーブル中の値は、正接テーブル中の対応する値によるPDPC参照サンプルのロケーションを示す。例えば、正接テーブル中の第1のエントリ(イントラ予測サンプルのロケーションを示す)は、余接テーブル中の第1のエントリ(PDPC参照サンプルのロケーションを示す)に対応する。
[0142] さらに、これらテーブルは、ブロックの角度イントラ予測によってすでに用いられている場合があり、対角モードおよび隣接モード(例えば、角度イントラ予測モード)へのPDPC拡張のために再使用され得る。したがって、PDPCの実施時に追加のテーブルが必要でなくてよい。いくつかの例では、PDPCをさらに最適化するために、例えばトレーニングによってカスタムテーブルが生成され得る。
[0143] いくつかのビデオコーデックでは、イントラ予測のための予測ブロックを指定するために使用されるブロック構造は、正方形(幅(w)=高さ(h))に制限されない。矩形予測ブロック(w>hまたはw<h)は、コンテンツの特性に基づいてコーディング効率を高めることができる。そのような矩形ブロックでは、イントラ予測の方向を図3に例示する角度内(予測サンプルからの垂直方向に対して現在ブロックの−135度から45度の間)になるように制限することにより、イントラ予測のためにより近い参照サンプルではなくより遠い参照サンプルが使用される状況が生じ得る。
[0144] 図5は、方向性イントラ予測モードの一例を例示する図であり、ここでは、より近い参照サンプルではなく、より遠い参照サンプルが、現在ピクチャ502の現在ブロック503のイントラ予測のために使用される。現在ブロック503は、サンプルの4×8矩形ブロックである。参照サンプル506および参照サンプル508も示されている。参照サンプル506は、現在ピクチャ502の上の1つまたは複数のブロックの一部であり得、参照サンプル508は、現在ピクチャ502の左の1つまたは複数のブロックの一部であり得る。
[0145] イントラ予測が、予測サンプル504(pred(x’,y’)と示す)を決定するために実行される。(図3に示すように)イントラ予測方向を−135度から45度までの範囲に制限することにより、より近い参照サンプルが使用されず、より遠い参照サンプルが使用され得る。例えば、対角左下モードが予測サンプル504を予測するために使用され得、対角左下モードの角度または方向は矢印512によって例示されている。対角右上モードも使用され得、このモードの角度または方向は矢印510によって例示されている。対角左下モードは、予測サンプル504からの垂直方向に対して−135度の角度であり得、これは、−135度から45度までの範囲で使用され得る最も低い左下の角度である。
[0146] 破線矢印514は、典型的なイントラ予測モード(図3に示すもの)で使用される45度の角度よりも大きい角度に対応する。図5に示すように、対角左下モデルを使用して決定された参照サンプル518(矢印512によって例示)は、より広角のイントラ予測モードを使用して決定することができる参照サンプル516(破線矢印514によって例示)よりも予測サンプル504から遠い。このような設計は、コーディング効率に影響を及ぼす可能性が高い。より近い参照サンプル(例えば、−135から45度の角度を超える)が予測のために使用されることができるように、制限の範囲を緩和することがより有益となる。
[0147] 図6は、−135度(イントラ予測モード2)から45度(イントラ予測モード66)の角度を超えて延びるイントラ予測モードを含む、方向性イントラ予測モードの例を例示する図である。例えば、破線矢印で例示された方向性イントラ予測モード67から80および−1から−14は、広角イントラ予測モードと呼ぶことができる。図6中の矢印は、予測のために使用される対応する参照サンプルを指しており、予測方向を示すものではないことに留意されたい。予測方向は、矢印が指すところの反対である。例えば、イントラ予測モード68の予測方向は、(モード68で使用される参照サンプルのおおよその位置である)図6の番号68からブロックの中央までである。上述のように、PDPCは、イントラ予測を使用して決定された予測サンプルを修正するために使用されることができる。例えば、PDPCを使用すると、ビデオエンコーダ22および/またはビデオデコーダ30は、現在ブロックの上および/または左の1つまたは複数のライン中に存在する参照サンプルを決定し得、イントラ予測を使用して決定された予測サンプルを修正するために参照サンプルを使用し得る。修正された予測サンプルは次いで、現在ブロックを符号化または復号するために使用され得る。しかしながら、広角イントラ予測モードの1つまたは複数が使用されるとき、現在のビデオコーディング規格からはPDPCがどのように適用されるべきかは明らかでない。
[0148] −135度(モード2)から45度(モード66)までの標準角度の外の角度を使用する広角イントラ予測モードにPDPCの使用を拡張するためのシステムおよび技法を本明細書で説明する。本システムおよび技法は、広角イントラ予測モードと共に使用されるPDPCのための技法など、ビデオコーディング技法への実用的な適用を提供する。例えば、例示的な技法は、広角イントラ予測モードと共にPDPCを使用するための技術的解決法を提供する。ビデオエンコーダ22およびビデオデコーダ30が角度イントラ予測モードと共にPDPCを実行し得る例示的な方法を、以下でより詳細に説明する。
[0149] 1つの例として、ビデオエンコーダ22は、ビデオデータの現在ブロックを取得し、現在ブロックのサイズを決定するように構成され得る。例えば、現在ブロックの幅および高さが、現在ブロックが矩形であるかどうかを決定するために分析され得る。場合によっては、ビデオエンコーダ22は、現在ブロックが垂直配向のブロック(高さ>幅)であるか、水平配向のブロック(幅>高さ)であるかを決定し得る。ビデオエンコーダ22は、現在ブロックのサイズに基づいて(例えば、ブロックが矩形であることに基づいて)、広角イントラ予測モードが現在ブロックのために使用されることを決定し得る。広角イントラ予測モードは、DCイントラ予測モードでも、プレーナイントラ予測モードでも、水平イントラ予測モードでも、垂直イントラ予測モードでもなく、予測ブロックの各予測サンプルからの垂直方向に対して−135度より小さいまたは45度より大きい方向を有する。
[0150] 場合によっては、現在ブロックの左下から現在ブロックの左上に及ぶ対角線の角度が、イントラ予測モードの選択に対する制限として使用され得、ここで、現在ブロックの(ブロックの左下角から右上角への)対角線を超えない角度を有する任意のイントラ予測モードが選択され得る。イントラ予測モードは、上述の技法に基づいて、許容可能なイントラ予測モードから選択され得る。例えば、予測ブロックと符号化されることになるブロックとの間の残差を最小にする、各ブロックのためのイントラ予測モードが、(例えば、絶対誤差の和(SAE)、差分絶対値和(SAD)、変換差分絶対値和(SATD)、または他の類似性の尺度に基づいて)許容可能なイントラ予測モードから選択され得る。
[0151] ビデオエンコーダ22は、広角イントラ予測モードに基づいて現在ブロックのための予測ブロック(複数の予測サンプルを含む)を決定するように構成され得る。ビデオエンコーダ22は、PDPCを使用して修正された予測サンプルを生成するように、予測ブロックの予測サンプルを修正するように構成され得る。本技法は1つの予測サンプルに関して説明されているが、例示的な技法はそのように限定されないことを理解されたい。いくつかの例では、ビデオエンコーダ22は、PDPCを使用して予測ブロックの他の予測サンプルを修正し得る。
[0152] 予測サンプルを修正するために、ビデオエンコーダ22は、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプル(PDPC参照サンプル)を決定し得、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正し得る。1つまたは複数の参照サンプルは、選択された広角イントラ予測モードの方向または角度を使用して特定され得る。例えば、予測サンプルが、予測サンプルロケーションからの垂直方向に対して角度nで現在ブロックの上に位置する隣接ブロックの画素行から選択される場合、第1のPDPC参照サンプルが、サンプルロケーションに対して同じ角度nで現在ブロックの左に位置する隣接ブロックの画素列から選択され得る。いくつかの例では、第2のPDPC参照サンプルが、予測サンプルのために使用されたものと同じサンプルロケーションから選択され得る。場合によっては、第2のPDPC参照サンプルを取得するために、サンプルロケーションからの値がフィルタリングまたは平滑化され得る。いくつかの例では、第3のPDPC参照サンプルが、現在ブロックの左上サンプルに隣接する隣接ブロック中のサンプルロケーション(例えば、図4Aに示すR-1,-1ロケーション)から選択され得る。第1のPDPC参照サンプル(および場合によっては第2および/または第3のPDPC参照サンプル)は、修正された予測サンプルを生成するように予測ブロック中の予測サンプルを修正するために使用され得る。1つの例示的な例では、修正された予測サンプルは、上式1を使用するなどして、第1のPDPC参照サンプル、第2のPDPC参照サンプル、第3のPDPC参照サンプル、および予測サンプルの(1つまたは複数の重みを使用する)重み付き組み合わせ(weighted combination)を計算することによって決定され得る。
[0153] ビデオエンコーダ22は、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロックについての残差値を決定し得、残差値を示す情報をシグナリングし得る。
[0154] 別の例として、ビデオデコーダ30は、ビデオデータの現在ブロックを取得し、現在ブロックのサイズを決定するように構成され得る。例えば、現在ブロックの幅および高さが、現在ブロックが矩形であるかどうかを決定するために分析され得る。場合によっては、ビデオデコーダ30は、現在ブロックが垂直配向のブロック(高さ>幅)であるか、水平配向のブロック(幅>高さ)であるかを決定し得る。ビデオエンコーダ22は、現在ブロックのサイズに基づいて(例えば、ブロックが矩形であることに基づいて)、広角イントラ予測モードが現在ブロックのために使用されることを決定し得る。広角イントラ予測モードは、DCイントラ予測モードでも、プレーナイントラ予測モードでも、水平イントラ予測モードでも、垂直イントラ予測モードでもなく、予測ブロックの各予測サンプルからの垂直方向に対して−135度より小さいまたは45度より大きい方向を有する。
[0155] ビデオデコーダ30は、広角イントラ予測モードに基づいて、現在ブロックのための、複数の予測サンプルを含む予測ブロックを決定するように構成され得る。ビデオデコーダ30は、PDPCを使用して修正された予測サンプルを生成するように、予測ブロックの予測サンプルを修正し得る。上記と同様に、本技法は1つの予測サンプルに関して説明されているが、例示的な技法はそのように限定されない。いくつかの例では、ビデオデコーダ30は、PDPCを使用して予測ブロックの他の予測サンプルを修正し得る。
[0156] 予測サンプルを修正するために、ビデオデコーダ30は、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定し、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正するように構成され得る。ビデオエンコーダ22に関して上述のものと同様に、1つまたは複数の参照サンプルは、選択された広角イントラ予測モードの方向または角度を使用して特定され得る。例えば、第1のPDPC参照サンプルが、サンプルロケーションに対して同じ角度nにある隣接ブロックの画素列または画素行から選択され得る。いくつかの例では、第2のPDPC参照サンプルが、予測サンプルのために使用されたものと同じサンプルロケーション(その値は、第2のPDPC参照サンプルを取得するためにフィルタリングまたは平滑化される)から選択され得、および/または第3のPDPC参照サンプルが、現在ブロックの左上サンプルに隣接する隣接ブロック中のサンプルロケーション(例えば、図4Aに示すR-1,-1ロケーション)から選択され得る。第1のPDPC参照サンプル(および場合によっては第2および/または第3のPDPC参照サンプル)は、(例えば、上式1を使用して)修正された予測サンプルを生成するように、予測ブロック中の予測サンプルを修正するために使用され得る。ビデオデコーダ30はまた、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成するように構成され得る。
[0157] 図7は、広角イントラ予測モードと共に実行されるPDPCの一例を例示する図である。現在ピクチャ702が、ビデオデータの現在ブロック703と共に示されている。現在ブロック703は、サンプル(例えば、ルーマおよび/またはクロマ成分サンプル、もしくは画素のブロックを構成するルーマおよびクロマ成分サンプルのフルセット)の4×8矩形ブロックである。再構成された隣接参照サンプル706および再構成された隣接参照サンプル708も示されている。隣接参照サンプル706は、現在ピクチャ702の上の1つまたは複数のブロックの一部であり得、隣接参照サンプル708は、現在ピクチャ702の左の1つまたは複数のブロックの一部であり得る。
[0158] コーディングデバイス(例えば、ビデオエンコーダ22および/またはビデオデコーダ30)は、現在ブロック703のサイズを決定し得、現在ブロック703のサイズに基づいて実行すべきイントラ予測モードを決定または選択し得る。上述のように、コーディングデバイスは、現在ブロック703のサイズに基づいて、広角イントラ予測モードが現在ブロック703のために使用されることを決定し得る。例えば、現在ブロックが矩形ブロックである(幅および高さが異なるサイズである)ことが決定されたときに、広角イントラ予測モードが使用され得る。場合によっては、現在ブロック703の(ブロックの左下角から右上角への)対角線を超えない角度を有する任意のイントラ予測モードが、現在ブロック703を予測する際に使用するために選択され得る。場合によっては、ブロックサイズ比は、使用すべきイントラ予測モードを決定するために使用され得る。例えば、矩形ブロックのブロックサイズ比は、左下から右上への対角線方向、したがって予測角度(または方向)の許容範囲を決定するために使用され得る。
[0159] いくつかの例では、ブロック703の対角線の角度の外にあるイントラ予測モード(モード2から66を含む)が否認され得、ブロック703の対角線の角度内にある追加の広角モードが、コーディングデバイスによる選択のために利用可能にされ得る。例えば、水平配向の矩形ブロック703(幅>高さ)の場合、イントラ予測モード5(図6に示す)に関連付けられた角度がブロック703の(左下角から右上角への)対角線の角度である場合、モード2、3、および4は否認され得、(現在ブロック703中の各サンプルロケーションからの垂直方向に対して45°より大きい角度を有する)追加のモード67、68、および69が、現在ブロック703の予測ブロックの1つまたは複数の予測サンプルを予測するために利用可能にされ得る。
[0160] 様々な利用可能なイントラ予測モードの分析に基づいて(例えば、ブロックサイズ比に基づいて、上述のSAEもしくは他の類似性尺度に基づいて、または他の好適な分析を使用して)、コーディングデバイスは、現在ブロック703のサンプルロケーションについてイントラ予測を実行するために広角イントラ予測モード(例えば、広角イントラ予測モード67、68、または69)を選択し得る。図7の矢印710は、選択された広角イントラ予測モードの予測方向(または予測角度)を示し、予測サンプル704(pred(x’,y’)と示す)のイントラ予測のために使用される参照サンプル712から生じている。図7に例示する広角イントラ予測モードは、隣接対角左下モード(例えば、図6の広角イントラ予測モード69)である。
[0161] 選択された広角イントラ予測モードを使用して、現在ブロック703の予測ブロック中の右下サンプルロケーションについて予測サンプル704(pred(x’,y’))が決定され得る。例えば、隣接参照サンプル708からのサンプル712の値が、選択された広角イントラ予測モードの方向(矢印710によって表される)に基づいて、予測サンプル704についての値として選択され得る。場合によっては、同じ広角イントラ予測モードが、予測ブロックの各予測サンプルのために使用され得る。場合によっては、異なるイントラ予測モード(広角モードを含む)が、予測ブロックの異なる予測サンプルのために使用され得る。
[0162] コーディングデバイスは、次いで、予測サンプル704の値を修正するために使用されることになる1つまたは複数のPDPC参照サンプルを決定するためにPDPCを実行し得る。1つまたは複数のPDPC参照サンプルは、選択された広角イントラ予測モードの方向(矢印710によって表される)を使用して特定され得る。例えば、上述および図7に示すように、現在ブロック703の上に位置する参照サンプル708の行からのサンプル712は、予測サンプル704(pred(x’,y’))として選択される。予測サンプル704(pred(x’,y’))は、予測ブロック内のロケーション(x’,y’)に位置する。第1のPDPC参照サンプル714(R(-1,y)と示す)が、現在ブロック703の左に、および広角イントラ予測モードの同じ予測方向(矢印710によって定義される)に沿って位置する参照サンプル706の列から選択される。図7に示す角度β(図3にも示す)について、参照サンプルR(-1,y)のy座標は、y=y’+cotan(β)×(x’+1)として決定され、cotan(β)は角度βの余接である。余接値の例を以下で説明する。
[0163] いくつかの実装形態では、第2のPDPC参照サンプル(R(x,-1)と示す)もまた、予測サンプル704のために使用されたものと同じサンプルロケーション712から選択され得る。そのような例では、同じサンプル値(サンプル712の値)が、予測サンプル704および第2のPDPC参照サンプルR(x,-1)のために使用され得、この場合、予測サンプル704(pred(x’,y’))は、第2のPDPC参照サンプルR(x,-1)と同一である。図7に示す角度βについて、R(x,-1)のx座標は、x=x’+tan(β)×(y’+1)によって与えられ、tan(β)は角度βの正接である。正接値の例を以下で説明する。
[0164] 場合によっては、サンプル712の値は、第2のPDPC参照サンプルR(x,-1)を取得するためにフィルタリングまたは平滑化され得、この場合、第2のPDPC参照サンプルR(x,-1)の値は、予測サンプル704の値とは異なることになる。上述のように、予測サンプル704(pred(x’,y’))は、第2の参照サンプルR(x,-1)サンプルがフィルタリングされていない場合、R(x,-1)と同一である。いくつかの例では、参照サンプル値は、イントラ参照平滑化(intra reference smoothing)、モード依存イントラ平滑化(MDIS:mode-dependent intra smoothing)、参照サンプル適応フィルタリング(RSAF:reference sample adaptive filtering)、適応参照サンプル平滑化(ARSS:adaptive reference sample smoothing)、および/または他のフィルタリング技法を使用してフィルタリングされ得る。例えば、2タップバイリニアフィルタ、3タップ[1、2、1]/4平滑化フィルタ、または他のフィルタが使用され得る。
[0165] 1つの例示的な例では、サンプル712の値は、[1 2 1]平滑化フィルタ(または他のフィルタ)によってフィルタリングされ得、フィルタリングされた値は、第2のPDPC参照サンプルR(x,-1)として使用され得る。一例として3タップ[1 2 1]/4平滑化フィルタを使用すると、最も外側の参照サンプルp[−1][2N−1]およびp[2N−1][−1]は修正されず(ここで、Nはx方向および/またはy方向のサンプルの数である)、すべての他の参照サンプルは、2つの隣接参照サンプルを使用することによってフィルタリングされる。以下でより詳細に説明するように、フィルタのタップの数は、選択される特定のイントラ予測モードに基づいて、ブロックのサイズに基づいて、1つまたは複数の隣接ブロックの特性に基づいて、それらの任意の組合せに基づいて、および/または他のファクタを使用して適応され得る。
[0166] いくつかの実装形態では、第3のPDPC参照サンプル716(R(-1,-1)と示す)が、現在ブロック703の左上サンプルに隣接する隣接ブロックから選択され得る。第1のPDPC参照サンプル714(R(-1,y))、第2のPDPC参照サンプルR(x,-1)、および第3のPDPC参照サンプル716(R(-1,-1))は、予測サンプル704(pred(x’,y’))を修正するために使用されて、(pred(x,y))と示せる修正された予測サンプルを生成し得る。例えば、上式1を使用して、修正された予測サンプルpred(x,y)は、第1のPDPC参照サンプル714、第2のPDPC参照サンプルR(x,-1)、第3のPDPC参照サンプル716、および予測サンプルpred(x’,y’)の重み付き組み合わせを計算することによって決定され得る。重みは、上述の技法を使用して決定され得る。例えば、隣接対角左下モードのためのPDPC重みは、例えば、wL=32>>((x’<<1)>>shift)、wT=32>>((y’<<1)>>shift)、wTL=0、またはwL=32>>((x’<<1)>>shift)、wT=0、wTL=0である。
[0167] PDPC参照サンプルR(x,-1)(例えば、図7中の第2のPDPC参照サンプル)を決定するために、コーディングデバイスは、現在ブロックの上(例えば、すぐ上)にある行(または現在ブロック703の上の複数行)を決定し得、決定された行におけるx座標を決定し得る。上述のように、決定された行におけるx座標は、広角イントラ予測モードの方向(または角度)に基づいており、コーディングデバイスは、決定された行および決定されたx座標に基づいて参照サンプルを決定し得る。
[0168] 決定された行におけるx座標を決定するために、コーディングデバイスは、広角イントラ予測モードの角度の余接(例えば、隣接対角右上モードの場合)または正接(例えば、隣接対角左下モードの場合)のうちの1つを決定し得る。コーディングデバイスは、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された行におけるx座標を決定し得る。1つの例では、(例えば、図7に示す)隣接対角左下広角イントラ予測モードの場合、決定された行におけるx座標は、x=x’+tan(β)×(y’+1)に等しい。別の例では、隣接対角右上モードの場合、決定された行におけるx座標は、x=x’+cotan(α)×(y’+1)に等しい。ここで、x’およびy’は、修正されている予測サンプルのx座標およびy座標である。
[0169] 同様に、PDPC参照サンプルR(-1,y)(例えば、図7中の第1のPDPC参照サンプル714)を決定するために、コーディングデバイスは、現在ブロックの左(例えば、すぐ左)にある列(または現在ブロック703の左の複数列)を決定し得、決定された列におけるy座標を決定し得る。上述のように、決定された列におけるy座標は、広角イントラ予測モードの方向に基づく。コーディングデバイスは、決定された列および決定されたy座標に基づいて、1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定し得る。
[0170] 決定された列におけるy座標を決定するために、コーディングデバイスは、角度イントラ予測モードの角度の余接(例えば、隣接対角左下モードの場合)または正接(例えば、隣接対角右上モードの場合)のうちの1つを決定し得る。コーディングデバイスは、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された列におけるy座標を決定し得る。例えば、隣接対角右上の角度イントラ予測モードの場合、決定された列におけるy座標は、y’+tan(α)×(x’+1)に等しく、隣接対角左下モード(例えば、図7からの例)の場合、決定された列におけるy座標は、y’+cotan(β)×(x’+1)に等しく、ここで、x’およびy’は、修正されている予測サンプルのx座標およびy座標である。
[0171] 決定されたx座標およびy座標に基づいて、コーディングデバイスは、PDPC参照サンプルを(例えば、決定された行および決定されたx座標に基づいて第1のPDPC参照サンプルを、および決定された列および決定されたy座標に基づいて第2のPDPC参照サンプルを)決定し得る。コーディングデバイスはまた、隣接対角モード(例えば、2つの例として、隣接対角右上モードおよび隣接対角左下モード)のための上記例示的な技法にしたがって重みを決定し得る。次いで、(1つの非限定的な例として)式1に基づいて、コーディングデバイスは、修正された予測サンプル(例えば、pred(x,y))を決定し得る。
[0172] 上述のように、PDPCは、複雑さへの影響を最小にしたまま、角度イントラ予測モードに適用され得る。実際の実施では、角度の正接(例えば、tan(α)および/またはtan(β))および余接(例えば、cotan(α)および/またはcotan(β))の値は、それらがオンザフライで(例えば、実行時に)算出されないようにテーブルに記憶され得る。以下は、様々な角度モード(広角モードを含む)のための例示的なテーブルである。
[0173] TanAngTable[32]={0、1、2、3、4、6、8、10、12、14、16、18、20、23、26、29、32、35、39、45、51、57、64、73、86、102、128、171、256、341、512、1024}
[0174] CotanAngTable[32]={0、8192、4096、2731、2048、1365、1024、819、683、585、512、455、410、356、315、282、256、234、210、182、160、144、128、112、95、80、64、48、32、24、16、8};//(256*32)/角度
[0175] 正接テーブル「TanAngTable[32]」中の値は、イントラ予測モードを使用して見つけられたサンプルのロケーションを示す。正接テーブル値は、32という値によって正規化される。例えば、図6を参照すると、モード66は、傾き1の(ブロックの中心からの垂直方向に対して)45度であり、右上から左下に予測する(右上からのサンプル値が、図6のブロックの中央のサンプルについての予測サンプル値として使用される)。正接テーブル中の「32」という値は、図6に示すモード66に対応する。正接テーブル中の値「0」は、図6に示す垂直モード(モード50)に対応する。「1024」という値は、図6のモード80に対応する。
[0176] 余接テーブル「CotanAngTable[32]」中の値は、正接テーブル中の対応する値によるPDPC参照サンプルのロケーションを示す。余接テーブル値は、256という値によって正規化される。例えば、正接テーブル中の第1のエントリ(イントラ予測サンプルのロケーションを示す)は、余接テーブル中の第1のエントリ(PDPC参照サンプルのロケーションを示す)に対応する。図7を参照する1つの例では、予測サンプル704が、正接テーブル(正接テーブル中の18番目の位置)に35という正接テーブル値を有し得る参照サンプル712を使用して決定された場合、第2のPDPCサンプル714は、234という余接テーブル値(余接テーブル中の18番目の位置)に対応し得る。余接は
に対応する。上述のように、正接テーブル「0」という値は、図6に示す垂直モード(モード50)に対応する。垂直モード50の反対はないことに留意されたい。モード51の場合、反対のモードがあり、モード−14である。モード51は正接テーブル中の値「1」に対応する。
[0177] 図7に関して上述の例(および図8に関して以下で説明する例)は、隣接右上広角イントラ予測モードのためのものである。隣接右上広角イントラ予測モードは、PDPCが適用され得る例示的な広角イントラモードとして提供される。例示的な技法は、1つまたは複数の隣接左下広角イントラ予測モードまたは他の広角モードなど、他の角度モードにも拡張され得る。また、いくつかの例では、1つまたは複数の参照サンプルは、予測ブロック中の予測サンプルのx座標およびy座標の両方とは異なるx座標およびy座標の両方を有し得る。例えば、参照サンプルを決定するためにそれぞれの行および列におけるx座標およびy座標を決定する例示的な上式において、x座標は、修正されている予測サンプルのx座標とは異なり得、y座標は、修正されている予測サンプルのy座標とは異なり得る。そのような場合、参照サンプルは、修正されている予測サンプルと同じ行にも同じ列にもない場合がある。
[0178] DC、プレーナ、水平、および垂直モードPDPCの場合のように、PDPCがこれらの角度モードに拡張されるとき、対角モードおよび隣接対角モードには、例えば、‘J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7,” 7th JVET Meeting, Torino, Italy, July 2017, JVET-G1001 に指定されているような追加の境界フィルタリングはなくてもよい。
[0179] 場合によっては、右下対角線を中心としてブロックを反転させることによって、すべての水平角度モードが垂直モードにマッピングされ得る。垂直モードを中心とした対称性により、角度の数が、TanAngTableおよびCotanAngTableにそれぞれ正接値および余接値が記憶された33個にさらに低減されることが可能となる。例えば、上述のように、正接テーブル中の「0」という値は、図6に示す垂直モード(モード50)に対応する。垂直モードを中心とした対称性に基づいて、「0」という値はまた、図6の水平モード(モード18)にも対応し得る。必要とされる整数精度により、両方のテーブル中の値は、TanAngTableの場合にはファクタ64によって、CotanAngTableの場合には値1024によってスケーリングされる。座標xおよびyを算出するための上式における乗算は、予測ブロックを横断する間にx’およびy’を増加させて角度モードと対応するテーブル値を蓄積することによって回避される。
[0180] 場合によっては、広角イントラ予測モードの方向(または角度)によって特定されるPDPC参照サンプルは、整数の参照サンプル位置に対応しない場合があり、代わりに、分数位置(例えば、整数位置にある2つのサンプルの間)に対応し得る。図8は、広角モードと共に実行されるPDPCの別の例を例示する図である。現在ピクチャ802は、サンプルの4×8矩形ブロックである現在ブロック803を含む。図7のものと同様に、再構成された隣接参照サンプル806および再構成された隣接参照サンプル808も示されており、これらはそれぞれ、現在ピクチャ802の上および左の1つまたは複数のブロックの一部であり得る。
[0181] コーディングデバイス(例えば、ビデオエンコーダ22および/またはビデオデコーダ30)は、現在ブロック803のサイズを決定し得、現在ブロック803のサイズに基づいて実行すべきイントラ予測モードを選択し得る。現在ブロックが矩形ブロックであるという決定に基づいて、広角イントラ予測モードが使用され得る。例えば、図7に関して上述のものと同様に、様々な利用可能なイントラ予測モードの分析に基づいて(例えば、上述のSAEまたは他の類似性尺度に基づいて)、コーディングデバイスは、現在ブロック803のサンプルロケーションについてイントラ予測を実行するために広角イントラ予測モード(例えば、広角イントラ予測モード−2、−3、または−4)を選択し得る。図8の矢印810は、選択された広角イントラ予測モードの予測方向を示し、予測サンプル804(pred(x’,y’)と示す)のイントラ予測のために使用される参照サンプル814から生じている。図8に例示する広角イントラ予測モードは、隣接対角右上モード(例えば、図6からの広角イントラ予測モード−3)である。
[0182] 選択された広角イントラ予測モードの方向(矢印810によって表す)を使用して、隣接参照サンプル806からのサンプル814の値が、現在ブロック803の予測ブロック中の予測サンプル804(pred(x’,y’)と示す)についての値として選択され得る。コーディングデバイスは、次いで、予測サンプル804の値を修正するために使用されることになる1つまたは複数のPDPC参照サンプルを決定し得る。例えば、上述のものと同様の技法を使用して、第1のPDPC参照サンプル(R(x,-1)と示す)、および場合によっては第2のPDPC参照サンプル(R(-1,y)と示す)および/または第3のPDPC参照サンプル816(R(-1,-1)と示す)が決定され得る。第3のPDPC参照サンプル816(R(-1,-1))は、現在ブロック803の左上サンプルに隣接する隣接ブロックから選択され得る。
[0183] 予測サンプル804(pred(x’,y’))は、予測ブロック内のロケーション(x’,y’)に位置する。第1のPDPC参照サンプルR(x,-1)は、現在ブロック803の上に、および広角イントラ予測モードの同じ予測方向(矢印810によって定義される)に沿って位置する参照サンプル808の行から選択される。図8に示す角度α(図3にも示す)について、参照サンプルR(x,-1)のx座標は、x=x’+cotan(α)×(y’+1)として決定され、cotan(α)は角度αの余接である。余接値の例は上で説明した。
[0184] 第2のPDPC参照サンプル(R(-1,y))もまた、予測サンプル804のために使用されたものと同じサンプルロケーション814から選択され得る。このような例では、同じサンプル値(サンプル814の値)が、予測サンプル804および第2のPDPC参照サンプルR(-1,y)のために使用され得、この場合、予測サンプル804(pred(x’,y’))は、第2のPDPC参照サンプルR(-1,y)と同一である。上述のように、サンプル814の値は、第2のPDPC参照サンプルR(-1,y)を取得するためにフィルタリングまたは平滑化され得、この場合、第2のPDPC参照サンプルR(-1,y)の値は、予測サンプル804の値とは異なることになる。図8に示す角度αについて、R(-1,y)のy座標は、y=y’+tan(α)×(x’+1)によって与えられ、tan(α)は角度αの正接である。正接値の例は上で説明した。
[0185] 第1のPDPC参照サンプルR(x,-1)、第2のPDPC参照サンプルR(-1,y)、および第3のPDPC参照サンプル816(R(-1,-1))は、予測サンプル804(pred(x’,y’))を修正するために使用されて、PDPC参照サンプルおよび予測サンプルpred(x’,y’)の重み付き組み合わせを(例えば、上式1を使用して)計算するなどによって、(pred(x,y))と示す修正された予測サンプルを生成し得る。例えば、隣接対角右上モードのためのPDPC重みは、例えば、wT=32>>((y’<<1)>>shift)、wL=32>>((x’<<1)>>shift)、wTL=0、またはwT=32>>((y’<<1)>>shift)、wL=0、wTL=0である。
[0186] 図8に示すように、第1のPDPC参照サンプルR(x,-1)は、整数の参照サンプル位置に対応せず、代わりに、各々が整数位置にある2つのサンプル812間の分数位置にある。このような例では、PDPC参照サンプルR(x,-1)は、2つの参照サンプル812に基づいて補間され得る。参照サンプル812の補間は、例えば、線形補間またはキュービック補間(cubic interpolation)によって実行され得るか、または分数値が計算される場合、最近傍丸め(nearest neighbor rounding)が使用され得る。場合によっては、補間は、補間フィルタを使用して実行され得る。例えば、補間フィルタは、2つの参照サンプル812間に線形補間を適用し得る。場合によっては、PDPC参照サンプルを取得するために使用される補間フィルタと補間フィルタのために使用されるタップ数とは、イントラ予測モード、ブロックのサイズ(例えば、幅および高さ)、1つ複数の隣接ブロックの特性(例えば、隣接ブロックがイントラ予測を使用してコーディングされるかどうか)、それらの任意の組合せに依存し、および/または他のファクタに基づき得る。1つの例示的な例では、ある特定のブロックサイズおよび45度を超えるモードのための補間のために6タップガウスフィルタ(6-tap-Gaussian filter)が使用され得、他のブロックサイズおよび−135度を超えるモードのために4タップガウスフィルタが使用され得る。
[0187] 補間は、分数(非整数)位置にあるPDPC参照サンプルを決定することの1つの例示的な例である。いくつかの例では、コーディングデバイス(例えば、ビデオエンコーダ22および/またはビデオデコーダ30)は、補間、オフセットを用いた丸め、および/またはオフセットを用いない丸めのうちの少なくとも1つを実行し得る。コーディングデバイスは、1つまたは複数の参照サンプルを生成するために、1つまたは複数のサンプルのセット中の隣接サンプルに基づいて、オフセットを用いてまたは用いずにそのような丸めを実行し得る。
[0188] いくつかの例では、大きい座標値が算出される場合、参照ラインバッファ(reference line buffer)境界の外の参照サンプルのアクセスを防ぐために、クリッピングが必要とされ得る。クリッピングが実行される場合、最後に利用可能な参照サンプルが使用され得るか、またはPDPCが角度イントラ予測のみにフォールバック(fall back)し得、これは、例えば、式1においてwL、wT、wTLに対してゼロ重みを適用することと同等である。例えば、角度イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定するために、コーディングデバイスは、角度イントラ予測モードに基づいて特定された現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファに記憶されていないことを決定するように構成され得、参照ラインバッファに記憶された最後の参照サンプルに基づいて1つまたは複数の参照サンプルを決定し得る。
[0189] いくつかの例では、参照ラインバッファにおける最後のサンプルを使用するのではなくむしろ、PDPCが現在ブロックについて無効にされ得るか、またはPDPCがある特定の予測されたサンプルについて無効にされ得、その結果、(例えば、修正された予測サンプルのない)通常のイントラ予測が使用される。1つの例として、予測ブロック中のある予測サンプルについて、コーディングデバイスは、第1の参照サンプルが参照バッファにおいて利用可能であるが、第2の参照サンプルが参照バッファにおいて利用可能でないことを決定し得る。この例では、コーディングデバイスは、PDPCが予測サンプルについて無効にされることを決定し得る。しかしながら、いくつかの例では、コーディングデバイスは、(例えば、第2の参照サンプルについての重みをゼロに等しく設定することによって)PDPCのために第1の参照サンプルを利用し得、第2の参照サンプルを利用しない場合がある。
[0190] いくつかの例では、上述のように、PDPCフィルタリングのために使用される参照サンプルは、フィルタ(例えば、[1 2 1]フィルタまたはより強力なフィルタ)によってフィルタリング(または平滑化)され得る。タップの数は、特定のモード、ブロックのサイズ(例えば、幅および高さ)、1つまたは複数の隣接ブロックの特性、それらの任意の組合せに基づいて、および/または他のファクタに基づいて適応され得る。例えば、イントラモードが広角予測モードを示す場合、PDPC参照サンプルを取得するために、より強力なフィルタが参照サンプルに対して適用され得る。いくつかの例では、長いイントラ予測距離の場合、平滑化フィルタリングが適用され得、これは、何らかの雑音を除去し、より良好な予測をもたらすことができる。
[0191] 場合によっては、参照フィルタリングのために使用されるフィルタおよび/または補間フィルタリングのために使用されるフィルタは、垂直参照サンプル(現在ブロックの左)と水平参照サンプル(現在ブロックの上)とで異なり得る。いくつかの代替例では、異なるフィルタを使用する決定は、ブロックのサイズ(例えば、幅および高さ)、予測のために使用されるイントラモード、1つまたは複数の隣接ブロックの特性、それらの任意の組合せに依存し、および/または他のファクタに基づき得る。
[0192] いくつかの例では、隣接ブロックからの2つ以上の参照ラインが、イントラ予測のために、および/またはPDPC参照サンプルを決定するために使用され得る。隣接ブロックからの2つ以上の参照ラインがイントラ予測のために使用され得るとき、追加の参照ライン(単数または複数)のための広角イントラ予測モードのためにPDPC参照サンプルが取得され得、それらは、2つ以上の参照ラインを組み合わせることによって、またはブロックの近傍から1つまたは複数の参照ラインを選択することによって取得され得る。
[0193] 場合によっては、広角イントラ予測が使用されるとき、PDPCは、ブロックのサイズ、予測のために使用されるイントラモード、1つまたは複数の隣接ブロックの特性、それらの任意の組合せに基づいて、および/または他のファクタに基づいて制限され得る。例えば、PDPCは、サイズしきい値よりも小さい小ブロック(例えば、4×4ブロックなどの、幅および/または高さが4画素未満であるブロック)について無効にされ得る。
[0194] 上述のように、いくつかの例では、コーディングデバイスは、予測ブロック中の複数の予測サンプルに対して例示的なPDPC技法を実行することができる。しかしながら、PDPC技法が予測サンプルのいくつかに対しては使用されるが、同じ予測ブロック中の他の予測サンプルに対しては使用されない例があり得る。例えば、予測ブロック中の第1の予測サンプルについて、コーディングデバイス(例えば、ビデオエンコーダ22および/またはビデオデコーダ30)は、本明細書で説明するPDPC技法を実行し得る。しかしながら、同じ予測ブロック中の第2の予測サンプルについては、第2の予測サンプルに対してPDPC技法を実行するために必要な参照サンプルが参照ラインバッファに記憶されていない場合がある。この例では、第2の予測サンプルについて、コーディングデバイスは、PDPC技法を実行することができず、通常のイントラ予測技法が利用され得る。場合によっては、第2の予測サンプルについて、参照サンプルのうちの1つが参照ラインバッファにおいて利用可能であるが、他の1つがそうでないことがあり得る。いくつかの例では、コーディングデバイスは、第2の予測サンプルに対してPDPC技法を実行しない場合があるか、または利用可能である参照サンプルのみを利用し、利用可能でない参照サンプルに適用される重みにゼロ重みを割り当てる場合がある。
[0195] 図9は、本明細書で説明する技法のうちの1つまたは複数を使用してビデオデータを復号するプロセス900の一例を例示するフローチャートである。ブロック902において、プロセス900は、ビデオデータの現在ブロックを取得することを含む。1つの例示的な例では、ビデオデータの現在ブロックは、図7に示すビデオデータのブロック703を含み得る。別の例示的な例では、ビデオデータの現在ブロックは、図8に示すビデオデータのブロック803を含み得る。
[0196] ブロック904において、プロセス900は、現在ブロックのサイズを決定することを含む。場合によっては、現在ブロックのサイズを決定することは、ブロックの幅とブロックの高さとが異なるサイズであることを決定することを含み得、これはブロックが矩形ブロックであることを示す。場合によっては、現在ブロックのサイズを決定することは、現在ブロックの対角線の角度または方向(例えば、現在ブロックの左下角(bottom-left corner)から現在ブロックの右上角(top-right corner)への対角線方向、または現在ブロックの左上角(top-left corner)から現在ブロックの右下角(bottom-right corner)への対角線方向)を決定することを含み得る。場合によっては、(例えば、ピタゴラスの定理
を使用して)対角線方向を決定するために、現在ブロックのブロックサイズ比が使用され得る。上述のように、予測方向(または角度)の許容範囲を決定するために、対角線方向(例えば、左下から右上または左上から右下)が使用され得る。
[0197] ブロック906において、プロセス900は、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することを含む。広角イントラ予測モードは、DCイントラ予測モードでも、プレーナイントラ予測モードでも、水平イントラ予測モードでも、垂直イントラ予測モードでもない。例えば、広角イントラ予測モードの角度は、予測サンプルに対して(例えば、予測サンプルからの垂直方向に対して)−135度より小さい(例えば、図6に示すモード−1、−2、−3、〜−14)または45度より大きい(例えば、図6に示すモード67、68、69、〜80)ものであり得る。
[0198] ブロック906の例示的な実装態様として、コーディングデバイス(例えば、ビデオデータを復号するためのデバイス)は、現在ブロックのサイズに基づいて、広角イントラ予測モードが現在ブロックのために使用され得ることを決定し得る。例えば、現在ブロックが矩形ブロックである(幅および高さが異なるサイズである)ことが決定されたときに、広角イントラ予測モードが使用され得る。場合によっては、現在ブロックの(ブロックの左下角から右上角へ、またはブロックの左上角から右下角への)対角線を超えない方向(または角度)を有する任意のイントラ予測モードが、現在ブロックを予測する際に使用するために選択され得る。場合によっては、ブロックサイズ比は、使用すべきイントラ予測モードを決定するために使用され得る。例えば、矩形ブロックのブロックサイズ比は、(例えば、左下から右上への)対角線方向、したがって予測方向の許容範囲を決定するために使用され得る。
[0199] いくつかの例では、広角イントラ予測モードの指示は、ビットストリーム中でシグナリングされ得る。いくつかの例では、予測ブロックと符号化されることになるブロックとの間の残差を最小にするイントラ予測モードが、(例えば、絶対誤差の和(SAE)、差分絶対値和(SAD)、変換差分絶対値和(SATD)、または他の類似性の尺度に基づいて)現在ブロックのために使用するために選択され得る。例示的な一例としてSAEを使用すると、イントラ予測モードの各々を使用して決定される各予測についてSAEは予測誤差の大きさを示す。実際の現在ブロックに対して最良のマッチを有するイントラ予測モードは、最小のSAEを与えるイントラ予測モードによって与えられる。例えば、プロセス900は、SAE分析に基づいて広角イントラ予測モードを選択し得、このSAE分析は、現在ブロックが矩形であることに基づいて、広角イントラ予測モードを最良のモードとして示し得る。
[0200] ブロック908において、プロセス900は、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することを含む。予測ブロックは、複数の予測サンプルを含む。各予測サンプルは、広角イントラ予測モードを使用して決定され得る。ブロック910において、プロセス900は、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することを含む。例えば、予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを含み得る。
[0201] いくつかの例では、現在ブロックの外部にある1つまたは複数の参照サンプルは、予測サンプルに対する広角イントラ予測モードの角度を使用して決定される。例えば、図7に示すように、第1のPDPC参照サンプル714(R(-1,y)と示す)、および場合によっては、第2のPDPC参照サンプルR(x,-1)が、矢印710によって表される広角イントラ予測モードの方向(または角度)に沿って決定される。
[0202] 場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行を決定することと、決定された行におけるx座標を決定することと、決定された行および決定されたx座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。そのような場合、決定された行におけるx座標は、予測サンプルのx座標+予測サンプルのy座標+1に等しい。さらに、場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行を決定することと、決定された行におけるx座標を決定すること(ここで、決定された行におけるx座標は、予測サンプルに対する広角イントラ予測モードの角度に基づく)と、決定された行および決定されたx座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。例えば、決定された行におけるx座標を決定することは、広角イントラ予測モードの角度の余接または正接のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された行におけるx座標を決定することとを含み得る。1つの例示的な例では、図7を参照すると、第2のPDPC参照サンプルR(x,-1)は、再構成された隣接参照サンプル708の行から決定される。R(x,-1)のx座標は、x=x’+tan(β)×(y’+1)として決定され得、tan(β)は、図7に示す角度βの正接である。そのような例では、決定された行(例えば、図7の行708)におけるx座標(x)は、予測サンプルのx座標(x’)+予測サンプルのy座標(y’)+1に等しく、また広角イントラ予測モードの角度(角度βの正接、tan(β))にも基づく。
[0203] 場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列を決定することと、決定された列におけるy座標を決定することと、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。そのような場合、決定された列におけるy座標は、予測サンプルのy座標+予測サンプルのx座標+1に等しい。さらに、場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列を決定することと、決定された列におけるy座標を決定すること(ここで、決定された列におけるy座標は、広角イントラ予測モードの角度に基づく)と、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。例えば、決定された列におけるy座標を決定することは、広角イントラ予測モードの角度の余接または正接のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された列におけるy座標を決定することとを含み得る。1つの例示的な例では、図7を参照すると、第1のPDPC参照サンプル714(R(-1,y))は、再構成された隣接参照サンプル706の列から決定される。R(-1,y)のy座標は、y=y’+cotan(β)×(x’+1)として決定され得、cotan(β)は、図7に示す角度βの余接である。そのような例では、決定された列(例えば、図7の列706)におけるy座標(y)は、予測サンプルのy座標(y’)+予測サンプルのx座標(x’)+1に等しく、また広角イントラ予測モードの角度(角度βの余接、cotan(β))にも基づく。
[0204] いくつかの実装形態では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて1つまたは複数のサンプルのセットを決定することと、1つまたは複数の参照サンプルを生成するために、1つまたは複数のサンプルのセットを補間すること、オフセットを用いて丸めること、またはオフセットを用いずに丸めることのうちの少なくとも1つを行うこととを含み得る。例えば、図8を参照すると、PDPC参照サンプルR(x,-1)を生成するために、サンプル812に対して補間が実行され得る。
[0205] いくつかの例では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、予測ブロック中の予測サンプルのそれぞれのx座標およびy座標の両方とは異なるx座標およびy座標の両方を有する1つまたは複数の参照サンプルを決定することを備える。例えば、図7に関して説明するように、第3のPDPC参照サンプル716(R(-1,-1)と示す)もまた、現在ブロック703の左上サンプルに隣接する隣接ブロックから決定され得る。
[0206] いくつかの実装形態では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて特定された現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファに記憶されていないことを決定することを含み得る。1つまたは複数の参照サンプルは、現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファに記憶されていないことに基づいて、参照ラインバッファに記憶された最後の参照サンプルに基づいて決定され得る。
[0207] いくつかの態様では、プロセス900は、予測サンプルのx座標およびy座標に基づいて1つまたは複数の重みを決定することを含み得る。例えば、上述のように、隣接対角右上モードのためのPDPC重みは、wT=32>>((y’<<1)>>shift)、wL=32>>((x’<<1)>>shift)、wTL=0、またはwT=32>>((y’<<1)>>shift)、wL=0、wTL=0の通り決定され得る。別の例では、上述のように、隣接対角左下モードのためのPDPC重みは、wL=32>>((x’<<1)>>shift)、wT=32>>((y’<<1)>>shift)、wTL=0、またはwL=32>>((x’<<1)>>shift)、wT=0、wTL=0の通り決定され得る。決定された1つまたは複数の重みは、1つまたは複数の参照サンプルとともに予測サンプルを修正するために使用され得る。例えば、修正された予測サンプルは、決定された1つまたは複数の参照サンプル、決定された1つまたは複数の重み、および予測サンプルに基づいて(例えば、上式1を使用して)生成され得る。
[0208] いくつかの例では、予測ブロックの複数の予測サンプルのうちの予測サンプルを修正することは、予測ブロックの第1の予測サンプルを修正することを含み得る。例えば、1つまたは複数の参照サンプルは、1つまたは複数の参照サンプルの第1のセットを含み得、プロセス900は、予測ブロックの第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することを含み得る。場合によっては、第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することに基づいて、PDPCが、第2の予測サンプルに適用されない場合がある。場合によっては、第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することに基づいて、PDPCが、参照ラインバッファにおいて利用可能な参照サンプルのみを使用して第2の予測サンプルに適用され得る。
[0209] ブロック912において、プロセス900は、修正された予測サンプルおよび残差値に基づいて現在ブロックのサンプルを再構成することを含む。例えば、上述のように、ビデオデータを復号するためのデバイスは、受信した情報に基づいて残差ブロックの残差値を決定し得、現在ブロックを再構成するために、残差ブロックの残差値を予測ブロックの予測サンプルに加算し得る。ビデオデータを復号するためのデバイスは、残差値についての情報(例えば、ビットストリーム中の残差変換ブロックについての係数)を受信し得、現在ブロック中のサンプルを再構成するために、残差値を、(PDPCを使用して修正された)修正された予測サンプルに加算することによってサンプルを再構成し得る。
[0210] 図10は、本明細書で説明する技法のうちの1つまたは複数を使用してビデオデータを符号化するプロセス1000の一例を例示するフローチャートである。ブロック1002において、プロセス1000は、ビデオデータの現在ブロックを取得することを含む。1つの例示的な例では、ビデオデータの現在ブロックは、図7に示すビデオデータのブロック703を含み得る。別の例示的な例では、ビデオデータの現在ブロックは、図8に示すビデオデータのブロック803を含み得る。
[0211] ブロック1004において、プロセス1000は、現在ブロックのサイズを決定することを含む。場合によっては、現在ブロックのサイズを決定することは、ブロックの幅とブロックの高さとが異なるサイズであることを決定することを含み得、これはブロックが矩形ブロックであることを示す。場合によっては、現在ブロックのサイズを決定することは、現在ブロックの対角線の角度または方向(例えば、現在ブロックの左下角から現在ブロックの右上角への対角線方向、または現在ブロックの左上角から現在ブロックの右下角への対角線方向)を決定することを含み得る。場合によっては、(例えば、ピタゴラスの定理
を使用して)対角線方向を決定するために、現在ブロックのブロックサイズ比が使用され得る。上述のように、予測方向(または角度)の許容範囲を決定するために、対角線方向(例えば、左下から右上または左上から右下)が使用され得る。
[0212] ブロック1006において、プロセス1000は、現在ブロックのサイズに基づいて、現在ブロックのために使用すべき広角イントラ予測モードを決定することを含む。広角イントラ予測モードは、DCイントラ予測モードでも、プレーナイントラ予測モードでも、水平イントラ予測モードでも、垂直イントラ予測モードでもない。例えば、広角イントラ予測モードの角度は、予測サンプルに対して(例えば、予測サンプルからの垂直方向に対して)−135度より小さい(例えば、図6に示すモード−1、−2、−3、〜−14)または45度より大きい(例えば、図6に示すモード67、68、69、〜80)ものであり得る。
[0213] ブロック1006の例示的な実装態様として、コーディングデバイス(例えば、ビデオデータを符号化するためのデバイス)は、現在ブロックのサイズに基づいて、広角イントラ予測モードが現在ブロックのために使用され得ることを決定し得る。例えば、現在ブロックが矩形ブロックである(幅および高さが異なるサイズである)ことが決定されたときに、広角イントラ予測モードが使用され得る。場合によっては、現在ブロックの(ブロックの左下角から右上角へ、またはブロックの左上角から右下角への)対角線を超えない方向(または角度)を有する任意のイントラ予測モードが、現在ブロックを予測する際に使用するために選択され得る。場合によっては、ブロックサイズ比は、使用すべきイントラ予測モードを決定するために使用され得る。例えば、矩形ブロックのブロックサイズ比は、(例えば、左下から右上への)対角線方向、したがって予測方向の許容範囲を決定するために使用され得る。予測ブロックと符号化されることになるブロックとの間の残差を最小にするイントラ予測モードが、(例えば、絶対誤差の和(SAE)、差分絶対値和(SAD)、変換差分絶対値和(SATD)、または他の類似性の尺度に基づいて)現在ブロックのために使用するために選択され得る。例示的な一例としてSAEを使用すると、イントラ予測モードの各々を使用して決定される各予測についてSAEは予測誤差の大きさを示す。実際の現在ブロックに対して最良のマッチを有するイントラ予測モードは、最小のSAEを与えるイントラ予測モードによって与えられる。例えば、プロセス900は、SAE分析に基づいて広角イントラ予測モードを選択し得、このSAE分析は、現在ブロックが矩形であることに基づいて、広角イントラ予測モードを最良のモードとして示し得る。
[0214] ブロック1008において、プロセス1000は、広角イントラ予測モードを使用して現在ブロックのための予測ブロックを決定することを含む。予測ブロックは、複数の予測サンプルを含む。予測ブロックは、複数の予測サンプルを含む。各予測サンプルは、広角イントラ予測モードを使用して決定され得る。ブロック1010において、プロセス1000は、位置依存イントラ予測組み合わせ(PDPC)を使用して修正された予測サンプルを生成するように、予測ブロックの複数の予測サンプルのうちの1つの予測サンプルを修正することを含む。例えば、予測サンプルを修正することは、広角イントラ予測モードに基づいて、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することと、修正された予測サンプルを決定された1つまたは複数の参照サンプルに基づいて生成するように予測サンプルを修正することとを含み得る。
[0215] いくつかの例では、現在ブロックの外部にある1つまたは複数の参照サンプルは、予測サンプルに対する広角イントラ予測モードの角度を使用して決定される。例えば、図7に示すように、第1のPDPC参照サンプル714(R(-1,y)と示す)、および場合によっては、第2のPDPC参照サンプルR(x,-1)が、矢印710によって表される広角イントラ予測モードの方向(または角度)に沿って決定される。
[0216] 場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行を決定することと、決定された行におけるx座標を決定することと、決定された行および決定されたx座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。そのような場合、決定された行におけるx座標は、予測サンプルのx座標+予測サンプルのy座標+1に等しい。さらに、場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの上にある行を決定することと、決定された行におけるx座標を決定すること(ここで、決定された行におけるx座標は、予測サンプルに対する広角イントラ予測モードの角度に基づく)と、決定された行および決定されたx座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。例えば、決定された行におけるx座標を決定することは、広角イントラ予測モードの角度の余接または正接のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された行におけるx座標を決定することとを含み得る。1つの例示的な例では、図7を参照すると、第2のPDPC参照サンプルR(x,-1)は、再構成された隣接参照サンプル708の行から決定される。R(x,-1)のx座標は、x=x’+tan(β)×(y’+1)として決定され得、tan(β)は、図7に示す角度βの正接である。そのような例では、決定された行(例えば、図7の行708)におけるx座標(x)は、予測サンプルのx座標(x’)+予測サンプルのy座標(y’)+1に等しく、また広角イントラ予測モードの角度(角度βの正接、tan(β))にも基づく。
[0217] 場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列を決定することと、決定された列におけるy座標を決定することと、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。そのような場合、決定された列におけるy座標は、予測サンプルのy座標+予測サンプルのx座標+1に等しい。さらに、場合によっては、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、現在ブロックの左にある列を決定することと、決定された列におけるy座標を決定すること(ここで、決定された列におけるy座標は、広角イントラ予測モードの角度に基づく)と、決定された列および決定されたy座標に基づいて1つまたは複数の参照サンプルのうちの1つの参照サンプルを決定することとを含み得る。例えば、決定された列におけるy座標を決定することは、広角イントラ予測モードの角度の余接または正接のうちの1つを決定することと、広角イントラ予測モードの角度の余接または正接のうちの1つ、予測サンプルのx座標、および予測サンプルのy座標に基づいて、決定された列におけるy座標を決定することとを含み得る。1つの例示的な例では、図7を参照すると、第1のPDPC参照サンプル714(R(-1,y))は、再構成された隣接参照サンプル706の列から決定される。R(-1,y)のy座標は、y=y’+cotan(β)×(x’+1)として決定され得、cotan(β)は、図7に示す角度βの余接である。そのような例では、決定された列(例えば、図7の列706)におけるy座標(y)は、予測サンプルのy座標(y’)+予測サンプルのx座標(x’)+1に等しく、また広角イントラ予測モードの角度(角度βの余接、cotan(β))にも基づく。
[0218] いくつかの実装形態では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて1つまたは複数のサンプルのセットを決定することと、1つまたは複数の参照サンプルを生成するために、1つまたは複数のサンプルのセットを補間すること、オフセットを用いて丸めること、またはオフセットを用いずに丸めることのうちの少なくとも1つを行うこととを含み得る。例えば、図8を参照すると、PDPC参照サンプルR(x,-1)を生成するために、サンプル812に対して補間が実行され得る。
[0219] いくつかの例では、現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、予測ブロック中の予測サンプルのそれぞれのx座標およびy座標の両方とは異なるx座標およびy座標の両方を有する1つまたは複数の参照サンプルを決定することを備える。例えば、図7に関して説明するように、第3のPDPC参照サンプル716(R(-1,-1)と示す)もまた、現在ブロック703の左上サンプルに隣接する隣接ブロックから決定され得る。
[0220] いくつかの実装形態では、広角イントラ予測モードに基づいて現在ブロックの外部にある1つまたは複数の参照サンプルを決定することは、広角イントラ予測モードに基づいて特定された現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファに記憶されていないことを決定することを含み得る。1つまたは複数の参照サンプルは、現在ブロックの外部の1つまたは複数のサンプルが参照ラインバッファに記憶されていないことに基づいて、参照ラインバッファに記憶された最後の参照サンプルに基づいて決定され得る。
[0221] いくつかの態様では、プロセス900は、予測サンプルのx座標およびy座標に基づいて1つまたは複数の重みを決定することを含み得る。例えば、上述のように、隣接対角右上モードのためのPDPC重みは、wT=32>>((y’<<1)>>shift)、wL=32>>((x’<<1)>>shift)、wTL=0、またはwT=32>>((y’<<1)>>shift)、wL=0、wTL=0の通り決定され得る。別の例では、上述のように、隣接対角左下モードのためのPDPC重みは、wL=32>>((x’<<1)>>shift)、wT=32>>((y’<<1)>>shift)、wTL=0、またはwL=32>>((x’<<1)>>shift)、wT=0、wTL=0の通り決定され得る。決定された1つまたは複数の重みは、1つまたは複数の参照サンプルとともに予測サンプルを修正するために使用され得る。例えば、修正された予測サンプルは、決定された1つまたは複数の参照サンプル、決定された1つまたは複数の重み、および予測サンプルに基づいて(例えば、上式1を使用して)生成され得る。
[0222] いくつかの例では、予測ブロックの複数の予測サンプルのうちの予測サンプルを修正することは、予測ブロックの第1の予測サンプルを修正することを含み得る。例えば、1つまたは複数の参照サンプルは、1つまたは複数の参照サンプルの第1のセットを含み得、プロセス900は、予測ブロックの第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することを含み得る。場合によっては、第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することに基づいて、PDPCが、第2の予測サンプルに適用されない場合がある。場合によっては、第2の予測サンプルについて、第2の予測サンプルのための1つまたは複数の参照サンプルの第2のセットのうちの少なくとも1つの参照サンプルが参照ラインバッファに記憶されていないことを決定することに基づいて、PDPCが、参照ラインバッファにおいて利用可能な参照サンプルのみを使用して第2の予測サンプルに適用され得る。
[0223] ブロック1012において、プロセス1000は、修正された予測サンプルおよび現在ブロックにおけるサンプル値に基づいて残差ブロックについての残差値を決定することを含む。例えば、残差値は、修正された予測サンプルと現在ブロックにおけるサンプル値との間の差(または誤差)を含み得る。残差値および/または変換係数を有する変換ブロック(例えば、TU、TB、または同様のもの)が、現在ブロックのために決定された1つまたは複数の残差値に基づいて生成され得る。例えば、残差データは、画素ドメインから変換ドメインに変換され得、残差変換係数をもたらす。残差変換係数は量子化され得、場合によっては、量子化された変換係数にエントロピーコーディングが適用され得る。ブロック1014において、プロセス1000は、残差値を示す情報をシグナリングすることを含む。情報は、残差変換ブロック(エントロピーコーディングされ得る)、残差変換係数、量子化された残差変換係数、またはエントロピーコーディングされた量子化された残差変換係数を含み得る。
[0224] いくつかの例では、プロセス900および1000は、コンピューティングデバイスまたは装置によって実行され得る。例えば、プロセス900は、ビデオデコーダ30によって、またはビデオデコーダ30を含むビデオデータを復号するためのデバイスもしくは装置(例えば、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックス)によって実行され得る。別の例では、プロセス1000は、ビデオエンコーダ22によって、またはビデオエンコーダ22を含むビデオデータを符号化するためのデバイスもしくは装置(例えば、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックス)によって実行され得る。場合によっては、コンピューティングデバイスまたは装置は、プロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはプロセス900および1000のうちの一方または両方のステップを行うように構成されたデバイスの他の構成要素を含み得る。いくつかの例では、コンピューティングデバイスまたは装置は、1つまたは複数の画像をキャプチャするための1つまたは複数のカメラ、入力デバイス(例えば、タッチスクリーンインターフェース、キーパッド、マウス、または他の入力デバイス)、出力デバイス(例えば、現在ブロック、1つまたは複数の画像、通知、および/または他の表示可能なデータを表示するためのディスプレイ、オーディオを出力するためのスピーカ、または他の出力デバイス)、それらの任意の組合せ、または他の好適な構成要素などの、1つまたは複数の構成要素を含み得る。いくつかの例では、コンピューティングデバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、ウェアラブルデバイス、もしくは同様のもの、または1つまたは複数の構成要素を有する他のデバイスを含み得る。場合によっては、コンピューティングデバイスはビデオコーデックを含み得る。いくつかの例では、1つまたは複数の構成要素のいくつかは、コンピューティングデバイスから分離している場合があり、その場合、コンピューティングデバイスは、データを受信するか、またはデータを送信する。コンピューティングデバイスは、データを通信するように構成されたネットワークインターフェースをさらに含み得る。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他の好適なネットワークデータを通信するように構成され得る。
[0225] コンピューティングデバイスの構成要素(例えば、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、および/または他の構成要素)は、回路内に実装され得る。例えば、これら構成要素は、電子回路または他の電子ハードウェアを含むことができ、および/またはそれらを使用して実装されることができ、電子回路または他の電子ハードウェアは、1つまたは複数のプログラマブル電子回路(例えば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタルシグナルプロセッサ(DSP)、中央処理ユニット(CPU)、および/または他の好適な電子回路)を含むことができ、ならびに/もしくは本明細書で説明する様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せを含むことができ、および/またはそれらを使用して実装されることができる。
[0226] プロセス900および1000は、論理フロー図として例示されており、それらの動作は、ハードウェア、コンピュータ命令、またはそれらの組合せにおいて実施されることができる一連の動作を表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されると、記載された動作を実行する1つまたは複数のコンピュータ可読記憶媒体上に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するか、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、および同様のものを含む。動作が説明された順序は、限定として解釈されることを意図しておらず、任意の数の説明された動作が、プロセスを実施するために任意の順序でおよび/または並行して組み合わされることができる。
[0227] 加えて、プロセス900および1000は、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実行され得、1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで、集合的に実行されるコード(例えば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実施され得る。上述のように、コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体上に記憶され得る。コンピュータ可読記憶媒体または機械可読記憶媒体は、非一時的であり得る。
[0228] 図11は、本開示の技法を実施し得る例示的なビデオエンコーダ22を例示するブロック図である。図11は説明を目的として提供されており、本開示に広く例示および説明される技法を限定するものとみなされるべきではない。本開示の技法は、様々なコーディング規格または方法に適用可能であり得る。
[0229] 図11の例では、ビデオエンコーダ22は、予測処理ユニット100、ビデオデータメモリ101、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構成ユニット112、フィルタユニット114、復号ピクチャバッファ116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニットを含み得る(図示せず)。
[0230] ビデオデータメモリ101は、ビデオエンコーダ22の構成要素によって符号化されることになるビデオデータを記憶するように構成され得る。ビデオデータメモリ101に記憶されたビデオデータは、例えば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、例えば、イントラコーディングモードまたはインターコーディングモードで、ビデオエンコーダ22によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同期ダイナミックランダムアクセスメモリ(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ101は、ビデオエンコーダ22の他の構成要素とともにオンチップであり得るか、またはそれらの構成要素に対してオフチップであり得る。ビデオデータメモリ101は、図1の記憶媒体20と同じまたはその一部であり得る。
[0231] ビデオエンコーダ22は、ビデオデータを受信する。ビデオエンコーダ22は、このビデオデータのピクチャのスライス中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマCTBおよび対応するCTBに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、CTUのCTBを漸進的に小さくなるブロックへと分割するために分割を実行し得る。より小さいブロックは、CUのコーディングブロックであり得る。例えば、予測処理ユニット100は、ツリー構造にしたがって、CTUに関連付けられたCTBを分割し得る。本開示の1つまたは複数の技法にしたがって、ツリー構造の各深度レベルにあるツリー構造の各それぞれの非リーフノードについて、それぞれの非リーフノードに対して複数の許容分割パターンが存在し、それぞれの非リーフノードに対応するビデオブロックは、複数の許容可能な分割パターンのうちの1つにしたがって、それぞれの非リーフノードの子ノードに対応するビデオブロックへと分割される。1つの例では、予測処理ユニット100またはビデオエンコーダ22の別の処理ユニットは、本明細書で説明された技法の任意の組合せを実行するように構成され得る。
[0232] ビデオエンコーダ22は、CUの符号化された表現(すなわち、コーディングされたCU)を生成するために、CTUのCUを符号化し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUに関連付けられたコーディングブロックを分割し得る。本開示の技法にしたがって、CUは、単一のPUのみを含み得る。すなわち、本開示のいくつかの例では、CUが別々の予測ブロックへと分割されるのではなく、むしろ、予測プロセスが、このCU全体に対して実行される。よって、各CUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ22およびビデオデコーダ30は、様々なサイズを有するCUをサポートし得る。上述のように、CUのサイズは、CUのルーマコーディングブロックのサイズと、ルーマ予測ブロックのサイズを指し得る。上述のように、ビデオエンコーダ22およびビデオデコーダ30は、本明細書で説明する例示的な分割技法の任意の組合せによって定義されるCUサイズをサポートし得る。
[0233] インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによって、PUについての予測データを生成し得る。本明細書で説明されたように、本開示のいくつかの例では、CUは、単一のPUのみを含み得、すなわち、CUおよびPUは同義であり得る。PUについての予測データは、PUの予測ブロックおよびPUについての動き情報を含み得る。インター予測処理ユニット120は、PUが、Iスライス中にあるか、Pスライス中にあるか、Bスライス中にあるかに依存して、PUまたはCUのために異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120は、PUに対してインター予測を実行しない。よって、Iモードで符号化されるブロックの場合、予測されたブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。PUがPスライス中にある場合、インター予測処理ユニット120は、PUの予測ブロックを生成するために、単方向性インター予測を使用し得る。PUがBスライス中にある場合、インター予測処理ユニット120は、PUの予測ブロックを生成するために、単方向性または双方向性インター予測を使用し得る。
[0234] イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUについての予測データを生成し得る。PUについての予測データは、PUの予測ブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実行し得る。
[0235] PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、PUについての予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット126は、PUについての予測ブロックを生成するために、隣接するPUのサンプルブロックからサンプルを使用し得る。隣接するPUは、PU、CU、およびCTUに対して左から右、上から下の符号化順序を前提として、PUの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、例えば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連する領域のサイズに依存し得る。
[0236] 1つの例では、イントラ予測処理ユニット126は、本開示の技法を実施するように構成され得る。他の例では、他のユニットまたはモジュールが、本開示の技法の全部または一部を実施するように構成され得る。
[0237] 予測処理ユニット100は、PUについてのインター予測処理ユニット120によって生成された予測データまたはPUについてのイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUについての予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪みメトリックに基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれ得る。
[0238] 残差生成ユニット102は、CUについてのコーディングブロック(例えば、ルーマ、Cb、およびCrコーディングブロック)と、CUのPUについての選択された予測ブロック(例えば、予測ルーマ、Cb、およびCrブロック)とに基づいて、CUについての残差ブロック(例えば、ルーマ、Cb、およびCr残差ブロック)を生成し得る。例えば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルと、CUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0239] 変換処理ユニット104は、CUに関連付けられた残差ブロックをCUのTUに関連付けられた変換ブロックに分割するために四分木分割を実行し得る。よって、TUは、1つのルーマ変換ブロックと、2つのクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づく場合も基づかない場合もある。「残差四分木」(RQT)として知られている四分木構造は、領域の各々に関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。他の例では、変換処理ユニット104は、本明細書で説明された分割技法にしたがってTUを分割するように構成され得る。例えば、ビデオエンコーダ22は、RQT構造を使用して、CUをTUへとそれ以上分割することができない。このように、1つの例では、CUは、単一のTUを含む。
[0240] 変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。例えば、変換処理ユニット104は、変換ブロックに、離散コサイン変換(DCT)、方向性変換、または概念的に類似した変換を適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは、変換係数ブロックとして扱われ得る。
[0241] 量子化ユニット106は、係数ブロックにおける変換係数を量子化し得る。量子化プロセスは、変換係数のうちの一部または全部に関連付けられたビット深度を低減し得る。例えば、nビット変換係数は、量子化中に、mビット変換係数へと端数が切り捨てられ得、ここで、nは、mよりも大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ22は、CUに関連付けられたQP値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失を引き起こし得る。よって、量子化された変換係数は、元のものよりも低い精度を有し得る。
[0242] 逆量子化ユニット108および逆変換処理ユニット110は、係数ブロックから残差ブロックを再構成するために、それぞれ、係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット112は、TUに関連付けられた再構成された変換ブロックを生成するために、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算し得る。このようにしてCUのTUごとに変換ブロックを再構成することによって、ビデオエンコーダ22は、CUのコーディングブロックを再構成し得る。
[0243] フィルタユニット114は、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減するために、1つまたは複数のデブロッキング動作を実行し得る。復号ピクチャバッファ116は、フィルタユニット114が再構成されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後に、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実行するために、再構成されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116中の再構成されたコーディングブロックを使用し得る。
[0244] エントロピー符号化ユニット118は、ビデオエンコーダ22の他の機能構成要素からデータを受信し得る。例えば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、エントロピー符号化されたデータを生成するために、データに対して1つまたは複数のエントロピー符号化動作を実行し得る。例えば、エントロピー符号化ユニット118は、データに対して、CABAC動作、コンテキスト適応型可変長コーディング(CAVLC)動作、V2V(variable-to-variable)長コーディング動作、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)動作、確率区間区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を実行し得る。ビデオエンコーダ22は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力し得る。例えば、ビットストリームは、本開示の技法にしたがってCUのための分割構造を表すデータを含み得る。
[0245] 図12は、本開示の技法を実施するように構成された例示的なビデオデコーダ30を例示するブロック図である。図12は説明を目的として提供されており、本開示において広く例示および説明される技法を限定するものではない。説明の目的のために、本開示は、HEVCコーディングのコンテキストでビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0246] 図12の例では、ビデオデコーダ30は、エントロピー復号ユニット150、ビデオデータメモリ151、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号ピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
[0247] ビデオデータメモリ151は、ビデオデコーダ30の構成要素によって復号されることになる、符号化されたビデオビットビットストリームなどの符号化されたビデオデータを記憶し得る。ビデオデータメモリ151に記憶されたビデオデータは、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、もしくは物理的データ記憶媒体にアクセスすることによって、例えば、コンピュータ可読媒体16から、例えば、カメラなどのローカルビデオソースから、取得され得る。ビデオデータメモリ151は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ162は、例えば、イントラコーディングモードまたはインターコーディングモードで、ビデオデコーダ30によってビデオデータを復号する際に使用するための、または出力のための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同期ダイナミックランダムアクセスメモリ(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他の構成要素とともにオンチップであり得るか、またはそれらの構成要素に対してオフチップであり得る。ビデオデータメモリ151は、図1の記憶媒体28と同じまたはその一部であり得る。
[0248] ビデオデータメモリ151は、ビットストリームの符号化されたビデオデータ(例えば、NALユニット)を受信し、記憶する。エントロピー復号ユニット150は、ビデオデータメモリ151から符号化されたビデオデータ(例えば、NALユニット)を受信し得、シンタックス要素を取得するためにそのNALユニットをパースし得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。エントロピー復号ユニット150は、エントロピー符号化ユニット118のプロセスとはほぼ逆のプロセスを実行し得る。
[0249] 本開示のいくつかの例にしたがって、エントロピー復号ユニット150、またはビデオデコーダ30の別の処理ユニットは、ビットストリームからシンタックス要素を取得することの一部としてツリー構造を決定し得る。ツリー構造は、CTBなどの初期ビデオブロックがコーディングユニットなどのより小さいビデオブロックへとどのように分割されるかを指定し得る。本開示の1つまたは複数の技法にしたがって、ツリー構造の各深度レベルにあるツリー構造の各それぞれの非リーフノードについて、それぞれの非リーフノードに対して複数の許容分割タイプが存在し、それぞれの非リーフノードに対応するビデオブロックは、複数の許容可能な分割パターンのうちの1つにしたがって、それぞれの非リーフノードの子ノードに対応するビデオブロックへと分割される。
[0250] ビットストリームからシンタックス要素を取得することに加え、ビデオデコーダ30は、分割されていないCUに対して再構成動作を実行し得る。CUに対して再構成動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実行し得る。CUの各TUに対して再構成動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構成し得る。上述のように、本開示の1つの例では、CUは、単一のTUを含む。
[0251] CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)し得る。逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUに関連付けられた残差ブロックを生成するために、この係数ブロックに1つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット156は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を適用し得る。
[0252] CUまたはPUがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット166は、PUの予測ブロックを生成するために、イントラ予測を実行し得る。イントラ予測処理ユニット166は、ブロックに空間的に隣接するサンプルに基づいて、PUの予測ブロックを生成するために、イントラ予測モードを使用し得る。イントラ予測処理ユニット166は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。
[0253] 1つの例では、イントラ予測処理ユニット166は、本開示の技法を実施するように構成され得る。他の例では、他のユニットまたはモジュールは、本開示の技法の全部または一部を実施するように構成され得る。
[0254] PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUについての動き情報を決定し得る。動き補償ユニット164は、PUの動き情報に基づいて、1つまたは複数の参照ブロックを決定し得る。動き補償ユニット164は、1つまたは複数の参照ブロックに基づいて、PUについての予測ブロック(例えば、予測ルーマ、Cb、およびCrブロック)を生成し得る。上述のように、CUは単一のPUのみを含み得る。すなわち、CUは、複数のPUへと分割されない場合がある。
[0255] 再構成ユニット158は、CUについてのコーディングブロック(例えば、ルーマ、Cb、およびCrコーディングブロック)を再構成するために、CUのTUについての変換ブロック(例えば、ルーマ、Cb、およびCr変換ブロック)およびCUのPUの予測ブロック(例えば、ルーマ、Cb、およびCrブロック)、すなわち、適用可能な場合、イントラ予測データまたはインター予測データのいずれかを使用し得る。例えば、再構成ユニット158は、CUのコーディングブロック(例えば、ルーマ、Cb、およびCrコーディングブロック)を再構成するために、変換ブロック(例えば、ルーマ、Cb、およびCr変換ブロック)のサンプルを、予測ブロック(例えば、ルーマ、Cb、およびCr予測ブロック)の対応するサンプルに加算し得る。
[0256] フィルタユニット160は、CUのコーディングブロックに関連付けられたブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。ビデオデコーダ30は、CUのコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および、図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。例えば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロックに基づいて、他のCUのPUのためにイントラ予測またはインター予測動作を実行し得る。
[0257] ビデオデコーダは、現在ブロックの復号されたバージョンを含む現在ピクチャの復号されたバージョンを出力する。ビデオデコーダが、表示可能な復号されたビデオを出力するように構成されたビデオデコーダであるとき、ビデオデコーダは、例えば、現在ピクチャの復号されたバージョンをディスプレイデバイスに出力し得る。復号がビデオ符号化プロセスの復号ループの一部として実行されるとき、ビデオデコーダは、ビデオデータの別のピクチャを符号化する際に使用するための参照ピクチャとして、現在ピクチャの復号されたバージョンを記憶し得る。
[0258] 本開示の特定の態様は、例示の目的でHEVC規格の拡張版に関連して説明されている。しかしながら、本開示で説明された技法は、未だ開発されていない他の標準的なまたは専有のビデオコーディングプロセスを含む、他のビデオコーディングプロセスに有用であり得る。
[0259] 本開示で説明したように、ビデオコーダは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指し得る。同じく、ビデオコーディングは、適用可能な場合、ビデオ符号化またはビデオ復号を指し得る。この開示において、「〜に基づいて」という語句は、〜のみに基づいて、〜に少なくとも部分的に基づいて、または〜に何らかの方法で基づいて、を示し得る。本開示は、1つまたは複数のサンプルブロックのサンプルをコーディングするために使用される1つまたは複数のサンプルブロックおよびシンタックス構造を指すために「ビデオ単位」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオ単位には、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック分割等が含まれ得る。いくつかのコンテキストでは、PUについての説明は、マクロブロックまたはマクロブロック分割についての説明と置き換えられ得る。例示的なタイプのビデオブロックには、コーディングツリーブロック、コーディングブロック、およびビデオデータの他のタイプのブロックが含まれ得る。
[0260] 本開示の技法は、ワイヤレスアプリケーションまたは設定に必ずしも限定されるわけではない。本技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTPを介した動的適応型ストリーミング(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話通信などのアプリケーションをサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
[0261] 本明細書で使用されるとき、「コンピュータ可読媒体」という用語は、限定されるものではないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、および命令(単数または複数の)および/またはデータを記憶、包含、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶されることができかつワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的な媒体を含み得る。非一時的な媒体の例は、限定されるものではないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多目的ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表し得るコードおよび/または機械実行可能命令を記憶し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡すことおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データ等は、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信、または同様のものを含む任意の好適な手段を介して渡され得る、転送され得る、または送信され得る。
[0262] いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームおよび同様のものを含むワイヤレス信号またはケーブルを含み得る。しかしながら、言及されるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明示的に除外する。
[0263] 本明細書で提供される実施形態および例の完全な理解を提供するために、上記説明において特定の詳細が提供されている。しかしながら、実施形態がこれらの特定の詳細なしに実施され得ることが当業者によって理解されよう。説明を明確にするために、いくつかの例では、本技術は、ソフトウェアまたはハードウェアとソフトウェアの組合せにおいて具現化されるデバイス、デバイス構成要素、方法のステップまたはルーチンを備える機能ブロックを含む個別の機能ブロックを含むものとして提示され得る。図示および/または本明細書で説明されたもの以外の追加の構成要素が使用されてもよい。例えば、回路、システム、ネットワーク、プロセス、および他の構成要素が、不要な詳細で実施形態を曖昧にしないように、ブロック図形式の構成要素として示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造、および技法が、実施形態を曖昧にすることを避けるために、不要な詳細なく示され得る。
[0264] 個別の実施形態が、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上で説明され得る。フローチャートは、動作を順次プロセスとして説明し得るが、これら動作の多くは並行してまたは同時に行われ得る。さらに、動作の順序は並べ換えられ得る。プロセスは、その動作が完了したときに終了するが、図面に含まれていない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラム等に対応し得る。プロセスが関数に対応するとき、その終了は、この関数が呼び出し関数または主関数に戻ることに対応し得る。
[0265] 上述の例によるプロセスおよび方法は、コンピュータ可読媒体に記憶された、またはそうでない場合コンピュータ可読媒体から利用可能であるコンピュータ実行可能命令を使用して実施され得る。そのような命令は、例えば、汎用コンピュータ、専用コンピュータ、または処理デバイスが、ある特定の機能または機能グループを実行するようにさせるか、またはそうでない場合構成する命令およびデータを含み得る。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、ソースコード等であり得る。命令、使用される情報、および/または説明された例による方法の間に作成される情報を記憶するために使用され得るコンピュータ可読媒体の例には、磁気または光ディスク、フラッシュメモリ、不揮発性メモリが設けられたUSBデバイス、ネットワーク化された記憶デバイス等が含まれる。
[0266] これらの開示によるプロセスおよび方法を実施するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含み得、様々なフォームファクタのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(例えば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサ(単数または複数)が、必要なタスクを実行し得る。フォームファクタの典型的な例には、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他のスモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイス等が含まれる。本明細書で説明する機能は、周辺機器またはアドインカードでも具現化され得る。かかる機能はまた、さらなる例として、単一のデバイス内で実行される異なるプロセスまたは異なるチップ間の回路基板上で実施され得る。
[0267] 命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明する機能を提供するための例示的な手段である。
[0268] 前述の説明では、本願の態様は、その特定の実施形態を参照して説明されたが、当業者であれば、本願がそれに限定されないことを認識するであろう。よって、本願の例示的な実施形態が本明細書で詳細に説明されたが、発明の概念は、他の方法で様々に具現化され用いられることができ、添付の特許請求の範囲は、先行技術によって限定される場合を除き、そのような変形例を含むように解釈されると意図していることを理解されたい。上述の出願の様々な特徴および態様は、個別または一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明したものを超える任意の数の環境および用途において利用され得る。したがって、本明細書および図面は、制限的ではなくむしろ例示的であると見なされるべきである。例示を目的として、方法は、特定の順序で説明された。代替の実施形態では、これら方法が、説明したものとは異なる順序で実行され得ることを理解されたい。
[0269] 当業者は、本明細書で使用される小なり(「<」)および大なり(「>」)記号または用語が、本説明の範囲から逸脱することなく、それぞれ、小なりイコール(「≦」)および大なりイコール(「≧」)記号と置き換えできることを理解するであろう。
[0270] 構成要素がある特定の動作を実行する「ように構成される」ものとして説明される場合、そのような構成は、例えば、動作を実行するように電子回路または他のハードウェアを設計することによって、動作を実行するようにプログラマブル電子回路(例えば、マイクロプロセッサ、または他の好適な電子回路)をプログラミングすることによって、またはそれらの任意の組合せによって、達成されることができる。
[0271] 「〜に結合された」という語句は、直接的または間接的に別の構成要素に物理的に接続された任意の構成要素、および/または直接的または間接的に別の構成要素と通信している(例えば、ワイヤードまたはワイヤレス接続、および/または他の好適な通信インターフェースを介して別の構成要素に接続された)任意の構成要素を指す。
[0272] セット「のうちの少なくとも1つ」と記載する請求項の記載または他の記載は、セットのうちの1つのメンバまたはセットのうちの複数のメンバが請求項を満たすことを示す。例えば、「AおよびBのうちの少なくとも1つ」と記載する請求項の記載は、A、B、またはAおよびBを意味する。
[0273] 本明細書に開示される実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。このハードウェアとソフトウェアの互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概して、それらの機能性の観点から上述されている。このような機能性が、ハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の用途およびシステム全体に課せられる設計制約に依存する。当業者は、特定の用途ごとに、説明された機能性を多様な方法で実装してよいが、このような実装の判断は本発明の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
[0274] 本明細書で説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せにおい実施され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおけるアプリケーションを含む複数の用途を有する集積回路デバイスなどの様々なデバイスのうちの任意のものにおいて実施され得る。モジュールまたは構成要素として説明された任意の特徴は、集積論理デバイスにおいて共に、またはディスクリートではあるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアで実施される場合、本技法は、少なくとも部分的に、命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって実現され得、これら命令は、実行されると、上述の方法のうちの1つまたは複数を実行する。コンピュータ可読データ記憶媒体は、コンピュータプログラム製品の一部を形成し得、それは、パッケージング材料を含み得る。コンピュータ可読媒体は、同期ダイナミックミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、不揮発ランダムアクセスメモリ(NVRAM)、電気的に消去可能なプログラマブル読取専用メモリ(EEPROM(登録商標))、FLASH(登録商標)メモリ、磁気または光データ記憶媒体、および同様のものなどの、メモリまたはデータ記憶媒体を備え得る。本技法は、追加的または代替的に、少なくとも部分的に、伝搬された信号または波などの、コンピュータによってアクセス、読取、および/または実行されることができ、かつ、データ構造または命令の形態でプログラムコードを搬送または通信する、コンピュータ可読通信媒体によって実現され得る。
[0275] プログラムコードは、プロセッサによって実行され得、これは、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積回路またはディスクリート論理回路などの1つまたは複数のプロセッサを含み得る。そのようなプロセッサは、この開示に説明される技法のうちの任意のものを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、このプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアに連結した1つまたは複数のマイクロプロセッサ、または他の任意のそのような構成として実施され得る。したがって、本明細書で使用される場合、「プロセッサ」という用語は、前述の構造の任意のもの、前述の構造の任意の組合せ、または本明細書で説明された技法の実施に好適な任意の他の構造または装置を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得るか、または複合ビデオエンコーダ・デコーダ(CODEC)に組み込まれ得る。