IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特許7469475交差成分線形モデル予測のためのフィルタリングの方法及び装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】交差成分線形モデル予測のためのフィルタリングの方法及び装置
(51)【国際特許分類】
   H04N 19/70 20140101AFI20240409BHJP
   H04N 19/593 20140101ALI20240409BHJP
   H04N 19/117 20140101ALI20240409BHJP
   H04N 19/134 20140101ALI20240409BHJP
   H04N 19/176 20140101ALI20240409BHJP
   H04N 19/186 20140101ALI20240409BHJP
【FI】
H04N19/70
H04N19/593
H04N19/117
H04N19/134
H04N19/176
H04N19/186
【請求項の数】 14
(21)【出願番号】P 2022540495
(86)(22)【出願日】2020-12-30
(65)【公表番号】
(43)【公表日】2023-03-02
(86)【国際出願番号】 RU2020050403
(87)【国際公開番号】W WO2021045654
(87)【国際公開日】2021-03-11
【審査請求日】2022-07-21
(31)【優先権主張番号】62/955,405
(32)【優先日】2019-12-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/958,293
(32)【優先日】2020-01-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】フィリポフ,アレクセイ コンスタンチノヴィッチ
(72)【発明者】
【氏名】ルフィツスキー,ヴァシリー アレクシエーヴィッチ
(72)【発明者】
【氏名】アルシナ,エレナ アレクサンドロブナ
【審査官】田部井 和彦
(56)【参考文献】
【文献】特表2019-530330(JP,A)
【文献】特開2021-005741(JP,A)
【文献】Benjamin Bross et al.,Versatile Video Coding (Draft 7) [online],JVET-P2001-vE (JVET-P2001-vE.docx),2019年11月14日,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P2001-v14.zip>,pp.19-21,38-42,96-106,198-205
【文献】Masaru Ikeda et al.,Non-CE3: On CCLM neighboring sample [online],JVET-P0297-v2,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P0297-v2.zip>,2019年09月27日
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/70
H04N 19/593
H04N 19/117
H04N 19/134
H04N 19/176
H04N 19/186
(57)【特許請求の範囲】
【請求項1】
クロマブロック予測方法であって、
ビットストリームから第1シンタックス要素をパースするステップと、
現在ブロックが属するピクチャのクロマフォーマットがYUV 4:2:2又はYUV 4:2:0であるかどうか及び少なくとも前記第1シンタックス要素に基づき前記現在ブロックのルーマ成分を処理して、前記現在ブロックのフィルタ処理されたルーマサンプルを取得するステップと、
前記フィルタ処理されたルーマサンプルに基づき前記現在ブロックのクロマサンプルの予測値を取得するステップと
を有し、
少なくとも前記第1シンタックス要素に基づき現在ブロックのルーマ成分を処理する前記ステップは、
前記第1シンタックス要素の値が第1値であるときにフィルタリング係数の第1セットを使用することによって前記現在ブロックの前記ルーマサンプルを処理すること、又は
前記第1シンタックス要素の値が第2値であるときにフィルタリング係数の第2セットを使用することによって前記現在ブロックの前記ルーマサンプルを処理することを
を有する、方法。
【請求項2】
前記第1シンタックス要素は、sps_chroma_vertical_collocated_flagである、
請求項1に記載の方法。
【請求項3】
前記第1シンタックス要素の値が第1値であるときに前記フィルタリング係数の第1セットを使用することによって前記現在ブロックの前記ルーマサンプルを処理することは、
少なくともsps_chroma_vertical_collocated_flagが1に等しい場合に、前記フィルタ処理されたルーマサンプルが次の
pDsY[x][y]=
(F3[1][0]*pY[SubWidthC*x][SubHeightC*y-1]
+F3[0][1]*pY[SubWidthC*x-1][SubHeightC*y]
+F3[1][1]*pY[SubWidthC*x][SubHeightC*y]
+F3[2][1]*pY[SubWidthC*x+1][SubHeightC*y]
+F3[1][2]*pY[SubWidthC*x][SubHeightC*y+1]
+4)>>3
のように導出されることを有し、
前記フィルタリング係数の第1セットは、F3[1][0]=1、F3[0][1]=1、F3[1][1]=4、F[2][1]=1、F3[1][2]=1を有し、
pY[x][y]は、前記ルーマサンプルを表し、
pDsY[x][y]は、前記フィルタ処理されたルーマサンプルを表し、
SubWidthCは、前記現在ブロックの幅であり、
SubHeightCは、前記現在ブロックの高さである、
請求項2に記載の方法。
【請求項4】
前記第1シンタックス要素の値が第2値であるときに前記フィルタリング係数の第2セットを使用することによって前記現在ブロックの前記ルーマサンプルを処理することは、
少なくともsps_chroma_vertical_collocated_flagが0に等しい場合に、前記フィルタ処理されたルーマサンプルが次の
pDsY[x][y]=
(F4[0][1]*pY[SubWidthC*x-1][SubHeightC*y]
+F4[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1]
+F4[1][1]*pY[SubWidthC*x][SubHeightC*y]
+F4[1][2]*pY[SubWidthC*x][SubHeightC*y+1]
+F4[2][1]*pY[SubWidthC*x+1][SubHeightC*y]
+F4[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3
のように導出されることを有し、
前記フィルタリング係数の第2セットは、F4[0][1]=1、F4[0][2]=1、F4[1][1]=2、F[1][2]=2、F4[2][1]=1、F4[2][2]=1を有し、
pY[x][y]は、前記ルーマサンプルを表し、
pDsY[x][y]は、前記フィルタ処理されたルーマサンプルを表し、
SubWidthCは、前記現在ブロックの幅であり、
SubHeightCは、前記現在ブロックの高さである、
請求項2に記載の方法。
【請求項5】
前記フィルタ処理されたルーマサンプルに基づき前記現在ブロックの前記クロマサンプルの前記予測値を取得する前記ステップは、
前記クロマサンプルの前記予測値が次の
predSamples[x][y]=
Clip1(((pDsY[x][y]*a)>>k)+b)
のように導出されることを有し、
predSamples[x][y]は、前記現在ブロックの前記クロマサンプルの前記予測値を表し、
pDsY[x][y]は、前記フィルタ処理されたルーマサンプルを表し、
x=0..nTbW-1、y=0..nTbH-1であり、
nTbWは、変換ブロックの幅を示し、nTbHは、前記変換ブロックの高さを示す、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
当該方法は、前記ビットストリームをパースして第2シンタックス要素を取得するステップを更に有し、
前記第2シンタックス要素は、現在の復号化に使用されるイントラ予測モードがINTRA_LT_CCLM、INTRA_L_CCLM又はINTRA_T_CCLMイントラ予測モードのうちの1つであることを示すために使用される、
請求項1乃至5のうちいずれか一項に記載の方法。
【請求項7】
当該方法は、ビデオシーケンス内の現在画像ブロックを復号するために使用され、
前記現在画像ブロックは、最初のルーマブロック及び現在のクロマブロックを含み、前記ビデオシーケンス内の画像は、4:2:0フォーマット又は4:2:2フォーマットにある、
請求項1乃至6のうちいずれか一項に記載の方法。
【請求項8】
ビットストリームから第1シンタックス要素をパースする前記ステップは、
前記ビットストリーム内のシーケンスパラメータセット(SPS)をパースして前記第1シンタックス要素を取得することを有する、
請求項1乃至7のうちいずれか一項に記載の方法。
【請求項9】
当該方法は、前記現在ブロックに隣接する選択された位置にあるルーマサンプルに、前記フィルタリング係数の第1セット及び前記フィルタリング係数の第2セットから前記第1シンタックス要素に基づき決定されたフィルタリング係数のセットを適用するステップを更に有し、
前記現在ブロックに隣接する選択された位置にある前記ルーマサンプルは、前記現在ブロックの左隣にある1又は複数の列のサンプル及び/又は前記現在ブロックの上隣にある1又は複数の行のサンプルである、
請求項1乃至8のうちいずれか一項に記載の方法。
【請求項10】
当該方法は、SubWidthC及びSubHeightCの両方が1に等しい場合に、前記現在ブロックのダウンサンプリングされた同一位置にあるルーマサンプルが次の
pDsY[x][y]=pY[x][Y]
のように導出されることを更に有し、
pY[x][y]は、同一位置にあるルーマサンプルを表し、
pDsY[x][y]は、前記ダウンサンプリングされた同一位置にあるルーマサンプルを表し、
SubWidthCは、前記現在ブロックの幅であり、
SubHeightCは、前記現在ブロックの高さである、
請求項1乃至9のうちいずれか一項に記載の方法。
【請求項11】
前記同一位置あるルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされ、
x=0..nTbW*SubWidthC-1、y=0..nTbH*SubHeightC-1であり、
(xTbY,yTbY)は、現在ルーマ位置を示し、
nTbWは、変換ブロックの幅を示し、nTbHは、前記変換ブロックの高さを示す、
請求項10に記載の方法。
【請求項12】
コンピュータデバイスによって実行される場合に、前記コンピュータデバイスに、請求項1乃至11のうちいずれか一項に記載の方法を実行させるプログラムコードを担持する非一時的なコンピュータ可読媒体。
【請求項13】
デコーダ又はエンコーダを有し、
1つ以上のプロセッサと、
前記プロセッサへ結合され、前記プロセッサによって実行されるプログラミングを記憶している非一時的なコンピュータ可読記憶媒体と
を有し、
前記プログラミングは、前記プロセッサによって実行される場合に、請求項1乃至11のうちいずれか一項に記載の方法を実行するように前記デコーダ又はエンコーダを構成する、
コーディングデバイス。
【請求項14】
ビットストリームの形でビデオータを記憶するよう構成される非一時的なメモリストレージと、
請求項1乃至11のうちいずれか一項に記載の方法を実行するよう構成されるビデオデコーダと
を有するビデオデータ復号化デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本願(開示)の実施形態は、ピクチャ処理の分野に、より具体的には、交差成分線形モデル(CCLM)を使用したイントラ予測(例えば、クロマイントラ予測)に、より具体的には、異なるクロマフォーマットによるイントラ予測のためにCCLMで使用される空間フィルタリングに関係がある。
【背景技術】
【0002】
ビデオコーディング(ビデオ符号化及び復号化)は、広範囲のデジタルビデオアプリケーション、例えば、放送デジタルTV、インターネット及びモバイルネットワークでのビデオ伝送、ビデオチャットなどの実時間の会話アプリケーション、ビデオ会議、DVD及びブルーレイディスク、ビデオコンテンツ取得及び編集システム、セキュリティアプリケーションのカムコーダで、使用されている。
【0003】
比較的に短いビデオでさえ描画するのに必要とされるビデオデータの量は相当であり、バンド幅容量が限られている通信網でデータがストリーミング又は別なふうに通信される場合に困難が生じる可能性がある。よって、ビデオデータは、現代の電気通信網で通信される前に一般的には圧縮される。メモリ資源が限られる場合があるので、ビデオが記憶デバイスに記憶されるときにビデオのサイズも問題になる。ビデオ圧縮デバイスはしばしば、伝送又は記憶の前にビデオデータをコード化するために送信元でソフトウェア及び/又はハードウェアを使用し、それによって、デジタルビデオ画像を表現するために必要とされるデータの量を減らす。圧縮されたデータは、次いで、ビデオデータを復号するビデオ圧縮解除デバイスによって送り先で受け取られる。限られたネットワーク資源及びより高いビデオ品質の需要の更なる高まりにより、ピクチャ品質を全く又はほとんど犠牲にせずに圧縮比を改善する改善された圧縮及び圧縮解除技術が望ましい。
【発明の概要】
【0004】
本願の実施形態は、符号化及び復号化のための装置及び方法を提供する。
【0005】
本開示の第1の態様に従って、それは、線形モデルを使用するイントラ予測の方法に関係があり、方法は、コーディング装置(特に、イントラ予測のための装置)によって実行される。方法は、
現在ブロックが属するピクチャのクロマフォーマットに基づき、ブロックに属する(つまり、現在ブロックの内部サンプル)ルーマサンプル(例えば、各ルーマサンプル)に対するフィルタを決定することを含み、特に、異なるルーマサンプルは、異なるフィルタに対応し得る。基本的には、それが境界にあるかどうかに依存する。
現在ブロックに属するルーマサンプル(例えば、各ルーマサンプル)の位置で、決定されたフィルタを再構成されたルーマサンプルに適用して、フィルタ処理された再構成されたルーマサンプル(例えば、Rec’[x,y])を取得する。
フィルタ処理された再構成されたルーマサンプルに基づき、線形モデル導出の入力として使用されるルーマサンプルのセットを取得する。
線形モデル導出の線形モデル係数及びフィルタ処理された再構成されたルーマサンプルに基づき交差成分予測(例えば、ルーマからクロマの交差成分予測又はCCLM予測)を実行する。
【0006】
本願の実施形態は、CCLMのルーマフィルタに関係がある。本開示は、ルーマサンプルのためのフィルタリングに関する。本開示は、CCML内で実行されるフィルタ選択に関係がある。
【0007】
CCLMは、クロマ予測に関係があり、それは、再構成されたルーマを使用してクロマ信号を予測する,
CCLM==chroma from luma。
【0008】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、フィルタを決定することは、
現在ブロック内のルーマサンプルの位置及びクロマフォーマットに基づきフィルタを決定すること、又は
現在ブロック内のルーマサンプルの各々の位置及びクロマフォーマットに基づき、現在ブロックに属する複数のルーマサンプルに対する各々のフィルタを決定すること
を有する。現在ブロックに隣接するサンプルが利用可能である場合に、フィルタは、現在ブロックの境界エリアをフィルタ処理するためにそれらも使用し得る。
【0009】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、フィルタを決定することは、次の
現在ブロックが属するピクチャのクロマフォーマット、
現在ブロック内のルーマサンプルの位置、
現在ブロックに属するルーマサンプルの数、
現在ブロックの幅及び高さ、及び
現在ブロック内のルーマサンプルに対するサブサンプリングされたクロマサンプルの位置
のうちの1つ以上に基づき、フィルタを決定することを有する。
【0010】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、サブサンプリングされたクロマサンプルが対応するルーマサンプルと同一位置にない場合に、複数のフィルタと現在ブロックの幅及び高さの値との間の第1関係(例えば、表4)が、フィルタの決定のために使用され、
サブサンプリングされたクロマサンプルが対応するルーマサンプルと同一位置にある場合に、複数のフィルタと現在ブロックの幅及び高さの値との間の第2又は第3関係(例えば、表2又は表3のどちらか一方)が、フィルタの決定のために使用される。
【0011】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、複数のフィルタと現在ブロックの幅及び高さの値との間の第2又は第3関係(例えば、表2又は表3のどちらか一方)は、現在ブロックに属するルーマサンプルの数に基づき決定される。
【0012】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、フィルタは、現在ブロックのクロマ成分がサブサンプリングされない場合に、フィルタ処理された再構成されたルーマサンプルの位置に水平方向及び垂直方向に隣接する位置にある非ゼロ係数を含む。
【0013】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、再構成されたルーマサンプルのエリアは、フィルタ処理された再構成されたサンプルの位置と相対的である複数の再構成されたルーマサンプルを含み、フィルタ処理された再構成されたルーマサンプルの位置は、現在ブロックに属するルーマサンプルの位置に対応し、フィルタ処理された再構成されたルーマサンプルの位置は、現在ブロックのルーマブロック内にある。
【0014】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、再構成されたルーマサンプルのエリアは、フィルタ処理された再構成されたルーマサンプルの位置に水平方向及び垂直方向に隣接する位置にある複数の再構成されたルーマサンプルを含み、フィルタ処理された再構成されたルーマサンプルの位置は、現在ブロックに属するルーマサンプルの位置に対応し、フィルタ処理された再構成されたルーマサンプルの位置は、現在ブロック(例えば、現在ブロックの現在ルーマブロック又はルーマ成分)内にある。そのようなものとして、フィルタ処理された再構成されたルーマサンプルの位置は、現在ブロック内にある(図8の右部分、ルーマサンプルにフィルタを適用する)。
【0015】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、クロマフォーマットはYCbCr 4:4:4クロマフォーマット、YCbCr 4:2:0クロマフォーマット、YCbCr 4:2:2クロマフォーマット、又はモノクロを有する。
【0016】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、線形モデル導出の入力として使用されるルーマサンプルのセットは、
フィルタ処理された再構成されたルーマサンプル(例えば、Rec’[x,y])からサブサンプリングされる境界ルーマ再構成サンプルを有する。
【0017】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、現在クロマブロックの予測子は、

pred(i,j)=α・rec’(i,j)+β

に基づき取得される。ここで、pred(i,j)は、クロマサンプルを表し、rec(i,j)は、対応する再構成されたルーマサンプルを表す。
【0018】
そのようなものとして第1の態様に係る方法のとり得る実施形態で、線形モデルは、多方向線形モデル(MDLM)であり、線形モデル係数は、MDLMを取得するために使用される。
【0019】
第2の態様に従って、本願は、符号化デバイスによって実装される符号化の方法であって、
線形モデル(例えば、交差成分線形モデル,CCLM、又は多方向線形モデル,MDLM)を用いてイントラ予測を実行することと、
複数のシンタックス要素を含むビットストリームを生成することであり、複数のシンタックス要素は、ブロックに属するルーマサンプルに対するフィルタの選択を示すシンタックス要素(例えば、CCLMのルーマフィルタの選択、特に、sps_cclm_colocated_chroma_flagのような、SPSフラグ)を含む、ことと
を有する方法に関係がある。
【0020】
そのようなものとして第2の態様に係る方法のとり得る実施形態で、シンタックス要素の値が0又はFALSEであるとき、フィルタは、線形モデル決定及び予測のためにルーマサンプルに適用され、
シンタックス要素の値が1又はTRUEであるとき、フィルタは、線形モデル決定及び予測のためにルーマサンプルに適用されない。
【0021】
第3の態様に従って、本願は、復号化デバイスによって実装される復号化の方法であって、
複数のシンタックス要素をビットストリームからパースすることであり、複数のシンタックス要素は、ブロックに属するルーマサンプルに対するフィルタの選択を示すシンタックス要素(例えば、CCLMのルーマフィルタの選択、特に、sps_cclm_colocated_chroma_flagのような、SPSフラグ)を含む、ことと、
示された線形モデル(例えば、CCLM)を用いてイントラ予測を実行することと
を有する方法に関係がある。
【0022】
そのようなものとして第3の態様に係る方法のとり得る実施形態で、シンタックス要素の値が0又はFALSEであるとき、フィルタは、線形モデル決定及び予測のためにルーマサンプルに適用され、
シンタックス要素の値が1又はTRUEであるとき、フィルタは、線形モデル決定及び予測のためにルーマサンプルに適用されない。例えば、同一位置にある場合に、ルーマフィルタを使用しない。
【0023】
第4の態様に従って、本願は、
1つ以上のプロセッサと、
プロセッサへ結合され、プロセッサによって実行されるプログラミングを記憶している非一時的なコンピュータ可読記憶媒体と
を有し、プログラミングは、プロセッサによって実行される場合に、第1若しくは第2の態様、又は第1若しくは第2若しくは第3の態様のとり得る実施形態に係る方法を実行するようにデコーダを構成する、デコーダに関係がある。
【0024】
第5の態様に従って、本願は、
1つ以上のプロセッサと、
プロセッサへ結合され、プロセッサによって実行されるプログラミングを記憶している非一時的なコンピュータ可読記憶媒体と
を有し、プログラミングは、プロセッサによって実行される場合に、第1若しくは第2の態様、又は第1若しくは第2若しくは第3の態様のとり得る実施形態に係る方法を実行するようにエンコーダを構成する、エンコーダに関係がある。
【0025】
第6の態様に従って、本願は、線形モデルを使用するイントラ予測のための装置であって、
現在ブロックが属するピクチャのクロマフォーマットに基づき、ブロックに属するルーマサンプル(例えば、各ルーマサンプル)に対するフィルタを決定するよう構成される決定ユニットと、
現在ブロックに属するルーマサンプル(例えば、各ルーマサンプル)の位置で、決定されたフィルタを再構成されたルーマサンプルに適用して、フィルタ処理された再構成されたルーマサンプル(例えば、Rec’[x,y])を取得するよう構成されるフィルタリングユニットと、
フィルタ処理された再構成されたルーマサンプルに基づき、線形モデル導出の入力として使用されるルーマサンプルのセットを取得するよう構成される取得ユニットと、
線形モデル導出の線形モデル係数及びフィルタ処理された再構成されたルーマサンプルに基づき交差成分予測(例えば、ルーマからクロマの交差成分予測又はCCLM予測)を実行するよう構成される予測ユニットと
を有する装置に関係がある。
【0026】
本願の第1の態様に係る方法は、本願の第6の態様に係る装置によって実行され得る。本願の第6の態様に係る装置の更なる特徴及び実施形態は、本願の第1の態様に係る方法の特徴及び実施形態に対応する。
【0027】
本願の他の態様に従って、線形モデルを使用するイントラ予測の方法が提供される。方法は、次の
現在ブロックが属するピクチャのクロマフォーマットに基づきダウンサンプリングフィルタの組を決定するステップと、
再構成された隣接する上側ルーマサンプルが利用可能でないとき、再構成されたルーマブロックからのパディングによって隣接サンプルの2つの上行を取得するステップと、
再構成された隣接する左側ルーマサンプルが利用可能でないとき、再構成されたルーマサンプルからのパディングによって隣接サンプルの3つの左列を取得するステップと、
現在ブロックのルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルを取得するステップと、
ダウンサンプリングフィルタの組の中の各々のダウンサンプリングフィルタを、取得された隣接サンプルの2つの上行のうちの選択されたサンプルに適用することによって、上側のダウンサンプリングされたルーマ参照サンプルを取得するステップであり、選択されたサンプルが左上位置(1202)にあるとき、各々のダウンサンプリングフィルタは、再構成された隣接サンプルとパディングされた隣接サンプルとの組み合わせに適用される、ステップと、
ダウンサンプリングフィルタの組の中の各々のダウンサンプリングフィルタを、取得された隣接サンプルの3つの左列のうちの選択されたサンプルに適用することによって、左側のダウンサンプリングされたルーマ参照サンプルを取得するステップと、
上側若しくは左側又は上側及び左側の組み合わせのダウンサンプリングされたルーマ参照サンプルと、ダウンサンプリングされたルーマ参照サンプルに対応するクロマ参照サンプルとに基づき、1つ以上の線形モデル係数を決定するステップと、
線形モデル係数及びルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルに基づき、ルーマブロックに対応するクロマブロックの予測サンプルを取得するステップと
を有する。
【0028】
本願の第1の態様に係る方法は、本願の第6の態様に係る装置によって実行され得る。本願の第1の態様に係る方法の更なる特徴及び実施形態は、本願の第6の態様に係る装置の特徴及び実施形態に対応する。
【0029】
他の態様に従って、本願は、プロセッサ及びメモリを含む、ビデオストリームを復号する装置に関係がある。メモリは、プロセッサに、第1又は第3の態様に係る方法を実行させる命令を記憶している。
【0030】
他の態様に従って、本願は、プロセッサ及びメモリを含む、ビデオストリームを符号化する装置に関係がある。メモリは、プロセッサに、第2の態様に係る方法を実行させる命令を記憶している。
【0031】
他の態様に従って、実行される場合に、ビデオデータをコード化するよう構成される1つ以上のプロセッサをもたらす命令が記憶されているコンピュータ可読記憶媒体が、提案される。命令は、1つ以上のプロセッサに、第1若しくは第2の態様又は第1若しくは第2若しくは第3の態様のいずれかのとり得る実施形態に係る方法を実行させる。
【0032】
他の態様に従って、本願は、第1若しくは第2の態様又は第1若しくは第2若しくは第3の態様のいずれかのとり得る実施形態に係る方法を実行するためのプログラムコードを含むコンピュータプログラムに関係がある。
【0033】
上記の態様及びそれらの態様のいずれかのとり得る実施形態で、現在ブロックのルーマブロック内の再構成されたルーマサンプルに、及び/又は現在ブロックに隣接する選択された位置でのルーマサンプルにフィルタを適用するために、フィルタは、ダウンサンプリングフィルタの組に属し、ダウンサンプリングフィルタの組には、削減された数のフィルタしか含まれない。相応して、それは、再構成されたルーマサンプルに、及び/又は現在ブロックに隣接する選択された位置でのルーマサンプルに適用されるフィルタのタップの数を減らし得る。
【0034】
1つ以上の実施形態の詳細は、添付の図面及び以下の説明で示される。他の特徴、目的、及び利点は、明細書、図面、及び特許請求の範囲から明らかになるだろう。
【0035】
以下では、本願の実施形態が、添付の図及び図面を参照して更に詳細に記載される。
【図面の簡単な説明】
【0036】
図1A】本願の実施形態を実装するよう構成されたビデオコーディングシステムの例を示すブロック図である。
図1B】本願の実施形態を実装するよう構成されたビデオコーディングシステムの他の例を示すブロック図である。
図2】本願の実施形態を実装するよう構成されたビデオエンコーダの例を示すブロック図である。
図3】本願の実施形態を実装するよう構成されたビデオデコーダの例示的な構造を示すブロック図である。
図4】本開示の実施形態に係る符号化装置又は復号化装置の例を表すブロック図である。
図5】本開示の例示的な実施形態に係る符号化装置又は復号化装置の他の例を表すブロック図である。
図6】クロマイントラ予測のための交差成分線形モデルの概念を表す図である。
図7】線形モデルパラメータ導出の簡略化された方法を表す図である。
図8】クロマフォーマットYUV 4:2:0についてルーマサンプルをダウンサンプリングするプロセスと、それらがどのようにクロマサンプルに対応するかとを表す図である。
図9】クロマフォーマットYUV 4:2:0の場合にダウンサンプリングフィルタリングに使用されるルーマサンプルの空間位置を表す図である。
図10A】異なるクロマサンプルタイプを表す図である。
図10B】異なるクロマサンプルタイプを表す図である。
図11】本開示の例示的な実施形態に係る方法を表す図である。
図12A】左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:0として指定されるか、又はブロック境界がCTUライン境界である実施形態を示す。
図12B】ブロック境界がCTUライン境界ではなく、左上サンプルが利用可能であり、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される実施形態を示す。
図12C】左上サンプルが利用可能ではなく、かつ、クロマフォーマットがYUV 4:2:0として指定されるか、又はブロック境界がCTUライン境界である実施形態を示す。
図12D】ブロック境界がCTUライン境界ではなく、左上サンプルが利用可能であり、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される実施形態を示す。
図13】例示的な3-タップフィルタ1302による再構成されたルミナンスブロック1301のフィルタリング動作を示す。
図14】本願の実施形態に係るクロマブロック予測の方法を表す。
図15】本願の実施形態に係るデバイスを表す。
図16】コンテンツ配信サービスを実現するコンテンツ供給システム3100の構造の例を示すブロック図である。
図17】端末デバイスの例の構造を示すブロック図である。
【発明を実施するための形態】
【0037】
以下では、同じ参照符号は、明示的に別段の定めがない場合には、同じ又は少なくとも機能的に同等の特徴を参照する。
【0038】
以下の記載では、本開示の部分を形成し、実例として、本願の実施形態の具体的な態様、又は本願の実施形態が使用される可能性がある具体的な態様を示す添付の図が、参照される。本願の実施形態は、他の態様で使用され、図に表されていない構造的又は論理的な変化を含んでもよい、ことが理解される。
【0039】
次の略称が適用される:
ABT:asymmetric BT
AMVP:advanced motion vector prediction
ASIC:application-specific integrated circuit
AVC:Advanced Video Coding
B:bidirectional prediction
BT:binary tree
CABAC:context-adaptive binary arithmetic coding
CAVLC:context-adaptive variable-length coding
CD:compact disc
CD-ROM:compact disc read-only memory
CPU:central processing unit
CRT:cathode-ray tube
CTU:coding tree unit
CU:coding unit
DASH:Dynamic Adaptive Streaming over HTTP
DCT:discrete cosine transform
DMM:depth modeling mode
DRAM:dynamic random-access memory
DSL:digital subscriber line
DSP:digital signal processor
DVD:digital video disc
EEPROM:electrically-erasable programmable read-only memory
EO:electrical-to-optical
FPGA:field-programmable gate array
FTP:File Transfer Protocol
GOP:group of pictures
GPB:generalized P/B
GPU:graphics processing unit
HD:high-definition
HEVC:High Efficiency Video Coding
HM:HEVC Test Model
I:intra-mode
IC:integrated circuit
ISO/IEC:International Organization for Standardization/International Electrotechnical Commission
ITU-T:International Telecommunications Union Telecommunication Standardization Sector
JVET:Joint Video Exploration Team
LCD:liquid-crystal display
LCU:largest coding unit
LED:light-emitting diode
MPEG:Motion Picture Expert Group
MPEG-2:Motion Picture Expert Group 2
MPEG-4:Motion Picture Expert Group 4
MTT:multi-type tree
mux-demux:multiplexer-demultiplexer
MV:motion vector
NAS:network-attached storage
OE:optical-to-electrical
OLED:organic light-emitting diode
PIPE:probability interval portioning entropy
P:unidirectional prediction
PPS:picture parameter set
PU:prediction unit
QT:quadtree, quaternary tree
QTBT:quadtree plus binary tree
RAM:random-access memory
RDO:rate-distortion optimization
RF:radio frequency
ROM:read-only memory
Rx:receiver unit
SAD:sum of absolute differences
SBAC:syntax-based arithmetic coding
SH:slice header
SPS:sequence parameter set
SRAM:static random-access memory
SSD:sum of squared differences
SubCE:SubCore Experiment
TCAM:ternary content-addressable memory
TT:ternary tree
Tx:transmitter unit
TU:transform unit
UDP:User Datagram Protocol
VCEG:Video Coding Experts Group
VTM:VVC Test Model
VVC:Versatile Video Coding
【0040】
例えば、記載されている方法に関連する開示は、方法を実行するよう構成された対応するデバイス又はシステムにも当てはまり、その逆も同様であり得る、ことが理解される。例えば、1つ又は複数の具体的な方法ステップが記載される場合に、対応するデバイスは、記載されている1つ又は複数の方法ステップを実行する1つ又は複数のユニット、例えば、機能ユニット(例えば、1つ又は複数のステップを実行する1つのユニット、あるいは、複数のステップのうちの1つ以上を夫々が実行する複数のユニット)を、たとえそのような1つ以上のユニットが明示的に記載又は図示されていないとしても、含んでよい。他方で、例えば、具体的な装置が1つ又は複数のユニット、例えば、機能ユニットに基づいて記載される場合に、対応する方法は、1つ又は複数のユニットの機能を実行する1つのステップ(例えば、1つ又は複数のユニットの機能を実行する1つ又は複数のステップ、あるいは、複数のユニットのうちの1つ以上の機能を夫々が実行する複数のステップ)を、たとえそのような1つ又は複数のステップが明示的に記載又は図示されていないとしても、含んでよい。更に、ここで記載されている様々な例示的な実施形態及び/又は態様の特徴は、特段の断りのない限りは、互いに組み合わされてよい、ことが理解される。
【0041】
ビデオコーディングは、通常は、ビデオ又はビデオシーケンスを形成するピクチャの連続を処理することを指す。「ピクチャ」との用語の代わりに、「フレーム」又は「画像」との用語が、ビデオコーディングの分野では同義的に使用されることがある。ビデオコーディング(又はコーディング全般)は、2つの部分、すなわち、ビデオ符号化及びビデオ復号化を有する。ビデオ符号化は、送信元側で行われ、通常、(より効率的な記憶及び/又は伝送のために)ビデオピクチャを表すために必要なデータの量を減らすよう原ビデオピクチャを(例えば、圧縮によって)処理することを有する。ビデオ復号化は、送信先側で行われ、通常、ビデオピクチャを再構成するようエンコーダと比較して逆の処理を有する。ビデオピクチャ(又はピクチャ全般)の“コーディング”に言及している実施形態は、ビデオピクチャ又は各々のビデオシーケンスの“符号化”又は“復号化”に関係があると理解されるべきである。符号化部分及び復号化部分の組み合わせは、CODEC(Coding and Decoding)とも呼ばれる。
【0042】
可逆ビデオコーディングの場合に、原ビデオピクチャは再構成可能である。すなわち、再構成されたビデオピクチャは、(記憶又は伝送中に伝送損失又は他のデータ損失がないとして)原ビデオピクチャと同じ品質を有する。不可逆ビデオコーディングの場合に、例えば、量子化による、更なる圧縮が、ビデオピクチャを表すデータの量を低減するために実行され、ビデオピクチャは、デコーダで完全には再構成され得ない。すなわち、再構成されたビデオピクチャの品質は、原ビデオピクチャの品質と比較して低下又は悪化する。
【0043】
いくつかのビデオコーディング標準規格は、“不可逆ハイブリッドビデオコーデック”のグループに属する(すなわち、サンプル領域での空間及び時間予測と、変換領域で量子化を適用する2D変換コーディングとを組み合わせる)。ビデオシーケンスの各ピクチャは、通常、重なり合わないブロックの組に分割され、コーディングは、通常はブロックレベルで実行される。言い換えると、エンコーダでは、ビデオは、通常、例えば、空間(イントラピクチャ)予測及び/又は時間(インターピクチャ)予測を使用して予測ブロックを生成し、現在のブロック(現在処理中の/処理されるべきブロック)から予測ブロックを減じて残差ブロックを取得し、残差ブロックを変換し、変換領域で残差ブロックを量子化して、送信されるべきデータの量を低減すること(圧縮)によって、ブロック(ビデオブロック)レベルで処理、すなわち、符号化され、一方、デコーダでは、エンコーダと比較して逆の処理が、表示のために現在のブロックを再構成するよう、符号化又は圧縮されたブロックに適用される。更に、エンコーダは、デコーダ処理ループを複製し、それにより、両方が、その後のブロックを処理、すなわち、コーディングするために、同じ予測(例えば、イントラ及びインター予測)及び/又は再構成を生成することになる。
【0044】
以下では、ビデオコーディングシステム10、ビデオエンコーダ20、及びビデオデコーダ30の実施形態が、図1から3に基づいて説明される。
【0045】
図1Aは、例となるコーディングシステム10、例えば、本願の技術を利用し得るビデオコーディングシステム10(略して、コーディングシステム10)を表す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(略して、エンコーダ20)及びビデオデコーダ30(略して、デコーダ30)は、本願で記載されている様々な例に従う技術を実行するよう構成され得るデバイスの例を表す。
【0046】
図1Aに示されるように、コーディングシステム10は、符号化されたピクチャデータ21を、例えば、符号化されたピクチャデータ21を復号する送信先デバイス14へ供給するよう構成された送信元デバイス12を有する。
【0047】
送信元デバイス12は、エンコーダ20を有し、更には、すなわち、任意に、ピクチャソース16、プリプロセッサ(又は前処理ユニット)18、例えば、ピクチャプリプロセッサ18、及び通信インターフェース又は通信ユニット22を有してよい。
【0048】
ピクチャソース16は、あらゆる種類のピクチャ捕捉デバイス、例えば、現実世界のピクチャを捕捉するカメラ、及び/又はあらゆる種類のピクチャ生成デバイス、例えば、コンピュータアニメーション化されたピクチャを生成するコンピュータグラフィクスプロセッサ、あるいは、現実世界のピクチャ、コンピュータにより生成されたピクチャ(例えば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)及び/又はそれらのあらゆる組み合わせ(例えば、拡張現実(AR)ピクチャ)を取得及び/又は供給するあらゆる種類の他のデバイスを有するか、又はそのようなものであってよい。ピクチャソースは、上記のピクチャのいずれかを記憶するあらゆる種類のメモリ又はストレージであってよい。
【0049】
プリプロセッサ18及び前処理ユニット18によって実行される処理と区別して、ピクチャ又はピクチャデータ17は、ローピクチャ又はローピクチャデータ17とも呼ばれ得る。
【0050】
プリプロセッサ18は、(ロー)ピクチャデータ17を受け取り、そして、前処理されたピクチャ19又は前処理されたピクチャデータ19を取得するようピクチャデータ17に対して前処理を実行するよう構成される。プリプロセッサ18によって実行される前処理は、例えば、トリミング、カラーフォーマット変換(例えば、RGBからYCbCrへ)、色補正、又はノイズ除去を有してよい。前処理ユニット18は任意のコンポーネントであってよい、ことが理解され得る。
【0051】
ビデオエンコーダ20は、前処理されたピクチャデータ19を受け取り、符号化されたピクチャデータ21を供給するよう構成される(更なる詳細は、例えば、図2に基づいて、以下で説明される)。
【0052】
送信元デバイス12の通信インターフェース22は、符号化されたピクチャデータ21を受け取り、符号化されたピクチャデータ21(又はそのあらゆる更に処理されたバージョン)を他のデバイス、例えば、送信先デバイス14又は何らかの他のデバイスへ、記憶又は直接の再構成のために通信チャネル13を介して送信するよう構成されてよい。
【0053】
送信先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を有し、更には、すなわち、任意に、通信インターフェース又は通信ユニット28、ポストプロセッサ32(又は後処理ユニット32)、及び表示デバイス34を有してよい。
【0054】
送信先デバイス14の通信インターフェース28は、符号化されたピクチャデータ21(又はそのあらゆる更に処理されたバージョン)を、例えば、送信元デバイス12から直接に、又は何らかの他のソース、例えば、記憶デバイス、例えば、符号化ピクチャデータ記憶デバイスから受信し、符号化されたピクチャデータ21をデコーダ30へ供給するよう構成される。
【0055】
通信インターフェース22及び通信インターフェース28は、送信元デバイス12と送信先デバイス14との間の直接通信リンク、例えば、直接の有線又は無線接続を介して、あるいは、あらゆる種類のネットワーク、例えば、有線若しくは無線ネットワーク又はそれらの任意の組み合わせ、又はあらゆる種類のプライベート及びパブリックネットワーク、あるいは、あらゆる種類のそれらの組み合わせを介して、符号化されたピクチャデータ21又は符号化されたデータ13を送信又は受信するよう構成されてよい。
【0056】
通信インターフェース22は、例えば、符号化されたピクチャデータ21を適切なフォーマット、例えば、パケット、にパッケージ化し、且つ/あるいは、通信リンク又は通信ネットワーク上での送信のためのあらゆる種類の伝送符号化又は処理を用いて、符号化されたピクチャデータを処理するよう構成されてよい。
【0057】
通信インターフェース22の対応物を形成する通信インターフェース28は、例えば、伝送されたデータを受信し、符号化されたピクチャデータ21を取得するようあらゆる種類の対応する伝送復号化若しくは処理及び/又はアンパッケージ化を用いて伝送データを処理するよう構成されてよい。
【0058】
通信インターフェース22及び通信インターフェース28は両方とも、図1Aで送信元デバイス12から送信先デバイス14を指している通信チャネル13のための矢印によって示される一方向通信インターフェース、又は双方向通信インターフェースとして構成されてよく、例えば、メッセージを送信及び受信するよう、例えば、通信リンク及び/又はデータ伝送、例えば、符号化されたピクチャデータ伝送に関するあらゆる他の情報を確認応答及び交換するために、接続をセットアップするよう構成されてよい。
【0059】
デコーダ30は、符号化されたピクチャデータ21を受信し、復号されたピクチャデータ31又は復号されたピクチャ31を供給するよう構成される(更なる詳細は、例えば、図3又は図5に基づいて、以下で説明される)。
【0060】
送信先デバイス14のポストプロセッサ32は、後処理されたピクチャデータ33、例えば、後処理されたピクチャ33を取得するために、復号されたピクチャデータ31(再構成されたピクチャデータとも呼ばれる)、例えば、復号されたピクチャ31を後処理するよう構成される。後処理ユニット32によって実行される後処理は、例えば、カラーフォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、若しくはリサンプリング、又は例えば、復号されたピクチャデータ31を、例えば、表示デバイス34による、表示のために準備する、あらゆる他の処理を有してよい。
【0061】
送信先デバイス14の表示デバイス34は、ピクチャを、例えば、ユーザ又は見る者に表示するために、後処理されたピクチャデータ33を受信するよう構成される。表示デバイス34は、再構成されたピクチャを表現するあらゆる種類のディスプレイ、例えば、内蔵型又は外付けディスプレイ又はモニタであっても又はそれを有してもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、リキッド・クリスタル・オン・シリコン(LCoS)、デジタル・ライト・プロセッサ(DLP)、又はあらゆる種類の他のディスプレイを有してよい。
【0062】
図1Aは、送信元デバイス12及び送信先デバイス14を別個のデバイスとして表すが、デバイスの実施形態は、両方又は両方の機能、すなわち、送信元デバイス12又は対応する機能及び送信先デバイス14又は対応する機能を有してもよい。そのような実施形態で、送信元デバイス12又は対応する機能及び送信先デバイス14又は対応する機能は、同じハードウェア及び/又はソフトウェアを用いて、あるいは、別個のハードウェア及び/又はソフトウェア、又はそれらのあらゆる組み合わせによって、実施されてもよい。
【0063】
記載に基づいて当業者に明らかなように、異なるユニットの機能、あるいは、図1Aに示されている送信元デバイス12及び/又は送信先デバイス14内の機能の存在及び(厳密な)分割は、実際のデバイス及び用途に応じて様々であり得る。
【0064】
エンコーダ20(例えば、ビデオエンコーダ20)若しくはデコーダ30(例えば、ビデオデコーダ)又はエンコーダ20及びデコーダ30の両方は、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ディスクリートロジック、ハードウェア、それらのビデオコーディング専用の又は任意の組み合わせなどの、図1Bに示される処理回路を用いて実施されてよい。エンコーダ20は、図2のエンコーダ20及び/又はここで記載されるあらゆる他のエンコーダシステム若しくはサブシステムに関して論じられている様々なモジュールを具現するために処理回路46を用いて実施されてよい。デコーダ30は、図3のデコーダ30及び/又はここで記載されるあらゆる他のデコーダシステム若しくはサブシステムに関して論じられている様々なモジュールを具現するために処理回路46を用いて実施されてよい。処理回路は、後述される様々な動作を実行するよう構成されてよい。図5に示されるように、技術が部分的にソフトウェアで実施される場合に、デバイスは、適切な、非一時的なコンピュータ可読記憶媒体においてソフトウェアのための命令を記憶してよく、本開示の技術を実行するために1つ以上のプロセッサを用いてハードウェアで命令を実行してよい。ビデオエンコーダ20及びビデオデコーダ30のどちらかは、例えば、図1Bに示されるように、単一のデバイスにおいて複合エンコーダ/デコーダ(CODEC)の部分として組み込まれてもよい。
【0065】
送信元デバイス12及び送信先デバイス14は、あらゆる種類の携帯型又は固定型デバイス、例えば、ノートブック又はラップトップコンピュータ、携帯電話機、スマートフォン、タブレット又はタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ受像機、表示デバイス、デジタルメディアプレイヤー、ビデオゲーム機、ビデオストリーミングデバイス(例えば、コンテンツサービスサーバ若しくはコンテンツ配信サーバ)、放送受信器デバイス、放送送信器デバイス、などを含む広範囲のデバイスのいずれかを有してよく、任意の種類のオペレーティングシステムを使用してもしなくてもよい。いくつかの場合に、送信元デバイス12及び送信先デバイス14は、無線通信のために装備されてよい。よって、送信元デバイス12及び送信先デバイス14は、無線通信デバイスであってよい。
【0066】
いくつかの場合に、図1Aに表されているビデオコーディングシステム10は、一例にすぎず、本願の技術は、符号化及び復号化デバイス間の如何なるデータ通信も必ずしも含まないビデオコーディング設定(例えば、ビデオ符号化又はビデオ復号化)に適用されてよい。他の例では、データは、ローカルメモリから取り出されたり、又はネットワーク上でストリーミングされたり、などする。ビデオ符号化デバイスは、データを符号化してメモリに格納してよく、かつ/あるいは、ビデオ復号化デバイスは、メモリからデータを取り出して復号化してよい。いくつかの例で、符号化及び復号化は、互いと通信せず、単にデータを符号化してメモリに記憶し及び/又はメモリからデータを読み出して復号するデバイスによって実行される。
【0067】
記載の便宜上、本発明の実施形態は、例えば、High-Efficiency Video Coding(HEVC)を、又はITU-TのVideo Coding Experts Group(VCEG)及びISO/IECのMotion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発された次世代ビデオコーディング標準規格であるVersatile Video coding(VVC)の参照ソフトウェアを参照して、ここで説明される、当業者は、本発明の実施形態がHEVC又はVVCに限定されないと理解するだろう。
【0068】
エンコーダ及び符号化方法
図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は、ハイブリッドビデオエンコーダ、又はハイブリッドビデオコーデックに従うビデオエンコーダとも呼ばれ得る。
【0069】
残差計算ユニット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の“ビルトインデコーダ”を形成するとも言われる。
【0070】
ピクチャ及びピクチャパーティショニング(ピクチャ及びブロック)
エンコーダ20は、例えば、入力部202を介して、ピクチャ17(又はピクチャデータ17)、例えば、ビデオ又はビデオシーケンスを形成するピクチャの連続の中のピクチャ、を受け取るよう構成されてよい。受け取られたピクチャ又はピクチャデータは、前処理されたピクチャ19(又は前処理されたピクチャデータ19)であってもよい。簡単のために、以下の説明はピクチャ17に言及する。ピクチャ17は、現在のピクチャ又はコーディングされるべきピクチャとも呼ばれ得る(特に、ビデオコーディングにおいて、現在のピクチャを他のピクチャ、例えば、同じビデオシーケンス、すなわち、現在のピクチャも含むビデオシーケンスの、前に符号化及び/又は復号されたピクチャと区別するため)。
【0071】
(デジタル)ピクチャは、強度値を有するサンプルの2次元アレイ又はマトリクスであるか、又はそのようなものと見なされ得る。アレイ内のサンプルは、ピクセル(ピクチャ素子の省略形)又はペルとも呼ばれ得る。アレイ又はピクチャの水平及び垂直方向(又は軸)におけるサンプルの数は、ピクチャのサイズ及び/又は解像度を定義する。色の表現のために、通常は3つの色成分が用いられる。すなわち、ピクチャは、3つのサンプルアレイを表現されるか、又は含んでよい。RBGフォーマット又は色空間において、ピクチャは、対応する赤、緑、及び青のサンプルアレイを有する。しかし、ビデオコーディングでは、各ピクセルは、通常は、ルミナンス及びクロミナンスフォーマット又は色空間、例えば、Y(時々Lも代わりに使用される)によって示されるルミナンス成分と、Cb及びCrによって示される2つのクロミナンス成分とを有するYCbCrにおいて表現される。ルミナンス(又は略してルーマ)成分Yは、明るさ又はグレーレベル強度(例えば、グレースケールピクチャでのように)を表し、一方、2つのクロミナンス(又は略してクロマ)成分Cb及びCrは、色度又は色情報成分を表す。従って、YCbCrフォーマットでのピクチャは、ルミナンスサンプル値(Y)のルミナンスサンプルアレイと、クロミナンス値(Cb及びCr)の2つのクロミナンスサンプルアレイとを有する。RGBフォーマットでのピクチャは、YCbCrフォーマットに変換又は転換されてよく、その逆も同様であり、プロセスは、色転換又は変換としても知られている。ピクチャがモノクロである場合には、ピクチャは、ルミナンスサンプルアレイしか有さなくてよい。従って、ピクチャは、例えば、モノクロフォーマットでのルーマサンプルのアレイ、又は4:2:0、4:2:2、及び4:4:4カラーフォーマットでのルーマサンプルのアレイ及びクロマサンプルの2つの対応するアレイであってよい。
【0072】
ビデオエンコーダ20の実施形態は、ピクチャ17を複数の(通常は重なり合わない)ピクチャブロック203に分割するよう構成されたピクチャパーティショニングユニット(図2に図示せず)を有してよい。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)又はコーディングツリーブロック(CTB)若しくはコーディングツリーユニット(CTU)(H.265/HEVC及びVVC)とも呼ばれ得る。ピクチャパーティショニングユニットは、ビデオシーケンスの全てのピクチャのための同じブロックサイズ及び現在ブロックサイズを定義する対応するグリッドを使用するよう、あるいは、ピクチャ又はピクチャのサブセット若しくはグループの間で現在ブロックサイズを変更し、各ピクチャを対応するブロックにパーティション化するよう構成されてよい。
【0073】
更なる実施形態では、ビデオエンコーダは、ピクチャ17のブロック203、例えば、ピクチャ17を形成する1つ、いくつか、又は全てのブロックを直接に受け取るよう構成されてもよい。ピクチャブロック203は、現在のピクチャブロック又はコーディングされるべきピクチャとも呼ばれ得る。
【0074】
ピクチャ17のように、ピクチャブロック203はやはり、ピクチャ17よりも小さい寸法ではあるが、強度値(サンプル値)を有するサンプルの2次元アレイ又はマトリクスであるか、又はそのようなものと見なされ得る。すなわち、現在ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロピクチャ17の場合には、ルーマアレイ、又はカラーピクチャの場合には、ルーマ若しくはクロマアレイ)、又は3つのサンプルアレイ(例えば、カラーピクチャ17の場合に、ルーマ及び2つのクロマアレイ)、あるいは、適用されるカラーフォーマットに応じたあらゆる他の数及び/又は種類のアレイを有してよい。現在ブロック203の水平及び垂直方向(又は軸)におけるサンプルの数は、ブロック203のサイズを定義する。従って、ブロックは、例えば、サンプルのM×N(N行M列)アレイ、又は変換係数のM×Nアレイであってよい。
【0075】
図2に示されるビデオエンコーダ20の実施形態は、ブロックごとにピクチャ17を符号化するよう構成されてよく、例えば、符号化及び予測は、ブロック203ごとに実行される。
【0076】
図2に示されるビデオエンコーダ20の実施形態は、スライス(ビデオスライスとも呼ばれる)を使用することによってピクチャをパーティション化及び/又は符号化するよう更に構成されてよく、ピクチャは、1つ以上のスライス(通常は重なり合わない)を用いてパーティション化又は符号化されてよく、各スライスは、1つ以上のブロック(例えば、CTU)を有してよい。
【0077】
図2に示されるビデオエンコーダ20の実施形態は、タイルグループ(ビデオタイルグループとも呼ばれる)及び/又はタイル(ビデオタイルとも呼ばれる)を使用することによってピクチャをパーティション化及び/又は符号化するよう更に構成されてよく、ピクチャは、1つ以上のタイルグループ(通常は重なり合わない)を用いてパーティション化又は符号化されてよく、各タイルは、例えば、長方形形状であってよく、1つ以上のブロック(例えば、CTU)、例えば、完全な又は部分的なブロックを有してよい。
【0078】
残差計算
残差計算ユニット204は、ピクチャブロック203及び予測ブロック265(予測ブロック265に関する更なる詳細は後述される)に基づいて、例えば、サンプル領域で残差ブロック205を取得するようサンプルごとに(ピクセルごとに)ピクチャブロック203のサンプル値から予測ブロック265のサンプル値を減じることによって、残差ブロック205(残差205とも呼ばれる)を計算するよう構成されてよい。
【0079】
変換
変換処理ユニット206は、変換領域で変換係数207を取得するために残差ブロック205のサンプル値に対して変換、例えば、離散コサイン変換(DCT)又は離散サイン変換(DST)を適用するよう構成されてよい。変換係数207は、変換残差係数とも呼ばれ、変換領域での残差ブロック205を表し得る。
【0080】
変換処理ユニット206は、H.265/HEVCについて定められた変換などのDCT/DSTの整数近似を適用するよう構成されてよい。直交DCT変換と比較して、このような整数近似は、通常は、特定の係数によってスケーリングされる。順方向及び逆方向の変換によって処理される残差ブロックのノルムを保つために、追加のスケーリング係数が変換プロセスの部分として適用される。スケーリング係数は、通常は、シフト演算のための2のべき乗であるスケーリング係数、変換係数のビットデプス、精度と実施コストとの間のトレードオフ、などのような特定の制約に基づいて、選択される。例えば、具体的なスケーリング係数は、例えば、逆変換処理ユニット212(及び、例えば、ビデオデコーダ30での逆変換処理ユニット312による、対応する逆変換)による、逆変換のために定められ、それに応じて、エンコーダ20での、例えば、変換処理ユニット206による、順方向の変換のための対応するスケーリング係数は定められ得る。
【0081】
ビデオエンコーダ20(個々に、変換処理ユニット206)の実施形態は、例えば、ビデオデコーダ30が変換パラメータを受け取って復号化のために使用し得るように、例えば、直接に、又はエントロピ符号化ユニット270により符号化若しくは圧縮された、変換パラメータ、例えば、変換又は複数の変換のタイプを出力するよう構成されてよい。
【0082】
量子化
量子化ユニット208は、例えば、スカラー量子化又はベクトル量子化を適用することによって、量子化された係数209を取得するように変換係数207を量子化するよう構成されてよい。量子化された係数209は、量子化された変換係数209又は量子化された残差係数209とも呼ばれ得る。
【0083】
量子化プロセスは、変換係数207の一部又は全てと関連付けられたビットデプスを低減し得る。例えば、nビット変換係数は、量子化中にmビット変換係数にラウンドダウンされてよく、このとき、nはmよりも大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって変更されてよい。例えば、スカラー量子化については、より細かい又はより粗い量子化を達成するために、異なるスケーリングが適用されてよい。より小さい量子化ステップサイズは、より細かい量子化に対応し、一方、より大きい量子化ステップサイズは、より粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、例えば、適用可能な量子化ステップサイズの予め定義された組へのインデックスであってよい。例えば、小さい量子化パラメータは、細かい量子化(小さい量子化ステップサイズ)に対応してよく、大きい量子化パラメータは、粗い量子化(大きい量子化ステップサイズ)に対応してよく、あるいは、その逆も同様である。量子化は、量子化ステップサイズによる除算を含んでよく、例えば、逆量子化ユニット210による、対応する及び/又は逆の逆量子化は、量子化ステップサイズによる乗算を含んでよい。いくつかの標準規格、例えば、HEVC、に従う実施形態は、量子化ステップサイズを決定するために量子化パラメータを使用するよう構成されてよい。一般に、量子化ステップサイズは、除算を含む式の固定点近似を用いて量子化パラメータに基づき計算され得る。追加のスケーリング係数は、量子化ステップサイズ及び量子化パラメータについての式の固定点近似で使用されるスケーリングのために変更される可能性がある残差ブロックのノルムを回復させるよう量子化及び逆量子化のために導入されてよい。1つの例となる実施では、逆変換及び逆量子化のスケーリングは組み合わされてよい。代替的に、カスタマイズされた量子化テーブルが使用され、エンコーダからデコーダへ、例えば、ビットストリームにおいて、伝えられてもよい。量子化は、不可逆演算であり、損失は、量子化ステップサイズの増大とともに増大する。
【0084】
ビデオエンコーダ20の実施形態(個々に、量子化ユニット208)は、例えば、ビデオデコーダ30が量子化パラメータを受け取って復号化のために適用し得るように、例えば、直接に、又はエントロピ符号化ユニット270により符号化された、量子化パラメータ(QP)を出力するよう構成されてよい。
【0085】
逆量子化
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて又はそれを用いて、量子化ユニット208によって適用された量子化スキームの逆を適用することによって、逆量子化された係数211を取得するために、量子化された係数に対して量子化ユニット208の逆の量子化を適用するよう構成される。逆量子化された係数211は、逆量子化された残差係数211とも呼ばれ、通常は量子化による損失により変換係数と同じでないが、変換係数207に対応し得る。
【0086】
逆変換
逆変換処理ユニット212は、再構成された残差ブロック213(又は対応する逆量子化された係数213)をサンプル領域で取得するために、変換処理ユニット206によって適用された変換の逆変換、例えば、逆離散コサイン変換(DCT)若しくは逆離散サイン変換(DST)又は他の逆変換を適用するよう構成される。再構成された残差ブロック213は、変換ブロック213とも呼ばれ得る。
【0087】
再構成
再構成ユニット214(例えば、加算器又は合算器214)は、例えば、再構成された残差ブロック213のサンプル値と予測ブロック265のサンプル値とをサンプルごとに足すことによって、再構成されたブロック215をサンプル領域で取得するために変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加えるよう構成される。
【0088】
フィルタリング
ループフィルタユニット220(略して「ループフィルタ」220)は、再構成されたブロック215にフィルタをかけてフィルタ処理されたブロック221を取得するよう、又は一般的に、再構成されたサンプルにフィルタをかけてフィルタ処理されたサンプルを取得するよう構成される。ループフィルタユニットは、例えば、ピクセル遷移を滑らかにするよう、あるいは、別なふうにビデオ品質を改善するよう構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ又は1つ以上の他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、先鋭化、平滑化フィルタ若しくは協調フィルタ、又はそれらの任意の組み合わせなどの1つ以上のループフィルタを有してよい。ループフィルタユニット220はインループフィルタであるものとして図2では示されているが、他の構成では、ループフィルタユニット220はポストループフィルタとして実装されてもよい。フィルタ処理されたブロック221は、フィルタ処理された再構成されたブロック221とも呼ばれ得る。
【0089】
ビデオエンコーダ20(個々に、ループフィルタユニット220)の実施形態は、例えば、デコーダ30が同じループフィルタパラメータ又は各々のループフィルタを受け取って復号化のために適用し得るように、例えば、直接に、又はエントロピ符号化ユニット270により符号化された、ループフィルタパラメータ(例えば、サンプル適応オフセット情報)を出力するよう構成されてよい。
【0090】
復号化ピクチャバッファ
復号化ピクチャバッファ(DPB)230は、ビデオエンコーダ20によってビデオデータを符号化するための参照ピクチャ、又は一般的に、参照ピクチャデータを記憶するメモリであってよい。DPB230は、同期DRAM(SDRAM)を含む動的ランダム・アクセス・メモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、又は他のタイプのメモリデバイスなどの様々なメモリデバイスのいずれかによって形成されてよい。復号化ピクチャバッファ(DPB)230は、1つ以上のフィルタ処理されたブロック221を記憶するよう構成されてよい。復号化ピクチャバッファ230は、同じ現在ピクチャの、又は異なるピクチャ、例えば、前に再構成されたピクチャの、他の前にフィルタ処理されたブロック、例えば、前に再構成されフィルタ処理されたブロック221を記憶するよう更に構成されてよく、例えば、インター予測のために、完全な、前に再構成された、すなわち、復号されたピクチャ(並びに対応する参照ブロック及びサンプル)及び/又は部分的に再構成された現在ピクチャ(並びに対応する参照ブロック及びサンプル)を提供してよい。復号化ピクチャバッファ(DPB)230はまた、例えば、再構成されたブロック215がループフィルタユニット220によってフィルタをかけられていない場合に、1つ以上のフィルタ処理されていない再構成されたブロック215、又は一般的に、フィルタ処理されていない再構成されたサンプルを、あるいは、再構成されたブロック又はサンプルのあらゆる他の更に処理されたバージョンを記憶するよう構成されてもよい。
【0091】
モード選択(パーティショニング及び予測)
モード選択ユニット260は、パーティショニングユニット262、インター予測ユニット244及びイントラ予測ユニット254を有し、原ピクチャデータ、例えば、元のブロック203(現在ピクチャ17の現在ブロック203)と、再構成されたピクチャデータ、例えば、同じ(現在)ピクチャの及び/又は1つ若しくは複数の前に復号されたピクチャからの、例えば、復号化ピクチャバッファ230若しくは他のバッファ(例えば、ラインバッファ、図示せず)からのフィルタ処理された及び/又はフィルタ処理されていない再構成されたサンプル又はブロックを受信又は取得するよう構成される。再構成されたピクチャデータは、予測ブロック265又は予測子265を取得するために、予測、例えば、インター予測又はイントラ予測、のための参照ピクチャデータとして使用される。
【0092】
モード選択ユニット260は、現在のブロック予測モード(パーティショニングを含まない)のためのパーティショニングと、予測モード(例えば、イントラ又はインター予測モード)とを決定又は選択し、残差ブロック205の計算のために及び再構成されたブロック215の再構成のために使用される対応する予測ブロック265を生成するよう構成されてよい。
【0093】
モード選択ユニット260の実施形態は、最良の一致、すなわち、言い換えれば、最小限の残差(最小限の残差は、伝送又は記憶のためのより良い圧縮を意味する)、又は最小限のシグナリングオーバーヘッド(最小限のシグナリングオーバーヘッドは、伝送又は記憶のためのより良い圧縮を意味する)をもたらすか、あるいは、両方を考慮し若しくはバランスをとるパーティショニング及び予測モードを(例えば、モード選択ユニット260によってサポートされているか、又はそれのために利用可能なものから)選択するよう構成されてよい。モード選択ユニット260は、レート歪み最適化(RDO)に基づいてパーティショニング及び予測モードを決定するよう、すなわち、最低レート歪みをもたらす予測モードを選択するよう、構成されてよい。本文脈中の「最良」、「最小限」、「最適化」などの用語は、必ずしも全面的な「最良」、「最小限」、「最適化」などを指さず、閾値を上回る又は下回る値のような終了又は選択基準の達成、あるいは、「次善の選択」につながる可能性はあるが複雑性及び処理時間を低減する他の制約を指してもよい。
【0094】
言い換えると、パーティショニングユニット262は、例えば、四分木パーティショニング(QT)、二分パーティショニング(BT)若しくは三分木パーティショニング(TT)、又はそれらの任意の組み合わせを繰り返し用いて、現在ブロック203をより小さいブロックパーティション又はサブブロック(再びブロックを形成する)に分割し、例えば、現在ブロックパーティション又はサブブロックの夫々についての予測を実行するよう構成されてよく、モード選択は、パーティション化されたブロック203の木構造の選択を有し、予測モードは、ブロックパーティション又はサブブロックの夫々に適用される。
【0095】
以下では、例となるビデオエンコーダ20によって実行されるパーティショニング(例えば、パーティショニングユニット262による)及び予測処理(インター予測ユニット244及びイントラ予測ユニット254による)が、より詳細に説明される。
【0096】
パーティショニング
パーティショニングユニット262は、現在ブロック203をより小さいパーティション、例えば、正方形又は長方形サイズのより小さいブロックにパーティション化(又は分割)してよい。これらのより小さいブロック(サブブロックとも呼ばれる)は、より一層小さいパーティションに更にパーティション化されてもよい。これは、ツリーパーティショニング又は階層ツリーパーティショニングとも呼ばれ、例えば、根ツリーレベル0(階層レベル0、デプス0)での、ルートブロックは、再帰的にパーティション化されてよく、例えば、次に下のツリーレベルの2つ以上のブロック、例えば、ツリーレベル1(階層レベル1、デプス1)でのノードにパーティション化され、これらのブロックは、例えば、終了基準が満足されること、例えば、最大ツリーデプス又は最小ブロックサイズに達することで、パーティショニングが終了するまで、次に下のレベル、例えば、ツリーレベル2(階層レベル2、デプス2)など、の2つ以上のブロックに再びパーティション化されてよい。これ以上パーティション化されないブロックは、ツリーのリーフブロック又はリーフノードとも呼ばれる。2つのパーティションにパーティション化することによるツリーは、二分木(BT)と呼ばれ、3つのパーティションにパーティション化することによるツリーは、三分木(TT)と呼ばれ、4つのパーティションにパーティション化することによるツリーは、四分木(QT)と呼ばれる。
【0097】
上述されたように、ここで使用される「ブロック」との用語は、ピクチャの部分、特に、正方形又は長方形部分であってよい。例えば、HEVC及びVVCを参照して、現在ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、及び変換ユニット(TU)、並びに/又は対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)若しくは予測ブロック(PB)であるか、あるいは、これらに対応してよい。
【0098】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有するピクチャのルーマサンプルのCTB、クロマサンプルの2つの対応するCTB、あるいは、モノクロピクチャ又は、3つの別々の色平面と、サンプルをコーディングするために使用されたシンタックス構造とを用いてコーディングされるピクチャのサンプルのCTBであるか、又はこれらを有してよい。相応して、コーディングツリーブロック(CTB)は、CTBへのコンポーネントの分割がパーティショニングであるように、Nの何らかの値について、サンプルのN×Nブロックであってよい。コーディングユニット(CU)は、3つのサンプルアレイを有するピクチャのルーマサンプルのコーディングブロック、クロマサンプルの2つの対応するコーディングブロック、あるいは、モノクロピクチャ又は、3つの別々の色平面と、サンプルをコーディングするために使用されたシンタックス構造を用いてコーディングされるピクチャのサンプルのコーディングブロックであるか、又はこれらを有してよい。相応して、コーディングブロック(CB)は、コーディングブロックへのCTBの分割がパーティショニングであるように、M及びNの何らかの値についてサンプルのM×Nブロックであってよい。
【0099】
実施形態において、例えば、HEVCに従って、コーディングツリーユニット(CTU)は、コーディングツリーとして表される四分木構造を使用することによって、CUに分割されてよい。インターピクチャ(時間)又はイントラピクチャ(空間)予測を用いてピクチャエリアをコーディングすべきかどうかの決定は、CUレベルで行われる。各CUは、PU分割タイプに従って1つ、2つ又は4つのPUに更に分割され得る。1つのPU内では、同じ予測プロセスが適用され、関連情報は、PUベースでデコーダへ送られる。PU分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、CUは、CUのためのコーディングツリーに類似した他の四分木構造に従って、変換ユニット(TU)にパーティション化され得る。
【0100】
実施形態において、例えば、Versatile Video Coding(VVC)と呼ばれる、現在開発中の最新のビデオコーディング標準規格に従って、四分木及び二分木の複合(QTBT)であるパーティショニングは、コーディングブロックをパーティション化するために使用される。QTBTブロック構造では、CUは、正方形又は長方形のどちらかの形状を有することができる。例えば、コーディングツリーユニット(CTU)は、最初に四分木構造によってパーティション化される。四分木リーフノードは、二分木又は三分(又はトリプル)木構造によって更にパーティション化される。パーティショニングツリーリーフノードはコーディングユニット(CU)と呼ばれ、そのセグメンテーションは、これ以上のパーティショニングなしで予測及び変換処理のために使用される。これは、CU、PU及びTUがQTBTコーディングブロック構造では同じブロックサイズを有していることを意味する。同時に、多重パーティション、例えば、トリプル木パーティションも、QTBTブロック構造とともに使用されてよい。
【0101】
一例において、ビデオエンコーダ20のモード選択ユニット260は、ここで記載されるパーティショニング技術の任意の組み合わせを実行するよう構成されてよい。
【0102】
上述されたように、ビデオエンコーダ20は、(前もって決定された)予測モードの組から最良の又は最適な予測モードを決定又は選択するよう構成される。予測モードの組は、例えば、イントラ予測モード及び/又はインター予測モードを有してよい。
【0103】
イントラ予測
イントラ予測モードの組は、35個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプレーナーモードのような無指向性モード、又は例えば、HEVCで定義されるような、指向性モードを有してよく、あるいは、67個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプレーナーモードのような無指向性モード、又は例えば、VVCで定義されるような、指向性モードを有してよい。
【0104】
イントラ予測ユニット254は、イントラ予測モードの組の中のあるイントラ予測モードに従ってイントラ予測ブロック265を生成するために、同じ現在ピクチャの隣接ブロックの再構成されたサンプルを使用するよう構成される。
【0105】
イントラ予測ユニット254(又は一般に、モード選択ユニット260)は、例えば、ビデオデコーダ30が予測パラメータを受け取って復号化のために使用し得るように、符号化されたピクチャデータ21に含めるためにシンタックス要素266の形でイントラ予測パラメータ(又は一般に、現在ブロックのための選択されたイントラ予測モードを示す情報)をエントロピ符号化ユニット270へ出力するよう更に構成される。
【0106】
インター予測
(とり得る)インター予測モードの組は、利用可能な参照ピクチャ(すなわち、例えば、DPB230に記憶されている、前の、少なくとも部分的に復号されたピクチャ)及び他のインター予測パラメータ、例えば、参照ピクチャ全体又は参照ピクチャの一部分のみ、例えば、現在ブロックのエリアの周りの探索窓エリア、が最良の一致を示す参照ブロックを探すために使用されるかどうか、及び/又は例えば、ピクセル補間、例えば、ハーフ/セミペル及び/又は4分の1ペル補間、が適用されるか否か、に依存する。
【0107】
上記の予測モードに加えて、スキップモード及び/又はダイレクトモードが適用されてもよい。
【0108】
インター予測ユニット244は、動き推定(ME)ユニット及び動き補償(MC)ユニット(どちらも図2に図示せず)を含んでよい。動き推定ユニットは、ピクチャブロック203(現在ピクチャ17の現在ピクチャブロック203)及び復号されたピクチャ231、あるいは、少なくとも1つ又は複数の前に再構成されたブロック、例えば、1つ又は複数の他の/異なる前に復号されたピクチャ231の再構成されたブロックを、動き推定のために受信又は取得するよう構成されてよい。例えば、ビデオシーケンスは、現在ピクチャ及び前に復号されたピクチャ231を有してよく、すなわち、言い換えると、現在ピクチャ及び前に復号されたピクチャ231は、ビデオシーケンスを形成するピクチャの連続の部分であるか、又はピクチャの連続を形成してよい。
【0109】
エンコーダ20は、例えば、複数の他のピクチャの中の同じ又は異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ピクチャ(又は参照ピクチャインデックス)及び/又は参照ブロックの位置(x、y座標)と現在ブロックの位置との間のオフセット(空間オフセット)を動き推定ユニットへインター予測パラメータとして供給するよう構成されてよい。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0110】
動き補償ユニットは、インター予測パラメータを取得、例えば、受信し、インター予測パラメータに基づいて又はそれを用いてインター予測を実行してインター予測ブロック265を取得するよう構成される。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロックベクトルに基づいて予測ブロックをフェッチ又は生成することを有してよく、場合により、サブピクセル精度への補間を実行する。補間フィルタリングは、既知のピクセルサンプルから追加のピクセルサンプルを生成してよく、よって、場合により、ピクチャブロックをコーディングするために使用され得る候補予測ブロックの数を増大させる。現在ピクチャブロックのPUについての動きベクトルを受け取ると、動き補償ユニットは、参照ピクチャリストの1つにおいて動きベクトルが指し示す予測ブロックを見つけ得る。
【0111】
動き補償ユニットはまた、ビデオスライスのピクチャブロックを復号する際にビデオデコーダ30によって使用される現在ブロック及びビデオスライスと関連付けられたシンタックス要素を生成してもよい。スライス及び各々のシンタックス要素に加えて、又はそれらに代えて、タイルグループ及び/又はタイル並びに各々のシンタックス要素が生成又は使用されてもよい。
【0112】
エントロピコーディング
エントロピ符号化ユニット270は、出力部272を介して、例えば、符号化されたビットストリーム21の形で、出力され得る符号化されたピクチャデータ21を取得するために、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ及び/又は他のシンタックス要素に対して、例えば、エントロピ符号化アルゴリズム又はスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応VLCスキーム(CAVLC)、算術コーディングスキーム、二値化、コンテキスト適応二値算術コーディング(CABAC)、シンタックスに基づくコンテキスト適応二値算術コーディング(SBAC)、確率区間パーティショニングエントロピ(PIPE)コーディング、又は他のエントロピ符号化メソッドロジ若しくは技術)を適用するか、あるいは、バイパスする(無圧縮)よう構成され、それにより、例えば、ビデオデコーダ30は、パラメータを受け取って復号化のために使用し得る。符号化されたビットストリーム21は、ビデオデコーダ30へ送られるか、あるいは、ビデオデコーダ30による後の伝送又は読み出しのためにメモリに記憶されてもよい。
【0113】
ビデオエンコーダ20の他の構造的変形は、ビデオストリームを符号化するために使用され得る。例えば、非変換に基づくエンコーダ20は、特定のブロック又はフレームについて変換処理ユニット206によらずに直接に残差信号を量子化することができる。他の実施では、エンコーダ20は、単一のユニットにまとめられた量子化ユニット208及び逆量子化ユニット210を有することができる。
【0114】
デコーダ及び復号化方法
図3は、本願の技術を実装するよう構成されるビデオデコーダ30の例を示す。ビデオデコーダ30は、復号されたピクチャ331を取得するために、例えば、エンコーダ20によって符号化された、符号化ピクチャデータ21(例えば、符号化ビットストリーム21)を受信するよう構成される。符号化ピクチャデータ又はビットストリームは、符号化ピクチャデータを復号するための情報、例えば、符号化されたビデオスライスのピクチャブロック及び関連するシンタックス要素を表すデータ、を含む。
【0115】
図3の例では、デコーダ30は、エントロピ復号化ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、合算器314)、ループフィルタ320、復号化ピクチャバッファ(DPB)330、モード適用ユニット360、インター予測ユニット344、及びイントラ予測ユニット354を有する。インター予測ユニット344は、動き補償ユニットであるか、又はそれを含んでよい。ビデオデコーダ30は、いくつかの例では、図2のビデオエンコーダ20に関して記載された符号化パスとは概して逆の復号化パスを実行してよい。
【0116】
エンコーダ20に関して説明されたように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214ループフィルタ220、復号化ピクチャバッファ(DPB)230、インター予測ユニット244及びイントラ予測ユニット254は、ビデオエンコーダ20の“ビルトインデコーダ”を形成するとも言われる。従って、逆量子化ユニット310は、機能において逆量子化ユニット210と同じであってよく、逆変換処理ユニット312は、機能において逆変換処理ユニット212と同じであってよく、再構成ユニット314は、機能において再構成ユニット214と同じであってよく、ループフィルタ320は、機能においてループフィルタ220と同じであってよく、復号化ピクチャバッファ330は、機能において復号化ピクチャバッファ230と同じであってよい。従って、ビデオエンコーダ20の各々のユニット及び機能について与えられている説明は、ビデオデコーダ30の各々のユニット及び機能にも相応して当てはまる。
【0117】
エントロピ復号化
エントロピ復号化ユニット304は、ビットストリーム21(又は一般に、符号化ピクチャデータ21)をパースし、符号化ピクチャデータ21に対して、例えば、エントロピ復号化を実行して、例えば、量子化された係数309及び/又は復号されたコーディングパラメータ(図3に図示せず)、例えば、インター予測パラメータ(例えば、参照ピクチャインデックス及び動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、及び/又は他のシンタックス要素のいずれか又は全てを取得するよう構成される。エントロピ復号化ユニット304は、エンコーダ20のエントロピ符号化ユニット270に関して説明された符号化スキームに対応する復号化アルゴリズム又はスキームを適用するよう構成されてよい。エントロピ復号化ユニット304は、インター予測パラメータ、イントラ予測パラメータ、及び/又は他のシンタックス要素をモード適用ユニット360へ、及び他のパラメータをデコーダ30の他のユニットへ供給するよう更に構成されてよい。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルでシンタックス要素を受け取ってよい。スライス及び各々のシンタックス要素に加えて、又はそれらに代えて、グループ及び/又はタイル並びに各々のシンタックス要素が受信及び/又は使用されてもよい。
【0118】
逆量子化
逆量子化ユニット310は、(例えば、エントロピ復号化ユニット304によって、例えば、パース及び/又は復号することによって)符号化ピクチャデータ21から量子化パラメータ(QP)(又は一般に、逆量子化に関する情報)及び量子化された係数を受け取り、量子化パラメータに基づいて、復号された量子化された係数309に対して逆量子化を適用して、変換係数311とも呼ばれ得る逆量子化された係数311を取得するよう構成されてよい。逆量子化プロセスは、量子化の程度及び、同様に、適用されるべき逆量子化の程度、を決定するために、ビデオスライス内の各ビデオブロックについてビデオエンコーダ20によって決定された量子化パラメータの使用を含んでよい。
【0119】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる逆量子化された係数311を受け取り、そして、再構成された残差ブロック313をサンプル領域で取得するために、逆量子化された係数311に対して変換を適用するよう構成されてよい。再構成された残差ブロック313は、変換ブロック313とも呼ばれ得る。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、又は概念的に類似した逆変換プロセスであってよい。逆変換処理ユニット312は、逆量子化された係数311に適用されるべき変換を決定するために(例えば、エントロピ復号化ユニット304によって、例えば、パース及び/又は復号することによって)符号化ピクチャデータ21から変換パラメータ又は対応する情報を受け取るよう更に構成されてもよい。
【0120】
再構成
再構成ユニット314(例えば、加算器又は合算器314)は、例えば、再構成された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを足すことによって、再構成されたブロック315をサンプル領域で取得するように、再構成された残差ブロック313を予測ブロック365に加えるよう構成されてよい。
【0121】
フィルタリング
ループフィルタユニット320(コーディングループ内にあるか又はコーディングループの後にあるかのどちらか)は、フィルタ処理されたブロック321を取得するために、例えば、ピクセル遷移を滑らかにするか又は別なふうにビデオ品質を改善するために、再構成されたブロック315にフィルタをかけるよう構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ又は1つ以上の他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、先鋭化、平滑化フィルタ若しくは協調フィルタ、又はそれらの任意の組み合わせなどの1つ以上のループフィルタを有してよい。ループフィルタユニット320はインループフィルタであるものとして図3では示されているが、他の構成では、ループフィルタユニット320はポストループフィルタとして実装されてもよい。
【0122】
復号化ピクチャバッファ
ピクチャの復号されたビデオブロック321は、次いで、復号化ピクチャバッファ330に記憶される。復号化ピクチャバッファ330は、他のピクチャのその後の動き補償のために、及び/又は夫々表示を出力するために、復号されたピクチャ331を参照ピクチャとして記憶する。
【0123】
デコーダ30は、復号されたピクチャ331を、例えば、出力部332を介して、提示又は視聴のためにユーザへ出力するよう構成される。
【0124】
予測
インター予測ユニット344は、インター予測ユニット244と(特に、動き補償ユニットと)同じであってよく、イントラ予測ユニット354は、機能においてイントラ予測ユニット254と同じであってよく、符号化ピクチャデータ21から(例えば、エントロピ復号化ユニット304によって、例えば、パース及び/又は復号することによって)受け取られたパーティショニング及び/又は予測パラメータ、あるいは各々の情報に基づいて、分割又はパーティショニング決定及び予測を実行する。モード適用ユニット360は、再構成されたピクチャ、ブロック又は各々のサンプル(フィルタ処理された又はフィルタ処理されていない)に基づいてブロックごとに予測(イントラ又はインター予測)を実行して予測ブロック365を取得するよう構成されてよい。
【0125】
ビデオスライスが、イントラコーディングされた(I)スライスとしてコーディングされている場合に、モード適用ユニット360のイントラ予測ユニット354は、通知されたイントラ予測モードと、現在ピクチャの前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのピクチャブロックについての予測ブロック365を生成するよう構成される。ビデオピクチャが、インターコーディングされた(すなわち、B又はP)スライスとしてコーディングされている場合に、モード適用ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピ復号化ユニット304から受け取られた動きベクトル及び他のシンタックス要素に基づいて、現在ビデオスライスのビデオブロックについての予測ブロック365を生成するよう構成される。インター予測の場合に、予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャの1つから生成されてよい。ビデオデコーダ30は、DPB330に記憶されている参照ピクチャに基づいてデフォルトの構成技術を用いて参照フレームリストList 0及びList 1を構成してよい。同じ又は類似したことが、スライス(例えば、ビデオスライス)に加えて又はそれに代えてタイルグループ(例えば、ビデオタイルグループ)及び/又はタイル(例えば、ビデオタイル)を使用する実施形態のために又はそのような実施形態によって適用されてもよく、例えば、ビデオは、I、P又はBタイルグループ及び/又はタイルを用いてコーディングされてもよい。
【0126】
モード適用ユニット360は、動きベクトル又は関連情報及び他のシンタックス要素をパースすることによって現在ビデオスライスのビデオブロックについての予測情報を決定するよう構成され、そして、予測情報を用いて、復号化中の現在ビデオブロックについての予測ブロックを生成する。例えば、モード適用ユニット360は、現在ビデオスライス内のビデオブロックを復号するために、受信されたシンタックス要素のいくつかを使用して、ビデオスライスのビデオブロックをコーディングするために使用された予測モード(例えば、イントラ又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスの参照ピクチャリストの1つ以上についての構成情報、スライスの各インター符号化されたビデオブロックについての動きベクトル、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータス、及び他の情報を決定する。同じ又は類似したことが、スライス(例えば、ビデオスライス)に加えて又はそれに代えてタイルグループ(例えば、ビデオタイルグループ)及び/又はタイル(例えば、ビデオタイル)を使用する実施形態のために又はそのような実施形態によって適用されてもよく、例えば、ビデオは、I、P又はBタイルグループ及び/又はタイルを用いてコーディングされてもよい。
【0127】
図3に示されるビデオデコーダ30の実施形態は、スライス(ビデオスライスとも呼ばれる)を使用することによってピクチャをパーティション化及び/又は復号するよう構成されてよく。ピクチャは、1つ以上のスライス(通常は重なり合わない)を用いてパーティション化又は復号されてよく、各スライスは、1つ以上のブロック(例えば、CTU)を有してよい。
【0128】
図3に示されるビデオデコーダ30の実施形態は、タイルグループ(ビデオタイルグループとも呼ばれる)及び/又はタイル(ビデオタイルとも呼ばれる)を使用することによってピクチャをパーティション化及び/又は復号するよう構成されてよく、ピクチャは、1つ以上のタイルグループ(通常は重なり合わない)を用いてパーティション化又は復号されてよく、各タイルグループは、例えば、1つ以上のブロック(例えば、CTU)又は1つ以上のタイルを有してよく、各タイルは、例えば、長方形形状であってよく、1つ以上のブロック(例えば、CTU)、例えば、完全な又は部分的なブロックを有してよい。
【0129】
ビデオデコーダ30の他の変形は、符号化ピクチャデータ21を復号するために使用され得る。例えば、デコーダ30は、ループフィルタリングユニット320なしで出力ビデオストリームを生成することができる。例えば、非変換に基づくデコーダ30は、特定のブロック又はフレームについて逆変換処理ユニット312なしで直接に残差信号を逆量子化することができる。他の実施では、ビデオデコーダ30は、単一のユニットにまとめられた逆量子化ユニット310及び逆変換処理ユニット312を有することができる。
【0130】
エンコーダ20及びデコーダ30において、現在のステップの処理結果は更に処理され、それから次のステップへ出力されてよい、ことが理解されるべきである。例えば、補間フィルタリング、動きベクトル導出、又はループフィルタリングの後に、クリップ又はシフトなどの更なる操作が、補間フィルタリング、動きベクトル導出、又はループフィルタリングの処理結果に対して実行されてもよい。
【0131】
留意されるべきは、更なる操作が、現在ブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィン、プレーナー、ATMVPモードでのサブブロック動きベクトル、時間動きベクトル、などを含むが、これらに限られない)に適用されてよい点である。例えば、動きベクトルの値は、その表現ビットに従って、予め定義された範囲に制約される。動きベクトルの表現ビットがbitDepthである場合に、範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1であり、ここで、「^」は指数計算を意味する。例えば、bitDepthが16に等しくセットされる場合に、範囲は、-32768~32767であり、bitDepthが18に等しくセットされる場合に、範囲は、-131072~131071である。例えば、導出がされた動きベクトル(例えば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックMVの整数部間の最大差がNピクセル以下、例えば、1ピクセル以下、であるように、制約される。ここでは、bitDepthに従って動きベクトルを制約する2つの方法を提供する。
【0132】
方法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は、画像ブロック又はサブブロックの動きベクトルの水平成分であり、mvyは、画像ブロック又はサブブロックの動きベクトルの垂直成分であり、ux及びuyは、中間値を示す。例えば、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の合算中に適用されてよい。
【0133】
方法2:値をクリップすることによってオーバーフローMSBを除く

vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)

vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)

ここで、vxは、画像ブロック又はサブブロックの動きベクトルの水平成分であり、vyは、画像ブロック又はサブブロックの動きベクトルの垂直成分であり、x、y及びzは、夫々、MVクリッピングプロセスの3つの入力値に対応し、関数Clip3の定義は、次の通りである:
【数1】
【0134】
図4は、本開示の実施形態に従うビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、ここで記載されている開示実施形態を実装するのに適している。実施形態において、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、又は図1Aのビデオエンコーダ20などのエンコーダであってよい。
【0135】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(又は入力ポート410)及び受信器ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニット、又は中央演算処理装置(CPU)430と、データを送信するための送信器ユニット(Tx)440及び出口ポート450(又は出力ポート450)と、データを記憶するためのメモリ460とを有する。ビデオコーディングデバイス400はまた、光又は電気信号の出又は入りのために入口ポート410、受信器ユニット420、送信器ユニット440、及び出口ポート450へ結合された光電気(OE)コンポーネント及び電気光(EO)コンポーネントを有してもよい。
【0136】
プロセッサ430は、ハードウェア及びソフトウェアによって実装される。プロセッサ430は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、及びDSPとして実装されてよい。プロセッサ430は、入口ポート410、受信器ユニット420、送信器ユニット440、出口ポート450、及びメモリ460と通信する。プロセッサ430は、コーディングモジュール470を有する。コーディングモジュール470は、上述された開示実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング動作を実装、処理、準備、又は提供する。コーディングモジュール470の包含は、従って、ビデオコーディングデバイス400の機能性に実質的な改善をもたらし、異なる状態へのビデオコーディングデバイス400の変形を達成する。代替的に、コーディングモジュール470は、メモリ460に記憶されておりプロセッサ430によって実行される命令として実装される。
【0137】
メモリ460は、1つ以上のディスク、テープドライブ、及びソリッドステートドライブを有してよく、プログラムを、そのようなプログラムが実行のために選択される場合に、記憶するよう、かつ、プログラム実行中に読み出される命令及びデータを記憶するよう、オーバーフローデータ記憶デバイスとして使用されてよい。メモリ460は、例えば、揮発性及び/又は不揮発性であってよく、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、三値連想メモリ(TCAM)、及び/又は静的ランダム・アクセス・メモリ(SRAM)であってよい。
【0138】
図5は、例となる実施形態に従って図1の送信元デバイス12及び送信先デバイス14のどちらか一方又は両方として使用され得る装置500の略ブロック図である。
【0139】
装置500内のプロセッサ502は、中央演算処理装置であることができる。代替的に、プロセッサ502は、現在存在しているか又は今後開発される、情報を操作又は処理する能力があるあらゆる他のタイプのデバイス又は複数のデバイスであることができる。開示されている実施は、示されるように単一のプロセッサ、例えば、プロセッサ502、により実施され得るが、速度及び効率の優位性は、1つよりも多いプロセッサを用いて達成され得る。
【0140】
装置500内のメモリ504は、実施においてリード・オンリー・メモリ(ROM)デバイス又はランダム・アクセス・メモリ(RAM)デバイスであることができる。あらゆる他の適切なタイプの記憶デバイスが、メモリ504として使用され得る。メモリ504は、バス512を用いてプロセッサ502によってアクセスされるコード及びデータ506を含むことができる。メモリ504は、オペレーティングシステム508及びアプリケーションプログラム510を更に含むことができ、アプリケーションプログラム510は、プロセッサ502がここで記載されている方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、ここで記載されている方法を実行するビデオコーディングアプリケーションを更に含むアプリケーション1からNを含むことができる。
【0141】
装置500はまた、ディスプレイ518などの1つ以上の出力デバイスも含むことができる。ディスプレイ518は、一例において、タッチ入力を検知するよう動作可能であるタッチ検知素子とディスプレイを組み合わせるタッチ検知ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502へ結合され得る。
【0142】
ここでは単一のバスとして表されているが、装置500のバス512は、複数のバスから構成され得る。更に、二次記憶装置514は、装置500の他のコンポーネントへ直接に結合され得るか、あるいは、ネットワークを介してアクセス可能であり、メモリカードのような単一の集積ユニット又は複数のメモリカードのような複数のユニットを有することができる。装置500は、このようにして多種多様な構成において実装され得る。
【0143】
クロマサンプルのイントラ予測は、再構成されたルーマブロックのサンプルを用いて実行されてよい。
【0144】
HEVC開発中に、交差成分線形モデル(CCLM)クロマイントラ予測が提案された[J. Kim, S.-W. Park, J.-Y. Park, and B.-M. Jeon,Intra Chroma Prediction Using Inter Channel Correlation,document JCTVC-B021,2010年7月]。CCLMは、コーディングブロック内の対応する位置にあるクロマサンプル及びルーマサンプルの間の線形相関を使用する。クロマブロックがCCLMを用いてコーディングされる場合に、線形モデルは、線形回帰によって、再構成された隣接するルーマ及びクロマサンプルから導出される。現在ブロック内のクロマサンプルは、次いで、導出された線形モデルにより、現在ブロック内の再構成されたルーマサンプルによって予測され得る(図6に図示される):

C(x,y)=α×L(x,y)+β

ここで、C及びLは、夫々、クロマ値及びルーマ値を示す。パラメータα及びβは、次のように、最小二乗法によって導出される:

α=R(L,C)/R(L,L)
β=M(C)-α×M(L)

ここで、M(A)は、Aの平均を表し、R(A,B)は、次のように定義される:

R(A,B)=M((A-M(A))×(B-M(B))
【0145】
符号化又は復号されたピクチャが、ルーマ及びクロマ成分について異なる数のサンプルを指定するフォーマットを有している場合に(例えば、4:2:0 YCbCrフォーマット)、ルーマサンプルは、モデリング及び予測の前にダウンサンプリングされる。
【0146】
方法は、VTM2.0での利用のために採用されている。具体的に、パラメータ導出は、次のように実行される:
【数2】
ここで、L(n)は、ダウンサンプリングされた上及び左の隣接する再構成されたルーマサンプルを表し、C(n)は、上及び左の隣接する再構成されたクロマサンプルを表す。[G. Laroche, J. Taquet, C. Gisquet, P. Onno (Canon),“CE3: Cross-component linear model simplification (Test 5.1)”,Input document to 12th JVET Meeting in Macao,中国,2018年10月]では、α及びβを導出する異なる方法が提案された(図7を参照)。特に、線形モデルパラメータα及びβは、次の式に従って求められる:

α={C(B)-C(A)}/{L(B)-L(A)}
β=L(A)-αC(A)

ここで、B=argmax(L(n))及びA=argmin(L(n))は、ルーマサンプルでの最大及び最小値の位置である。
【0147】
図8は、YCbCr 4:4:4クロマフォーマットが使用されている場合にCCLMに関与する現在ブロックのサンプル及び左及び上の因果サンプルの位置を示す。
【0148】
交差成分予測を実行するために、4:2:0クロマフォーマットについて、再構成されたルーマブロックは、クロマサンプル若しくは複数のクロマサンプル又はクロマブロックのサイズに一致するようダウンサンプリングされる必要がある。CCLMモードで使用されるデフォルトのダウンサンプリングフィルタは、次の通りである:

Rec’[x,y]=(2×Rec[2x,2y]+2×Rec[2x,2y+1]+Rec[2x-1,2y]+Rec[2x+1,2y]+Rec[2x-1,2y+1]+Rec[2x+1,2y+1]+4)>>3

このダウンサンプリングは、ルーマサンプルの位置に対するクロマサンプルの位置について「type0」位相関係、つまり、水平方向ではコロケーテッドサンプリング及び垂直方向ではインタースティシャルサンプリング、を仮定している点に留意されたい。図9に示されている上記の6-タップダウンサンプリングは、単一モデルCCLMモード及び多重モデルCCLMモードの両方についてデフォルトフィルタとして使用される。6-タップダウンサンプリングフィルタによって使用されるサンプルの空間位置は、図9に示される。サンプル901、902、及び903は、夫々、2、1、及び0の重みを有する。
【0149】
ルーマサンプルがブロック境界にあり、隣接する上及び左のブロックが利用不可能である場合に、次の式が使用される:
y=0で行がCTUの最初の行であり、x=0であり、かつ、左及び上の隣接ブロックが利用不可能であるならば、Rec’[x,y]=Rec[2x,2y]であり、
y=0で行がCTUの最初の行であり、かつ、上の隣接ブロックが利用不可能であるならば、Rec’[x,y]=(2×Rec[2x,2y]+Rec[2x-1,2y]+RecL[2x+1,2y]+2)>>2であり、
x=0であり、かつ、左及び上の隣接ブロックが利用不可能であるならば、Rec’[x,y]=(Rec[2x,2y]+Rec[2x,2y+1]+1)>>1である。
【0150】
図10A及び10Bは、4:2:0サンプリングスキームの場合におけるクロマ成分位置を表す。当然、同じことが、他のサンプリングスキームにも当てはまり得る。
【0151】
4:2:0サンプリングスキームにおけるルーマ及びクロマ成分のサンプリングを考えるとき、ルーマ及びクロマ成分グリッド間にはシフトが存在し得ることが知られる。2×2ピクセルのブロックでは、クロマ成分に、実際に、ルーマ成分と比較して垂直方向に2分の1ピクセルだけシフトされている(図10Aに表される)。そのようなシフトは、4:4:4からのダウンサンプリング時に、又はアップサンプリング時に、補間フィルタに対して影響を及ぼす可能性がある。図10Bでは、インターレース画像の場合に、様々なサンプリングパターンが示されている。これは、パリティ、すなわち、ピクセルがインターレース画像の上又は下フィールドにあるかどうか、も考慮されることを意味する。
【0152】
[P. Hanhart, Y. He,“CE3: Modified CCLM downsampling filter for “type-2” content (Test 2.4)”,Input document JVET-M0142 to the 13th JVET Meeting in Marrakech,モロッコ,2019年1月]で提案されて、VVC仕様書草案(バージョン4)に含まれているように、「タイプ-2」コンテンツについてCCLMでクロマサンプルとダウンサンプリングされたルーマサンプルとの間のアライメント不一致を回避するために、次のダウンサンプリングフィルタが、線形モデル決定及び予測のためにルーマに適用される:
【表1】
【0153】
ラインバッファの数が増えないように、上側CTU境界では、これらの変更は適用されない。ダウンサンプリングフィルタ選択は、SPSフラグsps_cclm_colocated_chroma_flagによって管理される。sps_cclm_colocated_chroma_flagの値が0又はFALSEであるとき、ダウンサンプリングフィルタは、線形モデル決定及び予測のためにルーマに適用され、sps_cclm_colocated_chroma_flagの値が1又はTRUEであるとき、ダウンサンプリングフィルタは、線形モデル決定及び予測のためにルーマに適用されない。
【0154】
上述されたように線形モデルパラメータを導出するために使用される境界ルーマ再構成サンプルL()は、フィルタ処理されたルーマサンプルRec’[x,y]からサブサンプリングされる。
【表2】
【0155】
ルーマサンプルフィルタリング及びサブサンプリングのプロセスは、VVC仕様書の8.3.4.2.8に記載されている。
【0156】
8.3.4.2.8.INTRA_LT_CCLM、INTRA_L_CCLM及びINTRA_T_CCLMイントラ予測モードの仕様

このプロセスへの入力は:
- イントラ予測モードpredModeIntra、
- 現在ピクチャの左上サンプルに対する現在の変換ブロックの左上サンプルのサンプル位置(xTbC,yTbC)、
- 変換ブロックの幅を指定する変数nTbW、
- 変換ブロックの高さを指定する変数nTbH、
- x=-1,y=0..2*nTbH-1及びx=0..2*nTbW-1,y=-1であるクロマ隣接サンプルp[x][y]、である。

このプロセスの出力は、x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]である。

現在のルーマ位置(xTbY,yTbY)は、次のように導出される:

(xTbY,yTbY)=(xTbC<<1,yTbC<<1) (8-155)

変数availL、availT及びavailTLは、次のように導出される:
- ブロックの左隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC)を入力として用いて呼び出され、出力はavailLに割り当てられる。
- ブロックの上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC,yTbC-1)を入力として用いて呼び出され、出力はavailTに割り当てられる。
- ブロックの左上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC-1)を入力として用いて呼び出され、出力はavailTLに割り当てられる。
- 利用可能な右上隣接クロマサンプルの数numTopRightは、次のように導出される:
- 変数numTopRightは0に等しくセットされ、availTRはTRUEに等しくセットされる。
- predModeIntraがINTRA_T_CCLMに等しいとき、x=nTbW..2*nTbW-1について、availTRがFALSEに等しくなるか又はxが2*nTbW-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC+x,yTbC-1)を入力として用いて呼び出され、出力はavailTRに割り当てられる。
availTRがTRUEに等しいとき、numTopRightは1だけインクリメントされる。
- 利用可能な左下隣接クロマサンプルの数numLeftBelowは、次のように導出される:
- 変数numLeftBelowは0に等しくセットされ、availLBはTRUEに等しくセットされる。
- predModeIntraがINTRA_L_CCLMに等しいとき、y=nTbH..2*nTbH-1について、availLBがFALSEに等しくなるか又はyが2*nTbH-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC+y)を入力として用いて呼び出され、出力はavailLBに割り当てられる。
availLBがTRUEに等しいとき、numLeftBelowは1だけインクリメントされる。

上及び右上にある利用可能な隣接クロマサンプルの数numSampT並びに左及び左下にある利用可能な隣接クロマサンプルの数numSampLは、次のように導出される:
- predModeIntraがINTRA_LT_CCLMに等しいとき、次が適用される:

numSampT=availT?nTbW:0 (8-156)
numSampL=availL?nTbH:0 (8-157)

- そうでない場合には、次が適用される:

numSampT=(availT&&predModeIntra==INTRA_T_CCLM)?(nTbW+numTopRight):0 (8-158)

numSampL=(availL&&predModeIntra==INTRA_L_CCLM)?(nTbH+numLeftBelow):0 (8-159)

変数bCTUboundaryは、次のように導出される:

bCTUboundary=(yTbC&(1<<(CtbLog2SizeY-1)-1)==0)?TRUE:FALSE (8-160)

x=0..nTbW-1,y=0..nTbH-1とする予測サンプルpredSamples[x][y]は、次のように導出される:
- numSampL及びnumSampTの両方が0に等しい場合には、次が適用される:

predSamples[x][y]=1<<(BitDepth-1)
(8-161)

- そうでない場合には、次の順序付けられたステップが適用される:
1.x=0..nTbW*2-1,y=0..nTbH*2-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..2*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..2*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- sps_cclm_colocated_chroma_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(pY[2*x][2*y-1]+pY[2*x-1][2*y]+4*pY[2*x][2*y]+pY[2*x+1][2*y]+pY[2*x][2*y+1]+4)>>3 (8-162)

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(pY[0][2*y-1]+pY[-1][2*y]+4*pY[0][2*y]+pY[1][2*y]+pY[0][2*y+1]+4)>>3 (8-163)

- そうでない場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(pY[0][2*y-1]+2*pY[0][2*y]+pY[0][2*y+1]+2)>>2 (8-164)

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=(pY[2*x][-1]+pY[2*x-1][0]+4*pY[2*x][0]+pY[2*x+1][0]+pY[2*x][1]+4)>>3 (8-165)

- そうでない場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=(pY[2*x-1][0]+2*pY[2*x][0]+pY[2*x+1][0]+2)>>2 (8-166)

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(pY[0][-1]+pY[-1][0]+4*pY[0][0]+pY[1][0]+pY[0][1]+4)>>3 (8-167)

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(pY[-1][0]+2*pY[0][0]+pY[1][0]+2)>>2 (8-168)

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(pY[0][-1]+2*pY[0][0]+pY[0][1]+2)>>2 (8-169)

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0] (8-170)

- 他の場合には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(pY[2*x-1][2*y]+pY[2*x-1][2*y+1]+2*pY[2*x][2*y]+2*pY[2*x][2*y+1]+pY[2*x+1][2*y]+pY[2*x+1][2*y+1]+4)>>3 (8-171)

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(pY[-1][2*y]+pY[-1][2*y+1]+2*pY[0][2*y]+2*pY[0][2*y+1]+pY[1][2*y]+pY[1][2*y+1]+4)>>3 (8-172)

- そうでない場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(pY[0][2*y]+pY[0][2*y+1]+1)>>1 (8-173)
【0157】
最先端技術は、クロマ成分がサブサンプリングされない場合のルーマフィルタリングプロセスを規定していない。クロマフォーマットが4:2:0とは異なる場合にどのようにルーマ成分が処理されるべきかについては、以下で開示する。
【0158】
本明細書は、線形モデルのパラメータを決定するために入力データとして使用されるルーマサンプルを処理する方法を開示する。方法は、垂直方向及び水平方向で条件付きで適用される2つのフィルタの決定を含む。
【0159】
本願の実施形態は、再構成されたルーマサンプルに適用されるべきであるフィルタの係数を決定するためにチェックされている、クロマサンプリング係数を含むがこれに限られない条件の組の導入について記載する。
【0160】
図11に示されるように、方法は、次の通りに記載される。
【0161】
現在のブロック1101は、コーディングされているピクチャのクロマフォーマットに基づきSubWidthC(つまり、画像ブロックの幅)及びSubHeightC(つまり、画像ブロックの高さ)の値を決定又は算出又は取得することである。
【0162】
現在のブロック1102は、値SubWidthC及びSubHeightCに使用されるフィルタ“F”を定義又は決定することである。
【0163】
どのようにフィルタがSubWidthC及びSubHeightCの対応する値と関連付けられ得るかの例示的な実施形態は、表2~5に示されるとおりである。空間フィルタ“F”は、係数の行列の形で定義される。これらの係数が適用される対応する位置は、次のように、フィルタ処理されたルーマサンプルの位置(x,y)に対して定義される:
【数3】
【0164】
出力されたフィルタ処理された再構成サンプルの位置がブロック境界にあるとき、隣接する位置の一部は、隣接するブロックが利用可能でないことにより、利用不可能になる場合がある。この場合に、入力サンプルの位置は、同じ位置を選択するように変更される。このサンプリング変更は、異なる係数を有しているより小さい次元の等価なフィルタとして実装されてよい。
【0165】
具体的に、出力サンプルの位置が現在ブロックの左側境界にあり、ルーマブロックの左側に隣接するサンプルが利用可能でない場合に、フィルタリングのための位置は、次のように定義される:
【数4】
【0166】
出力サンプルの位置が現在ブロックの上側境界にあり、ルーマブロックの上側に隣接するサンプルが利用可能出ない場合に、フィルタリングのための位置は、次のように定義される:
【数5】
【0167】
出力サンプルの位置が現在ブロックの右側境界にある場合に、フィルタリングのための位置は、次のように定義される:
【数6】
【0168】
出力サンプルの位置が現在ブロックの下側境界にある場合に、フィルタリングのための位置は、次のように定義される:
【数7】
【0169】
【表3】
【表4】
【表5】
【表6】
【0170】
現在のブロック1103は、フィルタ処理されたルーマサンプル値Rec’[x,y]を得るために、再構成されたルーマサンプルのフィルタリングを実行することである。特に、これは、選択されたフィルタ“F”を再構成されたサンプルRec[x,y]に適用することによって、実行される:
【数8】
ここで、Fは、フィルタを表し、Nは、フィルタFの係数の和であり、(x,y)は、再構成されたサンプルの位置を表す。
【0171】
更なる実施形態は、ルーマサンプルに対するサブサンプリングされたクロマサンプルの位置に応じてフィルタタイプ(つまり、表2~5で定義されたフィルタ関連付け)を切り替えることである。一例として、サブサンプリングされたクロマサンプルが対応するルーマサンプル(ビットストリームでフラグによって通知される)と同一位置にないときには、表4が使用される。そうでない場合には、表2又は表3のどちらか一方が現在ブロックに使用される。
【0172】
表2又は表3の区別は、現在ブロックに属するルーマサンプルの数に基づき行われてよい。例えば、64以下のサンプルを含むブロックについて、クロマサブサンプリングが実行されない場合には、クロマフィルタリングは適用されない(表2)。そうではなく、ブロックサイズが64サンプルよりも大きい場合には、フィルタ“F”を定義するために表3が使用されることになる。64の値は単なる例であり、他の閾値が適用されてもよい。
【0173】
他の実施形態では、フィルタFは、表6~10に示されように、クロマフォーマット及びクロマタイプに従って選択される。クロマタイプは、クロマ成分の変位を指定し、図10A及び10Bに示される。表6~10で、「YUV 4:2:0」列で指定されるフィルタは、最新のVVC草案で使用されている。列「YUV 4:2:2」及び「YUV 4:4:4」は、対応するクロマフォーマットが定義される場合に、列「YUV 4:2:0」で定義されているものに代わるフィルタを定義する。
【表7】
【表8】
【表9】
【表10】
【表11】
【0174】
フィルタ
(外1)
は、フィルタバイパス動作(すなわち、出力値を入力値にセットすることによる)を含む異なる方法で実装されてよい。代替的に、それは、類似した加算及びシフト演算を用いて実装されてもよく、すなわち:
【数9】
【0175】
提案されている変更に従って、方法は、仕様書テキストとして実装されてよい:

3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- sps_cclm_colocated_chroma_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=
(F[1][0]*pY[SubWidthC*x][SubHeightC*y-1
+F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F[1][0]*pY[0][SubHeightC*y-1
+F[0][1]*pY[-1][SubHeightC*y
+F[1][1]*pY[0][SubHeightC*y
+2)>>2

- そうでない場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(2*F[1][0]*pY[0][SubHeightC*y-1
+F[1][1]*pY[0][SubHeightC*y
+2)>>2

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F[1][0]*pY[SubWidthC*x][-1
+F[0][1]*pY[SubWidthC*x-1][0
+F[1][1]*pY[SubWidthC*x][0
+F[2][1]*pY[SubWidthC*x+1][0
+F[1][2]*pY[SubWidthC*x][1]+4)>>3

- そうでない場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F[1][0]*pY[SubWidthC*x][-1]
+F[0][1]*pY[SubWidthC*x-1][0
+F[1][1]*pY[SubWidthC*x][0
+F[2][1]*pY[SubWidthC*x+1][0
+F[1][2]*pY[SubWidthC*x][1]+4)>>3

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=
(F[1][0]*pY[0][-1
+F[0][1]*pY[-1][0
+F[1][1]*pY[0][0
+F[2][1]*pY[1][0
+F[1][2]*pY[0][1]+4)>>3

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=
(F[0][1]*pY[-1][0
+F[1][1]*pY[0][0
+F[2][1]*pY[1][0
+2)>>2

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(pY[0][-1]+2*pY[0][0]+pY[0][1]+2)>>2 (8-169)

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0] (8-170)

- 他の場合には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=
(F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[2][2]*pY[SubWidthC*x+1][SubHeghtC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F[0][1]*pY[-1][SubHeightC*y
+F[0][2]*pY[-1][SubHeightC*y+1
+F[1][1]*pY[0][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1
+F[2][1]*pY[1][SubHeightC*y
+F[2][2]*pY[1][SubHeghtC*y+1]+4)>>3

- そうでない場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
+F[1][1]*pY[0][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1]+1)>>1
【0176】
上記の説明で記載されているフィルタF[i][j]は、本願の実施形態に従って定められる。
【0177】
他の例示的な実施形態は、次のように、VVC仕様草案の一部の形で説明され得る:

8.4.4.2.8 INTRA_LT_CCLM、INTRA_L_CCLM及びINTRA_T_CCLMイントラ予測モードの仕様

このプロセスへの入力は:
- イントラ予測モードpredModeIntra、
- 現在ピクチャの左上サンプルに対する現在の変換ブロックの左上サンプルのサンプル位置(xTbC,yTbC)、
- 変換ブロックの幅を指定する変数nTbW、
- 変換ブロックの高さを指定する変数nTbH、
- x=-1,y=0..2*nTbH-1及びx=0..2*nTbW-1,y=-1であるクロマ隣接サンプルp[x][y]、である。

このプロセスの出力は、x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]である。

現在のルーマ位置(xTbY,yTbY)は、次のように導出される:

(xTbY,yTbY)=(xTbC<<(SubWidthC-1),yTbC<<(SubHeightC-1)) (8-156)

変数availL、availT及びavailTLは、次のように導出される:
- ブロックの左隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC)を入力として用いて呼び出され、出力はavailLに割り当てられる。
- ブロックの上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC,yTbC-1)を入力として用いて呼び出され、出力はavailTに割り当てられる。
- ブロックの左上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC-1)を入力として用いて呼び出され、出力はavailTLに割り当てられる。
- 利用可能な右上隣接クロマサンプルの数numTopRightは、次のように導出される:
- 変数numTopRightは0に等しくセットされ、availTRはTRUEに等しくセットされる。
- predModeIntraがINTRA_T_CCLMに等しいとき、x=nTbW..2*nTbW-1について、availTRがFALSEに等しくなるか又はxが2*nTbW-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC+x,yTbC-1)を入力として用いて呼び出され、出力はavailTRに割り当てられる。
availTRがTRUEに等しいとき、numTopRightは1だけインクリメントされる。
- 利用可能な左下隣接クロマサンプルの数numLeftBelowは、次のように導出される:
- 変数numLeftBelowは0に等しくセットされ、availLBはTRUEに等しくセットされる。
- predModeIntraがINTRA_L_CCLMに等しいとき、y=nTbH..2*nTbH-1について、availLBがFALSEに等しくなるか又はyが2*nTbH-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC+y)を入力として用いて呼び出され、出力はavailLBに割り当てられる。
availLBがTRUEに等しいとき、numLeftBelowは1だけインクリメントされる。

上及び右上にある利用可能な隣接クロマサンプルの数numSampT並びに左及び左下にある利用可能な隣接クロマサンプルの数numSampLは、次のように導出される:
- predModeIntraがINTRA_LT_CCLMに等しいとき、次が適用される:

numSampT=availT?nTbW:0
numSampL=availL?nTbH:0

- そうでない場合には、次が適用される:

numSampT=(availT&&predModeIntra==INTRA_T_CCLM)?(nTbW+numTopRight):0

numSampL=(availL&&predModeIntra==INTRA_L_CCLM)?(nTbH+numLeftBelow):0

変数bCTUboundaryは、次のように導出される:

bCTUboundary=(yTbC&(1<<(CtbLog2SizeY-1)-1)==0)?TRUE:FALSE

x=0..nTbW-1,y=0..nTbH-1とする予測サンプルpredSamples[x][y]は、次のように導出される:
- numSampL及びnumSampTの両方が0に等しい場合には、次が適用される:

predSamples[x][y]=1<<(BitDepth-1)

- そうでない場合には、次の順序付けられたステップが適用される:
1.x=0..nTbW*SubWidthC-1,y=0..nTbH*SubHeightC-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=pY[x][y]
//説明のためだけ:YUV 4:4:4用のフィルタなし//

そうでない場合に、フィルタ{F3,F5,F6}の組について、次が適用される。//ここでは、係数を定義する//

F3[0]=1,F3[1]=2,F3[2]=1

- SubWidthC==2及びSubHeightC==2である場合
F5[0][1]=1,F5[1][1]=4,F3[2][1]=1,
F5[1][0]=1,F5[1][2]=1,F6[0][1]=1,
F6[1][1]=2,F6[2][1]=1,F6[0][2]=1,
F6[1][2]=2,F6[2][2]=1,F2[0]=1,F2[1]=1
- その他の場合
F5[0][1]=0,F5[1][1]=8,F3[2][1]=0,
F5[1][0]=0,F5[1][2]=0,F6[0][1]=2,
F6[1][1]=4,F6[2][1]=2,F6[0][2]=0,
F6[1][2]=0,F6[2][2]=0,F2[0]=2,F2[1]=0
- //本願の実施形態の太字部分を参照//
- sps_cclm_colocated_chroma_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、F5にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[1][0]*pY[SubWidthC*x][SubHeightC*y-1
+F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3

//ここで説明するためだけ:決定されたフィルタ及び“F”フィルタの他の全ての出現を適用//

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、F5にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[1][0]*pY[0][SubHeightC*y-1
+F[0][1]*pY[-1][SubHeightC*y
+F[1][1]*pY[0][SubHeightC*y
+F[2][1]*pY[1][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=1..nTbH-1とするpDsY[0][y]は、F3にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y-1
+F[1]*pY[0][SubHeightC*y
+F[2]*pY[0][SubHeightC*y+1
+2)>>2

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、F5にセットされたFについて、次のように導出される:

pDsY[x][0]=
(F[1][0]*pY[SubWidthC*x][-1
+F[0][1]*pY[SubWidthC*x-1][0
+F[1][1]*pY[SubWidthC*x][0
+F[2][1]*pY[SubWidthC*x+1][0
+F[1][2]*pY[SubWidthC*x][1]+4)>>3

- そうでない場合には、x=1..nTbW-1とするpDsY[x][0]は、F3にセットされたFについて、次のように導出される:

pDsY[x][0]=
F[0]*pY[SubWidthC*x-1][0
+F[1]*pY[SubWidthC*x][0
+F[2]*pY[SubWidthC*x+1][0]+2)>>2

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F5にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[1][0]*pY[0][-1
+F[0][1]*pY[-1][0
+F[1][1]*pY[0][0
+F[2][1]*pY[1][0
+F[1][2]*pY[0][1]+4)>>3

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[-1][0
+F[1]*pY[0][0
+F[2]*pY[1][0
+2)>>2

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[0][-1
+F[1]*pY[0][0]F[2]*pY[0][1
+2)>>2

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0]

- 他の場合には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、F6にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、F6にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0][1]*pY[-1][SubHeightC*y
+F[0][2]*pY[-1][SubHeightC*y+1
+F[1][1]*pY[0][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1
+F[2][1]*pY[1][SubHeightC*y
+F[2][2]*pY[1][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=0..nTbH-1とするpDsY[0][y]は、F2にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y
+F[1]*pY[0][SubHeightC*y+1]+1)>>1

4.numSampLが0よりも大きいとき、y=0..numSampL-1である、ダウンサンプリングされた隣接する左ルーマサンプルpLeftDsY[y]は、次のように導出される:
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- y=0..nTbH-1であるpLeftDsY[y]は、次のように導出される:pLeftDsY[y]=pY[-1][y]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- y=1..nTbH-1であるpLeftDsY[y]は、F5にセットされたFについて、次のように導出される:

pLeftDsY[y]=
F[1][0]*pY[-SubWidthC][SubHeightC*y-1
+F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1]+4)>>3

- availTLがTRUEに等しい場合に、pLeftDsY[0]は、F5にセットされたFについて、次のように導出される:

pLeftDsY[0]=
F[1][0]*pY[-SubWidthC][-1
+F[0][1]*pY[-1-SubWidthC][0
+F[1][1]*pY[-SubWidthC][0
+F[2][1]*pY[1-SubWidthC][0
+F[1][2]*pY[-SubWidthC][1]+4)>>3

- そうでない場合に、pLeftDsY[0]は、F3にセットされたFについて、次のように導出される:

pLeftDsY[0]=
=(F[0]*pY[-1-SubWidthC][0
+F[1]*pY[-SubWidthC][0
+F[2]*pY[1-SubWidthC][0
+2)>>2

- 他の場合に、F6にセットされたFについて、次が適用される:

pLeftDsY[y]=
F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[0][2]*pY[-1-SubWidthC][SubHeightC*y+1
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3

5.numSampTが0よりも大きいとき、x=0..numSampT-1である、ダウンサンプリングされた隣接する上ルーマサンプルpTopDsY[x]は、次のように定められる:
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- x=0..numSampT-1について、pTopDsY[x]=pY[x][-1]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- x=1..numSampT-1であるpTopDsY[x]は、次のように導出される:
- bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pTopDsY[x]=
F[1][0]*pY[SubWidthC*x][-1-SubHeightC
+F[0][1]*pY[SubWidthC*x-1][-SubHeightC
+F[1][1]*pY[SubWidthC*x][-SubHeightC
+F[2][1]*pY[SubWidthC*x+1][-SubHeightC
+F[1][2]*pY[SubWidthC*x][1-SubHeightC]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pTopDsY[x]=
F[0]*pY[SubWidthC*x-1][-1
+F[1]*pY[SubWidthC*x][-1
+F[2]*pY[SubWidthC*x+1][-1
+2)>>2

- pTopDsY[0]は、次のように導出される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pTopDsY[0]=
F[1][0]*pY[-1][-1-SubHeightC
+F[0][1]*pY[-1][-SubHeightC
+F[1][1]*pY[0][-SubHeightC
+F[2][1]*pY[1][-SubHeightC
+F[1][2]pY[-1][1-SubHeightC]4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pTopDsY[0]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合、F3にセットされたFについて、次が適用される:

pTopDsY[0]=
F[0]*pY[0][-1
+F[1]*pY[0][-2
+F[2]*pY[0][-1
+2)>>2

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pTopDsY[0]=pY[0][-1]

- 他の場合に、次が適用される:
- x=1..numSampT-1であるpTopDsY[x]は、次のように導出される:
- bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pTopDsY[x]=
F[0][1]*pY[SubWidthC*x-1][-2
+F[0][2]*pY[SubWidthC*x-1][-1
+F[1][1]*pY[SubWidthC*x][-2
+F[1][2]*pY[SubWidthC*x][-1
+F[2][1]*pY[SubWidthC*x+1][-2
+F[2][2]*pY[SubWidthC*x+1][-1]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pTopDsY[x]=
F[0]*pY[SubWidthC*-1][-1
+F[1]*pY[SubWidthC*][-1
+F[2][1]*pY[SubWidthC*+1][-1
+2)>>2

- pTopDsY[0]は、次のように導出される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pTopDsY[0]=
F[0][1]*pY[-1][-2
+F[0][2]*pY[-1][-1
+F[1][1]*pY[0][-2
+F[1][2]*pY[0][-1
+F[2][1]*pY[1][-2
+F[2][2]*pY[1][-1]+4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pTopDsY[0]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、F2にセットされたFについて、次が適用される:

pTopDsY[0]=(F[1]*pY[0][-2]+F[0]*pY[0][-1]+1)>>1

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pTopDsY[0]=pY[0][-1]

6.変数nS、xS、ySは、次のように導出される:
- predModeIntraがINTRA_LT_CCLMに等しい場合に、次が適用される:

nS=((availL&&availT)?Min(nTbW,nTbH):(availL?nTbH:nTbW))

xS=1<<(((nTbW>nTbH)&&availL&&availT)?(Log2(nTbW)-Log2(nTbH)):0) (8-192)

yS=1<<(((nTbH>nTbW)&&availL&&availT)?(Log2(nTbH)-Log2(nTbW)):0) (8-193)

- そうではなく、predModeIntraがINTRA_L_CCLMに等しい場合に、次が適用される:
nS=numSampL
xS=1
yS=1

- その他の場合(predModeIntraがINTRA_T_CCLMに等しい場合)に、次が適用される:
nS=numSampT
xS=1
yS=1

7.変数minY、maxY、minC及びmaxCは、次のように導出される:
- 変数minYは、1<<(BitDepth)+1に等しくセットされ、変数maxYは、-1に等しくセットされる。
- availTがTRUEに等しい場合に、x=0..nS-1として、変数minY、maxY、minC及びmaxCは、次のように導出される:
- minYがpTopDsY[x*xS]よりも大きい場合に、次が適用される:
minY=pTopDsY[x*sS]
minC=p[x*xS][-1]
- maxYがpTopDsY[x*xS]よりも小さい場合に、次が適用される:
maxY=pTopDsY[x*xS]
maxC=p[x*xS][-1]

- availLがTRUEに等しい場合に、y=0..nS-1として、変数minY、maxY、minC及びmaxCは、次のように導出される:
- minYがpLeftDsY[y*yS]よりも大きい場合に、次が適用される:
minY=pLeftDsY[y*yS]
minC=p[-1][y*yS]
- maxYがpLeftDsY[y*yS]よりも小さい場合に、次が適用される:
maxY=pLeftDsY[y*yS]
maxC=p[-1][y*yS]

8.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0
a=0
b=1<<(BitDepth-1)

- そうでない場合に、次が適用される:
diff=maxY-minY

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC
x=Floor(Log2(diff))
normDiff=((diff<<4)>>x)&15
x+=(normDiff!=0)?1:0
y=Floor(Log2(Abs(diffC)))+1
a=(diffC*(divSigTable[normDiff]|8)+2y-1)>>y
k=((3+x-y)<1)?1:3+x-y
a=((3+x-y)<1)?Sign(a)*15:a
b=minC-((a*minY)>>k)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}

-そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0
a=0
b=minC

9.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:

predSamples[x][y]
=Clip1C(((pDsY[x][y]*a)>>k)+b)
【0178】
他の実施形態は、多くても4つの隣接クロマサンプル及びそれらの対応するダウンサンプリングされたルーマサンプルによりCCLMパラメータを導出する方法について記載する。
【0179】
現在のクロマブロックの大きさがW×Hであるとすると、W’及びH’は
●LMモードが適用される場合に、W’=W,H’=H;
●LM-Aモードが適用される場合に、W’=W+H;
●LM-Lモードが適用される場合に、H’=H+W
としてセットされる。
【0180】
上隣接位置は、S[0,-1]...S[W’-1,-1]と表され、左隣接位置は、S[-1,0]...S[-1,H’-1]と表される。その場合に、4つのサンプルは
●LMモードが適用され、上側及び左側の両方の隣接サンプルが利用可能である場合に、S[W’/4,-1]、S[3W’/4,-1]、S[-1,H’/4]、S[-1,3H’/4];
●LM-Aモードが適用されるか、あるいは、上隣接サンプルのみが利用可能である場合に、S[W’/8,-1]、S[3W’/8,-1]、S[5W’/8,-1]、S[7W’/8,-1];
●LM-Lモードが適用されるか、あるいは、左隣接サンプルのみが利用可能である場合に、S[-1,H’/8]、S[-1,3H’/8]、S[-1,5H’/8]、S[-1,7H’/8]
として選択される。
【0181】
選択された位置にある4つの隣接ルーマサンプルはダウンサンプリングされ、2つのより小さい値:x 及びx と、2つのより大きい値:x 及びx とを見つけるために4回比較される。それらの対応するクロマサンプル値は、y 、y 、y 及びy と表される。次いで、x、x、y及びyは:

=(x +x +1)>>1;
=(x +x +1)>>1;
=(y +y +1)>>1;
=(y +y +1)>>1

として導出される。
【0182】
VVC仕様草案の一部の形での記載は、次のとおりである:

8.4.4.2.8 INTRA_LT_CCLM、INTRA_L_CCLM及びINTRA_T_CCLMイントラ予測モードの仕様

このプロセスへの入力は:
- イントラ予測モードpredModeIntra、
- 現在ピクチャの左上サンプルに対する現在の変換ブロックの左上サンプルのサンプル位置(xTbC,yTbC)、
- 変換ブロックの幅を指定する変数nTbW、
- 変換ブロックの高さを指定する変数nTbH、
- x=-1,y=0..2*nTbH-1及びx=0..2*nTbW-1,y=-1であるクロマ隣接サンプルp[x][y]、である。

このプロセスの出力は、x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]である。

現在のルーマ位置(xTbY,yTbY)は、次のように導出される:

(xTbY,yTbY)=(xTbC<<(SubWidthC-1),yTbC<<(SubHeightC-1))

変数availL、availT及びavailTLは、次のように導出される:
- ブロックの左隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC)を入力として用いて呼び出され、出力はavailLに割り当てられる。
- ブロックの上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC,yTbC-1)を入力として用いて呼び出され、出力はavailTに割り当てられる。
- ブロックの左上隣接サンプルの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC-1)を入力として用いて呼び出され、出力はavailTLに割り当てられる。
- 利用可能な右上隣接クロマサンプルの数numTopRightは、次のように導出される:
- 変数numTopRightは0に等しくセットされ、availTRはTRUEに等しくセットされる。
- predModeIntraがINTRA_T_CCLMに等しいとき、x=nTbW..2*nTbW-1について、availTRがFALSEに等しくなるか又はxが2*nTbW-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC+x,yTbC-1)を入力として用いて呼び出され、出力はavailTRに割り当てられる。
availTRがTRUEに等しいとき、numTopRightは1だけインクリメントされる。
- 利用可能な左下隣接クロマサンプルの数numLeftBelowは、次のように導出される:
- 変数numLeftBelowは0に等しくセットされ、availLBはTRUEに等しくセットされる。
- predModeIntraがINTRA_L_CCLMに等しいとき、y=nTbH..2*nTbH-1について、availLBがFALSEに等しくなるか又はyが2*nTbH-1に等しくなるまで、次が適用される:
- ブロックの利用可能性導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)及び隣接するクロマ位置(xTbC-1,yTbC+y)を入力として用いて呼び出され、出力はavailLBに割り当てられる。
availLBがTRUEに等しいとき、numLeftBelowは1だけインクリメントされる。

上及び右上にある利用可能な隣接クロマサンプルの数numSampT並びに左及び左下にある利用可能な隣接クロマサンプルの数numSampLは、次のように導出される:
- predModeIntraがINTRA_LT_CCLMに等しいとき、次が適用される:

numSampT=availT?nTbW:0
numSampL=availL?nTbH:0

- そうでない場合には、次が適用される:

numSampT=(availT&&predModeIntra==INTRA_T_CCLM)?(nTbW+Min(numTopRight,nTbH)):0

numSampL=(availL&&predModeIntra==INTRA_L_CCLM)?(nTbH+Min(numLeftBelow,nTbW)):0

変数bCTUboundaryは、次のように導出される:

bCTUboundary=(yTbC&(1<<(CtbLog2SizeY-1)-1)==0)?TRUE:FALSE

NがL及びTで置換される変数cntN及びアレイpickPosN[]は、次のように導出される:
- 変数numIs4Nは、((availT&&availL&&predModeIntra==INTRA LT CCLM)?0:1)に等しくセットされる。
- 変数startPosNは、numSampN>>(2+numIs4N)に等しくセットされる。
- 変数pickStepNは、Max(1,numSampN>>(1+numIs4N))に等しくセットされる。
- availNがTRUEに等しく、predModeIntraがINTRA_LT_CCLM又はINTRA_N_CCLMに等しい場合に、cntNは、Min(numSampN,(1+numIs4N)<<1)に等しくセットされ、pickPosN[pos]は、(startPosN+pos*pickStepN)に等しくセットされ、pos=0..(cntN-1)である。
- そうでない場合に、cntNは、0に等しくセットされる。

x=0..nTbW-1,y=0..nTbH-1とする予測サンプルpredSamples[x][y]は、次のように導出される:
- numSampL及びnumSampTの両方が0に等しい場合には、次が適用される:

predSamples[x][y]=1<<(BitDepth-1)

- そうでない場合には、次の順序付けられたステップが適用される:
1.x=0..nTbW*SubWidthC-1,y=0..nTbH*SubHeightC-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:
pDsY[x][y]=pY[x][y]
- そうでない場合に、フィルタ{F3,F5,F6}の組について、次が適用される:
F3[0]=1,F3[1]=2,F3[2]=1
- SubWidthC==2及びSubHeightC==2である場合
F5[0][1]=1,F5[1][1]=4,F3[2][1]=1,
F5[1][0]=1,F5[1][2]=1,F6[0][1]=1,
F6[1][1]=2,F6[2][1]=1,F6[0][2]=1,
F6[1][2]=2,F6[2][2]=1,F2[0]=1,
F2[1]=1
- その他の場合
F5[0][1]=0,F5[1][1]=8,F3[2][1]=0,
F5[1][0]=0,F5[1][2]=0,F6[0][1]=2,
F6[1][1]=4,F6[2][1]=2,F6[0][2]=0,
F6[1][2]=0,F6[2][2]=0,F2[0]=2,
F2[1]=0
- sps_cclm_colocated_chroma_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、F5にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[1][0]*pY[SubWidthC*x][SubHeightC*y-1
+F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、F5にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[1][0]*pY[0][SubHeightC*y-1
+F[0][1]*pY[-1][SubHeightC*y
+F[1][1]*pY[0][SubHeightC*y
+F[2][1]*pY[1][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=1..nTbH-1とするpDsY[0][y]は、F3にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y-1
+F[1]*pY[0][SubHeightC*y
+F[2]*pY[0][SubHeightC*y+1
+2)>>2

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、F5にセットされたFについて、次のように導出される:

pDsY[x][0]=
(F[1][0]*pY[SubWidthC*x][-1
+F[0][1]*pY[SubWidthC*x-1][0
+F[1][1]*pY[SubWidthC*x][0
+F[2][1]*pY[SubWidthC*x+1][0
+F[1][2]*pY[SubWidthC*x][1]+4)>>3

- そうでない場合には、x=1..nTbW-1とするpDsY[x][0]は、F3にセットされたFについて、次のように導出される:

pDsY[x][0]=
F[0]*pY[SubWidthC*x-1][0
+F[1]*pY[SubWidthC*x][0
+F[2]*pY[SubWidthC*x+1][0]+2)>>2

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F5にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[1][0]*pY[0][-1
+F[0][1]*pY[-1][0
+F[1][1]*pY[0][0
+F[2][1]*pY[1][0
+F[1][2]*pY[0][1]+4)>>3

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[-1][0
+F[1]*pY[0][0
+F[2]*pY[1][0
+2)>>2

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[0][-1
+F[1]*pY[0][0
+F[2]*pY[0][1
+2)>>2

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0]

- 他の場合には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、F6にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、F6にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0][1]*pY[-1][SubHeightC*y
+F[0][2]*pY[-1][SubHeightC*y+1
+F[1][1]*pY[0][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1
+F[2][1]*pY[1][SubHeightC*y
+F[2][2]*pY[1][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=0..nTbH-1とするpDsY[0][y]は、F2にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y
+F[1]*pY[0][SubHeightC*y+1]+1)>>1

4.numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..(cntL-1)として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..(cntL-1)として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- pSelDsY[i]=pY[-1][y]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- y>0||availTL==TRUEである場合に、F5にセットされたFについて:

pSelDsY[idx]=
F[1][0]*pY[-SubWidthC][SubHeightC*y-1
+F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1]+4)>>3

- そうでない場合に、F3にセットされたFについて:

pSelDsY[idx]=
(F[0]*pY[-1-SubWidthC][0
+F[1]*pY[-SubWidthC][0
+F[2]*pY[1-SubWidthC][0
+2)>>2

- 他の場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[0][2]*pY[-1-SubWidthC][SubHeightC*y+1
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3

5.numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..(cntL+cntT-1)として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=cntL..cntL+cntT-1として、次のように導出される:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- pSelDsY[idx]=pY[x][-1]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- x>0である場合:
- bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[1][0]*pY[SubWidthC*x][-1-SubHeightC
+F[0][1]*pY[SubWidthC*x-1][-SubHeightC
+F[1][1]*pY[SubWidthC*x][-SubHeightC
+F[2][1]*pY[SubWidthC*x+1][-SubHeightC
+F[1][2]*pY[SubWidthC*x][1-SubHeightC]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[SubWidthC*x-1][-1
+F[1]*pY[SubWidthC*x][-1
+F[2]*pY[SubWidthC*x+1][-1
+2)>>2

- 他の場合:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[1][0]*pY[-1][-1-SubHeightC
+F[0][1]*pY[-1][-SubHeightC
+F[1][1]*pY[0][-SubHeightC
+F[2][1]*pY[1][-SubHeightC
+F[1][2]pY[-1][1-SubHeightC]+4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2 (8-182)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[0][-1
+F[1]*pY[0][-2
+F[2]*pY[0][-1
+2)>>2

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1]

- 他の場合に、次が適用される:
- x>0である場合:
- bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[SubWidthC*x-1][-2
+F[0][2]*pY[SubWidthC*x-1][-1
+F[1][1]*pY[SubWidthC*x][-2
+F[1][2]*pY[SubWidthC*x][-1
+F[2][1]*pY[SubWidthC*x+1][-2
+F[2][2]*pY[SubWidthC*x+1][-1]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[SubWidthC*-1][-1
+F[1]*pY[SubWidthC*][-1
+F[2][1]*pY[SubWidthC*+1][-1
+2)>>2

- 他の場合:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[-1][-2
+F[0][2]*pY[-1][-1
+F[1][1]*pY[0][-2
+F[1][2]*pY[0][-1
+F[2][1]*pY[1][-2
+F[2][2]*pY[1][-1]+4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、F2にセットされたFについて、次が適用される:

pSelDsY[idx]=(F[1]*pY[0][-2]+F[0]*pY[0][-1]+1)>>1

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1]

6.cntT+cntLが0に等しくないとき、変数minY、maxY、minC及びmaxCは、次のように導出される:
- cntT+cntLが2に等しいとき、pSelComp[3]をpSelComp[0]に等しくセットし、pSelComp[2]をpSelComp[1]に等しくセットし、pSelComp[0]をpSelComp[1]に等しくセットし、pSelComp[1]をpSelComp[3]に等しくセットし、ただし、CompはDsY及びCで置換される。
- アレイminGrpIdx[]及びmaxGrpIdx[]は、minGrpIdx[0]=0、minGrpIdx[1]=2、maxGrpIdx[0]=1、maxGrpIdx[1]=3とセットされる。
- pSelDsY[minGrpIdx[0]]>pSelDsY[minGrpIdx[1]]である場合に、Swap(minGrpIdx[0],minGrpIdx[1])。
- pSelDsY[maxGrpIdx[0]]>pSelDsY[maxGrpIdx[1]]である場合に、Swap(maxGrpIdx[0],maxGrpIdx[1])。
- pSelDsY[minGrpIdx[0]]>pSelDsY[maxGrpIdx[1]]である場合に、Swap(minGrpIdx,maxGrpIdx)。
- pSelDsY[minGrpIdx[1]]>pSelDsY[maxGrpIdx[0]]である場合に、Swap(minGrpIdx[1],maxGrpIdx[0])。
- maxY=(pSelDsY[maxGrpIdx[0]]+pSelDsY[maxGrpIdx[1]]+1)>>1。
- maxC=(pSelC[maxGrpIdx[0]]+pSelC[maxGrpIdx[1]]+1)>>1。
- minY=(pSelDsY[minGrpIdx[0]]+pSelDsY[minGrpIdx[1]]+1)>>1。
- minC=(pSelC[minGrpIdx[0]]+pSelC[minGrpIdx[1]]+1)>>1。

7.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0
a=0
b=1<<(BitDepth-1)

- そうでない場合に、次が適用される:
diff=maxY-minY

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC
x=Floor(Log2(diff))
normDiff=((diff<<4)>>x)&15
x+=(normDiff!=0)?1:0
y=Floor(Log2(Abs(diffC)))+1
a=(diffC*(divSigTable[normDiff]|8)+2y-1)>>y
k=((3+x-y)<1)?1:3+x-y
a=((3+x-y)<1)?Sign(a)*15:a
b=minC-((a*minY)>>k)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}

-そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0
a=0
b=minC

8.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:

predSamples[x][y]
=Clip1C(((pDsY[x][y]*a)>>k)+b)
【0183】
他の実施形態は、ブロック境界に対する予測されたブロックの位置に関して、ルーマ参照サンプルのフェッチにおいて違いがある。特に、クロマフォーマットがYUV 4:2:2として指定され、クロマ成分及びルーマ成分が同一位置にある場合に(図10Bの「クロマサンプルタイプ2」及び「クロマサンプルタイプ4」)、ルーマ成分からのサンプリングは、ルーマブロックの上側に対して異なるオフセットを有して実行され得る(図12A及び図12Cを参照)。
【0184】
位置1202でフィルタ処理されたルミナンス参照サンプルを取得するために、係数[1 2 1]/4を有するフィルタが、位置1202にあるサンプルを含む参照サンプルの組に適用される。図12Aは、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:2として指定されるか、又はブロック境界1201がCTUライン境界である、ところの実施形態を示す。この場合に、[1 2 1]/4フィルタが参照サンプル1202(ハッチングされた長方形によって示される)に適用され、それにより、係数2/4が中央位置にある係数に適用される。
【0185】
図12Bは、ブロック境界1201がCTUライン境界ではなく、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される、ところの実施形態を示す。この場合に、[1 2 1;1 2 1]/8フィルタが参照サンプル1202(ハッチングされた長方形によって示される)に適用され、それにより、係数“2/4”が2つの中央位置にある係数に適用される。
【0186】
図12Cは、左上サンプルが利用可能ではなく、かつ、クロマフォーマットがYUV 4:2:2として指定されるか、又はブロック境界1201がCTUライン境界である、ところの実施形態を示す。この場合に、バイパス[1]/1フィルタが参照サンプル1202(ハッチングされた長方形によって示される)に適用される。
【0187】
図12Dは、ブロック境界1201がCTUライン境界ではなく、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される、ところの実施形態を示す。この場合に、[1 1]/2フィルタが参照サンプル1202(ハッチングされた長方形によって示される)に適用される。
【0188】
以下で与えられるVVC仕様草案の部分は、図12A~12Dに示される場合に対応する:

x=0..nTbW-1,y=0..nTbH-1とする予測サンプルpredSamples[x][y]は、次のように導出される:
- numSampL及びnumSampTの両方が0に等しい場合には、次が適用される:

predSamples[x][y]=1<<(BitDepth-1)

- そうでない場合には、次の順序付けられたステップが適用される:
1.x=0..nTbW*SubWidthC-1,y=0..nTbH*SubHeightC-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:
pDsY[x][y]=pY[x][y]
- そうでない場合に、フィルタ{F3,F5,F6}の組について、次が適用される:
F3[0]=1,F3[1]=2,F3[2]=1
- SubWidthC==2及びSubHeightC==2である場合
F5[0][1]=1,F5[1][1]=4,F3[2][1]=1,
F5[1][0]=1,F5[1][2]=1,F6[0][1]=1,
F6[1][1]=2,F6[2][1]=1,F6[0][2]=1,
F6[1][2]=2,F6[2][2]=1,F2[0]=1,
F2[1]=1
- その他の場合
F5[0][1]=0,F5[1][1]=8,F3[2][1]=0,
F5[1][0]=0,F5[1][2]=0,F6[0][1]=2,
F6[1][1]=4,F6[2][1]=2,F6[0][2]=0,
F6[1][2]=0,F6[2][2]=0,F2[0]=2,
F2[1]=0
- sps_cclm_colocated_chroma_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、F5にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[1][0]*pY[SubWidthC*x][SubHeightC*y-1
+F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、F5にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[1][0]*pY[0][SubHeightC*y-1
+F[0][1]*pY[-1][SubHeightC*y
+F[1][1]*pY[0][SubHeightC*y
+F[2][1]*pY[1][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=1..nTbH-1とするpDsY[0][y]は、F3にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y-1
+F[1]*pY[0][SubHeightC*y
+F[2]*pY[0][SubHeightC*y+1
+2)>>2

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、F5にセットされたFについて、次のように導出される:

pDsY[x][0]=
(F[1][0]*pY[SubWidthC*x][-1
+F[0][1]*pY[SubWidthC*x-1][0
+F[1][1]*pY[SubWidthC*x][0
+F[2][1]*pY[SubWidthC*x+1][0
+F[1][2]*pY[SubWidthC*x][1]+4)>>3

- そうでない場合には、x=1..nTbW-1とするpDsY[x][0]は、F3にセットされたFについて、次のように導出される:

pDsY[x][0]=
F[0]*pY[SubWidthC*x-1][0
+F[1]*pY[SubWidthC*x][0
+F[2]*pY[SubWidthC*x+1][0]+2)>>2

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F5にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[1][0]*pY[0][-1
+F[0][1]*pY[-1][0
+F[1][1]*pY[0][0
+F[2][1]*pY[1][0
+F[1][2]*pY[0][1]+4)>>3

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[-1][0
+F[1]*pY[0][0
+F[2]*pY[1][0
+2)>>2

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、F3にセットされたFについて、次のように導出される:

pDsY[0][0]=
(F[0]*pY[0][-1
+F[1]*pY[0][0
+F[2]*pY[0][1
+2)>>2

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0]

- 他の場合には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、F6にセットされたFについて、次のように導出される:

pDsY[x][y]=
(F[0][1]*pY[SubWidthC*x-1][SubHeightC*y
+F[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1
+F[1][1]*pY[SubWidthC*x][SubHeightC*y
+F[1][2]*pY[SubWidthC*x][SubHeightC*y+1
+F[2][1]*pY[SubWidthC*x+1][SubHeightC*y
+F[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、F6にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0][1]*pY[-1][SubHeightC*y
+F[0][2]*pY[-1][SubHeightC*y+1
+F[1][1]*pY[0][SubHeightC*y
+F[1][2]*pY[0][SubHeightC*y+1
+F[2][1]*pY[1][SubHeightC*y
+F[2][2]*pY[1][SubHeightC*y+1]+4)>>3

- そうでない場合には、y=0..nTbH-1とするpDsY[0][y]は、F2にセットされたFについて、次のように導出される:

pDsY[0][y]=
(F[0]*pY[0][SubHeightC*y
+F[1]*pY[0][SubHeightC*y+1]+1)>>1

4.numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..(cntL-1)として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..(cntL-1)として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- pSelDsY[i]=pY[-1][y]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- y>0||availTL==TRUEである場合に、F5にセットされたFについて:

pSelDsY[idx]=
F[1][0]*pY[-SubWidthC][SubHeightC*y-1
+F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1]+4)>>3

- そうでない場合に、F3にセットされたFについて:

pSelDsY[idx]=
(F[0]*pY[-1-SubWidthC][0
+F[1]*pY[-SubWidthC][0
+F[2]*pY[1-SubWidthC][0
+2)>>2

- 他の場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[-1-SubWidthC][SubHeightC*y
+F[0][2]*pY[-1-SubWidthC][SubHeightC*y+1
+F[1][1]*pY[-SubWidthC][SubHeightC*y
+F[1][2]*pY[-SubWidthC][SubHeightC*y+1
+F[2][1]*pY[1-SubWidthC][SubHeightC*y
+F[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3

5.numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..(cntL+cntT-1)として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=cntL..cntL+cntT-1として、次のように導出される:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC==1及びSubHeightC==1である場合に、次が適用される:
- pSelDsY[idx]=pY[x][-1]
- そうでない場合に、次が適用される:
- sps_cclm_colocated_chroma_flagが1に等しい場合に、次が適用される:
- x>0である場合:
- bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[1][0]*pY[SubWidthC*x][-1-SubHeightC
+F[0][1]*pY[SubWidthC*x-1][-SubHeightC
+F[1][1]*pY[SubWidthC*x][-SubHeightC
+F[2][1]*pY[SubWidthC*x+1][-SubHeightC
+F[1][2]*pY[SubWidthC*x][1-SubHeightC]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[SubWidthC*x-1][-1
+F[1]*pY[SubWidthC*x][-1
+F[2]*pY[SubWidthC*x+1][-1
+2)>>2

- 他の場合:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F5にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[1][0]*pY[-1][-1-SubHeightC
+F[0][1]*pY[-1][-SubHeightC
+F[1][1]*pY[0][-SubHeightC
+F[2][1]*pY[1][-SubHeightC
+F[1][2]pY[-1][1-SubHeightC]+4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2 (8-182)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[0][-1
+F[1]*pY[0][-2
+F[2]*pY[0][-1
+2)>>2

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1]

- 他の場合に、次が適用される:
- x>0である場合:
- bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[SubWidthC*x-1][-1
+F[0][2]*pY[SubWidthC*x-1][-2
+F[1][1]*pY[SubWidthC*x][-1
+F[1][2]*pY[SubWidthC*x][-2
+F[2][1]*pY[SubWidthC*x+1][-1
+F[2][2]*pY[SubWidthC*x+1][-2]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[SubWidthC*-1][-1
+F[1]*pY[SubWidthC*][-1
+F[2][1]*pY[SubWidthC*+1][-1
+2)>>2

- 他の場合:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0][1]*pY[-1][-1
+F[0][2]*pY[-1][-2
+F[1][1]*pY[0][-1
+F[1][2]*pY[0][-2
+F[2][1]*pY[1][-1
+F[2][2]*pY[1][-2]+4)>>3

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:

pSelDsY[idx]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、F2にセットされたFについて、次が適用される:

pSelDsY[idx]=(F[1]*pY[0][-2]+F[0]*pY[0][-1]+1)>>1

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1]

6.cntT+cntLが0に等しくないとき、変数minY、maxY、minC及びmaxCは、次のように導出される:
- cntT+cntLが2に等しいとき、pSelComp[3]をpSelComp[0]に等しくセットし、pSelComp[2]をpSelComp[1]に等しくセットし、pSelComp[0]をpSelComp[1]に等しくセットし、pSelComp[1]をpSelComp[3]に等しくセットし、ただし、CompはDsY及びCで置換される。
- アレイminGrpIdx[]及びmaxGrpIdx[]は、minGrpIdx[0]=0、minGrpIdx[1]=2、maxGrpIdx[0]=1、maxGrpIdx[1]=3とセットされる。
- pSelDsY[minGrpIdx[0]]>pSelDsY[minGrpIdx[1]]である場合に、Swap(minGrpIdx[0],minGrpIdx[1])。
- pSelDsY[maxGrpIdx[0]]>pSelDsY[maxGrpIdx[1]]である場合に、Swap(maxGrpIdx[0],maxGrpIdx[1])。
- pSelDsY[minGrpIdx[0]]>pSelDsY[maxGrpIdx[1]]である場合に、Swap(minGrpIdx,maxGrpIdx)。
- pSelDsY[minGrpIdx[1]]>pSelDsY[maxGrpIdx[0]]である場合に、Swap(minGrpIdx[1],maxGrpIdx[0])。
- maxY=(pSelDsY[maxGrpIdx[0]]+pSelDsY[maxGrpIdx[1]]+1)>>1。
- maxC=(pSelC[maxGrpIdx[0]]+pSelC[maxGrpIdx[1]]+1)>>1。
- minY=(pSelDsY[minGrpIdx[0]]+pSelDsY[minGrpIdx[1]]+1)>>1。
- minC=(pSelC[minGrpIdx[0]]+pSelC[minGrpIdx[1]]+1)>>1。

7.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0
a=0
b=1<<(BitDepth-1)

- そうでない場合に、次が適用される:
diff=maxY-minY

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC
x=Floor(Log2(diff))
normDiff=((diff<<4)>>x)&15
x+=(normDiff!=0)?1:0
y=Floor(Log2(Abs(diffC)))+1
a=(diffC*(divSigTable[normDiff]|8)+2y-1)>>y
k=((3+x-y)<1)?1:3+x-y
a=((3+x-y)<1)?Sign(a)*15:a
b=minC-((a*minY)>>k)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}

-そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0
a=0
b=minC

8.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:

predSamples[x][y]
=Clip1C(((pDsY[x][y]*a)>>k)+b)
【0189】
仕様の別の定式化は、フィルタ(F1、F2、F3及びF4)の順次表記を使用する。順次的なフィルタの表記を使用する開示は、次のとおりである:

このプロセスへの入力は:
- イントラ予測モードpredModeIntra、
- 現在ピクチャの左上サンプルに対する現在の変換ブロックの左上サンプルのサンプル位置(xTbC,yTbC)、
- 変換ブロックの幅を指定する変数nTbW、
- 変換ブロックの高さを指定する変数nTbH、
- x=-1,y=0..2*nTbH-1及びx=0..2*nTbW-1,y=-1であるクロマ隣接サンプルp[x][y]、である。

このプロセスの出力は、x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]である。

現在のルーマ位置(xTbY,yTbY)は、次のように導出される:

(xTbY,yTbY)=(xTbC<<(SubWidthC-1),yTbC<<(SubHeightC-1)) (346)

変数availL、availT及びavailTLは、次のように導出される:
- 第6.4.4節で規定されている、隣接ブロックの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)、隣接するクロマ位置(xTbC-1,yTbC)、FALSEに等しくセットされたcheckPredModeY、及びcIdxを入力として用いて呼び出され、出力はavailLに割り当てられる。
- 第6.4.4節で規定されている、隣接ブロックの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)m隣接するクロマ位置(xTbC,yTbC-1)、FALSEに等しくセットされたcheckPredModeY、及びcIdxを入力として用いて呼び出され、出力はavailTに割り当てられる。
- 変数availTLは、次のように導出される:
availTL=availL&&availT (347)
- 利用可能な右上隣接クロマサンプルの数numTopRightは、次のように導出される:
- 変数numTopRightは0に等しくセットされ、availTRはTRUEに等しくセットされる。
- predModeIntraがINTRA_T_CCLMに等しいとき、x=nTbW..2*nTbW-1について、availTRがFALSEに等しくなるか又はxが2*nTbW-1に等しくなるまで、次が適用される:
- 第6.4.4節で規定されている、隣接ブロックの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)、隣接するクロマ位置(xTbC+x,yTbC-1)、FALSEに等しくセットされたcheckPredModeY、及びcIdxを入力として用いて呼び出され、出力はavailableTRに割り当てられる。
- availableTRがTRUEに等しいとき、numTopRightは1だけインクリメントされる。
- 利用可能な左下隣接クロマサンプルの数numLeftBelowは、次のように導出される:
- 変数numLeftBelowは0に等しくセットされ、availLBはTRUEに等しくセットされる。
- predModeIntraがINTRA_L_CCLMに等しいとき、y=nTbH..2*nTbH-1について、availLBがFALSEに等しくなるか又はyが2*nTbH-1に等しくなるまで、次が適用される:
- 第6.4.4節で規定されている、隣接ブロックの利用可能性の導出プロセスは、(xTbC,yTbC)に等しくセットされた現在のクロマ位置(xCurr,yCurr)、隣接するクロマ位置(xTbC-1,yTbC+y)、FALSEに等しくセットされたcheckPredModeY、及びcIdxを入力として用いて呼び出され、出力はavailLBに割り当てられる。
- availLBがTRUEに等しいとき、numLeftBelowは1だけインクリメントされる。

上及び右上にある利用可能な隣接クロマサンプルの数numSampT並びに左及び左下にある利用可能な隣接クロマサンプルの数numSampLは、次のように導出される:
- predModeIntraがINTRA_LT_CCLMに等しいとき、次が適用される:

numSampT=availT?nTbW:0 (348)
numSampL=availL?nTbH:0 (349)

- そうでない場合には、次が適用される:

numSampT=(availT&&predModeIntra==INTRA_T_CCLM)?(nTbW+Min(numTopRight,nTbH)):0
(350)

numSampL=(availL&&predModeIntra==INTRA_L_CCLM)?(nTbH+Min(numLeftBelow,nTbW)):0
(351)

変数bCTUboundaryは、次のように導出される:

bCTUboundary=(yTbC&(1<<(CtbLog2SizeY-1)-1)==0)?TRUE:FALSE (352)

NがL及びTで置換される変数cntN及びアレイpickPosNは、次のように導出される:
- 変数numIs4Nは、次のように導出される:

numIs4N=((availT&&availL&&predModeIntra==INTRA LT CCLM)?0:1) (353)

- 変数startPosNは、numSampN>>(2+numIs4N)に等しくセットされる。
変数pickStepNは、Max(1,numSampN>>(1+numIs4N))に等しくセットされる。
- availNがTRUEに等しく、predModeIntraがINTRA_LT_CCLM又はINTRA N CCLMに等しい場合に、次の割り当てが行われる:
- cntNは、Min(numSampN,(1+numIs4N)<<1)に等しくセットされる。
- pickPosN[pos]は、(startPosN+pos*pickStepN)に等しくセットされ、pos=0..(cntN-1)である。
- そうでない場合に、cntNは、0に等しくセットされる。

x=0..nTbW-1,y=0..nTbH-1とする予測サンプルpredSamples[x][y]は、次のように導出される:
- numSampL及びnumSampTの両方が0に等しい場合には、次が適用される:

predSamples[x][y]
=1<<(BitDepth-1) (354)

- そうでない場合には、次の順序付けられたステップが適用される:
1.x=0..nTbW*SubWidthC-1,y=0..nTbH*SubHeightC-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:
pDsY[x][y]=pY[x][y] (355)
- そうでない場合に、次が適用される:
- 1次元フィルタ係数アレイF1及びF2、並びに2次元フィルタ係数アレイF3及びF4は、次のとおりに定められる。
F1[0]=2,F1[1]=0 (356)
F2[0]=1,F2[1]=2,F2[2]=1 (357)
F3[i][j]=F4[i][j]=0,
ただし、i=0..2,j=0..2 (358)
- SubWidthC及びSubHeightCの両方が2に等しい場合に、次が適用される:
F1[0]=1,F1[1]=1 (359)
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1 (360)
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1
(361)
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
(362)
- その他の場合に、次が適用される:
F3[1][1]=8 (363)
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2
(364)
-sps_chroma_vertical_collocated_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(F3[1][0]*pY[SubWidthC*x][SubHeightC*y-1]+F3[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F3[1][1]*pY[SubWidthC*x][SubHeightC*y]+F3[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F3[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3 (365)

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F3[1][0]*pY[0][SubHeightC*y-1]+
F3[0][1]*pY[-1][SubHeightC*y]+
F3[1][1]*pY[0][SubHeightC*y]+
F3[2][1]*pY[1][SubHeightC*y]+
F3[1][2]*pY[0][SubHeightC*y+1]
+4)>>3 (366)

- そうでない場合(availLがFALSEに等しい場合)には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F2[0]*pY[0][SubHeightC*y-1]+
F2[1]*pY[0][SubHeightC*y]+
F2[2]*pY[0][SubHeightC*y+1]
+2)>>2 (367)

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F3[1][0]*pY[SubWidthC*x][-1]+
F3[0][1]*pY[SubWidthC*x-1][0]+
F3[1][1]*pY[SubWidthC*x][0]+
F3[2][1]*pY[SubWidthC*x+1][0]+
F3[1][2]*pY[SubWidthC*x][1]
+4)>>3 (368)

- そうでない場合(availTがFALSEに等しい場合)には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F2[0]*pY[SubWidthC*x-1][0]+
F2[1]*pY[SubWidthC*x][0]+
F2[2]*pY[SubWidthC*x+1][0]
+2)>>2 (369)

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=
(F3[1][0]*pY[0][-1]+
F3[0][1]*pY[-1][0]+
F3[1][1]*pY[0][0]+
F3[2][1]*pY[1][0]+
F3[1][2]*pY[0][1]+4)>>3 (370)

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(F2[0]*pY[-1][0]
+F2[1]*pY[0][0]+F2[2]*pY[1][0]
+2)>>2 (371)

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(F2[0]*pY[0][-1]
+F2[1]*pY[0][0]+F2[2]*pY[0][1]
+2)>>2 (372)

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0] (373)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(F4[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F4[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1]+F4[1][1]*pY[SubWidthC*x][SubHeightC*y]+F4[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+F4[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F4[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3 (374)

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F4[0][1]*pY[-1][SubHeightC*y]+
F4[0][2]*pY[-1][SubHeightC*y+1]+
F4[1][1]*pY[0][SubHeightC*y]+
F4[1][2]*pY[0][SubHeightC*y+1]+
F4[2][1]*pY[1][SubHeightC*y]+
F4[2][2]*pY[1][SubHeightC*y+1]
+4)>>3 (375)

- そうでない場合(availLがFALSEに等しい場合)には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(F1[0]*pY[0][SubHeightC*y]+
F1[1]*pY[0][SubHeightC*y+1]+1)
>>1 (376)

4.numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..cntL-1として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..cntL-1として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
pSelDsY[idx]=pY[-1][y] (377)
- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- yが0よりも大きいか、又はavailTLがTRUEに等しい場合に、pSelDsY[idx]は、次のように導出される:

pSelDsY[idx]=(F3[1][0]*pY[-SubWidthC][SubHeightC*y-1]+F3[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F3[1][1]*pY[-SubWidthC][SubHeightC*y]+F3[2][1]*pY[1-SubWidthC][SubHeightC*y]+F3[1][2]*pY[-SubWidthC][SubHeightC*y+1]+4)>>3 (378)

- そうでない場合(yが0に等しい場合)に、pSelDsY[idx]は、次のように導出される:

pSelDsY[idx]=
(F2[0]*pY[-1-SubWidthC][0]+
F2[1]*pY[-SubWidthC][0]+
F2[2]*pY[1-SubWidthC][0]
+2)>>2 (379)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F4[0][2]*pY[-1-SubWidthC][SubHeightC*y+1]+F4[1][1]*pY[-SubWidthC][SubHeightC*y]+F4[1][2]*pY[-SubWidthC][SubHeightC*y+1]+F4[2][1]*pY[1-SubWidthC][SubHeightC*y]+F4[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3 (380)

5.numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..cntL+cntT-1として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=0..cntL+cntT-1として、次のように定められる:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
pSelDsY[idx]=pY[x][-1] (381)
- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- xが0よりも大きい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F3[1][0]*pY[SubWidthC*x][-1-SubHeightC]+F3[0][1]*pY[SubWidthC*x-1][-SubHeightC]+F3[1][1]*pY[SubWidthC*x][-SubHeightC]+F3[2][1]*pY[SubWidthC*x+1][-SubHeightC]+F3[1][2]*pY[SubWidthC*x][1-SubHeightC]+4)>>3 (382)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (383)

- 他の場合(xが0に等しい場合)に、次が適用される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=F3[1][0]*pY[-1][-1-SubHeightC]+F3[0][1]*pY[-1][-SubHeightC]+F3[1][1]*pY[0][-SubHeightC]+F3[2][1]*pY[1][-SubHeightC]+F3[1][2]*pY[-1][1-SubHeightC]+4)>>3 (384)

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、次が適用される:

pSelDsY[idx]=(F2[0]*pY[-1][-1]+
F2[1]*pY[0][-1]+F2[2]*pY[1][-1]+2)
>>2 (385)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合、次が適用される:

pSelDsY[idx]=(F2[0]*pY[0][-1]+
F2[1]*pY[0][-2]+F2[2]*pY[0][-1]+2)
>>2 (386)

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1] (387)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:
- xが0よりも大きい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[SubWidthC*x-1][-1]+F4[0][2]*pY[SubWidthC*x-1][-2]+F4[1][1]*pY[SubWidthC*x][-1]+F4[1][2]*pY[SubWidthC*x][-2]+F4[2][1]*pY[SubWidthC*x+1][-1]+F4[2][2]*pY[SubWidthC*x+1][-2]+4)>>3 (388)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (389)

- 他の場合(xが0に等しい場合)に、次が適用される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1][-1]+F4[0][2]*pY[-1][-2]+F4[1][1]*pY[0][-1]+F4[1][2]*pY[0][-2]+F4[2][1]*pY[1][-1]+F4[2][2]*pY[1][-2]+4)>>3 (390)

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、次が適用される:

pSelDsY[idx]=(F2[0]*pY[-1][-1]+
F2[1]*pY[0][-1]+F2[2]*pY[1][-1]+2)
>>2 (391)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F1[1]*pY[0][-2]+
F1[0]*pY[0][-1]+1)>>1 (392)

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1] (393)

6.cntT+cntLが0に等しくないとき、変数minY、maxY、minC及びmaxCは、次のように導出される:
- cntT+cntLが2に等しいとき、pSelComp[3]はpSelComp[0]に等しくセットされ、pSelComp[2]はpSelComp[1]に等しくセットされ、pSelComp[0]はpSelComp[1]に等しくセットされ、pSelComp[1]はpSelComp[3]に等しくセットされ、ただし、CompはDsY及びCで置換される。
- アレイminGrpIdx及びmaxGrpIdxは、次のように導出がされる:
minGrpIdx[0]=0 (394)
minGrpIdx[1]=2 (395)
maxGrpIdx[0]=1 (396)
maxGrpIdx[1]=3 (397)
- pSelDsY[minGrpIdx[0]]がpSelDsY[minGrpIdx[1]]よりも大きいとき、minGrpIdx[0]及びminGrpIdx[1]は次のように交換される:

(minGrpIdx[0],minGrpIdx[1])
=Swap(minGrpIdx[0],minGrpIdx[1]) (398)

- pSelDsY[maxGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、maxGrpIdx[0]及びmaxGrpIdx[1]は次のように交換される:

(maxGrpIdx[0],maxGrpIdx[1])
=Swap(maxGrpIdx[0],maxGrpIdx[1]) (399)

- pSelDsY[minGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、アレイminGrpIdx及びmaxGrpIdxは次のように交換される:

(minGrpIdx,maxGrpIdx)
=Swap(minGrpIdx,maxGrpIdx) (400)

- pSelDsY[minGrpIdx[1]]がpSelDsY[maxGrpIdx[0]]よりも大きいとき、minGrpIdx[1]及びmaxGrpIdx[0]は次のように交換される:

(minGrpIdx[1],maxGrpIdx[0])
=Swap(minGrpIdx[1],maxGrpIdx[0]) (401)

-変数minY、maxY、minC及びmaxCは、次のように導出される:

maxY=(pSelDsY[maxGrpIdx[0]]
+pSelDsY[maxGrpIdx[1]]+1)>>1 (402)

maxC=(pSelC[maxGrpIdx[0]]
+pSelC[maxGrpIdx[1]]+1)>>1 (403)

minY=(pSelDsY[minGrpIdx[0]]
+pSelDsY[minGrpIdx[1]]+1)>>1 (404)

minC=(pSelC[minGrpIdx[0]]
+pSelC[minGrpIdx[1]]+1)>>1 (405)

7.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0 (406)
a=0 (407)
b=1<<(BitDepth-1) (408)

- そうでない場合に、次が適用される:
diff=maxY-minY (409)

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC (410)
x=Floor(Log2(diff)) (411)
normDiff=((diff<<4)>>x)&15 (412)
x+=(normDiff!=0)?1:0 (413)
y=Floor(Log2(Abs(diffC)))+1 (414)
a=(diffC*(divSigTable[normDiff]|8)
+2y-1)>>y (415)
k=((3+x-y)<1)?1:3+x-y (416)
a=((3+x-y)<1)?Sign(a)*15:a (417)
b=minC-((a*minY)>>k) (418)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}
(419)

-そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0 (420)
a=0 (421)
b=minC (422)

8.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:

predSamples[x][y]
=Clip1(((pDsY[x][y]*a)>>k)+b) (423)

注記-このプロセスは、sps_chroma_vertical_collocated_flagを使用する。しかし、実施を簡単にするために、それはsps_chroma_horizontal_collocated_flagを使用しない。
【0190】
他の実施形態では、再構成されたルーマブロックの境界に対するフィルタ選択を実装するために、パディング動作が使用されてよい。再構成されたサンプルのエリアにフィルタが適用される場合に、フィルタリングプロセスは、フィルタ処理されたエリアの位置がブロック境界にあるときには調整されるべきである。
【0191】
図13は、例となる3-タップフィルタ1302による再構成されたルミナンスブロック1301に対するフィルタリング動作を示す。境界サンプルをフィルタ処理するとき、フィルタ係数の1つは、再構成されたルーマサンプルが左側1303について利用不可能であり得るブルームケースの外側にある再構成されたサンプルと同一位置にあるので、外側の位置は、フィルタリング動作に使用されない場合がある。
【0192】
上記の実施形態では、左の列及び上の行について、再構成されたルミナンスサンプルに適用されるフィルタのタップの数を減らすことが提案された。実際に、フィルタ係数は、位置に依存するよう定義された。
【0193】
他の実施形態では、この位置依存性は、境界にある再構成されたサンプルに対する左側及び上側パディングによって処理される。左側が利用可能でないとき、利用不可能な側のサンプルは、再構成されたブロック1301の最左の再構成されたサンプルを水平方向にコピーすることによって、取得される。この動作は、事実上、左側にある再構成されたサンプルの最初の列の複製である。上側が利用可能でないとき、利用不可能な側のサンプルは、再構成されたブロック1301の最上の再構成されたサンプルを垂直方向にコピーすることによって、取得される。この動作は、事実上、ブロック1301の上にある再構成されたサンプルの最初の行の複製である。
【0194】
パディングされたサンプルを含む再構成されたサンプルのエリアの線形フィルタリングは、パディング動作を使用せずに実行され得ることに気付く。実際に、エリアのこの位置について、より長いタップ-フィルタは、より小さい次数の等価なフィルタで置換され得る。フィルタ処理されたエリア内のパディングされたサンプルの存在は、係数グルーピングによってフィルタリング動作を簡単にすることを可能にする。
【0195】
この実施形態は、VVC仕様の次の部分として表され得る:

3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:
pDsY[x][y]=pY[x][y] (355)
- そうでない場合に、次が適用される:
- 1次元フィルタ係数アレイF1及びF2、並びに2次元フィルタ係数アレイF3及びF4は、次のとおりに定められる。
F1[0]=4,F1[1]=0 (356)
F2[0]=1,F2[1]=2,F2[2]=1 (357)
F3[i][j]=F4[i][j]=0,
ただし、i=0..2,j=0..2 (358)
- SubWidthC及びSubHeightCの両方が2に等しい場合に、次が適用される:
F1[0]=3,F1[1]=1 (359)
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1 (360)
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1
(361)
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
(362)
- その他の場合に、次が適用される:
F3[1][1]=8 (363)
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2
(364)
-sps_chroma_vertical_collocated_flagが1に等しい場合には、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(F3[1][0]*pY[SubWidthC*x][SubHeightC*y-1]+F3[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F3[1][1]*pY[SubWidthC*x][SubHeightC*y]+F3[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F3[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+4)>>3 (365)

- availLがTRUEに等しい場合には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F3[1][0]*pY[0][SubHeightC*y-1]+
F3[0][1]*pY[-1][SubHeightC*y]+
F3[1][1]*pY[0][SubHeightC*y]+
F3[2][1]*pY[1][SubHeightC*y]+
F3[1][2]*pY[0][SubHeightC*y+1]
+4)>>3 (366)

- そうでない場合(availLがFALSEに等しい場合)には、y=1..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F2[0]*pY[0][SubHeightC*y-1]+
F2[1]*pY[0][SubHeightC*y]+
F2[2]*pY[0][SubHeightC*y+1]
+2)>>2 (367)

- availTがTRUEに等しい場合には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F3[1][0]*pY[SubWidthC*x][-1]+
F3[0][1]*pY[SubWidthC*x-1][0]+
F3[1][1]*pY[SubWidthC*x][0]+
F3[2][1]*pY[SubWidthC*x+1][0]+
F3[1][2]*pY[SubWidthC*x][1]
+4)>>3 (368)

- そうでない場合(availTがFALSEに等しい場合)には、x=1..nTbW-1とするpDsY[x][0]は、次のように導出される:

pDsY[x][0]=
(F2[0]*pY[SubWidthC*x-1][0]+
F2[1]*pY[SubWidthC*x][0]+
F2[2]*pY[SubWidthC*x+1][0]
+2)>>2 (369)

- availLがTRUEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=
(F3[1][0]*pY[0][-1]+
F3[0][1]*pY[-1][0]+
F3[1][1]*pY[0][0]+
F3[2][1]*pY[1][0]+
F3[1][2]*pY[0][1]+4)>>3 (370)

- そうではなく、availLがTRUEに等しく、availTがFALSEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(F2[0]*pY[-1][0]
+F2[1]*pY[0][0]+F2[2]*pY[1][0]
+2)>>2 (371)

- そうではなく、availLがFALSEに等しく、availTがTRUEに等しい場合には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=(F2[0]*pY[0][-1]
+F2[1]*pY[0][0]+F2[2]*pY[0][1]
+2)>>2 (372)

- 他の場合(availLがFALSEに等しく、availTがFALSEに等しい場合)には、pDsY[0][0]は、次のように導出される:

pDsY[0][0]=pY[0][0] (373)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)には、次が適用される:
- x=1..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(F4[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F4[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1]+F4[1][1]*pY[SubWidthC*x][SubHeightC*y]+F4[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+F4[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F4[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3 (374)

- availLがTRUEに等しい場合には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=
(F4[0][1]*pY[-1][SubHeightC*y]+
F4[0][2]*pY[-1][SubHeightC*y+1]+
F4[1][1]*pY[0][SubHeightC*y]+
F4[1][2]*pY[0][SubHeightC*y+1]+
F4[2][1]*pY[1][SubHeightC*y]+
F4[2][2]*pY[1][SubHeightC*y+1]
+4)>>3 (375)

- そうでない場合(availLがFALSEに等しい場合)には、y=0..nTbH-1とするpDsY[0][y]は、次のように導出される:

pDsY[0][y]=(F1[0]*pY[0][SubHeightC*y]+
F1[1]*pY[0][SubHeightC*y+1]+2)
>>2 (376)

4.numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..cntL-1として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..cntL-1として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
pSelDsY[idx]=pY[-1][y] (377)
- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- yが0よりも大きいか、又はavailTLがTRUEに等しい場合に、pSelDsY[idx]は、次のように導出される:

pSelDsY[idx]=(F3[1][0]*pY[-SubWidthC][SubHeightC*y-1]+F3[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F3[1][1]*pY[-SubWidthC][SubHeightC*y]+F3[2][1]*pY[1-SubWidthC][SubHeightC*y]+F3[1][2]*pY[-SubWidthC][SubHeightC*y+1]+4)>>3 (378)

- そうでない場合(yが0に等しい場合)に、pSelDsY[idx]は、次のように導出される:

pSelDsY[idx]=
(F2[0]*pY[-1-SubWidthC][0]+
F2[1]*pY[-SubWidthC][0]+
F2[2]*pY[1-SubWidthC][0]
+2)>>2 (379)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F4[0][2]*pY[-1-SubWidthC][SubHeightC*y+1]+F4[1][1]*pY[-SubWidthC][SubHeightC*y]+F4[1][2]*pY[-SubWidthC][SubHeightC*y+1]+F4[2][1]*pY[1-SubWidthC][SubHeightC*y]+F4[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3 (380)

5.numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..cntL+cntT-1として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=0..cntL+cntT-1として、次のように定められる:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
pSelDsY[idx]=pY[x][-1] (381)
- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- xが0よりも大きい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F3[1][0]*pY[SubWidthC*x][-1-SubHeightC]+F3[0][1]*pY[SubWidthC*x-1][-SubHeightC]+F3[1][1]*pY[SubWidthC*x][-SubHeightC]+F3[2][1]*pY[SubWidthC*x+1][-SubHeightC]+F3[1][2]*pY[SubWidthC*x][1-SubHeightC]+4)>>3 (382)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (383)

- 他の場合(xが0に等しい場合)に、次が適用される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=F3[1][0]*pY[-1][-1-SubHeightC]+F3[0][1]*pY[-1][-SubHeightC]+F3[1][1]*pY[0][-SubHeightC]+F3[2][1]*pY[1][-SubHeightC]+F3[1][2]*pY[-1][1-SubHeightC]+4)>>3 (384)

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、次が適用される:

pSelDsY[idx]=(F2[0]*pY[-1][-1]+
F2[1]*pY[0][-1]+F2[2]*pY[1][-1]+2)
>>2 (385)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合、次が適用される:

pSelDsY[idx]=(F2[0]*pY[0][-1]+
F2[1]*pY[0][-2]+F2[2]*pY[0][-1]+2)
>>2 (386)

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1] (387)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:
- xが0よりも大きい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[SubWidthC*x-1][-1]+F4[0][2]*pY[SubWidthC*x-1][-2]+F4[1][1]*pY[SubWidthC*x][-1]+F4[1][2]*pY[SubWidthC*x][-2]+F4[2][1]*pY[SubWidthC*x+1][-1]+F4[2][2]*pY[SubWidthC*x+1][-2]+4)>>3 (388)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (389)

- 他の場合(xが0に等しい場合)に、次が適用される:
- availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1][-1]+F4[0][2]*pY[-1][-2]+F4[1][1]*pY[0][-1]+F4[1][2]*pY[0][-2]+F4[2][1]*pY[1][-1]+F4[2][2]*pY[1][-2]+4)>>3 (390)

- そうではなく、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、次が適用される:

pSelDsY[idx]=(F2[0]*pY[-1][-1]+
F2[1]*pY[0][-1]+F2[2]*pY[1][-1]+2)
>>2 (391)

- そうではなく、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F1[1]*pY[0][-2]+
F1[0]*pY[0][-1]+2)>>2 (392)

- その他の場合(availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=pY[0][-1] (393)

6.cntT+cntLが0に等しくないとき、変数minY、maxY、minC及びmaxCは、次のように導出される:
- cntT+cntLが2に等しいとき、pSelComp[3]はpSelComp[0]に等しくセットされ、pSelComp[2]はpSelComp[1]に等しくセットされ、pSelComp[0]はpSelComp[1]に等しくセットされ、pSelComp[1]はpSelComp[3]に等しくセットされ、ただし、CompはDsY及びCで置換される。
- アレイminGrpIdx及びmaxGrpIdxは、次のように導出がされる:
minGrpIdx[0]=0 (394)
minGrpIdx[1]=2 (395)
maxGrpIdx[0]=1 (396)
maxGrpIdx[1]=3 (397)
- pSelDsY[minGrpIdx[0]]がpSelDsY[minGrpIdx[1]]よりも大きいとき、minGrpIdx[0]及びminGrpIdx[1]は次のように交換される:

(minGrpIdx[0],minGrpIdx[1])
=Swap(minGrpIdx[0],minGrpIdx[1]) (398)

- pSelDsY[maxGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、maxGrpIdx[0]及びmaxGrpIdx[1]は次のように交換される:

(maxGrpIdx[0],maxGrpIdx[1])
=Swap(maxGrpIdx[0],maxGrpIdx[1]) (399)

- pSelDsY[minGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、アレイminGrpIdx及びmaxGrpIdxは次のように交換される:

(minGrpIdx,maxGrpIdx)
=Swap(minGrpIdx,maxGrpIdx) (400)

- pSelDsY[minGrpIdx[1]]がpSelDsY[maxGrpIdx[0]]よりも大きいとき、minGrpIdx[1]及びmaxGrpIdx[0]は次のように交換される:

(minGrpIdx[1],maxGrpIdx[0])
=Swap(minGrpIdx[1],maxGrpIdx[0]) (401)

-変数minY、maxY、minC及びmaxCは、次のように導出される:

maxY=(pSelDsY[maxGrpIdx[0]]
+pSelDsY[maxGrpIdx[1]]+1)>>1 (402)

maxC=(pSelC[maxGrpIdx[0]]
+pSelC[maxGrpIdx[1]]+1)>>1 (403)

minY=(pSelDsY[minGrpIdx[0]]
+pSelDsY[minGrpIdx[1]]+1)>>1 (404)

minC=(pSelC[minGrpIdx[0]]
+pSelC[minGrpIdx[1]]+1)>>1 (405)

7.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0 (406)
a=0 (407)
b=1<<(BitDepth-1) (408)

- そうでない場合に、次が適用される:
diff=maxY-minY (409)

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC (410)
x=Floor(Log2(diff)) (411)
normDiff=((diff<<4)>>x)&15 (412)
x+=(normDiff!=0)?1:0 (413)
y=Floor(Log2(Abs(diffC)))+1 (414)
a=(diffC*(divSigTable[normDiff]|8)
+2y-1)>>y (415)
k=((3+x-y)<1)?1:3+x-y (416)
a=((3+x-y)<1)?Sign(a)*15:a (417)
b=minC-((a*minY)>>k) (418)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}
(419)

-そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0 (420)
a=0 (421)
b=minC (422)

8.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:

predSamples[x][y]
=Clip1(((pDsY[x][y]*a)>>k)+b) (423)

注記-このプロセスは、sps_chroma_vertical_collocated_flagを使用する。しかし、実施を簡単にするために、それはsps_chroma_horizontal_collocated_flagを使用しない。
【0196】
実施形態の他の変形例は、パディング動作を含む。この場合に、フィルタ“F1”は明示的に定義されず、代わりに、それは、パディングと、“F2”フィルタを使用するフィルタリングとの組み合わせとして実装される。この変形例に関する仕様は、以下で与えられる:
【表12-1】
【表12-2】
【表12-3】
【表12-4】
【表12-5】
【表12-6】
【表12-7】
【表12-8】
【表12-9】
【0197】
変更に印をつけずに、上記の仕様は、次のように表され得る:

1.x=0..nTbW*SubWidthC-1,y=0..nTbH*SubHeightC-1とする同一位置にあるルーマサンプルpY[x][y]が、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
2.隣接するルーマサンプルpY[x][y]は、次のように導出される:
- numSampLが0よりも大きいとき、x=-1..-3,y=0..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- numSampTが0よりも大きいとき、x=0..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTLがTRUEに等しいとき、x=-1,y=-1,-2である隣接する左上ルーマサンプルpY[x][y]は、位置(xTbY+x,yTbY+y)でのデブロッキングフィルタプロセスより前に、再構成されたルーマサンプルに等しくセットされる。
- availTがFALSEに等しいとき、x=-1..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]は、ルーマサンプルpY[x][0]に等しくセットされる。
- availLがFALSEに等しいとき、x=-1,-2,-3,y=-1..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]は、ルーマサンプルpY[0][y]に等しくセットされる。
3.x=0..nTbW-1,y=0..nTbH-1である、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、次のように導出される:
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:
- x=1..nTbW-1,y=1..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=pY[x][y] (355)

- そうでない場合に、次が適用される:
- 1次元フィルタ係数アレイF1及びF2、並びに2次元フィルタ係数アレイF3及びF4は、次のとおりに定められる:

F2[0]=1,F2[1]=2,F2[2]=1 (357)
F3[i][j]=F4[i][j]=0,
ただし、i=0..2,j=0..2 (358)

- SubWidthC及びSubHeightCの両方が2に等しい場合に、次が適用される:

F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1 (360)
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1
(361)
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
(362)
- その他の場合に、次が適用される:
F3[1][1]=8 (363)
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2
(364)

- sps_chroma_vertical_collocated_flagが1に等しい場合には、次が適用される:
- x=0..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=
(F3[1][0]*pY[SubWidthC*x][SubHeightC*y-1]
+F3[0][1]*pY[SubWidthC*x-1][SubHeightC*y]
+F3[1][1]*pY[SubWidthC*x][SubHeightC*y]
+F3[2][1]*pY[SubWidthC*x+1][SubHeightC*y]
+F3[1][2]*pY[SubWidthC*x][SubHeightC*y+1]
+4)>>3 (365)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)には、次が適用される:
- x=0..nTbW-1,y=0..nTbH-1とするpDsY[x][y]は、次のように導出される:

pDsY[x][y]=(F4[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F4[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1]+F4[1][1]*pY[SubWidthC*x][SubHeightC*y]+F4[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+F4[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F4[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3 (374)

4.numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..cntL-1として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..cntL-1として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:

pSelDsY[idx]=pY[-1][y] (377)

- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:

pSelDsY[idx]=
(F3[1][0]*pY[-SubWidthC][SubHeightC*y-1]
+F3[0][1]*pY[-1-SubWidthC][SubHeightC*y]
+F3[1][1]*pY[-SubWidthC][SubHeightC*y]
+F3[2][1]*pY[1-SubWidthC][SubHeightC*y]
+F3[1][2]*pY[-SubWidthC][SubHeightC*y+1]
+4)>>3 (378)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F4[0][2]*pY[-1-SubWidthC][SubHeightC*y+1]+F4[1][1]*pY[-SubWidthC][SubHeightC*y]+F4[1][2]*pY[-SubWidthC][SubHeightC*y+1]+F4[2][1]*pY[1-SubWidthC][SubHeightC*y]+F4[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3 (380)

5.numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..cntL+cntT-1として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=0..cntL+cntT-1として、次のように定められる:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:

pSelDsY[idx]=pY[x][-1] (381)

- そうでない場合に、次が適用される:
-sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=
(F3[1][0]*pY[SubWidthC*x][-1-SubHeightC]
+F3[0][1]*pY[SubWidthC*x-1][-SubHeightC]
+F3[1][1]*pY[SubWidthC*x][-SubHeightC]
+F3[2][1]*pY[SubWidthC*x+1][-SubHeightC]
+F3[1][2]*pY[SubWidthC*x][1-SubHeightC]
+4)>>3 (382)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (383)

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[SubWidthC*x-1][-1]+F4[0][2]*pY[SubWidthC*x-1][-2]+F4[1][1]*pY[SubWidthC*x][-1]+F4[1][2]*pY[SubWidthC*x][-2]+F4[2][1]*pY[SubWidthC*x+1][-1]+F4[2][2]*pY[SubWidthC*x+1][-2]+4)>>3 (388)

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]
+2)>>2 (389)

6.cntT+cntLが0に等しくないとき、変数minY、maxY、minC及びmaxCは、次のように導出される:
- cntT+cntLが2に等しいとき、pSelComp[3]はpSelComp[0]に等しくセットされ、pSelComp[2]はpSelComp[1]に等しくセットされ、pSelComp[0]はpSelComp[1]に等しくセットされ、pSelComp[1]はpSelComp[3]に等しくセットされ、ただし、CompはDsY及びCで置換される。
- アレイminGrpIdx及びmaxGrpIdxは、次のように導出がされる:

minGrpIdx[0]=0 (394)
minGrpIdx[1]=2 (395)
maxGrpIdx[0]=1 (396)
maxGrpIdx[1]=3 (397)

- pSelDsY[minGrpIdx[0]]がpSelDsY[minGrpIdx[1]]よりも大きいとき、minGrpIdx[0]及びminGrpIdx[1]は次のように交換される:

(minGrpIdx[0],minGrpIdx[1])
=Swap(minGrpIdx[0],minGrpIdx[1]) (398)

- pSelDsY[maxGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、maxGrpIdx[0]及びmaxGrpIdx[1]は次のように交換される:

(maxGrpIdx[0],maxGrpIdx[1])
=Swap(maxGrpIdx[0],maxGrpIdx[1]) (399)

- pSelDsY[minGrpIdx[0]]がpSelDsY[maxGrpIdx[1]]よりも大きいとき、アレイminGrpIdx及びmaxGrpIdxは次のように交換される:

(minGrpIdx,maxGrpIdx)
=Swap(minGrpIdx,maxGrpIdx) (400)

- pSelDsY[minGrpIdx[1]]がpSelDsY[maxGrpIdx[0]]よりも大きいとき、minGrpIdx[1]及びmaxGrpIdx[0]は次のように交換される:

(minGrpIdx[1],maxGrpIdx[0])
=Swap(minGrpIdx[1],maxGrpIdx[0]) (401)

- 変数minY、maxY、minC及びmaxCは、次のように導出される:

maxY=(pSelDsY[maxGrpIdx[0]]
+pSelDsY[maxGrpIdx[1]]+1)>>1 (402)
maxC=(pSelC[maxGrpIdx[0]]
+pSelC[maxGrpIdx[1]]+1)>>1 (403)
minY=(pSelDsY[minGrpIdx[0]]
+pSelDsY[minGrpIdx[1]]+1)>>1 (404)
minC=(pSelC[minGrpIdx[0]]
+pSelC[minGrpIdx[1]]+1)>>1 (405)

7.変数a、b、及びkは、次のように導出される:
- numSampLが0に等しく、numSampTが0に等しい場合に、次が適用される:
k=0 (406)
a=0 (407)
b=1<<(BitDepth-1) (408)

- そうでない場合に、次が適用される:
diff=maxY-minY (409)

- diffが0に等しくない場合に、次が適用される:
diffC=maxC-minC (410)
x=Floor(Log2(diff)) (411)
normDiff=((diff<<4)>>x)&15 (412)
x+=(normDiff!=0)?1:0 (413)
y=Floor(Log2(Abs(diffC)))+1 (414)
a=(diffC*(divSigTable[normDiff]|8)
+2y-1)>>y (415)
k=((3+x-y)<1)?1:3+x-y (416)
a=((3+x-y)<1)?Sign(a)*15:a (417)
b=minC-((a*minY)>>k) (418)
ここで、divSigTable[]は、次のとおりに定められる:
divSigTable[]
={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}
(419)

- そうでない場合(diffが0に等しい場合)に、次が適用される:
k=0 (420)
a=0 (421)
b=minC (422)

8.x=0..nTbW-1,y=0..nTbH-1である予測サンプルpredSamples[x][y]は、次のように導出される:
predSamples[x][y]
=Clip1(((pDsY[x][y]*a)>>k)+b) (423)

注記-このプロセスは、sps_chroma_vertical_collocated_flagを使用する。しかし、実施を簡単にするために、それはsps_chroma_horizontal_collocated_flagを使用しない。
【0198】
復号化デバイスによって実装される次の方法及び実施形態が提供される。復号化デバイスは、図1A、1Bのビデオデコーダ30、又は図3のデコーダ30であってよい。解決法に従って、図14に表されているように、本願の実施形態1400に従うクロマブロック予測法のための方法が提供される。方法は、符号化されたビデオシーケンスを復号する方法の部分であることができる。
【0199】
図14に示されるように、ステップ1401で、デバイスは、ビットストリームから複数のシンタックス要素をパースする。複数のシンタックス要素は、ルーマサンプルに対するフィルタの選択を示す第1シンタックス要素を含む。例えば、第1シンタックス要素は、SPSパラメータであるsps_cclm_colocated_chroma_flagである。
【0200】
複数のシンタックス要素は、第2シンタックス要素を含んでもよく、第2シンタックス要素は、現在の復号化に使用されるイントラ予測モードがCCLMモードであることを示すために使用される。CCLMモードは、INTRA_LT_CCLM、INTRA_L_CCLM又はINTRA_T_CCLMを含む。
【0201】
ステップ1402で、デバイスは、第1シンタックス要素に少なくとも基づいて現在ブロックのルーマ成分の再構成されたルーマサンプルにフィルタを適用して、現在ブロックのフィルタ処理された再構成されたルーマサンプルを取得する。フィルタはフィルタの組に属し、フィルタの組は2つのフィルタのみを含む。フィルタは、シンタックス要素の値が第1値であるときには第1フィルタであり、あるいは、フィルタは、シンタックス要素の値が第2値であるときには第2フィルタである。例えば、sps_chroma_vertical_collocated_flagが1に等しいときには、F3フィルタが適用され、あるいは、sps_chroma_vertical_collocated_flagが0に等しいときには、F4フィルタが適用される。
【0202】
具体的に、ダウンサンプリングされた同一位置にあるルーマサンプルpDsY[x][y]は、x=0..nTbW-1,y=0..nTbH-1である場合に、次のように導出される:
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:

pDsY[x][y]=pY[x][y]

- そうでない場合に、次が適用される:
- 1次元フィルタ係数アレイF2は、次のとおりに定められる:

F2[0]=1,F2[1]=2,F2[2]=1

- さもなければ、2次元フィルタ係数アレイF3及びF4は、次のとおりに定められる。

F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1

- sps_chroma_vertical_collocated_flagが1に等しい場合には、次が適用される:

pDsY[x][y]=
(F3[1][0]*pY[SubWidthC*x][SubHeightC*y-1]
+F3[0][1]*pY[SubWidthC*x-1][SubHeightC*y]
+F3[1][1]*pY[SubWidthC*x][SubHeightC*y]
+F3[2][1]*pY[SubWidthC*x+1][SubHeightC*y]
+F3[1][2]*pY[SubWidthC*x][SubHeightC*y+1]
+4)>>3

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)には、次が適用される:

pDsY[x][y]=(F4[0][1]*pY[SubWidthC*x-1][SubHeightC*y]+F4[0][2]*pY[SubWidthC*x-1][SubHeightC*y+1]+F4[1][1]*pY[SubWidthC*x][SubHeightC*y]+F4[1][2]*pY[SubWidthC*x][SubHeightC*y+1]+F4[2][1]*pY[SubWidthC*x+1][SubHeightC*y]+F4[2][2]*pY[SubWidthC*x+1][SubHeightC*y+1]+4)>>3
【0203】
ステップ1403で、デバイスは、第1シンタックス要素に少なくとも基づいて、隣接する左ルーマサンプルにフィルタを適用して、ダウンサンプリングされた隣接する左ルーマサンプルを取得する。フィルタはフィルタの組に属し、フィルタの組は2つのフィルタのみを含む。フィルタは、シンタックス要素の値が第1値であるときには第1フィルタであり、あるいは、フィルタは、シンタックス要素の値が第2値であるときには第2フィルタである。例えば、sps_chroma_vertical_collocated_flagが1に等しいときには、F3フィルタが適用され、あるいは、sps_chroma_vertical_collocated_flagが0に等しいときには、F4フィルタが適用される。
【0204】
具体的に、numSampLが0よりも大きいとき、選択された隣接する左クロマサンプルpSelC[idx]は、idx=0..cntL-1として、p[-1][pickPosL[idx]]に等しくセットされ、選択されたダウンサンプリングされた隣接する左ルーマサンプルpSelDsY[idx]は、idx=0..cntL-1として、次のように導出される:
- 変数yは、pickPosL[idx]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:

pSelDsY[idx]=pY[-1][y]

- そうでない場合に、次が適用される:
- sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:

pSelDsY[idx]=
(F3[1][0]*pY[-SubWidthC][SubHeightC*y-1]
+F3[0][1]*pY[-1-SubWidthC][SubHeightC*y]
+F3[1][1]*pY[-SubWidthC][SubHeightC*y]
+F3[2][1]*pY[1-SubWidthC][SubHeightC*y]
+F3[1][2]*pY[-SubWidthC][SubHeightC*y+1]
+4)>>3

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:

pSelDsY[idx]=(F4[0][1]*pY[-1-SubWidthC][SubHeightC*y]+F4[0][2]*pY[-1-SubWidthC][SubHeightC*y+1]+F4[1][1]*pY[-SubWidthC][SubHeightC*y]+F4[1][2]*pY[-SubWidthC][SubHeightC*y+1]+F4[2][1]*pY[1-SubWidthC][SubHeightC*y]+F4[2][2]*pY[1-SubWidthC][SubHeightC*y+1]+4)>>3
【0205】
ステップ1404で、デバイスは、第1シンタックス要素に少なくとも基づいて、隣接する上ルーマサンプルにフィルタを適用して、ダウンサンプリングされた隣接する上ルーマサンプルを取得する。フィルタはフィルタの組に属し、フィルタの組は2つのフィルタのみを含む。フィルタは、シンタックス要素の値が第1値であるときには第1フィルタであり、あるいは、フィルタは、シンタックス要素の値が第2値であるときには第2フィルタである。例えば、sps_chroma_vertical_collocated_flagが1に等しいときには、F3フィルタが適用され、あるいは、sps_chroma_vertical_collocated_flagが0に等しいときには、F4フィルタが適用される。
【0206】
具体的に、numSampTが0よりも大きいとき、選択された隣接する上クロマサンプルpSelC[idx]は、idx=cntL..cntL+cntT-1として、p[pickPosT[idx-cntL]][-1]に等しくセットされ、ダウンサンプリングされた隣接する上ルーマサンプルpSelDsY[idx]は、idx=0..cntL+cntT-1として、次のように定められる:
- 変数xは、pickPosT[idx-cntL]に等しくセットされる。
- SubWidthC及びSubHeightCの両方が1に等しい場合に、次が適用される:

pSelDsY[idx]=pY[x][-1]

- そうでない場合に、次が適用される:
-sps_chroma_vertical_collocated_flagが1に等しい場合に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=
(F3[1][0]*pY[SubWidthC*x][-1-SubHeightC]
+F3[0][1]*pY[SubWidthC*x-1][-SubHeightC]
+F3[1][1]*pY[SubWidthC*x][-SubHeightC]
+F3[2][1]*pY[SubWidthC*x+1][-SubHeightC]
+F3[1][2]*pY[SubWidthC*x][1-SubHeightC]
+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]+2)>>2

- 他の場合(sps_chroma_vertical_collocated_flagが0に等しい場合)に、次が適用される:
- bCTUboundaryがFALSEに等しい場合に、次が適用される:

pSelDsY[idx]=
(F4[0][1]*pY[SubWidthC*x-1][-1]+
F4[0][2]*pY[SubWidthC*x-1][-2]+
F4[1][1]*pY[SubWidthC*x][-1]+
F4[1][2]*pY[SubWidthC*x][-2]+
F4[2][1]*pY[SubWidthC*x+1][-1]+
F4[2][2]*pY[SubWidthC*x+1][-2]+4)>>3

- そうでない場合(bCTUboundaryがTRUEに等しい場合)に、次が適用される:

pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]+2)>>2
【0207】
ステップ1402と、1403と、1404との間には順序はない。
【0208】
ステップ1405で、デバイスは、フィルタ処理された再構成されたルーマサンプルに基づいて線形モデル係数を取得する。フィルタ処理された再構成されたルーマサンプルは、ステップ1402での現在ブロックのフィルタ処理された再構成されたルーマサンプル、ステップ1403でのダウンサンプリングされた隣接する左ルーマサンプル、及び/又はステップ1404でのダウンサンプリングされた隣接する上ルーマサンプルを含む。ステップ1406で、デバイスは、取得された線形モデル係数と、現在ブロックのフィルタ処理された再構成されたルーマサンプルとに基づいて、交差成分予測を実行して、現在ブロックのクロマ成分の予測値を取得する。
【0209】
上記の実施形態は、図15に表されているように、コーディングデバイス1500で実装され得る。コーディングデバイス1500は、次を含む:
- ビットストリームから第1シンタックス要素をパースするよう構成されるパーシングユニット1501。上述されたように、例えば、第1シンタックス要素は、SPSパラメータに含まれるsps_cclm_colocated_chroma_flagである。
【0210】
- 第1シンタックス要素に少なくとも基づいて現在ブロックのルーマ成分の再構成されたルーマサンプルにフィルタを適用して、現在ブロックのフィルタ処理された再構成されたルーマサンプルを取得するよう構成され、フィルタがフィルタの組に属し、フィルタの組が2つのフィルタのみを含み、シンタックス要素の値が第1値であるときにはフィルタは第1フィルタであり、あるいは、シンタックス要素の値が第2値であるときにはフィルタは第2フィルタである、フィルタリングユニット1502。
【0211】
例えば、sps_chroma_vertical_collocated_flagが1に等しいときには、F3フィルタが適用され、あるいは、sps_chroma_vertical_collocated_flagが0に等しいときには、F4フィルタが適用される。
【0212】
フィルタリングユニット1502はまた、上述されたように、第1シンタックス要素に少なくとも基づいて、隣接する左ルーマサンプルにフィルタを適用して、ダウンサンプリングされた隣接する左ルーマサンプルを取得し、かつ、第1シンタックス要素に少なくとも基づいて、隣接する上ルーマサンプルにフィルタを適用して、ダウンサンプリングされた隣接する上ルーマサンプルにフィルタを取得してもよい。
【0213】
- フィルタ処理された再構成されたルーマサンプルに基づいて線形モデル係数を取得するよう構成される取得ユニット1503。
【0214】
- 取得された線形モデル係数と、現在ブロックのフィルタ処理された再構成されたルーマサンプルとに基づいて、交差成分予測(例えば、ルーマからクロマの交差成分予測又はCCLM予測)を実行して、現在ブロックのクロマ成分の予測値を取得するよう構成される予測ユニット1504。
【0215】
特に、次の実施形態が、本願では提供される:
実施形態1.線形モデルを使用するイントラ予測の方法であって、
現在ブロックが属するピクチャのクロマフォーマットに基づき、前記現在ブロックのルーマ成分に対するフィルタを決定することと、
前記現在ブロックの前記ルーマ成分の再構成されたルーマサンプルと、前記現在ブロックの前記ルーマ成分に隣接する選択された位置(現在ブロックの左又は上側に隣接する1つ又は複数の行/列)にあるルーマサンプルとのエリアに、前記決定されたフィルタを適用して、フィルタ処理された再構成されたルーマサンプル(例えば、現在ブロック内のフィルタ処理された再構成されたルーマサンプル(例えば、現在ブロックのルーマ成分))を取得することと、
線形モデル導出の入力として、前記フィルタ処理された再構成されたルーマサンプルに基づいて(例えば、ルーマサンプルの組は、現在ブロック内のフィルタ処理された再構成されたルーマサンプルと、現在ブロックの外にあるフィルタ処理された隣接ルーマサンプルとを含み、例えば、決定されたフィルタは、現在ブロックの外にある隣接ルーマサンプルにも適用されてよい)、線形モデル係数を取得することと、
取得された線形モデル係数と、前記現在ブロックの前記フィルタ処理された再構成されたルーマサンプル(例えば、現在ブロック内のフィルタ処理された再構成されたルーマサンプル(例えば、現在ブロックのルーマ成分))とに基づいて、交差成分予測を実行して、現在クロマブロックの予測子を取得することと
を有する方法。
【0216】
実施形態2.実施形態1の方法であって、前記フィルタを決定することは、
前記フィルタを、前記現在ブロック内のルーマサンプルの位置及び前記クロマフォーマットに基づき決定すること、又は
前記現在ブロックに属する複数のルーマサンプルに対する各々のフィルタを、前記現在ブロック内のルーマサンプルの各々の位置及び前記クロマフォーマットに基づき決定すること
を有する、方法。
【0217】
実施形態3.実施形態1の方法であって、前記フィルタを決定することは、
次の:
サブサンプリング比情報(例えば、現在ブロックが属するピクチャのクロマフォーマットに従ってテーブルから取得され得るSubWidthC及びSubHeightC)、
前記現在ブロックが属するピクチャのクロマフォーマット(例えば、クロマフォーマットは、サブサンプリング比情報(例えば、SubWidthC及びSubHeightC)を取得するために使用される)、
前記現在ブロック内のルーマサンプルの位置、
前記現在ブロックに属するルーマサンプルの数、
前記現在ブロックの幅及び高さ、及び/又は
前記現在ブロック内のルーマサンプルに対するサブサンプリングされたクロマサンプルの位置
のうちの1つ以上に基づき前記フィルタを決定することを有する、方法。
【0218】
実施形態4.実施形態3の方法であって、前記サブサンプリングされたクロマサンプルが対応するルーマサンプルと同一位置にない場合に、複数のフィルタとサブサンプリング比情報(例えば、SubWidthC及びSubHeightC、すなわち、例えば、現在ブロックの幅及び高さの値)との間の第1の予め設定された関係(例えば、表4)が、前記フィルタの決定に使用され、且つ/あるいは、
前記サブサンプリングされたクロマサンプルが対応するルーマサンプルと同一位置にある場合に、複数のフィルタとサブサンプリング比情報(例えば、SubWidthC及びSubHeightC、すなわち、例えば、現在ブロックの幅及び高さの値)との間の第2又は第3の予め設定された関係(例えば、表2又は表3のどちらか)が、前記フィルタの決定に使用される、方法。
【0219】
実施形態5.実施形態4の方法であって、複数のフィルタとサブサンプリング比情報(例えば、SubWidthC及びSubHeightC、すなわち、例えば、現在ブロックの幅及び高さの値)との間の前記第2又は第3の関係(例えば、表2又は表3のどちらか)は、前記現在ブロックに属する特定のルーマサンプル(例えば、利用可能なルーマサンプル)の数に基づき決定される、方法。
【0220】
実施形態6.上記の実施形態のいずれか1つの方法であって、前記フィルタは、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F3,F5,F6}の組について、次が適用される:
F3[0]=1,F3[1]=2,F3[2]=1
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F5[0][1]=1,F5[1][1]=4,F3[2][1]=1,
F5[1][0]=1,F5[1][2]=1,F6[0][1]=1,
F6[1][1]=2,F6[2][1]=1,F6[0][2]=1,
F6[1][2]=2,F6[2][2]=1,F2[0]=1,F2[1]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F5[0][1]=0,F5[1][1]=8,F3[2][1]=0,
F5[1][0]=0,F5[1][2]=0,F6[0][1]=2,
F6[1][1]=4,F6[2][1]=2,F6[0][2]=0,
F6[1][2]=0,F6[2][2]=0,F2[0]=2,F2[1]=0
である、方法。
【0221】
実施形態7.上記の実施形態のいずれか1つの方法であって、前記フィルタは、順次的なフィルタの表記を用いて、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F1,F2,F3}の組について、次が適用される:
F1[0]=2,F1[1]=0
F2[0]=1,F2[1]=2,F2[2]=1
F3[i][j]=F4[i][j]=0,ただし、i=0..2,j=0..2
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F1[0]=1,F1[1]=1,
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1,
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1,
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F3[0][1]=0,F3[1][1]=8,F3[2][1]=0,
F3[1][0]=0,F3[1][2]=0
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2,
F4[0][2]=0,F4[1][2]=0,F4[2][2]=0
である、方法。
【0222】
実施形態7a.実施形態1~6の方法であって、前記フィルタは、順次的なフィルタの表記を用いて、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F1,F2,F3}の組について、次が適用される:
F1[0]=4,F1[1]=0
F2[0]=1、F2[1]=2,F2[2]=1
F3[i][j]=F4[i][j]=0,ただし、i=0..2,j=0..2
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F1[0]=3,F1[1]=1,
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1,
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1,
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F3[0][1]=0,F3[1][1]=8,F3[2][1]=0,
F3[1][0]=0,F3[1][2]=0
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2,
F4[0][2]=0,F4[1][2]=0,F4[2][2]=0
である、方法。
【0223】
実施形態7b.実施形態7の方法であって、フィルタの1つFa∈{F1...F4}によるフィルタリングは、パディング動作と、フィルタFaよりも多い非ゼロ係数を有するフィルタFbとを用いて実行される、方法。
【0224】
実施形態7c.実施形態7bの方法であって、FaはF1であり、FbはF2であり、前記フィルタは、順次的なフィルタの表記を用いて、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、
F2[0]=1、F2[1]=2,F2[2]=1
F3[i][j]=F4[i][j]=0,ただし、i=0..2,j=0..2
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1,
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1,
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F3[0][1]=0,F3[1][1]=8,F3[2][1]=0,
F3[1][0]=0,F3[1][2]=0
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2,
F4[0][2]=0,F4[1][2]=0,F4[2][2]=0
である、方法。
【0225】
実施形態8.上記の実施形態のいずれか1つの方法であって、前記フィルタは、前記現在ブロックのクロマ成分がサブサンプリングされない場合に、前記フィルタ処理された再構成されたルーマサンプルの位置に水平方向及び/又は垂直方向に隣接する位置で非ゼロ係数を有する、方法(例えば、
(外2)
、係数「4」を有する中心位置は、前記フィルタ処理された再構成されたルーマサンプルの位置に対応する)。
【0226】
実施形態9.上記の実施形態のいずれか1つの方法であって、前記クロマフォーマットは、YCbCr 4:4:4クロマフォーマット、YCbCr 4:2:0クロマフォーマット、YCbCr 4:2:2クロマフォーマット、又はモノクロを有する、方法。
【0227】
実施形態10.上記の実施形態のいずれか1つの方法であって、線形モデル導出の入力として使用される前記ルーマサンプルの組は、
フィルタ処理された再構成されたルーマサンプル(例えば、Rec’[x,y])からサブサンプリングされる境界ルーマ再構成サンプルを有する、方法。
【0228】
実施形態11.上記の実施形態のいずれか1つの方法であって、前記現在クロマブロックの前記予測子は
pred(i,j)=α・rec’(i,j)+β
に基づき取得され、pred(i,j)は、クロマサンプルを表し、rec(i,j)は、対応する再構成されたルーマサンプル(例えば、対応する再構成されたルーマサンプルの位置は現在ブロックの中にある)を表す、方法。
【0229】
実施形態12.上記の実施形態のいずれか1つの方法であって、前記線形モデルは、多方向線形モデル(MDLM)であり、前記線形モデル係数は、前記MDLMを取得するために使用される、方法。
【0230】
実施形態13.符号化デバイスによって実装される符号化の方法であって、
線形モデル(例えば、交差成分線形モデル,CCLM、又は多方向線形モデル,MDLM)を用いてイントラ予測を実行することと、
複数のシンタックス要素を含むビットストリームを生成することと
を有し、
前記複数のシンタックス要素は、ブロックに属するルーマサンプルに対するフィルタの選択を示すシンタックス要素を含む(例えば、CCLMのルーマフィルタの選択、特に、sps_cclm_colocated_chroma_flagのようなSPSフラグ)、方法。
【0231】
実施形態14.上記の実施形態のいずれか1つの方法であって、前記シンタックス要素の値が1又はTRUEであるとき、前記フィルタは、前記線形モデルの決定及び前記予測のためにルーマサンプルに適用されず、
前記シンタックス要素の値が0又はFALSEであるとき、前記フィルタは、前記線形モデルの決定及び前記予測のためにルーマサンプルに適用される、方法。
【0232】
実施形態15.復号化デバイスによって実装される復号化の方法であって、
ビットストリームから複数のシンタックス要素をパースすることであり、前記複数のシンタックス要素は、ブロックに属するルーマサンプルに対するフィルタの選択を示すシンタックス要素を含む(例えば、CCLMのルーマフィルタの選択、特に、sps_cclm_colocated_chroma_flagのようなSPSフラグ)、ことと、
指示された線形モデル(例えば、CCLM)を用いてイントラ予測を実行することと
を有する方法。
【0233】
実施形態16.上記の実施形態のいずれか1つの方法であって、前記シンタックス要素の値が0又はFALSEであるとき、前記フィルタは、前記線形モデルの決定及び前記予測のためにルーマサンプルに適用され、
前記シンタックス要素の値が1又はTRUEであるとき、前記フィルタは、前記線形モデルの決定及び前記予測のためにルーマサンプルに適用されない、方法。
【0234】
実施形態17.線形モデルを用いてイントラ予測を実行する方法であって、
クロマフォーマット情報に基づきダウンサンプリングフィルタの組を決定することであり、前記クロマフォーマット情報は、現在ブロックが属するピクチャのクロマフォーマットを示す、ことと、
前記現在ブロックのルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルと、前記ルーマブロックの外にある選択された隣接ルーマサンプルのダウンサンプリングされたルーマ参照サンプルとを、前記ダウンサンプリングフィルタの組の中の各々のダウンサンプリングフィルタを適用することによって取得することと、
前記選択された隣接ルーマサンプルの前記ダウンサンプリングされたルーマ参照サンプルと、前記ダウンサンプリングされたルーマ参照サンプルに対応するクロマ参照サンプルとに基づき、1つ以上の線形モデル係数を決定することと、
前記線形モデル係数と、全ルーマブロック内の前記再構成されたルーマサンプルの前記ダウンサンプリングされたルーマサンプルとに基づき、前記ルーマブロックに対応するクロマブロックの予測サンプルを取得することと
を有する方法。
【0235】
実施形態18.実施形態17の方法であって、クロマフォーマット情報に基づきダウンサンプリングフィルタの組を決定することは、
前記クロマフォーマット情報に基づきサブサンプリング比情報(例えば、SubWidthC及びSubHeightC)を決定することと、
前記サブサンプリング比情報(例えば、SubWidthC及びSubHeightC)に基づき前記ダウンサンプリングフィルタの組を決定することと
を有する、方法。
【0236】
実施形態19.実施形態17の方法であって、現在ブロックが属するピクチャのクロマフォーマットに基づきダウンサンプリングフィルタの組を決定することは、次の
前記クロマフォーマットが4:2:0カラーフォーマットである場合に、前記現在ブロックのルーマブロックに使用される第1のダウンサンプリングフィルタの組を決定すること、
前記クロマフォーマットが4:2:2カラーフォーマットである場合に、前記現在ブロックのルーマブロックに使用される第2のダウンサンプリングフィルタの組を決定すること、又は
前記クロマフォーマットが4:4:4カラーフォーマットである場合に、前記現在ブロックのルーマブロックに使用される第3のダウンサンプリングフィルタの組を決定すること
うちの1つ以上を有する、方法。
【0237】
実施形態20.実施形態18の方法であって、前記サブサンプリング比情報(例えば、SubWidthC及びSubHeightC)に基づき前記ダウンサンプリングフィルタの組(ダウンサンプリングフィルタ係数の組)を決定することは、次の
SubWidthC==2及びSubHeightC==2である場合に、前記現在ブロックのルーマブロックに使用される第1のダウンサンプリングフィルタの組(ダウンサンプリングフィルタ係数の組)を決定すること、
SubWidthC==2及びSubHeightC==1である場合に、前記現在ブロックのルーマブロックに使用される第2のダウンサンプリングフィルタの組(ダウンサンプリングフィルタ係数の組)を決定すること、又は
SubWidthC==1及びSubHeightC==1である場合に、前記現在ブロックのルーマブロックに使用される第3のダウンサンプリングフィルタの組(ダウンサンプリングフィルタ係数の組)を決定すること
のうちの1つ以上を有する、方法。
【0238】
実施形態21.実施形態17~20のいずれか1つの方法であって、前記サブサンプリングされたクロマサンプルが前記現在ブロック内の対応するルーマサンプルと同一位置にある場合に、
前記現在ブロックのルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルと、前記ルーマブロックの外にある選択された隣接ルーマサンプルのダウンサンプリングされたルーマ参照サンプルとを、前記ダウンサンプリングフィルタの組の中の各々のダウンサンプリングフィルタを適用することによって取得することは、
再構成されたルーマサンプルの空間エリアに第1ダウンサンプリングフィルタを適用することによって、前記ルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルを取得することであり、前記再構成されたルーマサンプルの空間エリアは、前記再構成されたルーマサンプル(ダウンサンプリングされたルーマサンプル)の位置に水平方向及び/又は垂直方向に隣接する位置にある再構成されたルーマサンプルを含む、ことと、
再構成されたルーマサンプルの空間エリアに前記第1ダウンサンプリングフィルタを適用することによって、選択された隣接ルーマサンプルのダウンサンプリングされたルーマ参照サンプルを取得することであり、前記再構成されたルーマサンプルの空間エリアは、前記選択された隣接ルーマサンプル(前記ダウンサンプリングされたルーマ参照サンプル)の位置に水平方向及び/又は垂直方向に隣接する位置にある再構成されたルーマサンプルを含む、ことと
を有し、
前記第1ダウンサンプリングフィルタは、前記ダウンサンプリングフィルタの組の中にある、方法。
【0239】
実施形態22.実施形態21の方法であって、4:2:2カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==1)場合に、前記第1ダウンサンプリングフィルタは1D非分離可能フィルタであり、あるいは、
4:2:0カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==2)場合に、前記第1ダウンサンプリングフィルタは2D非分離可能フィルタである、方法。
【0240】
実施形態23.実施形態21の方法であって、4:2:2カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==1)場合に、前記第1ダウンサンプリングフィルタ(標準規格に記載されている1D非分離可能フィルタF2)は、[1,2,1]又は
(外3)
によって表され、非ゼロ係数が、前記フィルタ処理された再構成されたルーマサンプルの位置に水平方向に隣接する位置にあり、係数「2」を有する中心位置は、前記フィルタ処理された再構成されたルーマサンプルの位置に対応する方法。
【0241】
実施形態24.実施形態21の方法であって、4:2:0カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==2)場合に、前記第1ダウンサンプリングフィルタ(VVC標準規格で記載されている2D非分離可能フィルタF3)は、
(外4)
によって表され、非ゼロ係数が、前記フィルタ処理された再構成されたルーマサンプルの位置に水平方向及び/又は垂直方向に隣接する位置にあり、係数「4」を有する中心位置は、前記フィルタ処理された再構成されたルーマサンプルの位置に対応する方法。
【0242】
実施形態25.実施形態17~20のいずれか1つの方法であって、前記サブサンプリングされたクロマサンプルが前記現在ブロック内の対応するルーマサンプルと同一位置にない場合に、
前記現在ブロックのルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルと、前記ルーマブロックの外にある選択された隣接ルーマサンプルのダウンサンプリングされたルーマ参照サンプルとを、前記ダウンサンプリングフィルタの組の中の各々のダウンサンプリングフィルタを適用することによって取得することは、
再構成されたルーマサンプルの空間エリアに第2ダウンサンプリングフィルタを適用することによって、前記ルーマブロック内の再構成されたルーマサンプルのダウンサンプリングされたルーマサンプルを取得することであり、前記再構成されたルーマサンプルの空間エリアは、前記再構成されたルーマサンプル(ダウンサンプリングされたルーマサンプル)の位置に水平方向及び/又は垂直方向に隣接する位置にある再構成されたルーマサンプルを含む、ことと、
再構成されたルーマサンプルの空間エリアに前記第2ダウンサンプリングフィルタを適用することによって、選択された隣接ルーマサンプルのダウンサンプリングされたルーマ参照サンプルを取得することであり、前記再構成されたルーマサンプルの空間エリアは、前記選択された隣接ルーマサンプル(前記ダウンサンプリングされたルーマ参照サンプル)の位置に水平方向及び/又は垂直方向に隣接する位置にある再構成されたルーマサンプルを含む、ことと
を有し、
前記第2ダウンサンプリングフィルタは、前記ダウンサンプリングフィルタの組の中にある、方法。
【0243】
実施形態26.実施形態25の方法であって、4:2:2カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==1)場合に、前記第2ダウンサンプリングフィルタは1D非分離可能フィルタであり、あるいは、
4:2:0カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==2)場合に、前記第2ダウンサンプリングフィルタは2D非分離可能フィルタである、方法。
【0244】
実施形態27.実施形態25の方法であって、4:2:2カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==1)場合に、前記第2ダウンサンプリングフィルタ(標準規格に記載されている1D非分離可能フィルタF1,F2)は、[2,0]又は[1,2,1]又は
(外5)
によって表され、非ゼロ係数が、前記フィルタ処理された再構成されたルーマサンプルの位置に水平方向に隣接する位置にあり、係数「2」を有する中心位置は、前記フィルタ処理された再構成されたルーマサンプルの位置に対応する方法。
【0245】
実施形態28.実施形態25の方法であって、4:2:0カラーフォーマットが使用される(SubWidthC==2及びSubHeightC==2)場合に、前記第2ダウンサンプリングフィルタ(VVC標準規格で記載されている2D非分離可能フィルタF4)は、
(外6)
によって表され、非ゼロ係数が、前記フィルタ処理された再構成されたルーマサンプルの位置に水平方向及び/又は垂直方向に隣接する位置にあり、係数「2」を有する中心位置は、前記フィルタ処理された再構成されたルーマサンプルの位置に対応する方法。
【0246】
実施形態29.実施形態21~24のいずれか1つの方法であって、前記サブサンプリングされたクロマサンプルが前記現在ブロック内の対応するルーマサンプルと同一位置にあることは、次の
クロマサンプルタイプ2、又は
クロマサンプルタイプ4
のうちのいずれか1つによって表される、方法。
【0247】
実施形態30.実施形態25~28のいずれか1つの方法であって、前記サブサンプリングされたクロマサンプルが前記現在ブロック内の対応するルーマサンプルと同一位置にないことは、次の
クロマサンプルタイプ0、
クロマサンプルタイプ1、
クロマサンプルタイプ3、又は
クロマサンプルタイプ5
のうちのいずれか1つによって表される、方法。
【0248】
実施形態31.上記の実施形態のいずれか1つの方法であって、前記フィルタは、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F3,F5,F6}の組について、次が適用される:
F3[0]=1,F3[1]=2,F3[2]=1
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F5[0][1]=1,F5[1][1]=4,F3[2][1]=1,
F5[1][0]=1,F5[1][2]=1,F6[0][1]=1,
F6[1][1]=2,F6[2][1]=1,F6[0][2]=1,
F6[1][2]=2,F6[2][2]=1,F2[0]=1,F2[1]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F5[0][1]=0,F5[1][1]=8,F3[2][1]=0,
F5[1][0]=0,F5[1][2]=0,F6[0][1]=2,
F6[1][1]=4,F6[2][1]=2,F6[0][2]=0,
F6[1][2]=0,F6[2][2]=0,F2[0]=2,F2[1]=0
である、方法。
【0249】
実施形態32.上記の実施形態のいずれか1つの方法であって、前記フィルタは、順次的なフィルタの表記を用いて、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F1,F2,F3}の組について、次が適用される:
F1[0]=2又は4,F1[1]=0
F2[0]=1,F2[1]=2,F2[2]=1
F3[i][j]=F4[i][j]=0,ただし、i=0..2,j=0..2
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F1[0]=1又は3,F1[1]=1,
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1,
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1,
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F3[0][1]=0,F3[1][1]=8,F3[2][1]=0,
F3[1][0]=0,F3[1][2]=0
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2,
F4[0][2]=0,F4[1][2]=0,F4[2][2]=0
である、方法。
【0250】
実施形態33.上記の実施形態のいずれか1つの方法であって、前記クロマフォーマットがYUV 4:2:2と指定される場合、又はクロマ成分及びルーマ成分が同一位置にある(図10Bで「クロマサンプルタイプ2」及び「クロマサンプルタイプ4」として示される)場合に、ルーマ成分からのサンプリングが、前記ルーマブロックの上側に対してオフセットを有して、実行される、方法。
【0251】
実施形態34.上記の実施形態のいずれか1つの方法であって、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:2として指定されるか、又はブロック境界がCTUライン境界である場合に、[1 2 1]/4フィルタが参照サンプルに適用される、方法。
【0252】
実施形態35.実施形態34の方法であって、availTLがTRUEに等しく、bCTUboundaryがTRUEに等しい場合に、F3にセットされたFについて、次が適用される:
pSelDsY[idx]=
F[0]*pY[-1][-1
+F[1]*pY[0][-1
+F[2]*pY[1][-1
+2)>>2
方法。
【0253】
実施形態36.上記の実施形態のいずれか1つの方法であって、ブロック境界がCTUライン境界ではなく、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される場合に、[1 2 1;1 2 1]/8フィルタが参照サンプルに適用される、方法。
【0254】
実施形態37.実施形態36の方法であって、availTLがTRUEに等しく、bCTUboundaryがFALSEに等しい場合に、F6にセットされたFについて、次が適用される:
pSelDsY[idx]=
F[0][1]*pY[-1][-1
+F[0][2]*pY[-1][-2
+F[1][1]*pY[0][-1
+F[1][2]*pY[0][-2
+F[2][1]*pY[1][-1
+F[2][2]*pY[1][-2]+4)>>3
方法。
【0255】
実施形態38.上記の実施形態のいずれか1つの方法であって、左上サンプルが利用可能でなく、かつ、クロマフォーマットがYUV 4:2:2として指定されるか、又はブロック境界がCTUライン境界である場合に、バイパス[1]/1フィルタが参照サンプルに適用される、方法。
【0256】
実施形態39.実施形態38の方法であって、availTLがFALSEに等しく、bCTUboundaryがTRUEに等しい場合に、次が適用される:
pSelDsY[idx]=pY[0][-1]
方法。
【0257】
実施形態40.上記の実施形態のいずれか1つの方法であって、ブロック境界がCTUライン境界ではなく、左上サンプルが利用可能であり、かつ、クロマフォーマットがYUV 4:2:0(又は垂直クロマサブサンプリングを使用する任意の他のクロマフォーマット)として指定される場合に、[1 1]/2フィルタが参照サンプルに適用される、方法。
【0258】
実施形態41.実施形態40の方法であって、availTLがFALSEに等しく、bCTUboundaryがFALSEに等しい場合に、F2にセットされたFについて、次が適用される:
pSelDsY[idx]=
(F[1]*pY[0][-2]+F[0]*pY[0][-1]+1)>>1
方法。
【0259】
実施形態42.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足されない(例えば、bCTUboundaryがFALSEに等しい)場合に、次が適用される:
pSelDsY[idx]=
(F4[0][1]*pY[SubWidthCx-1][-1]+
F4[0][2]*pY[SubWidthC*x-1][-2]+
F4[1][1]*pY[SubWidthC*x][-1]+
F4[1][2]*pY[SubWidthC*x][-2]+
F4[2][1]*pY[SubWidthC*x+1][-1]+
F4[2][2]*pY[SubWidthC*x+1][-2]+4>>3
方法。
【0260】
実施形態43.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足される(例えば、bCTUboundaryがTRUEに等しい)場合に、次が適用される:
pSelDsY[idx]=
(F2[0]*pY[SubWidthC*x-1][-1]+
F2[1]*pY[SubWidthC*x][-1]+
F2[2]*pY[SubWidthC*x+1][-1]+2>>2
方法。
【0261】
実施形態44.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足されず、第2条件が満足される(例えば、bCTUboundaryがFALSEに等しく、availTLがTRUEに等しい)場合に、次が適用される:
少なくとも第1条件が満足されない(例えば、bCTUboundaryがFALSEに等しい)場合に、次が適用される:
pSelDsY[idx]=
(F4[0][1]*pY[-1][-1]+
F4[0][2]*pY[-1][-2]+
F4[1][1]*pY[0][-1]+
F4[1][2]*pY[0][-2]+
F4[2][1]*pY[1][-1]+
F4[2][2]*pY[1][-2]+4>>3
方法。
【0262】
実施形態45.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足され、第2条件が満足される(例えば、bCTUboundaryがTRUEに等しく、availTLがTRUEに等しい)場合に、次が適用される:
pSelDsY[idx]=
(F2[0]*pY[-1][-1]+
F2[1]*pY[0][-1]+
F2[2]*pY[1][-1]+2>>2
方法。
【0263】
実施形態46.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足されず、第2条件が満足されない(bCTUboundaryがFALSEに等しく、availTLがFALSEに等しい)場合に、次が適用される:
pSelDsY[idx]=
(F1[1]*pY[0][-2]+F1[0]*pY[0][-1]+1)>>1
又は
pSelDsY[idx]=
(F1[1]*pY[0][-2]+F1[0]*pY[0][-1]+2)>>2
方法。
【0264】
実施形態47.上記の実施形態のいずれか1つの方法であって、少なくとも第1条件が満足され、第2条件が満足されない(bCTUboundaryがTRUEに等しく、availTLがFALSEに等しい)場合に、次が適用される:
pSelDsY[idx]=pY[0][-1]
方法。
【0265】
実施形態48.上記の実施形態のいずれか1つの方法であって、第2条件が満足される(例えば、availTLがTRUEに等しい)場合に、次が適用される:
pDsY[0][y]=
(F1[0]*pY[0][SubHeightC*y]+
F1[1]*pY[0][SubHeightC*y+1]+2)>>2
方法。
【0266】
実施形態49.上記の実施形態のいずれか1つの方法であって、再構成されたルーマブロックの境界に対するフィルタ選択を実装するために、パディング動作が使用される、方法。
【0267】
実施形態50.上記の実施形態のいずれか1つの方法であって、
フィルタ処理されたエリアの位置がブロック境界にあるときにフィルタリングプロセスを調整することを更に有する方法。
【0268】
実施形態51.上記の実施形態のいずれか1つの方法であって、フィルタ係数が位置に依存する、方法。
【0269】
実施形態52.実施形態51の方法であって、左側が利用可能でない場合に、前記左側のサンプルが、再構成されたブロックの最左の再構成されたサンプルを水平方向にコピーすることによって取得される、方法。
【0270】
実施形態53.実施形態51の方法であって、上側が利用可能でない場合に、前記上側のサンプルが、再構成されたブロックの最上の再構成されたサンプルを垂直方向にコピーすることによって取得される、方法。
【0271】
実施形態54.上記の実施形態のいずれか1つの方法であって、前記フィルタの1つFa∈{F1...F4}によるフィルタリングは、パディング動作及びフィルタFbを使用することによって実行され、フィルタFbは、フィルタFaよりも多い非ゼロ係数を有する、方法。
【0272】
実施形態55.実施形態54の方法であって、FaがF1であり、FbがF2である場合に、フィルタF1は、パディングとフィルタF2を使用するフィルタリングとの組み合わせとして実装される、方法。
【0273】
実施形態56.実施形態49~55のいずれか1つの方法であって、前記フィルタは、次のように条件付きで決定される:
第1条件(例えば、SubWidthC==1及びSubHeightC==1のような、仕様で定義された表から取得されるサブサンプリング比情報)が満足されない場合に、フィルタ{F1,F2,F3}の組について、次が適用される:
F2[0]=1,F2[1]=2,F2[2]=1
F3[i][j]=F4[i][j]=0,ただし、i=0..2,j=0..2
第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足される場合に、
F3[0][1]=1,F3[1][1]=4,F3[2][1]=1,
F3[1][0]=1,F3[1][2]=1,
F4[0][1]=1,F4[1][1]=2,F4[2][1]=1,
F4[0][2]=1,F4[1][2]=2,F4[2][2]=1
他の場合(例えば、第2条件(例えば、SubWidthC==2及びSubHeightC==2のような、表から取得されるサブサンプリング比情報)が満足されない場合)に、
F3[0][1]=0,F3[1][1]=8,F3[2][1]=0,
F3[1][0]=0,F3[1][2]=0
F4[0][1]=2,F4[1][1]=4,F4[2][1]=2,
F4[0][2]=0,F4[1][2]=0,F4[2][2]=0
である、方法。
【0274】
実施形態57.実施形態49~56のいずれか1つの方法であって、前記パディング動作は、
availTがFALSEに等しい場合に、x=-1..SubWidthC*numSampT-1,y=-1,-2である隣接する上ルーマサンプルpY[x][y]が、ルーマサンプルpY[x][0]に等しくセットされ、あるいは、
availLがFALSEに等しい場合に、x=-1,-2,-3,y=-1..SubHeightC*numSampL-1である隣接する左ルーマサンプルpY[x][y]が、ルーマサンプルpY[0][y]に等しくセットされる、
ことを有する、方法。
【0275】
上記の態様及びそれらの態様のいずれかのとり得る実施形態で、現在ブロックのルーマブロック内の再構成されたルーマサンプルに、及び/又は現在ブロックに隣接する選択された位置でのルーマサンプルにフィルタを適用するために、フィルタは、ダウンサンプリングフィルタの組に属し、ダウンサンプリングフィルタの組には、削減された数のフィルタしか含まれない。つまり、ダウンサンプリングフィルタの組の中のフィルタの数は、削減される。例えば、シンタックス要素(例えば、sps_chroma_vertical_collocated_flag)の値に応じて、フィルタの組はF3及びF4フィルタしか含まず、つまり、F3及びF4しか選択され得ない。相応して、それは、再構成されたルーマサンプルに、及び/又は現在ブロックに隣接する選択された位置でのルーマサンプルに適用されるフィルタのタップの数を減らし得る。
【0276】
図16は、コンテンツ配信サービスを実現するコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、キャプチャデバイス3102、端末デバイス3106を含み、任意に、ディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上記の通信チャネル13を含んでよい。通信リンク3104は、WIFI、Ethernet、ケーブル、無線(3G/4G/5G)、USB、又はそれらのあらゆる種類の組み合わせ、などを含むが、それに限られない。
【0277】
キャプチャデバイス3102は、データを生成し、また、上記の実施形態で示された符号化方法によってデータを符号化してもよい。代替的に、キャプチャデバイス3102は、データをストリーミングサーバ(図示せず)へ分配してもよく、サーバがデータを符号化し、符号化されたデータを端末デバイス3106へ送る。キャプチャデバイス3102は、カメラ、スマートフォン若しくはパッド、コンピュータ若しくはラップトップ、ビデオ会議システム、PDA、車載型デバイス、又はそれらのいずれかの組み合わせ、などを含むが、それに限られない。例えば、キャプチャデバイス3102は、上記の送信元デバイス12を含んでもよい。データがビデオを含む場合に、キャプチャデバイス3102に含まれているビデオエンコーダが、実際に、ビデオ符号化処理を実行し得る。データがオーディオ(すなわち、ボイス)を含む場合に、キャプチャデバイス3102に含まれているオーディオエンコーダが、実際に、オーディオ符号化処理を実行し得る。いくつかの実際のシナリオについて、キャプチャデバイス3102は、符号化されたビデオ及びオーディオデータを、それらを一緒に多重化することによって分配する。他の実際のシナリオについては、例えば、ビデオ会議システムでは、符号化されたオーディオデータと符号化されたビデオデータとは、多重化されない。キャプチャデバイス3102は、符号化されたオーディオデータ及び符号化されたビデオデータを別々に端末デバイス3106へ分配する。
【0278】
コンテンツ供給システム3100において、端末デバイス3106は、符号化されたデータを受け取って再生する。端末デバイス3106は、上記の符号化されたデータを復号することができるスマートフォン若しくはパッド3108、コンピュータ若しくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車載型デバイス3124、又はそれらのいずれかの組み合わせ、などのような、データ受信及び回復機能を備えたデバイスであってよい。例えば、端末デバイス3106は、上述された送信先デバイス14を含んでもよい。符号化されたデータがビデオを含む場合に、端末デバイスに含まれているビデオデコーダ30が、ビデオ復号化を実行するよう優先される。符号化されたデータがオーディオを含む場合に、端末デバイスに含まれているオーディオデコーダが、オーディオ復号化処理を実行するよう優先される。
【0279】
ディスプレイを備えた端末デバイス、例えば、スマートフォン若しくはパッド3108、コンピュータ若しくはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、パーソナルデジタルアシスタント(PDA)3122、又は車載型デバイス3124については、端末デバイスは、自身のディスプレイへ復号されたデータを供給することができる。ディスプレイを備えていない端末デバイス、例えば、STB3116、ビデオ会議システム3118、又はビデオ監視システム3120については、外付けディスプレイ3126が、復号されたデータを受け取って示すよう接触する。
【0280】
このシステム内の各デバイスが符号化又は復号化を実行するとき、上記の実施形態で示されたピクチャ符号化デバイス又はピクチャ復号化デバイスが使用され得る。
【0281】
図17は、端末デバイス3106の例の構造を示す図である。端末デバイス3106がキャプチャデバイス3102からストリームを受け取った後、プロトコル処理ユニット3202がストリームの伝送プロトコルを解析する。プロトコルは、実時間ストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、実時間トランスポートプロトコル(RTP)、実時間メッセージングプロトコル(RTMP)、又はそれらのあらゆる種類の組み合わせ、などを含むが、それに限られない。
【0282】
プロトコル処理ユニット3202がストリームを処理した後、ストリームファイルが生成される。ファイルは逆多重化ユニット3204へ出力される。逆多重化ユニット3204は、多重化されたデータを、符号化されたオーディオデータ及び符号化されたビデオデータに分離することができる。上述されたように、いくつかの実際のシナリオについて、例えば、ビデオ会議システムでは、符号化されたオーディオデータと符号化されたビデオデータとは多重化されない。この状況では、符号化されたデータは、逆多重化ユニット3204を通らずにビデオデコーダ3206及びオーディオデコーダ3208へ送られる。
【0283】
逆多重化処理により、ビデオエレメンタリストリーム(ES)、オーディオES、及び任意にサブタイトルが生成される。上記の実施形態で説明されたビデオデコーダ30を含むビデオデコーダ3206は、上記の実施形態で示された復号化方法によってビデオESを復号して、ビデオフレームを生成し、このデータを同期ユニット3212へ供給する。オーディオデコーダ3208は、オーディオESを復号して、オーディオフレームを生成し、このデータを同期ユニット3212へ供給する。代替的に、ビデオフレームは、それを同期ユニット3212へ供給する前にバッファ(図17に図示せず)に記憶してもよい。同様に、オーディオフレームは、それを同期ユニット3212へ供給する前にバッファ(図17に図示せず)に記憶してもよい。
【0284】
同期ユニット3212は、ビデオフレームとオーディオフレームとを同期させ、ビデオ/オーディオをビデオ/オーディオディスプレイ3214へ供給する。例えば、同期ユニット3212は、ビデオ及びオーディオ情報の提示を同期させる。情報は、コード化されたオーディオ及びビジュアルデータの提示に関するタイムスタンプと、データストリーム自体の配信に関するタイムスタンプとを用いて、シンタックスでコード化してよい。
【0285】
サブタイトルがストリームに含まれる場合に、サブタイトルデコーダ3210がサブタイトルを復号し、それをビデオフレーム及びオーディオフレームと同期させ、ビデオ/オーディオ/サブタイトルをビデオ/オーディオ/サブタイトルディスプレイ3216へ供給する。
【0286】
本願は、上記のシステムに制限されず、上記の実施形態におけるピクチャ符号化デバイス又はピクチャ復号化デバイスのどちらか一方は、他のシステム、例えば、カーシステムに組み込まれ得る。
【0287】
数学演算子
本願で使用される数学演算子は、Cプログラミング言語で使用されているものと類似している。しかし、整数除算及び算術シフト演算の結果は、より厳密に定義され、指数及び実数値除算のような、更なる演算が定義される。番号付け及び計数の規則は、一般的に0から始まり、例えば、「第1」は0番目と等価であり、「第2」は1番目と等価である、など。
【0288】
算術演算子
以下の算術演算が、次のように定義される:
【表13】
【0289】
論理演算子
以下の算術演算子が、次のように定義される:
x&&y x及びyのブール論理“AND”
x||y x及びyのブール論理“OR”
! ブール論理“NOT”
x?y:z xがTRUEであるか、又は0に等しくない場合には、yの値として評価し、そうでない場合には、zの値として評価する。
【0290】
関係演算子
以下の関係演算子が、次のように定義される:
> ~よりも大きい
>= ~以上
< ~よりも小さい
<= ~以下
== ~に等しい
!= ~に等しくない。
【0291】
関係演算子が、値“NA”(not applicable)を割り当てられているシンタックス要素又は変数に適用される場合に、値“NA”は、そのシンタックス要素又は変数のディスティンクト値として扱われる。値“NA”は、如何なる他の値にも等しくないと見なされる。
【0292】
ビット演算子
以下のビット演算子が、次のように定義される:
& ビット単位“AND”。整数引数に作用する場合に、整数値の2の補数表現に作用する。他の引数よりも少ないビットを含む2進引数に作用する場合に、より短い方の引数は、0に等しい更なる有効ビットを加えることによって拡張される。
| ビット単位“OR”。整数引数に作用する場合に、整数値の2の補数表現に作用する。他の引数よりも少ないビットを含む2進引数に作用する場合に、より短い方の引数は、0に等しい更なる有効ビットを加えることによって拡張される。
^ ビット単位“XOR”。整数引数に作用する場合に、整数値の2の補数表現に作用する。他の引数よりも少ないビットを含む2進引数に作用する場合に、より短い方の引数は、0に等しい更なる有効ビットを加えることによって拡張される。
x>>y y個の2進桁によるxの2の補数整数表現の算術右シフト。この関数は、yの非負整数値についてのみ定義される。右シフトの結果として最上位ビット(MSB)へシフトされたビットは、シフト演算の前のxのMSBに等しい値を有する。
x<<y y個の2進桁によるxの2の補数整数表現の算術左シフト。この関数は、yの非負整数値についてのみ定義される。左シフトの結果として最下位ビット(LSB)へシフトされたビットは、0に等しい値を有する。
【0293】
代入演算子
以下の算術演算子が、次のように定義される:
= 代入演算子
++ インクリメント、すなわち、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)と等価である。
【0294】
範囲表記
以下の表記は、値の範囲を指定するために使用される:
x=y..z x、y及びzは整数であり、zはyよりも大きいとして、xは、y以上z以下の整数値を呈する。
【0295】
数学関数
以下の数学関数が定義される:
【数10】
Asin(x) -1.0以上1.0以下の範囲内にある引数xに作用して、出力値がラジアン単位で-π÷2以上π÷2以下の範囲内にある三角関数の逆正弦関数
Atan(x) 引数xに作用して、出力値がラジアン単位で-π÷2以上π÷2以下の範囲内にある三角関数の逆正接関数
【数11】
Ceil(x) x以上の最小の整数
Clip1(x)=Clip3(0,(1<<BitDepth)-1,x)
Clip1(x)=Clip3(0,(1<<BitDepth)-1,x)
【数12】
Cos(x) ラジアン単位で引数xに作用する三角関数の余弦関数
Floor(x) x以下の最大の整数
【数13】
Ln(x) xの自然対数(底eの対数、ここで、eは、自然対数の底定数2.718281828・・・である)。
Log2(x) xの底2の対数
Log10(x) xの底10の対数
【数14】
Sin(x) ラジアン単位で引数xに作用する三角関数の正弦関数
Sqrt(x)=√x
Swap(x,y)=(y,x)
Tan(x) ラジアン単位で引数xに作用する三角関数の正接関数。
【0296】
演算の優先順位
式中の優先順位がパラメータの使用によって明示的に示されていない場合に、以下の規則が適用される:
・優先度のより高い演算は、優先度のより低い演算の前に評価される。
・同じ優先度の演算は、左から右に順番に評価される。
【0297】
以下の表は、最高から最低までの演算の優先度を定め、表中のより高い位置は、より高い優先度を示す。
【0298】
Cプログラミング言語でも使用される演算については、本明細書で使用されている優先順位は、Cプログラミング言語で使用されているものと同じである。
【表14】
【0299】
論理演算のテキスト記述
テキスト中で、次の形式で数学的に記述されることになる論理演算のステートメント:

if(条件0)
ステートメント0
else if(条件1)
ステートメント1
・・・
else/残りの条件に関する説明的所見
ステートメントn

は、次の様態で記述されてもよい:

・・・次のように/・・・次が適用される:
- 条件0の場合に、ステートメント0
- そうではなく、条件1の場合に、ステートメント1
- ・・・
- 上記以外の場合に(残りの条件に関する説明的所見)、ステートメントn
【0300】
テキスト中の夫々の「・・・の場合に、・・・そうではなく、・・・の場合に、・・・上記外の場合に、・・・」のステートメントは、「・・・の場合に」が直ぐ後に続く「・・・次のように」又は「・・・次が適用される」により導入される。「・・・の場合に、・・・そうではなく、・・・の場合に、・・・上記以外の場合に、・・・」の最後の条件は常に「上記以外の場合に、・・・」である。交互配置された「・・・の場合に、・・・そうではなく、・・・の場合に、・・・上記外の場合に、・・・」のステートメントは、「・・・次のように」又は「・・・次が適用される」を終わりの「上記以外の場合に、・・・」と適合させることによって識別され得る。
【0301】
テキスト中で、次の形式で数学的に記述されることになる論理演算のステートメント:

if(条件0a&&条件0b)
ステートメント0
else if(条件1a||条件1b)
ステートメント1
・・・
else
ステートメントn

は、次の様態で記述されてもよい:

・・・次のように/・・・次が適用される:
- 次の全ての条件が真である場合に、ステートメント0:
- 条件0a
- 条件0b
- そうではない場合に、次の条件の1つ以上が真である場合に、ステートメント1:
- 条件1a
- 条件1b
- ・・・
- 上記以外の場合に、ステートメントn
【0302】
テキスト中で、次の形式で数学的に記述されることになる論理演算のステートメント:

if(条件0)
ステートメント0
if(条件1)
ステートメント1

は、次の様態で記述されてもよい:

条件0の場合に、ステートメント0
条件1の場合に、ステートメント1
【0303】
本願の実施形態は、ビデオコーディングに基づき主として記載されてきたが、コーディングシステム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は、静止画処理のために同様に使用され得る。
【0304】
例えば、エンコーダ20及びデコーダ30の実施形態と、例えば、エンコーダ20及びデコーダ30を参照して本願で記載される機能とは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいて実装されてよい。ソフトウェアで実装される場合に、機能は、1つ以上の命令又はコードとして、コンピュータ可読媒体上で記憶されるか、又は通信媒体上で伝送され、そして、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形な媒体に対応するコンピュータ可読記憶媒体、又は例えば、通信プロトコルに従って、1つの場所から他へのコンピュータプログラムの転送を助ける何らかの媒体を含む通信媒体を含んでよい。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形なコンピュータ可読記憶媒体、又は(2)信号若しくは搬送波などの通信媒体、に対応してよい。データ記憶媒体は、本開示で記載されている技術の実装のための命令、コード及び/又はデータ構造を読み出すよう1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされ得る如何なる利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
【0305】
例として、限定としてではなく、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリ、又は命令若しくはデータ構造の形で所望のプログラムコードを記憶するために使用可能であって、コンピュータによってアクセスされ得るあらゆる他の媒体を有することができる。また、如何なる接続も、コンピュータ可読媒体と適切に称される。例えば、命令が同軸ケーブル、光ファイバケーブル、ツイステッドペア、デジタル加入者回線(DSL)、又は赤外線、電波、及びマイクロ波などの無線技術を用いてウェブサイト、サーバ、又は他の遠隔ソースから伝送される場合に、同軸ケーブル、光ファイバケーブル、ツイステッドペア、DSL、又は赤外線、電波、及びマイクロ波などの無線技術は、媒体の定義に含まれる。しかし、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、代わりに、非一時的な、有形な記憶媒体を対象とする、ことが理解されるべきである。ここで使用されるdisk及びdiscは、コンパクト・ディスク(CD)、レーザー・ディスク、光ディスク、デジタル・バーサタイル・ディスク(DVD)、フロッピー・ディスク、及びブルーレイディスクを含み、diskは、通常は、磁気的にデータを再生し、一方、discは、レーザーで光学的にデータを再生する。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0306】
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ロジック・アレイ(FPGA)、又は他の同等の集積若しくはディスクリート論理回路などの1つ以上のプロセッサによって実行されてよい。従って、ここで使用される「プロセッサ」という用語は、上記の構造のいずれか、又はここで記載されている技術の実装に適したあらゆる他の構造を指し得る。更には、いくつかの態様において、ここで記載されている機能性は、符号化及び復号化のために構成された専用のハードウェア及び/又はソフトウェアモジュール内に設けられても、あるいは、複合型コーデックに組み込まれてもよい。また、技術は、1つ以上の回路又は論理要素において完全に実装されてもよい。
【0307】
本開示の技術は、無線ハンドセット、集積回路(IC)又はICの組(例えば、チップセット)を含む多種多様なデバイス又は装置において実装されてよい。様々なコンポーネント、モジュール、又はユニットが、開示されている技術を実行するよう構成されたデバイスの機能的態様を強調するよう本開示で説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上述されたように、様々なユニットがコーデックハードウェアユニットにまとめられても、あるいは、適切なソフトウェア及び/又はファームウェアとともに、上述されたような1つ以上のプロセッサを含む相互運用ハードウェアユニットの集合によって提供されてもよい。
【0308】
[関連出願への相互参照]
本特許出願は、2019年12月30日付けで出願された米国特許仮出願第62/955,405号、及び2020年1月7日付けで出願された米国特許仮出願第62/958,293号に対する優先権を主張するものであり、これらの各出願は、その全文を参照により本願に援用される。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12A
図12B
図12C
図12D
図13
図14
図15
図16
図17