(57)【要約】  復号デバイスによって実施されるコーディングの方法は、ビットストリームを取得するステップと、ビットストリームに従って現在のブロックに対するインジケータの値を取得するステップと、インジケータの値およびあらかじめ定められたルックアップテーブルに従って、現在のブロックに対する第1のパラメータの値および現在のブロックに対する第2のパラメータの値を取得するステップと、第1のパラメータの値および第2のパラメータの値に従って、現在のブロックに位置するサンプルに対するサンプル距離の値を取得するステップと、サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得するステップとを有する。
2021531682.tif 000002
【特許請求の範囲】
【請求項１】
復号デバイスによって実施されるコーディングの方法であって、
ビットストリームを取得するステップと、
前記ビットストリームに従って現在のブロックに対するインジケータの値を取得するステップと、
前記インジケータの値およびあらかじめ定められたルックアップテーブルに従って、前記現在のブロックに対する第1のパラメータの値および前記現在のブロックに対する第2のパラメータの値を取得するステップと、
前記第1のパラメータの値および前記第2のパラメータの値に従って、前記現在のブロックに位置するサンプルに対するサンプル距離の値を取得するステップと、
前記サンプルに対する前記サンプル距離の値に従って、前記サンプルに対する予測値を取得するステップと
を有する方法。
【請求項２】
前記第1のパラメータが、前記現在のブロックの区分のための角度を表す、請求項1に記載の方法。
【請求項３】
前記第2のパラメータが、前記現在のブロックの区分のための距離を表す、請求項1または2に記載の方法。
【請求項４】
前記第2のパラメータが、幾何学的区分の距離インデックスを指定し、または前記第2のパラメータが、分離線から前記現在のブロックの中心までの距離を記述する、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記サンプルに対する前記サンプル距離の値に従って、前記サンプルに対する予測値を取得する前記ステップが、
前記サンプル距離の値に従って2つの重み係数を計算するステップと、
第1の予測値、第2の予測値、および前記2つの重み係数に従って、前記サンプルに対する前記予測値を取得するステップと
を含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記サンプル距離の値が、前記サンプルから分離線までの水平距離、または垂直距離、または前記水平距離と前記垂直距離の組合せを表し、前記分離線が、コーディングブロックを2つのサブブロックに分割するために使用される、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記あらかじめ定められたルックアップテーブルが、第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの前記第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表す場合、前記ペアのうちの対応する前記第2のパラメータが、前記現在のブロックの中心から0サンプルの距離を表さない、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記あらかじめ定められたルックアップテーブルが、第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの前記第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応しない角度を表し、前記ペアのうちの対応する前記第2のパラメータが、前記現在のブロックの中心から0サンプルの距離を表す、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記あらかじめ定められたルックアップテーブルが、第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの前記第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表し、前記ペアのうちの対応する前記第2のパラメータが、前記現在のブロックの中心から0サンプルの距離を表す、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
請求項1から9のいずれか一項に記載の方法を実行するための処理回路を備える、デコーダ。
【請求項１１】
デコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに接続され、前記プロセッサによる実行のためのプログラムを記憶する、非一時的コンピュータ可読記憶媒体と
を備え、
前記プログラムは、前記プロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法を実行するように前記デコーダを構成する、デコーダ。
【請求項１２】
符号化デバイスによって実施されるコーディングの方法であって、
第1のパラメータの値および第2のパラメータの値を選択するステップと、
前記第1のパラメータの値、前記第2のパラメータの値、およびルックアップテーブルに従ってインデックス値を取得するステップと、
前記インデックス値をビットストリームへと符号化するステップと
を有する方法。
【請求項１３】
コーディングブロックの中のサンプルに対するサンプル距離を計算するステップと、
計算された前記サンプル距離に従って前記サンプルに対応する重み係数を計算するステップと、
第1の予測値、第2の予測値、および前記重み係数に従って、前記サンプルに対する合成予測値を計算するステップと
をさらに有する、請求項12に記載の方法。
【請求項１４】
エンコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに接続され、前記プロセッサによる実行のためのプログラムを記憶する、非一時的コンピュータ可読記憶媒体と
を備え、
前記プログラムは、前記プロセッサによって実行されると、請求項12または13に記載の方法を実行するように前記エンコーダを構成する、エンコーダ。
【請求項１５】
請求項1から9および12から13のいずれか一項に記載の方法を実行するためのプログラムコードを備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願(開示)の実施形態は、一般に、ピクチャ処理の分野に関し、より詳細には、サブブロック区分モードを使用した予測に関する。
【背景技術】
【０００２】
ビデオコーディング(ビデオ符号化および復号)は、広範囲のデジタルビデオ用途、たとえばデジタルTV放送、インターネットおよびモバイルネットワークを介したビデオ送信、ビデオチャットなどのリアルタイム会話アプリケーション、ビデオ会議、DVDおよびBlu-ray(登録商標)ディスク、ビデオコンテンツ取得および編集システム、ならびにセキュリティ用途のカムコーダにおいて使用される。
【０００３】
比較的短いビデオであってもそれを描画するために必要なビデオデータの量はかなり多くなることがあり、データがストリーミングされるべきであるとき、または帯域幅容量が限られた通信ネットワークを介して別様に通信されるべきであるときには、困難をもたらすことがある。したがって、一般に、ビデオデータは、現代の遠隔通信ネットワークを介して通信される前に圧縮される。メモリリソースが限られていることがあるので、ビデオがストレージデバイスに記憶されるときには、ビデオのサイズも問題となり得る。ビデオ圧縮デバイスはしばしば、送信または記憶の前にビデオデータをコーディングするためにソースにおけるソフトウェアおよび/またはハードウェアを使用し、それにより、デジタルビデオ画像を表現するために必要なデータの量を減らす。次いで、圧縮されたデータは、ビデオデータを復号するビデオ解凍デバイスによって宛先において受信される。限られたネットワークリソース、およびより高いビデオ品質に対する高まり続ける需要により、ピクチャ品質をほとんどまたはまったく犠牲にすることなく圧縮比を改善する、改善された圧縮および解凍技法が望まれる。
【発明の概要】
【課題を解決するための手段】
【０００４】
本出願の実施形態は、独立請求項に従った符号化および復号のための装置と方法を提供する。
【０００５】
前述のおよび他の目的は、独立請求項の主題によって達成される。さらなる実装形式が、従属請求項、説明、および図面から明らかである。
【０００６】
本発明の第1の態様は、復号デバイスによって実施されるコーディングの方法を提供し、この方法は、ビットストリームを取得するステップと、ビットストリームに従って現在のブロックに対するインジケータの値を取得するステップと、インジケータの値およびあらかじめ定められたルックアップテーブルに従って、現在のブロックに対する第1のパラメータの値および現在のブロックに対する第2のパラメータの値を取得するステップと、第1のパラメータの値および第2のパラメータの値に従って、現在のブロックに位置するサンプルに対するサンプル距離の値を取得するステップと、サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得するステップとを有する。
【０００７】
本発明の実施形態によれば、ブロックを区分するためのパラメータ(たとえば、角度パラメータ、距離パラメータなど)は、あらかじめ定められたルックアップテーブルに記憶されるので、これらのパラメータの実際の値は、ビットストリームにおいて送信される必要はなく、これらのパラメータの値は、ビットストリームにおいてコーディングされる指示値に従って取得される。したがってコーディング効率が改善され得る。
【０００８】
図15に示されるように、復号デバイスによって実施されるコーディングの方法が開示され、この方法は、S1501:ビットストリームを取得するステップを有する。
【０００９】
ビットストリームは、ワイヤレスネットワークまたは有線ネットワークに従って取得され得る。ビットストリームは、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、マイクロ波、Wi-Fi、Bluetooth(登録商標)、LTE、もしくは5Gなどのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信され得る。
【００１０】
ある実施形態では、ビットストリームは、1つまたは複数のコーディングされたビデオシーケンス(CVS)を形成するアクセスユニット(AU)のシーケンスの表現を成す、たとえば、ネットワーク抽象化レイヤ(NAL)ユニットストリームまたはバイトストリームの形態の、ビットのシーケンスである。
【００１１】
いくつかの実施形態では、復号プロセスでは、デコーダ側がビットストリームを読み取ってビットストリームから復号されたピクチャを導き、符号化プロセスでは、エンコーダ側がビットストリームを生成する。
【００１２】
普通は、ビットストリームは、シンタックス構造によって形成されるシンタックス要素を含む。シンタックス要素:ビットストリームにおいて表現されるデータの要素である。
【００１３】
シンタックス構造:指定された順序でビットストリームにおいて一緒に存在する0個以上のシンタックス要素である。
【００１４】
具体的な例では、ビットストリームフォーマットは、ネットワーク抽象化レイヤ(NAL)ユニットストリームとバイトストリームとの関係を指定し、それらのいずれもがビットストリームと呼ばれる。
【００１５】
ビットストリームは、たとえば、NALユニットストリームフォーマットまたはバイトストリームフォーマットという、2つのフォーマットのうちの1つであり得る。NALユニットストリームフォーマットは、概念的にはより「基本的な」タイプである。NALユニットストリームフォーマットは、NALユニットと呼ばれるシンタックス構造のシーケンスを含む。このシーケンスは復号順に並べられる。NALユニットストリームの中のNALユニットの復号順序(および内容)に対して課される制約がある。
【００１６】
バイトストリームフォーマットは、復号順にNALユニットを並べて、各NALユニットの先頭に開始コードプレフィックスおよび0個以上の値0のバイトを付加してバイトのストリームを形成することによって、NALユニットストリームフォーマットから構築され得る。NALユニットストリームフォーマットは、このバイトのストリーム内の固有の開始コードプレフィックスパターンの位置を探すことによって、バイトストリームフォーマットから抽出され得る。
【００１７】
この条項は、ビットストリームを介して与えられる、ソースと復号されたピクチャとの関係の一形態を指定する。
【００１８】
ビットストリームによって表されるビデオソースは、復号順のピクチャのシーケンスである。
【００１９】
ソースおよび復号されたピクチャは各々、1つまたは複数のサンプルアレイからなる。
-  ルマ(Y)のみ(モノクローム)
-  ルマおよび2つのクロマ(YCbCrまたはYCgCo)
-  緑、青、および赤(GBR、RGBとしても知られている)
-  他の指定されないモノクロームまたは三刺激色サンプリング(たとえば、YZX、XYZとしても知られている)を表すアレイ
【００２０】
これらのアレイと関連付けられる変数および用語は、ルマ(またはLまたはY)およびクロマと呼ばれ、2つのクロマアレイは、使用されている実際の色表現方法にかかわらず、CbおよびCrと呼ばれる。使用されている実際の色表現方法は、ITU-T H.SEI|ISO/IEC23002-7において指定されるような、VUIパラメータにおいて指定されるシンタックスにおいて示され得る。
【００２１】
sps_chroma_format_idcおよびsps_separate_colour_plane_flagを通じて指定される、クロマフォーマットサンプリング構造に応じて、変数SubWidthCおよびSubHeightCがtable 2(表1)において指定される。
【００２２】
【表１】
2021531682.tif 000003
【００２３】
モノクロームサンプリングでは、1つのサンプルアレイしかなく、これは、普通はルマアレイとみなされる。
【００２４】
4:2:0サンプリングでは、2つのクロマアレイの各々が、ルマアレイの半分の高さおよび半分の幅を有する。
【００２５】
4:2:2サンプリングでは、2つのクロマアレイの各々が、ルマアレイと同じ高さおよびルマアレイの半分の幅を有する。
【００２６】
4:4:4サンプリングでは、sps_separate_colour_plane_flagの値に応じて、以下のことが当てはまる。
-  sps_separate_colour_plane_flagが0に等しい場合、2つのクロマアレイの各々が、ルマアレイと同じ高さおよび幅を有する。
-  それ以外の場合(sps_separate_colour_plane_flagが1に等しい)、3つの色平面がモノクロームのサンプリングされたピクチャとして別々に処理される。
【００２７】
S1502:ビットストリームに従って、現在のブロックに対するインジケータの値を取得する。
【００２８】
ある実施形態では、幾何学的区分マージモードの区分形状を指定するために、インジケータの値が使用される。たとえば、インジケータはmerge_gpm_partition_idx[x0][y0]であってもよく、merge_gpm_partition_idx[x0][y0]は、幾何学的区分マージモードの区分形状を指定する。アレイインデックスx0、y0は、ピクチャの左上のルマサンプルに対する、考慮されるコーディングブロックの左上のルマサンプルの相対的な位置(x0,y0)を指定する。
【００２９】
普通は、merge_gpm_partition_idx[x0][y0]の値はビットストリームから復号される。ある例では、merge_gpm_partition_idx[][]の値の範囲は、0および63を含めて、0から63である。ある例では、merge_gpm_partition_idx[][]に対する復号プロセスは「バイパス」である。
【００３０】
merge_gpm_partition_idx[x0][y0]が存在しないとき、それは0に等しいものと推測される。
【００３１】
S1503:インジケータの値およびあらかじめ定められたルックアップテーブルに従って、現在のブロックに対する第1のパラメータの値および現在のブロックに対する第2のパラメータの値を取得する。
【００３２】
一実装形態では、第1のパラメータは現在のブロックの区分のための角度(または角)を表す。
【００３３】
一実装形態では、第2のパラメータは現在のブロックの区分のための距離を表す。
【００３４】
一実装形態では、あらかじめ定められたルックアップテーブルは第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表す場合、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表さない。
【００３５】
一実装形態では、あらかじめ定められたルックアップテーブルは第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応しない角度を表し、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表す。
【００３６】
一実装形態では、あらかじめ定められたルックアップテーブルは第1のパラメータと第2のパラメータのペアを含み、
ペアのうちの第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表し、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表す。
【００３７】
一実装形態では、第2のパラメータは幾何学的区分の距離インデックスを指定し、または、第2のパラメータは、分離線から現在のブロックの中心までの距離を表す。
【００３８】
ある実施形態では、幾何学的区分モードの区分角度変数angleIdx(パラメータ1)および距離変数distanceIdx(パラメータ2)は、以下の表において指定されるようなmerge_gpm_partition_idx[xCb][yCb](インジケータ)の値に従って設定される。この実装形態では、この関係は、table 1(表2)に従って、または関数に従って実装され得ることが理解され得る。
【００３９】
【表２】
2021531682.tif 000004
【００４０】
S1504:第1のパラメータの値および第2のパラメータの値に従って、現在のブロックに位置するサンプルに対するサンプル距離の値を取得する。
【００４１】
ある実施形態では、このステップは以下を含む。
【００４２】
ステップ3.1:現在のブロックに対する角度パラメータのインデックス値(alphaNまたはangleIdx)、現在のブロックの幅の値(W)、現在のブロックの高さの値(H)を取得する。WおよびHは、サンプルの数を単位とする現在のブロックの幅および高さである。たとえば、幅と高さがともに8に等しいコーディングブロックは、64個のサンプルを含む正方形ブロックである。別の例では、WおよびHは、ルマサンプルの数を単位とする現在のブロックの幅および高さである。角度パラメータのインデックス値は、table 1(表2)を参照する上記の説明に従って取得され得る。
【００４３】
ステップ3.2:Wの値およびHの値に従って比whRatioの値を取得し、whRatioの値は、現在のコーディングブロックの幅と高さの比を表す。
【００４４】
ある例では、whRatio=H/W、またはwhRatio=W/Hである。
【００４５】
別の例では、2つの変数nCbWおよびnCbHは現在のコーディングブロックの幅および高さを指定し、変数cIdxは色成分インデックスを指定する。
【００４６】
変数nW、nH、およびwhRatioは次のように導かれる。
nW=(cIdx==0)?nCbW:nCbW*SubWidthC
nH=(cIdx==0)?nCbH:nCbH*SubHeightC
whRatio=nH/nW
【００４７】
ある例では、変数SubWidthCおよびSubHeightCはtable 2(表1)において指定される。
【００４８】
ステップ3.3:ルックアップテーブルに従ってshiftHor値を取得し、alphaの値およびwhRatioの値、ある例では、alpha(alphaNまたはangleIdx)の値およびwhRatioの値は、ルックアップテーブルのインデックス値として使用される。shiftHor値もある関数に従って取得されてもよく、alpha(alphaNまたはangleIdx)の値およびwhRatioの値は関数への入力であり、shiftHor値は関数の出力である。ある例では、関数の結果はルックアップテーブルと同様または同じである。ある例では、shiftHor値は、サンプル距離計算プロセスに対する量子化ステップサイズを表す。
【００４９】
別の例では、関数は、shiftHor=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1によって表され得る。
【００５０】
ステップ3.4:sample_distの値が、shiftHor値に従って計算される。
【００５１】
ある例では、サンプル距離(sample_dist)を計算するために、まず、変数offsetXおよびoffsetYは次のように導かれる。
【００５２】
shiftHorが0に等しい場合、次のことが当てはまる。
offsetX=(-nW)>>1
offsetY=((-nH)>>1)+
(angleIdx<16?(distanceIdx*nH)>>3:-((distanceIdx*nH)>>3))
【００５３】
それ以外の場合(shiftHorが1に等しい)、次のことが当てはまる。
offsetX=((-nW)>>1)+
(angleIdx<16?(distanceIdx*nW)>>3:-((distanceIdx*nW)>>3))
offsetY=(-nH)>>1
【００５４】
変数xLおよびyLは次のように導かれる。
xL=(cIdx==0)?x:x*SubWidthC
yL=(cIdx==0)?y:y*SubHeightC
sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+
(((yL+offsetY)<<1)+1))*disLut[displacementY]
【００５５】
変数displacementXおよびdisplacementYは次のように導かれる。
hwRatio=cbHeight/cbWidth
displacementX=angleIdx
displacementY=(angleIdx+8)%32
【００５６】
アレイdisLutは以下のtable 3(表6)において指定される。
【００５７】
いくつかの実施形態では、ある幾何学的モデルに従って、コーディングブロックの中のサンプルは、2つのサブブロックの中に位置するとみなされる。サブブロックAまたはサブブロックBは、現在のコーディングブロックの中のサンプルの一部(しかしすべてではない)を含み得る。サブブロックAまたはサブブロックBは、各サンプルのsample_distの符号に従って表され得る。sample_distは、他の段落の例および実施形態に従って取得され得る。
【００５８】
S1505:サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得する。
【００５９】
一実装形態では、サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得するステップは、
サンプル距離の値に従って2つの重み係数を計算するステップと、
第1の予測値、第2の予測値、および2つの重み係数に従って、サンプルに対する予測値を取得するステップとを含む。
【００６０】
一実装形態では、サンプル距離の値は、前記サンプルから分離線までの水平距離、または垂直距離、または水平距離と垂直距離の組合せを表し、分離線は、コーディングブロックを2つのサブブロックに分割するために使用される。
【００６１】
一例では、計算されたsample_distは、重み係数を計算するために使用され、重み係数は、前記サンプルに対応する第1の予測値および第2の予測値の組合せのために使用される。ある例では、重み係数は、sampleWeight1およびsampleWeight2と表記され、第1の予測値に対応する重みおよび第2の予測値に対応する重みを指す。
【００６２】
一例では、重み係数は次の関数に従って計算される。
weightIdxL=partFlip?32+sample_dist:32-sample_dist
wValue=Clip3(0,8,(weightIdxL+4)>>3)
【００６３】
この例では、wValueはsampleWeight1であり、8-wValueはsampleWeight2である。変数partFlipは、angleIdxの値に従って決定される。ある例では、partFlip=(angleIdx>=13&&angleIdx<=27)?0:1、またはpartFlip=(angleIdx>=13&&angleIdx<=27)?1:0である。
【００６４】
一例では、サンプル座標(x,y)における予測サンプルの合成された値は、座標(x,y)における第1の予測値、座標(x,y)における第2の予測値、sampleWeight1、およびsampleWeight2に従って計算される。
【００６５】
ある例では、予測サンプル値は次のように導かれる。
pbSamples[x][y]=Clip3(0,(1<<BitDepth)-1,(predSamplesLA[x][y]*wValue+
predSamplesLB[x][y]*(8-wValue)+offset1)>>shift1)
【００６６】
ここで、bitDepthはサンプルビット深度を表し、変数shift1はbitDepthに従って取得され、ある例では、shift1=Max(5,17-BitDepth)である。変数offset1は、shift1に従って取得され、ある例では、offset1=1<<(shift1-1)であり、predSamplesLAおよびpredSamplesLBは2つの(nCbW)x(nCbH)アレイである。
【００６７】
一実装形態では、符号化デバイスによって実施されるコーディングの方法が開示され、この方法は、
第1のパラメータの値および第2のパラメータの値を選択するステップと、
第1のパラメータの値、第2のパラメータの値、およびルックアップテーブルに従ってインデックス値を取得するステップと、
インデックス値をビットストリームへと符号化するステップとを有する。
【００６８】
エンコーダ側における各ステップの詳細は、デコーダ側における上記の例に対応する。
【００６９】
図16に示されるように、本発明の第2の態様は復号デバイス1600を提供し、復号デバイスは、
ビットストリームを取得し、ビットストリームに従って現在のブロックに対するインジケータの値を取得するように構成される、受信モジュール1601と、
インジケータの値およびあらかじめ定められたルックアップテーブルに従って、現在のブロックに対する第1のパラメータの値および現在のブロックに対する第2のパラメータの値を取得するように構成される、区分パラメータ処理モジュール1602と、
第1のパラメータの値および第2のパラメータの値に従って、現在のブロックに位置するサンプルに対するサンプル距離の値を取得するように構成される、計算モジュール1603と、
サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得するように構成される、予測モジュール1604とを備える。
【００７０】
本発明の第1の態様による方法は、本発明の第2の態様による装置によって実行され得る。上記の方法のさらなる特徴および実装形式は、本発明の第2の態様による装置の特徴および実装形式に対応する。
【００７１】
ある実施形態では、上記の実施形態および実装形態のうちの任意の1つに従って方法を実行するための処理回路を備える、デコーダ(30)またはエンコーダ(20)が開示される。
【００７２】
ある実施形態では、上記の実施形態および実装形態のうちのいずれか1つに従った方法を実行するためのプログラムコードを含むコンピュータプログラム製品が開示される。
【００７３】
ある実施形態では、
1つまたは複数のプロセッサと、
プロセッサに接続され、プロセッサによる実行のためのプログラムを記憶する、非一時的コンピュータ可読記憶媒体とを備える、デコーダまたはエンコーダであって、プログラムが、プロセッサによって実行されると、上記の実施形態および実装形態のうちのいずれか1つに従った方法を実行するようにデコーダまたはエンコーダを構成する、デコーダまたはエンコーダが開示される。
【００７４】
ある実施形態では、画像復号デバイスによって復号される符号化されたビットストリームを含む非一時的記憶媒体であって、ビットストリームが、ビデオ信号または画像信号のフレームを複数のブロックへと分割し、複数のシンタックス要素を含めることによって生成され、複数のシンタックス要素が、上記の実施形態および実装形態のうちのいずれか1つに従ったインジケータ(シンタックス)を含む、非一時的記憶媒体が開示される。
【００７５】
1つまたは複数の実施形態の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかであろう。
【００７６】
以下では、本発明の実施形態が、添付の図および図面を参照してより詳しく説明される。
【図面の簡単な説明】
【００７７】
【図１Ａ】本発明の実施形態を実装するように構成されるビデオコーディングシステムの例を示すブロック図である。
【図１Ｂ】本発明の実施形態を実装するように構成されるビデオコーディングシステムの別の例を示すブロック図である。
【図２】本発明の実施形態を実装するように構成されるビデオエンコーダの例を示すブロック図である。
【図３】本発明の実施形態を実装するように構成されるビデオデコーダの例示的な構造を示すブロック図である。
【図４】符号化装置または復号装置の例を示すブロック図である。
【図５】符号化装置または復号装置の別の例を示すブロック図である。
【図６ａ】同一位置ブロックの例を例示した図である。
【図６ｂ】空間隣接ブロックの例を例示した図である。
【図７】三角予測モードのいくつかの例を例示した図である。
【図８】サブブロック予測モードのいくつかの例を例示した図である。
【図９】ブロックの区分についてのいくつかの例を示す図である。
【図１０】ブロックの区分についてのいくつかの例を示す図である。
【図１１】ブロックの区分についてのいくつかの例を示す図である。
【図１２】ブロックの区分についてのいくつかの例を示す図である。
【図１３】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
【図１４】端末デバイスの例の構造を示すブロック図である。
【図１５】方法の実施形態が本発明に言及することを示すフローチャートである。
【図１６】装置の実施形態が本発明に言及することを示すブロック図である。
【発明を実施するための形態】
【００７８】
以下では、同一の参照符号は、別段明示的に指定されない場合、同一の、または少なくとも機能的に等価な特徴を指す。
【００７９】
以下の説明では、本開示の一部を形成し、例示として、本発明の実施形態の具体的な態様、または本発明の実施形態が使用され得る具体的な態様を示す、添付の図面に対して参照が行われる。本発明の実施形態は、他の態様において使用されてもよく、図面に示されない構造的または論理的な変化を含み得ることが理解される。したがって、以下の詳細な説明は、限定する意味で捉えられるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【００８０】
たとえば、説明される方法に関連する開示は、方法を実行するように構成される対応するデバイスまたはシステムに対しても当てはまることがあり、またはその逆も成り立つことが理解される。たとえば、1つまたは複数の具体的な方法ステップが説明される場合、対応するデバイスは、機能ユニットなどの説明された1つまたは複数の方法ステップを実行するための1つまたは複数のユニット(たとえば、1つまたは複数のステップを実行する1つのユニット、または複数のステップのうちの1つまたは複数を各々実行する複数のユニット)を、そのような1つまたは複数のユニットが明示的に説明されていなくても、または図面に示されていなくても、含み得る。一方、たとえば、機能ユニットなどの1つまたは複数のユニットに基づいて、具体的な装置が説明される場合、対応する方法は、1つまたは複数のユニットの機能を実行するための1つのステップ(たとえば、1つまたは複数のユニットの機能を実行する1つのステップ、または複数のユニットのうちの1つまたは複数の機能を各々実行する複数のステップ)を、そのような1つまたは複数のステップが明示的に説明されていなくても、または図面に示されていなくても、含み得る。さらに、本明細書で説明される様々な例示的な実施形態および/または態様の特徴は、別段具体的に述べられない限り、互いに組み合わされてもよいことが理解される。
【００８１】
ビデオコーディングは、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスの処理を通常は指す。ビデオコーディングの分野では、「ピクチャ」という用語の代わりに、「フレーム」または「画像」という用語が同義語として使用され得る。ビデオコーディング(または一般にはコーディング)は、ビデオ符号化およびビデオ復号という2つの部分を含む。ビデオ符号化は、ソース側において実行され、ビデオピクチャを表現するために(より効率的な記憶および/または送信のために)必要とされるデータの量を減らすために元のビデオピクチャを(たとえば、圧縮によって)処理することを通常は含む。ビデオ復号は、宛先側において実行され、ビデオピクチャを再構築するための、エンコーダと比較して逆の処理を通常は含む。ビデオピクチャ(または一般にピクチャ)の「コーディング」に言及する実施形態は、ビデオピクチャまたはそれぞれのビデオシーケンスの「符号化」または「復号」に関係するものと理解されるべきである。符号化部分と復号部分の組合せは、コーデック(コーディングおよびデコーディング)とも呼ばれる。
【００８２】
無損失ビデオコーディングの場合、元のビデオピクチャを再構築することができ、すなわち、再構築されるビデオピクチャは、(記憶または送信の間に送信損失または他のデータ損失がないと仮定すると)元のビデオピクチャと同じ品質を有する。有損失ビデオコーディングの場合、ビデオピクチャを表現するデータの量を減らすために、たとえば量子化によって、さらなる圧縮が実行され、これはデコーダにおいて完全に再構築することができず、すなわち、再構築されたビデオピクチャの品質は、元のビデオピクチャの品質と比較して低く、または悪い。
【００８３】
いくつかのビデオコーディング規格は、「有損失ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域における空間予測および時間予測と、変換領域における量子化を適用するための2D変換コーディングを組み合わせる)。ビデオシーケンスの各ピクチャは、重複しないブロックのセットへと通常は区分され、コーディングは、ブロックレベルで通常は実行される。言い換えると、エンコーダにおいて、たとえば、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されることになるブロック)から予測ブロックを差し引いて残差ブロックを取得し、残差ブロックを変換し変換領域における残差ブロックを量子化して送信されることになるデータの量を減らす(圧縮する)ことによって、ブロック(ビデオブロック)レベルで、ビデオが通常は処理され、すなわち符号化され、一方、デコーダにおいて、表現のために現在のブロックを再構築するために、エンコーダと比較して逆の処理が、符号化または圧縮されたブロックに適用される。さらに、エンコーダとデコーダの両方が、後続のブロックの処理、すなわちコーディングのための、同一の予測(たとえば、イントラ予測およびインター予測)および/または再構築物を生成するように、エンコーダは、デコーダ処理ループを複製する。
【００８４】
以下では、ビデオコーディングシステム10、ビデオエンコーダ20、およびビデオデコーダ30の実施形態が、図1から図3に基づいて説明される。
【００８５】
図1Aは、本出願の技法を利用し得るビデオコーディングシステム10(またはショートコーディングシステム10)などの例示的なコーディングシステム10を例示する概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(またはショートエンコーダ20)およびビデオデコーダ30(またはショートデコーダ30)は、本出願において説明される様々な例に従って技法を実行するように構成され得るデバイスの例を表す。
【００８６】
図1Aに示されるように、コーディングシステム10は、たとえば符号化されたピクチャデータ13を復号するために宛先デバイス14に、符号化されたピクチャデータ21を提供するように構成される、ソースデバイス12を備える。
【００８７】
ソースデバイス12は、エンコーダ20を備え、追加で、すなわち任意選択で、ピクチャソース16、ピクチャプリプロセッサ18などのプリプロセッサ(または前処理ユニット)18、および通信インターフェースまたは通信ユニット22を備え得る。
【００８８】
ピクチャソース16は、任意の種類のピクチャキャプチャデバイス、たとえば現実世界の写真を撮るためのカメラ、ならびに/または、任意の種類のピクチャ生成デバイス、たとえば、コンピュータアニメーションピクチャを生成するためのコンピュータグラフィクスプロセッサ、または、現実世界のピクチャ、コンピュータで生成されるピクチャ(たとえば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)、および/もしくはそれらの任意の組合せ(たとえば、拡張現実(AR)ピクチャ)を取得および/もしくは提供するための任意の種類の他のデバイスを、備えてもよく、またはそれらであってもよい。ピクチャソースは、前述のピクチャのいずれかを記憶する、任意の種類のメモリまたはストレージであってもよい。
【００８９】
プリプロセッサ18、および前処理ユニット18により実行される処理と区別して、ピクチャまたはピクチャデータ17は、生ピクチャまたは生ピクチャデータ17とも呼ばれ得る。
【００９０】
プリプロセッサ18は、(生)ピクチャデータ17を受信し、ピクチャデータ17に対して前処理を実行して、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するように構成される。プリプロセッサ18によって実行される前処理は、たとえば、トリミング、色フォーマット変換(たとえば、RGBからYCbCrへの変換)、色補正、またはノイズ除去を含み得る。前処理ユニット18は任意選択の構成要素であり得ることが理解され得る。
【００９１】
ビデオエンコーダ20は、前処理されたピクチャデータ19を受信し、符号化されたピクチャデータ21を提供するように構成される(さらなる詳細が、たとえば図2に基づいて以下で説明される)。
【００９２】
ソースデバイス12の通信インターフェース22は、符号化されたピクチャデータ21を受信し、符号化されたピクチャデータ21(またはその任意のさらなる処理されたバージョン)を、記憶または直接の再構築のために、通信チャネル13を介して、宛先デバイス14または任意の他のデバイスなどの別のデバイスに送信するように構成され得る。
【００９３】
宛先デバイス14は、デコーダ30(たとえば、ビデオデコーダ30)を備え、追加で、すなわち任意選択で、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示デバイス34を備え得る。
【００９４】
宛先デバイス14の通信インターフェース28は、符号化されたピクチャデータ21(またはその任意のさらなる処理されたバージョン)を、たとえばソースデバイス12から直接、または任意の他のソース、たとえば符号化されたピクチャデータのストレージデバイスなどのストレージデバイスから受信し、符号化されたピクチャデータ21をデコーダ30に提供するように構成される。
【００９５】
通信インターフェース22および通信インターフェース28は、直接の有線接続もしくはワイヤレス接続などのソースデバイス12と宛先デバイス14との間の直接通信リンクを介して、あるいは、有線ネットワークもしくはワイヤレスネットワークもしくはこれらの任意の組合せ、または、任意の種類のプライベートネットワークもしくはパブリックネットワークもしくはこれらの任意の種類の組合せなどの任意の種類のネットワークを介して、符号化されたピクチャデータ21または符号化されたデータ13を送信または受信するように構成され得る。
【００９６】
通信インターフェース22は、たとえば、符号化されたピクチャデータ21をパケットなどの適切なフォーマット、たとえばパケットへとパッケージングし、および/または、通信リンクもしくは通信ネットワークを介した送信のために、任意の種類の送信の符号化または処理を使用して、符号化されたピクチャデータを処理するように構成され得る。
【００９７】
通信インターフェース22の相手となる通信インターフェース28は、たとえば、送信されたデータを受信し、任意の種類の対応する送信の復号もしくは処理および/またはパッケージング解除を使用して送信データを処理し、符号化されたピクチャデータ21を取得するように構成され得る。
【００９８】
通信インターフェース22と通信インターフェース28の両方が、ソースデバイス12から宛先デバイス14を指す図1Aの通信チャネル13に対する矢印により示されるような単方向インターフェースとして、または、双方向通信インターフェースとして構成されてもよく、符号化されたピクチャデータの送信などの通信リンクおよび/またはデータ送信に関する任意の他の情報に肯定応答してそれを交換するために、たとえば、メッセージを送信して受信し、たとえば接続をセットアップするように構成され得る。
【００９９】
デコーダ30は、符号化されたピクチャデータ21を受信し、復号されたピクチャデータ31または復号されたピクチャ31を提供するように構成される(さらなる詳細は、たとえば図3または図5に基づいて以下で説明される)。
【０１００】
宛先デバイス14のポストプロセッサ32は、復号されたピクチャ31などの復号されたピクチャデータ31(再構築されたピクチャデータとも呼ばれる)を後処理して、後処理されたピクチャ33などの後処理されたピクチャデータ33を取得するように構成される。後処理ユニット32によって実行される後処理は、たとえば、色フォーマット変換(たとえば、YCbCrからRGBへの変換)、色補正、トリミング、または再サンプリング、または、たとえば、復号されたピクチャデータ31を、たとえば表示デバイス34による表示のために準備するための、任意の他の処理を含み得る。
【０１０１】
宛先デバイス14の表示デバイス34は、たとえばユーザまたは視聴者に対してピクチャを表示するための、後処理されたピクチャデータ33を受信するように構成される。表示デバイス34は、統合された、または外部の、ディスプレイもしくはモニタなどの、再構築されたピクチャを表現するための任意の種類のディスプレイであってもよく、またはそれらを備えてもよい。ディスプレイは、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、LCoS(liquid crystal on silicon)、デジタル光プロセッサ(DLP)、または任意の種類の他のディスプレイを含み得る。
【０１０２】
図1Aは、ソースデバイス12と宛先デバイス14を別々のデバイスとして図示するが、デバイスの実施形態は、ソースデバイス12と宛先デバイス14の両方、またはソースデバイス12に対応する機能と宛先デバイス14に対応する機能の両方も備え得る。そのような実施形態では、ソースデバイス12または対応する機能および宛先デバイス14または対応する機能は、同じハードウェアおよび/もしくはソフトウェアを使用して、または、別個のハードウェアおよび/もしくはソフトウェアもしくはそれらの任意の組合せによって、実装され得る。
【０１０３】
説明に基づいて当業者には明らかであるように、図1Aに示されるような、様々なユニットの機能、または、ソースデバイス12および/もしくは宛先デバイス14内での機能の存在と(厳密な)分割は、実際のデバイスおよび適用例に応じて変化し得る。
【０１０４】
エンコーダ20(たとえば、ビデオエンコーダ20)またはデコーダ30(たとえば、ビデオデコーダ30)またはエンコーダ20とデコーダ30の両方が、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、ビデオコーディング専用、またはこれらの任意の組合せなどの、図1Bに示されるような処理回路を介して実装され得る。エンコーダ20は、図2のエンコーダ20および/または本明細書で説明される任意の他のエンコーダシステムもしくはサブシステムに関して論じられたように様々なモジュールを具現化するために、処理回路46を介して実装され得る。デコーダ30は、図3のデコーダ30および/または本明細書で説明される任意の他のデコーダシステムもしくはサブシステムに関して論じられたように、様々なモジュールを具現化するために処理回路46を介して実装され得る。処理回路は、後で論じられるように様々な動作を実行するように構成され得る。図5に示されるように、技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を記憶することができ、本開示の技法を実行するための1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行することができる。ビデオエンコーダ20とビデオデコーダ30のいずれかが、たとえば図1Bに示されるように、単一のデバイスにおいて合成されたエンコーダ/デコーダ(コーデック)の一部として統合され得る。
【０１０５】
ソースデバイス12および宛先デバイス14は、任意の種類のハンドヘルドデバイスまたは固定式デバイス、たとえば、ノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビジョン、表示デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、放送受信デバイス、放送送信デバイスなどを含む、広範囲のデバイスのいずれを含んでもよく、オペレーティングシステムを使用しなくても、またはどの種類のオペレーティングシステムを使用してもよい。いくつかの場合、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。したがって、ソースデバイス12および宛先デバイス14は、ワイヤレス通信デバイスであり得る。
【０１０６】
いくつかの場合、図1Aに示されるビデオコーディングシステム10は例にすぎず、本出願の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含まない、ビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスは、データを符号化してメモリに記憶することができ、および/または、ビデオ復号デバイスは、メモリからデータを取り出して復号することができる。いくつかの例では、符号化および復号は、互いに通信せず、メモリに単にデータを符号化し、および/またはメモリからデータを取り出して復号する、デバイスによって実行される。
【０１０７】
説明の便宜上、本発明の実施形態は、たとえば、HEVC(High-Efficiency Video Coding)、または、ITU-T VCEG(Video Coding Experts Group)およびISO/IEC MPEG(Motion Picture Experts Group)のJCT-VC(Joint Collaboration Team on Video Coding)によって開発されている次世代ビデオコーディング規格であるVVC(Versatile Video coding)の参照ソフトウェアを参照して、本明細書では説明される。本発明の実施形態はHEVCまたはVVCに限定されないことを、当業者は理解するであろう。
【０１０８】
エンコーダおよび符号化方法
図2は、本出願の技法を実施するように構成される例示的なビデオエンコーダ20の概略ブロック図を示す。図2の例では、ビデオエンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、および逆変換処理ユニット212、再構築ユニット214、ループフィルタユニット220、復号ピクチャバッファ(DPB)230、モード選択ユニット260、エントロピー符号化ユニット270、および出力272(または出力インターフェース272)を備える。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、および区分ユニット262を含み得る。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示されず)を含み得る。図2に示されるようなビデオエンコーダ20は、ハイブリッドビデオエンコーダまたはハイブリッドビデオコーデックに従ったビデオエンコーダとも呼ばれ得る。
【０１０９】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260は、エンコーダ20の順方向信号経路を形成するものとして言及されることがあり、一方、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタ220、復号ピクチャバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成するものとして言及されることがあり、ビデオエンコーダ20の逆方向信号経路は、デコーダの信号経路に対応する(図3のビデオデコーダ30を参照されたい)。逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、復号ピクチャバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の「内蔵デコーダ」を形成するものとしても言及される。
【０１１０】
ピクチャおよびピクチャ区分(ピクチャおよびブロック)
エンコーダ20は、たとえば入力201を介して、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスのうちのピクチャなどのピクチャ17(またはピクチャデータ17)を受信するように構成され得る。受信されたピクチャまたはピクチャデータは、前処理されたピクチャ19(または前処理されたピクチャデータ19)でもあり得る。簡潔にするために、以下の説明はピクチャ17に言及する。ピクチャ17は、(特にビデオコーディングでは、現在のピクチャを他のピクチャ、たとえば同じビデオシーケンスすなわち現在のピクチャも含むビデオシーケンスの、以前に符号化および/または復号されたピクチャと区別するために)現在のピクチャまたはコーディングされることになるピクチャとも呼ばれ得る。
【０１１１】
(デジタル)ピクチャは、強度値を有するサンプルの2次元アレイまたはマトリックスであり、またはそのようにみなされ得る。アレイの中のサンプルは、ピクセル(pixel)(ピクチャ要素(picture element)の短縮形)またはペルとも呼ばれ得る。アレイまたはピクチャの水平方向および垂直方向(または軸)におけるサンプルの数は、ピクチャのサイズおよび/または解像度を定義する。色の表現については、通常は3つの色成分が利用され、すなわち、ピクチャは3つのサンプルアレイで表現され、またはそれらを含み得る。RGBフォーマットまたは色空間において、ピクチャは、対応する赤、緑、および青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各ピクセルは通常、輝度および色差のフォーマットまたは色空間、たとえばYCbCrで表現され、これは、Yによって示される輝度成分(Lが代わりに使用されることがある)およびCbとCrによって示される2つの色差成分を含む。輝度(または略してルマ)成分Yは、明るさまたはグレーレベル強度(たとえば、グレースケールピクチャなどにおける)を表し、一方で2つの色差(または略してクロマ)成分CbおよびCrは、色度または色情報成分を表す。したがって、YCbCrフォーマットのピクチャは、輝度サンプル値(Y)の輝度サンプルアレイ、色差値(CbおよびCr)の2つの色差サンプルアレイを含む。RGBフォーマットのピクチャは、YCbCrフォーマットへと変換(converted)または変換(transformed)されてもよく、その逆が行われてもよく、この処理は、色変換(color transformation)または色変換(color conversion)としても知られている。ピクチャがモノクロームである場合、ピクチャは輝度サンプルアレイのみを含み得る。したがって、ピクチャは、たとえば、モノクロームフォーマットではルマサンプルのアレイ、または、4:2:0、4:2:2、および4:4:4の色フォーマットではルマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであり得る。
【０１１２】
ビデオエンコーダ20の実施形態は、ピクチャ17を複数の(典型的には重複しない)ピクチャブロック203へと区分するように構成される、ピクチャ区分ユニット(図2には図示されない)を備え得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)、またはコーディングツリーブロック(CTB)、またはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)とも呼ばれ得る。ピクチャ区分ユニットは、ビデオシーケンスのすべてのピクチャに対する同じブロックサイズおよびそのブロックサイズを定義する対応するグリッドを使用し、または、ピクチャまたはピクチャのサブセットもしくはグループ間でブロックサイズを変更し、各ピクチャを対応するブロックへと区分するように構成され得る。
【０１１３】
さらなる実施形態では、ビデオエンコーダは、ピクチャ17を形成する1つの、いくつかの、またはすべてのブロックなどの、ピクチャ17のブロック203を直接受信するように構成され得る。ピクチャブロック203は、現在のピクチャブロックまたはコーディングされることになるピクチャブロックとも呼ばれ得る。
【０１１４】
ピクチャ17のように、ピクチャブロック203も、強度値(サンプル値)を有するサンプルの2次元アレイまたはマトリックスであり、またはそのようにみなされ得るが、ピクチャ17よりも次元が小さい。言い換えると、ブロック203は、たとえば、1つのサンプルアレイ(たとえば、モノクロームピクチャ17の場合はルマアレイ、または、色ピクチャの場合はルマもしくはクロマアレイ)または3つのサンプルアレイ(たとえば、色ピクチャ17の場合はルマアレイおよび2つのクロマアレイ)、または、適用される色フォーマットに応じて任意の他の数および/もしくは種類のアレイを含み得る。ブロック203の水平方向および垂直方向(または軸)のサンプルの数は、ブロック203のサイズを定義する。したがって、ブロックは、たとえば、サンプルのMxN(M列対N行)アレイ、または変換係数のMxNアレイであり得る。
【０１１５】
図2に示されるようなビデオエンコーダ20の実施形態は、ブロックごとにピクチャ17を符号化するように構成されてもよく、たとえば、符号化および予測はブロック203ごとに実行される。
【０１１６】
残差計算
残差計算ユニット204は、たとえば、ピクチャブロック203のサンプル値から予測ブロック265のサンプル値を差し引き、サンプルごとに(ピクセルごとに)サンプル領域において残差ブロック205を取得することによって、ピクチャブロック203および予測ブロック265に基づいて(予測ブロック265についてのさらなる詳細は後で与えられる)残差ブロック205(残差205とも呼ばれる)を計算するように構成され得る。
【０１１７】
変換
変換処理ユニット206は、変換領域において変換係数207を取得するために、残差ブロック205のサンプル値に対して、離散コサイン変換(DCT)または離散サイン変換(DST)などの変換を適用するように構成され得る。変換係数207は、変換残差係数とも呼ばれ、変換領域において残差ブロック205を表し得る。
【０１１８】
変換処理ユニット206は、H.265/HEVCに対して指定される変換などの、DCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較して、そのような整数近似は、ある係数によって通常はスケーリングされる。順方向変換および逆方向変換により処理される残差ブロックのノルムを維持するために、変換処理の一部として追加のスケーリング係数が適用される。スケーリング係数は通常、スケーリング係数がシフト演算に対しては2のべき乗であることなどの何らかの制約、変換係数のビット深度、正確さと実装コストのトレードオフなどに基づいて選ばれる。具体的なスケーリング係数は、たとえば、逆変換処理ユニット212による逆変換(および、たとえばビデオデコーダ30における逆変換処理ユニット312による、対応する逆変換)のために指定され、たとえば変換処理ユニット206による、エンコーダ20における順方向変換のための対応するスケーリング係数は、それに従って指定され得る。
【０１１９】
ビデオエンコーダ20(それぞれ、変換処理ユニット206)の実施形態は、たとえばビデオデコーダ30が復号のために変換パラメータを受信して使用できるように、変換パラメータ、たとえば変換または複数の変換のタイプを、たとえば直接、またはエントロピー符号化ユニット270を介して符号化もしくは圧縮された状態で出力するように構成され得る。
【０１２０】
量子化
量子化ユニット208は、たとえばスカラー量子化またはベクトル量子化を適用することによって、量子化された係数209を取得するために変換係数207を量子化するように構成され得る。量子化された係数209は、量子化された変換係数209または量子化された残差係数209とも呼ばれ得る。
【０１２１】
量子化プロセスは、変換係数207の一部またはすべてと関連付けられるビット深度を低減し得る。たとえば、nビットの変換係数は、量子化の間にmビットの変換係数へと切り捨てられてもよく、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって修正され得る。たとえば、スカラー量子化では、異なるスケーリングが、より細かいまたは粗い量子化を達成するために適用され得る。より小さい量子化ステップサイズはより細かい量子化に対応するが、より大きい量子化ステップサイズはより粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、たとえば、適用可能な量子化ステップサイズのあらかじめ定められたセットに対するインデックスであり得る。たとえば、小さい量子化パラメータは、細かい量子化(小さい量子化ステップサイズ)に対応することがあり、大きい量子化パラメータは、粗い量子化(大きい量子化ステップサイズ)に対応することがあり、またはこの逆であることがある。量子化は、ある量子化ステップサイズによる分割を含むことがあり、たとえば逆量子化ユニット210による、対応する逆量子化および/または逆の逆量子化は、その量子化ステップサイズによる乗算を含むことがある。HEVCなどのいくつかの規格に従った実施形態は、量子化ステップサイズを決定するために量子化パラメータを使用するように構成され得る。一般に、量子化ステップサイズは、分割を含む式の不動点近似を使用して量子化パラメータに基づいて計算され得る。追加のスケーリング係数が、残差ブロックのノルムを復元するための量子化および逆量子化のために導入されることがあり、これは、量子化ステップサイズおよび量子化パラメータのための式の不動点近似において使用されるスケーリングが原因で修正され得る。1つの例示的な実装形態では、逆変換および逆量子化のスケーリングが組み合わせられ得る。代替的に、カスタマイズされた量子化テーブルが使用されて、たとえばビットストリームにおいて、エンコーダからデコーダにシグナリングされ得る。量子化は有損失演算であり、量子化ステップサイズが増大するにつれて損失が増大する。
【０１２２】
ビデオエンコーダ20(それぞれ、量子化ユニット208)の実施形態は、たとえばビデオデコーダ30が復号のために量子化パラメータを受信して適用し得るように、量子化パラメータ(QP)を、たとえば直接、またはエントロピー符号化ユニット270を介して符号化された状態で出力するように構成され得る。
【０１２３】
逆量子化
逆量子化ユニット210は、たとえば、量子化ユニット208と同じ量子化ステップサイズに基づいて、またはそれを使用して、量子化ユニット208によって適用される量子化方式の逆を適用することによって、逆量子化された係数211を取得するために量子化された係数に対して量子化ユニット208の逆量子化を適用するように構成される。逆量子化された係数211はまた、逆量子化された残差係数211と呼ばれることもあり、量子化による損失による変換係数とは通常は同一ではないが、変換係数207に対応することがある。
【０１２４】
逆変換
逆変換処理ユニット212は、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換などの、変換処理ユニット206によって適用される変換の逆変換を適用して、サンプル領域において再構築された残差ブロック213(または対応する逆量子化された係数213)を取得するように構成される。再構築された残差ブロック213は、変換ブロック213とも呼ばれ得る。
【０１２５】
再構築
再構築ユニット214(たとえば、加算器または減算器214)は、たとえばサンプルごとに、再構築された残差ブロック213のサンプル値と予測ブロック265のサンプル値を加算することによって、予測ブロック265に変換ブロック213(すなわち、再構築された残差ブロック213)を加算して、サンプル領域において再構築されたブロック215を取得するように構成される。
【０１２６】
フィルタリング
ループフィルタユニット220(または略して「ループフィルタ」220)は、再構築されたブロック215をフィルタリングしてフィルタリングされたブロック221を取得するように、または一般的には、再構築されたサンプルをフィルタリングしてフィルタリングされたサンプルを取得するように構成される。ループフィルタユニットは、たとえば、ピクセル遷移を滑らかにするように、または、ビデオ品質を別様に改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、またはバイラテラルフィルタ、適応ループフィルタ(ALF)、鮮鋭化フィルタ、平滑化フィルタ、もしくは協調フィルタなどの1つまたは複数の他のフィルタ、あるいはこれらの任意の組合せなどの、1つまたは複数のループフィルタを含み得る。図2ではループフィルタユニット220はループフィルタであるものとして示されているが、他の構成では、ループフィルタユニット220は、ポストループフィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構築されたブロック221とも呼ばれ得る。
【０１２７】
ビデオエンコーダ20(それぞれ、ループフィルタユニット220)の実施形態は、たとえばデコーダ30が復号のために同じループフィルタパラメータまたはそれぞれのループフィルタを受信して適用し得るように、ループフィルタパラメータ(サンプル適応オフセット情報など)を、たとえば直接、またはエントロピー符号化ユニット270を介して符号化された状態で出力するように構成され得る。
【０１２８】
復号ピクチャバッファ
復号ピクチャバッファ(DPB)230は、ビデオエンコーダ20によってビデオデータを符号化するための、参照ピクチャ、または一般には参照ピクチャデータを記憶する、メモリであり得る。DPB230は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、種々のメモリデバイスのいずれによって形成されてもよい。復号ピクチャバッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を記憶するように構成され得る。復号ピクチャバッファ230はさらに、同じ現在のピクチャの、または以前に再構築されたピクチャなどの異なるピクチャの、以前に再構築されフィルタリングされたブロック221などの他の以前にフィルタリングされたブロックを記憶するように構成されてもよく、たとえばインター予測のために、完全な以前に再構築された、すなわち復号されたピクチャ(および対応する参照ブロックとサンプル)および/または部分的に再構築された現在のピクチャ(および対応する参照ブロックとサンプル)を提供してもよい。復号ピクチャバッファ(DPB)230はまた、1つまたは複数のフィルタリングされていない再構築されたブロック215、または再構築されたブロック215がループフィルタユニット220によってフィルタリングされない場合などには、一般にはフィルタリングされていない再構築されたサンプル、または再構築されたブロックもしくはサンプルの任意の他のさらに処理されたバージョンを記憶するように構成されてもよい。
【０１２９】
モード選択(区分および予測)
モード選択ユニット260は、区分ユニット262、インター予測ユニット244、およびイントラ予測ユニット254を備え、元のピクチャデータ、たとえば元のブロック203(現在のピクチャ17の現在のブロック203)、および再構築されたピクチャデータ、たとえば、同じ(現在の)ピクチャの、および/もしくは1つまたは複数の以前に復号されたピクチャからの、フィルタリングされたおよび/またはフィルタリングされていない再構築されたサンプルもしくはブロックを、たとえば復号ピクチャバッファ230または他のバッファ(たとえば、示されていないラインバッファ)から、受信または取得するように構成される。再構築されたピクチャデータは、予測ブロック265または予測子265を取得するために、インター予測またはイントラ予測などの予測のための参照ピクチャデータとして使用される。
【０１３０】
モード選択ユニット260は、現在のブロックの予測モード(区分なしを含む)および予測モード(たとえば、イントラまたはインター予測モード)に対する区分を決定または選択して、対応する予測ブロック265を生成するように構成されてもよく、これは、残差ブロック205の計算のために、および再構築されたブロック215の再構築のために使用される。
【０１３１】
モード選択ユニット260の実施形態は、(たとえば、モード選択ユニット260によってサポートされる、またはそれに対して利用可能であるものから)区分および予測モードを選択するように構成されてもよく、この選択は、最良の一致もしくは言い換えると最小の残差(最小の残差は送信または記憶のためのより良い圧縮を意味する)、または、最小のシグナリングオーバーヘッド(最小のシグナリングオーバーヘッドは送信または記憶のためのより良い圧縮を意味する)をもたらし、または、これらの両方を考慮し、もしくはバランスをとる。モード選択ユニット260は、レートひずみ最適化(RDO)に基づいて区分および予測モードを決定し、すなわち、最小のレートひずみをもたらす予測モードを選択するように構成され得る。この文脈における「最良」、「最小」、「最適」などの用語は、必ずしも全体的な「最良」、「最小」、「最適」などを指さず、「準最適な選択」につながる可能性があるが複雑さと処理時間を減らす、閾値または他の制約を超えることもしくは下回る値のような終了基準もしくは選択基準の満足も指し得る。
【０１３２】
言い換えると、区分ユニット262は、たとえば、四分木区分(QT)、二分木区分(BT)、もしくは三分木区分(TT)、またはこれらの任意の組合せを繰り返し使用して、ブロック203をより小さいブロック区分またはサブブロック(これが再びブロックを形成する)へと区分し、たとえば、ブロック区分またはサブブロックの各々に対する予測を実行するように構成されてもよく、モード選択は区分されたブロック203の木構造の選択を含み、予測モードはブロック区分またはサブブロックの各々に適用される。
【０１３３】
以下では、例示的なビデオエンコーダ20によって実行される区分(たとえば、区分ユニット260による)および予測処理(インター予測ユニット244およびイントラ予測ユニット254による)がより詳しく説明される。
【０１３４】
区分
区分ユニット262は、現在のブロック203を、正方形または長方形サイズのより小さいブロックなどのより小さい区分へと区分(または分割)し得る。これらのより小さいブロック(サブブロックとも呼ばれ得る)は、さらにより小さい区分へとさらに区分され得る。これは、木区分または階層的な木区分とも呼ばれ、たとえばルート木レベル0(階層レベル0、深度0)におけるルートブロックが、再帰的に区分、たとえば、木レベル1(階層レベル1、深度1)におけるノードなどの次の低い木レベルの2つ以上のブロックへと区分されてもよく、これらのブロックが、たとえば最大の木深度または最小のブロックサイズに達したことなどの終了基準が満たされたことにより区分が終了するまで、木レベル2(階層レベル2、深度2)などの次に低いレベルの2つ以上のブロックなどへと再び区分されてもよい。さらに区分されないブロックは、木のリーフブロックまたはリーフノードとも呼ばれる。2つの区分への区分を使用する木は二分木(BT)と呼ばれ、3つの区分への区分を使用する木は三項木(TT)と呼ばれ、4つの区分への区分を使用する木は四分木(QT)と呼ばれる。
【０１３５】
前に言及されたように、本明細書で使用される「ブロック」という用語は、ピクチャの部分、特に正方形または長方形の部分であり得る。たとえば、HEVCおよびVVCに関して、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)に、ならびに/または、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、もしくは予測ブロック(PB)などの対応するブロックであってもよく、またはそれらに対応してもよい。
【０１３６】
たとえば、コーディングツリーユニット(CTU)は、ルマサンプルのCTB、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、または、モノクロームピクチャもしくはサンプルをコーディングするために使用される3つの別個の色平面およびシンタックス構造を使用してコーディングされるピクチャのサンプルのCTBであってもよく、またはそれらを備えてもよい。それに対応して、コーディングツリーブロック(CTB)は、CTBへの成分の分割が区分となるような、Nの何らかの値に対するサンプルのNxNのブロックであり得る。コーディングユニット(CU)は、ルマサンプルのコーディングブロック、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するコーディングブロック、または、モノクロームピクチャもしくはサンプルをコーディングするために使用される3つの別個の色平面およびシンタックス構造を使用してコーディングされるピクチャのサンプルのコーディングブロックであってもよく、またはそれらを備えてもよい。それに対応して、コーディングブロック(CB)は、コーディングブロックへのCTBの分割が区分となるような、MとNの何らかの値に対するサンプルのMxNブロックであり得る。
【０１３７】
実施形態では、たとえばHEVCによれば、コーディングツリーユニット(CTU)は、コーディングツリーと表記される四分木構造を使用することによってCUへと分割され得る。インターピクチャ(時間)予測を使用してピクチャエリアをコーディングするか、またはイントラピクチャ(空間)予測を使用してピクチャエリアをコーディングするかの決定は、CUレベルで行われる。各CUは、PUの分割タイプに従って、1つ、2つ、または4つのPUへとさらに分割され得る。1つのPUの内部で、同じ予測処理が適用され、関連する情報はPUごとにデコーダに送信される。PU分割タイプに基づいて予測処理を適用することによって残差ブロックを取得した後で、CUは、CUに対するコーディングツリーと同様に、別の四分木構造に従って変換ユニット(TU)へと区分され得る。
【０１３８】
実施形態では、たとえば、VVC(Versatile Video Coding)と呼ばれる現在開発中の最新のビデオコーディング規格によれば、コーディングブロックを区分するためにQTBT(Quad-tree and binary tree)が使用される。QTBTブロック構造では、CUは正方形または長方形のいずれかの形状を有し得る。たとえば、コーディングツリーユニット(CTU)はまず、四分木構造によって区分される。四分木リーフノードは、二分木または三項(または三分)木構造によってさらに区分される。区分木リーフノードはコーディングユニット(CU)と呼ばれ、そのセグメント化は、さらなる区分を伴うことなく、予測および変換処理のために使用される。これは、CU、PU、およびTUがQTBTコーディングブロック構造において同じブロックサイズを有することを意味する。並行して、複数の区分、たとえば三分木区分も、QTBTブロック構造とともに使用されることが提案された。
【０１３９】
一例では、ビデオエンコーダ20のモード選択ユニット260は、本明細書で説明される区分技法の任意の組合せを実行するように構成され得る。
【０１４０】
上で説明されたように、ビデオエンコーダ20は、(所定の)予測モードのセットから最良のまたは最適な予測モードを決定または選択するように構成される。予測モードのセットは、たとえば、イントラ予測モードおよび/またはインター予測モードを含み得る。
【０１４１】
イントラ予測
イントラ予測モードのセットは、DC(または平均)モードおよび平面モードのような無指向性モード、もしくは、たとえばHEVCにおいて定義されるような指向性モードなどの35個の異なるイントラ予測モードを含んでもよく、またはDC(または平均)モードおよび平面モードのような無指向性モード、もしくは、たとえばVVCに対して定義されるような指向性モードなどの67個の異なるイントラ予測モードを含んでもよい。
【０１４２】
イントラ予測ユニット254は、イントラ予測モードのセットのうちのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するために、同じ現在のピクチャの隣接ブロックの再構築されたサンプルを使用するように構成される。
【０１４３】
イントラ予測ユニット254(または一般にはモード選択ユニット260)は、たとえばビデオデコーダ30が復号のために予測パラメータを受信して使用し得るように、符号化されたピクチャデータ21へ含めるためにシンタックス要素266の形式でイントラ予測パラメータ(または一般には、ブロックのための選択されたイントラ予測モードを示す情報)をエントロピー符号化ユニット270に出力するようにさらに構成される。
【０１４４】
インター予測
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照ピクチャ(すなわち、たとえばDBP230に記憶されている、以前の少なくとも部分的に復号されたピクチャ)および他のインター予測パラメータに、たとえば、最良の一致する参照ブロックを探索するために、参照ピクチャの全体が使用されるのか、または現在のブロックのエリアの周りの探索ウィンドウエリアなどの参照ピクチャの一部のみが使用されるのかに依存し、ならびに/または、たとえば、2分の1/セミペル補間および/もしくは4分の1ペル補間などのピクセル補間が適用されるか否かに依存する。
【０１４５】
上記の予測モードに加えて、スキップモードおよび/または直接モードが適用され得る。
【０１４６】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(ともに図2に示されない)を含み得る。動き推定ユニットは、ピクチャブロック203(現在のピクチャ17の現在のピクチャブロック203)および復号されたピクチャ231を、もしくは、1つまたは複数の他の/異なる以前に復号されたピクチャ231の再構築されたブロックなどの少なくとも1つまたは複数の以前に再構築されたブロックを、動き推定のために受信または取得するように構成され得る。たとえば、ビデオシーケンスは、現在のピクチャおよび以前に復号されたピクチャ231を含んでもよく、または言い換えると、現在のピクチャおよび以前に復号されたピクチャ231は、ビデオシーケンスを形成するピクチャのシーケンスの一部であってもよく、またはそれを形成してもよい。
【０１４７】
エンコーダ20は、たとえば、複数の他のピクチャの同じまたは異なるピクチャの複数の参照ブロックからある参照ブロックを選択し、参照ピクチャ(または参照ピクチャインデックス)、および/または、参照ブロックの場所(x,y座標)と現在のブロックの場所との間のオフセット(空間オフセット)を、インター予測パラメータとして動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【０１４８】
動き補償ユニットは、インター予測パラメータを受信などで取得し、インター予測パラメータに基づいて、またはそれを使用してインター予測を実行して、インター予測ブロック265を取得するように構成される。動き補償ユニットによって実行される動き補償は、動き推定によって、決定される動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成すること、および場合によってはサブピクセル精度への補間を実行することを伴い得る。補間フィルタリングは、既知のピクセルサンプルから追加のピクセルサンプルを生成し得るので、ピクチャブロックをコーディングするために使用され得る予測ブロック候補の数を増やす可能性がある。現在のピクチャブロックのPUに対する動きベクトルを受信すると、動き補償ユニットは、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックを見つけることができる。
【０１４９】
動き補償ユニットはまた、ビデオスライスのピクチャブロックを復号する際にビデオデコーダ30によって使用するために、ブロックおよびビデオスライスと関連付けられるシンタックス要素を生成し得る。
【０１５０】
エントロピーコーディング
エントロピー符号化ユニット270は、たとえば、エントロピー符号化アルゴリズムまたは方式(たとえば、可変長コーディング(VLC)方式、コンテキスト適応VLC方式(CALVC)、算術コーディング方式、二値化、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または、別のエントロピー符号化方法もしくは技法)またはバイパス(圧縮なし)を、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/または、他のシンタックス要素に適用して、たとえば符号化されたビットストリーム21の形で出力272を介して出力され得る符号化されたピクチャデータ21を取得するように構成されるので、たとえば、ビデオデコーダ30は、復号のためにパラメータを受信して使用することができる。符号化されたビットストリーム21は、ビデオデコーダ30に送信され、または、ビデオデコーダ30による後の送信もしくは取り出しのためにメモリに記憶され得る。
【０１５１】
ビデオエンコーダ20の他の構造的な変形は、ビデオストリームを符号化するために使用され得る。たとえば、非変換ベースのエンコーダ20は、いくつかのブロックまたはフレームのために変換処理ユニット206なしで直接残差信号を量子化することができる。別の実装形態では、エンコーダ20は、単一のユニットへと合成された量子化ユニット208および逆量子化ユニット210を有し得る。
【０１５２】
デコーダおよび復号方法
図3は、本出願の技法を実施するように構成されるビデオデコーダ30の例を示す。ビデオデコーダ30は、復号されたピクチャ331を取得するために、たとえばエンコーダ20によって符号化された、符号化されたピクチャデータ21(たとえば、符号化されたビットストリーム21)を受信するように構成される。符号化されたピクチャデータまたはビットストリームは、符号化されたビデオスライスのピクチャブロックおよび関連するシンタックス要素を表すデータなどの、符号化されたピクチャデータを復号するための情報を含む。
【０１５３】
図3の例では、デコーダ30は、エントロピー復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構築ユニット314(たとえば、加算器314)、ループフィルタ320、復号ピクチャバッファ(DBP)330、インター予測ユニット344、およびイントラ予測ユニット354を備える。インター予測ユニット344は、動き補償ユニットであってもよく、またはそれを含んでもよい。いくつかの例では、ビデオデコーダ30は、図2からビデオエンコーダ100に関して説明された符号化経路とは全般に逆の復号経路を実行し得る。
【０１５４】
エンコーダ20に関して説明されるように、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、復号ピクチャバッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354は、ビデオエンコーダ20の「内蔵デコーダ」を成すものとしても言及される。したがって、逆量子化ユニット310は逆量子化ユニット110と機能が同一であってもよく、逆変換処理ユニット312は逆変換処理ユニット212と機能が同一であってもよく、再構築ユニット314は再構築ユニット214と機能が同一であってもよく、ループフィルタ320はループフィルタ220と機能が同一であってもよく、復号ピクチャバッファ330は復号ピクチャバッファ230と機能が同一であってもよい。したがって、ビデオ20エンコーダのそれぞれのユニットおよび機能について与えられる説明は同様に、ビデオデコーダ30のそれぞれのユニットおよび機能に当てはまる。
【０１５５】
エントロピー復号
エントロピー復号ユニット304は、ビットストリーム21(または一般には符号化されたピクチャデータ21)を解析し、たとえば、エントロピー復号を符号化されたピクチャデータ21に対して実行して、たとえば、量子化された係数309および/または復号されたコーディングパラメータ(図3に示されない)、たとえば、インター予測パラメータ(たとえば、参照ピクチャインデックスおよび動きベクトル)、イントラ予測パラメータ(たとえば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/もしくは他のシンタックス要素のいずれかまたはすべてを取得するように構成される。エントロピー復号ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関して説明されたような符号化方式に対応する復号アルゴリズムまたは方式を適用するように構成され得る。エントロピー復号ユニット304は、インター予測パラメータ、イントラ予測パラメータ、および/または他のシンタックス要素をモード選択ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成され得る。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
【０１５６】
逆量子化
逆量子化ユニット310は、量子化パラメータ(QP)(または一般には逆量子化に関する情報)および量子化された係数を符号化されたピクチャデータ21から(たとえばエントロピー復号ユニット304によって、たとえば解析および/または復号することによって)受信し、量子化パラメータに基づいて、復号された量子化された係数309に対して逆量子化を適用して、逆量子化された係数311を取得するように構成されてもよく、これは変換係数311とも呼ばれることがある。逆量子化プロセスは、量子化の程度を、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中の各ビデオブロックに対して、ビデオエンコーダ20によって決定される量子化パラメータを使用することを含み得る。
【０１５７】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる逆量子化された係数311を受信し、サンプル領域において再構築された残差ブロック213を取得するために、逆量子化された係数311に変換を適用するように構成され得る。再構築された残差ブロック213は、変換ブロック313とも呼ばれることがある。変換は、逆変換、たとえば逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであり得る。逆変換処理ユニット312は、逆量子化された係数311に適用されるべき変換を決定するために、(たとえばエントロピー復号ユニット304によって、たとえば解析および/または復号することによって)符号化されたピクチャデータ21から変換パラメータまたは対応する情報を受信するようにさらに構成され得る。
【０１５８】
再構築
再構築ユニット314(たとえば、加算器(adder)または加算器(summer)314)は、たとえば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値を加算することによって、再構築された残差ブロック313を予測ブロック365に加算し、サンプル領域において再構築されたブロック315を取得するように構成され得る。
【０１５９】
フィルタリング
ループフィルタユニット320(コーディングループの中またはコーディングループの後のいずれかの)は、フィルタリングされたブロック321を取得するために、たとえば、ピクセル遷移を滑らかにするために、またはビデオ品質を別様に改善するために、再構築されたブロック315をフィルタリングするように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、またはバイラテラルフィルタ、適応ループフィルタ(ALF)、鮮鋭化フィルタ、平滑化フィルタ、もしくは協調フィルタなどの1つまたは複数の他のフィルタ、あるいはこれらの任意の組合せなどの、1つまたは複数のループフィルタを含み得る。図3ではループフィルタユニット320はループフィルタであるものとして示されているが、他の構成では、ループフィルタユニット320は、ポストループフィルタとして実装されてもよい。
【０１６０】
復号ピクチャバッファ
次いで、ピクチャの復号されたビデオブロック321は、復号ピクチャバッファ330に記憶され、これは、他のピクチャに対する後続の動き補償のための、および/または出力それぞれ表示のために、参照ピクチャとして復号されたピクチャ331を記憶する。
【０１６１】
デコーダ30は、ユーザへの提示またはビューイング(viewing)のために、たとえば出力312を介して、復号されたピクチャ311を出力するように構成される。
【０１６２】
予測
インター予測ユニット344はインター予測ユニット244(具体的には動き補償ユニット)と同一であってもよく、イントラ予測ユニット354は機能がインター予測ユニット254と同一であってもよく、符号化されたピクチャデータ21から受信された区分および/または予測パラメータもしくはそれぞれの情報に基づいて(たとえばエントロピー復号ユニット304によって、たとえば解析および/または復号することによって)、分割または区分の決定と予測を実行する。モード選択ユニット360は、再構築されたピクチャ、ブロック、またはそれぞれのサンプル(フィルタリングされた、またはフィルタリングされていない)に基づいて、ブロックごとに予測(イントラ予測またはインター予測)を実行して、予測ブロック365を取得するように構成され得る。
【０１６３】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、モード選択ユニット360のイントラ予測ユニット354は、現在のピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて現在のビデオスライスのピクチャブロックに対する予測ブロック365を生成するように構成される。ビデオピクチャがインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされるとき、モード選択ユニット360のインター予測ユニット344(たとえば、動き補償ユニット)は、エントロピー復号ユニット304から受信される動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックに対する予測ブロック365を生成するように構成される。インター予測では、予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、DPB330に記憶されている参照ピクチャに基づいてデフォルトの構築技法を使用して、参照フレームリストList0およびList1を構築し得る。
【０１６４】
モード選択ユニット360は、動きベクトルおよび他のシンタックス要素を解析することによって、現在のビデオスライスのビデオブロックに対する予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックに対する予測ブロックを生成するように構成される。たとえば、モード選択ユニット360は、ビデオスライスのビデオブロック、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数に対する構築情報、スライスの各々のインター符号化されたビデオブロックに対する動きベクトル、スライスの各々のインターコーディングされたビデオブロックに対するインター予測ステータス、および現在のビデオスライスの中のビデオブロックを復号するための他の情報をコーディングするために使用される、予測モード(たとえば、イントラ予測またはインター予測)を決定するために、受信されたシンタックス要素の一部を使用する。
【０１６５】
ビデオデコーダ30の他の変形が、符号化されたピクチャデータ21を復号するために使用され得る。たとえば、デコーダ30は、ループフィルタリングユニット320なしで出力ビデオストリームを生成することができる。たとえば、非変換ベースのデコーダ30は、いくつかのブロックまたはフレームに対して、逆変換処理ユニット312なしで残差信号を直接逆量子化することができる。別の実装形態では、ビデオデコーダ30は、単一のユニットへと組み合わせられた逆量子化ユニット310および逆変換処理ユニット312を有し得る。
【０１６６】
エンコーダ20およびデコーダ30において、現在のステップの処理の結果は、さらに処理されて次のステップに出力され得ることを理解されたい。たとえば、補間フィルタリング、動きベクトルの導出、またはループフィルタリングの後で、クリップまたはシフトなどのさらなる演算が、補間フィルタリング、動きベクトル導出、またはループフィルタリングの処理結果に対して実行され得る。
【０１６７】
現在のブロックの導出された動きベクトル(限定はされないが、アフィンモードの制御点動きベクトル、アフィン、平面、ATMVPモードにおけるサブブロック動きベクトル、時間動きベクトルなどを含む)に対して、さらなる演算が適用され得ることに留意されたい。たとえば、動きベクトルの値は、その表現ビットに従ったあらかじめ定められた範囲に制約される。動きベクトルの表現ビットがbitDepthである場合、範囲は-2^(bitDepth-1)〜2^(bitDepth-1)-1であり、「^」はべき乗を意味する。たとえば、bitDepthが16に等しく設定される場合、範囲は-32768〜32767である。bitDepthが18に等しく設定される場合、範囲は-131072〜131071である。ここで、動きベクトルを制約するための2つの方法を提供する。
【０１６８】
方法1:流れ演算によってオーバーフローMSB(最上位ビット)を除去する。
ux=(mvx+2bitDepth)%2bitDepth                  (1)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux          (2)
uy=(mvy+2bitDepth)%2bitDepth                  (3)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy          (4)
たとえば、mvxの値が-32769である場合、式(1)と(2)を適用した後で、得られる値は32767である。コンピュータシステムでは、10進数は2の補数として記憶される。-32769の2の補数は1,0111,1111,1111,1111(17ビット)であり、次いでMSBが廃棄されるので、得られる2の補数は0111,1111,1111,1111(10進数は32767)であり、これは式(1)と(2)を適用することによる出力と同じである。
ux=(mvpx+mvdx+2bitDepth)%2bitDepth            (5)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux          (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth            (7)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy          (8)
式(5)から(8)に示されるように、mvpとmvdの合計の間に、演算が適用され得る。
【０１６９】
方法2:値をクリップすることによってオーバーフローMSBを除去する。
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
ここで、関数Clip3の定義は次の通りである。
【０１７０】
【数１】
2021531682.tif 000005
【０１７１】
演算「?」は通常、「if…else」条件を表現するための短縮形として使用される。たとえば、「X<K?X=1:X=0」は、「XがKより小さい場合、Xは1に等しく設定され、それ以外の場合(XがKより小さくない場合)、Xは0に等しく設定される」として解釈され得る。
【０１７２】
図4は、本開示の実施形態による、ビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書で説明されるような開示される実施形態を実装するのに適している。ある実施形態では、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであり得る。
【０１７３】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430と、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを記憶するためのメモリ460とを備える。ビデオコーディングデバイス400は、光学信号または電気信号の出入りのための、入口ポート410、受信機ユニット420、送信機ユニット440、および出口ポート450に接続された、光学対電気(OE)構成要素および電気対光学(EO)構成要素も備え得る。
【０１７４】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信している。プロセッサ430は、コーディングモジュール470を備える。コーディングモジュール470は、上で説明された開示された実施形態を実装する。たとえば、コーディングモジュール470は、様々なコーディング動作を実施し、処理し、準備し、または提供する。したがって、コーディングモジュール470を含めることで、ビデオコーディングデバイス400の機能がかなり改善し、異なる状態へのビデオコーディングデバイス400の変換がもたらされる。代替的に、コーディングモジュール470は、メモリ460に記憶されておりプロセッサ430によって実行される命令として実装される。
【０１７５】
メモリ460は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含んでもよく、そのようなプログラムが実行のために選択されるときにプログラムを記憶するために、および、プログラム実行の間に読み取られる命令およびデータを記憶するために、オーバーフローデータストレージデバイスとして使用されてもよい。メモリ460は、たとえば、揮発性および/または不揮発性であってもよく、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【０１７６】
図5は、例示的な実施形態による、図1からソースデバイス12と宛先デバイス14の一方または両方として使用され得る、装置500の簡略化されたブロック図である。
【０１７７】
装置500のプロセッサ502は中央処理装置であり得る。代替的に、プロセッサ502は、今存在しているまたは後で開発される情報を操作もしくは処理することが可能な、任意の他のタイプのデバイス、または複数のデバイスであり得る。開示される実装形態は、示されるような単一のプロセッサ、たとえばプロセッサ502として実践され得るが、1つより多くのプロセッサを使用して、速度および効率についての利点を得ることができる。
【０１７８】
装置500のメモリ504は、ある実装形態における読取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであり得る。任意の他の適切なタイプのストレージデバイスが、メモリ504として使用され得る。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含み得る。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含んでもよく、アプリケーションプログラム510は、ここで説明された方法をプロセッサ502が実行することを許可する少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム510は、アプリケーション1からNを含んでもよく、これらは、ここで説明される方法を実行するビデオコーディングアプリケーションをさらに含む。
【０１７９】
装置500は、ディスプレイ518などの1つまたは複数の出力デバイスも含み得る。ディスプレイ518は、一例では、タッチ入力を感知するように動作可能なタッチ感知素子とディスプレイを組み合わせたタッチ感知ディスプレイであり得る。ディスプレイ518は、バス512を介してプロセッサ502に接続され得る。
【０１８０】
単一のバスとしてここでは図示されているが、装置500のバス512は複数のバスからなっていてもよい。さらに、二次的ストレージ514は、装置500の他の構成要素に直接接続されてもよく、またはネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを含んでもよい。したがって、装置500は、多種多様な構成で実装され得る。
【０１８１】
ITU-T H.265に従ったマージ候補リスト構築についての例では、マージ候補リストは、次の候補に基づいて構築される。
1.  5つの空間隣接ブロックから導かれる最大で4つの空間候補
2.  2つの時間的な同一位置ブロックから導かれる1つの時間候補
3.  合成された双方向予測候補を含む追加の候補
4.  ゼロ動きベクトル候補
【０１８２】
空間候補
まず、空間隣接ブロックの動き情報が、動き情報候補としてマージ候補リストに追加される(ある例では、マージ候補リストは、第1の動きベクトルがマージ候補リストに追加される前は空のリストであり得る)。ここで、マージリストに挿入されることが検討される隣接ブロックが、図6bに示されている。インター予測ブロックのマージでは、A1、B1、B0、A0、およびB2をこの順序で逐次確認することによって、最高で4つの候補がマージリストに挿入される。
【０１８３】
動き情報は、1つまたは2つの参照ピクチャリストが使用されるかどうかの情報、ならびに、各参照ピクチャリストに対する参照インデックスおよび動きベクトルを含む、すべての動きデータを含み得る。
【０１８４】
ある例では、隣接ブロックが利用可能であり動き情報を含むかどうかを確認した後で、隣接ブロックのすべての動きデータを動き情報候補として採用する前に、いくつかの追加の冗長性検査が実行される。これらの冗長性検査は、2つの異なる目的のために2つのカテゴリに分けられ得る。
カテゴリ1、冗長な動きデータを伴う候補がリストの中にないようにする
カテゴリ2、冗長なシンタックスを作り出すであろう他の手段により表現され得る2つの区分を統合するのを防ぐ
【０１８５】
時間候補
図6aは、時間動き情報候補がそこから取り出されるブロックの座標を例示した。同一位置ブロックは、現在のブロックの同じx,y座標を有するが異なるピクチャ(参照ピクチャのうちの1つ)の上にあるブロックである。リストが埋まっていない場合、時間動き情報候補がマージリストに追加される(ある例では、マージリストの中の候補の量が閾値より小さいとき、マージリストは埋まっておらず、たとえば閾値は4、5、6などであり得る)。
【０１８６】
生成された候補
空間および時間動き情報候補の挿入の後で、マージリストがまだ埋まっていない場合、リストを埋めるために生成された候補が追加される。リストサイズは、シーケンスパラメータセットにおいて示され、コーディングされたビデオシーケンス全体で一定である。
【０１８７】
双方向予測
インター予測のある空間モードは「双方向予測」と呼ばれ、ブロックを予測するために2つの動きベクトルが使用される。動きベクトルは同じまたは異なる参照ピクチャを指し示すことができ、参照ピクチャは、参照ピクチャリストIDおよび参照ピクチャインデックスによって示され得る。たとえば、第1の動きベクトルは、参照ピクチャリストL0の中の第1のピクチャを指し示すことがあり、第2の動きベクトルは、参照ピクチャリストL1の中の第1のピクチャを指し示すことがある。2つの参照ピクチャリスト(たとえば、L0およびL1)が維持されてもよく、第1の動きベクトルによって指し示されるピクチャはリストL0から選択され、第2の動きベクトルによって指し示されるピクチャはリストL1から選択される。
【０１８８】
ある例では、動き情報が双方向予測を示す場合、動き情報は2つの部分を含む。
・L0部分:動きベクトル、および参照ピクチャリストL0の中のエントリを指し示す参照ピクチャインデックス
・L1部分:動きベクトル、および参照ピクチャリストL1の中のエントリを指し示す参照ピクチャインデックス
【０１８９】
ピクチャ順序カウント(POC):各ピクチャと関連付けられる変数であり、CVS(コーディングされたビデオシーケンス)の中のすべてのピクチャのうちの関連するピクチャを一意に識別し、関連するピクチャが復号ピクチャバッファから出力されることになるとき、復号ピクチャバッファから取得されることになる同じCVSの中の他のピクチャの出力順序の場所に対して相対的な、出力順序における関連するピクチャの場所を示す。
【０１９０】
参照ピクチャリストL0およびL1の各々は、各々がPOCを用いて識別される1つまたは複数の参照ピクチャを含み得る。各参照インデックスとPOC値との関連付けは、ビットストリームにおいてシグナリングされ得る。例として、L0およびL1参照ピクチャリストは、以下の参照ピクチャを含み得る。
【０１９１】
【表３】
2021531682.tif 000006
【０１９２】
上の例では、参照ピクチャリストL1の中の第1のエントリ(参照インデックス0によって示される)は、POC値が13である参照ピクチャである。参照ピクチャリストL1の中の第2のエントリ(参照インデックス1によって示される)は、POC値が14である参照ピクチャである。
【０１９３】
ITU-T H.265およびVVCにおけるマージリスト構築プロセスは、動き情報候補のリストを出力する。VVCのマージリスト構築プロセスは、http://phenix.it-sudparis.eu/jvet/から公に入手可能である、文書JVET-L1001_v2 Versatile Video Coding(Draft 3)の「8.3.2.2 Derivation process for luma motion vectors for merge mode」セクションに記載されている。動き情報という用語は、動き補償された予測プロセスを実行するために必要な動きデータを指す。動き情報は通常、次の情報を指す。
・ブロックが単方向予測を適用するか、または双方向予測を適用するか
・予測において使用される参照ピクチャのID(ブロックが双方向予測を適用する場合2つのID)
・動きベクトル(ブロックが双方向予測される場合2つの動きベクトル)
・追加の情報
【０１９４】
VVCおよびH.265では、マージリスト構築の出力である候補のリストは、N個の候補の動き情報を含む。数Nは、通常はビットストリームに含まれ、5、6などの正の整数であり得る。構築されたマージリストに含まれる候補は、単方向予測情報または双方向予測情報を含み得る。これは、マージリストから選択される候補が双方向予測演算を示し得ることを意味する。
【０１９５】
三角予測モード
三角予測モードという概念は、動き補償された予測に対して新しい三角区分を導入するためのものである。図7に示されるように、対角方向または逆対角方向のいずれかにおいて、2つの三角予測ユニットがCUのために使用される。CUのための各三角予測ユニットは、単方向予測候補リストから導かれる、単方向予測動きベクトルおよび参照フレームインデックスを使用してインター予測される。各三角予測ユニットと関連付けられるサンプルが、たとえば動き補償予測またはイントラピクチャ予測によって予測された後で、適応的な重み付けプロセスが対角線の端に対して実行される。次いで、変換および量子化プロセスが、CU全体に適用される。このモードはスキップモードおよびマージモードにのみ適用されることに留意されたい。
【０１９６】
三角予測モードにおいて、ブロックは2つの三角部分(図7のように)へと分割され、各部分は1つの動きベクトルを使用して予測され得る。一方の三角部分(PU1により表記される)を予測するために使用される動きベクトルは、他方の三角部分(PU2により表記される)を予測するために使用される動きベクトルとは異なり得る。ある例では、各部分は、三角予測モードを実行することの複雑さを減らすために、単一の動きベクトルのみを使用して予測され得ることに留意されたい(単方向予測)。言い換えると、PU1およびPU2は、2つの動きベクトルを含む双方向予測を使用して予測されないことがある。
【０１９７】
サブブロック予測モード
三角予測モードは、ブロックが2つのブロックに分割される、サブブロック予測の特別な場合である。上の例では、2つのブロック分割の方向が例示されている(45度および135度の区分)。サブブロック予測のための他の区分角度および区分比率も可能である(図8の例)。
【０１９８】
いくつかの例では、ブロックは2つのサブブロックに分けられ、各部分(サブブロック)は単方向予測を用いて予測される。ある例では、サブブロック区分モードの使用に従って、ブロックに対する予測サンプルを取得するために次のステップが適用される。
・ステップ1:幾何学的モデルに従って、コーディングブロックを2つのサブブロックに分割する。このモデルは、図9〜図12において例示されるような、分離線(たとえば、直線)によるブロックの分割をもたらし得る。ステップ1の結果はただの概念であり得ることが理解され得る。たとえば、ステップ1の後には「サブブロック1」または「サブブロック2」という明確な概念はなく、分離線を参照してパラメータを生成または取得する。サンプルは、分離線を参照したパラメータに従った異なるサブブロックに属する。このステップでは、幾何学的モデルに従って、コーディングブロックの中のサンプルは、2つのサブブロックの中に位置するとみなされる。サブブロックAまたはサブブロックBは、現在のコーディングブロックの中のサンプルの一部(しかしすべてではない)を含む。サブブロックAまたはサブブロックBは、各サンプルのsample_distの符号に従って表現され得る。sample_distは、他の段落における例および実施形態に従って取得され得る。
・ステップ2:第1のサブブロックに対する第1の予測モードおよび第2のサブブロックに対する第2の予測モードを取得する。ある例では、第1の予測モードは第2の予測モードと同一ではない。ある例では、予測モード(第1の予測モードまたは第2の予測モード)はインター予測モードであってもよく、インター予測モードのための情報は、参照ピクチャインデックスおよび動きベクトルを含んでもよい。別の例では、予測モードはイントラ予測モードであってもよく、イントラ予測モードのための情報はイントラ予測モードインデックスを含んでもよい。
・ステップ3:第1の予測モードおよび第2の予測モードをそれぞれ使用して、第1の予測値および第2の予測値を取得する。
・ステップ4:ステップ1において開示される分割に従って、第1の予測値および第2の予測値の合成に従って、予測サンプルの合成値を取得する。ブロックの予測サンプルの合成値を取得するために、第1の予測および第2の予測からのサンプルを合成するプロセスは、フィルタリング演算、マスキング演算、またはサンプルの複製を含み得る。
【０１９９】
ある例では、ステップ1において、コーディングブロックは様々な方法で2つのサブブロックに分割される。図9は、コーディングブロックの区分についての例を示し、分離線1250がブロックを2つのサブブロックに分割する。線1250を記述するために、2つのパラメータがシグナリングされ、一方のパラメータは角度alpha1210であり、他方のパラメータは距離dist1230である。
【０２００】
いくつかの実施形態では、図9に示されるような角度は、x軸と分離線との間で測られ、一方で距離は、分離線に垂直で現在のブロックの中心を通るベクトルの長さによって測られる。
【０２０１】
別の例において、図10は、分離線を表す代替的な方法を示し、角度および距離の例が図9に示されている例とは異なる。
【０２０２】
いくつかの例では、ステップ4において、ステップ1で開示された分割が、最終的な予測を取得するために、2つの前記予測の合成として使用される。ある例では、あらゆるアーティファクト(分離線に沿った鋭いまたはぎざぎざの見た目)を除去するために、混合演算がステップ4において適用される。混合演算は、分離線に沿ったフィルタリング演算として記述され得る。
【０２０３】
ある例では、エンコーダ側において、分離線(線を定義するパラメータ、たとえば、角度および距離)は、レートひずみベースのコスト関数に基づいて決定される。決定された線パラメータは、ビットストリームへと符号化される。デコーダ側では、線パラメータはビットストリームに従って復号(取得)される。デコーダ側では、最終的な予測値を取得するために、第1の予測値および第2の予測値の合成のために線パラメータが使用される。ステップ1は、2つのサブコーディングブロックという概念があることを必要とせず、デコーダは、2つのサブコーディングブロックの概念を表すために、コーディングブロックおよび線パラメータを使用することができる。
【０２０４】
コーディングブロックを2つのサブブロックに分割することには多くの可能性があるので、分割のシグナリング(コーディング)はあまりにも多くのビットを必要とする。そして、角度および距離の値は多くの異なる値を有し得るので、ビットストリームにおいてあまりにも多くのサイド情報がシグナリングされなければならない。
【０２０５】
本発明の実施形態は、区分パラメータのシグナリングについてのものである。効率的なコーディングが、次の特徴によって達成される。
・角度と距離の実際の値が送信される必要がないように、ブロックの区分のためのパラメータ(たとえば、角度および距離)が所定のテーブルに記憶される
・テーブルが、より可能性が高く十分な変種を含む区分パラメータを含んでいる
・テーブルに対するインデックスがビットストリームへと符号化される(またはそれから取得される)
【０２０６】
本発明の実施形態は、サブブロックへのコーディングブロックの区分を記述するパラメータをジョイントコーディングする方法を達成する。
【０２０７】
実施形態1(デコーダの観点):
この実施形態では、コーディングブロックのサンプルの合成予測値を取得するために、次のステップが適用される。
【０２０８】
ステップ1:ビットストリームに従って、現在の復号ブロックのインジケータの値を取得する。
【０２０９】
ある実施形態では、インジケータの値は、幾何学的区分マージモードの区分形状を指定するために使用される。たとえば、インジケータは、merge_gpm_partition_idx[x0][y0]であってもよく、merge_gpm_partition_idx[x0][y0]は、幾何学的区分マージモードの区分形状を指定する。アレイインデックスx0、y0は、ピクチャの左上のルマサンプルに対する、考慮されるコーディングブロックの左上のルマサンプルの相対的な位置(x0,y0)を指定する。
【０２１０】
普通は、merge_gpm_partition_idx[x0][y0]の値は、ビットストリームから復号される。ある例では、merge_gpm_partition_idx[][]の値の範囲は、0と63を含めて0から63である。ある例では、merge_gpm_partition_idx[][]のための復号プロセスは「バイパス」である。
【０２１１】
merge_gpm_partition_idx[x0][y0]が存在しないとき、それは0に等しいものとして推測される。
【０２１２】
ステップ2: インジケータの値およびあらかじめ定められたルックアップテーブルに基づいて、第1のパラメータの値および第2のパラメータの値を取得する。
(パラメータ1,パラメータ2)=lookupTable(インジケータ)
【０２１３】
ある実施形態では、幾何学的区分モードの区分角度変数angleIdx(パラメータ1)および距離変数distanceIdx(パラメータ2)は、以下のテーブルにおいて指定されるようなmerge_gpm_partition_idx[xCb][yCb](インジケータ)の値に従って設定される。実装形態では、この関係は、table 1(表4)に従って、または関数に従って実装され得ることが理解され得る。
【０２１４】
【表４】
2021531682.tif 000007
【０２１５】
ステップ3:現在の復号ブロックの中のサンプルに対して、第1のパラメータの値および第2のパラメータの値に従って、サンプル距離(sample_dist)が計算される。
【０２１６】
ある実施形態では、ステップ3は次のステップを含む。
【０２１７】
ステップ3.1:現在のブロックに対する角度パラメータのインデックス値(alphaNまたはangleIdx)、現在のブロックの幅の値(W)、現在のブロックの高さの値(H)を取得する。WおよびHは、サンプルの数を単位とする現在のブロックの幅および高さである。たとえば、幅と高さがともに8に等しいコーディングブロックは、64個のサンプルを含む正方形ブロックである。別の例では、WおよびHは、ルマサンプルの数を単位とする現在のブロックの幅および高さである。角度パラメータのインデックス値は、上記の説明に従って取得されtable 1(表4)を参照し得る。
【０２１８】
ステップ3.2:Wの値およびHの値に従って比whRatioの値を取得し、whRatioの値は、現在のコーディングブロックの幅と高さの比を表す。
【０２１９】
ある例では、whRatio=H/W、またはwhRatio=W/Hである。
【０２２０】
別の例では、2つの変数nCbWおよびnCbHは現在のコーディングブロックの幅および高さを指定し、変数cIdxは色成分インデックスを指定する。
【０２２１】
変数nW、nH、およびwhRatioは次のように導かれる。
nW=(cIdx==0)?nCbW:nCbW*SubWidthC
nH=(cIdx==0)?nCbH:nCbH*SubHeightC
whRatio=nH/nW
【０２２２】
ある例では、chroma_format_idc(chroma_format_idcはルマサンプリングに対するクロマサンプリングを指定する)およびseparate_colour_plane_flag(1に等しいseparate_colour_plane_flagは、4:4:4クロマフォーマットの3つの色成分が別々にコーディングされることを指定する。0に等しいseparate_colour_plane_flagは、色成分が別々にコーディングされないことを指定する。separate_colour_plane_flagが存在しないとき、それは0に等しいと推測される。separate_colour_plane_flagが1に等しいとき、コーディングされたピクチャは、各々が1つの色平面(Y、Cb、またはCr)のコーディングされたサンプルからなりモノクロームコーディングシンタックスを使用する、3つの別々の成分からなる。この場合、各色平面は、特定のcolour_plane_id値と関連付けられる)を通じて指定される、クロマフォーマットサンプリング構造に応じて、変数SubWidthCおよびSubHeightCがtable 2(表5)において指定される。chroma_format_idc、SubWidthC、およびSubHeightCの他の値は、ITU-T|ISO/IECによって今後指定され得る。
【０２２３】
【表５】
2021531682.tif 000008
【０２２４】
モノクロームサンプリングでは、1つのサンプルアレイしかなく、これは、普通はルマアレイとみなされる。
【０２２５】
4:2:0サンプリングでは、2つのクロマアレイの各々が、ルマアレイの半分の高さおよび半分の幅を有する。
【０２２６】
4:2:2サンプリングでは、2つのクロマアレイの各々が、ルマアレイと同じ高さおよびルマアレイの半分の幅を有する。
【０２２７】
4:4:4サンプリングでは、separate_colour_plane_flagの値に応じて、以下のことが当てはまる。
-  separate_colour_plane_flagが0に等しい場合、2つのクロマアレイの各々が、ルマアレイと同じ高さおよび幅を有する。
-  それ以外の場合(separate_colour_plane_flagが1に等しい)、3つの色平面がモノクロームのサンプリングされたピクチャとして別々に処理される。
【０２２８】
ステップ3.3:ルックアップテーブルに従ってshiftHor値を取得し、alphaの値およびwhRatioの値、ある例では、alpha(alphaNまたはangleIdx)の値およびwhRatioの値は、ルックアップテーブルのインデックス値として使用される。shiftHor値は関数に従って取得されてもよく、alpha(alphaNまたはangleIdx)の値およびwhRatioの値は関数への入力であり、shiftHor値は関数の出力であることが理解され得る。ある例では、関数の結果は、ルックアップテーブルと同様または同じである。ある例では、shiftHor値は、サンプル距離計算プロセスに対する量子化ステップサイズを表す。
【０２２９】
別の例では、関数は、shiftHor=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1によって表され得る。
【０２３０】
ステップ3.4:sample_distの値が、shiftHor値に従って計算される。
【０２３１】
ある例では、サンプル距離(sample_dist)を計算するために、まず、変数offsetXおよびoffsetYは次のように導かれる。
【０２３２】
shiftHorが0に等しい場合、次のことが当てはまる。
offsetX=(-nW)>>1
offsetY=((-nH)>>1)+
(angleIdx<16?(distanceIdx*nH)>>3:-((distanceIdx*nH)>>3))
それ以外の場合(shiftHorが1に等しい)、次のことが当てはまる。
offsetX=((-nW)>>1)+(angleIdx<16?(distanceIdx*nW)>>3:-((distanceIdx*nW)>>3))
offsetY=(-nH)>>1
-  変数xLおよびyLは次のように導かれる。
xL=(cIdx==0)?x:x*SubWidthC
yL=(cIdx==0)?y:y*SubHeightC
sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+
(((yL+offsetY)<<1)+1))*disLut[displacementY]
【０２３３】
変数displacementXおよびdisplacementYは次のように導かれる。
hwRatio=cbHeight/cbWidth
displacementX=angleIdx
displacementY=(angleIdx+8)%32
【０２３４】
table 3(表6)において指定されるアレイdisLutは次の通りである。
【０２３５】
【表６】
2021531682.tif 000009
【０２３６】
別の実施形態において、ある例では、上の実施形態のステップ3は、次のステップを含む。
【０２３７】
ステップ3.1:現在のブロックに対する角度パラメータの値(alphaNまたはangleIdx)、距離インデックスの値(distanceIdx)、現在のブロックの幅の値(W)、現在のブロックの高さの値(H)を取得する。WおよびHは、サンプルの数を単位とする現在のブロックの幅および高さである。たとえば、幅と高さがともに8に等しいコーディングブロックは、64個のサンプルを含む正方形ブロックである。別の例では、WおよびHは、ルマサンプルの数を単位とする現在のブロックの幅および高さである。角度パラメータのインデックス値は、上記の説明に従って取得されtable 1(表4)を参照し得る。
【０２３８】
ステップ3.2:Wの値およびHの値に従って比whRatioの値を取得し、whRatioの値は、現在のコーディングブロックの幅と高さの比を表す。
【０２３９】
ある例では、whRatio=H/W、またはwhRatio=W/Hである。
【０２４０】
別の例では、2つの変数nCbWおよびnCbHは現在のコーディングブロックの幅と高さを指定し、変数cIdxは色成分インデックスを指定する。
【０２４１】
変数nW、nH、およびwhRatioは次のように導かれる。
nW=(cIdx==0)?nCbW:nCbW*SubWidthC
nH=(cIdx==0)?nCbH:nCbH*SubHeightC
whRatio=nH/nW
【０２４２】
ステップ3.3:ルックアップテーブルに従ってshiftHor値を取得し、alphaの値およびwhRatioの値、ある例では、alphaNの値およびwhRatioの値は、ルックアップテーブルのインデックス値として使用される。ある例では、shiftHor値は、サンプル距離計算プロセスに対する量子化ステップサイズを表す。shiftHor値もある関数に従って取得されてもよく、alpha(alphaNまたはangleIdx)の値およびwhRatioの値は関数への入力であり、shiftHor値は関数の出力である。ある例では、関数の結果は、ルックアップテーブルと同様または同じである。ある例では、shiftHor値は、サンプル距離計算プロセスに対する量子化ステップサイズを表す。
【０２４３】
別の例では、関数は、shiftHor=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1によって表され得る。
【０２４４】
ステップ3.4:sample_distの値が、shiftHor値、distanceIdxの値、角度の値(alphaNまたはangleIdx)、Wの値、およびHの値に従って計算される。
【０２４５】
ある例では、サンプル距離(sample_dist)を計算するために、まず、変数offsetXおよびoffsetYは次のように導かれる。
【０２４６】
shiftHorが0に等しい場合、次のことが当てはまる。
offsetX=(-nW)>>1
offsetY=((-nH)>>1)+
(angleIdx<16?(distanceIdx*nH)>>3:-((distanceIdx*nH)>>3))
それ以外の場合(shiftHorが1に等しい)、次のことが当てはまる。
offsetX=((-nW)>>1)+
(angleIdx<16?(distanceIdx*nW)>>3:-((distanceIdx*nW)>>3))
offsetY=(-nH)>>1
-  変数xLおよびyLは次のように導かれる。
xL=(cIdx==0)?x:x*SubWidthC
yL=(cIdx==0)?y:y*SubHeightC
sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+
(((yL+offsetY)<<1)+1))*disLut[displacementY]
【０２４７】
変数displacementXおよびdisplacementYは次のように導かれる。
hwRatio=cbHeight/cbWidth
displacementX=angleIdx
displacementY=(angleIdx+8)%32
【０２４８】
アレイdisLutは上のtable 3(表6)において指定される。
【０２４９】
ステップ4:重み係数を計算するために、計算されたsample_distが使用され、重み係数は、前記サンプルに対応する第1の予測値と第2の予測値の組合せのために使用される。ある例では、重み係数はsampleWeight1およびsampleWeight2と表記され、第1の予測値に対応する重みおよび第2の予測値に対応する重みを指す。
【０２５０】
一例では、重み係数は次の関数に従って計算される。
weightIdxL=partFlip?32+sample_dist:32-sample_dist
wValue=Clip3(0,8,(weightIdxL+4)>>3)
【０２５１】
この例では、wValueはsampleWeight1であり、8-wValueはsampleWeight2である。変数partFlipは、angleIdxの値に従って決定される。ある例では、partFlip=(angleIdx>=13&&angleIdx<=27)?0:1、またはpartFlip=(angleIdx>=13&&angleIdx<=27)?1:0である。
【０２５２】
ステップ5:サンプル座標(x,y)における予測サンプルの合成値は、座標(x,y)における第1の予測値、座標(x,y)における第2の予測値、sampleWeight1、およびsampleWeight2に従って計算される。
【０２５３】
ある例では、予測サンプル値は次のように導かれる。
pbSamples[x][y]=Clip3(0,(1<<BitDepth)-1,(predSamplesLA[x][y]*wValue+
predSamplesLB[x][y]*(8-wValue)+offset1)>>shift)
【０２５４】
bitDepthはサンプルビット深度を表し、変数shift1はbitDepthに従って取得され、ある例ではshift1=Max(5,17-BitDepth)である。変数offset1はshift1に従って取得され、ある例では、offset1=1<<(shift1-1)であり、predSamplesLAおよびpredSamplesLBは2つの(nCbW)x(nCbH)アレイである。
【０２５５】
実施形態2(エンコーダの観点)
この実施形態では次のステップが適用される。
【０２５６】
ステップ0:第1のパラメータの値および第2のパラメータの値を選択し、ある例では、第1のパラメータの値および第2のパラメータの値はレートひずみ尺度に従って取得される。
【０２５７】
ステップ1:第1のパラメータの値、第2のパラメータの値に従って、およびルックアップテーブルに従って、
(パラメータ1,パラメータ2)=lookupTable(インデックス)
となるようにインデックス値を取得する。
【０２５８】
ステップ2:インデックス値をビットストリームへと符号化する。
【０２５９】
任意選択で、次のステップがこの実施形態において使用される。
【０２６０】
ステップ3: コーディングブロックの中のサンプルに対して、サンプル距離(sample_dist)が、第1のパラメータの値および第2のパラメータの値に従って計算される。
【０２６１】
ステップ4:前記サンプルに対応する第1の予測値と第2の予測値の組合せに対して重み係数を計算するために、計算されたsample_distが使用される。重み係数は、sampleWeight1およびsampleWeight2と表記され、第1の予測値に対応する重み値および第2の予測値に対応する重み値を指す。
【０２６２】
ステップ5:座標(x,y)におけるサンプルに対する合成予測値は、座標(x,y)における第1の予測値、座標(x,y)における第2の予測、sampleWeight1、およびsampleWeight2に従って計算される。エンコーダ側における各ステップの詳細は、デコーダ側を説明した上の例に対応する。
【０２６３】
ある例によれば、実施形態1のルックアップテーブルは、実施形態2のルックアップテーブル2と同じであるので、エンコーダとデコーダは同じ結果を取得することができる。
【０２６４】
いくつかの例では、サンプル距離は、前記サンプルから分離線までの水平距離、または垂直距離、または水平距離と垂直距離の組合せを表し得る(分離線は、コーディングブロックを2つのサブブロックへと分割するために使用される)。前記サンプルは、コーディングブロックの左上サンプルに関して座標(x,y)によって表される。サンプル座標およびsample_distは図11および図12に例示されている。
【０２６５】
ある例では、第1のパラメータは量子化された角度値(angleIdx)を表し、第2のパラメータは量子化された距離値(distanceIdx)を表す。2つのパラメータは線の式を記述する。ある例では、距離1230はdistanceIdx(第2のパラメータ)に従って取得されてもよく、角度alpha(1210)はangleIdx(第1のパラメータ)に従って取得されてもよい。距離1230はコーディングブロックの中心までの距離であってもよく、角度は、分離線と、コーディングブロックの中心点を通る水平な(または等価的に垂直な)線との間の角度であってもよい。
【０２６６】
一例では、ルックアップテーブルはあらかじめ定められる。
【０２６７】
ある例では、1つより多くのあらかじめ定められたルックアップテーブルがあり得る。ある例では、コーディングブロックのための1つのルックアップテーブルは、ブロックのアスペクト比(アスペクト比=W>H?W/H:H/W)が1に等しい場合に使用される。別の例では、アスペクト比が1に等しくない場合、1つまたは複数のルックアップテーブル(前記1つのルックアップテーブルと同一ではない)が使用され、WおよびHはコーディングブロックの幅および高さである。
【０２６８】
別の例では、1つより多くのあらかじめ定められたルックアップテーブルがあってもよく、1つのルックアップテーブルがコーディングブロックに対してのものであり、ブロックのW*Hは閾値より大きい。ブロックのW*Hが閾値以下である場合、1つまたは複数のルックアップテーブル(前記1つのルックアップテーブルと同一ではない)がブロックのために使用される。たとえば、予測されることになる現在のブロックのサイズが32x32の輝度サンプル以下である場合、第1のルックアップテーブルが使用される。そうではなく、現在のコーディングブロックのサイズが32x32の輝度サンプルより大きい場合、第2のルックアップテーブルが使用される。2つのルックアップテーブルは、異なるブロックサイズの多様な特性に関して、パラメータの異なるセットを含み得る。たとえば、第2のルックアップテーブルは、第1のルックアップテーブルより多くのパラメータを含み、より大きいブロックに対してより高い区分の柔軟性を提供し得る。
【０２６９】
いくつかの例では、1つより多くのあらかじめ定められたルックアップテーブルがありブロックのために使用される場合、ブロックに対する1つのルックアップテーブルを決定するために関数f(W,H)が使用されてもよく、WおよびHはコーディングブロックの幅および高さである。
【０２７０】
別の例では、サンプル距離sample_distは、次の式に従って計算される。
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1))*Dis[angleIdx2]-offset(distanceIdx)
ここで、
・angleIdx1の値およびangleIdx2の値は、ビットストリームからのものであり、または、ビットストリームから取得された他の情報に基づいて導出/計算され、angleIdx1およびangleIdx2は、分離線の量子化された三角法のパラメータ、すなわちタイプコサインの第1のパラメータおよびタイプサインの第2のパラメータを表す。ある例では、xおよびyは、コーディングブロックの左上のサンプルに関するサンプルの-x座標および-y座標である。
・Dis[]はルックアップテーブルである。Dis[angleIdx1]は、前記サンプルの-x座標における単位増大(値1の増大)に関するサンプル距離(sample_dist)の変化を記述する。Dis[angleIdx2]は、前記サンプルの-y座標における単位増大(値1の増大)に関するサンプル距離(sample_dist)の変化を記述する。一例では、angleIdx1はangleIdxに等しく、angleIdx2は(displacementX+8)%32に等しい。
・offset(distanceIdx)は、インデックス値(distanceIdx)の関数であるオフセット値であり、インデックス値は、ビットストリームから取得され、またはビットストリームから取得された他の情報に基づいて導出/計算される。
【０２７１】
ルックアップテーブルの構築
一例によれば、第1のパラメータの値の範囲は0から4K-1であってもよく、Kは0以上の整数である。第2のパラメータの値の範囲は0からNであってもよい。この場合、前記ルックアップテーブルの行は、以下の組合せを除き、第1のパラメータと第2のパラメータのすべての組合せを含み得る。
・ペアの第1のセット:第2のパラメータの値は0に等しく、第1のパラメータの値は{0,K,2K,3K}のうちの1つに等しい。
・ペアの第2のセット:第2のパラメータの値=0であり、第1のパラメータの値は{K/2,3K/2,5K/2,7K/2}のうちの1つに等しい。
・パラメータの第3のセット:第2のパラメータの値=0であり、第1のパラメータの値は2K以上である。
【０２７２】
ある例では、Kの値は8または4である。数Kは、どれだけの離散的な角度値が90度の角度を区分するために使用されるかを記述する。ある例では、数Kが8である場合、分離の線は、次の角度値、すなわち0、11.25、22.5、33.75、45、…度を有し得る。別の例では、Kの値が4である場合、角度値は、0、22.5、45、67.5、…度である。
【０２７３】
ある例では、Nの値は4である。一般に、Nは0より大きい整数であり得る。
【０２７４】
いくつかの実施形態では、第2のパラメータは、分離線からコーディングブロックの中心までの距離を記述する。第2のパラメータの値が0である場合、これは、分離線がコーディングブロックの中心を通ることを意味する。第1のパラメータの値がKに等しい場合、これは、分離線が水平の向きまたは垂直の向きのいずれかである(角度値が0、90、270、または360度に等しい)ことを意味する。ペアの第1のセットは、冗長な区分を作り出すのでルックアップテーブルから除去され、この冗長な区分は、二分木を用いたコーディングブロックの二値の(2つへのを意味する)区分によっても達成され得る。二値の分割は、垂直軸または水平軸に沿って、コーディングブロックを等しいサイズの2つのコーディングブロックへと区分する(そしてサブブロックには区分しない)機構である。したがって、本発明の実施形態によれば、ペアの第1のセットがルックアップテーブルから除去される。
【０２７５】
ペアの第2のセットは、三角予測モードによって達成され得る分割を作り出すので、ペアの第2のセットはルックアップテーブルから除去される。したがって、ペアの第2のセットを除去することが、冗長なサブブロックの区分を防ぐ。
【０２７６】
角度がXまたはX+180に等しいとき、第2のパラメータが0に等しい場合には同一の区分が作り出されるので、ペアの第3のセットがテーブルから除去される。
【０２７７】
別の例によれば、以下のペアがルックアップテーブルから除去され得る。
・Nに等しい第2のパラメータの値および{K/2,3K/2,5K/2,7K/2}のうちの1つに等しい第1のパラメータの値
・Nに等しい第2のパラメータの値および{K/2-1,3K/2-1,5K/2-1,7K/2-1,K/2+1,3K/2+1,5K/2+1,7K/2+1}のうちの1つに等しい第1のパラメータの値
【０２７８】
いくつかの実施形態では、上記のペアがルックアップテーブルから除去されてもよく、それは、それらのペアが、そのうちの1つがあまりにも小さい可能性のある2つのサブブロックを作り出すからである。第1のパラメータの値がK/2、3k/2、…、に等しい場合、これは、分離線の角度が45度、135度、225度、または315度であることを意味する。第2のパラメータの値がN(これは最高の値である)に等しい場合、サブブロックのうちの1つがコーディングブロックの1つの角の小さい部分を含み、これは分割操作には小さすぎる。
【０２７９】
ルックアップテーブルにおけるペアの順序
一例によれば、第2のパラメータがN(Nは第2のパラメータがとり得る最高の値である)に等しい場合、ペア(第1のパラメータ、第2のパラメータ)がルックアップテーブルの最後に追加され得る。言い換えると、第2のパラメータの値がNに等しい、P個のペアがある場合、ルックテーブルの最後のP個のエントリは、P個のペアを含み得る。たとえば、Nが4に等しくKが8に等しい場合、第2のパラメータが4に等しい、P=4K*1=32個のパラメータのペアがある。
【０２８０】
別の例によれば、パラメータのペアはヒューリスティックプロセスに従って順序付けられる。このヒューリスティックプロセスは、たとえば訓練データセットにおけるパラメータペアの出現または使用を反映する、訓練データから決定され得る。それにより、より頻繁に出現するパラメータペアはリストの始めに配置され、あまり頻繁に出現しないパラメータペアはリストの終わりに配置される。
【０２８１】
第2のパラメータがNに等しいとき、一方のサブブロックは他方のサブブロックより小さい。(各サブブロックの中のサンプルの数がより似ている場合と比較して)そのような区分を選択する可能性はより低い。その上、より高い値を有する(ルックアップテーブルの)インデックス値は、ビットストリームへと符号化されるには、より多数のビットを通常は必要とする。したがって、これにより、圧縮効率が高まり、より可能性の低いペアがテーブルの終わりに含まれるので、テーブルの始めはより可能性の高いペア(たとえば、より好ましいサブブロック区分をもたらすペア)に割り振られ得る。
【０２８２】
インジケータの一例(geo_partition_idx)およびルックアップテーブルが、以下で与えられる。インジケータは0から139の間の値を有し、これは、ルックアップテーブルを使用して第1のパラメータおよび第2のパラメータを選択するために使用される。ルックアップテーブルの例はTable 4(表7)である。
【０２８３】
【表７Ａ】
2021531682.tif 000010
【表７Ｂ】
2021531682.tif 000011
【表７Ｃ】
2021531682.tif 000012
【表７Ｄ】
2021531682.tif 000013
【０２８４】
table 4(表7)は、第1のパラメータおよび第2のパラメータの可能な組合せ値を示すための例にすぎず、他の実装形態では、table 4(表7)の一部が、第1のパラメータおよび第2のパラメータを取得するためにルックアップテーブルとして使用され得ることが理解され得る。
【０２８５】
例1.復号デバイスによって実施されるコーディングの方法であって、
ビットストリームを取得するステップと、
ビットストリームに従って現在のブロックに対するインジケータの値を取得するステップと、
インジケータの値およびあらかじめ定められたルックアップテーブルに従って、現在のブロックに対する第1のパラメータの値および現在のブロックに対する第2のパラメータの値を取得するステップと、
第1のパラメータの値および第2のパラメータの値に従って、現在のブロックに位置するサンプルに対するサンプル距離の値を取得するステップと、
サンプルに対するサンプル距離の値に従って、サンプルに対する予測値を取得するステップとを有する方法。
【０２８６】
例2.第1のパラメータが、現在のブロックの区分のための角度を表す、例1の方法。
【０２８７】
例3.第2のパラメータが、現在のブロックの区分のための距離を表す、例1または2の方法。
【０２８８】
例4.あらかじめ定められたルックアップテーブルが第1のパラメータペアおよび第2のパラメータペアからなり(ある例では、テーブルの中の各エントリは第1のパラメータと第2のパラメータの固有のペアである)、以下のペアがあらかじめ定められたルックアップテーブルの中にあり、
第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表し、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表さない、例1から3のいずれか1つの方法。
【０２８９】
例5.あらかじめ定められたルックアップテーブルが第1のパラメータペアおよび第2のパラメータペアからなり(ある例では、テーブルの中の各エントリは第1のパラメータと第2のパラメータの固有のペアである)、以下のペアがあらかじめ定められたルックアップテーブルの中にあり、
第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応しない角度を表し、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表す、例1から4のいずれか1つの方法。
【０２９０】
例6.あらかじめ定められたルックアップテーブルが第1のパラメータペアおよび第2のパラメータペアからなり(ある例では、テーブルの中の各エントリは第1のパラメータと第2のパラメータの固有のペアである)、以下のペアがあらかじめ定められたルックアップテーブルに含まれず、
第1のパラメータが、0、45、90、135、180、225、270、または315度の角度のうちの1つに対応する角度を表し、ペアのうちの対応する第2のパラメータが、現在のブロックの中心から0サンプルの距離を表す、例1から5のいずれか1つの方法。
【０２９１】
例7.例1から6のいずれか1つに従った方法を実行するための処理回路を備える、デコーダ(30)。
【０２９２】
例8.例1から6のいずれか1つに従った方法を実行するためのプログラムコードを含む、コンピュータプログラム。
【０２９３】
例9.デコーダであって、
1つまたは複数のプロセッサと、
プロセッサに接続され、プロセッサによる実行のためのプログラムを記憶する、非一時的コンピュータ可読記憶媒体とを備え、プログラムが、プロセッサによって実行されると、例1から6のいずれか1つに従った方法を実行するようにデコーダを構成する、デコーダ。
【０２９４】
以下は、上述の実施形態において示されたような符号化方法と復号方法の適用、およびそれらを使用したシステムの説明である。
【０２９５】
図13は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、キャプチャデバイス3102、端末デバイス3106を含み、任意選択でディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上で説明された通信チャネル13を含み得る。通信リンク3104は、限定はされないが、Wi-Fi、イーサネット(登録商標)、ケーブル、ワイヤレス(3G/4G/5G)、USB、またはそれらの任意の種類の組合せなどを含む。
【０２９６】
キャプチャデバイス3102は、データを生成し、上の実施形態において示されるような符号化方法によってデータを符号化し得る。代替的に、キャプチャデバイス3102は、データをストリーミングサーバ(図には示されていない)に配信してもよく、サーバは、データを符号化し、符号化されたデータを端末デバイス3106に送信する。キャプチャデバイス3102は、限定はされないが、カメラ、スマートフォンもしくはパッド、コンピュータもしくはラップトップ、ビデオ会議システム、PDA、車載デバイス、またはそれらの任意の組合せなどを含む。たとえば、キャプチャデバイス3102は、上で説明されたようなソースデバイス12を含み得る。データがビデオを含むとき、キャプチャデバイス3102に含まれるビデオエンコーダ20が、実際にビデオ符号化処理を実行し得る。データがオーディオ(すなわち、声)を含むとき、キャプチャデバイス3102に含まれるオーディオエンコーダが、実際にオーディオ符号化処理を実行し得る。いくつかの実際のシナリオでは、キャプチャデバイス3102は、符号化されたビデオとオーディオデータを一緒に多重化することによって、それらを配信する。他の実際のシナリオでは、たとえばビデオ会議システムでは、符号化されたオーディオデータと符号化されたビデオデータは多重化されない。キャプチャデバイス3102は、符号化されたオーディオデータと符号化されたビデオデータを、端末デバイス3106に別々に配信する。
【０２９７】
コンテンツ供給システム3100では、端末デバイス310は、符号化されたデータを受信して再現する。端末デバイス3106は、上述の符号化されたデータを復号することが可能な、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、携帯情報端末(PDA)3122、車載デバイス312、またはそれらの任意の組合せなどの、データの受信と復元の能力を持つデバイスであり得る。たとえば、端末デバイス3106は、上で説明されたような宛先デバイス14を含み得る。符号化されたデータがビデオを含むとき、ビデオ復号を実行するために、端末デバイスに含まれるビデオデコーダ30が優先される。符号化されたデータがオーディオを含むとき、オーディオ復号処理を実行するために、端末デバイスに含まれるオーディオデコーダが優先される。
【０２９８】
ディスプレイのある端末デバイス、たとえば、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、携帯情報端末(PDA)3122、または車載デバイス3124では、端末デバイスは、復号されたデータをディスプレイにフィードすることができる。ディスプレイを備えない端末デバイス、たとえば、STB3116、ビデオ会議システム3118、またはビデオ監視システム3120では、復号されたデータを受信して示すために、外部ディスプレイ3126がそれらにつながれる。
【０２９９】
このシステムの中の各デバイスが符号化または復号を実行するとき、上述の実施形態において示されるような、ピクチャ符号化デバイスまたはピクチャ復号デバイスが使用され得る。
【０３００】
図14は、端末デバイス3106の例の構造を示す図である。端末デバイス3106がキャプチャデバイス3102からストリームを受信した後で、プロトコル進行ユニット3202がストリームの送信プロトコルを分析する。プロトコルは、限定はされないが、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組合せなどを含む。
【０３０１】
プロトコル進行ユニット3202がストリームを処理した後で、ストリームファイルが生成される。ファイルは逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータを符号化されたオーディオデータおよび符号化されたビデオデータに分離することができる。上で説明されたように、いくつかの実際のシナリオでは、たとえば、ビデオ会議システムでは、符号化されたオーディオデータと符号化されたビデオデータは多重化されない。この状況では、符号化されたデータは、逆多重化ユニット3204を通らずにビデオデコーダ3206およびオーディオデコーダ3208に送信される。
【０３０２】
逆多重化処理を介して、ビデオ要素ストリーム(ES)、オーディオES、および任意選択で字幕が生成される。上述の実施形態において説明されたようなビデオデコーダ30を含むビデオデコーダ3206は、ビデオフレームを生成するために上述の実施形態において示されたような復号方法によってビデオESを復号し、このデータを同期ユニット3212にフィードする。オーディオデコーダ3208は、オーディオフレームを生成するためにオーディオESを復号し、このデータを同期ユニット3212にフィードする。代替的に、ビデオフレームは、そのデータを同期ユニット3212にフィードする前に、バッファ(図14には示されていない)に記憶し得る。同様に、オーディオフレームは、それを同期ユニット3212にフィードする前に、バッファ(図14には示されていない)に記憶し得る。
【０３０３】
同期ユニット3212は、ビデオフレームおよびオーディオフレームを同期し、ビデオ/オーディオをビデオ/オーディオディスプレイ3214に供給する。たとえば、同期ユニット3212は、ビデオとオーディオ情報の提示を同期する。コーディングされたオーディオデータおよびビジュアルデータの提示に関するタイムスタンプならびにデータストリーム自体の配信に関するタイムスタンプを使用して、情報はシンタックスにおいてコーディングし得る。
【０３０４】
字幕がストリームに含まれる場合、字幕デコーダ3210が字幕を復号し、それをビデオフレームおよびオーディオフレームと同期して、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【０３０５】
本発明は、上述のシステムに限定されず、上述の実施形態におけるピクチャ符号化復号デバイスまたはピクチャ復号デバイスのいずれもが、他のシステム、たとえば車両システムに組み込まれ得る。
【０３０６】
数学演算子
本出願において使用される数学演算子は、Cプログラミング言語において使用されるものと類似している。しかしながら、整数除算および算術シフトの演算の結果がより正確に定義され、べき乗および実数値の除算などの追加の演算が定義される。番号付けおよびカウントの慣例は一般に0から開始し、たとえば、「最初の」は0番目と等価であり、「第2の」は1番目と等価である、などである。
【０３０７】
算術演算子
以下の算術演算子は次のように定義される。
+    加算
-    減算(2独立変数の演算子として)または否定(単項プレフィックス演算子として)
*    行列乗算を含む乗算
xy    べき乗。xのy乗を指定する。他の文脈では、べき乗として解釈されることを意図されない、上付き文字のためにそのような表記が使用される。
/    結果の小数点以下を切り捨てた整数除算。たとえば、7/4および-7/-4は1に切り捨てられ、-7/4および7/-4は-1に切り捨てられる。
÷    切り捨てまたは丸めが意図されない数式において除算を表記するために使用される。
【数２】
2021531682.tif 000014
切り捨てまたは丸めが意図されない数式において除算を表記するために使用される。
【数３】
2021531682.tif 000015
iがxからyを含めてyまでのすべての整数値をとる場合のf(i)の合計。
x%y    法。整数xおよびyに対してのみ定義される、xをyで割ったときの剰余であり、x>=0およびy>0である。
【０３０８】
論理演算子
以下の論理演算子は次のように定義される。
x&&y    xとyのブーリアン論理「積」
x||y    xとyのブーリアン論理「和」
!        ブーリアン論理「否定」
x?y:z    xが真である、または0に等しくない場合は値yとして評価され、それ以外の場合は値zとして評価される。
【０３０９】
関係演算子
以下の関係演算子は次のように定義される。
>    より大きい
>=    以上
<    より小さい
<=    以下
==    等しい
!=    等しくない
【０３１０】
関係演算子が、値「na」(該当なし)を割り当てられているシンタックス要素または変数に適用されるとき、値「na」は、そのシンタックス要素または変数に対して別個の値として扱われる。値「na」は、いずれの他の値とも等しくないとみなされる。
【０３１１】
ビットごとの演算子
以下のビットごとの演算子は次のように定義される。
&    ビットごとの「積」。整数の独立変数について演算するとき、整数値の2の補数表現について演算する。別の独立変数より少ないビットを含む二値の独立変数について演算するとき、短い方の独立変数は、0に等しいより上位のビットを追加することによって延長される。
|    ビットごとの「和」。整数の独立変数について演算するとき、整数値の2の補数表現について演算する。別の独立変数より少ないビットを含む二値の独立変数について演算するとき、短い方の独立変数は、0に等しいより上位のビットを追加することによって延長される。
^    ビットごとの「排他的論理和」。整数の独立変数について演算するとき、整数値の2の補数表現について演算する。別の独立変数より少ないビットを含む二値の独立変数について演算するとき、短い方の独立変数は、0に等しいより上位のビットを追加することによって延長される。
x>>y    xの2の補数整数表現の、二進でy桁の算術右シフト。この関数は、yの非負の整数値に対してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされるビットは、シフト演算の前にxのMSBに等しい値を有する。
x<<y    xの2の補数整数表現の、二進でy桁の算術左シフト。この関数は、yの非負の整数値に対してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされるビットは、0に等しい値を有する。
【０３１２】
割当て演算子
以下の算術演算子は次のように定義される。
=    割当て演算子
++    インクリメント、すなわちx++はx=x+1と等価である。アレイインデックスにおいて使用されるとき、インクリメント演算の前の変数の値として評価される。
--    デクリメント、すなわちx--はx=x-1と等価である。アレイインデックスにおいて使用されるとき、デクリメント演算の前の変数の値として評価される。
+=    指定される量だけインクリメント、すなわちx+=3はx=x+3と等価であり、x+=(-3)はx=x+(-3)と等価である。
-=    指定される量だけデクリメント、すなわちx-=3はx=x-3と等価であり、x-=(-3)はx=x-(-3)と等価である。
【０３１３】
範囲表記
値の範囲を指定するために以下の表記が使用される。
x=y..z    xは、両端を含めてyからzまでの整数値をとり、x、y、およびzは整数であり、zはyより大きい。
【０３１４】
数学的関数
以下の数学的関数が定義される。
【数４】
2021531682.tif 000016
Asin(x)    三角法の逆サイン関数であって、両端を含めて-1.0から1.0の範囲にある独立変数xについて演算し、出力値は、ラジアンを単位として、両端を含め-π÷2からπ÷2の範囲にある
Atan(x)    三角法の逆タンジェント関数であって、独立変数xについて演算し、出力値は、ラジアンを単位として、両端を含め-π÷2からπ÷2の範囲にある
【数５】
2021531682.tif 000017
Ceil(x)    x以上の最小の整数。
Clip1Y(x)=Clip3(0,(1<<BitDepthY)-1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)-1,x)
【数６】
2021531682.tif 000018
Cos(x)    ラジアンを単位とする独立変数xについて演算する三角法のコサイン関数。
Floor(x)    x以下の最大の整数。
【数７】
2021531682.tif 000019
Ln(x)    xの自然対数(eを底とする対数、eは自然対数の底である定数2.718281828…)。
Log2(x)    2を底とするxの対数。
Log10(x)    10を底とするxの対数。
【数８】
2021531682.tif 000020
【数９】
2021531682.tif 000021
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
【数１０】
2021531682.tif 000022
Sin(x)    ラジアンを単位とする独立変数xについて演算する三角法のサイン関数。
【数１１】
2021531682.tif 000023
Swap(x,y)=(y,x)
Tan(x)    ラジアンを単位とする独立変数xについて演算する三角法のタンジェント関数。
【０３１５】
演算の優先の順序
式における優先の順序が括弧の使用により明確に示されないとき、以下の規則が適用される。
-  より優先順位の高い演算は、より優先順位の低いあらゆる演算より前に評価される。
-  同じ優先順位の演算は、左から右に逐次評価される。
【０３１６】
以下のtable(表8)は、演算の優先順位を最上位から最下位まで指定し、table(表8)におけるより高い位置はより高い優先順位を示す。
【０３１７】
Cプログラミング言語においても使用されるそれらの演算子について、本明細書において使用される優先の順序は、Cプログラミング言語において使用されるものと同じである。
【０３１８】
【表８】
2021531682.tif 000024
【０３１９】
論理演算のテキストによる説明
テキストでは、以下の形式で数学的に記述されるような論理演算のステートメント
if(条件0)
ステートメント0
else if(条件1)
ステートメント1
…
else /*残りの条件についての参考のための注釈*/
ステートメントn
は、以下の方式で記述され得る。
次のように…/…次のことが当てはまる
-  条件0の場合、ステートメント0
-  そうではなく、条件1の場合、ステートメント1
-  …
-  それ以外の場合(残りの条件についての参考のための注釈)、ステートメントn
【０３２０】
テキストにおける「…である場合、そうではなく…である場合、それ以外の場合、…」ステートメントの各々は、「次のように…」または「…次のことが当てはまる」とともに導入され、その直後に「…である場合」が来る。「…である場合、そうではなく…である場合、それ以外の場合、…」の最後の条件は常に、「それ以外の場合、…」である。差し挟まれた「…である場合、そうではなく…である場合、それ以外の場合、…」ステートメントは、「次のように…」または「…次のことが当てはまる」を最後の「それ以外の場合、…」と照合することによって特定され得る。
【０３２１】
テキストでは、以下の形式で数学的に記述されるような論理演算のステートメント
if(条件0a&&条件0b)
ステートメント0
else if(条件1a||条件1b)
ステートメント1
…
else
ステートメントn
は、以下の方式で記述され得る。
次のように…/…次のことが当てはまる
-  以下の条件のすべてが真である場合、ステートメント0:
-  条件0a
-  条件0b
-  そうではなく、以下の条件のうちの1つまたは複数が真である場合、ステートメント1:
-  条件1a
-  条件1b
-  …
-  それ以外の場合、ステートメントn
【０３２２】
テキストでは、以下の形式で数学的に記述されるような論理演算のステートメント
if(条件0)
ステートメント0
if(条件1)
ステートメント1
は、以下の方式で記述され得る。
条件0のとき、ステートメント0
条件1のとき、ステートメント1
【０３２３】
本発明の実施形態はビデオコーディングに基づいて主に説明されたが、コーディングシステム10、エンコーダ20、およびデコーダ30(およびそれに対応してシステム10)の実施形態および本明細書で説明される他の実施形態は、静止ピクチャの処理またはコーディング、すなわち、あらゆる先行するピクチャまたは連続するピクチャとは独立な個々のピクチャの処理またはコーディングのためにも、ビデオコーディングにおけるように構成され得ることに留意されたい。一般に、ピクチャ処理コーディングが単一のピクチャ17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)だけが、利用可能ではないことがある。ビデオエンコーダ20およびビデオデコーダ30のすべての他の機能(ツールまたは技術とも呼ばれる)、たとえば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分262/362、イントラ予測254/354、ならびに/またはループフィルタリング220、320、およびエントロピーコーディング270、およびエントロピー復号304が、等しく静止ピクチャ処理のために使用され得る。
【０３２４】
たとえばエンコーダ20およびデコーダ30の実施形態、ならびに、たとえばエンコーダ20およびデコーダ30を参照して本明細書で説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体に記憶され、または、1つまたは複数の命令もしくはコードとして通信媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体はコンピュータ可読記憶媒体を含んでもよく、これは、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形コンピュータ可読記憶媒体に、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実施のための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０３２５】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光学ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用され得コンピュータによりアクセスされ得る任意の他の媒体を含み得る。また、あらゆる接続が適切にコンピュータ可読媒体と呼ばれる。たとえば、命令がウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに、非一時的な有形の記憶媒体を対象とすることが理解されるべきである。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光学ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu-ray(登録商標)ディスクを含み、ディスク(disk)は通常はデータを磁気的に再生し、ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０３２６】
命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造または本明細書で説明される技法の実装に適した任意の他の構造のいずれをも指し得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内で提供され、または合成されたコーデックに組み込まれ得る。また、本技法は1つまたは複数の回路または論理素子において完全に実装され得る。
【０３２７】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々なコンポーネント、モジュール、またはユニットが、開示される技法を実行するように構成されるデバイスの機能的な態様を強調するために本開示において説明されるが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明されたように、様々なユニットが、コーデックハードウェアユニットにおいて組み合わされてもよく、または、適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つまたは複数のプロセッサを含む相互に動作可能なハードウェアユニットの集合体によって提供されてもよい。
【符号の説明】
【０３２８】
12  ソースデバイス
13  通信チャネル
14  宛先デバイス
16  ピクチャソース
17  ピクチャデータ（ピクチャ）
18  前処理ユニット（プリプロセッサ）
19  前処理されたピクチャデータ（前処理されたピクチャ）
20  ビデオエンコーダ
21  符号化されたピクチャデータ
22  通信ユニット（通信インターフェース）
28  通信ユニット（通信インターフェース）
30  ビデオデコーダ
31  復号されたピクチャデータ（復号されたピクチャ）
32  後処理ユニット（ポストプロセッサ）
33  後処理されたピクチャデータ（後処理されたピクチャ）
34  表示デバイス
46  処理回路
201  入力インターフェース
203  ピクチャブロック
204  残差計算ユニット
205  残差ブロック
206  変換処理ユニット
207  変換係数
208  量子化ユニット
209  量子化された変換係数
210  逆量子化ユニット
211  逆量子化された残差係数
212  逆変換処理ユニット
213  再構築された残差ブロック
214  再構築ユニット（加算器または減算器）
215  再構築されたブロック
220  ループフィルタユニット（ループフィルタ）
221  フィルタリングされた再構築されたブロック
230  復号ピクチャバッファ
231  復号されたピクチャ
244  インター予測ユニット
254  イントラ予測ユニット
260  モード選択ユニット
262  区分ユニット
265  予測ブロック（予測子）
266  シンタックス要素
270  エントロピー符号化ユニット（エントロピーコーディング）
272  出力、出力インターフェース
304  エントロピー復号ユニット
309  量子化された係数
310  逆量子化ユニット
311  逆量子化された係数
312  逆変換処理ユニット
313  再構築された残差ブロック
314  再構築ユニット（加算器）
315  再構築されたブロック
320  ループフィルタユニット（ループフィルタ）
321  フィルタリングされたブロック
330  復号ピクチャバッファ
331  復号されたピクチャ
344  インター予測ユニット
354  イントラ予測ユニット
365  予測ブロック
400  ビデオコーディングデバイス
410  入口ポート（入力ポート）
420  受信機ユニット
430  中央処理装置（プロセッサ）
440  送信機ユニット
450  出口ポート（出力ポート）
460  メモリ
470  コーディングモジュール
502  プロセッサ
504  メモリ
506  データ
508  オペレーティングシステム
510  アプリケーションプログラム
512  バス
518  ディスプレイ
1210  角度alpha
1230  距離
1250  分離線
1600  復号デバイス
1601  受信モジュール
1602  区分パラメータ処理モジュール
1603  計算モジュール
1604  予測モジュール
3102  キャプチャデバイス
3106  端末デバイス
3108  スマートフォンまたはパッド
3110  コンピュータまたはラップトップ
3112  ネットワークビデオレコーダ/デジタルビデオレコーダ
3114  TV
3116  セットトップボックス
3118  ビデオ会議システム
3120  ビデオ監視システム
3122  携帯情報端末
3124  車載デバイス
3126  外部ディスプレイ
3202  プロトコル進行ユニット
3204  逆多重化ユニット
3206  ビデオデコーダ
3208  オーディオデコーダ
3210  字幕デコーダ
3212  同期ユニット
3214  ビデオ/オーディオディスプレイ
3216  ビデオ/オーディオ/字幕ディスプレイ
【図１Ａ】
2021531682.tif 000025
【図１Ｂ】
2021531682.tif 000026
【図２】
2021531682.tif 000027
【図３】
2021531682.tif 000028
【図４】
2021531682.tif 000029
【図５】
2021531682.tif 000030
【図６ａ】
2021531682.tif 000031
【図６ｂ】
2021531682.tif 000032
【図７】
2021531682.tif 000033
【図８】
2021531682.tif 000034
【図９】
2021531682.tif 000035
【図１０】
2021531682.tif 000036
【図１１】
2021531682.tif 000037
【図１２】
2021531682.tif 000038
【図１３】
2021531682.tif 000039
【図１４】
2021531682.tif 000040
【図１５】
2021531682.tif 000041
【図１６】
2021531682.tif 000042
【国際調査報告】
2021531682.tif 000043
2021531682.tif 000044