[0022] 本開示の態様は、概して、ビデオコーディングおよび圧縮に関する。いくつかの例では、本技法は、YCbCr4:2:0以外の色空間がサポートされ得る高効率ビデオコーディング(HEVC)範囲拡張(Range Extension)に関連しうる。
[0023] 本開示の態様は、ビデオデータの第1の非ルーマ色成分に関して、第1のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するか、または第2のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するかを決定することを含み得る、ビデオデータに対するデブロックフィルタリングを実行するための方法、装置、および製造に関する場合がある。次に、決定されたデブロックフィルタリングプロセスに従って、第1の非ルーマ色成分に対してデブロックフィルタリングが実行され得る。
[0024] ビデオデータは、YCbCrおよびRGBなど、様々な色空間内に存在し得る。ビデオデータは、色成分とも呼ばれる成分を含み、たとえば、Y、Cb、およびCrはYCbCrビデオデータの各成分であり、R、G、およびBはRGBビデオデータの各成分である。YCbCr色空間内のビデオデータの場合、Yはルーマ成分(luma component)であり、CbおよびCrはクロマ成分(chroma component)である。非ルーマ成分(non-luma component)という用語は、本明細書で、ルーマ成分ではない、ビデオデータの任意の成分を記述するために使用される。したがって、YCbCr色空間内のビデオデータの場合、Yはルーマ成分であり、CbおよびCrは非ルーマ成分である。RBG色空間内のビデオデータの場合、R、G、およびBはすべて非ルーマ成分である。
[0025] HEVCは、ITU−T WP3/16とISO/IEC JTC 1/SC 29/WG 11とのビデオコーディング共同研究部会(JCT−VC:Joint Collaborative Team on Video Coding)によって最近開発されたビデオコーディング規格である。HEVCの範囲拡張は、YCbCr4:2:2、YCbCr4:4:4、およびRGBなど、YCbCr4:2:0以外の色空間に関するビデオコーディングを拡張することを含む。
[0026] たとえば、コーディングユニット(CU:coding unit)または変換ユニット(TU:transform unit)内のピクセルのルーマ成分およびクロマ成分は、異なるサブサンプリングフォーマットでコーディングされ得る。一例では、ピクセルのルーマ成分およびクロマ成分は4:2:0フォーマットでコーディングされ得る。4:2:0ピクセルフォーマットでは、ピクセルの2×2ブロックごとに、4つのルーマ成分と2つのクロマ成分(たとえば、1つのCrクロマ成分および1つのCbクロマ成分)とが存在する。したがって、ピクセルの2×2ブロック内で、クロマ成分は、1/2の水平解像度および1/2の垂直解像度でサンプリングされる。4:2:2ピクセルフォーマットでは、ピクセルの2×2ブロックごとに、4つのルーマ成分と4つのクロマ成分(たとえば、2つのCrクロマ成分および2つのCbクロマ成分)とが存在する。したがって、4:2:2フォーマットの場合、クロマ成分は、半分(1/2)の水平解像度およびフル垂直解像度でサンプリングされる。4:4:4ピクセルフォーマットは、クロマ成分の何のサブサンプリングも伴わない。すなわち、4:4:4フォーマットにおいて、ピクセルの2×2ブロックの場合、4つのルーマ成分と、4つのCr成分および4つのCb成分とが存在する。RGBフォーマットにおいて、4:4:4フォーマットで、赤色サンプルの数、緑色サンプルの数、および青色サンプルの数は典型的には等しい。
[0027] いくつかのビデオコーディング技法は、ビデオ信号の再構成の間に再構成誤差(reconstruction error)をもたらす場合がある。場合によっては、再構成誤差を補償するために、ビデオコーディングプロセスにおいてフィルタリングが適用され得る。たとえば、ブロックコーディング技法が使用されるとき、ブロック間にシャープエッジ(sharp edge)が発生し得る。元のビデオ信号内に存在しないシャープエッジなど、ブロッキングアーティファクト(blocking artifact)に対処するために、ビデオコーダ(ビデオエンコーダおよび/またはビデオデコーダ)は、ブロックエッジを平滑化するために、ピクセルエッジフィルタリング動作を実行することができる。
[0028] フィルタリング動作は、一般に、境界強度、およびブロックエッジに関連するエッジしきい値など、フィルタパラメータによって指定される。「エッジしきい値(edge threshold」という用語は、エッジシャープネス(edge sharpness)のしきい値を指す。たとえば、デブロッキングフィルタリングは、境界におけるエッジがどの程度シャープであるかに基づいて、再構成されたビデオの特定のブロック境界において適用されてよく、または適用されなくてもよい。エッジがフィルタリングされるためには、エッジしきい値が大きければ大きいほど、再構成されたビデオのブロック境界におけるエッジはますますシャープになるはずである。
[0029] 「境界強度(boundary strength)」という用語は、下でより詳細に説明される。「境界強度」は非負整数値であり、この値は、ブロッキングアーティファクトを有する可能性がより高いブロックエッジに、境界強度に関するより大きい値が割り当てられる、再構成されたビデオのブロック境界の性質である。
[0030] フィルタパラメータは、あるピクセルエッジから次のピクセルエッジに、またあるビデオコーディング規格から別のビデオコーディング規格に動的に変化し得る。したがって、ビデオコーダは、実際のフィルタリング動作を実行するのに先立って、境界強度とブロックエッジのエッジしきい値とを計算する。これらの境界強度およびエッジしきい値の計算は、(「ループ内(in loop)」と呼ばれる)ビデオコーディングプロセスのフィルタリング動作と同じパイプライン段階で、またはフィルタリング動作に先立つ段階で、起こり得る。
[0031] 境界強度を生成した後で、ビデオコーダは、実際のピクセルフィルタリングを実行することができる。いくつかのデブロッキング実装形態は、(ビデオコーダに対して)外部および/または内部記憶要素から関連ピクセルを転送するため、正確なデブロッキングパラメータを選択するため、ならびにデブロッキングされたピクセルを外部および/または内部記憶要素に再度記憶するために、ハードワイヤード制御を使用することができる。
[0032] いずれの場合も、HEVCバージョン1、H.265:高効率ビデオコーディング(2013年4月13日)(確定されたHEVC規格の第1バージョン)では、逆量子化および逆変換の後、再構成された信号にループ内デブロッキングフィルタリングが適用される。「ループ内(in-loop)」デブロッキングフィルタリングという用語は、当技術分野でよく知られており、符号化パス(encoding path)および復号パス(decoding path)のいずれかまたは両方の中で実行されるデブロッキングフィルタリングを指す。デブロッキングされた、フィルタリングされた信号は、インター予測に関する基準フレームとして記憶される。YCbCr4:2:0フォーマットの場合、上述のように、Cb成分またはCr成分と比較して、Y成分内により多くの情報が存在し、Y成分に対してCb成分およびCr成分がダウンサンプリングされる。Y成分の特徴とCb成分またはCr成分の特徴との間の特徴差により、Cb成分またはCr成分のいずれかに適用されるデブロッキングフィルタ方式に対して、Y成分に関して異なるデブロッキングフィルタリング方式が適用される。
[0033] HEVCでは、Y成分に関して、(それぞれ、強いデブロッキングモードおよび弱いブロッキングモードと呼ばれる場合もある)強いフィルタと弱いフィルタとを含めて、2つのフィルタが定義される。強いフィルタは強いデブロッキングのために使用され、弱いフィルタは弱いデブロッキングのために使用される。
[0034] 弱いデブロックフィルタリングまたは強いデブロックフィルタリングのいずれかの場合、ビデオブロックのエッジピクセルは、閲覧者(viewer)にとって隣接ビデオブロック間の遷移を知覚することがより困難になるように、隣接ビデオブロックのエッジピクセルに対してフィルタ処理され得る。たとえば、弱いデブロックフィルタリングまたは強いデブロッキングフィルタリングのいずれかにより、隣接ビデオブロック間の境界を「平滑化(smooth)」する目的で、エッジピクセルの値を(たとえば、隣接ピクセルを含む)近接ピクセルの値により相似させるために、それらの値を調整することによってフィルタリングが実行され得る。強いフィルタリングの場合、エッジピクセル値は、たとえば、より大きい平均化係数を使用することによって、弱いフィルタリングよりも強く近接ピクセルの値に基づく。様々な例では、フィルタをより強くさせるために、近接ピクセルの値により強く基づくエッジピクセル値を有すること以外の係数が採用されてよい。
[0035] たとえば、強いフィルタは、一般に、弱いフィルタによって考慮されるビデオデータのライン数よりも多いビデオデータラインを考慮する、および/または弱いフィルタのフィルタタップサイズよりも長いフィルタタイプサイズを有し得る。Cb成分およびCr成分はY成分と比較してより少ないエネルギーを有するため、HEVCバージョン1では、弱いフィルタだけがCb成分およびCr成分に適用される。
たとえば、HEVCバージョン1によれば、ルーマ成分に関して、強いデブロッキングフィルタと弱いデブロッキングフィルタとが存在する。ルーマ成分に関する強いデブロッキングフィルタは、境界を平滑にするために、フィルタリングされているエッジの各サイドに関して3つのピクセルを修正する。ルーマ成分に関する弱いフィルタは、フィルタリングされているエッジの各サイドに関して2つのピクセルだけを修正する。このために、ルーマ成分に関する強いデブロッキングフィルタは、弱いデブロッキングフィルタよりも、フィルタリングされた境界の平滑さを低減させる。HEVCバージョン1による、非ルーマ成分に関するデブロッキングフィルタは、エッジの各サイドに関して1つのピクセルだけを修正する。したがって、HEVCバージョン1によれば、デブロッキングフィルタは、ルーマ成分に関する弱いデブロッキングフィルタよりも弱い。
[0036] フィルタ強度は、次のようにトレードオフされる。適応されるデブロックフィルタリングが強ければ強いほど、除去されるブロックアーティファクトはより良好になる。しかしながら、フィルタの強度が増大すると、閲覧者によって知覚される、再構成された画像のシャープネスは減少し始める可能性がある。
[0037] HEVCバージョン1では、ビデオデータのルーマ成分に関するデブロッキングフィルタリングプロセスは、いくつかの点で、非ルーマ成分に関するデブロッキングフィルタリングプロセスとは異なる。本開示の態様によるいくつかの例では、ビデオデータの非ルーマ成分に関するデブロッキングフィルタリングプロセスがHEVCバージョン1においてルーマ成分に関してだけに使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様を適用すべきかどうかについて決定が行われる。
[0038] 様々な例では、この決定は、下でより詳細に論じられる1つまたは複数の要因に基づいて行われ得る。1つの特定の例では、一致HEVCバージョン1においてルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が、本開示に従って、1つまたは複数の非ルーマ成分に適用されるべきである場合、フラグ「deblock_chroma_as_luma」の値は1に設定され得る。言い換えれば、様々な例では、1に設定されている「deblock_chroma_as_luma」フラグの値に基づいて、非ルーマ成分のうちの1つまたは複数のデブロックフィルタリングは、HEVCバージョン1におけるルーマ成分のデブロッキングフィルタリングと同じように実行される(すなわち、同一である)。場合によっては、「deblock_chroma_as_luma」フラグの値が1に設定されていることは、強いフィルタリングが非ルーマ成分に適用され得るという表示になる。
[0039] さらに、本開示によれば、1つまたは複数の非ルーマ成分に関するデブロッキングフィルタリングがHEVCバージョン1に指定されるように実行されるべきである場合、deblock_chroma_as_lumaフラグの値は0に設定される。言い換えれば、いくつかの例では、「deblock_chroma_as_luma」フラグの値が0に設定されていることに基づいて、非ルーマ成分のデブロックフィルタリングは、たとえば、非ルーマ成分のデブロックフィルタリングに関して強いフィルタが可能にされないように、HEVCバージョン1による従来の様式で実行される。
[0040] 1つの特定の例では、ビデオデータの色空間に応じて、フラグの値は0または1のいずれかに設定され得る。他の例では、下でより詳細に論じるように、HEVCバージョン1による、ルーマ成分に関してだけ利用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が1つまたは複数の非ルーマ成分に適用されるべきであるかどうかを決定する際に他の係数が使用され得る。また、deblock_chroma_as_lumaフラグの値が1に設定されているとき、本開示に従って、非ルーマ成分に適用され得る、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が下でより詳細に論じられる。
[0041] HEVCバージョン1によれば、ルーマ成分に関して、各ブロックについて、何のフィルタも適用しないか、弱いフィルタを適用するか、または強いフィルタを適用するかについて決定が行われる。この判断は、たとえば、それぞれのブロックのエッジ特性に基づき得る。上で論じたように、ルーマの強いフィルタは、ルーマの弱いフィルタよりも大きいフィルタリング強度を有する。また、HEVCバージョン1によれば、非ルーマ成分に関して、各ブロックについて、何のフィルタも適用しないか、または弱いフィルタを適用するかについて決定が行われる。この判断は、たとえば、非ルーマ成分内のそれぞれのブロックのエッジ特性に基づき得る。HEVCバージョン1によれば、非ルーマ成分に関して強いフィルタリングは決して実行されない。さらに、HEVCバージョン1によれば、非ルーマ成分に関して実行され得る「弱い」フィルタリングは、HEVCバージョン1による、ルーマ成分に関して実行される「弱い」フィルタリングよりもフィルタリング強度の点で弱い。
[0042] 様々な他の色空間内のクロマ成分は上で説明したYCbCr4:2:0フォーマットのクロマ成分に関連するエネルギーよりも多くのエネルギーを有し得るため、クロマ成分に関して弱いフィルタだけを適用することは、RGBまたはYCbCr4:4:4など、YCbCr4:2:0以外の色空間に関する視覚的品質を損ねる可能性がある。
[0043] 本開示のいくつかの態様は、概して、フォーマット適応型フィルタリング方式を提供することに関する。たとえば、本開示の技法は、たとえば、コーディングされているビデオデータの少なくとも色空間に基づいて、クロマ成分に関する可変(すなわち、1つまたは複数の係数に基づいて適応的に)デブロッキングフィルタリングを可能にすることを含む。本明細書で説明するように、「色空間(color space)」という用語は、概して、色成分(たとえば、RGB、YCbCrなど)および/またはビデオデータを形成する各成分のサンプリングレートを指す。本明細書で使用する場合、「色空間」という用語は、色成分を指すだけでなく、それらの色成分の関連付けられたサンプリンフォーマットも指し、その結果、たとえば、色空間YCbCr4:4:4およびYCbCr4:2:0は異なる色空間と見なされる。色空間は、ビデオフォーマット、または、より簡単に、フォーマットと呼ばれる場合もある。
[0044] いくつかの例では、デブロックフィルタリングの結果として達成される視覚的品質を改善するために、クロマ成分に関して、またはすべての色成分(たとえば、RGB色空間の場合、R、G、およびB)に関して、強いフィルタリングが可能にされる(すなわち、適用され得る)。
[0045] 上で論じたように、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が非ルーマ成分に適用されるべきであるか否かを示すために、フラグ「deblock_chroma_as_luma」などの表示がシグナリングされ得る。によるルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの態様のうちの1つは強いフィルタリングである。HEVCバージョン1によれば、強いフィルタリングは非ルーマ成分に適用され得ない。本開示により動作するいくつかの例では、deblock_chroma_as_lumaフラグが1の値を有するとき、再構成された信号のすべての色成分に強いフィルタリングが適用され得る。本開示による他の例では、deblock_chroma_as_lumaフラグが1の値を有するとき、再構成された信号の非ルーマ成分に関して強いフィルタリングは可能にされないが、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの他の態様は、下でより詳細に論じるように、再構成されたビデオの非ルーマ成分のデブロッキングフィルタリングに適用される。
[0046] たとえば、強いフィルタリングが再構成された信号のすべての色成分に適用され得るか否かを示すために、ビデオエンコーダによって、フラグ「deblock_chroma_as_luma」などの表示がシグナリングされ得る。フラグの値が「0」に設定されている場合、HEVCバージョン1によるデブロックフィルタリングが実行される。フラグの値が「1」に設定されている場合、HEVCバージョン1においてルーマに関して定義されたデブロックフィルタリングが再構成された信号のすべての色成分にさらに適用される。このプロセスの例を下でより詳細に論じる。
[0047] 上述のフラグの値は、ビデオコーダのユーザの任意で設定されてよい。たとえば、ユーザが、ビデオコーダがクロマ成分に強いフィルタリングを適用することを望まない場合、RGBシーケンスの場合、deblock_chroma_as_lumaフラグは1の値に設定され得、YCbCr4:4:4シーケンスの場合、このフラグは0の値に設定され得る。
[0048] 一例では、フラグは、シーケンスパラメータセット(SPS:sequence parameter set)の一部として、シーケンスレベルでビデオエンコーダによってシグナリングされ得る。この例では、ビデオエンコーダによって生成されるシーケンスパラメータセット(SPS)または別のシーケンスレベルパラメータセットは、再構成された信号のすべての色成分に強いフィルタリングが適用され得るか否かを示すためのフラグ(たとえば、deblock_chroma_as_luma)を含み得る。
[0049] 別の例では、フラグは、ピクチャパラメータセット(PPS:picture parameter set)の一部として、ピクチャレベルでビデオエンコーダによってシグナリングされ得る。別の例では、フラグは、スライスヘッダの一部として、スライスレベルでビデオエンコーダによってシグナリングされ得る。各場合において、ビデオデコーダは、符号化されたビットストリーム内でビデオエンコーダによって生成されたシグナリングを受信する。
いくつかの例では、上で論じたように、表示、たとえば、deblock_chroma_as_lumaフラグが使用され得、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が、本開示により、非ルーマ成分に適用されるべきであるか否かを示す。これらの例では、フラグの値は、デブロッキングフィルタリングに先立って設定され、デブロッキングフィルタリングプロセスは、フラグの値に基づいて、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様を非ルーマ成分に適用することができる。他の例では、何のそのようなフラグも存在せず(すなわち、何のそのようなフラグもコーディングまたはシグナリングされず)、HEVCバージョン1による、ルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様が、本開示により、非ルーマ成分に適用されるべきか否かについての決定は、デブロッキングフィルタリングプロセス自体の間に行われ得る。これらの例では、(HEVCバージョン1における、ルーマ成分に関するデブロッキングフィルタリングの1つまたは複数の態様を1つまたは複数の非ルーマ成分に適用するか否かについての)決定は、フラグの値に基づいてではなく、本開示で論じる1つまたは複数の要因に基づいて行われ得る。
[0050] 本開示の一態様によれば、いくつかの例では、(HEVCバージョン1における、ルーマ成分に関するデブロッキングフィルタリングの1つまたは複数の態様を1つまたは複数の非ルーマ成分に適用するか否かについての)決定は、コーディングされているビデオデータのプロファイルに基づいて行われ得る。「プロファイル(profile)」は、アルゴリズム、機能、および/またはツール、ならびにそれらのアルゴリズム、機能、および/またはツールに適用される任意の制約のサブセットに対応する。より具体的には、「プロファイル」は、ビデオコーディング規格によって指定されたビットストリームシンタックス全体のサブセットである。「ティア(tier)」および「レベル(level)」は、各プロファイル内で指定され得る。「レベル」は、デコーダのリソースの消費限度に対応する。デコーダのリソースの例としては、デコーダのメモリ、ならびに、ピクチャの解像度、ビットレート、およびブロック処理率に影響を及ぼす、デコーダの消費能力がある。
[0051] プロファイルは、プロファイルインジケータ、たとえば、「profile_idc」を有し、この場合、ハイプロファイル4:4:4およびスクリーンコンテンツ4:4:4プロファイルは、profile_idcのそれぞれの値によって示され得る2つのタイプのプロファイルの例である。同様に、レベルは、レベルインジケータ(たとえば、「level_idc」の値を用いてシグナリングされ得る。ティアのレベルは、ビットストリーム内のシンタックス要素の値に課された制約条件の指定されたセットであり得る。これらの制約条件は、値に関する単純な制限であり得る。代替として、制約の指定されたセットは、値の演算の組合せ(たとえば、ピクチャの幅×ピクチャの高さ×毎秒復号されるピクチャの数)に関する制約の形態をとり得る。下位ティアのために指定されたレベルは、上位ティアのために指定されたレベルよりも制約される。
[0052] いくつかの例では、ビデオデータのプロファイルがハイプロファイル4:4:4である場合、HEVCバージョン1におけるルーマ成分に関するデブロッキングフィルタリングの1つまたは複数の態様をビデオデータの1つまたは複数の非ルーマ成分に適用する決定が行われる。これらの例のうちのいくつかでは、ビデオデータのプロファイルがスクリーンコンテンツ4:4:4プロファイルである場合、HEVCバージョン1における、非ルーマ成分に関して指定されたように、1つまたは複数のルーマ成分に関するデブロッキングフィルタリングを実行する決定が行われる。
[0053] 別の例では、ビデオデータのクロマフォーマットに応じて、異なるデブロッキングフィルタリングが適用され得る。HEVCに対する範囲拡張では、信号が4:4:4であるか、4:2:2であるか、または4:2:0であるかを示すためにクロマフォーマットがシグナリングされ得る。この例では、フォーマットが4:4:4である場合、HEVCバージョン1においてルーマに関して定義されたデブロッキングフィルタリングがすべての色成分に関して適用される。フォーマットが4:2:2、4:2:0、または4:0:0である場合、HEVCバージョン1に従って、1つまたは複数の非ルーマ成分に関するデブロッキングフィルタリングが実行される。
[0054] さらに別の例では、HEVCバージョン1に従ってルーマ成分に適用されるフィルタリングが、強いデブロッキングフィルタリングを除いて、非ルーマ成分に提供され得る。たとえば、HEVCバージョン1によれば、(ルーマ成分ではなく)非ルーマ成分に関して、ブロック境界を形成するブロックのうちのいずれか、またはそれらの両方がイントラ予測モードでコーディングされるときだけ、ブロック境界がフィルタリングされる。したがって、HEVCバージョン1による、ルーマ成分に関するデブロッキングフィルタリングの1つまたは複数の態様をビデオデータの1つまたは複数の非ルーマ成分に適用する決定が行われたとき、ビデデータの1つまたは複数の非ルーマ成分に適用され得る、HEVCバージョン1によるルーマ成分に関するデブロッキングフィルタリングの1つまたは複数の態様のうちの1つは、その境界を形成するブロックのいずれもイントラ予測モードでコーディングされない境界に関してすら、ビデオデータの非ルーマ成分に関してデブロッキングフィルタリングが実行され得ることである。
[0055] 上の例では、非ルーマ成分に強いフィルタを適用することを控える根拠は、強いフィルタは、一般に、弱いフィルタと比較して、より長いフィルタタップサイズにより、より多くのピクセルラインを記憶することを必要とするため、強いフィルタはより多くの実装リソースを必要とし得ることである。したがって、実装の複雑さを低減するために、HEVCバージョン1による、ルーマ成分に適用するデブロッキングフィルタリングのすべての態様は、HEVCバージョン1による、ルーマ成分に関して使用される強いフィルタを除いて、非ルーマ成分に適用され得る。すなわち、本開示の様々な例によれば、HEVCバージョン1におけるルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様を非ルーマ成分に適用する決定が行われたとき、HEVCバージョン1におけるルーマ成分に関して指定されたデブロッキングフィルタリングプロセスのすべての態様は、非ルーマ成分に関して強いフィルタリングは可能にされないことを除いて、非ルーマ成分に適用され得る。
[0056] さらに別の例では、上述のフラグまたはクロマフォーマットに従って、異なるしきい値βおよびtCが使用され得る。たとえば、HEVCでは、しきい値βおよびtCは、デブロッキング強度を制御するように定義される。すなわち、βおよびtCの値が大きければ大きいほど、デブロッキング強度はますます大きくなり、その逆も同様である。βおよびtCの正確な定義はHEVC仕様で与えられている。下に示すように、QPによるこれらのしきい値を含むA表(8−11)がHEVCで定義されている。
[0057] この表は、変数β’およびtC’に関する値を提供する。変数βおよびtCは、次のように、変数β’およびtC’から導出され得る。
[0060] 本開示の態様によれば、クロマ成分に関して強いフィルタリングが適用され得るように、追加の表が定義され得る。この例では、HEVCバージョン1においてルーマ成分に関してだけ使用されるデブロッキングフィルタリングプロセスの1つまたは複数の態様を非ルーマ成分に適用する決定が行われている場合、非ルーマ成分に関して強いフィルタリングが可能にされるように、この新しい表が使用される。
[0061] HEVCバージョン1では、デブロッキングは、インターコーディングされたブロックに関するビデオデータの非ルーマ成分に適用され得ないが、デブロッキングフィルタリングは、インターコーディングされたブロックのルーマ成分に適用され得る。
[0062] いくつかの例では、本開示の技法は、クロマデブロッキングフィルタリングをインターコーディングされたブロックに適用することができる。HEVCに関する現在の仕様では、境界強度が、その境界を形成するブロックのうちの1つがイントラコーディングされることを示す「2」に等しいとき、クロマフィルタが適用される。本開示によれば、境界の境界強度が「0」を超える(非ルーマ成分の中でも、インターコーディングされたブロックに関してデブロッキングフィルタリングが実行されることを可能にする)とき、クロマフィルタリングがさらに適用され得る。いくつかの例では、非ルーマ成分に関する境界強度は、ルーマ成分に関する境界強度が計算されるのと同様の方法で計算され得る。または、いくつかの例では、ルーマ成分に関して計算された同じ境界強度がクロマ成分に関して適用され得る。下でより詳細に説明される図10は、本開示の技法に一致する、HEVCに従って境界強度がどのように計算され得るかを示す流れ図である。
[0063] 図1は、ビデオデータをフィルタリングするための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信のために装備され得る。
[0064] 宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、符号化ビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波(RF)スペクトルあるいは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を促進するために有用であり得る任意の他の機器を含み得る。
[0065] いくつかの例では、符号化データは、出力インターフェース22から記憶デバイスへ出力され得る。同様に、符号化データは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化ビデオデータを記憶するための任意の他の適当なデジタル記憶媒体などの、様々な分散されたあるいは局所的にアクセスされるデータ記憶媒体のうちのいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成される符号化ビデオを記憶することができる、ファイルサーバまたは別の中間的な記憶デバイスに対応し得る。
[0066] 宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14へ送信することができる、任意のタイプのサーバであり得る。例示的なファイルサーバは、ウェブサーバ(たとえば、ウェブサイトのための)、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、または局所的なディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバ上に記憶されている符号化ビデオデータにアクセスするのに適した、それらの両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0067] 本開示の技法は、ワイヤレスの適用例またはセッティングに必ずしも限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオプレイバック、ビデオブロードキャスティングおよび/もしくはビデオ電話通信などの適用例をサポートするために一方向または双方向のビデオ送信をサポートするように構成され得る。
[0068] 図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、ビデオコーディングにおいて変換を実行するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースしてもよい。
[0069] 図1の例示されたシステム10は、一例にすぎない。ビデオコーディングにおいてフィルタリングを実行するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法は、ビデオ符号化デバイスによって実行されるが、本技法は、また、ビデオコーデックによって実行され得る。その上、本開示の技法は、また、ビデオプリプロセッサによって実行されてもよい。ソースデバイス12および宛先デバイス14は、ソースデバイス12が、コーディングされたビデオデータを宛先デバイス14への送信のためにその中で生成する、そのようなコーディングデバイスの単なる例である。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素と復号構成要素とを含むように、実質的に対称的な方式で動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオプレイバック、ビデオブロードキャスティング、またはビデオ電話通信のための、ビデオデバイス12と14との間での一方向または二方向のビデオ送信をサポートし得る。
[0070] ソースデバイス12のビデオソース18は、ビデオカメラ、あらかじめキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオ供給インターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代わりとして、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブビデオ、およびコンピュータ生成ビデオの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き携帯電話またはビデオ付き携帯電話を形成し得る。しかしながら、上で言及されたように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/またはワイヤードの用途に適用され得る。各々の場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。次いで、符号化されたビデオ情報は、出力インターフェース22によってコンピュータ可読媒体16に出力され得る。
[0071] コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、もしくは他のコンピュータ可読媒体などの有形記憶媒体を含み得る。いくつかの例では、ネットワークサーバ(図示されず)は、ソースデバイス12から符号化ビデオデータを受信し、たとえば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス14に提供し得る。同様に、ディスクスタンピング設備のような、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含むディスクを生成し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。本明細書および特許請求の範囲を通して、「有形プロセッサ可読記憶媒体(tangible processor-readable storage medium)」および/または「非一時的プロセッサ可読媒体(non-transitory processor-readable medium)」という用語は、特に、伝搬信号それ自体を除外するよう定義されるが、「有形プロセッサ可読記憶媒体」および/または「非一時的プロセッサ可読媒体」という用語は、ランダムアクセスメモリ(RAM)、レジスタメモリ、プロセッサキャッシュなどを含む。
[0072] 宛先デバイス14の入力インターフェース28は、情報をコンピュータ可読媒体16から受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20により定義され、また、ビデオデコーダ30によって使用される、ブロックの特性および/または処理ならびに他のコーディングされたユニット、たとえば、GOPを記述するシンタックス要素を含むシンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
[0073] ビデオエンコーダ20およびビデオデコーダ30は各々、適用可能なとき、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な適切なエンコーダ回路またはデコーダ回路のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装されるとき、デバイスは、ソフトウェアに対する命令を適切な非一時的プロセッサ可読媒体内に記憶し、本開示の技法を実行するための1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つもしくは複数のエンコーダまたはデコーダ内に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/または携帯電話のようなワイヤレス通信デバイスを備え得る。
[0074] 図1には示されないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々オーディオエンコーダおよびオーディオデコーダと統合されてよく、共通のデータストリームもしくは別個のデータストリーム内のオーディオとビデオの両方の符号化を扱うための、適切なMUX−DEMUXユニット、または他のハードウェアならびにソフトウェアを含み得る。適用可能なとき、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠し得る。
[0075] 本開示は、概して、ビデオデコーダ30などの別のデバイスにある情報を「シグナリング(signaling)」するビデオエンコーダ20に言及する場合がある。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化された部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化された部分のヘッダに記憶することによってデータを「シグナリング」し得る。いくつかの場合には、そのようなシンタックス要素は、ビデオデコーダ30によって受信され復号されるのに先立って、符号化され記憶され(たとえば、記憶デバイス24に記憶され)得る。したがって、「シグナリング」という用語は全般に、圧縮されたビデオデータを復号するためのシンタックスまたは他のデータの通信を、そのような通信がリアルタイムで発生するか、ほぼリアルタイムで発生するか、ある期間にわたって発生するかにかかわらず指すことがあり、ある期間にわたる通信は、シンタックス要素を符号化の時点で媒体に記憶し、次いで、シンタックス要素がこの媒体に記憶された後の任意の時点で復号デバイスによって取り出され得るときに、発生し得る。
[0076] ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part 10、アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格などの、ビデオ圧縮規格、またはそのような規格の拡張に従って動作し得る。ITU−T H.264/MPEG−4(AVC)規格は、共同ビデオ部会(JVT:Joint Video Team)として知られる共同パートナーシップの成果としてISO/IECムービングピクチャエキスパートグループ(MPEG:Moving Picture Experts Group)とともにITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)によって策定された。いくつかの態様では、本開示で説明する技法は、H.264規格に概して準拠するデバイスに適用され得る。H.264規格は、ITU−T研究グループによる2005年3月付のITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格もしくはH.264仕様、またはH.264/AVC規格もしくは仕様と呼ばれる場合がある。ビデオ圧縮規格の他の例にはMPEG−2およびITU−T H263が含まれる。
[0077] 本開示の技法は、任意の特定のコーディング規格に限定されないが、本技法は、HEVC規格に関係し得る。HEVCの規格化の取組みは、HEVCテストモデル(HM:HEVC Test Model)と呼ばれるビデオコーディングデバイスのモデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9個のイントラ予測符号化モードを提供するが、HMは35個ものイントラ予測符号化モードを提供し得る。
[0078] 概して、HMの作業モデルは、ビデオピクチャが、ルーマサンプルとクロマサンプルの両方を含む、一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され得ることを記述する。ビットストリーム内のシンタックスデータは、ピクセルの数の点で最大のコーディングユニットであるLCUにとってのサイズを定義し得る。スライス(slice)は、いくつかの連続するコーディングツリーユニット(CTU:consecutive coding tree unit)を含む。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有するモノクロームピクチャまたはピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0079] ビデオピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木(quadtree)に従ってコーディングユニット(CU:coding unit)にスプリットされ得る。概して、4分木データ構造は、CUあたり1つのノードを、ツリーブロックに対応するルートノードとともに含む。CUが4つのサブCUにスプリットされる場合、CUに対応するノードは、4つのリーフノードを含み、その各々は、サブCUのうちの1つに対応する。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有するモノクロームピクチャまたはピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングブロックは、サンプルのN×Nのブロックである。
[0080] 4分木データ構造の各ノードは、対応するCUに関するシンタックスデータを与え得る。たとえば、4分木内のノードは、そのノードに対応するCUがサブCUにスプリットされるかどうかを示すスプリットフラグを含み得る。CUに関するシンタックス要素は、再帰的に定義され得、CUがサブCUにスプリットされるかどうかに依存し得る。CUがさらにスプリットされない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的スプリットが存在しない場合でも、リーフCUの4つのサブCUはまたリーフCUと呼ばれる場合がある。たとえば、16×16サイズのCUがさらにスプリットされない場合、この16×16CUが決してスプリットされなくても、4つの8×8サブCUをリーフCUとも呼ぶ。
[0081] CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)にスプリットされてよく、各子ノードは、今度は親ノードとなり、別の4つの子ノードにスプリットされてよい。4分木のリーフノードと呼ばれる、最後のスプリットされていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックがスプリットされ得る最大回数を定義することができ、コーディングノードの最小サイズを定義することもできる。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)を定義することもできる。本開示は、「ブロック(block)」という用語を、HEVCのコンテキストにおいて、CU、PU、もしくはTUのうちのいずれか、または他の規格のコンテキストにおいて、同様のデータ構造(たとえば、H.264/AVCのマクロブロックおよびそのサブブロック)を指すために使用する。
[0082] CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状において正方形でなければならない。CUのサイズは、8×8ピクセルから、最大で64×64ピクセルまたはそれを越えるツリーブロックのサイズまで変動し得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0083] 概して、PUは、対応するCUのすべてまたは一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモードで符号化されるとき、PUに関するデータは、PUに対応するTUに関するイントラ予測モードを記述するデータを含み得る残差4分木(RQT:residual quadtree)内に含まれ得る。別の例として、PUがインターモードで符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUのPUは、ピクチャのルーマサンプルの1つの予測ブロックと、そのピクチャのクロマサンプルの2つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有するモノクロームピクチャまたはピクチャでは、PUは、単一の予測ブロックと、それらの予測ブロックサンプルを予測するために使用されるシンタックス構造とを備え得る。
[0084] TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域内で係数を含み得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUに関する残差データを含むTUを形成し、次いで、CUに関する変換係数を生成するためにTUを変換し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであってもよい。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有するモノクロームピクチャまたはピクチャでは、TUは、単一の変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0085] 変換の後で、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために、変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連するビット深度(bit depth)を低減させることができる。たとえば、nビットの値は、量子化中にmビットの値に端数を丸められてよく、ここで、nはmよりも大きい。
[0086] ビデオエンコーダ20は、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、より高いエネルギー(したがって、より低い周波数)の係数をアレイの前方に配置し、より低いエネルギー(したがって、より高い周波数)の係数をアレイの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化されたベクトルを生成するために、量子化変換係数を走査するための規定の走査を利用し得る。他の例では、ビデオエンコーダ20は、適応走査を実行し得る。
[0087] 1次元のベクトルを形成するために、量子化変換係数を走査した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化の方法に従って、1次元のベクトルをエントロピー符号化し得る。ビデオエンコーダ20は、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化することもできる。
[0088] ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびピクチャグループ(GOP:group of pictures)ベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ内でビデオデコーダ30に送ることができる。GOPシンタックスデータは、それぞれのGOP内のピクチャの数を記述し得、ピクチャシンタックスデータは、対応するピクチャを符号化するために使用される符号化/予測モードを示し得る。
[0089] ビデオデコーダ30は、コーディングされたビデオデータを取得すると、ビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実行し得る。たとえば、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを取得することができる。ビデオデコーダ30は、ビットストリーム内に含まれたデータを使用して、元の符号化されていないビデオシーケンスを再構成することができる。
[0090] 場合によっては、ビデオエンコーダ20および/またはビデオデコーダ30は、たとえば、コーディングプロセスによってもたらされる誤差を補償するために、コーディングの間に、ビデオデータに対して1つまたは複数のフィルタリングプロセスを実行することができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、デブロッキングフィルタリングと呼ばれる場合がある、ブロックエッジを平滑化するためのピクセルエッジフィルタリング動作を実行することができる。
[0091] 上述のように、本開示のいくつかの態様は、概して、フォーマット適応型フィルタリング方式を提供することに関する。たとえば、本開示の技法は、コーディングされているビデオデータの色空間に基づいて、クロマ成分に関する可変デブロッキングフィルタリング(たとえば、弱いデブロッキングまたは強いデブロッキング)を可能にすることを含む。
[0092] 本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、色成分のサブセット(たとえば、YCrCb色空間の場合、Cr、Cb)またはいくつかの色空間に関するすべての色成分(たとえば、RGB空間の場合、R、G、およびB)であり得る非ルーマ成分に強いフィルタリングを適用することを可能にし得る。いくつかの例では、ビデオエンコーダ20は、HEVCバージョン1における、ルーマ成分に関するデブロッキングフィルタリングの1つもしくは複数の態様がビデオデータの1つもしくは複数の非ルーマ成分に適用されるべきか否かを示すために、ビデオエンコーダ20および/またはビデオデコーダ30によって復号され得るフラグ(たとえば、deblock_chroma_as_luma)をシグナリングする。場合によっては、「deblock_chroma_as_luma」フラグが1に設定されていることは、強いフィルタリングが1つまたは複数の非ルーマ成分に適用され得るという表示をもたらす。
[0093] いくつかの例では、ビデオエンコーダ20は、いずれかのデブロッキングフィルタリングが実行されるのに先立って、フラグをシグナリングし、デブロッキングフィルタリングは符号化ループおよび復号ループの間に実行される。符号化ループと復号ループの両方の間、デブロッキングフィルタリングの間にフラグが復号される。ビデオエンコーダ20がフラグの値を0に設定する場合、ビデオエンコーダ20およびビデオデコーダ30は、HEVCバージョン1に記載される方式に従って、デブロッキングフィルタリングを実行することができる。
[0094] たとえば、HEVCバージョン1に記載される方式によれば、ルーマ成分は、(たとえば、デブロッキングされているブロックのエッジ特性に応じて)強いデブロッキングフィルタまたは弱いデブロッキングフィルタのいずれかを使用してデブロッキングされ得るのに対して、クロマ成分は、弱いデブロッキングフィルタだけを使用してデブロッキングされ得る。ビデオエンコーダ20がフラグの値を1に設定する場合、フラグはルーマ成分に関してHEVCバージョン1で指定されるデブロッキングフィルタリングが1つまたは複数の非ルーマ成分に適用されることを示す。
[0095] この場合、そのフラグに応答して、ビデオエンコーダ20およびビデデコーダ30は、ルーマ成分に関するHEVCバージョン1に従ってデブロッキングフィルタリングをすべての色成分に適用することができる。言い換えれば、フラグが1に設定されているとき、HEVCバージョン1によってルーマ成分に関して指定される同じデブロッキングフィルタリング方式がクロマ成分にも適用され得る。(下でより詳細に論じるように、いくつかの例では、HEVCバージョン1によってルーマ成分に関して指定されるデブロッキングフィルタリングのいくつかの態様は、非ルーマ成分に適用され、いくつかの態様は適用されない。)たとえば、フラグの値が1に設定されているとき、ルーマ色成分とクロマ色成分は両方とも(または、すべてのRBG成分は)、(たとえば、デブロッキングされている(適用可能なとき)ルーマブロックもしくはクロマブロックのエッジ特徴に応じて)強いデブロッキングフィルタまたは弱いデブロッキングフィルタのいずれかを使用してデブロッキングされ得る。
[0096] いくつかの例では、フラグは異なる色空間に関して異なって設定され得る。たとえば、ビデオエンコーダ20は、RGBシーケンスに関して、およびYCbCr4:4:4シーケンスに関して、フラグの値を1に設定することができる。この場合、フラグを1に設定して、ビデオエンコーダ20および/またはビデオデコーダ30は、RGBシーケンスとYCbCr4:4:4シーケンスの両方のすべての成分に関して、HEVCバージョン1によってルーマ成分に関して指定されるデブロッキングフィルタリング方式のいくつかまたはすべてを使用することができる。(別の例では、ビデオエンコーダ20は、RGBシーケンスに関して、およびYCbCr4:4:4シーケンスに関して、色成分に関するデブロッキングフィルタリングがHEVCバージョン1に従って実行されることを示す0にフラグを設定することができる。)
[0097] YCbCr4:2:2シーケンスおよび4:2:0シーケンスなど、他のシーケンスの場合、ビデオエンコーダ20はフラグの値を0に設定することができる。この場合、フラグの値を0に設定して、ビデオエンコーダ20および/またはビデオデコーダ30は、YCbCr4:2:2シーケンスとYCbCr4:2:0シーケンスの両方に関して、HEVCバージョン1に従って色成分に関するデブロッキングフィルタリングを実行する。これらの例および他の例について以下でより詳細に説明する。
[0098] ビデオエンコーダ20は、シーケンスパラメータセット(SPS:sequence parameter set)の一部としてシーケンスレベルでフラグにシグナリングすることができる。別の例では、ビデオエンコーダ20は、ピクチャパラメータセット(PPS:picture parameter set)の一部としてピクチャレベルでフラグにシグナリングすることができる。別の例では、ビデオエンコーダ20は、スライスヘッダの一部としてスライスレベルでフラグにシグナリングすることができる。
[0099] いくつかの例では、ビデオデコーダ30は、コーディングされているビデオデータのプロファイルを使用して、(HEVCバージョン1においてルーマ成分に適用される1つまたは複数の態様デブロッキングフィルタリングを1つまたは複数の非ルーマ成分に適応するか否かについての)決定を行う。本開示の態様によれば、一例では、コーディングされているビデオデータのプロファイルがハイプロファイル4:4:4である場合、ビデオデコーダ30は、HEVCバージョン1においてルーマ成分に適用されるデブロッキングフィルタリングの1つまたは複数の態様を1つまたは複数の非ルーマ成分に適用する決定を行うことができる。代替的に、コーディングされているビデオデータのプロファイルがスクリーンコンテンツ4:4:4プロファイルである場合、ビデオデコーダ30は、HEVCバージョン1に従ってビデオの成分に関するデブロッキングフィルタリングを実行することができる。
[0100] 別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、コーディングされているビデオデータのクロマフォーマットに基づいて、異なるデブロッキングフィルタリングを適用することができる。たとえば、HEVCに対する範囲拡張を使用しているとき、ビデオエンコーダ20は、コーディングされているビデオデータが4:4:4YCbCr色空間であるか、4:2:2YCbCr色空間であるか、または4:2:0YCbCr色空間であるかを示すためにクロマフォーマットをシグナリングすることができる。本開示の態様によれば、4:4:4色空間がシグナリングおよび使用される場合、ビデオデコーダ30は、すべての色成分に関して、HEVCバージョン1においてルーマ成分に関して定義されたデブロッキングフィルタリングを実行することができる。たとえば、ビデオデコーダ30は、HEVCバージョン1がY成分に関して指定されるように、各成分(Y、Cb、およびCr)に関して強いデブロッキングフィルタリングを使用するか、または弱いデブロッキングフィルタリングを使用するかを決定することができる。他の色空間に関して、ビデオデコーダ30は、HEVCバージョン1で実行されるのと同様の方法でデブロッキングフィルタリングを実行することができる。
[0101] いくつかの例では、フラグが1に設定されているとき、HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングのすべての態様がビデオのすべての成分に適用される。しかしながら、他の例では、フラグが1に設定されているとき、HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングのいくつかの態様が非ルーマ成分に適用され、いくつかの態様は適用されない。たとえば、いくつかの例では、フラグが1に設定されるとき、非ルーマ成分に関して強いデブロッキングフィルタリングは可能にされないが、HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングのすべての他の態様が1つまたは複数の非ルーマ成分に適用される。
[0102] したがって、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ルーマデブロッキングプロセスをクロマ成分に適用することができるが、ルーマデブロッキングプロセスの強いデブロッキングフィルタをクロマ成分に適用することを控えることができる。たとえば、HEVCバージョン1においてクロマ成分に関するデブロッキングフィルタリングは予測依存であり得る。すなわち、HEVCバージョン1では、ビデオエンコーダ20および/またはビデオデコーダ30は、デブロッキングされている境界を形成する1つのブロックまたは両方のブロックが(たとえば、下で図2および図3を参照してより詳細に説明される)イントラ予測モードを使用してコーディングされているときだけ、非ルーマ成分に関してデブロッキングフィルタリングを実行することができる。
[0103] 本開示の態様によれば、場合によっては、クロマ成分に関するこのデブロッキング予測制限(たとえば、デブロッキングされている境界を形成する1つのブロックまたは両方のブロックがイントラ予測モードを使用してコーディングされているときだけクロマ成分に対してデブロッキングを実行すること)は除去され得る。したがって、この例では、ルーマフィルタリングプロセスがクロマ成分に適用される場合、インターコーディングされたクロマブロック境界は、インターコーディングされたルーマブロックとともにフィルタリングされ得る。上で論じたように、フラグが1に設定されているとき、HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングのいくつかまたはすべての態様が非ルーマ成分に適用される。HEVCバージョン1においてルーマ成分に関して指定される、フラグが1に設定されているとき非ルーマ成分に適用されるデブロッキングフィルタリングの態様のうちの1つは、インターコーディングされたブロック境界がフィルタリングされることを可能にすることである。
[0104] 強いフィルタは、一般に、より長いフィルタタイプサイズにより、より多くのピクセルラインを記憶することを必要とするため、強いデブロッキングフィルタを適用することは、より多くの実装リソースを必要とし得る。したがって、実装の複雑さを低減するために、いくつかの例によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、(たとえば、予測モードにかかわらず)ルーマデブロッキングフィルタリングプロセスをルーマ成分とクロマ成分の両方に適用することができると同時に、ビデエンコーダ20および/またはビデオデコーダ30は、クロマ成分に対して強いデブロッキングフィルタリングを実行することを控えることができる。しかしながら、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ルーマ成分とクロマ成分の両方に関して強いデブロッキングフィルタリングを実行することができる。
[0105] 上で論じたように、フラグが1に設定されているとき、HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングのいくつかまたはすべての態様が非ルーマ成分に適用される。HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングの一態様は、ルーマ成分に関して強いフィルタリングが可能にされることである。HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングの別の態様は、インターコーディングされたブロック境界のフィルタリングが可能にされることである。HEVCバージョン1においてルーマ成分に関して指定されるデブロッキングフィルタリングの別の態様は、ルーマ成分に関する弱いフィルタリングは非ルーマ成分に関する弱いフィルタリングよりも強いことである。様々な例では、フラグが1に設定されるとき、ビデオの非ルーマ成分に関して、これらの態様のうちの1つ、いくつか、またはすべてが可能にされ得る。
[0106] いくつかの例では、ビデオエンコーダ20は、上で説明したフラグと同様の1つまたは複数のシンタックス要素を使用して、ルーマデブロッキングフィルタリングをクロマ成分に適用するかどうかをシグナリングすることができる。すなわち、ビデオエンコーダ20は、ルーマデブロッキングフィルタリングがクロマ成分に適用されないとき、フラグを(HEVCバージョン1により、デブロッキングフィルタリングがすべての成分に適用されることを示す)0に設定することができ、ルーマデブロッキングフィルタリングがクロマ成分に適用されるとき、フラグを(HEVCバージョン1においてルーマ成分に適用されるデブロッキングフィルタリングの態様のいくつかまたはすべてが非ルーマ成分に適用されることを示す)1に設定する。
[0107] さらに別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、異なる色空間に関して、異なるしきい値βおよびtCを適用することができる。たとえば、本開示の態様によれば、強いフィルタリングがクロマ成分に適用されることを可能にするしきい値が(たとえば、しきい値の表に従って)確立され得る。この例では、ビデオエンコーダ20は、しきい値に従って、強いデブロッキングフィルタリングがクロマ成分に適用されることを示すために、フラグを1に設定することができる。別の例では、フラグの値は、色空間に基づいて推論され得る(たとえば、4:4:4フォーマットは、しきい値に従って、強いデブロッキングフィルタリングがクロマ成分に適用されることを示すのに対して、4:2:2フォーマットは強いフィルタリングが可能にされないことを示す)。
[0108] 図2は、本開示で説明する変換のための技法を使用し得るビデオエンコーダ20の例を示すブロック図である。ビデオエンコーダ20について、例示のためにHEVCコーディングのコンテキストにおいて説明するが、他のコーディング規格に関して本開示を限定するものではない。
[0109] ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接ピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Intra-mode)(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(uni-directional prediction)(Pモード)または双予測(bi-prediction)(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
[0110] 図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピーエンコーディングユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、パーティションユニット48とを含む。ビデオブロックの再構築のために、ビデオエンコーダ20は、また、逆量子化ユニット58と、逆変換ユニット60と、加算器62と、フィルタリングユニット66とを含む。
[0111] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオピクチャまたはビデオスライスを受信する。図2に文字通り示されていないが、ビデオエンコーダ20は、コーディングされるべき着信ビデオデータを記憶するためのメモリまたは他の構成要素を含み得る。ピクチャまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ内の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間圧縮を行うために、コーディングされるべきブロックと同じピクチャまたはスライス内の1つまたは複数の近接ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行することができる。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行することができる。
[0112] その上、パーティションユニット48は、以前のコーディングパスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分することができる。たとえば、パーティションユニット48は、最初にピクチャまたはスライスをLCUに区分し、レートひずみ分析(rate-distortion analysis)(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分することができる。モード選択ユニット40はさらに、LCUをサブCUに区分することを示す4分木データ構造を生成することができる。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0113] モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモード、すなわちイントラまたはインターのうちの1つを選択し、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に提供し、参照ピクチャとして使用する目的で符号化されたブロックを再構築するために加算器62に提供する。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報(partition information)、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に提供する。
[0114] 動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実施される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在ピクチャ(または他のコーディングされたユニット)内のコーディングされている現在ブロックに対する参照ピクチャ(または他のコーディングされたユニット)内の予測ブロックに対する、現在ビデオピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点で、コーディングされるべきブロックと密にマッチングすることが見出されたブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの、4分の1ピクセル位置、8分の1ピクセル位置、または他の分数のピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、完全なピクセル位置および分数のピクセル位置に対して動き探索を実行し、動きベクトルを分数のピクセル精度で出力し得る。
[0115] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス内のビデオブロックのPUに対する動きベクトルを計算する。参照ピクチャは、各々が参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0116] 動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42および動き補償ユニット44は機能的に統合され得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指し示す予測ブロックの位置を特定し得る。加算器50は、以下で論じるように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を実施し、動き補償ユニット44は、クロマ成分とルーマ成分の両方に関するルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0117] イントラ予測ユニット46は、前述のように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に様々なイントラ予測モードを使用して現在ブロックを符号化し、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、使用するのに適切なイントラ予測モードを、テストされたモードから選択し得る。
[0118] たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比を計算し得る。
[0119] ビデオエンコーダ20は、モード選択ユニット40からの予測データを、コーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算操作を実行する1つの構成要素または複数の構成要素を表現する。
[0120] 変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数の値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にはDCTと同様の他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプ変換も使用され得る。いかなる場合でも、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、ピクセル値領域からの残差情報を、周波数領域などの変換領域に転換し得る。
[0121] 変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送ることができる。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減させることができる。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行することができる。代替的に、エントロピー符号化ユニット56が走査を実行してよい。
[0122] 量子化の後、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行することができる。コンテキストベースのエントロピーコーディングの場合、コンテキストは、近接ブロックに基づいてよい。エントロピー符号化ユニット56によるエントロピーコーディングの後で、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)へ送信され得、あるいは後から送信または取り出すために、保管され得る。
[0123] 逆量子化ユニット58および逆変換ユニット60は、たとえば、参照ブロックとして後で使用できるように、ピクセル領域で残差ブロックを再構築するために、それぞれ、逆量子化と、逆変換とを適用する。
[0124] 動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、参照ピクチャメモリ64に記憶するための再構築されたビデオブロックを生成するために、再構築された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算する。再構成されたビデオブロックは、後続のビデオピクチャ内のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0125] フィルタリングユニット66は、様々なフィルタリングプロセスを実行することができる。たとえば、フィルタリングユニット66は、デブロッキングフィルタリングを実行することができる。すなわち、フィルタリングユニット66は、スライスまたはフレームからブロッキネスアーティファクトを除去するために、再構成されたビデオおよびフィルタブロック境界のスライスまたはフレームを形成する複数の再構成されたビデオブロックを受信することができる。一例では、フィルタリングユニット66は、ビデオブロックのいわゆる「境界強度(boundary strength)」を評価する。ビデオブロックの境界強度に基づいて、ビデオブロックのエッジピクセルは、閲覧者にとって1つのビデオブロックから別のビデオブロックへの遷移を知覚することがより困難になるように、隣接ビデオブロックのエッジピクセルに対してフィルタ処理され得る。
[0126] 場合によっては、デブロッキングフィルタによって使用される変数は、再構成されたビデオブロックを元のソースビデオブロックと比較せずに、再構成されたビデオブロックから導出され得る。したがって、ビデオエンコーダ20およびビデオデコーダ30(図3)はそれぞれ、ビットストリーム内にコーディングされた元のビデオフレームに関する最小の追加の情報を用いて、再構成されたビデオブロックに対して同じデブロッキングプロセスを実行するようにプログラムされ得る。ただし、場合によっては、フィルタリングユニット66は、デブロッキングが実行されるべきであるかどうか、および/または特定のタイプのデブロッキングモードのうちの1つが実行されるべきであるかどうかを示すシンタックス要素をビットストリーム中に含み得る。
[0127] 本開示の態様によれば、フィルタリングユニット66は、上で説明したように、フォーマット適応型フィルタリング方式を実装することができる。たとえば、フィルタリングユニット66は、コーディングされているビデオデータの色空間に基づいて、再構成されたビデオのクロマブロックにデブロッキングフィルタリングを適用し得る。したがって、場合によっては、フィルタリングユニット66は、ビデオデータのクロマブロックに強いデブロッキングフィルタリングを適用することが可能にされ得る。
[0128] 上述のように、フィルタリングユニット66(または、エントロピー符号化ユニット56など、ビデオエンコーダ20の別のユニット)は、適応型クロマデブロッキングフィルタリングが実装されているかどうかを示すために、1つまたは複数のシンタックス要素を生成することができる。他の例では、フィルタリングユニット66は、符号化されているビデオデータの色空間に基づいて、適切なクロマデブロッキング方式を推論することができ、それによって、そのようなシグナリングの必要性を無効にする。
[0129] したがって、ビデオエンコーダ20は、本開示で説明するフィルタリング技法のうちのいずれかを実行することができる。たとえば、ビデオエンコーダ20は、デブロッキングフィルタリングプロセスが再構成されたビデオデータのルーマ成分だけに適用されるか、または、ビデオデータのルーマ成分に加えて、ビデオデータの少なくとも1つの他のビデオ成分に適用されるかを示す、1つまたは複数のシンタックス要素を符号化して、その1つまたは複数のシンタックス要素に基づいて、ビデオデータをデブロッキングすることができるビデオエンコーダの一例を表す。
[0130] 図3は、本開示で説明する変換のための技法を実装し得るビデオエンコーダ30の例を示すブロック図である。この場合も、ビデオデコーダ30について、例示のためにHEVCコーディングのコンテキストにおいて説明するが、他のコーディング規格に関して本開示を限定するものではない。
[0131] 図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80と、フィルタリングユニット84とを含む。
[0132] 復号プロセス中に、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化ビデオビットストリームをビデオエンコーダ20から受信する。図3に文字通り示されていないが、ビデオデコーダ20は、復号されるべき着信ビデオデータを記憶するためのメモリまたは他の構成要素を含み得る。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72へ転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでのシンタックス要素を受信し得る。
[0133] ビデオスライスがイントラコーティングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在ピクチャの前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックに関する予測データを生成し得る。ビデオピクチャがインターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックに関する予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照ピクチャリストと、リスト0と、リスト1とを構成することができる。
[0134] 動き補償ユニット72は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックに対する予測情報を決定し、復号されている現在ビデオブロックに対する予測ブロックを生成するために、予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスに関する参照ピクチャリストのうちの1つまたは複数に関する構築情報と、スライスの各々のインター符号化ビデオブロックに関する動きベクトルと、スライスの各インターコーディングされたビデオブロックに関するインター予測ステータスと、現在ビデオスライス内のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0135] 動き補償ユニット72はまた、補間フィルタに基づいて、補間を実行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルに関して補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用することができる。この場合、動き補償ユニット72は、受信したシンタックス要素からビデオエンコーダ20で使用された補間フィルタを決定し、予測ブロックを生成するために、補間フィルタを使用することができる。
[0136] 逆量子化ユニット76は、ビットストリーム内で提供され、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を判断するための、ビデオスライス内の各ビデオブロックに関してビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0137] 逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。ビデオデコーダ30は、逆変換ユニット78からの残差ブロックに、動き補償ユニット72によって生成された対応する予測ブロックを加算することによって、復号ビデオブロックを形成する。加算器80は、この加算操作を実行する1つまたは複数の構成要素を表現する。
[0138] フィルタリングユニット84は、いくつかの例では、ビデオエンコーダ20(図2)のフィルタリングユニット66と同様に構成され得る。たとえば、フィルタリングユニット84は、符号化ビットストリームからのビデオデータを復号および再構成するとき、デブロッキング、SAO、または他のフィルタリング動作を実行するように構成され得る。
[0139] 本開示の態様によれば、フィルタリングユニット84は、上で説明したように、フォーマット適応型フィルタリング方式を実装することができる。たとえば、フィルタリングユニット84は、デブロッキングフィルタリングプロセスがコーディングされているビデオデータの色空間に基づいて変化するように、デブロッキングフィルタリングをクロマブロックに適用することができる。したがって、場合によっては、フィルタリングユニット84は、ビデオデータのクロマブロックに強いデブロッキングフィルタリングを適用することを可能にされ得る。
[0140] 上述のように、フィルタリングユニット84(または、エントロピー復号ユニット70など、ビデオデコーダ30の別のユニット)は、ビットストリーム内に含まれた、1つまたは複数の解析および復号されたシンタックス要素に基づいて、適応型クロマデブロッキングフィルタリングが再構成されたビデオに対して使用されることになるかどうかを決定することができる。他の例では、フィルタリングユニット84は、復号されているビデオデータの色空間に基づいて、適切なクロマデブロッキング方式を推論することができ、それによって、そのようなシグナリングの必要性を無効にする。
[0141] したがって、ビデオデコーダ30は、本開示のフィルタリング技法のうちのいずれかを実行することができる。たとえば、図3のビデオデコーダ30は、デブロッキングフィルタリングプロセスがビデオデータのルーマ成分だけに適用されるか、または、ビデオデータのルーマ成分に加えて、ビデオデータの少なくとも1つの他のビデオ成分に適用されるかを示す、1つまたは複数のシンタックス要素を復号して、その1つまたは複数のシンタックス要素に基づいて、ビデオデータをデブロッキングすることができるビデオデコーダの一例を表す。
[0142] 図4A〜図4Cは、ビデオデータに関する異なる色サンプルフォーマットを示す概念図である。たとえば、クロマフォーマットと呼ばれる場合もあるビデオサンプリングフォーマットは、CU内に含まれるルーマサンプルの数に対して、CU内に含まれるクロマサンプルの数を定義することができる。クロマ成分に関するビデオサンプリングフォーマットに応じて、U成分およびV成分の、サンプルの数に関するサイズは、Y成分のサイズと同じ場合があり、または異なる場合もある。H.264/AVC規格および(HEVCバージョン1と呼ばれる)HEVC規格の第1のバージョンでは、chroma_format_idcと呼ばれる値は、ルーマ成分に対して、クロマ成分の異なるサンプリングフォーマットを示すために定義される。表1は、値chroma_format_idcの値と関連するクロマフォーマットとの間の関係を示す。
[0143] 表1では、変数SubWidthCおよびSubHeightCの値は、ビデオデータのルーマ成分に関するサンプルの数と各クロマ成分に関するサンプルの数との間の、水平および垂直のサンプリングレートのレシオ(ratio)を示すために使用され得る。表1に記載されたクロマフォーマットでは、2つのクロマ成分は同じサンプリングレートを有する。
[0144] 表1の例では、4:2:0フォーマットの場合、水平方向と垂直方向の両方について、ルーマ成分に関するサンプリングレートは、ビデオデータのクロマ成分のサンプリングレートの2倍である。結果として、4:2:0フォーマットに従ってフォーマットされたコーディングユニットの場合、ルーマ成分に関するサンプルのアレイの幅および高さは、ビデオデータのクロマ成分に関するサンプルの各アレイの幅および高さの2倍である。同様に、4:2:2フォーマットに従ってフォーマットされたコーディングユニットの場合、ルーマ成分に関するサンプルのアレイの幅は、各クロマ成分に関するサンプルのアレイの幅の2倍であるが、ルーマ成分に関するサンプルのアレイの高さは、ビデオデータの各クロマ成分に関するサンプルのアレイの高さに等しい。4:4:4フォーマットに従ってフォーマットされたコーディングユニットの場合、ルーマ成分用のサンプルのアレイは、ビデオデータの各クロマ成分に関するサンプルのアレイと同じ幅と高さとを有する。
[0145] YUV色空間に加えて、ビデオデータは、RGB色空間に従って定義され得ることに留意されたい。このようにして、本明細書で説明するクロマフォーマットをYUV色空間またはRGB色空間のいずれかに適用することができる。RGBクロマフォーマットは、典型的には、赤色サンプルの数、緑色サンプルの数、および青色サンプルの数が等しいようにサンプリングされる。したがって、「4:4:4クロマフォーマット」という用語は、本明細書で使用される場合、YUV色空間またはRGB色空間のいずれかを指す場合があり、サンプルの数はすべての色成分に関して等しい、すなわち、Y、U、およびVに関して等しく、またはR、G、およびBに関して等しい。
[0146] 図4Aは、4:2:0サンプルフォーマットを示す概念図である。図4Aに示すように、4:2:0サンプルフォーマットの場合、クロマ成分はビデオデータのルーマ成分の4分の1のサイズである。したがって、4:2:0サンプルフォーマットに従ってフォーマットされたCUの場合、ビデオデータのクロマ成分のサンプルごとに4つのルーマサンプルが存在する。
[0147] 図4Bは、4:2:2サンプルフォーマットを示す概念図である。図4Bに示すように、4:2:2サンプルフォーマットの場合、クロマ成分はビデオデータのルーマ成分の2分の1のサイズである。したがって、4:2:2サンプルフォーマットに従ってフォーマットされたCUの場合、ビデオデータのクロマ成分のサンプルごとに2つのルーマサンプルが存在する。
[0148] 図4Cは、4:4:4サンプルフォーマットを示す概念図である。図4Cに示すように、4:4:4サンプルフォーマットの場合、クロマ成分はビデオデータのルーマ成分と同じサイズである。したがって、4:4:4サンプルフォーマットに従ってフォーマットされたCUの場合、ビデオデータのクロマ成分のサンプルごとに1つのルーマサンプルが存在する。
[0149] 図5は、4:2:0サンプルフォーマットに従ってフォーマットされた16x16コーディングユニットの一例を示す概念図である。図5は、CU内部のルーマサンプルに対するクロマサンプルの相対位置を示す。上述のように、CUは、一般に、水平方向および垂直方向のルーマサンプルの数によって定義される。したがって、図5に示すように、4:2:0サンプルフォーマットに従ってフォーマットされた16x16CUは、ビデオデータのルーマ成分の16x16サンプルと、各クロマ成分に関する8x8サンプルとを含む。さらに、上述のように、CUはより小さいCUに区分することができる。たとえば、図5に示すCUは、4個の8x8CUに区分することができ、各8×8CUは、ルーマ成分に関する8x8サンプルと、各クロマ成分に関する4x4サンプルとを含む。
[0150] 図6は、4:2:2サンプルフォーマットに従ってフォーマットされた16x16コーディングユニットの一例を示す概念図である。図6は、CU内のルーマサンプルに対するクロマサンプルの相対位置を示す。上述のように、CUは、一般に、水平方向および垂直方向のルーマサンプルの数によって定義される。したがって、図6に示すように、4:2:2サンプルフォーマットに従ってフォーマットされた16x16CUは、ルーマ成分の16x16サンプルと、各クロマ成分に関する8x16サンプルとを含む。さらに、上述のように、CUはより小さいCUに区分することができる。たとえば、図6に示されたCUは、4つの8x8CUに区分され得、各CUは、ルーマ成分に関する8x8サンプルと、各クロマ成分に関する4x8サンプルとを含む。
[0151] 図7は、本開示の技法による、ビデオデータをフィルタリングするための例示的なプロセスを示す流れ図である。図7の例は、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサによって実行され得る。
[0152] 開始ブロックの後、プロセスは、ビデオデータの非ルーマ成分に関して、第1のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するか、または第2のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するかについて決定が行われる決定ブロック791に進み、この場合、第1のデブロックフィルタリングプロセスおよび第2のデブロックフィルタリングプロセスは互いとは異なる。第1のデブロックフィルタリングプロセスと第2のデブロックフィルタリングプロセスとの間のいくつかの例示的な違いが下で論じられる。
[0153] 決定ブロック791で、決定が第1のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングが実行されるべきであるということである場合、プロセスは、第1のデブロックフィルタリングプロセスに従って、非ルーマ色成分に対するデブロックフィルタリングが実行されるブロック792に進む。次いで、プロセスは、他の処理が再開される戻りブロックに進む。
[0154] 決定ブロック791で、決定が第2のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングが実行されるべきであるということである場合、プロセスは、第2のデブロックフィルタリングプロセスに従って、非ルーマ色成分に対するデブロックフィルタリングが実行されるブロック793に進む。次いで、プロセスは、他の処理が再開される戻りブロックに進む。
[0155] 本開示はそのように限定されないが、いくつかの例では、第1のデブロックフィルタリングプロセスは、第1のレベルのデブロックフィルタリングと第2のレベルのデブロックフィルタリングとを提供し、この場合、第1のレベルのデブロックフィルタリングは、第2のレベルのデブロックフィルタリングよりも比較的強く、この場合、第2のデブロックフィルタリングプロセスは、正確に1つのレベルのデブロックフィルタリングを提供する。たとえば、第1のデブロックフィルタリングプロセスは、強いデブロックフィルタリングと弱いデブロックフィルタリングの両方を可能にするが、第2のデブロックフィルタリングプロセスは、弱いデブロックフィルタリングだけを可能にする。加えて、様々な例では、第2のデブロックフィルタリングによって使用される正確に1つのレベルのデブロックフィルタリングは、第1のデブロックフィルタリングプロセスで使用されるいずれかのフィルタリングレベルと同じであってよく、または異なってもよい。
[0156] たとえば、いくつかの例では、ブロックごとベースで、各ブロックに関して、強いフィルタリングを適用すること、弱いフィルタリングを適用すること、または何のフィルタリングも適用しないことが決定され得るように、第1のデブロックフィルタリングプロセスは、HEVCバージョン1仕様におけるルーマ成分に関するのと同じ方法で、強いデブロックフィルタリングと弱いデブロックフィルタリングの両方を可能にすることができる。強いフィルタリングを適用するか、弱いフィルタリングを適用するか、または何のフィルタリングも適用しないかの決定は、たとえば、ビデオブロックの境界強度に基づいて行われ得る。この第1のデブロックフィルタリングプロセスでは、しきい値未満の境界強度に関して、何のフィルタリングも適用しない。しきい値を超える境界強度に関して、弱いフィルタリングまたは強いフィルタリングが適用される。弱いフィルタリングを適用するか、または強いフィルタリングを適用するかは、境界強度を含む複数の係数に基づくことが可能であり、この場合、境界強度が大きければ大きいほど、係数は強いフィルタを適用することを優先し、境界強度が低ければ低いほど、係数は弱いフィルタリングを適用することを優先する。この第1のデブロックフィルタリングプロセスは、ビデオブロックの成分の各々に個々に適用され得る。
[0157] いくつかの例では、ブロックごとベースで、各ブロックに関して、弱いフィルタリングを適用すること、または何のフィルタリングも適用しないことが決定され得るように、第2のデブロックフィルタリングプロセスは、HEVCバージョン1仕様におけるクロマ成分に関するのと同じ方法で、(すなわち、第1のデブロックフィルタリングプロセスにおける、選択ベースで弱いフィルタリングまたは強いフィルタリングを許可するのではなく)弱いフィルタリングだけを可能にすることができる。この例では、強いフィルタリングは許可されず、したがって、第2のデブロックフィルタリングプロセスでは可能でない。
[0158] 本開示はそのように限定されないが、いくつかの例では、第1のデブロックフィルタリングプロセスは、イントラ予測データとインター予測データの両方にデブロックフィルタリングを実行することを含み、第2のデブロックフィルタリングプロセスは、イントラ予測データにデブロックフィルタリングを実行して、インター予測データに何のデブロックフィルタリングも実行しないこととを含む。したがって、第1のデブロックフィルタリングプロセスでは、デブロックフィルタリングは、選択ベースで、たとえば、境界強度に基づいて、インターコーディングされたビデオブロック、またはイントラコーディングされたビデオブロックに適用され得る。第2のデブロックフィルタリングプロセスに関して、デブロックフィルタリングが適用されるが、イントラコーディングされたビデオブロックに関してだけであり、インターコーディングされたビデオブロックに関しては適用されない。いくつかの例では、ビデオデータのルーマ成分とビデオデータの非ルーマ成分の両方に対してデブロックフィルタリングが実行される。これらの例では、デブロッキングフィルタリングは、ルーマデブロックフィルタリングプロセスに基づいて、ビデオデータのルーマ成分に対して実行され得る。第1のデブロックフィルタリングプロセスは、ルーマデブロックフィルタリングプロセスの1つまたは複数の態様を含む。いくつかの例では、第1のデブロックフィルタリングプロセスはルーマデブロックフィルタリングプロセスと同一である。他の例では、第1のフィルタリングプロセスは、ルーマデブロックフィルタリングプロセスの1つまたは複数の態様を含むが、すべての態様は含まない。いくつかの例では、強いフィルタリングはルーマデブロッキングフィルタリングプロセスに関して可能にされ、第1のデブロックフィルタリングプロセスに関しては可能にされないが、第1のデブロックフィルタリングプロセスは、強いフィルタリングが第1のデブロックフィルタリングプロセスに関して可能にされないことを除いて、ルーマデブロックフィルタリングプロセスと同じである。
[0159] いくつかの例では、決定ブロック791における決定は、ビデオエンコーダ20によってビットストリーム内で符号化されたシンタックス要素に基づいて行われる。いくつかの例では、シンタックス要素はフラグである。いくつかの例では、シンタックス要素は、ビデオデータのシーケンスパラメータセット(SPS)、ビデオデータのピクチャパラメータセット(PPS)、またはビデオデータのスライスヘッダ内でエンコーダ20によって符号化されるフラグである。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、たとえば、SPS、PPS、またはスライスヘッダ内でシンタックス要素を受信し、ブロック791の決定を行うために、そのシンタックス要素を復号する。いくつかの例では、フラグはdeblock_chroma_as_lumaフラグであり、そのフラグが真の値、たとえば、1の値を有する場合、第1のデブロックフィルタリングプロセスを実行する決定が行われ、そのフラグが偽の値、たとえば、0の値を有する場合、第2のデブロックフィルタリングプロセスを実行する決定が行われる。しかしながら、本開示はそのように限定されず、シンタックス要素に関して他の例が採用されてよい。
[0160] いくつかの例では、シンタックス要素がSPS内で受信される場合、シーケンス内のすべてのブロックに対して選択されたデブロックフィルタリングプロセス、同様に、選択されたデブロックフィルタリングプロセスは、PPS内のシグナリングの場合、ピクチャ内のすべてのブロックに適用され、スライスヘッダ内のシグナリングの場合、スライス内のすべてのブロックに適用される。
[0161] いくつかの例では、ビデオデータはYCbCrフォーマットであり、非ルーマ成分はクロマ成分CbおよびCrである。他の例では、ビデオデータはRGBフォーマットであり、成分のすべては非ルーマ成分である。いくつかの例では、図7のプロセスは、各非ルーマ成分に関して別個に採用され得る。たとえば、それぞれの非ルーマ成分に関して、第1のデブロックフィルタリングプロセスが使用されるべきか、または第2のデブロックフィルタリングプロセスが使用されるべきかを示すために、非ルーマ成分(たとえば、第1の非ルーマ成分および第2の非ルーマ成分と呼ばれる場合があるCbならびにCr)の各々に関して別個のフラグが個々に設定され得る。他の例では、ビデオデータ内の非ルーマ成分のすべてに適用する1つの決定が行われる。たとえば、いくつかの例では、ビデオデータ内の非ルーマ成分のすべてに適用する1つのフラグが設定される。具体的には、各非ルーマ成分に関して別個のフラグをシグナリングする代わりに、ビデオエンコーダ20は、非ルーマ成分のすべてに適用する1つの決定を行い、非ルーマ成分に関する(たとえば、第1のデブロックフィルタリングプロセスを適用するか、または第2のデブロックフィルタリングプロセスを適用するかの)決定を示す単一のフラグを生成することができる。
[0162] いくつかの例では、決定ブロック791における決定は、非ルーマ色成分のエネルギーレベルに基づいて行われる。たとえば、いくつかの例では、決定ブロック791における決定は、ビデオデータの非ルーマ色成分のエネルギーレベルがエネルギーレベルしきい値よりも大きいとき、ビデオデータの非ルーマ成分に関して決定されたデブロックフィルタリングプロセスとして、第1のデブロックフィルタリングプロセスを選択し、ビデオデータの非ルーマ色成分のエネルギーレベルがエネルギーレベルしきい値未満であるとき、ビデオデータの非ルーマ成分に関して決定されたデブロックフィルタリングプロセスとして、第2のデブロックフィルタリングプロセスを選択することを含む。
[0163] 概して、ビデオ成分のエネルギーレベルが比較的低いとき、ビデオ成分の強いフィルタリングの使用を回避することが好ましい。しかしながら、ビデオ成分のエネルギーレベルが比較的高いとき、弱いフィルタだけを適用し、適切なとき、強いフィルタを使用しないことは、視覚的品質をハードにする可能性がある。たとえば、クロマ成分はYと比較してより少ないエネルギーを有するため、YCbCr4:2:0フォーマットでは、Cb成分およびCr成分に関して、Cb成分およびCr成分に関して弱いフィルタだけを使用することが好ましい場合がある。しかしながら、クロマ成分はYCbCr4:2:0フォーマットよりも多くのエネルギーを有し得るため、クロマに関して弱いフィルタだけを適用することは、YCbCr4:4:4など、他の色空間または色フォーマットに関する視覚的品質を損なう可能性がある。いくつかの例では、791における決定は、単に、色空間に基づいて、エネルギーレベルに関する予想に基づいて行われ得る。他の例では、エネルギーレベルは実際に測定され得、ビデオデータの非ルーマ色成分のエネルギーレベルがエネルギーレベルしきい値より大きいとき、ビデオデータの非ルーマ成分に関して決定されたデブロックフィルタリングプロセスとして第1のデブロックフィルタリングプロセスを選択し、ビデオデータの非ルーマ色成分のエネルギーレベルがエネルギーレベルしきい値未満であるとき、ビデオデータの非ルーマ成分の決定されたデブロックフィルタリングプロセスとして、第2のデブロックフィルタリングプロセスを選択する決定が行われ得る。
[0164] いくつかの例では、決定ブロック791における決定は、ビデオデータの色空間に基づいて行われる。たとえば、いくつかの例では、ブロック791における決定において、ビデオデータの色空間がYCbCr4:4:4またはRBGである場合、決定されたデブロックフィルタリングプロセスとして、第1のデブロックフィルタリングプロセスが選択され、ビデオデータの色空間がYCbCr4:2:2またはYCbCr4:2:0である場合、決定されたデブロックフィルタリングプロセスとして、第2のデブロックフィルタリングプロセスが選択される。
[0165] 別の例として、いくつかの例では、ビデオデータの各成分に関するサンプリングレートがビデオデータの他の各成分に関するサンプリングレートと同一である場合、決定ブロック791における決定において、非ルーマ色成分に関して決定されたデブロックフィルタリングプロセスとして、第1のデブロックフィルタリングプロセスが選択される。たとえば、クロマ成分のサンプリングレートは、YCbCr4:2:2またはYCbCr4:2:0におけるルーマ成分とは異なり、ビデオデータがこれらのフォーマットのうちの1つである場合、第2のデブロックフィルタリングプロセスが採用される。代替的に、サンプリングレートは、YCbCr4:4:4またはRBGにおいてすべてのビデオ成分に関して同じであり、ビデオデータがこれらのフォーマットのうちの1つである場合、第1のデブロックフィルタリングプロセスが採用される。
[0166] 上で論じたように、様々な例では、選択されたそのデブロッキングフィルタリングプロセスを決定するために様々な基準が使用され得る。いくつかの例では、上で論じた基準または他の適切な基準のうちの1つが採用され得、他の例では、2つ以上の基準が使用され得、その結果、いくつかの例では、決定を行うために、これらの基準のうちの2つ以上が採用され得るという点で、上で論じた基準は必ずしも相互排他的ではない。さらに、上で論じたように、いくつかの例では、この決定は、フラグに基づいて行われ、フラグによってシグナリングされ、他の実施形態では、この決定は、エンコーダからのシグナリングなしに、デコーダによって自発的に行われる。
[0167] 上で論じたように、いくつかの例では、図7のプロセスは、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサによって実行され得る。いくつかの例では、プロセスは、コードを記憶するように構成されたメモリと、プロセスの活動を可能にするためのコードを実行するように構成された、少なくとも1つのプロセッサとを含むデバイスによって実行され得る。いくつかの例では、プロセスの動作は、1つまたは複数のプロセッサによって実行されたとき、プロセスの活動を可能にするプロセッサ可読コードを符号化するように構成された非一時的プロセッサ可読媒体上で符号化され得る。
[0168] 上で論じたように、決定ブロック791における決定は、ビデオエンコーダ20によって生成されたシンタックス要素に基づいて、ビデオエンコーダ20および/またはビデオデコーダ30によって行われる。いくつかの例では、シンタックス要素はビデオエンコーダ20によって生成される。いくつかの例では、シンタックス要素は、第1の非ルーマ色成分に関して決定されたデブロックフィルタリングプロセスを示すためにコーディングされ得る。たとえば、いくつかの例では、符号化パスの間であるが、デブロッキングに先立って、ビデオデータの1つまたは複数の非ルーマ色成分に関して、第1のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するか、または第2のデブロックフィルタリングプロセスに基づいてデブロックフィルタリングを実行するかの決定がビデオエンコーダ20によって行われ得る。この決定は、様々な例では、ビデオデータの色空間、ユーザ入力、または他の係数に基づき得る。次いで、シンタックス要素は、1つまたは複数の非ルーマ色成分に関して決定されたデブロックフィルタリングプロセスを示すためにビデオエンコーダ20によって符号化され得る。いくつかの例では、デブロッキングの間、図7のプロセスが採用され得、決定ブロック791における決定はこのシンタックス要素に基づいて行われ得る。いくつかの例では、シンタックス要素は、ビデオデータのシーケンスパラメータセット(SPS)、ビデオデータのピクチャパラメータセット(PPS)、またはビデオデータのスライスヘッダの中に記憶されるdeblock_chroma_as_lumaフラグである。
[0169] 図7のプロセスの例は、たとえば、ビデオデータの符号化パスおよび/または復号パスの間に採用され得る。いくつかの例では、図7のプロセスのデブロックフィルタリングは、ビデオエンコーダ20の符号化パスとビデオデコーダ30の復号パスの両方の間にループ内フィルタとして採用され得る。例では、デブロックフィルタリングは、後処理の間など、何らかの他の時間に実行され得る。いくつかの例では、決定されたデブロッキングフィルタリングプロセスは、ビデオデータの各非ルーマ成分に関して採用され得る。他の例では、非ルーマ成分に関してどのデブロッキングフィルタリングプロセスを採用するかについての別個の決定が行われ得る。
[0170] 図8は、本開示の技法による、ビデオコーディングプロセスにおいてビデオデータをフィルタリングするための例示的なプロセスを示す流れ図である。図8の例は、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサによって実行され得る。
[0171] 上述のように、本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、ルーマ成分に関するデブロッキング方式を、クロマ成分または他の色成分(たとえば、RGB空間の場合、R、G、およびB)を含むすべてのビデオ成分に適用することができる。したがって、場合によっては、ビデオエンコーダ20および/またはビデオデコーダ30は、強いフィルタリングをクロマ成分または他の色成分に適用することができる。いくつかの例では、そのような機能は、1つまたは複数のシンタックス要素(たとえば、deblock_chroma_as_lumaフラグ)を使用してシグナリングされ得る。
[0172] 図8の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在復号されているブロックがルーマブロックであるかどうかを決定することができる(100)。ルーマビデオ成分がコーディングされている場合、ビデオコーダはルーマデブロッキング方式をブロックに適用することができる(102)。たとえば、HEVC規格によれば、ビデオコーダは、たとえば、そのブロックもしくは周りのブロックのエッジまたは他の特性に基づいて、強いデブロッキングフィルタまたは弱いデブロッキングフィルタがブロックに適用されるルーマデブロッキング方式を適用することができる。
[0173] 現在復号されているブロックがルーマブロックでない場合(ステップ100の「いいえ」分岐)、ビデオコーダは適応型ブロッキングフィルタリングが可能にされるかどうかを決定することができる。たとえば、ビデオコーダは、deblock_chroma_as_lumaフラグが0に設定されているか、または1に設定されているかを決定することができる(104)。フラグが1に設定されている場合、ビデオコーダはルーマデブロッキング方式(たとえば、1つまたは複数の基準に基づいて、強いデブロッキングフィルタまたは弱いデブロッキングフィルタのいずれか)をブロックに適用することができる(102)。フラグがゼロに設定される場合、ビデオコーダは通常のクロマデブロッキング(たとえば、弱いデブロッキングだけ)を実行することができる(106)。
[0174] いくつかの例では、上で説明したフラグは異なる色空間に関して異なって設定され得る。たとえば、ビデオエンコーダ20は、適用可能なとき、RGBシーケンスに関して、およびYCbCr4:4:4シーケンス、ピクチャ、またはスライスに関して、フラグを1に設定し、YCbCr4:2:2および4:2:0シーケンス、ピクチャ、またはスライスに関してフラグを0に設定することができる。別の例では、ビデオエンコーダ20は、そのようなシーケンスのうちのいずれかまたは両方に関してフラグを0に設定することができる。
[0175] 図9は、本開示の技法による、ビデオコーディングプロセスにおいてビデオデータをフィルタリングするための例示的なプロセス示す流れ図である。図9の例は、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサによって実行され得る。
[0176] 上述のように、場合によっては、(ビデオエンコーダ20またはビデオデコーダ30など)ビデオコーダは、非ルーマ(non-luma)成分、たとえば、クロマ(chroma)成分に対してルーマタイプのデブロッキングを実行することができるが、強いフィルタリングをクロマ成分に適用することを控えることができる。すなわち、ビデオコーダは、非ルーマブロックに弱いデブロックフィルタリングを適用するか、または何のデブロックフィルタリングも適用せず、非ルーマブロックに強いデブロックフィルタリングを適用しない。そのような場合、ビデオコーダは、インターコーディングされたクロマ成分とイントラコーディングされたクロマ成分の両方に対してデブロッキングを適用することができる。たとえば、HEVCバージョン1において、クロマ成分に関するデブロッキングフィルタリングは、デブロッキングされている境界を形成する1つまたは両方のブロックがイントラ予測モードを使用してコーディングされているとき、デブロッキングフィルタリングがクロマ成分に対してだけ実行され得るように、予測依存であり得る。
[0177] 本開示の態様によれば、場合によっては、クロマ成分に関するこのデブロッキング予測制限は除去され得る(すなわち、デブロッキングされている境界を形成する1つまたは両方のブロックがイントラ予測モードを使用してコーディングされているときだけクロマ成分に対してデブロッキングフィルタリングが実行され得るという制限は除去され得る)。たとえば、境界を形成する1つまたは両方のブロックがインター予測モードを使用してコーディングされるとき、デブロッキングフィルタリングはクロマ成分に関して実行され得る。しかしながら、強いフィルタを適用することは、一般に、より長いフィルタタイプサイズにより、より多くのピクセルラインを記憶することを必要とするため、強いデブロッキングフィルタを適用することは、より多くの実装リソースを必要とし得る。したがって、実装の複雑さを低減するために、いくつかの例によれば、ビデオコーダは、クロマ成分に対して強いデブロッキングフィルタリングを実行することを控えることができる。しかしながら、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ルーマ成分とクロマ成分の両方に関して強いデブロッキングフィルタリングを実行することができる。
[0178] 図9の例では、ビデオコーダは、現在コーディングされているブロックがルーマブロックであるかどうかを決定することができる(110)。ブロックがビデオデータのルーマ成分である場合、ビデオコーダは、ルーマフィルタリングプロセスを適用して、強いデブロッキングフィルタリングを適用するかどうかを決定することができる(112)。ビデオコーダは、次いで、その決定に基づいて、強いデブロッキングフィルタリングを適用すること(114)、または弱いデブロッキングフィルタリングを適用すること(116)ができる。
[0179] 現在復号されているブロックがルーマブロックでない場合(ステップ110の「いいえ」分岐)、ビデオコーダは適応型デブロッキングフィルタリングが可能にされるかどうかを決定することができる。たとえば、ビデオコーダは、符号化されたビットストリーム内で(たとえば、SPS、PPS、またはスライスヘッダ内で)受信されたdeblock_chroma_as_lumaフラグが0に設定されているか、または1に設定されているかを決定することができる(118)。フラグが1に設定されている場合、ブロックがイントラ予測されているか、またはインター予測されているかにかかわらず、ビデオコーダは弱いルーマデブロッキング方式をブロックに適用することができる(116)。フラグがゼロに設定される場合、ビデオコーダは(たとえば、デブロッキングフィルタリングだけをイントラ予測ブロックに適用して)通常のクロマデブロッキングを実行することができる(120)。
[0180] 図10は、本開示の技法に一致する、境界強度がHEVCに従ってどのように計算され得るかを示す流れ図である。いくつかの例では、上述のように、デブロッキングフィルタリングを適用するかどうか、および/または強いデブロッキングフィルタリングを適用するか、もしくは弱いデブロッキングフィルタリングを提供するかを決定するとき、境界強度計算が考慮され得る。さらに、本開示に一致して、境界強度がゼロよりも大きいとき、フィルタリングがイントラコーディングされたクロマブロックに関して適用され得る。
[0181] 一例では、図10に示すように、「p」はブロックの左エッジまたは上部エッジ上の4×4部分を指し、「q」はブロックの右エッジまたは下部エッジ上の4×4部分を指す。エンコーダ20(図2)のフィルタリングユニット66またはデコーダ30(図3)のフィルタリングユニット84は、pまたはqがイントラCU内にあるかどうかを決定することができる(901)。そうである場合(901の「はい」分岐)、境界強度は2に設定される(902)。したがって、いくつかの例では、フィルタリングユニット66および/またはフィルタリングユニット84は、デブロッキングフィルタリングをブロックのクロマ成分に適用することができる。
[0182] そうでない場合(901の「いいえ」分岐)、フィルタリングユニット66または84は、そのデータがTUエッジに対応するかどうか、およびpまたはqが非ゼロ変換係数レベルを有するTUであるかどうかを考慮することができる(903)。そのデータがTUエッジに対応し、pまたはqが非ゼロ変換係数レベルを有するTU内にある場合(903の「はい」分岐)、境界強度は1に設定され得る(904)。いいえである場合(903の「いいえ」分岐)、フィルタリングユニット66または84は、
pまたはqが、異なる参照ピクチャ、もしくは異なる数の動きベクトルを有するかどうか、または、
pおよびqが、各々1つの動きベクトルを有し、|MVpx−MVqx|≧1もしくは|MVpy−MVqy|≧1であるかどうか、あるいは、
pおよびqが、各々2つの動きベクトルを有し、少なくとも1つの動きベクトル対が|MVpx−MVqx|≧1もしくは|MVpy−MVqy|≧1を満たすかどうか(905)
を考慮することができる。
決定ボックス(905)に対する回答が「はい」である場合、境界強度は1に設定され得(904)、決定ボックス(905)に対する回答が「いいえ」である場合、境界強度は0に設定され得る(906)。
[0183] この場合も、そのような境界強度計算は、ビデオデータのクロマ成分に対するデブロッキングフィルタリングを含めて、フィルタリングユニット66および/またはフィルタリングユニット84がデブロッキングフィルタリングを適用する方法を制御することができる。たとえば、フィルタリングユニット66および/またはフィルタリングユニット84は、(ステップ902および904におけるように)境界強度計算がゼロよりも大きいときはいつでもデブロッキングフィルタリングを適用することができる。
[0184] HEVCバージョン1において、非ルーマ成分に関して、Bs<2で、何のフィルタリングも適用されず、Bs>1で弱いフィルタリングが適用される。HEVCバージョン1において、ルーマ成分に関して、Bs=0で、何のフィルタリングも適用されず、Bs>0で、弱いフィルタリングまたは強いフィルタリングが適用され、この場合、境界強度は、弱いフィルタリングを適用するか、または強いフィルタリングを適用するかを決定する際に使用される係数であり得る。本開示によれば、フラグが0に設定されているとき、HEVCバージョン1に従って、すべての成分がフィルタリングされ得る。本開示によれば、いくつかの例では、フラグがゼロに設定されているとき、ルーマ成分と非ルーマ成分とを含むすべての成分がHEVCバージョン1におけるルーマ成分としてフィルタリングされ得る。すなわち、これらの例では、フラグが1に設定されているとき、ルーマ成分と非ルーマ成分の両方に関して、Bs=0で何のフィルタリングも適用されず、Bs>0で、弱いフィルタリングまたは強いフィルタリングが適用され、この場合、境界強度は、弱いフィルタリングを適用するか、または強いフィルタリングを適用するかを決定する際に使用される係数であり得る。
[0185] 本開示のいくつかの態様が、説明のために開発中のHEVC規格に関して説明された。ただし、本開示で説明した技法は、他の規格またはまだ開発されていないプロプライエタリ(proprietary)なビデオコーディングプロセスを含む、他のビデオコーディングプロセスに有用であり得る。
[0186] 本開示で説明したビデオコーダは、ビデオエンコーダまたはビデオデコーダを指す場合がある。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指す場合がある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指す場合がある。
[0187] 例に応じて、本明細書で説明した技法のうちの任意のもののいくつかの動作または事象は、異なるシーケンスで実行され得、全体的に追加、結合、または除外され得ることが認識されるべきである(たとえば、説明する動作または事象のすべてが、この技法の実施のために必要であるとは限らない)。その上、いくつかの例では、動作または事象は、たとえば、マルチスレッドの処理、割込み処理、または多数のプロセッサを用いて、連続的ではなく同時に実行され得る。
[0188] 1つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアで実装される場合、機能は1つもしくは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって処理され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。
[0189] このようにして、コンピュータ可読媒体は、概して、(1)伝搬信号自体を含まない有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のために、命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0190] 限定ではなく例としてそのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用可能であり、コンピュータによってアクセス可能な他の任意の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、もしくは赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
[0191] ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号などを含まず、代わりに、有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上述の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0192] 命令は、1つもしくは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の統合された、あるいは個別の論理回路などの、1つもしくは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書において、前述の構造のうちの任意のものまたは本明細書で説明した技法の実施のために適切な任意の他の構造を参照し得る。加えて、いくつかの態様では、本明細書で説明した機能性は、符号化および復号のために構成され、もしくは組み合わされたコーデックに組み込まれる、専用のハードウェアならびに/またはソフトウェアモジュール内で提供され得る。また、技法は、1つもしくは複数の回路または論理素子内で完全に実施されてよい。
[0193] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、もしくはICのセット(たとえば、チップセット)を含む多種多様なデバイスまたは装置において実装されてよい。様々な構成要素、モジュール、またはユニットは、開示された技法を実行するように構成されるデバイスの機能上の態様を強調するために、本開示で説明したが、必ずしも異なるハードウェアユニットによる実現を求めるとは限らない。むしろ、上述したように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、あるいは、上述される1つもしくは複数のプロセッサを含む、適切なソフトウェアおよび/またはファームウェアと一緒に相互作用するハードウェアユニットが集まったものによって提供され得る。
[0194] 様々な例が、述べられた。これらおよび他の例は、以下の特許請求の範囲の範囲内である。