(57)【要約】  ビデオコーダが、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較し、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定し、第１の差分値と同じ符号を有する第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較し、第２の差分値に基づいて、第１のサンプルに対するオフセットとは異なる、第２のサンプルに対するオフセットを決定し、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットをおよび第２のサンプル値に第２のオフセットを適用する。
2019534631.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号するための方法であって、前記方法は、
第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較することと、
前記第１の差分値に基づいて、前記第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、前記第１のオフセットは、第１の非ゼロ値であり、
第２の差分値を決定するために、前記現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、前記第１のセットの隣接サンプルは、前記第２のセットの隣接サンプルが前記第２のサンプルに対して有しているのと同じパターンを前記第１のサンプルに対して有し、ここにおいて、前記第１の差分値および前記第２の差分値は、同じ符号を有し、
前記第２の差分値に基づいて、前記第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、前記第２のオフセットは、前記第１の非ゼロ値とは異なる第２の非ゼロ値であり、
フィルタされた画像を生成するために、前記第１のサンプル値に前記第１のオフセットをおよび前記第２のサンプル値に前記第２のオフセットを適用することと
を備える、方法。
【請求項２】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、２つより多くのサンプルをそれぞれ含む、請求項１に記載の方法。
【請求項３】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、前記現在のブロックを含む現在のピクチャとは異なるピクチャ中にある少なくとも１つの時間的隣接サンプルをそれぞれ含む、請求項１に記載の方法。
【請求項４】
ビデオデータの前記現在のブロックについて、隣接サンプルの位置を示すシンタックスデータを受信することと、ここにおいて、前記隣接サンプルの前記位置は、前記パターンを定義し、
前記隣接サンプルの前記位置を示す前記受信されたシンタックスデータに基づいて、前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルを決定することと
をさらに備える、請求項１に記載の方法。
【請求項５】
ビデオデータの前記現在のブロックについて、少なくとも２つのグループに前記現在のブロックのサンプルをグループ分けするための規則のセットを示すシンタックスデータを受信することと、ここにおいて、第１のグループは、フィルタされるべきサンプルを備え、第２のグループは、フィルタされるべきでないサンプルを備え、
前記第１のサンプルおよび前記第２のサンプルが、前記第１のグループに属することを決定することと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較することは、前記現在のブロックの前記第１のサンプルの値を、前記第１のセットの隣接サンプルの平均値と比較することを備える、請求項１に記載の方法。
【請求項７】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較することは、前記現在のブロックの前記第１のサンプルの値と、前記第１のセットの隣接サンプルのサンプル値との間の値の差分の総和を決定することを備える、請求項１に記載の方法。
【請求項８】
前記第１のサンプルの値が、前記第１のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく、前記第２のサンプルの値が、前記第２のセットの隣接サンプルにおけるサンプルの全ての値よりも大きい、請求項１に記載の方法。
【請求項９】
前記方法は、ビデオ符号化プロセスの一部として実行される、請求項１に記載の方法。
【請求項１０】
ビデオデータを復号するためのデバイスであって、前記デバイスは、
前記ビデオデータを記憶するように構成されたメモリと、
第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較することと、
前記第１の差分値に基づいて、前記第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、前記第１のオフセットは、第１の非ゼロ値であり、
第２の差分値を決定するために、前記現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、前記第１のセットの隣接サンプルは、前記第２のセットの隣接サンプルが前記第２のサンプルに対して有しているのと同じパターンを前記第１のサンプルに対して有し、ここにおいて、前記第１の差分値および前記第２の差分値は、同じ符号を有し、
前記第２の差分値に基づいて、前記第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、前記第２のオフセットは、前記第１の非ゼロ値とは異なる第２の非ゼロ値であり、
フィルタされた画像を生成するために、前記第１のサンプル値に前記第１のオフセットをおよび前記第２のサンプル値に前記第２のオフセットを適用することと
を行うように構成された１つまたは複数のプロセッサと
を備える、デバイス。
【請求項１１】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、２つより多くのサンプルをそれぞれ含む、請求項１０に記載のデバイス。
【請求項１２】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、前記現在のブロックを含む現在のピクチャとは異なるピクチャ中にある少なくとも１つの時間的隣接サンプルをそれぞれ含む、請求項１０に記載のデバイス。
【請求項１３】
前記１つまたは複数のプロセッサは、
ビデオデータの前記現在のブロックについて、隣接サンプルの位置を示すシンタックスデータを受信することと、ここにおいて、前記隣接サンプルの前記位置は、前記パターンを定義する、
前記隣接サンプルの前記位置を示す前記受信されたシンタックスデータに基づいて、前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルを決定することと
を行うようにさらに構成される、請求項１０に記載のデバイス。
【請求項１４】
前記１つまたは複数のプロセッサは、
ビデオデータの前記現在のブロックについて、少なくとも２つのグループに前記現在のブロックのサンプルをグループ分けするための規則のセットを示すシンタックスデータを受信することと、ここにおいて、第１のグループは、フィルタされるべきサンプルを備え、第２のグループは、フィルタされるべきでないサンプルを備え、
前記第１のサンプルおよび前記第２のサンプルが、前記第１のグループに属することを決定することと
を行うようにさらに構成される、請求項１０に記載のデバイス。
【請求項１５】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するために、前記１つまたは複数のプロセッサは、前記現在のブロックの前記第１のサンプルの値を、前記第１のセットの隣接サンプルの平均値と比較するようにさらに構成される、請求項１０に記載のデバイス。
【請求項１６】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するために、前記１つまたは複数のプロセッサは、前記現在のブロックの前記第１のサンプルの値と、前記第１のセットの隣接サンプルのサンプル値との間の値の差分の総和を決定するようにさらに構成される、請求項１０に記載のデバイス。
【請求項１７】
前記第１のサンプルの値が、前記第１のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく、前記第２のサンプルの値が、前記第２のセットの隣接サンプルにおけるサンプルの全ての値よりも大きい、請求項１０に記載のデバイス。
【請求項１８】
前記デバイスは、ビデオ符号化プロセスの一部として、ビデオデータを復号するように構成される、請求項１０に記載のデバイス。
【請求項１９】
前記デバイスは、ワイヤレス通信デバイスを備え、符号化されたビデオデータを受信するように構成された受信機をさらに備える、請求項１０に記載のデバイス。
【請求項２０】
前記ワイヤレス通信デバイスは、電話ハンドセットを備え、前記受信機は、ワイヤレス通信規格に従って、前記符号化されたビデオデータを備える信号を復調するように構成される、請求項１９に記載のデバイス。
【請求項２１】
１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに、
第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較することと、
前記第１の差分値に基づいて、前記第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、前記第１のオフセットは、第１の非ゼロ値であり、
第２の差分値を決定するために、前記現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、前記第１のセットの隣接サンプルは、前記第２のセットの隣接サンプルが前記第２のサンプルに対して有しているのと同じパターンを前記第１のサンプルに対して有し、ここにおいて、前記第１の差分値および前記第２の差分値は、同じ符号を有し、
前記第２の差分値に基づいて、前記第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、前記第２のオフセットは、前記第１の非ゼロ値とは異なる第２の非ゼロ値であり、
フィルタされた画像を生成するために、前記第１のサンプル値に前記第１のオフセットをおよび前記第２のサンプル値に前記第２のオフセットを適用することと
を行わせる命令を記憶したコンピュータ可読媒体。
【請求項２２】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、２つより多くのサンプルをそれぞれ含む、請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、前記現在のブロックを含む現在のピクチャとは異なるピクチャ中にある少なくとも１つの時間的隣接サンプルをそれぞれ含む、請求項２１に記載のコンピュータ可読媒体。
【請求項２４】
実行されると、前記１つまたは複数のプロセッサに、
ビデオデータの前記現在のブロックについて、隣接サンプルの位置を示すシンタックスデータを受信することと、ここにおいて、前記隣接サンプルの前記位置は、前記パターンを定義する、
前記隣接サンプルの前記位置を示す前記受信されたシンタックスデータに基づいて、前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルを決定することと
を行わせるさらなる命令を記憶した、請求項２１に記載のコンピュータ可読媒体。
【請求項２５】
実行されると、前記１つまたは複数のプロセッサに、
ビデオデータの前記現在のブロックについて、少なくとも２つのグループに前記現在のブロックのサンプルをグループ分けするための規則のセットを示すシンタックスデータを受信することと、ここにおいて、第１のグループは、フィルタされるべきサンプルを備え、第２のグループは、フィルタされるべきでないサンプルを備え、
前記第１のサンプルおよび前記第２のサンプルが、前記第１のグループに属することを決定することと
を行わせるさらなる命令を記憶した、請求項２１に記載のコンピュータ可読媒体。
【請求項２６】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するために、前記命令は、前記１つまたは複数のプロセッサに、前記現在のブロックの前記第１のサンプルの値を、前記第１のセットの隣接サンプルの平均値と比較することを行わせる、請求項２１に記載のコンピュータ可読媒体。
【請求項２７】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するために、前記命令は、前記１つまたは複数のプロセッサに、前記現在のブロックの前記第１のサンプルの値と、前記第１のセットの隣接サンプルのサンプル値との間の値の差分の総和を決定することを行わせる、請求項２１に記載のコンピュータ可読媒体。
【請求項２８】
前記第１のサンプルの値が、前記第１のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく、前記第２のサンプルの値が、前記第２のセットの隣接サンプルにおけるサンプルの全ての値よりも大きい、請求項２１に記載のコンピュータ可読媒体。
【請求項２９】
ビデオデータを復号するための装置であって、前記装置は、
第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較するための手段と、
前記第１の差分値に基づいて、前記第１のサンプルに対する第１のオフセットを決定するための手段と、ここにおいて、前記第１のオフセットは、第１の非ゼロ値であり、
第２の差分値を決定するために、前記現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較するための手段と、ここにおいて、前記第１のセットの隣接サンプルは、前記第２のセットの隣接サンプルが前記第２のサンプルに対して有しているのと同じパターンを前記第１のサンプルに対して有し、ここにおいて、前記第１の差分値および前記第２の差分値は、同じ符号を有し、
前記第２の差分値に基づいて、前記第２のサンプルに対する第２のオフセットを決定するための手段と、ここにおいて、前記第２のオフセットは、前記第１の非ゼロ値とは異なる第２の非ゼロ値であり、
フィルタされた画像を生成するために、前記第１のサンプル値に前記第１のオフセットをおよび前記第２のサンプル値に前記第２のオフセットを適用するための手段と
を備える、装置。
【請求項３０】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、２つより多くのサンプルをそれぞれ含む、請求項２９に記載の装置。
【請求項３１】
前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルは、前記現在のブロックを含む現在のピクチャとは異なるピクチャ中にある少なくとも１つの時間的隣接サンプルをそれぞれ含む、請求項２９に記載の装置。
【請求項３２】
ビデオデータの前記現在のブロックについて、隣接サンプルの位置を示すシンタックスデータを受信するための手段と、ここにおいて、前記隣接サンプルの前記位置は、前記パターンを定義する、
前記隣接サンプルの前記位置を示す前記受信されたシンタックスデータに基づいて、前記第１のセットの隣接サンプルおよび前記第２のセットの隣接サンプルを決定するための手段と
をさらに備える、請求項２９に記載の装置。
【請求項３３】
ビデオデータの前記現在のブロックについて、少なくとも２つのグループに前記現在のブロックのサンプルをグループ分けするための規則のセットを示すシンタックスデータを受信することと、ここにおいて、第１のグループは、フィルタされるべきサンプルを備え、第２のグループは、フィルタされるべきでないサンプルを備え、
前記第１のサンプルおよび前記第２のサンプルが、前記第１のグループに属することを決定するための手段と
をさらに備える、請求項２９に記載の装置。
【請求項３４】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するための前記手段は、前記現在のブロックの前記第１のサンプルの値を、前記第１のセットの隣接サンプルの平均値と比較するための手段を備える、請求項２９に記載の装置。
【請求項３５】
前記第１の差分値を決定するために、前記現在のブロックの前記第１のサンプルを、前記第１のセットの隣接サンプルと比較するための前記手段は、前記現在のブロックの前記第１のサンプルの値と、前記第１のセットの隣接サンプルのサンプル値との間の値の差分の総和を決定するための手段を備える、請求項２９に記載の装置。
【請求項３６】
前記第１のサンプルの値が、前記第１のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく、前記第２のサンプルの値が、前記第２のセットの隣接サンプルにおけるサンプルの全ての値よりも大きい、請求項２９に記載の装置。
【発明の詳細な説明】
【関連出願の説明】
【０００１】
[0001]本願は、２０１６年１０月４日に出願された米国仮特許出願第６２／４０４，１２６号の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【技術分野】
【０００２】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲーム機、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、幅広い範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、パート１０、アドバンストビデオコーディング（ＡＶＣ）によって定められている規格、最近完成した高効率ビデオコーディング（ＨＥＶＣ）規格、およびそのような規格の拡張に記載されているものなどの、ビデオ圧縮技法をインプリメントする。ビデオデバイスは、このようなビデオ圧縮技法をインプリメントすることによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または取り除くために、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）が、ツリーブロック、コーディングユニット（ＣＵ:coding units）および／またはコーディングノードとも呼ばれ得る、ビデオブロックに区分化され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロックにおける参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロックにおける参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【０００５】
[0005]空間的または時間的予測は、コーディングされるべきブロックについての予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、コーディングされたブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その後、これは量子化され得る。最初に２次元アレイに配置される量子化変換係数は、変換係数の１次元ベクトルを生成するために走査され得、エントロピーコーディングが、さらなる圧縮を達成するために適用され得る。
【発明の概要】
【０００６】
[0006]本開示は、ここでピークＳＡＯと呼ばれる、サンプル適応オフセット（ＳＡＯ）フィルタリングのタイプを説明する。本開示で説明されるような、ピークＳＡＯをインプリメントするビデオコーダは、サンプルの値を２つより多くの隣接サンプルと比較することによって、サンプルに対するオフセットを決定し得る。いくつかの例では、ピークＳＡＯをインプリメントするビデオコーダは、サンプルと、それぞれの隣接サンプルとの間の差分の大きさ（magnitude）に基づいて、ブロックの異なるサンプルに対して異なるオフセットを決定し得る。
【０００７】
[0007]一例では、ビデオデータを復号するための方法が、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプル（a first set of neighbor samples）と比較することと、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、第１のオフセットは、第１の非ゼロ値であり、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有し（has a same pattern relative to the first sample as the second set of neighbor samples has relative to the second sample）、ここにおいて、第１の差分値および第２の差分値は、同じ符号を有し、第２の差分値に基づいて、第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、第２のオフセットは、第１の非ゼロ値とは異なる第２の非ゼロ値であり、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットおよび第２のサンプル値に第２のオフセットを適用することとを含む。
【０００８】
[0008]別の例では、ビデオデータを復号するためのデバイスが、ビデオデータを記憶するように構成されたメモリと、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較することと、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、第１のオフセットは、第１の非ゼロ値であり、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有し、ここにおいて、第１の差分値および第２の差分値は、同じ符号を有し、第２の差分値に基づいて、第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、第２のオフセットは、第１の非ゼロ値とは異なる第２の非ゼロ値であり、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットおよび第２のサンプル値に第２のオフセットを適用することと、を行うように構成された１つまたは複数のプロセッサとを含む。
【０００９】
[0009]別の例では、コンピュータ可読媒体が、１つまたは複数のプロセッサによって実行されると、１つまたは複数のプロセッサに、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較することと、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定することと、ここにおいて、第１のオフセットは、第１の非ゼロ値であり、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較することと、ここにおいて、第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有し、ここにおいて、第１の差分値および第２の差分値は、同じ符号を有し、第２の差分値に基づいて、第２のサンプルに対する第２のオフセットを決定することと、ここにおいて、第２のオフセットは、第１の非ゼロ値とは異なる第２の非ゼロ値であり、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットおよび第２のサンプル値に第２のオフセットを適用することと、を行わせる命令を記憶する。
【００１０】
[0010]別の例では、ビデオデータを復号するための装置が、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較するための手段と、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定するための手段と、ここにおいて、第１のオフセットは、第１の非ゼロ値であり、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較するための手段と、ここにおいて、第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有し、ここにおいて、第１の差分値および第２の差分値は、同じ符号を有し、第２の差分値に基づいて、第２のサンプルに対する第２のオフセットを決定するための手段と、ここにおいて、第２のオフセットは、第１の非ゼロ値とは異なる第２の非ゼロ値であり、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットおよび第２のサンプル値に第２のオフセットを適用するための手段と、を含む。
【００１１】
[0011]本開示の１つまたは複数の態様の詳細は、添付の図面および以下の説明において示される。本開示で説明される技法の他の特徴、目的、および利点が、説明および図面から、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】[0012]図１は、本開示で説明される技法を利用し得る、例となるビデオ符号化および復号システムを例示するブロック図である。
【図２】[0013]図２は、ＨＥＶＣデコーダの例となるブロック図を示す。
【図３Ａ】[0014]図３Ａは、エッジオフセット（ＥＯ）サンプル分類についての４つの１−Ｄ方向パターン（directional patterns）を示す。
【図３Ｂ】[0014]図３Ｂは、エッジオフセット（ＥＯ）サンプル分類についての４つの１−Ｄ方向パターンを示す。
【図３Ｃ】[0014]図３Ｃは、エッジオフセット（ＥＯ）サンプル分類についての４つの１−Ｄ方向パターンを示す。
【図３Ｄ】[0014]図３Ｄは、エッジオフセット（ＥＯ）サンプル分類についての４つの１−Ｄ方向パターンを示す。
【図４】[0015]図４は、現在のピクセルと、現在のピクセルの隣接ピクセルとの例を示す。
【図５】[0016]図５は、現在のピクセルと、現在のピクセルの隣接ピクセルとの例を示す。
【図６Ａ】[0017]図６Ａは、８つの選択された隣接サンプルを有する２つのサンプルの例を示す。
【図６Ｂ】[0017]図６Ｂは、８つの選択された隣接サンプルを有する２つのサンプルの例を示す。
【図７】[0018]図７は、本開示で説明される技法をインプリメントし得る、例となるビデオエンコーダを例示するブロック図である。
【図８】[0019]図８は、本開示で説明される技法をインプリメントし得る、例となるビデオデコーダを例示するブロック図である。
【図９】[0020]図９は、本開示の技法を実行するためのフィルタユニットの例となるインプリメンテーションを示す。
【図１０】[0021]図１０は、本開示の技法による、例となるビデオ復号プロセスを例示するフロー図である。
【詳細な説明】
【００１３】
[0022]本開示は、インループコーディングの一部として、後処理ステージにおいて、または予測ステージにおいて使用され得るフィルタリング方法に関する技法を説明する。本開示の技法は、ＨＥＶＣ（高効率ビデオコーディング）のような、既存のビデオコーデックにインプリメントされるか、または現在開発中のＨ．２６６規格のような、将来のビデオコーディング規格のための効率的なコーディングツールになり得る。
【００１４】
[0023]サンプル適応オフセット（ＳＡＯ）フィルタリングは、ビデオコーディングにおいて使用されるループフィルタリングのタイプである。一般に、（例えば、再構成された画像などの）ビデオフレームにおけるサンプルへのオフセット値の加算（addition）は、いくつかの事例では、符号化されたビデオデータを記憶または送信するために必要とされるビットオーバヘッドを著しく増大させることなく、コーディングを改善し得る。ＳＡＯフィルタリングから潜在的にもたらされるコーディングにおける改善は、例えば、ビデオデータを符号化するときに、より良いレート−ひずみ（ＲＤ：rate-distortion）トレードオフが達成され得ること、および／または復号されたビデオ画像が、所与のビットレートについて、元のビデオ画像に対してより少ないひずみを含むことであり得る。ＳＡＯ技法は、エッジメトリック、バンドメトリック、または他のタイプのメトリックなどの、サンプル（またはブロック）分類メトリックに依存して、異なるオフセット値が、異なるサンプル（またはサンプルのブロック）に適用されることを可能にする。
【００１５】
[0024]いくつかのインプリメンテーションでは、ＳＡＯフィルタユニットは、概して、本開示において、バンドオフセット（ＢＯ：band offset）フィルタリングおよびエッジオフセット（ＥＯ：edge offset）フィルタリングと呼ばれる、２つのタイプのＳＡＯフィルタリングを実行するように構成され得る。ＳＡＯフィルタユニットはまた、時に（at times）オフセットを適用しないことがあり得、これ自体も、第３のタイプのＳＡＯフィルタリングであると考えられ得る。ＳＡＯフィルタによって適用されるオフセットフィルタリングのタイプは、ビデオデコーダに明示的にまたは暗黙的にいずれかでシグナリングされ得る。ＥＯフィルタリングを適用するとき、サンプルは、コーディングツリーユニット（ＣＴＵ）のエッジ情報に基づいて分類され得、オフセットが、エッジ分類に基づいて、サンプルに対して決定され得る。以下でより詳細に説明されるように、典型的に、エッジベースのＳＡＯの４つのバリエーションが存在し、ここで、サンプルの値は、このサンプルの８つの隣接サンプルのうちの２つと比較される。どの２つのサンプルが比較のために使用されるかは、エッジベースのオフセットのどのバリエーションが使用されるかに依存する。すなわち、明示的に／暗黙的にシグナリングされたＥＯパターンが、比較のために使用される２つのサンプルを選ぶために使用される。本開示では、隣接サンプルに対するサンプルの大きさの差分（magnitude difference）に基づいて、オフセットがサンプル値に加算される。
【００１６】
[0025]ＢＯフィルタリングを適用するとき、サンプルは、インテンシティ値などのサンプル値に基づいて、異なるバンドに分類され得るとともに、（,with）各バンドが、関連するオフセットを有する。バンドは、ある範囲の（a range of）サンプル値を含む。例えば、０から２５５までの範囲のサンプル値は、３２個のバンドの全てについて、サンプル値０〜７が第１のバンドになり、サンプル値８〜１５が第２のバンドになり、サンプル値１６〜２３が第３のバンドになり、以下同様というように、（０ないし３１とラベル付けされた）３２個の均等なバンドに分割され得る。これらバンド（The bands）は、サンプルまたはサンプルのグループに、複数の異なるオフセット値のうちのどの特定のオフセット値を適用するかを決定するために使用され得る。例えば、サンプルが１０の値を有する（これは、上記の例では、第２のバンド、すなわち、値８〜１５内にある）場合には、第２のバンドに関連付けられたオフセットが、サンプル値に加算され得る。
【００１７】
[0026]様々なバンドに対するオフセットをシグナリングおよび生成することを目的として、これらバンド（The bands）は、２つ以上のグループにグループ分けされ得る（may be grouped into）。ＢＯフィルタリングの場合、サンプルは、例えば、上記で説明されたように、３２個のバンド（バンド０〜３１）にカテゴリ分類され得、これらバンドは、２つのグループ（例えば、１６個のバンドの２つのグループ、４個のバンドの１つのグループと２８個のバンドの１つのグループ、８個のバンドの１つのグループと２４個のバンドの１つのグループ、または他のこのようなグループ分け）にグループ分けされ得る。バンドのグループ分けは、バンドに対するオフセット値が、符号化されたビデオビットストリームにおいてシグナリングされる順序を決定するために使用され得、および／または特定のバンドが、ゼロ以外のオフセット値を有するかどうかを決定するために使用され得る。バンドに対するオフセットは、現在の値が、現在の値と以前の値との間の差分としてシグナリングされる、差分コーディング技法を使用してシグナリングされ得る。シグナリングオーバヘッドを低減させるために、少数のバンド（例えば、４つのバンド）のみが、非ゼロオフセット値に関連付けられ得、一方、その他全てのバンドは、ゼロのオフセット値を有すると仮定される。
【００１８】
[0027]ＨＥＶＣ規格においてインプリメントされるように、ＳＡＯフィルタリングは、スライスレベルでイネーブルおよびディセーブルにされ得、そしてさらに、ＳＡＯフィルタリングは、ルーマサンプルおよびクロマサンプルについて別々にイネーブルおよびディセーブルにされ得る。例えば、ビデオデータの特定のスライスについて、ルーマサンプルおよびクロマサンプルの両方がＳＡＯフィルタされ得るか、ルーマサンプルもクロマサンプルもＳＡＯフィルタされ得ないか、またはルーマサンプルおよびクロマサンプルのうちの一方はＳＡＯフィルタされ得るが、他方はされない。ＳＡＯフィルタリングがスライスに対してイネーブルにされたとき、その後、ＳＡＯタイプおよびオフセット値は、コーディングツリーユニット（ＣＴＵ）レベルでシグナリングされる。上述されたように、ＳＡＯタイプは、ＢＯフィルタリング、ＥＯフィルタリング、またはＳＡＯフィルタリングなし（no SAO filtering）を含み得る。したがって、たとえＳＡＯフィルタリングが特定のスライスに対してイネーブルにされたとしても、そのスライスのいくつかのＣＴＵは、ＳＡＯフィルタされないことがあり得る（すなわち、いくつかのＣＴＵは、ＳＡＯフィルタリングなしのＳＡＯタイプを有することになる）。いくつかの事例では、ＳＡＯタイプおよびオフセット値は、一連のマージフラグを用いてシグナリングされ得、ここで、第１のマージフラグの真の値は、オフセットタイプを示し、ＣＴＵに対するオフセット値は、左に隣接するＣＴＵから引き継がれ、第２のマージフラグの真の値は、ＳＡＯタイプを示し、オフセット値は、上に隣接するＣＴＵから引き継がれる。両方のマージフラグが偽である場合には、新しいＳＡＯタイプおよび新しいオフセット値が、ＣＴＵのために送られる。
【００１９】
[0028]ＨＥＶＣは、スライスレベルでＳＡＯフィルタリングをイネーブルおよびディセーブルにし、ＣＴＵレベルでＳＡＯ情報をシグナリングするが、本開示の技法は、概して（altogether）、そのようなシグナリングが異なるレベルで行われるＳＡＯ構成において、または異なるシグナリングメカニズムを使用するＳＡＯ構成においてインプリメントされ得ることが企図されることが理解されるべきである。
【００２０】
[0029]ＳＡＯ情報（例えば、ＳＡＯタイプおよび複数のオフセット値）が、ＣＴＵのためにシグナリングされる。ＳＡＯタイプに基づいて、ビデオデコーダは、各サンプルについて、複数のオフセット値からのどのオフセット値を加算すべきかをサンプル単位（sample-by-sample basis）で決定する。以下でより詳細に説明されるように、特定のサンプルまたはサンプルのブロック（例えば、ＣＴＵにおける２×２ブロック）に対して、どのオフセット値を適用するかの決定は、サンプルのブロックの特定のサンプルに対して決定されるエッジおよびバンド分類に基づいて決定され得る。
【００２１】
[0030]本開示は、ここでピークＳＡＯと呼ばれる、ＳＡＯの新しいバージョンを説明する。ピークＳＡＯは、上記で説明されたＥＯまたはＢＯフィルタリングと併せて使用される追加のＳＡＯタイプであり得、または上記で説明されたＳＡＯフィルタとは別個の新しいコーディングツールとしてインプリメントされ得る。ピークＳＡＯをインプリメントするとき、ビデオデコーダは、ビデオデータの現在のブロックにおける２つ以上のサンプルに、たとえこれらサンプル（the samples）とその隣接サンプルとの関係が同じであったとしても、異なるオフセットを適用し得る。ピークＳＡＯの一例として、ビデオデコーダは、第１のサンプルを４つの隣接サンプルと比較して、このサンプルが、４つ全ての隣接サンプルよりもわずかに大きいサンプル値（例えば、輝度値またはクロミナンス値）を有することを決定し得る。第１のサンプルがわずかにより大きいサンプル値を有していることに基づいて、ビデオデコーダは、第１のサンプルに第１のオフセットを適用し得る。第２のサンプルについて、ビデオデコーダは、第２のサンプルを４つの同様に位置する隣接サンプルと比較して、このサンプルが、４つ全ての隣接サンプルよりもはるかに大きいサンプル値を有することを決定し得る。第２のサンプルがはるかにより大きいサンプル値を有していることに基づいて、ビデオデコーダは、第２のサンプルに、第１のサンプルに対して使用されるオフセットとは異なるオフセットを適用し得る。異なるオフセットは、例えば、第１のオフセットとは異なる単一のオフセット値であり得、または第１のオフセットに追加のオフセットを加えたような、２つのオフセットの組合せであり得る。
【００２２】
[0031]従来のＳＡＯでは、第１および第２のサンプルが、それらの隣接サンプルに対して同じ関係（すなわち、全てよりも大きい）を有するので、ビデオデコーダは、上記で説明された第１および第２のサンプルの両方に同じオフセットを適用することになる。しかしながら、ピークＳＡＯでは、第１のサンプルの値がその隣接サンプルよりもほんのわずかに大きい一方で、第２のサンプルの値はその隣接サンプルよりもはるかに大きいので、ビデオデコーダは、第１および第２のサンプルに異なるオフセットを適用する。さらに、従来のＳＡＯでは、サンプルが２つの隣接サンプルのみと比較される一方で、ピークＳＡＯでは、サンプルは、４つまたは８つの隣接しているものなどの、他の数の隣接サンプルと比較され得る。ピークＳＡＯのこれらおよび他の態様が、以下でより詳細に説明される。
【００２３】
[0032]したがって、従来のＳＡＯ技法は、隣接サンプルに対する（relative to）同じ特性について異なる大きさを有する異なるサンプルに対して（for）異なるオフセットを選択するための細分性（granularity）を提供しない。例えば、従来のＳＡＯでは、ビデオコーダは、隣接サンプルに対してはるかにより大きい値を有するサンプルに対する（as to）同じオフセットを、隣接サンプルに対してわずかにより大きい値を有するサンプルに適用する。本開示は、より良いレート−ひずみトレードオフを有するビデオコーダを潜在的にもたらす、ビデオコーダに適用可能な例となる技法を説明する。例えば、本開示で説明されるビデオコーダは、ブロックの異なるサンプルに対して（for）、隣接サンプルとのそれらのそれぞれの差分に基づいて、異なるオフセットを可能にし得る。
【００２４】
[0033]本開示における様々な技法は、ビデオコーダを参照して説明され得、これは、ビデオエンコーダまたはビデオデコーダのいずれかを指し得る総称（a generic term）であるように意図される。別段に明記されていない限り、ビデオエンコーダまたはビデオデコーダに関して説明される技法は、ビデオエンコーダまたはビデオデコーダの他方によって実行されることができないと仮定されるべきでない。例えば、多くの事例では、ビデオデコーダは、符号化されたビデオデータを復号するために、ビデオエンコーダと同じまたは時に逆の（reciprocal）コーディング技法を実行する。多くの事例では、ビデオエンコーダはまた、ビデオ復号ループを含み、したがって、ビデオエンコーダは、ビデオデータを符号化することの一部としてビデオ復号を実行する。したがって、別段に記載されていない限り（unless stated otherwise）、ビデオデコーダに関して本開示で説明される技法はまた、ビデオエンコーダによって実行され得、逆もまた同様である。
【００２５】
[0034]本開示はまた、現在のブロック、現在のピクチャ、等の用語を使用し得る。本開示のコンテキストでは、「現在の（current）」という用語は、例えば、以前にまたは既にコーディングされたブロックまたはピクチャ、あるいはこれからコーディングされることになるブロックまたはピクチャとは対照的に、現在コーディングされているブロックまたはピクチャを識別するように意図される。
【００２６】
[0035]本開示は、説明を簡単にするために、ＨＥＶＣ用語を使用して様々なビデオコーディング技法を説明する。しかしながら、本開示の技法は、ＨＥＶＣに限定されると仮定されるべきではなく、実際、本開示の技法は、ＨＥＶＣの後続の規格およびその拡張においてインプリメントされ得ることが明確に企図される。
【００２７】
[0036]図１は、本開示で説明される技法を利用し得る、例となるビデオ符号化および復号システム１０を例示するブロック図である。図１に示されるように、システム１０は、宛先デバイス１４によって後に復号される符号化されたビデオデータを生成するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００２８】
[0037]宛先デバイス１４は、復号される符号化されたビデオデータを、リンク１６を介して受信し得る。リンク１６は、ソースデバイス１２から宛先デバイス１４に、符号化されたビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク１６は、ソースデバイス１２がリアルタイムで宛先デバイス１４に符号化されたビデオデータを直接送信することを可能にする通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするのに有用であり得るその他任意の機器を含み得る。
【００２９】
[0038]別の例では、符号化されたデータは、出力インターフェース２２から記憶デバイス２６に出力され得る。同様に、符号化されたデータは、入力インターフェースによって、記憶デバイス２６からアクセスされ得る。記憶デバイス２６は、ハードドライブ、ブルーレイディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイス２６は、ファイルサーバ、またはソースデバイス１２によって生成される符号化されたビデオを保持し得る別の中間記憶デバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介して、記憶デバイス２６からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、宛先デバイス１４にその符号化されたビデオデータを送信することが可能な任意のタイプのサーバであり得る。例となるファイルサーバは、（例えば、ウェブサイト用の）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続記憶（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む、任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム、等）、またはファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適な両方の組合せを含み得る。記憶デバイス２６からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００３０】
[0039]本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、例えば、インターネットを介した、ストリーミングビデオ送信、データ記憶媒体上での記憶のためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話通信などのアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００３１】
[0040]図１の例では、ソースデバイス１２は、ビデオソース１８、ビデオエンコーダ２０、および出力インターフェース２２を含む。いくつかのケースでは、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、例えば、ビデオカメラのような、ビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、またはそのようなソースの組合せを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。
【００３２】
[0041]キャプチャされた、予めキャプチャされた、またはコンピュータにより生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化されたビデオデータは、ソースデバイス１２の出力インターフェース２２を介して、宛先デバイス１４に直接送信され得る。符号化されたビデオデータはまた（または代替として）、復号および／または再生のために、宛先デバイス１４または他のデバイスによる後のアクセスのために記憶デバイス２６上に記憶され得る。
【００３３】
[0042]宛先デバイス１４は、入力インターフェース２８、ビデオデコーダ３０、およびディスプレイデバイス３２を含む。いくつかのケースでは、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、リンク１６を通じて、符号化されたビデオデータを受信する。リンク１６を通じて通信される、または記憶デバイス２６上に提供される符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ３０などのビデオデコーダによって使用するための、ビデオエンコーダ２０によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信される、記憶媒体上に記憶される、またはファイルサーバに記憶される、符号化されたビデオデータと共に含まれ得る。
【００３４】
[0043]ディスプレイデバイス３２は、宛先デバイス１４と一体化されるか、またはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体化されたディスプレイデバイスを含み、そしてまた、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス３２は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちの任意のものを備え得る。
【００３５】
[0044]ビデオエンコーダ２０およびビデオデコーダ３０は、最近完成した高効率ビデオコーディング（ＨＥＶＣ）規格のようなビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ）に準拠し得る。ビデオエンコーダ２０およびビデオデコーダ３０は、さらに、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ）と、ＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ）とのビデオコーディング共同研究部会（ＪＣＴ−ＶＣ）ならびに３Ｄビデオコーディング拡張開発共同研究部会（ＪＣＴ−３Ｖ）によって開発されてきた、レンジ拡張、マルチビュー拡張（ＭＶ−ＨＥＶＣ）、またはスケーラブル拡張（ＳＨＶＣ）などの、ＨＥＶＣ拡張に従って動作し得る。
【００３６】
[0045]ビデオエンコーダ２０およびビデオデコーダ３０はまた、代替的にＩＳＯ／ＩＥＣ  ＭＰＥＧ−４、パート１０、アドバンストビデオコーディング（ＡＶＣ）とも呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格などの他のプロプライエタリ規格または業界標準規格、あるいはスケーラブルビデオコーディング（ＳＶＣ）およびマルチビュービデオコーディング（ＭＶＣ）拡張などのそのような規格の拡張に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、およびＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌを含む。
【００３７】
[0046]ＩＴＵ−Ｔ  ＶＣＥＧ  （Ｑ６／１６）およびＩＳＯ／ＩＥＣ  ＭＰＥＧ  （ＪＴＣ  １／ＳＣ  ２９／ＷＧ  １１）は、現在、（スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張と近い将来の拡張とを含む）現在のＨＥＶＣ規格のそれを著しく超過する圧縮能力を有する将来のビデオコーディング技術の標準化についての潜在的な必要性を研究している。これらグループは、この分野におけるそれらの専門家によって提案された圧縮技術設計を評価するために、ＪＶＥＴ（Joint Video Exploration Team）として知られる共同コラボレーションの取り組みにおいて、この調査活動で協働している。ＪＶＥＴは、２０１５年１０月１９日〜２１日にわたって最初の会合を行った。参照ソフトウェアの１つのバージョン、すなわち、Ｊｏｉｎｔ  Ｅｘｐｌｏｒａｔｉｏｎ  Ｍｏｄｅｌ  ２（ＪＥＭ  ２）が、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-2.0/からダウンロードされ得る。ＪＥＭ２についてのアルゴリズムが、J. Chen、E. Alshina、G. J. Sullivan、J.-R. Ohm、J. Boyce、「Algorithm description of Joint Exploration Test Model 2」、ＪＶＥＴ−Ｂ１００１、サンディエゴ、２０１６年３月、に説明されており、その説明は、参照により本明細書に組み込まれている。参照ソフトウェアの別のバージョン、すなわち、Ｊｏｉｎｔ  Ｅｘｐｌｏｒａｔｉｏｎ  Ｍｏｄｅｌ  ３（ＪＥＭ  ３）が、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-3.0/からダウンロードされ得る。ＪＥＭ３についてのアルゴリズムの説明は、ＪＶＥＴ−Ｃ１００１とも呼ばれ得、参照により本明細書に組み込まれている。
【００３８】
[0047]図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、オーディオエンコーダおよびデコーダとそれぞれ一体化され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオおよびビデオの両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルに準拠し得る。
【００３９】
[0048]ビデオエンコーダ２０およびビデオデコーダ３０は、１つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダ回路またはデコーダ回路のうちの任意のものとしてそれぞれインプリメントされ得る。本技法が部分的にソフトウェアにおいてインプリメントされるとき、デバイスは、好適な非一時的なコンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために、１つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれ得、これらのいずれもが、それぞれのデバイスにおいて複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として一体化され得る。
【００４０】
[0049]ＨＥＶＣおよび他のビデオコーディング仕様では、ビデオシーケンスは、典型的に、一連のピクチャを含む。ピクチャは、「フレーム」とも呼ばれ得る。１つの例となる手法では、ピクチャは、ＳＬ、ＳＣｂ、およびＳＣｒで示される、３つのサンプルアレイを含み得る。このような例となる手法では、ＳＬは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳＣｂは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳＣｒは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルはまた、ここで「クロマ」サンプルとも呼ばれ得る。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００４１】
[0050]ピクチャの符号化された表現を生成するために、ビデオエンコーダ２０は、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの２つの対応するコーディングツリーブロックと、これらコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームのピクチャまたは３つの別個の色平面を有するピクチャでは、ＣＴＵは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは、「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）とも呼ばれ得る。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣのような、他の規格のマクロブロックに大まかに類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるわけではなく、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスター走査順に連続的に並べられた整数の数のＣＴＵを含み得る。
【００４２】
[0051]コーディングされたＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するために、ＣＴＵのコーディングツリーブロックに対して４分木区分化を再帰的に実行し得、それがこの「コーディングツリーユニット」という名前の由来である。コーディングブロックは、サンプルのＮｘＮブロックであり得る。ＣＵは、ルーマサンプルアレイ、Ｃｂサンプルアレイ、およびＣｒサンプルアレイを有するピクチャのルーマサンプルのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックと、これらコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームのピクチャまたは３つの別個の色平面を有するピクチャでは、ＣＵは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００４３】
[0052]ビデオエンコーダ２０は、ＣＵのコーディングブロックを、１つまたは複数の予測ブロックに区分化し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、これらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームのピクチャまたは３つの別個の色平面を有するピクチャでは、ＰＵは、単一の予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ、Ｃｂ、およびＣｒ予測ブロックについての予測ルーマ、Ｃｂ、およびＣｒブロックを生成し得る。
【００４４】
[0053]ビデオエンコーダ２０は、ＰＵについての予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０が、ＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０が、ＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【００４５】
[0054]ビデオエンコーダ２０が、ＣＵの１つまたは複数のＰＵについての予測ルーマ、Ｃｂ、およびＣｒブロックを生成した後、ビデオエンコーダ２０は、このＣＵについてのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つ中のルーマサンプルと、ＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ２０は、ＣＵについてのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つ中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０はまた、ＣＵについてのＣｒ残差ブロックを生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つ中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００４６】
[0055]さらに、ビデオエンコーダ２０は、ＣＵのルーマ、Ｃｂ、およびＣｒ残差ブロックを、１つまたは複数のルーマ、Ｃｂ、およびＣｒ変換ブロックへと分解するために、４分木区分化を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形（例えば、正方形または非正方形）ブロックである。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックは、ＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであり得る。モノクロームのピクチャまたは３つの別個の色平面を有するピクチャでは、ＴＵは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００４７】
[0056]ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは、変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのためのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００４８】
[0057]ＣＴＵ、ＣＵ、ＰＵ、およびＴＵを有する上記ブロック構造は、一般に、ＨＥＶＣにおいて使用されるブロック構造を説明する。しかしながら、他のビデオコーディング規格は、異なるブロック構造を使用し得る。一例として、ＨＥＶＣは、ＰＵおよびＴＵが異なるサイズまたは形状を有することを可能にするが、他のビデオコーディング規格は、予測ブロックと変換ブロックが同じサイズを有することを必要とし得る。本開示の技法は、ＨＥＶＣのブロック構造に限定されず、他のブロック構造との互換性があり得る。
【００４９】
[0058]係数ブロック（例えば、ルーマ係数ブロック、Ｃｂ係数ブロック、またはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、一般に、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータ量を低減させ、さらなる圧縮を提供するプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ）を実行し得る。
【００５０】
[0059]ビデオエンコーダ２０は、コーディングされたピクチャの表現および関連するデータを形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、ネットワーク抽象化レイヤ（ＮＡＬ）ユニットのシーケンスを備え得る。ＮＡＬユニットは、ＮＡＬユニット中のデータのタイプのインジケーションと、必要に応じてエミュレーション防止ビットが組み入れられている生バイトシーケンスペイロード（ＲＢＳＰ）の形式でそのデータを含むバイトとを含むシンタックス構造である。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ＲＢＳＰをカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、ＲＢＳＰはゼロビットを含む。
【００５１】
[0060]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。例えば、第１のタイプのＮＡＬユニットは、ＰＰＳのためのＲＢＳＰをカプセル化し得、第２のタイプのＮＡＬユニットは、コーディングされたスライスのためのＲＢＳＰをカプセル化し得、第３のタイプのＮＡＬユニットは、ＳＥＩメッセージのためのＲＢＳＰをカプセル化し得、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ＶＣＬ  ＮＡＬユニットと呼ばれ得る。
【００５２】
[0061]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を取得するために、ビットストリームをパースし得る。ビデオデコーダ３０は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ２０によって実行されるプロセスとは逆であり得る。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられた変換ブロックを再構成するために、係数ブロックに対して逆変換を実行し得る。ビデオデコーダ３０は、現在のＣＵのＰＵについての予測ブロックのサンプルを、現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算すること（adding）によって、現在のＣＵのコーディングブロックを再構成し得る。ピクチャの各ＣＵについてのコーディングブロックを再構成することによって、ビデオデコーダ３０は、ピクチャを再構成し得る。
【００５３】
[0062]ＨＥＶＣおよびＪＥＭ技法の態様が、ここで説明される。図２は、ＨＥＶＣデコーダの例となるブロック図を示す。図２に示されるビデオデコーダは、上記で説明されたビデオデコーダ３０に対応し得、これは、以下でより詳細に説明される。ＨＥＶＣは、デブロッキングフィルタ（ＤＢＦ：de-blocking filter）とＳＡＯを含む２つのインループフィルタを用いる。ＨＥＶＣ復号およびＳＡＯに関する追加の詳細は、C. Fu、E. Alshina、A. Alshin、Y. Huang、C.Chen、Chia. Tsai、C. Hsu、S. Lei、J. Park、W. Han、「Sample adaptive offset in the HEVC standard」、IEEE Trans. Circuits Syst. Video Technol.、22(12):1755-1764(2012)に説明されている。
【００５４】
[0063]例示されるように、ＤＢＦへの入力は、再構成ブロックからの出力で示されるように、イントラまたはインター予測後の再構成された画像であり得る。ＤＢＦは、コーディングされたブロック境界におけるアーティファクトの検出を実行し、選択されたフィルタを適用することによって、それらを減衰させる。Ｈ．２６４／ＡＶＣデブロッキングフィルタと比較して、ＨＥＶＣデブロッキングフィルタは、依然として、視覚アーティファクトの大幅な低減を達成しながら、より低い計算複雑さおよびより良い並列処理能力を有する。追加の例については、A. Norkin、G. Bjontegaard、A. Fuldseth、M. Narroschke、M. Ikeda、K. Andersson、Minhua Zhou、G. Van der Auwera、「HEVC Deblocking Filter」、IEEE Trans. Circuits Syst. Video Technol.、22(12):1746-1754(2012)を参照。
【００５５】
[0064]ＳＡＯへの入力は、デブロッキングフィルタからの出力で示されるように、デブロッキングフィルタリングを呼び出した（invoking）後の再構成された画像であり得る。ＳＡＯのコンセプトは、最初に領域サンプルを、選択された分類子（classifier）を用いて複数のカテゴリに分類し、各カテゴリに対するオフセットを取得し、その後、オフセットをカテゴリの各サンプルに加算することによって、領域の平均サンプルひずみを低減させることであり、ここで、領域のオフセットおよび分類子インデックスは、ビットストリーム中にコーディングされる。ＨＥＶＣでは、領域（ＳＡＯパラメータシグナリングのためのユニット）は、ＣＴＵであると定義される。
【００５６】
[0065]低い複雑さの要件を満たし得る２つのＳＡＯタイプが、ＨＥＶＣにおいて採用されている。これらの２つのタイプは、上述されたＥＯおよびＢＯである。ＳＡＯタイプのインデックスがコーディングされる（これは［０，２］の範囲内にある）。ＳＡＯタイプをシグナリングするコンテキストでは、ＳＡＯを実行しないこと、またはＳＡＯをスキップすることが、第３のタイプのＳＡＯと考えられ得る。ＥＯの場合、サンプル分類は、現在のサンプルと、１−Ｄ方向パターン：水平、垂直、１３５°対角、および４５°対角に従う隣接サンプルとの間の比較に基づく。
【００５７】
[0066]図３Ａ−図３Ｄは、ＥＯサンプル分類についての４つの１−Ｄ方向パターン：水平（図３Ａ、ＥＯクラス＝０）、垂直（図３Ｂ、ＥＯクラス＝１）、１３５°対角（図３Ｃ、ＥＯクラス＝２）、および４５°対角（図３Ｄ、ＥＯクラス＝３）を示す。ＳＡＯに関する追加の詳細は、C. Fu、E. Alshina、A. Alshin、Y. Huang、C. Chen、Chia. Tsai、C. Hsu、S. Lei、J. Park、W. Han、「Sample adaptive offset in the HEVC standard」、IEEE Trans. Circuits Syst. Video Technol.、22(12)：1755-1764(2012)に説明されている。
【００５８】
[0067]選択されたＥＯパターンに従って、表ＩにおいてｅｄｇｅＩｄｘによって示される５つのカテゴリがさらに定義される。ｅｄｇｅＩｄｘが０〜３に等しい場合、オフセットの大きさ（magnitude）がシグナリングされ得るとともに（while）、符号フラグが暗黙的にコーディングされる、すなわち、ｅｄｇｅＩｄｘが０または１に等しい場合は、負のオフセット、および、ｅｄｇｅＩｄｘが２または３に等しい場合は、正のオフセットである。ｅｄｇｅＩｄｘが４に等しい場合、オフセットは、常に０に設定され、これは、このケースについては演算が必要ないことを意味する。
【００５９】
【表１】
2019534631.tif 000003
【００６０】
[0068]ＢＯの場合、サンプル分類は、サンプル値に基づく。各色成分は、ＢＯタイプのＳＡＯフィルタリングについての分類のために、それ自体のＳＡＯパラメータを有し得る。ＢＯは、１つのオフセットが、同じバンドの全てのサンプルに加算されることを暗示する。サンプル値の範囲は、３２個のバンドに均等に分割される。０から２５５までの範囲の８ビットのサンプルの場合、バンド幅は８であり、８ｋから８ｋ＋７までのサンプル値が、バンドｋに属し、ここで、ｋは、０から３１までの範囲にある。バンドにおける元のサンプルと再構成されたサンプルとの間の平均差分（すわなち、バンドのオフセット）が、デコーダ（例えば、ビデオデコーダ３０）にシグナリングされる。オフセットの符号に対する（on）制約はない。４つの連続するバンドのオフセットおよび開始のバンド位置（band position）のみが、デコーダ（例えば、ビデオデコーダ３０）にシグナリングされる。
【００６１】
[0069]サイド情報のシグナリングについては、サイド情報を低減させるために、複数のＣＴＵは、ＳＡＯパラメータを共有するために、（（sao_merge_left_flagを１に等しく設定することを通じて）上のＣＴＵからパラメータをコピーするか、または（sao_merge_up_flagを１に等しく設定することを通じて）左のＣＴＵからパラメータをコピーするかのいずれかで）共にマージされ得る。
【００６２】
【表２】
2019534631.tif 000004
【００６３】
セマンティクス
sao_merge_left_flagが１に等しいことは、シンタックス要素sao_type_idx_luma、sao_type_idx_chroma、sao_band_position、sao_eo_class_luma、sao_eo_class_chroma、sao_offset_abs、およびsao_offset_signが、左のコーディングツリーブロックの対応するシンタックス要素から導出されることを指定する。sao_merge_left_flagが０に等しいことは、これらのシンタックス要素が、左のコーディングツリーブロックの対応するシンタックス要素から導出されないことを指定する。sao_merge_left_flagが存在しないとき、それは０に等しいと推定される（inferred）。
sao_merge_up_flagが１に等しいことは、シンタックス要素sao_type_idx_luma、sao_type_idx_chroma、sao_band_position、sao_eo_class_luma、sao_eo_class_chroma、sao_offset_abs、およびsao_offset_signが、上のコーディングツリーブロックの対応するシンタックス要素から導出されることを指定する。sao_merge_up_flagが０に等しいことは、これらのシンタックス要素が、上のコーディングツリーブロックの対応するシンタックス要素から導出されないことを指定する。sao_merge_up_flagが存在しないとき、それは０に等しいと推定される。
sao_type_idx_lumaは、ルーマ成分に対するオフセットタイプを指定する。アレイSaoTypeIdx[ cIdx ][ rx ][ ry ]は、色成分cIdxに対して（for）、位置（location）( rx, ry )におけるコーディングツリーブロックに関して（for）表７−８において指定されるような、オフセットタイプを指定する。SaoTypeIdx[ 0 ][ rx ][ ry ]の値は、以下のように導出される：
−sao_type_idx_lumaが存在する場合、SaoTypeIdx[ 0 ][ rx ][ ry ]は、sao_type_idx_lumaに等しく設定される。
−それ以外の場合（sao_type_idx_lumaが存在しない）、SaoTypeIdx[ 0 ][ rx ][ ry ]は、以下のように導出される：
−sao_merge_left_flagが１に等しい場合、SaoTypeIdx[ 0 ][ rx ][ ry ]は、SaoTypeIdx[ 0 ][ rx - 1 ][ ry ]に等しく設定される。
【００６４】
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、SaoTypeIdx[ 0 ][ rx ][ ry ]は、SaoTypeIdx[ 0 ][ rx ][ ry - 1 ]に等しく設定される。
【００６５】
−それ以外の場合、SaoTypeIdx[ 0 ][ rx ][ ry ]は、０に等しく設定される。
sao_type_idx_chromaは、クロマ成分に対するオフセットタイプを指定する。SaoTypeIdx[ cIdx ][ rx ][ ry ]の値は、cIdxが１．．２に等しい場合、以下のように導出される：
−sao_type_idx_chromaが存在する場合、SaoTypeIdx[ cIdx ][ rx ][ ry ]は、sao_type_idx_chromaに等しく設定される。
−それ以外の場合（sao_type_idx_chromaが存在しない）、SaoTypeIdx[ cIdx ][ rx ][ ry ]は、以下のように導出される：
−sao_merge_left_flagが１に等しい場合、SaoTypeIdx[ cIdx ][ rx ][ ry ]は、SaoTypeIdx[ cIdx ][ rx - 1 ][ ry ]に等しく設定される。
【００６６】
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、SaoTypeIdx[ cIdx ][ rx ][ ry ]は、SaoTypeIdx[ cIdx ][ rx ][ ry - 1 ]に等しく設定される。
【００６７】
−それ以外の場合、SaoTypeIdx[ cIdx ][ rx ][ ry ]は、０に等しく設定される。
【００６８】
【表３】
2019534631.tif 000005
【００６９】
sao_offset_abs[ cIdx ][ rx ][ ry ][ i ]は、色成分cIdxに対して、位置( rx, ry )におけるコーディングツリーブロックに関するｉ番目のカテゴリのオフセット値を指定する。sao_offset_abs[ cIdx ][ rx ][ ry ][ i ]が存在しないとき、それは以下のように推定される：
−sao_merge_left_flagが１に等しい場合、sao_offset_abs[ cIdx ][ rx ][ ry ][ i ]は、sao_offset_abs[ cIdx ][ rx - 1 ][ ry ][ i ]に等しいと推定される。
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、sao_offset_abs[ cIdx ][ rx ][ ry ][ i ]は、sao_offset_abs[ cIdx ][ rx ][ ry - 1 ][ i ]に等しいと推定される。
−  それ以外の場合、sao_offset_abs[ cIdx ][ rx ][ ry ][ i ]は、０に等しいと推定される。
sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、色成分cIdxに対して、位置( rx, ry )におけるコーディングツリーブロックに関するｉ番目のカテゴリのオフセット値の符号を指定する。
sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]が存在しないとき、それは以下のように推定される：
−sao_merge_left_flagが１に等しい場合、sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、sao_offset_sign[ cIdx ][ rx - 1 ][ ry ][ i ]に等しいと推定される。
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、sao_offset_sign[ cIdx ][ rx ][ ry - 1 ][ i ]に等しいと推定される。
−それ以外の場合、SaoTypeIdx[ cIdx ][ rx ][ ry ]が２に等しい場合、以下が適用される：
−ｉが０または１に等しい場合、sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、０に等しいと推定される。
【００７０】
−それ以外の場合（ｉが２または３に等しい）、sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、１に等しいと推定される。
−それ以外の場合、sao_offset_sign[ cIdx ][ rx ][ ry ][ i ]は、０に等しいと推定される。
変数log2OffsetScaleは、以下のように導出される：
−cIdxが０に等しい場合、log2OffsetScaleは、log2_sao_offset_scale_lumaに等しく設定される。
−それ以外の場合（cIdxが１または２に等しい）、log2OffsetScaleは、log2_sao_offset_scale_chromaに等しく設定される。
ｉが両端値を含む０から４までの範囲の間、リストSaoOffsetVal[ cIdx ][ rx ][ ry ][ i ]は、以下のように導出される：
【００７１】
【数１】
2019534631.tif 000006
【００７２】
sao_band_position[ cIdx ][ rx ][ ry ]は、SaoTypeIdx[ cIdx ][ rx ][ ry ]が１に等しいとき、サンプル範囲（sample range）のバンドオフセットの変位を指定する。
sao_band_position[ cIdx ][ rx ][ ry ]が存在しないとき、それは以下のように推定される：
−sao_merge_left_flagが１に等しい場合、sao_band_position[ cIdx ][ rx ][ ry ]は、sao_band_position[ cIdx ][ rx - 1 ][ ry ]に等しいと推定される。
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、sao_band_position[ cIdx ][ rx ][ ry ]は、sao_band_position[ cIdx ][ rx ][ ry - 1 ]に等しいと推定される。
−それ以外の場合、sao_band_position[ cIdx ][ rx ][ ry ]は、０に等しいと推定される。
sao_eo_class_lumaは、ルーマ成分に対するエッジオフセットクラスを指定する。アレイSaoEoClass[ cIdx ][ rx ][ ry ]は、色成分cIdxに対して、位置( rx, ry )におけるコーディングツリーブロックに関して表７−９において指定されるような、オフセットタイプを指定する。SaoEoClass[ 0 ][ rx ][ ry ]の値は、以下のように導出される：
−sao_eo_class_lumaが存在する場合、SaoEoClass[ 0 ][ rx ][ ry ]は、sao_eo_class_lumaに等しく設定される。
−それ以外の場合（sao_eo_class_lumaが存在しない）、SaoEoClass[ 0 ][ rx ][ ry ]は、以下のように導出される：
−sao_merge_left_flagが１に等しい場合、SaoEoClass[ 0 ][ rx ][ ry ]は、SaoEoClass[ 0 ][ rx - 1 ][ ry ]に等しく設定される。
【００７３】
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、SaoEoClass[ 0 ][ rx ][ ry ]は、SaoEoClass[ 0 ][ rx ][ ry - 1 ]に等しく設定される。
【００７４】
−それ以外の場合、SaoEoClass[ 0 ][ rx ][ ry ]は、０に等しく設定される。
sao_eo_class_chromaは、クロマ成分に対するエッジオフセットクラスを指定する。SaoEoClass[ cIdx ][ rx ][ ry ]の値は、cIdxが１．．２に等しい場合、以下のように導出される：
−sao_eo_class_chromaが存在する場合、SaoEoClass[ cIdx ][ rx ][ ry ]は、sao_eo_class_chromaに等しく設定される。
−それ以外の場合（sao_eo_class_chromaが存在しない）、SaoEoClass[ cIdx ][ rx ][ ry ]は、以下のように導出される：
−sao_merge_left_flagが１に等しい場合、SaoEoClass[ cIdx ][ rx ][ ry ]は、SaoEoClass[ cIdx ][ rx - 1 ][ ry ]に等しく設定される。
【００７５】
−それ以外の場合で、sao_merge_up_flagが１に等しい場合、SaoEoClass[ cIdx ][ rx ][ ry ]は、SaoEoClass[ cIdx ][ rx ][ ry - 1 ]に等しく設定される。
【００７６】
−それ以外の場合、SaoEoClass[ cIdx ][ rx ][ ry ]は、０に等しく設定される。
【００７７】
【表４】
2019534631.tif 000007
【００７８】
[0070]ビデオエンコーダ２０およびビデオデコーダ３０は、様々なＪＥＭフィルタフィルタリング技法をインプリメントするように構成され得る。これらのＪＥＭフィルタリング技法の態様が、ここで説明される。修正されたＤＢおよびＨＥＶＣ  ＳＡＯ方法に加えて、ＪＥＭは、幾何学的変換ベースの適応ループフィルタリング（ＧＡＬＦ：Geometry transformation-based Adaptive Loop Filtering）と呼ばれる、別のフィルタリング方法を含んでいる。ＧＡＬＦは、いくつかの新しい態様を導入することによって、ＨＥＶＣステージにおいて研究されているＡＬＦのコーディング効率を改善することを目的とする。ＡＬＦは、Ｗｉｅｎｅｒベースの適応フィルタを使用することによって、元のサンプルと、復号されたサンプルとの間の平均２乗誤差を最小限にすることを目的としている。ピクチャ中のサンプルは、複数のカテゴリに分類され、その後、各カテゴリにおけるサンプルは、それらの関連する適応フィルタを用いて（with）フィルタされる。フィルタ係数は、平均２乗誤差とオーバヘッドとの間のトレードオフを最適化するために、シグナリングされるか、または引き継がれ得る。幾何学的変換ベースのＡＬＦ（ＧＡＬＦ）スキームは、ＡＬＦのパフォーマンスをさらに改善するために提案され、これは、ＡＬＦ前に再構成されたサンプルの勾配の向きに依存して、フィルタサポート領域におけるサンプルに適用されることになる、回転、対角および垂直反転（vertical flip）などの幾何学的変換を導入する。
【００７９】
[0071]ＡＬＦ／ＧＡＬＦへの入力は、ＳＡＯを呼び出した後の再構成された画像であり得る（例えば、図２におけるサンプル適応オフセットの出力）。M. Karczewicz、L. Zhang、W.-J. Chien、X. Li、「EE2.5: Improvements on adaptive loop filter」、Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、 Doc. JVET-B0060、2nd Meeting：サンディエゴ、ＵＳＡ、２０１６年２月２０日−２月２６日およびM. Karczewicz、L. Zhang、W.-J. Chien、X. Li、「EE2.5: Improvements on adaptive loop filter」、Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11、Doc. JVET-C0038、3rd Meeting：ジュネーブ、ＣＨ、２０１６年５月２６日−６月１日において説明されているように、幾何学的変換ベースのＡＬＦ（ＧＡＬＦ）が提案されており、それは、ＪＥＭの最新のバージョン、すなわち、ＪＥＭ３．０に採用されている。ＧＡＬＦでは、分類は、考慮される対角勾配で（with）修正され、幾何学的変換は、フィルタ係数に適用され得る。各２×２ブロックは、その方向性と、アクティビティの量子化された値とに基づいて、２５個のクラスのうちの１つにカテゴリ分類される。詳細は、以下のサブセクションにおいて説明される。
【００８０】
[0072]ビデオエンコーダ２０およびビデオデコーダ３０は、固定フィルタからフィルタを予測するように構成され得る。加えて、時間的予測が利用可能でないときに（イントラフレーム）、コーディング効率を改善するために、１６個の固定フィルタのセットが各クラスに割り当てられる。固定フィルタの使用を示すために、各クラスについて１つのフラグと、もし必要であるならば、選ばれた固定フィルタのインデックスとがシグナリングされる。固定フィルタが所与のクラスのために選択されるときでさえも、適応フィルタの係数ｆ（ｋ，ｌ）が、依然としてこのクラスのために送られ得、このケースでは、再構成された画像に適用されることになるフィルタの係数は、両方の係数のセットの和となる。いくつかのクラスが、たとえ異なる固定フィルタがそれらのために選ばれたとしても、ビットストリーム中でシグナリングされる同じ係数ｆ（ｋ，ｌ）を共有し得る。２０１６年２月１５日に出願された米国仮特許出願第６２／２９５，４６１号、および２０１６年４月１９日に出願された米国仮特許出願第６２／３２４，７７６号において説明されるように、固定フィルタはまた、インターコーディングされたフレームにも適用され得る。
【００８１】
[0073]ビデオエンコーダ２０およびビデオデコーダ３０は、フィルタ係数の時間的予測を実行するように構成され得る。フィルタ係数の時間的予測の態様が、ここで説明される。参照ピクチャのＡＬＦ係数は、記憶され、現在のピクチャのＡＬＦ係数として再利用されることが可能である。現在のピクチャは、参照ピクチャのために記憶されたＡＬＦ係数を使用することを選び、ＡＬＦ係数のシグナリングをバイパスし得る。このケースでは、参照ピクチャのうちの１つに対する１つのインデックスのみ（only an index to）がシグナリングされ、示された参照ピクチャの記憶されたＡＬＦ係数は、現在のピクチャのために単純に引き継がれる。時間的予測の使用を示すために、インデックスを送る前に、１つのフラグ（one flag）が最初にコーディングされる。
【００８２】
[0074]ＨＥＶＣ／ＪＥＭの設計は、いくつかの潜在的な問題を有し得る。潜在的な問題の一例として、ＳＡＯは、分類のために１−Ｄ方向情報のみを取得し（takes）、これは、コーディングパフォーマンスを制限し得る。潜在的な問題の別の例として、ＨＥＶＣにおけるＳＡＯのＥＯは、パターンおよびカテゴリを含む、２つレベルのシグナリングを利用する。ＨＥＶＣにおけるＳＡＯでは、パターン内の各カテゴリについて、１つのオフセットのみが、隣接サンプルと現在のサンプルとの間の差分がどれくらいか（how far）を考慮することなく、サンプルに加算され得る。潜在的な問題の別の例として、ＳＡＯパラメータは、左／上の方向に位置していない２つのブロックについて（for）類似し得ることが観測されている。したがって、異なるブロックからのパラメータの柔軟なマージングを可能にすることは、追加のコーディング利得をもたらし得る。潜在的な問題の別の例として、帯域幅および計算複雑さを増大させ得る、いくつかのインループフィルタリング方法は、再構成された画像を数回処理する必要がある。
【００８３】
[0075]上述された問題を潜在的に解決するために、本開示は、本開示でピークＳＡＯと呼ばれる、新しいフィルタリング方法のための技法を説明し、ここにおいて、選択された隣接サンプルと現在のサンプルとに、単に差分が存在するかではなく（rather than）、その差分の量が、１つより多くのオフセット（more than one offset）を導出するために利用され得る。加えて、より多くの隣接サンプルが利用され得、分類のためのより高度に複雑な基準が導入され得る。本開示において説明されるピークＳＡＯのための技法は、（例えば、ＥＯおよびＢＯに加えて）追加のＳＡＯタイプとしてＳＡＯフィルタにインプリメントされ得るか、またはＥＯなどの既存のＳＡＯタイプの代替となり得る。提案された技法はまた、既存のＳＡＯ技法にも適用可能であり得る。ビデオエンコーダ２０およびビデオデコーダ３０は、個別に、または、相反する記載がない限り、任意の組合せにおいてのいずれかで、以下で説明される技法を適用し得る。
【００８４】
[0076]ビデオエンコーダ２０およびビデオデコーダ３０は、ピークＳＡＯフィルタリングを実行するように構成され得る。ピークＳＡＯの構造の態様が、ここで説明される。一例によると、ピークＳＡＯ情報の３つのカテゴリが、例えば、３つのシンタックス要素、または明示的なシグナリングと、明示的なシグナリングを必要としない導出技法との組合せのいずれかを使用して、ビデオエンコーダ２０からビデオデコーダ３０にシグナリングされ得る。ピークＳＡＯ情報の第１のカテゴリは、タイプ情報である。タイプは、分類のために使用され得、各タイプは、１つまたは複数の関連するグループ（ピークＳＡＯ情報の第２のカテゴリ）を有し得る。加えて、タイプ内の各グループについて、１つまたは複数のクラス（ピークＳＡＯ情報の第３のカテゴリ）が定義され得る。
【００８５】
[0077]タイプは、別個（separate）または共同（joint）シグナリングおよび／または隣接サンプルを選択することの（１つまたは複数の）規則を定義する。例えば、タイプは、フィルタパラメータ（例えば、オフセット値）の選択のために使用される、隣接サンプルのテンプレートと、隣接サンプルのうちいくつかとを定義し得る。例として、第１のタイプは、フィルタパラメータを決定するために使用されることになる４つの隣接サンプルを指定し得、第２のタイプは、フィルタパラメータを決定するために使用されることになる４つの異なる隣接サンプルを指定し得、第３のタイプは、８つの隣接サンプルがフィルタパラメータを決定するために使用されることになるということを指定し得る。グループは、フィルタされるべきサンプルの規則を定義し、および／またはテンプレートにおける隣接サンプルを選択するための（１つまたは複数の）規則を定義する。いくつかの例では、サンプルがいずれのグループにも分類されない場合には、サンプルはフィルタされない。クラスは、サンプルを修正するために、どのオフセットが使用されるべきかを示す。例えば、現在のサンプルと選択された隣接サンプルとの間のサンプル差分は、評価され、クラスインデックスを導出するために使用され得る。異なるクラスは、それ自体のオフセット値を有し得る。
【００８６】
[0078]タイプ定義の態様が、ここでより詳細に説明される。タイプは、隣接サンプルのうちのどれが、フィルタパラメータの選択のために使用されることになるかを示す（tell）。一例によると、ＨＥＶＣ  ＳＡＯでのように、１−Ｄ方向に従って、常に２つの空間的隣接サンプルを使用する代わりに、空間的および／または時間的に隣接しているもの（neighbors）を含む、より多くの隣接サンプルが、タイプ、および／またはグループ、および／またはクラスを決めるために利用され得る。隣接サンプルの定義はまた、ＨＥＶＣにおけるＳＡＯに適用可能であり得る。Ｎは、タイプ決定のために利用される隣接サンプルの数を示す。Ｎは、正の値であり、例えば、２より大きくなり得る。
【００８７】
[0079]別の例では、隣接サンプルは、周囲サンプルの加重平均のような、隣接サンプルのいくつかの周囲サンプルによって導出される値によって表され得る。
【００８８】
[0080]別の例では、隣接サンプルは、テンプレートマッチングプロセスを使用して、所与のピクチャ領域（サーチウィンドウ）から選択され得る。これらのサンプルを識別するために、所与のピクチャ領域におけるピクセルまたはピクセルの選択されたセット毎に（for each pixel or selected set of pixels）、その周囲サンプルが、現在のピクセルの周囲サンプルと比較され、現在のサンプルと比較して類似した（より小さい差分の）周囲サンプルを有する（with）それらのピクセルが、隣接サンプルとして選択される。例えば、図４では、ｓ０およびｓｘの隣接サンプルが、
【００８９】
【数２】
2019534631.tif 000008
【００９０】
として、現在のピクセルＸと比較される。ＳＡＤ値に基づいて、その後（then）、最小のＳＡＤ値（例えば、ｓ０）を有するＮ個（例えば、４つまたは８つ）のサンプルが、識別され、隣接サンプルとして使用される。
【００９１】
[0081]本開示の技法によると、第１のサンプルおよび第２のサンプルに対するオフセットを決定するために、ビデオエンコーダ２０およびビデオデコーダ３０は、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較し、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較し得るとともに、（, with）第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有する。図４を参照すると、ピクセルＣ１、Ｃ３、Ｃ４、およびＣ６は、ピクセルＤＸ１、ＤＸ３、ＤＸ４、およびＤＸ６がピクセルＳＸに対して（relative to）有しているのと同じパターンをピクセルＸに対して有する。別の例として、ピクセルＣ２およびＣ５は、ピクセルＤＸ２−ＤＸ５がピクセルＳＸに対して有しているのと同じパターンをピクセルＸに対して有する。別の例として、ピクセルＣ１−Ｃ８は、ピクセルＤＸ１−ＤＸ８がピクセルＳＸに対して有しているのと同じパターンをピクセルＸに対して有する。
【００９２】
[0082]一例では、Ｎは、４または８に設定され得る。別の例では、異なるタイプ決定が、異なる数の隣接サンプルを利用し得る。別の例では、１つのタイプ内でさえも、異なるグループが、異なる隣接サンプルを使用し得、例えば、Ｎが異なり得る。別の例では、１つのタイプ内でさえも、異なるクラスが、異なる隣接サンプルを使用し得、例えば、Ｎが異なり得る。
【００９３】
[0083]どの隣接サンプルが利用されるかについての相対的な位置は、各タイプについて予め定義され、固定され得る。例えば、Ｎが４に等しい場合、相対的な位置は、図５に示されるように（ｉが０．．３であるＣｉによって示される）、左、上、右、および下であり、一方、Ｎが８に等しい場合、空間的周囲サンプルが利用される。他の例では、あるタイプ（a type）についての隣接サンプルの位置は、スライス内で適応的であり得、例えば、それは、イントラ予測モード／変換行列／スライスタイプに依存し得る。他の例では、相対的な位置のインジケーションは、シーケンスパラメータセット／ピクチャパラメータセット／スライスヘッダ／適応パラメータセット中でシグナリングされ得る。
【００９４】
[0084]図５は、隣接サンプルＣｉと現在のサンプルＣとの例を示す。別の例では、タイプ、グループ、および／またはクラスを決定するために、どの隣接サンプルが利用されるかについての相対的な位置は、図５に示される例に限定されない。相対的な位置は、任意の予め定義された空間的および／または時間的隣接サンプルであり得る。
【００９５】
[0085]ビデオエンコーダ２０は、いくつの隣接サンプルがフィルタリングのために使用されるかについてのインジケーションを、ビデオデコーダ３０にシグナリングし得る。別の例では、いくつの隣接サンプルがフィルタリングのために使用されるかについての最大数のインジケーションがシグナリングされ得る。別の例では、さらに、タイプ内にいくつのグループがあるかについての（of）インジケーションが、さらにシグナリングされ得る。別の例では、タイプのインデックスがシグナリングされ得、これは、数（および／または隣接サンプルの位置）と、ならびに（as well as）Ｋによって示される、タイプ内のグループ数との両方を暗示し得る。このケースでは、別々に（separately）グループ数をシグナリングする必要はない。一例では、タイプインデックス、Ｎ、およびＫの間の関係が、下記の表ＩＩにおいて与えられる。
【００９６】
【表５】
2019534631.tif 000009
【００９７】
[0086]グループ定義の態様が、ここで説明される。例えば、Ｃｌｇｒ（Ｎ）によって、現在のサンプルよりも大きい値を有する隣接サンプル（または代表的な（representative）隣接サンプル）の数を示し、Ｃｓｍｌ（Ｎ）によって、現在のサンプルよりも小さい値を有する隣接サンプルの数を示す。グループ定義の基準は、Ｃｌｇｒ（Ｎ）および／またはＣｓｍｌ（Ｎ）の値に依存し得る。
【００９８】
[0087]別の例では、それは、関数ｆ（Ｃｌｇｒ（Ｎ），Ｃｓｍｌ（Ｎ））に依存し得、例えば、ｆは、最大関数（maximum function）として定義される。Ｃｌｇｒ（Ｎ）が、Ｃｓｍｌ（Ｎ）よりも大きいとき、それは、「大きいトレンド（large trend）」と名付けられる。Ｃｌｇｒ（Ｎ）が、Ｃｓｍｌ（Ｎ）よりも小さいとき、それは、「小さいトレンド（small trend）」と名付けられる。異なる位置に位置する２つのサンプルについて、一方が大きいトレンドに属し、他方が小さいトレンドに属するが、関数の戻り値が同じである場合（一例が、図６Ａおよび図６Ｂに示され、以下で説明される）、以下が適用され得る。一例では、２つのサンプルは、同じグループ内になるように分類され得る。このケースでは、さらに、クラスインデックスが同じである場合、対称（symmetric）フィルタリングプロセスが２つのトレンドに適用され、ここにおいて、オフセットが同じである一方で、大きいトレンドの場合、修正されたサンプル値は、元の値にオフセットを加えたものに設定され、小さいトレンドの場合、修正されたサンプル値は、元の値からオフセットを差し引いたものに設定される。別の例では、２つのサンプルは、２つのグループ／クラスに分類され得、各グループ／クラスは、異なるオフセットを有し得る。このケースでは、フィルタリングプロセスは非対称である。
【００９９】
[0088]図６Ａおよび図６Ｂは、８つの選択された隣接サンプルを有する２つのサンプルの例を示す。図６Ａは、現在のサンプル値が５０に等しく、Ｃｌｇｒ（Ｎ）＝６を有する、「大きいトレンド」の例を示す。図６Ｂは、現在のサンプル値が９３に等しく、Ｃｓｍｌ（Ｎ）＝６を有する、「小さいトレンド」の例を示す。
【０１００】
[0089]一例では、グループの総数Ｋに依存して、いくつかのしきい値（昇順にＴ０，Ｔ１，．．．ＴＫ）が、予め定義され得る。他の例では、しきい値は、シグナリングされるか、またはオンザフライ（on-the-fly）で導出され得る。グループインデックスは、Ｃｌｇｒ（Ｎ），Ｃｓｍｌ（Ｎ）の値を、しきい値と比較することによって導出され得る。
【０１０１】
[0090]以下の条件のうちの１つを満たすサンプル、それは、ｉ番目のグループに分類されることになる：
−ｆ（・）がＴｉよりも大きいおよびｆ（・）がＴｉ＋１よりも大きくない
一方、ｆ（・）がＴ０以下である場合、サンプルは分類されず、すなわち、このサンプルにはフィルタリング演算が適用されないことになる。
【０１０２】
[0091]一例では、しきい値は、下記の表ＩＩＩに示されるように定義される。
【０１０３】
【表６】
2019534631.tif 000010
【０１０４】
[0092]一例では、さらに、グループ決定は、異なるＮ（different Ns）についての（小さい／大きい）トレンドに依存し得る。一例では、２つの異なるＮについて、トレンドが異なる場合、異なるしきい値が利用され得る。別の例では、それはｆ（・）にさらに依存し得る。タイプが４に等しい場合の例（An example for type equal to 4）が、下記の表ＩＶに示されるように与えられる。
【０１０５】
【表７】
2019534631.tif 000011
【０１０６】
[0093]別の例では、タイプが４に等しい場合、６つのグループが存在し得、各グループの定義は、下記の表Ｖに示されるように定義され得る。
【０１０７】
【表８】
2019534631.tif 000012
【０１０８】
[0094]別の例では、いくつの隣接サンプルが、現在のサンプルに等しいかについての情報が、グループ決定のために考慮され得る。別の例では、さらに、グループ決定は、現在のスライスの時間的レベル／ＣＢＦ（全てのゼロ係数を示すための、コーディングされたブロックフラグ）／コーディングされたモード（イントラ／インター）／変換行列／予測方向（片予測または双予測）／予測ブロックに依存し得る。
【０１０９】
[0095]一例では、タイプ４についてＮが４または８のいずれかであり得る表ＩＩＩおよびＩＶに関して上記で説明されたように、Ｎの複数の（multiple）値が、ある特定の（certain）タイプについて許容されるとき、１つまたは複数のインデックスが、どのＮがタイプ内のグループに対して使用されるべきかを示す（tell）ためにシグナリングされ得る。
【０１１０】
[0096]ビデオエンコーダ２０およびビデオデコーダ３０は、クラスインデックスをオフセット値と関連付け得る。クラスインデックス決定の基準が、ここで説明される。クラスインデックスの決定は、選択された隣接サンプルと現在のサンプルとの間の差分の平均値に依存し得る。一例では、選択された隣接サンプルの数（the number of）は、タイプ定義のために使用される隣接サンプルの総数、例えば、上述されたＮよりも大きくなり得ない。一例では、選択された隣接サンプルは、それが「大きい（または小さい）トレンド」であるとき、現在のサンプルよりも大きく（または小さく）なるべきである。選択されたサンプルは、Ｃｓ０，Ｃｓ１，．．．，ＣｓＭ−１で示され、クラスインデックスは、
【０１１１】
【数３】
2019534631.tif 000013
【０１１２】
として導出される。Ｍは、非ゼロの正の数である。別の例では、さらに、全ての選択されたサンプルの中で（among）最大および最小の差分を有するサンプルが、さらに取り除かれ、すなわち、クラスインデックスの決定において考慮されない。別の例では、除算演算（division operation）がシフトによって置き換えられ得る（could）ように、選択されたサンプルの数は、（ｐｏｗ（２，ｘ））に等しくなるべきである。別の例では、１つのサンプルのみが選択され得る（shall）。
【０１１３】
[0097]別の例では、クラスインデックスは、選択された隣接サンプルと現在のサンプルとの間の値の差分の総和（the summation of value differences）に依存し得る。別の例では、さらに、クラスインデックスは、正規化係数（normalization factor）に依存し得る。一例では、クラスインデックスは、次のように導出される：
【０１１４】
【数４】
2019534631.tif 000014
【０１１５】
ここにおいて、ＮＦは、正規化係数を示す。別の例では、正規化係数は、（ｐｏｗ（２，ｘ））に等しくなり得、したがって、クラスインデックスは、次のように導出され得る：
【０１１６】
【数５】
2019534631.tif 000015
【０１１７】
一例では、正規化係数は、タイプインデックス／グループインデックス／Ｎに依存し得る。正規化係数は、各グループのためにシグナリングされ得る。他の例では、全てのグループが、同じ正規化係数を共有し得、ここにおいて、フラグが、正規化係数が共有されるか否かを示すためにシグナリングされ得る。
【０１１８】
[0098]許容されるクラスの最大数が、シグナリングされ得る。一例では、この数は、全てのタイプ／グループによって共有される。一例では、この数は、シグナリングされるか、または暗示されオンザフライで導出され得る。別の例では、さらに、導出されたクラスインデックスが、許容されるクラスの最大数を超えたとき、これらのサンプルは、共にマージされる。一例では、クラスインデックスは、次のように導出される：
【０１１９】
【数６】
2019534631.tif 000016
【０１２０】
ここにおいて、ＩｄｘＯｆｆｓｅｔは、０または１に等しくなり得る。
【０１２１】
[0099]ビデオエンコーダ２０は、オフセット値をビデオデコーダ３０にシグナリングし得る。ピークＳＡＯにおけるオフセット値のシグナリングが、ここで説明される。大きいトレンドおよび小さいトレンドについて、対応する正および負のオフセットは、同じ大きさ（magnitude）を共有し得る。他の例では、異なるオフセット値がシグナリングされ得る。オフセットは、バイパスコーディングを用いてコーディングされ得る。他の例では、オフセットは、コンテキストモデルを用いてコーディングされ得る。単項／短縮された単項／固定長の２値化方法（Unary/truncated unary/fixed-length binarization method）が、オフセットの大きさをコーディングするために使用され得る。ビデオエンコーダ２０およびビデオデコーダ３０は、同じグループにおける（隣接クラスインデックスに関連付けられた）その以前にコーディングされた値と、１つのオフセット（one offset）との間の差分をコーディングすることによって、予測コーディングが利用され得る。さらに、１つのフラグが、この方法がイネーブルにされているか否かを示すためのものである。予測コーディングは、異なるグループにおける（選択されたクラスインデックスに関連付けられた）その以前にコーディングされた値と、１つのオフセットとの間の差分をコーディングすることによって利用され得る。一例では、オフセットは、以前にコーディングされたスライスにおいて使用されたオフセット値から予測されるか、または引き継がれ得る。一例では、オフセット値のいくつかのセットが記憶され得る。セットの１つのインデックスが、さらにシグナリングされ得る。一例では、オフセットは、シグナリングなしに、オンザフライで導出され得る。一例では、選択された隣接サンプルの平均が、最初に計算され得る。オフセットは、ｍｉｎ（ａｖｅｒａｇｅ，Ｔｈｒｅｓｈ）に設定され得、ここにおいて、変数Ｔｈｒｅｓｈは、予め定義され得る。高いビット深度の入力の場合、固定されたシフト値が、予め定義されるか、またはＳＰＳ／ＰＰＳ／ＡＰＳ／スライスヘッダ中でシグナリングされ得、Ｌによって示される。このケースでは、最終オフセットは、（シグナリングされた／導出されたオフセット＜＜Ｌ）に等しく設定される。
【０１２２】
[0100]どのようにビデオエンコーダ２０およびビデオデコーダ３０がピークＳＡＯを適用し得るかの態様が、ここで説明される。一例では、提案されたピークＳＡＯ方法は、ルーマ成分にのみ適用され得る。他の例では、さらに、１つのフラグが、ある特定のピクチャ／スライス／タイルにおけるルーマ成分に対して（for）、ピークＳＡＯがイネーブルにされるか、またはディセーブルにされるかを示すためにシグナリングされ得る。別の例では、提案されたピークＳＡＯ方法は、全ての色成分に適用され得る。一例では、それは、３つ全ての色成分に対して呼び出される（invoked）か、またはディセーブルにされ得る。さらに、１つのフラグが、ある特定のピクチャ／スライス／タイル／ブロックにおける３つ全ての色成分に対して、ピークＳＡＯがイネーブルにされるか、またはディセーブルにされるか否かを示すためにシグナリングされ得る。別の例では、各色成分は、ピークＳＡＯをイネーブルにする／ディセーブルにするそれ独自の制御を有し得る。さらに、各成分について１つのフラグが、ある特定のピクチャ／スライス／タイル／ブロックにおけるその成分に対して、ピークＳＡＯがイネーブルにされるか否か、またはディセーブルにされるか否かを示すためにシグナリングされ得る。別の例では、ルーマおよびクロマ成分についての別個の制御が使用され得る。さらに、ルーマ成分のための１つのフラグおよび２つのクロマ成分のための１つのフラグが、ある特定のピクチャ／スライス／タイル／ブロックにおけるその成分に対して、ピークＳＡＯがイネーブルにされるか、またはディセーブルにされるか否かを示すためにシグナリングされ得る。上記ケースでは、１つ／複数のクロマ成分に対してピークＳＡＯをイネーブルにすることのインジケーションのシグナリングは、ルーマ成分に対するそれ（that）に依存し得る。一例では、ピークＳＡＯが、１つのピクチャ／スライス／タイル／ブロックのルーマ成分に適用されるときのみ、クロマ成分のためのインジケーションがシグナリングされ得る。そうでない場合、ピークＳＡＯは、クロマ成分に適用されないことになる（won’t）。
【０１２３】
[0101]一例では、ある特定の色成分について、各コーディングブロックツリー／コーディングユニット／領域に対して、ピークＳＡＯが適用されるか否かを示すための（to）オン／オフフラグを、ビデオエンコーダ２０は符号化し得、ビデオデコーダ３０は復号し得る。
【０１２４】
[0102]上記で説明されたシステム１０のような、ビデオコーディングシステムにおけるピークＳＡＯの使用が、ここで説明される。説明される技法は、後処理、すなわち、ビデオコーディングシステムのアウトループとして使用され得る。別の例では、提案された方法は、１つの別個のインループフィルタリングコーディングツールとして使用され得る。一例では、それは、ＤＢＦ、ＳＡＯ、適応ループフィルタ（ＡＬＦ）などの、その他全てのフィルタリングコーディングツールの前に呼び出され得る。別の例では、それは、ＤＢの後およびＳＡＯの前で、またはＳＡＯの後であるがＡＬＦの前でのように、フィルタリングコーディングツールの間で呼び出され得る。別の例では、それは、ＡＬＦの後でのように、全てのフィルタリングコーディングツールの後に呼び出され得る。別の例では、ピークＳＡＯは、１つのブロックの予測ブロックに適用され得、例えば、予測ブロックは、動き補償されたブロックであるか、またはイントラ予測から導出される。
【０１２５】
[0103]別の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、本開示のピークＳＡＯ技法を、ＳＡＯのＨＥＶＣバージョンまたはＳＡＯの他のバージョンを含む、他の（１つまたは複数の）インループフィルタリングコーディングツールと一緒にインプリメントし得る。別の例では、さらに、ピークＳＡＯと、一緒に使用されるインループフィルタリングツール（例えば、ＳＡＯ）とに対する入力が、同じになるだろう（will）。別の例では、さらに、ＳＡＯのタイプまたはＥＯのタイプが、ピークＳＡＯの使用をカバーするように拡張されることになる（would）。
【０１２６】
[0104]ＳＡＯに関する技法が、ここで説明される。反対の条件により（with）定義される２つのカテゴリについて、２つのオフセット（例えば、１つが正であり、１つが負である）の大きさは、強制的に同じにされる（are forced to be the same）。したがって、２つの代わりに、１つのオフセットのみがシグナリングされる必要があり得る。一例では、ＥＯカテゴリ１のための正のオフセットおよびＥＯカテゴリ４のための負のオフセットが、強制的に同じにされる。一例では、ＥＯカテゴリ２のための正のオフセットおよびＥＯカテゴリ３のための負のオフセットが、強制的に同じにされる。
【０１２７】
[0105]反対の（opposite）条件により定義される２つのカテゴリについて、ビデオエンコーダ２０およびビデオデコーダ３０は、第２のオフセット（正または負）の大きさを予測的にコーディングし得る。したがって、２つの大きさの差分のみが、第２のオフセットのためにコーディングされ得る。別の例では、空間的左または上のＣＴＵからのＳＡＯパラメータのマージのみを可能にする代わりに、現在のブロックのパラメータが、左上、右上のブロックなどの、他の隣接ブロックから引き継がれ得る（could）ことが提案される。別の例では、さらに、１つのブロックのパラメータは、隣接ブロックでないブロックからコピーされ得る（could）。別の例では、１つのブロックのパラメータは、異なるピクチャに位置するブロックからコピーされ得る（could）。
【０１２８】
[0106]ここで説明される技法は、メモリ帯域幅の節約を達成し得る。複数のインループフィルタリング方法が適用され得るとき、少なくとも２つのインループフィルタリング方法の入力は、同じであり得る。すなわち、分類は、２つ以上のフィルタリング方法に対する同じ入力に基づく。一例では、ＤＢＦを呼び出した後の再構成された画像は、ピークＳＡＯとＳＡＯとの両方のための入力として使用され得る。一例では、ピークＳＡＯを呼び出した後の再構成された画像は、ＳＡＯとＡＬＦ／ＧＡＬＦとの両方のための入力として使用され得る。別の例では、さらに、異なるフィルタリング方法のフィルタリングプロセスは、依然としてある特定の順序に従って実行され得る。
【０１２９】
[0107]図７は、本開示で説明される技法をインプリメントし得る、例となるビデオエンコーダ２０を例示するブロック図である。ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために、空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣り合った（adjacent）フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または除去するために、時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースの圧縮モードのうちの任意のものを指し得る。片方向予測（Ｐモード）または双予測（Ｂモード）のようなインターモードは、いくつかの時間ベースの圧縮モードのうちの任意のものを指し得る。
【０１３０】
[0108]図７の例では、ビデオエンコーダ２０は、ビデオデータメモリ３３、区分化ユニット３５、予測処理ユニット４１、加算器５０、変換処理ユニット５２、量子化ユニット５４、エントロピー符号化ユニット５６を含む。予測処理ユニット４１は、動き推定ユニット（ＭＥＵ）４２、動き補償ユニット（ＭＣＵ）４４、およびイントラ予測ユニット４６を含む。ビデオブロックの再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８、逆変換処理ユニット６０、加算器６２、フィルタユニット６４、および復号ピクチャバッファ（ＤＰＢ）６６を含む。
[0109]図７に示されるように、ビデオエンコーダ２０は、ビデオデータを受信し、受信されたビデオデータをビデオデータメモリ３３に記憶する。ビデオデータメモリ３３は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ３３に記憶されるビデオデータは、例えば、ビデオソース１８から取得され得る。ＤＰＢ６６は、例えば、イントラまたはインターコーディングモードで、ビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ３３およびＤＰＢ６６は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ３３およびＤＰＢ６６は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ３３は、ビデオエンコーダ２０の他の構成要素とともにオンチップであり得、またはこれらの構成要素に対してオフチップであり得る。
【０１３１】
[0110]区分化ユニット３５は、ビデオデータメモリ３３からビデオデータを取り出し、ビデオデータをビデオブロックに区分化する。この区分化はまた、スライス、タイル、または他のより大きい単位への区分化のみならず（as well as）、例えば、ＣＵおよびＬＣＵの４分木構造による、ビデオブロック区分化を含み得る。ビデオエンコーダ２０は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を例示する。スライスは、複数のビデオブロックに（および、場合によっては、タイルと呼ばれるビデオブロックのセットに）分割され得る。予測処理ユニット４１は、エラー結果（例えば、コーディングレートおよび歪みのレベル）に基づいて、現在のビデオブロックのために、複数のイントラコーディングモードのうちの１つまたは複数のインターコーディングモードのうちの１つなど、複数の可能なコーディングモードのうちの１つを選択し得る。予測処理ユニット４１は、残差ブロックデータを生成するために加算器５０に、および参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器６２に、結果として得られたイントラまたはインターコーディングされたブロックを提供し得る。
【０１３２】
[0111]予測処理ユニット４１内のイントラ予測ユニット４６は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対する（relative to）、現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット４１内の動き推定ユニット４２および動き補償ユニット４４は、時間的圧縮を提供するために、１つまたは複数の参照ピクチャ中の１つまたは複数の予測ブロックに対する、現在のビデオブロックのインター予測コーディングを実行する。
【０１３３】
[0112]動き推定ユニット４２は、ビデオシーケンスのための所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、ＰスライスまたはＢスライスとして、シーケンス中のビデオスライスを指定し得る。動き推定ユニット４２および動き補償ユニット４４は、高度に一体化され得るが、概念的な目的のために別々に例示されている。動き推定ユニット４２によって実行される動き推定は、動きベクトルを生成するプロセスであり、これは、ビデオブロックに関する動きを推定する。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。
【０１３４】
[0113]予測ブロックは、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分の観点で、コーディングされるべきビデオブロックのＰＵと密接に一致することが見出されたブロックである。いくつかの例では、ビデオエンコーダ２０は、ＤＰＢ６６に記憶された参照ピクチャのサブ整数ピクセル位置に対する値を計算し得る。例えば、ビデオエンコーダ２０は、参照ピクチャの１／４ピクセル位置、１／８ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、フルピクセル位置および分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【０１３５】
[0114]動き推定ユニット４２は、ＰＵの位置と参照ピクチャの予測ブロックの位置とを比較することによって、インターコーディングされたスライス中のビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、その各々がＤＰＢ６６に記憶された１つまたは複数の参照ピクチャを識別する、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得る。動き推定ユニット４２は、計算された動きベクトルを、エントロピー符号化ユニット５６および動き補償ユニット４４に送る。
【０１３６】
[0115]動き補償ユニット４４によって実行される動き補償は、動き推定によって決定される動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得、場合によっては、サブピクセル精度への補間を実行する。現在のビデオブロックのＰＵのための動きベクトルを受信すると、動き補償ユニット４４は、参照ピクチャリストのうちの１つにおいて動きベクトルがそれを指し示す予測ブロックの位置を特定し得る。ビデオエンコーダ２０は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックについての残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。動き補償ユニット４４はまた、ビデオスライスのビデオブロックを復号する際に、ビデオデコーダ３０によって使用するための、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【０１３７】
[0116]予測処理ユニット４１が、イントラ予測またはインター予測のいずれかを介して、現在のビデオブロックについての予測ブロックを生成した後、ビデオエンコーダ２０は、現在のビデオブロックから予測ブロックを減算することによって、残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、１つまたは複数のＴＵに含まれ、変換処理ユニット５２に適用され得る。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数へと変換する。変換処理ユニット５２は、残差ビデオデータを、ピクセル領域から周波数領域などの変換領域に変換し得る。
【０１３８】
[0117]変換処理ユニット５２は、結果として得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、ビットレートをさらに低減させるために、変換係数を量子化する。量子化プロセスは、係数の一部または全てに関連付けられたビット深度を低減させ得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット５４は、その後、量子化された変換係数を含む行列の走査を実行し得る。別の例では、エントロピー符号化ユニット５６が走査を実行し得る。
【０１３９】
[0118]量子化に続いて、エントロピー符号化ユニット５６は、量子化変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット５６は、コンテキスト適応可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分化エントロピー（ＰＩＰＥ）コーディング、または別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット５６によるエントロピー符号化に続いて、符号化されたビットストリームは、ビデオデコーダ３０に送信されるか、またはビデオデコーダ３０による後の送信または取り出しのためにアーカイブされ得る。エントロピー符号化ユニット５６はまた、コーディングされている現在のビデオスライスのための動きベクトルおよび他のシンタックス要素をエントロピー符号化し得る。
【０１４０】
[0119]逆量子化ユニット５８および逆変換処理ユニット６０は、参照ピクチャの参照ブロックとして後に使用するためのピクセル領域における残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット４４は、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット４４はまた、動き推定の際に使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに１つまたは複数の補間フィルタを適用し得る。加算器６２は、再構成されたブロックを生成するために、動き補償ユニット４４によって生成される動き補償された予測ブロックに、再構成された残差ブロックを加算する。
【０１４１】
[0120]フィルタユニット６４は、再構成されたブロック（例えば、加算器６２の出力）をフィルタし、参照ブロックとしての使用のために、フィルタされた再構成されたブロックをＤＰＢ６６に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するための参照ブロックとして、動き推定ユニット４２および動き補償ユニット４４によって使用され得る。フィルタユニット６４は、デブロックフィルタリング、ＳＡＯフィルタリング、ピークＳＡＯフィルタリング、ＡＬＦ、および／またはＧＡＬＦ、および／または他のタイプのループフィルタなどの、任意のタイプのフィルタリングを実行し得る。デブロックフィルタは、例えば、ブロック境界をフィルタして、再構成されたビデオからブロックノイズアーティファクトを除去するために、デブロッキングフィルタリングを適用し得る。ピークＳＡＯフィルタは、コーディング品質全体を改善するために、再構成されたピクセル値にオフセットを適用し得る。追加のループフィルタ（インループまたはポストループ）もまた使用され得る。
【０１４２】
[0121]図８は、本開示で説明される技法をインプリメントし得る、例となるビデオデコーダ３０を例示するブロック図である。図８のビデオデコーダ３０は、例えば、図７のビデオエンコーダ２０に関して上記で説明されたシグナリングを受信するように構成され得る。図８の例では、ビデオデコーダ３０は、ビデオデータメモリ７８、エントロピー復号ユニット８０、予測処理ユニット８１、逆量子化ユニット８６、逆変換処理ユニット８８、加算器９０、およびＤＰＢ９４を含む。予測処理ユニット８１は、動き補償ユニット８２およびイントラ予測ユニット８４を含む。ビデオデコーダ３０は、いくつかの例では、図７からのビデオエンコーダ２０に関して説明された符号化パスとは概して逆の復号パスを実行し得る。
【０１４３】
[0122]復号プロセス中、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ３０は、受信された符号化されたビデオビットストリームをビデオデータメモリ７８に記憶する。ビデオデータメモリ７８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ７８に記憶されたビデオデータは、例えば、リンク１６を介して、記憶デバイス２６から、またはカメラなどのローカルビデオソースから、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ７８は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ（ＣＰＢ）を形成し得る。ＤＰＢ９４は、例えば、イントラまたはインターコーディングモードで、ビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ７８およびＤＰＢ９４は、ＤＲＡＭ、ＳＤＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ７８およびＤＰＢ９４は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ７８は、ビデオデコーダ３０の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
【０１４４】
[0123]ビデオデコーダ３０のエントロピー復号ユニット８０は、量子化された係数、動きベクトル、および他のシンタックス要素を生成するために、ビデオデータメモリ７８に記憶されたビデオデータをエントロピー復号する。エントロピー復号ユニット８０は、予測処理ユニット８１に動きベクトルおよび他のシンタックス要素を転送する。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。
【０１４５】
[0124]ビデオスライスがイントラコーディングされた（Ｉ）スライスとしてコーディングされるとき、予測処理ユニット８１のイントラ予測ユニット８４は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされたスライス（例えば、ＢスライスまたはＰスライス）としてコーディングされるとき、予測処理ユニット８１の動き補償ユニット８２は、エントロピー復号ユニット８０から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、ＤＰＢ９４に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト０およびリスト１を構成し得る。
【０１４６】
[0125]動き補償ユニット８２は、動きベクトルと他のシンタックス要素とをパースすることによって、現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックについての予測ブロックを生成するために予測情報を使用する。例えば、動き補償ユニット８２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（例えば、イントラまたはインター予測）と、インター予測スライスタイプ（例えば、ＢスライスまたはＰスライス）と、スライスのための参照ピクチャリストのうちの１つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【０１４７】
[0126]動き補償ユニット８２はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット８２は、参照ブロックのサブ整数ピクセルについての補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ２０によって使用されたような補間フィルタを使用し得る。このケースでは、動き補償ユニット８２は、受信されたシンタックス要素から、ビデオエンコーダ２０によって使用された補間フィルタを決定し、予測ブロックを生成するために、この補間フィルタを使用し得る。
【０１４８】
[0127]逆量子化ユニット８６は、ビットストリームにおいて提供されエントロピー復号ユニット８０によって復号された、量子化された変換係数を逆量子化、すなわち量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについて、ビデオエンコーダ２０によって計算された量子化パラメータの使用を含み得る。逆変換処理ユニット８８は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換、例えば、逆ＤＣＴ、逆整数変換、または概念的に類似した逆変換プロセスを適用する。
【０１４９】
[0128]予測処理ユニットが、例えば、イントラまたはインター予測を使用して現在のビデオブロックについての予測ブロックを生成した後、ビデオデコーダ３０は、逆変換処理ユニット８８からの残差ブロックを、動き補償ユニット８２によって生成された対応する予測ブロックと加算することによって、再構成されたビデオブロックを形成する。加算器９０は、この加算演算を実行する１つまたは複数の構成要素を表す。
【０１５０】
[0129]フィルタユニット９２は、再構成されたブロック（例えば、加算器９０の出力）をフィルタし、フィルタされた再構成されたブロックを、参照ブロックとして使用するためにＤＰＢ９４に記憶する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するための参照ブロックとして、動き補償ユニット８２によって使用され得る。フィルタユニット９２は、デブロックフィルタリング、ＳＡＯフィルタリング、ピークＳＡＯフィルタリング、ＡＬＦ、および／またはＧＡＬＦ、および／または他のタイプのループフィルタなどの、任意のタイプのフィルタリングを実行し得る。デブロックフィルタは、例えば、ブロック境界をフィルタして、再構成されたビデオからブロックノイズアーティファクトを除去するために、デブロッキングフィルタリングを適用し得る。ピークＳＡＯフィルタは、コーディング品質全体を改善するために、再構成されたピクセル値にオフセットを適用し得る。追加のループフィルタ（インループまたはポストループ）もまた使用され得る。
【０１５１】
[0130]図９は、フィルタユニット９２の例となるインプリメンテーションを示す。フィルタユニット６４は、同様に（in the same manner）インプリメントされ得る。フィルタユニット６４および９２は、場合によっては、ビデオエンコーダ２０またはビデオデコーダ３０の他の構成要素と連携して、本開示の技法を実行し得る。図９の例では、フィルタユニット９２は、デブロックフィルタ１０２、ピークＳＡＯフィルタ１０４、およびＡＬＦ／ＧＬＡＦフィルタ１０６を含む。ピークＳＡＯフィルタ１０４は、例えば、本開示で説明される方法で、ブロックのサンプルに対するオフセット値を決定するように構成され得る。
【０１５２】
[0131]フィルタユニット９２は、より少数のフィルタを含み得、および／または追加のフィルタを含み得る。加えて、図９に示される特定のフィルタは、異なる順序でインプリメントされ得る。他のループフィルタ（コーディングループ中またはコーディングループ後のいずれか）もまた、ピクセル遷移を平滑化するか、または別の方法でビデオ品質を改善するために使用され得る。その後（then）、所与のフレームまたはピクチャ中の復号されたビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するＤＰＢ９４に記憶される。ＤＰＢ９４は、図１のディスプレイデバイス３２などのディスプレイデバイス上での後の提示（later presentation）のために、復号されたビデオを記憶する追加のメモリの一部であるか、またはそれとは別個であり得る。
【０１５３】
[0132]図１０は、本開示で説明される、例となるビデオ復号技法を例示するフロー図である。図１０の技法は、それに限定されるものではないが、ビデオデコーダ３０のような、汎用ビデオデコーダを参照して説明される。いくつかの事例では、図１０の技法は、ビデオエンコーダ２０の復号ループによって実行され得る。
【０１５４】
[0133]図１０の例では、ビデオデコーダは、第１の差分値を決定するために、現在のブロックの第１のサンプルを、第１のセットの隣接サンプルと比較する（１２０）。第１の差分値は、第１のサンプルと、第１のセットの隣接サンプルとの間の差分であり得る。ビデオデータの現在のブロックについて、ビデオデコーダは、隣接サンプルの位置（locations）を示すシンタックスデータを受信し得るとともに、隣接サンプルの位置は、パターンを定義する。ビデオデコーダは、例えば、スライスレベルで、またはスライスレベルより下または上のいずれかの他のレベルで、隣接サンプルの位置を示すそのようなシンタックスを受信し得る。１つの例となるインプリメンテーションでは、隣接サンプルの位置を示すシンタックスデータは、インデックス値を含み、ビデオデコーダは、隣接サンプルの位置のセットにインデックス値をマッピングする。
【０１５５】
[0134]ビデオコーダは、例えば、現在のブロックの第１のサンプルの値を、第１のセットの隣接サンプルの平均値と比較すること、現在のブロックの第１のサンプルの値を、第１のセットの隣接サンプルの加重平均値と比較すること、現在のブロックの第１のサンプルの値と、第１のセットの隣接サンプルのサンプル値との間の値の差分の総和（a summation of value differences）を決定することによって、または何らかの他のタイプの比較によって、第１の差分値を決定するために、現在のブロックの第１のサンプルを第１のセットの隣接サンプルと比較し得る。
【０１５６】
[0135]ビデオデコーダは、第１の差分値に基づいて、第１のサンプルに対する第１のオフセットを決定する（１２２）。ビデオデコーダは、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較する（１２４）。第１のサンプルと同様に、第２のサンプルについて、ビデオコーダは、現在のブロックの第２のサンプルの値を、第２のセットの隣接サンプルの平均値と比較すること、現在のブロックの第２のサンプルの値を、第２のセットの隣接サンプルの加重平均値と比較すること、現在のブロックの第２のサンプルの値と、第２のセットの隣接サンプルのサンプル値との間の値の差分の総和を決定することによって、または何らかの他のタイプの比較によって、第２の差分値を決定するために、現在のブロックの第２のサンプルを、第２のセットの隣接サンプルと比較し得る。第２の差分値は、第２のサンプルと第２のセットの隣接サンプルとの間の差分であり、第１の差分値および第２の差分値は、同じ符号を有する（例えば、両方が正または両方が負である）。第１のセットの隣接サンプルは、第２のセットの隣接サンプルが第２のサンプルに対して有しているのと同じパターンを第１のサンプルに対して有する。第１のセットの隣接サンプルおよび第２のセットの隣接サンプルは、２つより多くのサンプルをそれぞれ含み（each include）得、第１のセットの隣接サンプルおよび第２のセットの隣接サンプルはまた、少なくとも１つの時間的隣接サンプルをそれぞれ含み得る。
【０１５７】
[0136]ビデオデコーダは、第２の差分値に基づいて、第２のサンプルに対する第２のオフセットを決定する（１２６）。第１のオフセットおよび第２のオフセットは、両方が異なる非ゼロ値である。ビデオデコーダは、フィルタされた画像を生成するために、第１のサンプル値に第１のオフセットおよび第２のサンプル値に第２のオフセットを適用する(１２８)。ビデオデータの現在のブロックについて、ビデオデコーダは、少なくとも２つのグループに現在のブロックのサンプルをグループ分けするための規則（rules）のセットを示すシンタックスデータを受信し得る。第１のグループは、例えば、フィルタされるべきサンプルを含み得、第２のグループは、フィルタされるべきでないサンプルを含み得る。
【０１５８】
[0137]図１０の例では、第１のサンプルの値は、第１のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく（またはそれよりも小さく）なり得、第２のサンプルの値もまた、第２のセットの隣接サンプルにおけるサンプルの全ての値よりも大きく（またはそれよりも小さく）なり得る。それでもなお、第１のサンプルおよび第２のサンプルがこの特性を共有しているのにかかわらず、ビデオデコーダは、例えば、差分の大きさに基づいて、第１のサンプルおよび第２のサンプルに異なるオフセットを加算する。一例として、第１のサンプルの値は、第１のセットの隣接サンプルにおけるサンプルの全ての値よりもはるかに大きく（またはそれよりもはるかに小さく）なり得、一方、第２のサンプルの値は、第２のセットの隣接サンプルにおけるサンプルの全ての値よりもほんのわずかに大きい（またはそれよりもわずかに小さい）。この違い（difference）に基づいて、ビデオデコーダは、第１のサンプルおよび第２のサンプルに異なるオフセットを適用し得る。
【０１５９】
[0138]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で１つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体のような有形の媒体に対応するコンピュータ可読記憶媒体を含み得る。このように、コンピュータ可読媒体は一般的に、（１）非一時的である有形のコンピュータ可読記憶媒体、または（２）信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１６０】
[0139]限定ではなく例として、このようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用され得、かつコンピュータによってアクセスされ得るその他任意の媒体を備え得る。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに非一時的な有形の記憶媒体を対象にすることが理解されるべきである。ここで使用される場合、ディスク（disk）およびディスク（disc）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多目的ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイ（登録商標）ディスクを含み、ここでディスク（disks）は、通常磁気的にデータを再生し、一方ディスク（discs）は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１６１】
[0140]命令は、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の同等の集積されたまたはディスクリートな論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、ここで使用される場合、「プロセッサ」という用語は、任意の前述の構造またはここで説明された技法のインプリメンテーションに好適なその他任意の構造を指し得る。加えて、いくつかの態様では、ここで説明された機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に提供され得、または、複合コーデックに組み込まれ得る。また、これら技法は、１つまたは複数の回路または論理要素において完全にインプリメントされ得る。
【０１６２】
[0141]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられるか、または、好適なソフトウェアおよび／またはファームウェアと併せて、上記で説明されたような１つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【０１６３】
[0142]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
【図１】
2019534631.tif 000017
【図２】
2019534631.tif 000018
【図３Ａ】
2019534631.tif 000019
【図３Ｂ】
2019534631.tif 000020
【図３Ｃ】
2019534631.tif 000021
【図３Ｄ】
2019534631.tif 000022
【図４】
2019534631.tif 000023
【図５】
2019534631.tif 000024
【図６Ａ】
2019534631.tif 000025
【図６Ｂ】
2019534631.tif 000026
【図７】
2019534631.tif 000027
【図８】
2019534631.tif 000028
【図９】
2019534631.tif 000029
【図１０】
2019534631.tif 000030
【国際調査報告】
2019534631.tif 000031
2019534631.tif 000032
2019534631.tif 000033
2019534631.tif 000034
2019534631.tif 000035