(57)【特許請求の範囲】
【請求項１】
イントラ予測モードを使用して現在のブロックを符号化または復号化するための装置であって、前記イントラ予測モードは予測角度を含み、前記現在のブロックの周辺の画素を使用し、前記装置は、
前記予測角度および前記現在のブロックサイズを使用して、強度の異なる複数のフィルタであって、最小予測ブロックサイズを有するブロックに対してのみ利用可能なアップサンプリングフィルタを含む前記複数のフィルタのうち前記現在のブロックの周辺の画素に適用するフィルタを決定し、
決定した前記フィルタを使用して、前記現在のブロックの周辺の画素のうちの少なくともいくつかをフィルタリングして、修正された画素を生成し、
前記イントラ予測モードおよび前記修正された画素を使用して、前記現在のブロックに対する予測ブロックを生成する、
装置。
【請求項２】
前記現在のブロックの周辺の画素は、前記現在のブロックの上の行の第１の画素、および前記現在のブロックの左の列の第２の画素を含み、前記フィルタを決定することは、
前記予測角度および前記列に平行な垂直線を使用して、前記第１の画素に対する第１のフィルタおよび前記第２の画素に対する第２のフィルタを決定することをさらに含む、請求項１に記載の装置。
【請求項３】
前記第１のフィルタおよび前記第２のフィルタを決定することは、前記現在のブロックのサイズおよび／または前記現在のブロックの量子化パラメータにさらに基づいている、請求項２に記載の装置。
【請求項４】
前記フィルタを決定することは、フィルタ強度を決定することを含み、
前記現在のブロックの周辺の画素のうちの少なくともいくつかをフィルタリングすることは、
前記フィルタ強度に基づいて、前記フィルタを複数回適用することをさらに含む、請求項１乃至３のいずれか一項に記載の装置。
【請求項５】
前記装置は、さらに、符号化されたビットストリームから、前記現在のブロックの周辺の画素に前記フィルタを適用するためのインジケータを復号化する、請求項１乃至４のいずれか一項に記載の装置。
【請求項６】
イントラ予測モードを使用して現在のブロックを符号化または復号化するための方法であって、前記イントラ予測モードは予測角度を含み、前記現在のブロックの周辺の画素を使用し、前記方法は、
前記予測角度および前記現在のブロックサイズに基づいて、最小予測ブロックサイズを有するブロックに対してのみ利用可能なアップサンプリングフィルタを含む前記複数のフィルタのうち前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択すること、
決定した前記フィルタを使用して、前記現在のブロックの周辺の画素のうちの少なくともいくつかをフィルタリングして、修正された画素を生成すること、
前記イントラ予測モードおよび前記修正された画素を使用して、前記現在のブロックに対する予測ブロックを生成すること
を含む、
方法。
【請求項７】
前記予測角度に基づいて、前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択することは、
前記予測角度が角度の閾値を下回っており、前記現在のブロックのサイズがサイズの閾値を下回っている場合に、バイパスフィルタを選択することを含む、請求項６に記載の方法。
【請求項８】
前記フィルタは、３つのフィルタを含むフィルタのセットから選択され、前記フィルタは、重み値５、６および５を備える、請求項６または７に記載の方法。
【請求項９】
前記予測角度に基づいて、前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択することは、
前記予測角度に基づいてフィルタ強度を決定すること、
前記フィルタ強度に基づいて前記フィルタを選択すること
を含む、請求項６に記載の方法。
【請求項１０】
イントラ予測モードを使用して現在のブロックを符号化または復号化するための装置であって、前記イントラ予測モードは予測角度を含み、前記現在のブロックの周辺の画素を使用し、前記装置は、
メモリと、
プロセッサと
を備え、前記プロセッサは、前記メモリに格納された命令を実行して、
前記予測角度および前記現在のブロックのサイズに基づいて、強度の異なる複数のフィルタであって、最小予測ブロックサイズを有するブロックに対してのみ利用可能なアップサンプリングフィルタを含む前記複数のフィルタのうち前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択し、
決定した前記フィルタを使用して、前記現在のブロックの周辺の画素のうちの少なくともいくつかをフィルタリングして、修正された画素を生成し、
前記イントラ予測モードおよび前記修正された画素を使用して、前記現在のブロックに対する予測ブロックを生成する
ように構成さる、
装置。
【請求項１１】
前記現在のブロックのサイズに基づいて、前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択することは、
前記予測角度が角度の閾値を下回っており、前記現在のブロックのサイズがサイズの閾値を下回っている場合に、バイパスフィルタを選択することを含む、請求項１０に記載の装置。
【請求項１２】
前記現在のブロックのサイズに基づいて、前記現在のブロックの周辺の画素のうちの少なくともいくつかに適用するフィルタを選択することは、
前記現在のブロックのサイズが４×４であるという条件で、前記フィルタとしてバイパスフィルタを選択することを含む、請求項１０に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルビデオストリームは、一連のフレームまたは静止画像を使用してビデオを表現し得る。デジタルビデオは、例えば、ビデオ会議、高解像度ビデオエンターテイメント、ビデオ広告、またはユーザにより生成されたビデオの共有を含む、種々のアプリケーションに使用され得る。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または保存のために、コンピューティングデバイスの大量の計算または通信リソースを消費する可能性がある。圧縮および他の符号化技術を含む種々のアプローチが、ビデオストリームにおいてデータ量を削減するために提案されている。
【０００２】
空間的類似性に基づく符号化は、フレームまたは画像を、同じフレームまたは画像内の他のブロックに基づいて予測されるブロックに分割することにより実行され得る。ブロックおよび予測ブロックの間の差分（すなわち、残留誤差）は、ビットストリームにおいて圧縮および符号化される。復号化器は、この差分および参照フレームを使用して、フレームまたは画像を再構築する。
【発明の概要】
【０００３】
特に、必要とされる計算リソースおよび必要な帯域幅とストレージ要件とに関して、このような符号化プロセスの効率を改善する必要がある。従って、本明細書では、方向性イントラ予測を使用してブロックを符号化および復号化するための態様、特徴、要素、および実装形態が開示される。
【０００４】
開示される実装形態の一態様は、イントラ予測モードを使用して現在のブロックをコーディングする方法であり、イントラ予測モードは、予測角度を含む。方法は、予測角度を使用して現在のブロックの周辺の参照画素に適用するフィルタを決定し、フィルタを使用して参照画素をフィルタリングして修正された参照画素を生成し、イントラ予測モードおよび修正された参照画素を使用して、現在のブロックに対する予測ブロックを生成することを含む。フィルタの決定には、現在のブロックのサイズも使用し得る。従って、符号化効率を向上させることができる。予測角度は、任意の特定の軸に関連し得る。
【０００５】
フィルタを決定することは、予測角度と現在のブロックの左のエッジに平行な垂直線との間の差を生成することを含み得る。
フィルタを決定することは、差および現在のブロックのサイズをテーブルのインデックスと比較することを含むことができ、テーブルの各エントリは、フィルタカーネルの識別子を含み、フィルタを決定することは、差に応答する第１の識別子のフィルタカーネルおよび第１の識別子と対をなすインデックスに対応するサイズからフィルタを決定することを含むことができる。
【０００６】
識別子は、異なる重みを有する複数のローパスフィルタのうちの１つの識別子、フィルタリングをバイパスする識別子、またはアップサンプリングフィルタの識別子のうちの少なくとも１つを含み得る。
【０００７】
任意選択で、アップサンプリングフィルタは、最小予測ブロックサイズを有するブロックに対してのみ利用可能である。
フィルタを決定することは、現在のブロックのサイズを使用してフィルタを決定することを含むことができ、現在のブロックのサイズは、現在のブロックのエッジを形成する画素のカーディナリティを含む。
【０００８】
フィルタを決定することは、現在のブロックのサイズを使用してフィルタを決定することを含むことができ、現在のブロックのサイズは、現在のブロックの高さおよび幅の合計を含む。
【０００９】
任意選択で、フィルタはｎタップフィルタであり、ｎは奇数の整数であり、参照画素をフィルタリングすることは、以前にコーディングされたブロックから少なくとも（ｎ−１）／２個の隣接する参照画素を有しない参照画素のうちの任意のものを除外しつつ、現在のブロックに隣接する行または列のうちの少なくとも１つにおいて参照画素をフィルタリングすることを含む。
【００１０】
参照画素をフィルタリングすることは、イントラ予測モードが左上画素位置を使用する場合にのみ、参照画素の左上画素をフィルタリングすることを含み得る。
任意選択で、方法は、復号化器により、符号化されたビットストリームから、参照画素にフィルタを適用するか否かのインジケータを復号化することをさらに含む。
【００１１】
別の態様は、イントラ予測モードを使用して現在のブロックを符号化または復号化するための、メモリおよびプロセッサを含む装置である。イントラ予測モードは、予測角度を含む。プロセッサは、メモリに格納された命令を実行し、予測角度を使用して現在のブロックの周辺の参照画素に適用するフィルタを決定し、フィルタを使用して参照画素をフィルタリングして修正された参照画素を生成し、イントラ予測モードおよび修正された参照画素を使用して、現在のブロックに対する予測ブロックを生成するように構成されている。現在のブロックのサイズを使用してフィルタを決定することもできる。
【００１２】
任意選択で、参照画素は、現在のブロックの上の行の第１の画素、現在のブロックの左の列の第２の画素のうちの少なくとも１つを含み、フィルタを決定する命令は、予測角度および列に平行な垂直線を使用して、第１の画素に対する第１のフィルタおよび第２の画素に対する第２のフィルタを決定する命令をさらに含む。
【００１３】
フィルタを決定する命令は、フィルタ強度を決定する命令を含むことができ、フィルタ強度はフィルタを識別する。
フィルタを決定する命令は、フィルタ強度を決定する命令を含むことができ、フィルタ強度はフィルタを識別する。
【００１４】
任意選択で、装置は、複数の利用可能なフィルタカーネルのうちの１つのインジケータを含むそれぞれのエントリのインデックスとしてブロックの複数の予測角度および複数のサイズを使用するメモリに格納された第１のテーブルと、複数の利用可能なフィルタカーネルのうちの１つのインジケータを含むそれぞれのエントリのインデックスとして、複数の予測角度および複数のサイズを使用するメモリに格納された第２のテーブルとをさらに備える。フィルタを決定する命令は、第１のテーブルを使用して、全ての利用可能なイントラ予測モードの定義された適切なサブセット内のインター予測モードを有する現在のブロックに隣接する少なくとも１つのブロックに応答するフィルタを決定する命令と、それ以外の場合は第２のテーブルを使用してフィルタを決定する命令とを含み得る。
【００１５】
任意選択で、定義された適切なサブセットは、ＡＶ１コーデックによって定義されたＳＭＯＯＴＨ＿ＰＲＥＤ、ＳＭＯＯＴＨ＿Ｈ＿ＰＲＥＤ、およびＳＭＯＯＴＨ＿Ｖ＿ＰＲＥＤを含む。
【００１６】
第２のテーブルのエントリは、複数の予測角度の第１の予測角度と対をなすことができ、複数のサイズの第１のサイズは、第１の予測角度および第１のサイズと対をなす第１のテーブルのエントリよりも低いレベルのフィルタリングを示す。
【００１７】
別の態様は、イントラ予測モードを使用して現在のタイルの現在のブロックを符号化または復号化するための、メモリおよびプロセッサを含む装置である。プロセッサは、メモリに格納されている命令を実行して、予測角度と現在のブロックの第１エッジに平行な第１の線との間の第１の角度デルタを使用して第１のフィルタを決定し、予測角度と、第１のエッジに直交する現在のブロックの第２のエッジに平行な第２の線との間の第２の角度デルタを使用して第２のフィルタを決定し、第１のフィルタを使用して、現在のブロックに隣接する行または列のうちの一方に位置する現在のブロックの周辺の参照画素のうちの第１の画素をフィルタリングして、第１の修正された参照画素を生成し、第２のフィルタを使用して、現在のブロックに隣接する行または列のうちの他方に位置する現在のブロックの周辺の参照画素のうちの第２の画素をフィルタリングして、第２の修正された参照画素を生成し、イントラ予測モード、第１の修正された参照画素、および第２の修正された参照画素を使用して、現在のブロックに対する予測ブロックを生成するように構成されている。現在のブロックのサイズを使用して、第１のフィルタ、および／または第２のフィルタを決定することもできる。
【００１８】
第１の角度デルタは、予測角度と９０度との差の絶対値であり、第２の角度デルタは、予測角度と１８０度との差の絶対値であってよく、命令は、第１の修正された参照画素および第２の修正された参照画素を生成する前に、行および列の交点においてコーナー画素をフィルタリングする命令をさらに含み得る。
【００１９】
任意選択で、予測角度は、複数の利用可能な予測角度のうちの１つであり、予測角度は、定義された値の範囲の整数を乗じてベース予測角度を加算した定数に等しく、命令は、符号化されたビットストリームから、ベース予測角度のインジケータおよび整数を復号化する命令をさらに含み、整数は、不均一で適応可能な確率モデルを使用して符号化されている。
【００２０】
上述の任意の特徴は、本発明の任意の特定の態様または実施形態で使用され得ることに留意されたい。
本開示のこれらおよび他の態様は、実施形態の以下の詳細な説明、添付の特許請求の範囲および添付の図面において開示される。
【図面の簡単な説明】
【００２１】
本明細書の記載は、添付の図面を参照し、いくつかの図面に亘って同様の参照番号が同様の構成を参照している。
【図１】ビデオ符号化および復号化システムの概略図である。
【図２】送信局または受信局を実装し得るコンピューティングデバイスの一例のブロック図である。
【図３】符号化され、続いて復号化されるビデオストリームの図である。
【図４】本開示の実装形態による符号化器のブロック図である。
【図５】本開示の実装形態による復号化器のブロック図である。
【図６】本開示の実装形態による、イントラ予測モードを使用して現在のブロックをコーディングするためのプロセスのフローチャート図である。
【図７】本開示の実装形態による現在のブロックのイントラ予測の図である。
【図８】本開示の実装形態による周辺画素のフィルタリングの例のダイアグラムである。
【図９Ａ】本開示の実装形態による方向性イントラ予測モードの図である。
【図９Ｂ】本開示の実装形態による方向性イントラ予測モードの図である。
【図９Ｃ】本開示の実装形態による方向性イントラ予測モードの図である。
【図１０Ａ】本開示の実装形態による９０度の予測角度を有するイントラ予測モードの図である。
【図１０Ｂ】本開示の実装形態による１３５度の予測角度を有するイントラ予測モードの図である。
【発明を実施するための形態】
【００２２】
前述のように、ビデオストリームのコーディングに関連する圧縮方式は、画像をブロックに分割すること、１つまたは複数の技術を使用して出力ビットストリームに含まれる情報を制限するデジタルビデオ出力ビットストリーム（すなわち、符号化ビットストリーム）を生成することを含み得る。受信されたビットストリームは、復号化されて、制限された情報からブロックおよびソース画像を再生成することができる。ビデオストリーム、またはフレームやブロックなどのその一部を符号化することは、ビデオストリームの空間的類似性を使用して、コーディング効率を向上させることを含み得る。例えば、ビデオストリームの現在のブロックは、以前にコーディングされた画素値、または以前にコーディングされた画素値の組み合わせと、現在のブロック内の画素値との間の差（残差）を識別することに基づいて符号化され得る。
【００２３】
空間的類似性を使用した符号化は、イントラ予測として知られている。イントラ予測は、現在のブロックの周辺の画素を使用して、すなわち、現在のブロックと同じフレームにあるが、現在のブロックの境界外にある画素を使用して、ビデオストリームのフレームの現在のブロックの画素値を予測しようと試みる。イントラ予測は、本明細書で予測角度と呼ばれる予測の方向に沿って実行されることが可能であり、各方向は、イントラ予測モードに対応し得る。イントラ予測モードは、予測されている現在のブロックの周辺の画素を使用できる。現在のブロックの周辺の画素は、現在のブロックの外側の画素である。現在のブロックの周辺の画素は、現在のブロックの境界に接触する画素であり得る。イントラ予測モードは、符号化器により、復号化器へ通知され得る。
【００２４】
多くの異なるイントラ予測モードがサポートされ得る。いくつかのイントラ予測モードは、周辺画素のうちの少なくとも１つを使用して生成された予測ブロック内のすべての画素に対して単一の値を使用する。他は、方向性イントラ予測モードと呼ばれ、各々は、対応する予測角度を有する。イントラ予測モードは、例えば、水平イントラ予測モード、垂直イントラ予測モード、および他のさまざまな方向性イントラ予測モードを含み得る。そのため、予測角度は０〜３６０度の間の任意の角度であり得る。いくつかの実装形態では、予測角度は、０〜２７０度の間の任意の角度であり得る。利用可能な予測角度は、すべての可能な予測角度のサブセットであってもよい。例えば、コーデックは、０〜３６０度の間の５０〜６０の予測角度に対応する利用可能な予測モードを有し得る。
【００２５】
さまざまな方向性イントラ予測モードを使用して、以前にコーディングされたブロックからの画素値を角度線（水平、垂直、および水平および／または垂直からのオフセット方向を含む）に沿って伝播し、ブロックを予測できる。すなわち、現在のブロックは、周辺画素からの参照画素を投影して予測ブロックを形成することにより、予測され得る。周辺画素は、水平および垂直線からオフセットされ得る特定の角度または方向で、現在のブロックの左および上方（すなわち、上部）境界にある画素を含み得る。参照画素は、例えば、周辺画素の実際の画素値、または周辺画素のいくつかの（加重平均のような）平均画素値であってよく、角度方向に伝播して予測ブロックを形成する。周辺画素は、他の方法で組み合わせられて、参照画素を生成できる。
【００２６】
図９Ａ〜図９Ｃは、本開示の実装形態による方向性イントラ予測モードの図である。方向性イントラ予測モードは、本明細書では方向性予測モードとも呼ばれ得る。方向性予測モード９０２は、０〜９０度の間の予測角度を有するイントラ予測モードを示している。そのようなイントラ予測モードは、ゾーン１に属すると言及され得る。方向性予測モード９０４は、９０〜１８０度の間の予測角度を有するイントラ予測モードを示している。そのようなイントラ予測モードは、ゾーン２に属すると言及され得る。方向性予測モード９０６は、９０〜１８０度の間の予測角度を有するイントラ予測モードを示している。そのようなイントラ予測モードは、ゾーン３に属すると言及され得る。例示された方向性予測モード９０２〜９０６の各々は、現在のブロック９１２に適合する寸法を有する予測ブロックを生成するために使用され得る。
【００２７】
図９Ａ〜図９Ｃは、現在のブロックの上の行の第１の画素９０８、および現在のブロックの左側の列の第２の画素９１０をも示している。左上の画素９１４も示されている。第１の画素９０８、第２の画素９１０、および左上の画素９１４を使用して、予測ブロックを生成することができる。いくつかの実装形態では、ゾーン１の方向性予測（すなわち、０〜９０の間の予測角度を有するイントラ予測モード）は、予測ブロックを生成するために、第１の画素９０８を使用するが、第２の画素９１０を使用しなくてもよく、ゾーン２の方向性予測（すなわち、９０〜１８０の間の予測角度を有するイントラ予測モード）は、第１の画素９０８、第２の画素９１０、および左上の画素９１４を使用して予測ブロックを生成し、ゾーン３の方向性予測（すなわち、１８０〜２７０の間の予測角度を有するイントラ予測モード）は、予測ブロックを生成するために、第２の画素９１０を使用するが、第１の画素９０８を使用しなくてもよい。
【００２８】
図１０Ａは、本開示の実装形態による９０度の予測角度を有するイントラ予測モードの図である。図１０Ａは、予測されるべき４×４ブロック（現在のブロックとも呼ばれる）に対する予測ブロック１０００の生成を示し、図９のゾーン２（すなわち、方向性予測モード９０４）における方向性予測に対応する。図１０Ａのイントラ予測モードは、列の各画素が矢印の方向に隣接する周辺画素Ａ〜Ｄの値に等しい値セットを有するように、周辺画素Ａ〜Ｄを予測ブロック１０００の列の下方に伝播する。
【００２９】
図１０Ｂは、本開示の実装形態による１３５度の予測角度を有するイントラ予測モードの図である。図１０Ｂは、４×４の現在のブロックに対する予測ブロック１００２の生成を示し、図９のゾーン２における方向性予測に対応する。図１０Ｂのイントラ予測モードは、周辺画素値を、１３５度の線（すなわち、線１００６）に沿って右および下に伝播して、予測ブロック１００２を形成する。周辺画素値は、例えば、フレームの４×４の現在のブロックに隣接するブロックからの周辺画素１００８のいくつか（すなわち、画素ＡからＲ）を含み、現在のブロックに対する予測ブロック１００２を形成することができる。図１０Ｂの１３５度イントラ予測モードは、周辺画素１００８の画素値を使用して予測ブロック１００２を生成することを示しているが、例えば、周辺画素のいくつか（例えば、２、３、またはそれ以上）の線形結合（例えば、加重平均）を使用して、ブロックを通って延びる線に沿って予測ブロック１００２の画素値を予測することができる。例えば、画素位置１００４に対し線１００６のうちの１つに沿って伝播される画素値は、画素値Ｋ、Ｌ、およびＭの（例えば、重み付けされた）平均から形成され得る。
【００３０】
いくつかのビデオ信号（例えば、高解像度ビデオまたは４Ｋビデオの信号など）の画素は、比較的滑らかな勾配を有する。そのため、これらのビデオ信号は、多くの高周波成分を含まない場合がある。むしろ、低周波成分が、主にそのようなビデオ信号を構成する。鋭い予測角度を有するイントラ予測モードでは、予測信号の周波数がより高くなり、ひいては高周波歪みが発生する可能性がある。
【００３１】
本開示の実装形態は、イントラ予測エッジフィルタリングを使用して、ビデオ圧縮を改善し、および／または歪みを低減することができる。上記のように、イントラ予測モードは、現在のブロックの周辺の画素を使用する。イントラ予測エッジフィルタリングは、現在のブロックの周辺の画素の少なくともいくつかに（例えば、ローパス）フィルタを適用し、結果として修正された画素を生成し、修正された画素を使用して予測ブロックを生成することにより、歪みを除去することが可能である。
【００３２】
本明細書で開示されるイントラ予測エッジフィルタリングが実装され得る環境を最初に説明した後に、詳細が説明される。
図１は、ビデオ符号化及び復号化システム１００の概略図である。送信局１０２は、例えば、図２に記載されているようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、送信局１０２の他の適切な実装形態も可能である。例えば、送信局１０２の処理を複数の装置に分散させることができる。
【００３３】
ネットワーク１０４は、ビデオストリームの符号化および復号化のために、送信局１０２および受信局１０６を接続することができる。具体的には、ビデオストリームを送信局１０２で符号化することができ、符号化されたビデオストリームを受信局１０６で復号化することができる。ネットワーク１０４は、例えばインターネットであってもよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、または送信局１０２から、この例では、受信局１０６にビデオストリームを転送する任意の他の手段とすることができる。
【００３４】
受信局１０６は、一例では、図２に記載されたようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、受信局１０６の他の適切な実装形態も可能である。例えば、受信局１０６の処理を複数の装置に分散させることができる。
【００３５】
ビデオ符号化および復号化システム１００の他の実装形態も可能である。例えば、実装形態はネットワーク１０４を省略することができる。別の実装形態では、ビデオストリームを符号化し、後で受信局１０６またはメモリを有する任意の他の装置に送信するために格納することができる。一実装形態では、受信局１０６は、符号化されたビデオストリームを（例えば、ネットワーク１０４、コンピュータバス、および／または何らかの通信経路を介して）受信し、後の復号化のためにビデオストリームを格納する。一実装形態では、ネットワーク１０４を介して符号化されたビデオを伝送するためにリアルタイム転送プロトコル（ＲＴＰ：ｒｅａｌ−ｔｉｍｅｔｒａｎｓｐｏｒｔ ｐｒｏｔｏｃｏｌ）が使用される。別の実装形態では、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ：ＨｙｐｅｒｔｅｘｔＴｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）ベースのビデオストリーミングプロトコルなどのＲＴＰ以外の転送プロトコルが使用されてもよい。
【００３６】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に説明するように、ビデオストリームを符号化および復号化する能力を含むことができる。例えば、受信局１０６は、ビデオ会議サーバ（例えば、送信局１０２）から符号化されたビデオビットストリームを受信して復号化および視聴し、さらにそのビデオビットストリームを他の参加者による復号化および視聴のために符号化してビデオ会議サーバに送信するビデオ会議参加者であってよい。
【００３７】
図２は、送信局または受信局を実装することができるコンピューティングデバイス２００の一例のブロック図である。例えば、コンピューティングデバイス２００は、図１の送信局１０２および受信局１０６の一方または両方を実装することができる。コンピューティングデバイス２００は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの単一のコンピューティングデバイスの形態とすることができる。
【００３８】
コンピューティングデバイス２００内のＣＰＵ２０２は、中央処理装置とすることができる。代替的に、ＣＰＵ２０２は、現在存在するか、または今後開発される情報を操作または処理することができる任意の他のタイプのデバイスまたは複数のデバイスであってもよい。開示された実装形態は、図示のような単一のプロセッサ、例えばＣＰＵ２０２で実施することができるが、複数のプロセッサを使用して速度と効率の利点を達成することができる。
【００３９】
コンピューティングデバイス２００内のメモリ２０４は、実装形態では読み出し専用メモリ（ＲＯＭ）デバイスまたはランダムアクセスメモリ（ＲＡＭ）デバイスであってもよい。任意の他の適切なタイプの記憶装置をメモリ２０４として使用することができる。メモリ２０４は、ＣＰＵ２０２がバス２１２を使用してアクセスするコードおよびデータ２０６を含むことができる。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含むことができ、アプリケーションプログラム２１０は、本明細書に記載された方法をＣＰＵ２０２が実行するのを可能にする少なくとも１つのプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１〜Ｎを含むことができ、アプリケーション１〜Ｎは、本明細書で説明する方法を実行するビデオコーディングアプリケーションをさらに含む。コンピューティングデバイス２００はまた、例えば、携帯型であるコンピューティングデバイス２００と共に使用されるメモリカードとすることができる二次ストレージ２１４を含むことができる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、二次ストレージ２１４に全体的または部分的に記憶され、処理のために必要に応じてメモリ２０４にロードされる。
【００４０】
コンピューティングデバイス２００は、ディスプレイ２１８などの１つまたは複数の出力デバイスを含むこともできる。ディスプレイ２１８は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブエレメントと組み合わせたタッチセンシティブディスプレイであってもよい。ディスプレイ２１８は、バス２１２を介してＣＰＵ２０２に接続することができる。ユーザがコンピューティングデバイス２００をプログラムするかまたは他の方法で使用することを可能にする他の出力デバイスが、ディスプレイ２１８に加えて、またはディスプレイ２１８に代えて設けられてもよい。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）ディスプレイなどの発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実施することができる。
【００４１】
コンピューティングデバイス２００は、コンピューティングデバイス２００を操作するユーザの画像等の画像を検出することができる、例えば、カメラなどの撮像デバイス２２０、または現在または将来開発される任意の他の撮像デバイス２２０を含むか、または撮像デバイス２２０と通信することができる。撮像デバイス２２０は、コンピューティングデバイス２００を操作するユーザの方に向けられるように配置することができる。一例では、撮像デバイス２２０の位置および光軸は、視野が、ディスプレイ２１８に直接隣接する領域であって、その領域からディスプレイ２１８が視認可能な領域を含むように構成することができる。
【００４２】
コンピューティングデバイス２００は、コンピューティングデバイス２００の近くの音を感知することができる、例えば、マイクロホンなどの音声感知デバイス２２２、または現在または今後開発される任意の他の音声感知デバイスを含むか、またはそれと通信することができる。音声感知デバイス２２２は、コンピューティングデバイス２００を操作するユーザの方に向けられ、かつユーザがコンピューティングデバイス２００を操作している間にユーザによって発せられた、例えば音声、他の発話を受信するように構成することができる。
【００４３】
図２は、コンピューティングデバイス２００のＣＰＵ２０２およびメモリ２０４が単一のユニットに統合されていることを示しているが、他の構成を利用することもできる。ＣＰＵ２０２の動作は、直接的にまたはローカルエリアネットワークまたは他のネットワークを介して接続することができる複数のマシン（各マシンは１つまたは複数のプロセッサを有する）にわたって分散させることができる。メモリ２０４は、ネットワークベースのメモリのように複数のマシンに分散するか、またはコンピューティングデバイス２００の動作を実行する複数のマシンにおけるメモリとすることができる。本明細書では単一のバスとして示されているが、コンピューティングデバイス２００のバス２１２は、複数のバスから構成することができる。さらに、二次ストレージ２１４は、コンピューティングデバイス２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされ、かつメモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。従って、コンピューティングデバイス２００は、多種多様な構成で実装され得る。
【００４４】
図３は、符号化され、続いて復号化されるビデオストリーム３００の一例の図である。ビデオストリーム３００は、ビデオシーケンス３０２を含む。次のレベルでは、ビデオシーケンス３０２は、複数の隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含むことができる。隣接フレーム３０４はさらに、個々のフレーム、例えばフレーム３０６に細分化することができる。次のレベルでは、フレーム３０６は、一連のセグメント３０８またはプレーンに分割することができる。セグメント３０８は、例えば、並列処理を可能にするフレームのサブセットとすることができる。セグメント３０８は、ビデオデータを別々の色に分離することができるフレームのサブセットとすることができる。例えば、カラービデオデータのフレーム３０６は、輝度プレーン（ｌｕｍｉｎａｎｃｅｐｌａｎｅ）および２つの色度プレーン（ｃｈｒｏｍｉｎａｎｃｅ ｐｌａｎｅ）を含むことができる。セグメント３０８は、異なる解像度でサンプリングすることができる。
【００４５】
フレーム３０６がセグメント３０８に分割されているか否かにかかわらず、フレーム３０６は、さらに、フレーム３０６内の例えば１６×１６画素に対応するデータを含むことができるブロック３１０に細分化されてもよい。ブロック３１０は、１つまたは複数のセグメント３０８の画素データからのデータを含むように構成され得る。ブロック３１０は、４×４画素、８×８画素、１６×８画素、８×１６画素、１６×１６画素、またはそれより大きいような任意の他の適切なサイズであってもよい。
【００４６】
図４は、本開示の実装形態による符号化器４００のブロック図である。符号化器４００は、例えばメモリ２０４などのメモリに格納されたコンピュータソフトウェアプログラムを提供するなどして、上述のように送信局１０２内で実装され得る。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサよる実行時に、送信局１０２に本明細書で説明される方法でビデオデータを符号化させる機械命令を含むことができる。符号化器４００は、例えば、送信局１０２に含まれる専用のハードウェアとして実装されることも可能である。符号化器４００は、ビデオストリーム３００を入力として使用してフォワードパス（実線の接続線で示す）において様々な機能を実行して、符号化または圧縮されたビットストリーム４２０を生成するイントラ予測／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を有する。符号化器４００は、将来のブロックの符号化のためのフレームを再構成する再構成パス（点線の接続線で示す）をも含む。図４において、符号化器４００は、再構成パスにおいて様々な機能を実行する以下のステージ、すなわち、逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６を有する。符号化器４００の他の構成的な変形例を使用してビデオストリーム３００を符号化することができる。
【００４７】
ビデオストリーム３００が符号化のために提示されると、フレーム３０６はブロックの単位で処理され得る。イントラ予測／インター予測ステージ４０２において、ブロックは、イントラフレーム予測（イントラ予測とも称される）またはインターフレーム予測（インター予測とも称される）、または両方の組み合わせを用いて符号化され得る。いずれの場合でも、予測ブロックが形成され得る。イントラ予測の場合、予測ブロックの全てまたは一部が、以前に符号化され、かつ再構成された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックの全てまたは一部が、動きベクトルを用いて決定された１つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
【００４８】
次に、引き続き図４を参照して、イントラ予測／インター予測ステージ４０２において予測ブロックが現在のブロックから減算され、残差ブロック（残差とも呼ばれる）が生成される。変換ステージ４０４は、ブロックベースの変換を使用して、残差を、例えば周波数領域の変換係数に変換する。このようなブロックベースの変換には、例えば、離散コサイン変換（ＤＣＴ：ＤｉｓｃｒｅｔｅＣｏｓｉｎｅ Ｔｒａｎｓｆｏｒｍ）および非対称離散サイン変換（ＡＤＳＴ：Ａｓｙｍｍｅｔｒｉｃ Ｄｉｓｃｒｅｔｅ Ｓｉｎｅ Ｔｒａｎｓｆｏｒｍ）が含まれる。他のブロックベースの変換も可能である。さらに、異なる変換の組み合わせを単一の残差に適用することができる。変換の適用の一例では、ＤＣＴは、残差ブロックを周波数領域に変換し、ここで、変換係数値は、空間周波数に基づいている。行列の左上の最低周波数（ＤＣ）係数、および行列の右下の最高周波数係数。予測ブロックのサイズ、従って結果の残差ブロックは、変換ブロックのサイズと異なる可能性があることは注目に値する。例えば、予測ブロックは、別々の変換が適用される、より小さなブロックに分割され得る。
【００４９】
量子化ステージ４０６は、変換係数を、量子化値または量子化レベルを使用して量子化変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は、量子化値で除算され、切り捨てられてもよい。次に、量子化された変換係数は、エントロピー符号化ステージ４０８によってエントロピー符号化される。エントロピーコーディングは、トークンツリーおよびバイナリツリーを含む任意の数の技術を使用して実行されてもよい。例えば、使用される予測のタイプ、変換タイプ、動きベクトルおよび量子化値を含み得る、ブロックを復号化するために使用される他の情報とともに、エントロピー符号化された係数は、圧縮されたビットストリーム４２０に出力される。ブロックを復号するための情報は、圧縮されたビットストリーム４２０内のブロック、フレーム、スライス、および／またはセクションヘッダにエントロピーコーディングされ得る。圧縮されたビットストリーム４２０は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも称され、これらの用語は本明細書では互換的に使用される。
【００５０】
符号化器４００および復号化器５００（以下に説明する）の両方が、圧縮されたビットストリーム４２０を復号化するために同じ参照フレームおよびブロックを使用することを確実にするために、図４における再構成パス（点線の接続線で示す）が使用される。再構成パスは、逆量子化ステージ４１０で量子化された変換係数を逆量子化すること、および逆変換ステージ４１２で逆量子化された変換係数を逆変換して微分残差ブロック（微分残差とも称される）を生成することを含む以下により詳細に説明される復号化プロセス中に行われる機能と同様の機能を実行する。再構成ステージ４１４において、イントラ予測／インター予測ステージ４０２で予測された予測ブロックを微分残差に加えて、再構成されたブロックが作成される。ブロック化アーチファクトなどの歪みを低減するために、ループフィルタリングステージ４１６が再構成されたブロックに適用される。
【００５１】
符号化器４００の他の変形例を使用して圧縮されたビットストリーム４２０を符号化することができる。例えば、非変換ベースの符号化器４００は、あるブロックまたはフレームに関して変換ステージ４０４を使用せずに残差信号を直接量子化することができる。別の実装形態では、符号化器４００は、量子化ステージ４０６と逆量子化ステージ４１０とを組み合わせて単一のステージとすることができる。
【００５２】
図５は、本開示の実装による復号化器５００のブロック図である。復号化器５００は、例えば、メモリ２０４に格納されたコンピュータソフトウェアプログラムを提供することによって、受信局１０６で実装され得る。コンピュータソフトウェアプログラムは、ＣＰＵ２０２などのプロセッサによる実行時に、受信局１０６に、本明細書において説明される方法でビデオデータを復号化させる機械命令を含む。復号化器５００は、例えば、送信局１０２または受信局１０６に含まれるハードウェアで実装されることも可能である。復号化器５００は、上述の符号化器４００の再構成パスと同様に、一例では、様々な機能を実行して圧縮されたビットストリーム４２０から出力ビデオストリーム５１６を生成するための以下のステージ、すなわち、エントロピー復号化ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ予測／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４を含む。圧縮されたビットストリーム４２０を復号化するために復号化器５００の他の構造的な変形例を使用することができる。
【００５３】
圧縮されたビットストリーム４２０が復号化のために提示されると、圧縮されたビットストリーム４２０内のデータ要素が、エントロピー復号化ステージ５０２によって復号化されて、一組の量子化変換係数が生成される。逆量子化ステージ５０４は、（例えば、量子化された変換係数に量子化値を乗算することにより）量子化された変換係数を逆量子化し、逆変換ステージ５０６は、選択された変換タイプを使用して逆量子化された変換係数を逆変換して、符号化器４００における逆変換ステージ４１２によって生成されたものと同一である微分残差を生成する。圧縮されたビットストリーム４２０から復号化されたヘッダ情報を使用して、復号化器５００は、イントラ予測／インター予測ステージ５０８を用いて、例えばイントラ予測／インター予測ステージ４０２において、符号化器４００で生成されたのと同じ予測ブロックを作成する。再構成ステージ５１０において、予測ブロックを微分残差に加えて再構成ブロックが作成される。ループフィルタリングステージ５１２は、ブロッキングアーチファクトを低減するために再構成されたブロックに適用される。再構成されたブロックに他のフィルタリングを適用することができる。この例では、ブロッキング歪を低減するためにデブロッキングフィルタリングステージ５１４が再構成ブロックに適用され、その結果が出力ビデオストリーム５１６として出力される。出力ビデオストリーム５１６は、復号化されたビデオストリームとも呼ばれ、用語は本明細書では互換的に使用される。
【００５４】
復号化器５００の他の変形例を使用して、圧縮されたビットストリーム４２０を復号化することができる。例えば、復号化器５００は、デブロッキングフィルタリングステージ５１４を用いずに出力ビデオストリーム５１６を生成することができる。復号化器５００のいくつかの実装形態では、デブロッキングフィルタリングステージ５１４は、ループフィルタリングステージ５１２の前に適用される。追加的または代替的に、符号化器４００は、ループフィルタリングステージ４１６に加えて、デブロッキングフィルタリングステージを含む。
【００５５】
図６は、本開示の実装形態による、イントラ予測モードを使用して現在のブロックをコーディングするためのプロセス６００のフローチャート図である。これらの例では、イントラ予測モードは、対応する予測角度を有し、現在のブロックの周辺の画素を使用する（例えば、方向性イントラ予測モードが使用される）。現在のブロックの周辺の画素は、現在のブロックと同じビデオフレーム内の以前に予測された画素であり得る。
【００５６】
プロセス６００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行され得るソフトウェアプログラムとして実装されることが可能である。ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサにより実行されて、コンピューティングデバイスにプロセス６００を実行させることができる機械可読命令を含み得る。プロセス６００は、符号化器、復号化器、または符号化器および復号化器の両方で実装され得る。少なくともいくつかの実装形態では、プロセス６００は、図４の符号化器４００のイントラ／インター予測ステージ４０２によって全体的または部分的に実行され得る。他の実装形態では、プロセス６００は、図５の復号化器５００のイントラ／インター予測ステージ５０８によって全体的または部分的に実行され得る。
【００５７】
プロセス６００は、専用のハードウェアまたはファームウェアを使用して実装され得る。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有し得る。プロセス６００のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散され得る。単数での「プロセッサ」または「メモリ」という用語の使用は、１つのプロセッサまたは１つのメモリを有するコンピューティングデバイスのみならず、記載されたステップのいくつかまたは全てのステップの実施において使用され得る複数のプロセッサまたは複数のメモリを有するデバイスをも包含する。
【００５８】
６０２において、プロセス６００は、イントラ予測角度を使用して、現在のブロックの参照画素に適用するフィルタを決定する。本明細書でより詳細に説明するように、現在のブロックサイズも使用され得る。現在のブロックの参照画素は、予測ブロックを生成する際に使用するためのイントラ予測モードによって示されるものであり得る。参照画素は、図９Ａ〜図１０Ｂを参照して説明したように、現在のブロックの周辺の画素の少なくともいくつかであり得る。プロセス６００は、図７および図８に関して説明したように、フィルタを決定することができる。
【００５９】
図７は、本開示の実装形態による現在のブロックのイントラ予測の図である。この図は、現在のブロック７０２を含むフレーム７００の一部を示している。現在のブロック７０２は、８×８のブロックとして示されている。しかしながら、任意のブロックサイズが可能である。例えば、現在のブロックは、４×４、８×８、１６×１６、３２×３２のサイズ（すなわち、寸法）、または任意の他の正方形または長方形ブロックサイズを有し得る。現在のブロック７０２は、現在のフレームのブロックであり得る。別の例では、現在のフレームは、各々がブロックの集合を含む（図３のセグメント３０８のような）セグメント、タイルなどに分割することができ、現在のブロックはパーティションのブロックである。例えば、現在のフレームは、４つのタイル（例えば、左上タイル、右上タイル、左下タイル、および右下タイル）に分割され得る。各タイルはブロックを含み、その少なくともいくつかは、本開示に従って処理することができる。タイルのブロックは、異なるサイズであり得る。例えば、８×８のブロックは、隣接する１６×１６の左ブロックを有し得る。本明細書で使用されるタイルは、フレームまたはフレームのパーティションを指す。タイルのブロックは、タイルのスキャン順序に基づいて処理され得る。タイルは、フレームのスキャン順序に基づいて処理され得る。
【００６０】
この例では、現在のブロック７０２は、方向線７３０によって示されるような予測角度を有するイントラ予測モードを使用してイントラ予測される。上記のように、予測角度は、０〜３６０度の間の任意の角度であり得る。予測モードは、現在のブロック７０２の周辺の画素を使用する。周辺画素は、現在のブロック７０２の外側にあり、かつ現在のフレーム内にある画素である。周辺画素は、現在のブロック７０２に隣接する１つまたは複数の行および列を含み得る。図７の周辺画素は、行における第１の画素７０４、および列における第２の画素７０６を含む。第１の画素７０４は、画素７０８および７１０の間の８つの水平画素を含む（例えば、８×８の現在のブロック７０２の水平寸法に対応する）。第２の画素７０６は、画素７１２および７１４の間の８つの垂直画素を含む（例えば、８×８の現在のブロック７０２の垂直寸法に対応する）。周辺画素は、左上画素とも呼ばれるコーナー画素７１６を含むことができ、これは、第１の画素７０４と第２の画素７０６との交点にある。
【００６１】
第１の画素７０４は、現在のブロックの上方（すなわち、上部）に示され、第２の画素７０６は、現在のブロック７０２の左側に示されている。しかしながら、必ずしもそうである必要はない。水平画素および周辺の垂直画素は、現在のタイルのスキャン順序に基づいて選択され得る。例えば、ラスタースキャンの順序では、タイルのブロックは、左上のブロックから右下のブロックまで行ごとに処理され得る。例えば、スキャン順序が右下から左上である場合、第１の画素（例えば、水平周辺画素）は現在のブロックの下にあり、第２の画素（例えば、垂直周辺画素）は現在のブロックの右側にあり得る。ジグザグまたは他のスキャン順序も可能である。図７では、第１の画素７０４は水平画素の１つの行を含むように描かれ、第２の画素７０６は垂直画素の１つの列を含むように描かれている。これは、必ずしもそうである必要はない。第１の画素７０４は、１つまたは複数の画素の行を含むことができる。第２の画素７０６は、１つまたは複数の画素の列を含むことができる。コーナー画素７１６は、単一の左上の画素であるが、これらの代替実装形態では、１つより多い画素を含むことができ、および／または現在のブロック７０２に対して異なる位置に配置され得る。
【００６２】
イントラ予測モード（すなわち、予測角度）に応じて、追加の周辺画素が使用されて、イントラ予測を実行することが可能である。水平および／または垂直方向の追加の画素の数は、現在のブロック７０２の水平および／または垂直の寸法とそれぞれ同じであり得るが、同じである必要はない。
【００６３】
追加の画素は、利用可能な場合、以前に復号化または予測された画素であり得る。例えば、第２の画素７０６は、追加の画素７１９を含むものとして描かれている。追加の画素７１９は、現在のブロック７０２と同じタイル内の隣接する以前に予測または復号化されたブロックの画素であり得る。
【００６４】
追加の画素は、拡張画素（ｅｘｔｅｎｄｅｄｐｉｘｅｌｓ）であり得る。拡張画素は、近隣の画素（すなわち、隣接する、以前に予測または復号化されたブロックからの画素）が使用できない場合に使用され得る。例えば、現在のブロックが現在のタイルの境界（すなわち、垂直エッジおよび／または水平エッジ）の隣にある（すなわち、隣接している）場合、近隣の画素は使用できない場合がある。別の例として、必要な画素を含む近隣のブロックが現在のブロックの前に復号化または予測されていない場合、近隣の画素は利用できない場合がある。
【００６５】
拡張画素は、他の隣接する周辺画素から得ることが可能である。ここで、第１の画素７０４は、拡張画素７１８（影付き画素として示されている）を含むものとして示されている。一例では、拡張画素７１８は、現在のブロック７０２の水平寸法と一致する（例えば、スキャン順序の方向において）最後の周辺画素値の値を拡張することにより得ることができる。例えば、拡張画素７１８の各々の値は、最後の画素７１０の値に設定され得る。左から右および上から下へのスキャン順序では、最後の画素７１０は、左から右へのスキャン順序において最も右の画素であるため、第１の画素７０４の最後の非拡張画素であり、最後の画素７２２は、上から下へのスキャン順序において最も下の画素であるため、第２の画素７０６の最後の非拡張画素である。図７は、拡張水平画素（すなわち、拡張画素７１８）のみを示しているが、拡張垂直画素も可能である。例えば、追加の画素７１９が利用可能でなかった場合、第２の画素７０６は、もしイントラ予測モードにより必要とされるならば、現在のブロック７０２の垂直寸法と一致する画素７１４の値をすべてが使用する拡張垂直画素を含み得る。
【００６６】
ブロックのいくつかの配置および場所においては、エッジに沿った予測に使用できる画素が存在しない。例えば、ブロックがブロックの上部に隣接する画素を有しない場合や、ブロックの左に画素を有しない場合がある。図９Ａ〜図１０Ｂから決定され得るように、ゾーン１イントラ予測モードは、上部の参照画素のみを使用し、ゾーン３イントラ予測モードは左の参照画素のみを使用し、ゾーン２イントラ予測モードは上部および左の参照画素の両方を使用する。使用可能な画素のみに依存するモードだけにイントラ予測モードを制限することは可能であるが、圧縮効率が低下する可能性がある。かわりに、上方／上部または左のエッジが利用できない場合、画素値が他のエッジからコピーされ得る。画素値は、利用できないエッジに最も近い（例えば、空間的に最も近い）画素からのものであり得る。一例として図７を用いると、画素７１２の画素値は、現在のブロック７０２の上方の行が利用できない場合には、第１の画素７０４および拡張画素７１８に対応する水平画素に対して、および任意選択で上方コーナー画素７１６に対して使用され得る。同様に、画素７０８の画素値は、現在のブロック７０２の左側の列が利用できない場合には、第２の画素７０６および追加の画素７１９に対応する垂直画素に対して、および任意選択で上方コーナー画素７１６に対して使用され得る。このイノベーションにより、他の利点の中でも特に、タイル境界での予測の不連続性が回避される。
【００６７】
プロセス６００は、予測角度に基づいて、現在のブロック７０２の周辺の画素に適用するフィルタを決定する。一例において、現在のブロックの上のエッジ（すなわち、水平エッジ）に垂直な線と予測角度との間の差は、フィルタを決定するために使用される。別の言い方をすれば、フィルタは、現在のブロック７０２の左のエッジに平行な垂直線および予測角度に基づいて決定され得る。フィルタを決定することは、第１の画素７０４のための（すなわち、それに適用される）第１のフィルタおよび第２の画素７０６のための第２のフィルタを決定することを含み得る。
【００６８】
例えば、第１の画素７０４（すなわち、現在のブロックの上方の周辺画素）に適用される第１のフィルタは、角度デルタ７３２に基づいて決定され得る。角度デルタ７３２は、現在のブロック７０２の左のエッジに平行な垂直線である線７２８と、方向線７３０によって示される予測角との間の角度である。第２のフィルタは、角度デルタ７３４に基づいて決定され得る。角度デルタ７３４は、現在のブロック７０２の上のエッジに平行な水平線７２６と、方向線７３０によって示される予測角度との間の角度である。
【００６９】
一例では、角度デルタ７３２および角度デルタ７３４は、次の式を使用して予測角度に基づいて計算され得る。
角度デルタ７３２＝ＡＢＳ（予測角度−９０）
角度デルタ７３４＝ＡＢＳ（予測角度−１８０）
すなわち、第１の画素７０４（例えば、水平線に沿った周辺画素）については、角度デルタ７３２は、予測角度と９０度との間の差の絶対値であり、第２の画素７０６（例えば、垂直線に沿った周辺画素）については、角度デルタ７３４は、予測角度と１８０度との間の差の絶対値であってよい。
【００７０】
角度デルタに加えて、プロセス６００は、現在のブロックのサイズに基づいてフィルタを決定することができる。プロセス６００により決定されるフィルタは、ローパスｎタップフィルタであってよい。変数ｎは、奇数の整数であり得る。例えば、３タップフィルタは、図８に関して以下で説明される。しかしながら、他のタイプのフィルタおよびフィルタサイズが選択され得る。
【００７１】
場合によっては、プロセス６００は、角度デルタおよびブロックサイズに基づいてフィルタ強度を決定し得る。例えば、表１は、角度デルタおよび現在のブロックサイズ、具体的にはブロックエッジの寸法（すなわち、画素全体の数またはカーディナリティ）に基づくフィルタ強度を示す。角度デルタ、ブロックエッジ寸法、および対応するフィルタ強度の値の範囲は、表１に示す例から変化し得る。
【００７２】
【表１】
0006858277.tif 000002
強度が増加するフィルタ（例えば、修正された画素値は、現在の画素値よりも隣接する画素値からのより高い割合の寄与を受ける）は、角度デルタが増加するにつれて選択され得る。例えば、１６×１６ブロックについて、角度デルタが４〜７の場合、強度１のフィルタが選択され得る一方、角度デルタが１６〜３１の場合、強度３のフィルタが選択される。ゼロのフィルタ強度は、フィルタが選択されない（すなわち、フィルタリングが実行されない）ことを示し得る。８×８ブロックの場合、フィルタリングは、８を超える角度デルタについて開始できる。１６×１６ブロックの場合、フィルタリングは、４を超える角度デルタについて開始できる。３２×３２ブロックの場合、フィルタリングは、０を超える角度デルタについて開始できる。ゼロのフィルタ強度は、プロセス６００が周辺画素のフィルタリングをバイパスすることを意味し得る（すなわち、周辺画素にフィルタリングを適用しない）。
【００７３】
表１の使用の例として、現在のブロックが３２×３２ブロックであり、予測モードが垂直予測モードであると仮定する（図１０Ａに関して説明したように）。そのため、角度デルタ７３２はゼロである（すなわち、ＡＢＳ（９０−９０））。表１の最初の行によると、デルタ値がゼロの場合、フィルタはゼロ強度になる。ゼロ強度のフィルタは、フィルタリングなしに対応し得る。従って、予測角度が９０度の場合、第１の画素（例えば、現在のブロックの上方にある周辺画素）に対してフィルタリングは実行されない。角度デルタ７３４は、９０（すなわち、絶対値（１８０−９０））である。表１は、（３２、９０）の間の角度デルタに対して強度３のフィルタを示しているが、プロセス６００は、第２の画素（例えば、現在のブロックの左側にある周辺画素）をフィルタリングしない場合があり、これは、図１０Ａについて説明されたように、左の画素（すなわち、図１０ＡのＪ−Ｒ）は、垂直イントラ予測モードに必要とされないからである。
【００７４】
別の例として、現在のブロックが１６×１６ブロックであり、予測モードが図１０Ｂに示すように１３５度の予測角度を有すると仮定する。従って、角度デルタ７３２（現在のブロックの上方の第１の画素の角度デルタ）の値は、４５（すなわち、ＡＢＳ（１３５−９０））であり、強度３のフィルタとなる。同様に、角度デルタ７３４（現在のブロックの左の第２の画素の角度デルタ）も４５（すなわち、ＡＢＳ（１３５−１８０））であり、強度３のフィルタとなる。
【００７５】
さらに別の例として、プロセス６００は、角度デルタが閾値と比較される場合にフィルタを決定することができる。例えば、角度デルタが９０度の閾値より大きい場合、フィルタは決定されない。フィルタが決定されない場合、周辺画素のフィルタリングはバイパスされる。例えば、現在のブロックが８×８ブロックであり、予測モードが１９５度の予測角度を有すると仮定する。従って、角度デルタ７３２（現在のブロックの上方の第１の画素の角度デルタ）の値は、１０５（すなわち、ＡＢＳ（１９５−９０））である。表１は、角度デルタが９０より大きい場合、フィルタリングのエントリがないことを示している。この結果は、図９に関して上述したように、計算された角度デルタに対応する周辺画素を使用して予測ブロックを生成することができないことを示し得る。そのため、これらの画素のフィルタリングは不要である。あるいは、たとえ周辺画素が予測ブロックの生成に使用される場合でも、角度デルタが閾値（例えば９０度）より大きい場合、フィルタリングはバイパスされる。この例では、角度デルタ７３４（現在のブロックの左の第２の画素の角度デルタ）は１５（すなわち、ＡＢＳ（１９５−１８０））であり、強度１のフィルタとなる。
【００７６】
いくつかの例では、４×４ブロックに対してフィルタが選択されていない。対照的に、表１の例では、特定の角度デルタに対する最小予測ブロックサイズは、エントリ「アップ」で示されるように、予測エッジに沿って画素をアップサンプリングすることによって処理される。この例では、最小予測ブロックサイズは、４×４画素である。本明細書で説明される特定のエッジに対するアップサンプリングの使用は、使用される変換カーネルに応じて、本明細書で説明される他のフィルタリングを使用して達成可能なゲインよりも画像データのゲインを改善できる。アップサンプリングフィルタの例が、以下に説明される。
【００７７】
上述のように６０２においてフィルタを決定することは、フィルタの強度またはタイプを決定することを含む。フィルタ強度を選択することにより、それに応じてフィルタを決定することができる。すなわち、フィルタの強度またはタイプの各々は、それぞれのフィルタに関連付けられ得る。上記のフィルタの強度またはタイプの各々は、それぞれのフィルタとともに、フィルタカーネルを形成し得る。フィルタの例は、重み（１，２，１）を有する３タップフィルタ、および重み（５，６，５）を有する３タップフィルタを含む。他のフィルタも可能である。フィルタカーネルの１つの可能なセットは、以下の表２に含まれている。
【００７８】
【表２】
0006858277.tif 000003
この例によれば、フィルタ強度１は、（１，２，１）フィルタに対応する。フィルタ強度２は、フィルタ（５，６，５）に対応する。フィルタ強度３は、フィルタ（２，４，４，４，２）に対応する。フィルタ強度ゼロは、フィルタリングが実行されないことを示す（すなわち、フィルタリングはバイパスされる）。あるいは、フィルタ強度ゼロは、重み（０，１，０）を有するフィルタに対応し得る。アップサンプリングフィルタについては、以下で詳しく説明される。他のフィルタも可能である。
【００７９】
別の例では、フィルタ強度は、符号化ビットレートを調整する量子化パラメータにさらに基づいてもよく、アクティビティ測定（例えば分散値）に基づいてもよい。量子化パラメータは、現在のブロック（すなわち、ブロックレベルの量子化パラメータ）、現在のブロックを含む現在のフレーム（フレームレベルの量子化パラメータ）、またはその両方に対して使用でき得る。ブロックレベルの量子化パラメータは、ブロックヘッダにおいて符号化器によって符号化され、ブロックヘッダから復号化器によって復号化され得る。フレームレベルの量子化パラメータは、フレームヘッダにおいて符号化器によって符号化され、フレームヘッダから復号化器により復号化され得る。ブロックレベルの量子化パラメータが利用できない場合、フレームレベルの量子化パラメータが、ブロックレベルの量子化パラメータとして使用され得る。比較的低い量子化パラメータは、現在のフレーム（または場合によっては現在のブロック）においてより詳細を示し、比較的高い量子化パラメータは、現在のフレーム（またはブロック）においてより低い詳細を示す。そのため、量子化パラメータを使用してフィルタ強度を変調し得る。例えば、フィルタの強度は、量子化パラメータの値に比例し得る。すなわち、より弱いフィルタリングが、量子化パラメータのより低い値に適用され、より強いフィルタリングが、量子化パラメータのより高い値に適用され得る。この例の１つの適用では、角度デルタおよび／またはブロックサイズによって決定されるフィルタリング強度は（およびその結果フィルタは）、下限を下回る量子化パラメータの値に対して１の値だけ減少され、上限を上回る量子化パラメータの値に対して１の値だけ増加され得る。量子化パラメータをフィルタ選択に組み込むか、またはフィルタ適用に組み込んで修正値を取得するバリエーションが可能である。
【００８０】
上記の例では、ブロックの２つのエッジ（例えば、上および左のエッジ）に沿って参照画素をフィルタリングする異なるフィルタについて説明している。同じフィルタの選択が、各エッジに対して利用できる場合もあれば、各エッジが、他のエッジに対して利用可能なものとは異なる１つまたは複数のフィルタ選択を有する場合もある。同じまたは異なるフィルタ強度が、各エッジに対して使用され得る。例えば、各エッジのフィルタを選択するために、異なる角度デルタを考慮する必要はない。代わりに、（イントラ予測モードにより示されるような）支配的な予測エッジの角度デルタを使用して、両方のエッジに対して単一のフィルタを選択できる。すなわち、より大きな角度デルタが使用される。支配的な予測エッジの角度デルタを使用すると、他の角度デルタを使用してその予測エッジのフィルタを決定する場合に発生するよりも強いフィルタを他の予測エッジの参照画素に適用できる。他のバリエーションも可能である。例えば、角度デルタを使用する代わりに、イントラ予測角度の絶対値を値の範囲と比較して、フィルタを決定することができる。
【００８１】
プロセス６００は、異なる寸法を有するブロックのフィルタ選択に表１を使用することができるが、プロセス６００は、いくつかの実装形態においてのみ正方形ブロックのフィルタ選択に表１を使用する。これは、正方形ブロックよりも非正方形ブロックの方が表１の効果が低いためである。別の実装形態では、ブロックのエッジ寸法の代わりに、ブロックの寸法の組み合わせをテーブルへの入力として使用し得る。ブロックの寸法の組み合わせは、ブロックの高さおよび幅の合計であってよく、本明細書では予測高さおよび予測幅とも呼ばれる。例えば、予測高さおよび予測幅は、画素において指定され得る。
【００８２】
以下の表３は、このような代替実装形態の例である。
【００８３】
【表３】
0006858277.tif 000004
以下の表４は、このような代替実装形態の別の例である。
【００８４】
【表４】
0006858277.tif 000005
表１と同様に、表３および表４における角度デルタ、予測ブロックの寸法、および対応するフィルタ強度の値は、示されている値とは異なる場合がある。入力としてのイントラ予測モード（角度デルタで表される）および予測ブロックサイズ（ブロックエッジ寸法またはブロックの幅および高さの合計で表される）の組み合わせを反映するデータのグループ化と、出力としてのそれらに関連するフィルタ強度（またはフィルタ）は本明細書の表に含まれているが、その入力および出力を対にする任意の他の配置またはグループ化が可能である。
【００８５】
いくつかの実装形態では、６０２においてフィルタを決定することは、現在のブロックの少なくとも１つの近隣のブロックの予測モードに基づいてフィルタを決定することを含み得る。少なくとも１つの近隣のブロックの予測モードに基づいてフィルタを決定することは、現在のブロックの左の１つまたは複数のブロック、現在のブロックの上方の１つまたは複数のブロック、または現在のブロックの左の１つまたは複数のブロックおよび上方の１つまたは複数のブロックのイントラ予測モードを決定することを含み得る。少なくとも１つの近隣のブロックの予測モードに基づいてフィルタを決定することは、定義された数の近隣のブロックが第１の予測モードを使用する場合にフィルタを決定するための第１の手法を使用すること、そうでない場合にはフィルタを決定するための第２の手法を使用することをさらに含み得る。第１の手法は、イントラ予測モードおよび予測ブロックサイズのそれぞれのフィルタとのペアリングの第１のグループから第１のフィルタを選択することを含み得る。ペアリングの第１のグループは、例えば表３である。第２の手法は、イントラ予測モードおよび予測ブロックサイズのそれぞれのフィルタとのペアリングの第２のグループから第２のフィルタを選択することを含み得る。ペアリングの第２のグループは、例えば表４である。
【００８６】
定義された数の近隣のブロックは、１つまたは複数のブロックであり得る。考慮される近隣のブロックの予測モードは、イントラ予測モードであり得る。現在のブロックが参照画素のより大きなフィルタリングの恩恵を受ける可能性が高いことを近隣のブロックの予測モードが示す場合、比較的強いフィルタを使用するペアリングのグループが選択され得る。そうでない場合、比較的弱いフィルタを使用するペアリングのグループが選択され得る。一例では、ブロックが滑らかな勾配を有することを示す予測モードを使用して、１つまたは複数の近隣のブロックが符号化される場合、現在のブロックは、より大きなフィルタリングの恩恵を受ける可能性が高い。ＡＶ１コーデックでは、このような予測モードは、SMOOTH_PRED、SMOOTH_H_PRED、およびSMOOTH_V_PREDイントラモードを含む。この例では、現在のブロックの左のブロックまたは現在のブロックの上方のブロック、あるいはその両方が、SMOOTH_PRED、SMOOTH_H_PRED、およびSMOOTH_V_PREDで構成されるグループからのイントラ予測モードを使用する場合、フィルタは表４を使用して決定される。そうでない場合、フィルタは表３を使用して決定される。
【００８７】
６０４において、プロセス６００は、フィルタを使用して、参照画素をフィルタリングする。フィルタリングは、本明細書では修正された画素または修正されたエッジ画素とも呼ばれる修正された参照画素をもたらす。フィルタリングは、図８を参照してさらに説明される。
【００８８】
図８は、本開示の実装形態による周辺または参照画素のフィルタリングの例のダイアグラム８００である。ダイアグラム８００は、周辺画素８０２を識別する。周辺画素８０２は、６０２においてプロセス６００によって決定されたフィルタおよび／またはフィルタ強度に基づいてフィルタリングされる。フィルタリングは、修正された画素８１２をもたらす。周辺画素８０２は、図７の第１の画素７０４および／または第２の画素７０６であり得る。
【００８９】
フィルタ強度がゼロの場合、プロセス６００は８０４においてフィルタリングをバイパスする。すなわち、プロセス６００は、周辺画素のフィルタリングを実行しない。従って、修正された画素８１２は、周辺画素８０２と同じである。フィルタ強度が１である場合、修正された画素８１２は、８０６において、周辺画素に重み（１，２，１）を有する３タップフィルタを適用することから生じ得る。フィルタ強度が２である場合、重み（５，６，５）を有する３タップフィルタが、８０８において周辺画素に適用され、修正された画素８１２を生成する。フィルタ強度が３である場合、プロセス６００は、８１０において重み（２，４，４，４，２）を有する５タップフィルタを周辺画素に適用して、修正された画素８１２を生成する。あるいは、フィルタ強度が３である場合、重み（５，６，５）を有する３タップフィルタが選択され得る。
【００９０】
一実装形態では、フィルタは、フィルタ強度に基づいて複数回適用され得る。例えば、フィルタ強度が３に等しいときに（５，６，５）フィルタが選択された場合、そのフィルタは、２回適用されて、修正された画素８１２を取得できる。すなわち、フィルタは、最初に周辺画素８０２に適用され、中間画素をもたらし、次に中間画素に適用されて、修正された画素８１２を得る。
【００９１】
本明細書でフィルタの適用とも呼ばれるフィルタリングの例が提供される。一般に、すべてのエッジ予測子（本願明細書では参照画素とも呼ばれる）がフィルタリングされ得る。以下で説明するように、左上の画素（図７の画素７１６など）、拡張サンプル（図７の拡張画素７１８など）、および最後に使用可能な上方／上部画素（図７の画素７１０など）および左の画素（図７の画素７２２など）は、フィルタリングされなくてもよい。
【００９２】
８０８において、フィルタ強度が２の場合に（５，６，５）フィルタを図７の画素７２４に適用することは、次のように実行される。
【００９３】
【数１】
0006858277.tif 000006
画素のフィルタリングでは、フィルタリングされる画素が隣接する画素の中央にくるように、他の隣接する画素を使用できる。すなわち、サイズｎのフィルタ（すなわち、ｎタップフィルタ）に対し、プロセス６００は、予測される画素の各側で（ｎ−１）／２画素を使用することができる。例えば、３タップフィルタに対し、１（すなわち、（３−１）／２）個の画素が、フィルタリングされる画素の各側で使用され得る。本例では、画素７２４は、画素７１４と画素７２５との間の中心にある。画素をフィルタリングするのに十分な数の隣接する画素が利用できない場合、プロセス６００は、その画素のフィルタリングを除外することができる。例えば、画素７２２は上方の近隣の画素７３６を有するが、下方の近隣の画素は有していない。従って、プロセス６００は、画素７２２のフィルタリングを除外することができる。そのような場合、８０４に関して説明したように、画素７２２のフィルタリングはバイパスされる。すなわち、プロセス６００は、周辺画素が、現在のブロックの上方または下方の行（または左または右の列）であり、周辺画素が、少なくとも（ｎ−１）／２個の隣接する左の周辺画素または右の周辺画素（または周辺画素の上方または下方の隣接する周辺画素）を有しない場合、複数の周辺画素のうちのある周辺画素をフィルタリングから除外する（すなわち、バイパスする）。一部の実装形態では、利用可能な画素が不十分な場合、最初または最後の利用可能な画素が拡張され得る。例えば、画素７０８が５タップフィルタでフィルタリングされる場合、画素７１６の値は、左に１ポジション拡張され（複製されるとも言われる）、必要な追加値を作成できる。
【００９４】
画素７１０のフィルタリングは、バイパスされ得る。画素７１０は、左の近隣の画素７３８を有する。しかしながら、右の近隣の画素７４０は、拡張画素であるため（その値が画素７１０と同じであることを意味する）、プロセス６００は、画素７１０のフィルタリングをバイパスすることができる。あるいは、プロセス６００は、前述のように左の近隣の画素７３８および右の近隣の画素７４０を使用して画素７１０をフィルタリングすることができる。
【００９５】
一例では、コーナー画素７１６のようなコーナー画素のフィルタリングは、バイパスされ得る。この画素は、ゾーン１またはゾーン３のイントラ予測モードのいずれにおいても使用されないため、コーナー画素のフィルタリングをバイパスするかどうかは、現在のブロックのイントラ予測モードに基づき得る。例えば、イントラ予測モードがゾーン２である場合、コーナー画素はフィルタリングされ得る。コーナー画素は、隣接する第１の画素および隣接する左の画素を使用してフィルタリングされ得る。例えば、コーナー画素７１６は、画素７０８（例えば、その隣接する水平画素）および画素７１２（例えば、その隣接する垂直画素）を使用してフィルタリングされ得る。第１の画素（第１の画素７０４など）が現在のブロックの上方の水平な列を形成し、第２の画素（第２の画素７０６など）が現在のブロックの左の垂直な列を形成する場合、コーナー画素７１６は、上で簡単に述べたように、左上の画素（ｕｐｐｅｒ−ｌｅｆｔｐｉｘｅｌまたはｔｏｐ−ｌｅｆｔ ｐｉｘｅｌ）と呼ばれ得る。上方および／または左のエッジの参照画素がフィルタリングされた後に、コーナー画素がフィルタリングされる可能性がある。コーナー画素が、任意の他の画素よりも前にフィルタリングされることがより望ましい。
【００９６】
図８には示されていないが、「アップ」と指定されたフィルタ強度の場合、周辺画素８０２は、アップサンプリング／アップサンプルフィルタを使用してアップサンプリングされ、修正された画素８１２を生成することができる。アップサンプリングフィルタは、４画素の長さを有するブロックエッジのための２×アップサンプルフィルタであり得る。このフィルタを使用して、エッジごとに８個のハーフサンプル位置を補間できる。４タップフィルタ（−１，９，９，−１）が使用され得る。エッジに対するアップサンプリングを実装できる擬似コードが続き、ｅｄｇｅ［９］は、第１のエッジまたは第２のエッジに沿った参照画素を含み、ｕｐｓａｍｐｌｅ［ｉ］は、現在の画素ｉのアップサンプリングされた値を含み、ｕｐｓａｍｐｌｅ［８］は、修正された画素８１２などの修正された画素を含む。
【００９７】
【数２】
0006858277.tif 000007
関数ｒｏｕｎｄ（）は、より一般的には、ｒｏｕｎｄ（ｘ）−（ｘ＋ｃｓｕｍ／２）／ｃｓｕｍとして定義でき、ここで、ｃｓｕｍは、フィルタ係数の合計である。アップサンプリングフィルタが使用される場合、クリッピング関数を適用して、出力値を画素範囲（例えば、８，１０，または１２ビット）に制限できる。クリッピング関数は、ｒｏｕｎｄ（）関数の一部として適用され得る。本明細書で説明されるアップサンプリングフィルタの例では、−１の係数により、フィルタリングされた値が範囲を超えることを可能とする。
【００９８】
６０６において、プロセス６００は、イントラ予測モードおよび修正された参照画素（図８の修正された画素８１２など）を使用して、現在のブロックの予測ブロックを生成する。
【００９９】
前述のように、複数のイントラ予測モードが利用可能である。現在のブロックのイントラ予測モードは、いくつかのまたはすべての利用可能なイントラおよびインター予測モードで現在のブロックを符号化することのビットコスト（レート）を、それぞれの予測モードを使用して現在のブロックを符号化することからもたらされるエラー（現在のブロックと比較した再構成されたブロックの歪み）と比較するレート歪み計算を介してプロセス６００の前に好ましくは選択される。予測ブロックを生成するために選択される予測モードは、一般に、レート歪み値が最小の予測モードである。
【０１００】
利用可能な複数のイントラ予測モードは、方向性／角度イントラ予測モード、および角度または方向に従って画素を予測しないイントラ予測モードの両方を含む。プロセス６００は、決定された予測モードが方向性／角度イントラ予測モードである場合に生じるステップを説明している。いくつかの実装形態では、８つの方向性／角度イントラ予測モードのみが利用可能であり、これは、例えば、４５、６３、９０、１１７、１３５、１５３、１８０、および２０７度の予測角度を有するモードを含み、これらのベース予測角度の各々は、それぞれのベース方向性モードに関連し得る。他の実装形態では、追加の方向性／角度イントラ予測モードが利用可能である。例えば、各ベース方向性モードに対してデルタパラメータを追加することで、追加の予測角度がサポートされ得る。追加の予測角度は、次のように定義され得る。
【０１０１】
【数３】
0006858277.tif 000008
この定式化では、ｎｏｍｉｎａｌ＿ａｎｇｌｅはベース方向性モードの角度に対応し、ａｎｇｌｅ＿ｄｅｌｔａは定義された範囲内の整数であり、ａｎｇｌｅ＿ｓｔｅｐは整数値である。変数ａｎｇｌｅ＿ｄｅｌｔａは、上記のように計算された角度デルタとは異なり、例では、ａｎｇｌｅ＿ｄｅｌｔａは［−３，３］の事前定義された範囲にある。変数ａｎｇｌｅ＿ｓｔｅｐも事前定義され得る。変数ｎｏｍｉｎａｌ＿ａｎｇｌｅが９０度、変数ａｎｇｌｅ＿ｄｅｌｔａが−２、変数ａｎｇｌｅ＿ｓｔｅｐが３の例では、イントラ予測モードに対する実際の予測角度は、９０＋（−２＊３）＝８４度である。追加の方向性モードの使用は、特定のブロックサイズに対しては無効化され得る。例えば、８×８画素よりも小さいブロックは、任意のベース方向性モードにわたり追加の方向性モードを使用することを許可されない場合がある。変数ａｎｇｌｅ＿ｄｅｌｔａおよびａｎｇｌｅ＿ｓｔｅｐは、より多くの角度、従ってより多くの方向性モードが、より大きなブロックに対して利用できるように定義され得る。例えば、ａｎｇｌｅ＿ｄｅｌｔａに対する［−３，３］の事前定義された範囲と、ａｎｇｌｅ＿ｓｔｅｐに対する値３は、５６個の角度を提供する。これらの値は、１６×１６画素以上のブロックサイズに制限され得る。この例では、１６×１６画素未満のブロックサイズでは、より少ない角度が使用可能であり得る。変数ａｎｇｌｅ＿ｄｅｌｔａが［−２，２］の範囲を有し、ａｎｇｌｅ＿ｓｔｅｐが４の値を有する場合、結果として角度が少なくなる組み合わせが１つ生じる。この組み合わせは、４０個の角度をもたらす。
【０１０２】
予測ブロックを生成するために使用され得る擬似コードの一例は次のとおりである。この例では、前述の修正された画素８１２を使用して４×４予測ブロックが生成される（ｐｒｅｄ［１６］）。
【０１０３】
【数４】
0006858277.tif 000009
符号化器によって実行される場合、プロセス６００は、符号化されたビットストリーム（図４の圧縮されたビットストリーム４２０など）において、現在のブロックの参照画素にフィルタを適用するインジケータ（例えば、１つまたは複数の構文要素）を符号化することができる。インジケータは、ブロック、フレーム、スライス、および／またはタイルヘッダに符号化され得る。例えば、インジケータは、現在のブロックの予測から生じる残差ブロックのヘッダに符号化されてもよい。復号化器によって実行される場合、プロセス６００は、符号化されたビットストリーム（例えば、図５の圧縮されたビットストリーム４２０）から、現在のブロックの参照画素にフィルタを適用するためのインジケータを復号化することができる。例えば、インジケータは、１つまたは複数のフィルタ、フィルタ強度、フィルタの重み、またはそれらの組み合わせを識別できる。インジケータは、復号化器がイントラ予測エッジフィルタリングを適用することを通知できる。そのような場合、復号化器は、プロセス６００を実行して、現在のブロックを表す符号化されたビットストリームから復号化された現在の残差を復号化するための予測ブロックを生成することができる。例えば、インジケータは、フィルタ強度を変調するよう復号化器に示すタイルレベルまたはブロックレベルのパラメータであり得る。復号化器は、量子化パラメータを使用して変調を実行できる。
【０１０４】
インジケータに加えて、符号化器は、現在のブロックを復号化するために、（例えば、イントラ／インター予測ステージ５０８で）予測ブロックを生成するための復号化器による使用のために、（例えば、イントラ／インター予測ステージ４０２で）現在のブロックを予測するために使用された予測モードをビットストリームに符号化してもよい。例えば、符号化器は、ベース方向性モードの第２のインジケータを符号化できる。追加の方向性モードが現在のブロックで利用可能であり、現在のブロックの予測に使用される場合、符号化器は、ａｎｇｌｅ＿ｄｅｌｔａの値の定義された範囲内でａｎｇｌｅ＿ｄｅｌｔａの値をコーディングすることもできる。値は、ブロックのヘッダ（すなわち、残差ブロックのヘッダ）、ブロックが配置されているスライス、および／またはブロックが配置されているフレームにコーディングされ得る。ａｎｇｌｅ＿ｄｅｌｔａのエントロピーコーディングは、本明細書で適応確率モデルとも呼ばれる均一で非適応の確率モデルを使用して実行され得る。いくつかの実装形態では、このモデルは、コンテキストモデルに置き換えられ得る。コンテキストモデルは、例えば、イントラ予測モードのコンテキスト（例えば、現在のブロックが、垂直または水平角度によって支配される方向性予測モードを使用して予測されるかどうか、すなわち、方向性予測モードの角度が、それぞれ９０度または１８０度に近いか）、およびイントラ予測モードの他のブロックによる相対的な使用に応じて変化し得る。一実装形態によれば、以下のコードは、ａｎｇｌｅ＿ｄｅｌｔａのエントロピーコーディングのためのコンテキストモデル（すなわち、不均一な適応累積分布関数（ｃｄｆ））を表す。
【０１０５】
【数５】
0006858277.tif 000010
ここで、ＤＩＲＥＣＴＩＯＮＡＬ＿ＭＯＤＥＳは、ベース方向性モードの数、ここでは定数８であり、利用可能なａｎｇｌｅ＿ｄｅｌｔａ値に基づくＭＡＸ＿ＡＮＧＬＥ＿ＤＥＬＴＡは、この例では３に等しい。
【０１０６】
一例では、コンテキストモデルのサイズは、５６ワードである（これは、８個のベース方向性モードに７個のａｎｇｌｅ＿ｄｅｌｔａ値を掛けたものに等しい）。コンテキストは、以前にコーディングされたブロックを使用して適応する。コンテキストは、各キーフレームの開始時にデフォルトｃｄｆにリセットされ得る。デフォルトｃｄｆは、確率の表により表され得る。デフォルトのｃｄｆの一例は次のとおりである。
【０１０７】
【数６】
0006858277.tif 000011
関数ＡＯＭ＿ＩＣＤＦ（）は、ｃｄｆを反転して、０から開始して３２７６８まで増加する代わりに、３２７６８から開始して０に減少するようにする。
【０１０８】
上述の符号化および復号化の態様は、いくつかの符号化および復号化技術を示す。しかしながら、符号化および復号化は、特許請求の範囲で使用されるそれらの用語として圧縮、圧縮解除、変換、または任意の他の処理またはデータの変更を意味し得ることを理解されたい。
【０１０９】
本明細書では、「例」または「実装形態」という用語は、例、事例、または例証として用いられることを意味するために使用される。本明細書において「例」または「実装形態」と記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」または「実装形態」という言葉の使用は、具体的な方法で概念を提示することを意図している。本出願で使用される場合、用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。即ち、他に明記されていない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」とは、任意の自然な包含的置換（ｎａｔｕｒａｌｉｎｃｌｕｓｉｖｅ ｐｅｒｍｕｔａｔｉｏｎｓ）を意味することを意図する。即ち、「ＸはＡまたはＢを含む」は、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合のいずれにおいても満足される。さらに、本出願および添付の特許請求の範囲で使用される冠詞「ａ」および「ａｎ」は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。さらに、「実装形態」または「一実装形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実装形態を意味することを意図するものではない。
【０１１０】
送信局１０２および／または受信局１０６（ならびに、符号化器４００および復号化器５００が含む、それに記憶され、かつ／またはそれによって実行されるアルゴリズム、方法、命令など）の実装形態は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃｉｎｔｅｇｒａｔｅｄ ｃｉｒｃｕｉｔｓ）、プログラマブル論理アレイ、光プロセッサ、プログラマブル論理コントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。用語「信号」および「データ」は互換的に使用される。さらに、送信局１０２および受信局１０６の一部は、必ずしも同じ方法で実装される必要はない。
【０１１１】
さらに、一態様では、例えば、送信局１０２または受信局１０６は、実行時に、本明細書に記載された個々の方法、アルゴリズム、および／または命令をのうちのいずれかを実行するコンピュータプログラムを備えたコンピュータまたはプロセッサを使用して実装され得る。加えて、または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ／プロセッサを利用することができる。
【０１１２】
送信局１０２および受信局１０６は、例えば、ビデオ会議システム内のコンピュータ上で実装され得る。あるいは、送信局１０２はサーバ上で実装されてもよく、受信局１０６はサーバとは別のハンドヘルド通信デバイスのようなデバイス上で実装されてもよい。この場合、送信局１０２は、符号化器４００を使用してコンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。通信デバイスは、復号化器５００を使用して符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上に局所的に格納されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号化することができる。他の送信局１０２および受信局１０６の実装スキームが利用可能である。例えば、受信局１０６は、ポータブル通信デバイスではなく、一般に固定のパーソナルコンピュータであってもよく、かつ／または符号化器４００を含むデバイスは、復号化器５００を含んでもよい。
【０１１３】
さらに、本開示の実装形態の全部または一部は、例えば有形のコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって、またはそれに関連して使用するために、プログラムを有形的に収容、格納、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【０１１４】
上述した実施形態、実装形態、および態様は、本開示の理解を容易にするために記載されており、本開示を限定するものではない。一方、本開示は、添付の特許請求の範囲内に含まれる様々な改変および均等の構成を包含することを意図しており、その範囲は、法律で許容されるようなすべての改変および均等の構造を包含するように最も広い解釈が与えられるべきである。
【図１】
0006858277.tif 000012
【図２】
0006858277.tif 000013
【図３】
0006858277.tif 000014
【図４】
0006858277.tif 000015
【図５】
0006858277.tif 000016
【図６】
0006858277.tif 000017
【図７】
0006858277.tif 000018
【図８】
0006858277.tif 000019
【図９Ａ】
0006858277.tif 000020
【図９Ｂ】
0006858277.tif 000021
【図９Ｃ】
0006858277.tif 000022
【図１０Ａ】
0006858277.tif 000023
【図１０Ｂ】
0006858277.tif 000024