(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】クロマ量子化パラメータのマッピング関数のシグナリングのための方法及び装置
(51)【国際特許分類】
H04N 19/70 20140101AFI20231017BHJP
H04N 19/124 20140101ALI20231017BHJP
H04N 19/176 20140101ALI20231017BHJP
H04N 19/186 20140101ALI20231017BHJP
【FI】
H04N19/70
H04N19/124
H04N19/176
H04N19/186
(21)【出願番号】P 2021563407
(86)(22)【出願日】2020-04-26
(86)【国際出願番号】 CN2020086933
(87)【国際公開番号】W WO2020216376
(87)【国際公開日】2020-10-29
【審査請求日】2021-11-30
(31)【優先権主張番号】PCT/RU2019/000444
(32)【優先日】2019-06-21
(33)【優先権主張国・地域又は機関】RU
(32)【優先日】2019-04-26
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-07-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-07-09
(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)【発明者】
【氏名】ソロヴィエフ,ティモフェイ ミハイロヴィッチ
(72)【発明者】
【氏名】カラブトフ,アレクサンドル アレクサンドロヴィッチ
(72)【発明者】
【氏名】アルシーナ,エレーナ アレクサンドロワ
(72)【発明者】
【氏名】チェン,ジエンローァ
【審査官】岩井 健二
(56)【参考文献】
【文献】特表2016-518762(JP,A)
【文献】特表2015-526971(JP,A)
【文献】Benjamin Bross, Jianle Chen, and Shan Liu,Versatile Video Coding (Draft 6),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-O2001 (version 14),15th Meeting: Gothenburg, SE,2019年07月31日,pp.37-40,50-54,73-76,87-97,120-129,149-151,280-282
【文献】Taoran Lu, et al.,Chroma Quantization Parameter QpC Table for HDR Signal,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0221,14th Meeting: Geneva, CH,2019年03月,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
デコーダによって実行される方法であって、
ビットストリームを受信し、
前記ビットストリームを構文解析して、ルミナンス量子化パラメータ(QP)と、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるクロマQPマッピングテーブルについての情報と、を取得し、
取得した前記ルミナンスQPに少なくとも部分的に基づいてQPiを取得し、
取得した前記情報に基づいて前記クロマQPマッピングテーブルを取得し、
取得した前記クロマQPマッピングテーブルと、取得した前記QPiとに基づいて、第1のQPcを取得する、
ことを有
し、
前記クロマQPマッピングテーブルの値はマッピング関数を満たし、前記マッピング関数は、区分マッピング関数であり、前記クロマQPマッピングテーブルの前記情報は、前記区分マッピング関数の区切り点、変化点、又はピボット点の情報を有する、
方法。
【請求項2】
前記クロマQPマッピングテーブルは、前記デコーダによってサポートされる許容QPi範囲内のQPiに対応する集合Xの各要素xを、又は前記集合Xの何らかの部分集合を、前記デコーダによってサポートされる許容QPc範囲内のQPcに対応する集合Yの1つの要素yに関連付ける、請求項1に記載の方法。
【請求項3】
前記区切り点、前記変化点、若しくは前記ピボット点の数、及びそのそれぞれのx座標及びy座標が、直接、又は現在のピボット点の座標と先行するピボット点の座標との間のデルタ値に基づいて、のいずれかで、前記ビットストリーム内でシグナリングされる、請求項
1又は2に記載の方法。
【請求項4】
前記マッピング関数は、
線形方程式、
指数方程式、
対数方程式、又は
上記の方程式の組み合わせ、
に基づく区分関数である、請求項
1乃至
3のいずれか一項に記載の方法。
【請求項5】
前記区分関数の区分のパラメータが、
y=slope*x+b
によって与えられる線形方程式を用いて、ピボット点に基づいて取得され、
slope及びbは、前記線形方程式のパラメータであり、
slope=(Ey-Dy)/(Ex-Dx)、
b=Dy-slope*Dx、
であり、ここで、D及びEは、それぞれ、座標Dx、Dy及びEx、Eyを有するピボット点である、請求項
4に記載の方法。
【請求項6】
前記クロマQPマッピングテーブルの前記情報は、全てのクロミナンス成分に対してまとめてシグナリングされる、請求項1乃至
5のいずれか一項に記載の方法。
【請求項7】
前記クロマQPマッピングテーブルの前記情報は、前記マッピング関数がクロミナンス成分に対して、別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有する、請求項
1乃至
5のいずれか一項に記載の方法。
【請求項8】
前記クロマQPマッピングテーブルの前記情報は、
シーケンスパラメータセット内でシーケンスレベルで、又は
ピクチャパラメータセット内でピクチャレベルで、又は
タイルグループパラメータセット内でタイルグループレベルで、又は
適応パラメータセット内で、又は
補足拡張情報(SEI)メッセージ内で、
シグナリングされる、請求項1乃至
7のいずれか一項に記載の方法。
【請求項9】
請求項1乃至
8のいずれか一項に記載の方法を実行する処理回路を有するデコーダ。
【請求項10】
コンピュータに請求項1乃至
8のいずれか一項に記載の方法を実行させるように構成されたコンピュータプログラム。
【請求項11】
デコーダであって、
1つ以上のプロセッサと、
前記プロセッサに結合され、前記プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体であり、前記プログラミングは、前記プロセッサによって実行されるときに、請求項1乃至
8のいずれか一項に記載の方法を実行するように当該デコーダを構成する、コンピュータ読み取り可能記憶媒体と、
を有するデコーダ。
【請求項12】
コンピュータプログラムコードを有体に具現化するコンピュータ読み取り可能記憶媒体であって、前記コンピュータプログラムコードは、コンピュータユニットによって実行されるときに、該コンピュータユニットに請求項1乃至
8のいずれか一項に記載の方法を実行させる、コンピュータ読み取り可能記憶媒体。
【請求項13】
映像データをビットストリームの形態で格納するように構成された非一時的なメモリストレージと、
請求項1乃至
8のいずれか一項に記載の方法を実行するように構成されたビデオデコーダと、
を有する映像データ復号装置。
【発明の詳細な説明】
【技術分野】
【0001】
この特許出願は、2019年4月26日に出願された米国仮特許出願第62/839,6076号と、2019年6月21日に出願された国際特許出願第PCT/RU2019/000444号と、2019年7月7日に出願された米国仮特許出願第62/871,197号と、2019年7月9日に出願された米国仮特許出願第62/872,238号との優先権を主張する。
【0002】
本出願(開示)の実施形態は、概して画像及び/又は映像復号の分野に関し、より具体的にはクロマ量子化パラメータシグナリングのための装置及び方法に関する。
【背景技術】
【0003】
映像コーディング(映像符号化及び復号)は、例えば、放送デジタルTV、インターネット及びモバイルネットワーク上での映像伝送、例えばビデオチャットなどのリアルタイム会話アプリケーション、ビデオ会議、DVD及びBlu-rayディスク、ビデオコンテンツ収集・編集システム、並びにセキュリティ用途のビデオカメラといった、広範囲のデジタル映像アプリケーションで使用されている。
【0004】
比較的短い映像であってもそれを描写するために必要とされる映像データの量はかなりになり得るものであり、それが、限られた帯域幅容量を持つ通信ネットワークを介してデータをストリーミングする又はその他の方法で通信するときに困難をもたらし得る。従って、映像データは一般に、今日の遠隔通信ネットワークを介して通信される前に圧縮される。映像のサイズはまた、メモリリソースが限られ得るために、映像がストレージ装置に格納されるときにも問題となり得る。映像圧縮装置は、しばしば、伝送又は記憶に先立って、ソースにてソフトウェア及び/又はハードウェアを用いて映像データをコーディングし、それにより、デジタル映像画像を表すのに必要なデータの量を減少させる。そして、圧縮されたデータが、送り先で、映像データを復号する映像解凍装置によって受信される。限られたネットワークリソースと、増加の一途をたどるいっそう高い映像品質の要求とに伴い、ピクチャ品質の犠牲を殆ど乃至は全く払わずに圧縮比を向上させる改良された圧縮及び解凍技術が望ましい。
【発明の概要】
【0005】
本出願の実施形態は、独立請求項に従った符号化及び復号のための装置及び方法を提供する。
【0006】
上述の目的及び他の目的が、独立請求項に係る事項によって達成される。更なる実装形態が、従属請求項、明細書及び図面から明らかである。
【0007】
本開示は、クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法を開示し、当該方法は、デコーダによって実行され、当該方法は、
ビットストリームを受信し、
前記ビットストリームを構文解析して、前記ルミナンスQPと、QPインデックス(QPi)を前記クロミナンスQP(QPc)に関連付けるクロマQPマッピングテーブルについての情報と、を取得し、
前記ルミナンスQPに少なくとも部分的に基づいて前記QPiを取得し、
取得した前記情報に基づいて前記クロマQPマッピングテーブルを取得し、
取得した前記クロマQPマッピングテーブルと、取得した前記QPiとに基づいて、QPcを取得し、
取得した前記QPcに基づいてクロミナンス量子化パラメータを取得する、
ことを有する。
【0008】
従って、ビットストリーム内でシグナリングされる情報に基づいてクロマQPマッピングテーブルが取得される。
【0009】
上述の方法において、
qPCb、qPCr及びqPCbCrが、
qPChroma=Clip3(-QpBdOffset,63,QpY)、
qPCb=ChromaQpTable[0][qPChroma]、
qPCr=ChromaQpTable[1][qPChroma]、
qPCbCr=ChromaQpTable[2][qPChroma]、
として導出されることができ、
Cb成分及びCr成分用のクロマ量子化パラメータQp’Cb及びQp’Cr、並びにジョイントCb-CrコーディングQp’CbCrが、
Qp’Cb=Clip3(-QpBdOffset,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffset、
Qp’Cr=Clip3(-QpBdOffset,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffset、
Qp’CbCr=Clip3(-QpBdOffset,63,qPCbCr+pps_joint_cbcr_qp_offset_value+slice_joint_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffset、
として導出されることができ、
ChromaQpTableは、前記クロマQPマッピングテーブルであり、
QPiは、qPChromaに対応し、
QPcは、qPCb、qPCr及びqPCbCrに対応し、
QpBdOffsetは、式:
QpBdOffset=6*bit_depth_minus8
を用いてルマアレイ及びクロマアレイのサンプルのビット深度に基づいて計算されるビット深度オフセットであり、
bit_depth_minus8は、両端を含めて0から8の範囲内とされ、
pps_cb_qp_offset及びpps_cr_qp_offsetは、それぞれ、Qp’Cb及びQp’Crを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し、
pps_joint_cbcr_qp_offset_valueは、Qp’CbCrを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し、
slice_cr_qp_offsetは、Qp’Cr量子化パラメータの値を決定するときにpps_cr_qp_offsetの値に加算される差分を規定し、
slice_cb_qp_offsetは、Qp’Cb量子化パラメータの値を決定するときにpps_cb_qp_offsetの値に加算される差分を規定し、
slice_joint_cbcr_qp_offsetは、Qp’CbCrの値を決定するときにpps_joint_cbcr_qp_offset_valueに加算される差分を規定し、
変数CuQpOffsetCb、CuQpOffsetCr、及びCuQpOffsetCbCrは、前記デコーダ用のQp’Cb、Qp’Cr、及びQp’CbCr量子化パラメータのそれぞれの値を決定するときに使用される値を規定する。
【0010】
上述の方法において、前記クロマQPマッピングテーブルは、前記デコーダによってサポートされる許容QPi範囲内のQPiに対応し得る集合Xの各要素xを、又は前記集合Xの何らかの部分集合を、前記デコーダによってサポートされる許容QPc範囲内のQPcに対応し得る集合Yの1つの要素yに関連付け得る。
【0011】
上述の方法において、前記クロマQPマッピングテーブルの値はマッピング関数を満たし得る。
【0012】
上述の方法において、前記マッピング関数は、区分マッピング関数であることができ、該区分マッピング関数の情報が、該区分マッピング関数の区切り点、変化点、又はピボット点を有し得る。
【0013】
上述の方法において、区切り点、変化点、若しくはピボット点の数、及びそのそれぞれのx座標及びy座標が、直接、又は現在のピボット点の座標と先行するピボット点の座標との間のデルタ値に基づいて、のいずれかで、前記ビットストリーム内でシグナリングされ得る。
【0014】
従って、シグナリングオーバーヘッドを更に減少させるために、現在のピボット点の対応するx及びy座標と先行するピボット点の対応するx及びy座標との間の差が、ビットストリーム内でシグナリングされ得る。特に、最初のポイントで、何らかのstarting_pointからの差がシグナリングされ得る。starting_pointは、何らかの予め定められた点であるか、ビットストリーム内でシグナリングされるか、のいずれかであり。一部の実装において、starting_pointは、一対一であるように制約されることができ、その場合、starting_pointを定めるのに1つの座標で十分である。
【0015】
上述の方法において、前記マッピング関数は、
線形方程式、
指数方程式、
対数方程式、又は
上記の方程式の組み合わせ、
に基づく区分関数とし得る。
【0016】
上述の方法において、前記区分関数の区分のパラメータが、
y=slope*x+b
によって与えられる線形方程式を用いて、ピボット点に基づいて取得されることができ、
slope及びbは、前記線形方程式のパラメータであり、
slope=(Ey-Dy)/(Ex-Dx)、
b=Dy-slope*Dx、
であり、ここで、D及びEは、それぞれ、座標Dx、Dy及びEx、Eyを有するピボット点である。
【0017】
上述の方法において、前記クロマQPマッピングテーブルの前記情報は、全てのクロミナンス成分に対してまとめてシグナリングされ得る。
【0018】
上述の方法において、前記クロマQPマッピングテーブルの前記情報は、前記マッピング関数がクロミナンス成分に対して、別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有し得る。
【0019】
上述の方法において、前記クロマQPマッピングテーブルの前記情報は、
シーケンスパラメータセット内でシーケンスレベルで、又は
ピクチャパラメータセット内でピクチャレベルで、又は
タイルグループパラメータセット内でタイルグループレベルで、又は
適応パラメータセット内で、又は
補足拡張情報(SEI)メッセージ内で、
シグナリングされ得る。
【0020】
上述の方法において、前記クロマQPマッピングテーブルについての情報であるクロマQPマッピング情報の構文解析は、クロマサンプリングフォーマットの仕様に依存し得る。
【0021】
上述の方法において、前記クロマサンプリングフォーマットの前記仕様は、以下の表:
【表1】
に従って与えられることができ、
chroma_format_idcは、前記クロマサンプリングフォーマットのインデックスを差し示し、
モノクロサンプリングでは、名目上ルマアレイとみなされる1つのみのサンプルアレイが存在し、
4:2:0サンプリングでは、2つのクロマアレイの各々がルマアレイの半分の高さ及び半分の幅を有し、
4:2:2サンプリングでは、2つのクロマアレイの各々がルマアレイと同じ高さ及び半分の幅を有し、
4:4:4サンプリングでは、フラグseparate_colour_plane_flagの値に応じて、以下が適用されることができ:
separate_colour_plane_flagが0に等しい場合、2つのクロマアレイの各々がルマアレイと同じ高さ及び幅を有する;
そうでなく、separate_colour_plane_flagが1に等しい場合、3つのカラープレーンが別々にモノクロサンプリングされたピクチャとして処理される;
1に等しいseparate_colour_plane_flagは、4:4:4クロマフォーマットの3つのカラー成分が別々にコーディングされることを規定し、0に等しいseparate_colour_plane_flagは、カラー成分が別々にコーディングされるのでないことを規定し、separate_colour_plane_flagが1に等しいとき、コーディングされたピクチャは3つの別々の成分で構成され、それらの各々が、1つのカラープレーン(Y、Cb、又はCr)のコーディングされたサンプルで構成され、且つモノクロコーディング構文を使用し、この場合、各カラープレーンが特定のcolour_plane_id値に関連付けられ、
separate_colour_plane_flagの値に応じて、変数ChromaArrayTypeの値が次のように割り当てられ得る:
- separate_colour_plane_flagが0に等しい場合、ChromaArrayTypeはchroma_format_idcに等しく設定される、
- そうでない(separate_colour_plane_flagが1に等しい)場合、ChromaArrayTypeは0に等しく設定される。
【0022】
従って、クロマQPマッピング情報の条件付きシグナリングは、クロマサンプリングフォーマットに依存し得る。例えば、クロマフォーマットがモノクロ(サンプリングフォーマットは4:0:0である)である場合、マッピングテーブルはシグナリングされない。別々にコーディングされたカラー成分を持つ(separate_colour_plane_flagが1に等しい)ことは、クロママッピングテーブルがシグナリングされない場合の他の一例である。これは、クロマ成分が存在しない又は別々にコーディングされるときにクロマQPマッピングテーブルのシグナリングのビットを節約することを可能にする。
【0023】
上述の方法において、フラグchroma_qp_mapping_flag及び/又はクロマQpマッピング情報の存在は、以下の表のうちの1つに規定されるクロマフォーマットサンプリングに依存することができ:
【表2】
又は
【表3】
又は
【表4】
又は
【表5】
3に等しいchroma_format_idcは、クロマサンプリングフォーマットが4:2:0であることを指し示し、
seq_parameter_set_rbsp()は、シーケンスパラメータセットローバイトシーケンスペイロードを指し示し、
chroma_format_idcは、クロマサンプリングフォーマットのインデックスを差し示し、
1に等しいchroma_qp_mapping_flagは、クロマQpマッピング関数がシグナリングされて、Qp
Cを導出するのに使用されるqPiの関数として、Qp
C(クロマQp)のデフォルト仕様に優先することを規定し、
0に等しいchroma_qp_mapping_flagは、Qp
Cを導出するのにデフォルトのクロマQpマッピングテーブルが使用しされることを規定し、chroma_qp_mapping_flagが存在しない場合、chroma_qp_mapping_flagは0に等しいと推定され、
0に等しいsps_joint_cbcr_enabled_flagは、クロマ残差のジョイントコーディングが無効にされることを規定し、1に等しいsps_joint_cbcr_enabled_flagは、クロマ残差のジョイントコーディングが有効にされることを規定し、
1に等しいsame_qp_table_for_chromaは、1つのみのクロマQPマッピングテーブルがシグナリングされ、そのテーブルが、Cb残差及びCr残差に適用され、且つsps_joint_cbcr_enabled_flagが1に等しいときには更にジョイントCb-Cr残差に適用されることを規定し、0に等しいsame_qp_table_for_chromaは、Cb及びCr用の2つ、並びにsps_joint_cbcr_enabled_flagが1に等しいときにはジョイントCb-Cr用の追加の1つ、であるクロマQPマッピングテーブルがSPS内でシグナリングされることを規定し、
1に等しいchroma_qp_table_present_flagは、ユーザが定めたクロマQPマッピングテーブルであるChromaQpTableがシグナリングされることを規定し、0に等しいchroma_qp_table_present_flagは、ユーザが定めたクロマQPマッピングテーブルがシグナリングされずに、予め定められたクロマQPマッピングテーブルが使用されることを規定し、
cqp_mapping_data()は、前記クロマQpマッピング情報を指し示す、
請求項12又は13に記載の方法。
【0024】
上述の方法において、前記マッピング関数は単調増加関数とし得る。
【0025】
従って、これは、マッピング関数を単調増加(非減少)関数であるように制約する。
【0026】
上述の方法において、前記マッピング関数のピボット点が、符号なし整数コードを用いてデルタ値に基づいて前記ビットストリーム内でシグナリングされ得る。
【0027】
従って、単調増加関数は、ピボット点のdx及びdf(x)をコーディングするのに符号なしue(v)コードを用いることによって達成され得る。
【0028】
上述の方法において、符号なし整数コードは、符号なし整数0次Exp-Golombコードである。
【0029】
上述の方法において、前記マッピング関数の前記情報は、第1の値a0とstarting_point_valueとの間の差(delta_a0)を有することができ、部分集合Aのうちの前記第1の値a0が、前記差(delta_a0)に基づいて、
a0=starting_point_value+delta_a0
のように取得され、starting_point_valueは、前記ビットストリーム内でシグナリングされるか又は予め定められた値であるかのいずれかである。
【0030】
マッピング関数の点が、2つのクラスの定められた挙動に分類され、マッピング関数が増加しない点の数が制限されるので、シグナリングオーバーヘッドが、マッピング関数の各値の直接的なシグナリングと比較して減少される。
【0031】
上述の方法において、開始点の値starting_point_valueは、0、21、30、maxQPi>>1のうちの1つとすることができ、maxQPiは、前記デコーダによってサポートされる最大QPi値である。
【0032】
上述の方法において、第1のピボット点が、
qpInVal[i][0]=qp_table_start_minus26[i]+26、
qpOutVal[i][0]=qpInVal[i][0]、
によって与えられることができ、
qp_table_start_minus26[i]+26は、i番目のクロマQPマッピングテーブルを記述するのに使用される開始ルマ及びクロマQPを規定する。
【0033】
上述の方法において、
i=0..numQpTables-1について、i番目のクロマQPマッピングテーブルChromaQpTable[i]は、次のように導出され得る:
qpInVal[i][0]=qp_table_start_minus26[i]+26
qpOutVal[i][0]=qpInVal[i][0]
for(j=0;j<=num_points_in_qp_table_minus1[i];j++){
qpInVal[i][j+1]=qpInVal[i][j]+delta_qp_in_val_minus1[i][j]+1
qpOutVal[i][j+1]=qpOutVal[i][j]+(delta_qp_in_val_minus1[i][j]^delta_qp_diff_val[i][j])
}
ChromaQpTable[i][qpInVal[i][0]]=qpOutVal[i][0]
for(k=qpInVal[i][0]-1;k>=-QpBdOffset;k--)
ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k+1]-1)
for(j=0;j<=num_points_in_qp_table_minus1[i];j++){
sh=(delta_qp_in_val_minus1[i][j]+1)>>1
for(k=qpInVal[i][j]+1,m=1;k<=qpInval[i][j+1];k++,m++)
ChromaQpTable[i][k]=ChromaQpTable[i][qpInVal[i][j]]+((qpOutVal[i][j+1]-qpOutVal[i][j])*m+sh)/(delta_qp_in_val_minus1[i][j]+1)
}
for(k=qpInVal[i][num_points_in_qp_table_minus1[i]+1]+1;k<=63;k++)
ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k--1]+1)。
【0034】
上述の方法は、予め定められたクロマQPマッピングテーブルを更に有し、前記ビットストリームは、前記予め定められたクロマQPマッピングテーブルを使用するか、それとも前記ビットストリーム内でシグナリングされるクロマQPマッピングテーブルを使用するか、を指し示すインジケータを有し得る。
【0035】
上述の方法において、前記予め定められたクロマQPマッピングテーブルは、
【表6】
として表され得る。
【0036】
上述の方法において、前記予め定められたクロマQPマッピングテーブルは、
【表7】
として表され得る。
【0037】
上述の方法において、前記クロマQPマッピングテーブルの前記情報は直接的又は間接的に前記ビットストリーム内でシグナリングされ得る。
【0038】
本開示は更に、上述の方法を実行する処理回路を有するデコーダを提供する。
【0039】
本開示は更に、上述の方法を実行するためのプログラムコードを有するコンピュータプログラムプロダクトを提供する。
【0040】
本開示は更に、デコーダを提供し、当該デコーダは、1つ以上のプロセッサと、前記プロセッサに結合され、前記プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体とを有し、前記プログラミングは、前記プロセッサによって実行されるときに、上述の方法を実行するように当該デコーダを構成する。
【0041】
本開示は更に、クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得するデコーダを提供し、当該デコーダは、ビットストリームを受信するように構成された受信ユニットと、前記ビットストリームを構文解析して、前記ルミナンスQPと、QPインデックス(QPi)を前記クロミナンスQP(QPc)に関連付けるクロマQPマッピングテーブルについての情報と、を取得するように構成された構文解析ユニットと、前記ルミナンスQPに少なくとも部分的に基づいて前記QPiを取得するように構成された第1取得ユニットと、取得した前記情報に基づいて前記クロマQPマッピングテーブルを取得するように構成された第2取得ユニットと、取得した前記クロマQPマッピングテーブルと、取得した前記QPiとに基づいて、QPcを取得するように構成された第3取得ユニットと、取得した前記QPcに基づいてクロミナンス量子化パラメータを取得するように構成された第4取得ユニットとを有する。
【0042】
クロマQPマッピングテーブルについての情報をビットストリーム内に有することは、例えばSDR若しくはHDRなどの入力映像信号の特定の特性又はルミナンス及びクロミナンスチャネル上の異なる強度及び分布への調整を可能にし、それ故に、圧縮効率を向上させるとともに、再構成映像信号におけるクロマ成分とルマ成分との間のバランスを向上させる。
【0043】
上述のデコーダにおいて、
qPCb、qPCr及びqPCbCrが、
qPChroma=Clip3(-QpBdOffset,63,QpY)、
qPCb=ChromaQpTable[0][qPChroma]、
qPCr=ChromaQpTable[1][qPChroma]、
qPCbCr=ChromaQpTable[2][qPChroma]、
として導出されることができ、
Cb成分及びCr成分用のクロマ量子化パラメータQp’Cb及びQp’Cr、並びにジョイントCb-CrコーディングQp’CbCrが、
Qp’Cb=Clip3(-QpBdOffset,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffset、
Qp’Cr=Clip3(-QpBdOffset,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffset、
Qp’CbCr=Clip3(-QpBdOffset,63,qPCbCr+pps_joint_cbcr_qp_offset_value+slice_joint_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffset、
として導出され、
ChromaQpTableは、前記クロマQPマッピングテーブルであり、
QPiは、qPChromaに対応し、
QPcは、qPCb、qPCr及びqPCbCrに対応し、
QpBdOffsetは、式:
QpBdOffset=6*bit_depth_minus8
を用いてルマアレイ及びクロマアレイのサンプルのビット深度に基づいて計算されるビット深度オフセットであり、
bit_depth_minus8は、両端を含めて0から8の範囲内とされ、
pps_cb_qp_offset及びpps_cr_qp_offsetは、それぞれ、Qp’Cb及びQp’Crを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し、
pps_joint_cbcr_qp_offset_valueは、Qp’CbCrを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し、
slice_cr_qp_offsetは、Qp’Cr量子化パラメータの値を決定するときにpps_cr_qp_offsetの値に加算される差分を規定し、
slice_cb_qp_offsetは、Qp’Cb量子化パラメータの値を決定するときにpps_cb_qp_offsetの値に加算される差分を規定し、
slice_joint_cbcr_qp_offsetは、Qp’CbCrの値を決定するときにpps_joint_cbcr_qp_offset_valueに加算される差分を規定し、
変数CuQpOffsetCb、CuQpOffsetCr、及びCuQpOffsetCbCrは、前記デコーダ用のQp’Cb、Qp’Cr、及びQp’CbCr量子化パラメータのそれぞれの値を決定するときに使用される値を規定する。
【0044】
上述のデコーダにおいて、前記クロマQPマッピングテーブルは、前記デコーダによってサポートされる許容QPi範囲内のQPiに対応し得る集合Xの各要素xを、又は前記集合Xの何らかの部分集合を、前記デコーダによってサポートされる許容QPc範囲内のQPcに対応し得る集合Yの1つの要素yに関連付け得る。
【0045】
上述のデコーダにおいて、前記クロマQPマッピングテーブルの値はマッピング関数を満たし得る。
【0046】
上述のデコーダにおいて、前記マッピング関数は、区分マッピング関数とすることができ、該区分マッピング関数の情報が、該区分マッピング関数の区切り点、変化点、又はピボット点を有し得る。
【0047】
この態様は、関数がその挙動(例えば、線の傾き)を変化させる点のみをシグナリングすることによって、デコーダによってサポートされるQPの完全な範囲の関数挙動を限られたシグナリングオーバーヘッドで記述することを可能にし、そして、変化点又はピボット点の間の区分関数として関数を記述することを可能にする。
【0048】
上述のデコーダにおいて、区切り点、変化点、若しくはピボット点の数、及びそのそれぞれのx座標及びy座標が、直接、又は現在のピボット点の座標と先行するピボット点の座標との間のデルタ値に基づいて、のいずれかで、前記ビットストリーム内でシグナリングされ得る。
【0049】
上述のデコーダにおいて、前記マッピング関数は、
線形方程式、
指数方程式、
対数方程式、又は
上記の方程式の組み合わせ、
に基づく区分関数とし得る。
【0050】
予め定められた方程式フォーム(例えば、線形方程式)を区分関数に使用することは、明示的なシグナリングなしにピボット点間の関数値を得ることを可能にし、これは有益なことに、マッピング関数を記述することのシグナリングオーバーヘッドを減少させる。
【0051】
上述のデコーダにおいて、前記区分関数の区分のパラメータが、
y=slope*x+b
によって与えられる線形方程式を用いて、ピボット点に基づいて取得されることができ、
slope及びbは、前記線形方程式のパラメータであり、
slope=(Ey-Dy)/(Ex-Dx)、
b=Dy-slope*Dx、
であり、ここで、D及びEは、それぞれ、座標Dx、Dy及びEx、Eyを有するピボット点である。
【0052】
上述のデコーダにおいて、前記クロマQPマッピングテーブルの前記情報は、全てのクロミナンス成分に対してまとめてシグナリングされ得る。
【0053】
上述のデコーダにおいて、前記クロマQPマッピングテーブルの前記情報は、前記クロマQPマッピングテーブルがクロミナンス成分に対して、別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有し得る。
【0054】
この態様は、異なるクロマチャネル(例えば、Cb及びCrチャネル)が異なる信号特性を持つ場合に、異なるクロマチャネルに対して異なるクロマQPマッピングテーブルを有することによって、量子化プロセスを制御することの柔軟性を更に増加させることを可能にし、そしてそれが、圧縮効率を更に高めることを可能にする。
【0055】
上述のデコーダにおいて、前記クロマQPマッピングテーブルの前記情報は、
シーケンスパラメータセット内でシーケンスレベルで、又は
ピクチャパラメータセット内でピクチャレベルで、又は
タイルグループパラメータセット内でタイルグループレベルで、又は
適応パラメータセット内で、又は
補足拡張情報(SEI)メッセージ内で、
シグナリングされ得る。
【0056】
上述のデコーダにおいて、前記クロマQPマッピングテーブルについての情報であるクロマQPマッピング情報の構文解析は、クロマサンプリングフォーマットの仕様に依存し得る。
【0057】
上述のデコーダにおいて、前記クロマサンプリングフォーマットの前記仕様は、以下の表:
【表8】
に従って与えられることができ、
chroma_format_idcは、前記クロマサンプリングフォーマットのインデックスを差し示し、
モノクロサンプリングでは、名目上ルマアレイとみなされる1つのみのサンプルアレイが存在し、
4:2:0サンプリングでは、2つのクロマアレイの各々がルマアレイの半分の高さ及び半分の幅を有し、
4:2:2サンプリングでは、2つのクロマアレイの各々がルマアレイと同じ高さ及び半分の幅を有し、
4:4:4サンプリングでは、フラグseparate_colour_plane_flagの値に応じて、以下が適用されることができ:
separate_colour_plane_flagが0に等しい場合、2つのクロマアレイの各々がルマアレイと同じ高さ及び幅を有する;
そうでなく、separate_colour_plane_flagが1に等しい場合、3つのカラープレーンが別々にモノクロサンプリングされたピクチャとして処理される;
1に等しいseparate_colour_plane_flagは、4:4:4クロマフォーマットの3つのカラー成分が別々にコーディングされることを規定し、0に等しいseparate_colour_plane_flagは、カラー成分が別々にコーディングされるのでないことを規定し、separate_colour_plane_flagが1に等しいとき、コーディングされたピクチャは3つの別々の成分で構成され、それらの各々が、1つのカラープレーン(Y、Cb、又はCr)のコーディングされたサンプルで構成され、且つモノクロコーディング構文を使用し、この場合、各カラープレーンが特定のcolour_plane_id値に関連付けられ、
separate_colour_plane_flagの値に応じて、変数ChromaArrayTypeの値が次のように割り当てられる:
- separate_colour_plane_flagが0に等しい場合、ChromaArrayTypeはchroma_format_idcに等しく設定される、
- そうでない(separate_colour_plane_flagが1に等しい)場合、ChromaArrayTypeは0に等しく設定される。
【0058】
クロマサンプリングフォーマットに依存したクロマQPマッピング情報の条件付きシグナリングは、シグナリングオーバーヘッドを更に減少させる。例えば、クロマフォーマットがモノクロ(サンプリングフォーマットは4:0:0である)である場合、マッピングテーブルはシグナリングされない。別々にコーディングされたカラー成分を持つ(separate_colour_plane_flagが1に等しい)ことは、クロママッピングテーブルがシグナリングされない場合の他の一例である。これは、クロマ成分が存在しない又は別々にコーディングされるときにクロマQPマッピングテーブルのシグナリングのビットを節約することを可能にする。
【0059】
上述のデコーダにおいて、フラグchroma_qp_mapping_flag及び/又はクロマQpマッピング情報の存在は、以下の表のうちの1つに規定されるクロマフォーマットサンプリングに依存することができ:
【表9】
又は
【表10】
又は
【表11】
又は
【表12】
3に等しいchroma_format_idcは、クロマサンプリングフォーマットが4:2:0であることを指し示し、
seq_parameter_set_rbsp()は、シーケンスパラメータセットローバイトシーケンスペイロードを指し示し、
chroma_format_idcは、クロマサンプリングフォーマットのインデックスを差し示し、
1に等しいchroma_qp_mapping_flagは、クロマQpマッピング関数がシグナリングされて、Qp
Cを導出するのに使用されるqPiの関数として、Qp
C(クロマQp)のデフォルト仕様に優先することを規定し、
0に等しいchroma_qp_mapping_flagは、Qp
Cを導出するのにデフォルトのクロマQpマッピングテーブルが使用しされることを規定し、chroma_qp_mapping_flagが存在しない場合、chroma_qp_mapping_flagは0に等しいと推定され、
0に等しいsps_joint_cbcr_enabled_flagは、クロマ残差のジョイントコーディングが無効にされることを規定し、1に等しいsps_joint_cbcr_enabled_flagは、クロマ残差のジョイントコーディングが有効にされることを規定し、
1に等しいsame_qp_table_for_chromaは、1つのみのクロマQPマッピングテーブルがシグナリングされ、そのテーブルが、Cb残差及びCr残差に適用され、且つsps_joint_cbcr_enabled_flagが1に等しいときには更にジョイントCb-Cr残差に適用されることを規定し、0に等しいsame_qp_table_for_chromaは、Cb及びCr用の2つ、並びにsps_joint_cbcr_enabled_flagが1に等しいときにはジョイントCb-Cr用の追加の1つ、であるクロマQPマッピングテーブルがSPS内でシグナリングされることを規定し、
1に等しいchroma_qp_table_present_flagは、ユーザが定めたクロマQPマッピングテーブルであるChromaQpTableがシグナリングされることを規定し、0に等しいchroma_qp_table_present_flagは、ユーザが定めたクロマQPマッピングテーブルがシグナリングされずに、予め定められたクロマQPマッピングテーブルが使用されることを規定し、
cqp_mapping_data()は、前記クロマQpマッピング情報を指し示す。
【0060】
上述のデコーダにおいて、前記マッピング関数は単調増加関数とし得る。
【0061】
この制約をマッピング関数に課すことは、ルマQPの増加に伴ってクロマQPが減少するときの、例えば予期せぬ望ましくない、“奇妙な”挙動を有するマッピング関数の設定を回避することを可能にし、換言すれば、ルマの品質低下に伴ってクロマ品質が上昇するケースを回避することを可能にする。単調増加制約があることは、ルマ及びクロマの品質が同期されることを可能にする。更なる利点として、この制約は、関数の負の増分を記述する必要を排除することによって、マッピング関数情報のシグナリングのビットを節約することを可能にする。
【0062】
上述のデコーダにおいて、前記マッピング関数のピボット点が、符号なし整数コードを用いてデルタ値に基づいて前記ビットストリーム内でシグナリングされ得る。
【0063】
直接的な値の代わりに差分をシグナリングすることは、ビットを更に節約することを可能にする。マッピング関数に単調増加制約があることは、デルタ値が常に負でないことを保証し、これは更に、符号なし整数コードを使用することにより、ピボット点デルタについての符号ビットをシグナリングする必要を排除することによってビットを節約することを可能にする。
【0064】
上述のデコーダにおいて、符号なし整数コードは、符号なし整数0次Exp-Golombコードとし得る。
【0065】
上述のデコーダにおいて、前記マッピング関数の前記情報は、第1の値a0とstarting_point_valueとの間の差(delta_a0)をすることができ、部分集合Aのうちの前記第1の値a0が、前記差(delta_a0)に基づいて、
a0=starting_point_value+delta_a0
のように取得され、starting_point_valueは、前記ビットストリーム内でシグナリングされるか又は予め定められた値であるかのいずれかである。
【0066】
上述のデコーダにおいて、開始点の値starting_point_valueは、0、21、30、maxQPi>>1のうちの1つとすることができ、maxQPiは、前記デコーダによってサポートされる最大QPi値である。適切なstarting_point_valueを選択することは、最初の値のシグナリングのビットを更に節約することを可能にする。
【0067】
上述のデコーダにおいて、第1のピボット点が、
qpInVal[i][0]=qp_table_start_minus26[i]+26、
qpOutVal[i][0]=qpInVal[i][0]、
によって与えられることができ、
qp_table_start_minus26[i]+26は、i番目のクロマQPマッピングテーブルを記述するのに使用される開始ルマ及びクロマQPを規定する。
【0068】
上述のデコーダにおいて、i=0..numQpTables-1について、i番目のクロマQPマッピングテーブルChromaQpTable[i]は、次のように導出され得る:
qpInVal[i][0]=qp_table_start_minus26[i]+26
qpOutVal[i][0]=qpInVal[i][0]
for(j=0;j<=num_points_in_qp_table_minus1[i];j++){
qpInVal[i][j+1]=qpInVal[i][j]+delta_qp_in_val_minus1[i][j]+1
qpOutVal[i][j+1]=qpOutVal[i][j]+(delta_qp_in_val_minus1[i][j]^delta_qp_diff_val[i][j])
}
ChromaQpTable[i][qpInVal[i][0]]=qpOutVal[i][0]
for(k=qpInVal[i][0]-1;k>=-QpBdOffset;k--)
ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k+1]-1)
for(j=0;j<=num_points_in_qp_table_minus1[i];j++){
sh=(delta_qp_in_val_minus1[i][j]+1)>>1
for(k=qpInVal[i][j]+1,m=1;k<=qpInval[i][j+1];k++,m++)
ChromaQpTable[i][k]=ChromaQpTable[i][qpInVal[i][j]]+((qpOutVal[i][j+1]-qpOutVal[i][j])*m+sh)/(delta_qp_in_val_minus1[i][j]+1)
}
for(k=qpInVal[i][num_points_in_qp_table_minus1[i]+1]+1;k<=63;k++)
ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k--1]+1)。
【0069】
上述のデコーダは更に、予め定められたクロマQPマッピングテーブルを有することができ、前記ビットストリームは、前記予め定められたクロマQPマッピングテーブルを使用するか、それとも前記ビットストリーム内でシグナリングされるクロマQPマッピングテーブルを使用するか、を指し示すインジケータを有し得る。
【0070】
これは、マッピングテーブルについての情報を、それが有益である場合にのみ、すなわち、ルマ及びクロマチャネルの特性が、HDR信号の場合のように、一般的なケースとは著しく異なる場合にのみ、シグナリングすることを可能にし、一般的なケースに適したものである予め定められたマッピングテーブルを使用することを可能にする。これは、予め定められたマッピングテーブルが最適化されているものである大抵の一般的なケースでシグナリングオーバーヘッドを節約することを可能にする。
【0071】
上述のデコーダにおいて、前記予め定められたクロマQPマッピングテーブルは、
【表13】
として表され得る。
【0072】
上述のデコーダにおいて、前記予め定められたクロマQPマッピングテーブルは、
【表14】
として表され得る。
【0073】
上述のデコーダにおいて、前記クロマQPマッピングテーブルの前記情報は直接的又は間接的に前記ビットストリーム内でシグナリングされ得る。
【0074】
発明の第1の態様に従った方法は、発明の第3の態様に従った装置によって実行されることができる。発明の第3の態様に従った装置の更なる特徴及び実装形態は、発明の第1の態様に従った方法の特徴及び実装形態に対応する。
【0075】
発明の第2の態様に従った方法は、発明の第4の態様に従った装置によって実行されることができる。発明の第4の態様に従った装置の更なる特徴及び実装形態は、発明の第2の態様に従った方法の特徴及び実装形態に対応する。
【0076】
第5の態様によれば、発明は、プロセッサ及びメモリを含んだ、映像ストリームを復号する装置に関する。メモリは、プロセッサに第1の態様に従った方法を実行させる命令を格納している。
【0077】
第6の態様によれば、発明は、プロセッサ及びメモリを含んだ、映像ストリームを符号化する装置に関する。メモリは、プロセッサに第2の態様に従った方法を実行させる命令を格納している。
【0078】
第7の態様によれば、実行されるときに1つ以上のプロセッサに映像データを符号化するように構成させる命令を格納したコンピュータ読み取り可能記憶媒体が提案される。命令は、1つ以上のプロセッサに、第1の態様若しくは第2の態様に従った方法又は第1の態様若しくは第2の態様の任意の取り得る実施形態に従った方法を実行させる。
【0079】
第8の態様によれば、発明は、コンピュータ上で実行されるときに第1の態様若しくは第2の態様に従った方法又は第1の態様若しくは第2の態様の任意の取り得る実施形態に従った方法を実行するためのプログラムコードを有するコンピュータプログラムに関する。
【0080】
1つ以上の実施形態の詳細が、添付の図面及び以下の説明に記載される。他の特徴、目的、及び利点が、明細書、図面、及び特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0081】
以下、添付の図及び図面を参照して、出願の実施形態をより詳細に説明する。
【
図1A】発明の実施形態を実装するように構成された映像コーディングシステムの一例を示すブロック図である。
【
図1B】発明の実施形態を実装するように構成された映像コーディングシステムの他の一例を示すブロック図である。
【
図2】発明の実施形態を実装するように構成されたビデオエンコーダの一例を示すブロック図である。
【
図3】発明の実施形態を実装するように構成されたビデオデコーダの一構成例を示すブロック図である。
【
図4】符号化装置又は復号装置の一例を示すブロック図である。
【
図5】符号化装置又は復号装置の他の一例を示すブロック図である。
【
図6】[2]に従った、HEVC(黒色、61)及びH.264|AVC(灰色、62)についての、量子化パラメータインデックスQP
iのクロマ量子化パラメータQP
cへのマッピング関数を概略的に表した図である。
【
図7】サポートされるQP範囲についての、量子化パラメータインデックスQP
iのクロマ量子化パラメータQP
cへのHEVCマッピング関数を概略的に表した図であり、72はHEVCマッピング関数であり、71は一対一マッピング関数である。
【
図8】HEVC(82)及び修正マッピング関数(83)について、量子化パラメータインデックスQP
iのクロマ量子化パラメータQP
cへの関数をテーブル表示した図であり、テーブル81は、単調増加の一対一関数を表し、テーブル84、85、86は、対応した、一対一関数(81)、HEVCマッピング関数(82)及び修正マッピング関数(83)の、現在値と先行値との間の差を表し、87は、差がゼロである例示的な点を表している。
【
図9】二つのピボット点D(94)及びE(95)を用いたマッピング関数92の区分線形表現93の一例である。
【
図10】サポートされるQP範囲についての、量子化パラメータインデックスQP
iのクロマ量子化パラメータQP
cへのHEVCマッピング関数を概略的に表した図であり、102は、1に等しいクロマQpオフセットでのHEVCマッピング関数であり、101は一対一マッピング関数である。
【
図11】VVCクロマQpマッピングテーブルを実際にqPiの関数として示してみたものである。
【
図12】本開示に従った調整マッピング関数を示している。
【
図13】本開示に従ったクロミナンス量子化パラメータを取得する方法を示している。
【0082】
以下において、明示的に別段の定めがない限り、同じ参照符号は、同じ機構又は少なくとも機能的に等価な機構を指す。
【発明を実施するための形態】
【0083】
以下の説明では、開示の一部を形成するものであるとともに、発明の実施形態の特定の態様又は本発明の実施形態が使用され得る特定の態様を例示によって示すものである添付図面を参照する。理解されることには、発明の実施形態は、他の態様で使用されることができ、また、図に示されない構造的又は論理的な変更を含むことができる。従って、以下の詳細な説明は、限定的な意味で解釈されるべきでなく、本発明の範囲は、添付の特許請求の範囲によって定められる。
【0084】
例えば、理解されることには、記載される方法に関する開示は、その方法を実行するように構成される対応する装置又はシステムにも当てはまり得るものであり、その逆もまた然りである。例えば、1つ又は複数の特定の方法ステップが記載される場合、対応する装置は、たとえそのような1つ又は複数のユニットが明示的に記載されたり図に示されたりしていなくても、記載された1つ又は複数の方法ステップを実行するための例えば機能ユニットといった1つ又は複数のユニット(例えば、該1つ又は複数のステップを実行する1つのユニット、又は各々がそれら複数のステップのうちの1つ以上を実行する複数のユニット)を含み得る。その一方で、例えば、特定の装置が、例えば機能ユニットといった1つ又は複数のユニットに基づいて記載される場合、対応する方法は、たとえそのような1つ又は複数のステップが明示的に記載されたり図に示されたりしていなくても、該1つ又は複数のユニットの機能を実行するためのステップ(例えば、該1つ又は複数のユニットの機能を実行する1つのステップ、又は各々がそれら複数のユニットのうちの1つ以上の機能を実行する複数のステップ)を含み得る。さらに、理解されることには、ここに記載される様々な例示的な実施形態及び/又は態様の特徴は、具体的に別段の断りがない限り、互いに組み合わされてもよい。
【0085】
映像コーディングは、典型的に、映像又は映像シーケンスを形成するものである一連のピクチャの処理を指す。“ピクチャ”という用語の代わりに、“フレーム”又は“画像”という用語が、映像コーディングの分野における同義語として使用されることがある。映像コーディング(又は、一般に、コーディング)は、映像符号化及び映像復号という2つの部分を有する。映像符号化は、ソース側で実行され、典型的に、(より効率的な保管及び/又は伝送のために)映像ピクチャを表現するのに必要なデータ量を削減するように、元の映像ピクチャを(例えば圧縮によって)処理することを有する。映像復号は、デスティネーション側で実行され、典型的に、映像ピクチャを再構成するためにエンコーダに対して逆の処理を有する。映像ピクチャ(又は、一般に、ピクチャ)の“コーディング”を参照する実施形態は、映像ピクチャ又はそれぞれの映像シーケンスの“符号化”又は“復号”に関係するように理解されるものとする。符号化部分と復号部分との組み合わせは、CODEC(Coding and Decoding)とも呼ばれている。
【0086】
可逆映像コーディングの場合、元の映像ピクチャを再構成することができ、すなわち、再構成された映像ピクチャは、(保管又は伝送の間に伝送損失又は他のデータ損失がないと仮定して)元の映像ピクチャと同じ品質を有する。非可逆映像コーディングの場合には、映像ピクチャを表現するデータの量を減らすために、例えば量子化によって、更なる圧縮が行われ、デコーダで映像ピクチャを完全に再構成することはできず、すなわち、再構成された映像ピクチャの品質が、元の映像ピクチャの品質と比較して低い又は悪いものとなる。
【0087】
幾つかの映像コーディング標準は、“非可逆ハイブリッド映像コーデック”のグループに属する(すなわち、サンプルドメインにおける空間及び時間予測と、変換ドメインにおいて量子化を適用する2D変換コーディングとを組み合わせる)。映像シーケンスの各ピクチャは典型的に一組の重なり合わないブロックに分割され、コーディングは典型的にブロックレベルで実行される。換言すれば、エンコーダで、映像は典型的にブロック(映像ブロック)レベルで、例えば、空間(イントラピクチャ)予測及び/又は時間(インターピクチャ)予測を用いて予測ブロックを生成し、予測ブロックを現在ブロック(現在処理されている/処理対象のブロック)から減算して残差ブロックを取得し、残差ブロックを変換し且つ変換ドメインで残差ブロックを量子化して、伝送されるデータの量を削減すること(圧縮)によって、処理すなわち符号化され、一方、デコーダでは、表現用に現在ブロックを再構成するために、符号化又は圧縮されたブロックに、エンコーダに対して逆の処理が適用される。さらに、エンコーダはデコーダ処理ループを複製しており、それにより、後続ブロックを処理すなわちコーディングするために両者が同じ予測(例えば、イントラ予測及びインター予測)及び/又は再構成を生成することになる。
【0088】
映像コーディングシステム10の以下の実施形態にて、ビデオエンコーダ20及びビデオデコーダ30を
図1-
図3に基づいて説明する。
【0089】
図1Aは、本出願の技術を利用し得るコーディングシステム10の一例、例えば映像コーディングシステム10(又は略してコーディングシステム10)、を示す概略ブロック図である。映像コーディングシステム10のビデオエンコーダ20(又は略してエンコーダ20)及びビデオデコーダ30(又は略してデコーダ30)は、本出願に記載される様々な例に従った技術を実行するように構成され得る装置の例を表す。
【0090】
図1Aに示すように、コーディングシステム10は、符号化ピクチャデータ21を、例えば符号化ピクチャデータ13を復号するデスティネーション装置14に、提供するように構成されたソース装置12を有している。
【0091】
ソース装置12は、エンコーダ20を有しており、付加的に、すなわち、オプションで、ピクチャ源16、例えばピクチャプリプロセッサ18といったプリプロセッサ(又は前処理ユニット)18、及び通信インタフェース若しくは通信ユニット22を有してもよい。
【0092】
ピクチャ源16は、例えば実世界ピクチャをキャプチャするためのカメラといった任意の種類のピクチャキャプチャ装置、及び/又は、例えばコンピュータアニメーションピクチャを生成するためのコンピュータグラフィックスプロセッサといった任意の種類のピクチャ生成装置、又は、実世界ピクチャ、コンピュータ生成ピクチャ(例えば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)及び/又はそれらの任意の組み合わせ(例えば、拡張現実(AR)ピクチャ)を取得及び/又は提供するための任意の種類の他の装置を有することができ、あるいはそれであることができる。ピクチャ源は、上述のピクチャのうちのいずれかを格納する任意の種類のメモリ又はストレージとし得る。
【0093】
プリプロセッサ18、及び前処理ユニット18によって実行される処理とは区別して、ピクチャ又はピクチャデータ17をロー(raw)ピクチャ又はローピクチャデータ17としても参照され得る。
【0094】
プリプロセッサ18は、(ロー)ピクチャデータ17を受け取り、ピクチャデータ17上で前処理を行って、前処理済みピクチャ19又は前処理済みピクチャデータ19を得るように構成される。プリプロセッサ18によって実行される前処理は、例えば、トリミング、カラーフォーマット変換(例えば、RGBからYCbCrへ)、カラー補正、又はノイズ除去を有し得る。理解され得ることには、前処理ユニット18はオプションコンポーネントとし得る。
【0095】
ビデオエンコーダ20は、前処理済みピクチャデータ19を受け取り、符号化ピクチャデータ21を提供するように構成される(更なる詳細については、例えば
図2に基づいて後述する)。ソース装置12の通信インタフェース22は、符号化ピクチャデータ21を受け取り、符号化ピクチャデータ21(又はその更に処理した任意のバージョン)を、保管又は直接的な再構成のために、通信チャネル13上で、例えばデスティネーション装置14又は任意の他の装置といった他の装置に送信するように構成され得る。
【0096】
デスティネーション装置14は、デコーダ30(例えば、ビデオデコーダ30)を有しており、付加的に、すなわち、オプションで、通信インタフェース若しくは通信ユニット28、ポストプロセッサ32(又は後処理ユニット32)、及び表示装置34を有してもよい。
【0097】
デスティネーション装置14の通信インタフェース28は、符号化ピクチャデータ21(又はその更に処理した任意のバージョン)を、例えば、ソース装置12から直接的に、あるいは例えば符号化ピクチャデータストレージ装置などのストレージ装置といった任意の他のソースから、受信して、符号化ピクチャデータ21をデコーダ30に提供するように構成される。
【0098】
通信インタフェース22及び通信インタフェース28は、ソース装置12とデスティネーション装置14との間の、例えば直接的な有線若しくは無線接続といった直接的な通信リンクを介して、あるいは、例えば、有線若しくは無線ネットワーク又はこれらの任意の組み合わせ、又は任意の種類の私的及び公的ネットワーク、又はこれらの任意の種類の組み合わせといった任意の種類のネットワークを介して、符号化ピクチャデータ21又は符号化データ13を送信又は受信するように構成され得る。
【0099】
通信インタフェース22は、例えば、符号化ピクチャデータ21を例えばパケットといった適切なフォーマットにパッケージ化し、且つ/或いは任意の種類の伝送符号化又は通信リンク若しくは通信ネットワーク上での伝送のための処理を用いて符号化ピクチャデータを処理するように構成され得る。
【0100】
通信インタフェース28は、通信インタフェース22に対応する物を形成し、例えば、伝送されたデータを受信し、任意の種類の対応する伝送復号若しくは処理及び/又は脱パッケージ化を用いて伝送データを処理して、符号化ピクチャデータ21を得るように構成され得る。
【0101】
通信インタフェース22及び通信インタフェース28はどちらも、ソース装置12からデスティネーション装置14を指す
図1Aの通信チャネル13の矢印によって示される単方向通信インタフェースとして構成されてもよいし、あるいは双方向通信インタフェースとして構成されてもよく、例えば、通信リンク及び/又は例えば符号化ピクチャデータ伝送といったデータ伝送に関係する他の情報を受信確認及び交換するために接続をセットアップするためなどで、メッセージを送受信するように構成され得る。
【0102】
デコーダ30は、符号化ピクチャデータ21を受け取り、復号ピクチャデータ31又は復号ピクチャ31を提供するように構成される(更なる詳細については、例えば
図3又は
図5に基づいて後述する)。
【0103】
デスティネーション装置14のポストプロセッサ32は、例えば復号ピクチャ31といった復号ピクチャデータ31(再構成された映像データとも呼ばれる)を後処理して、例えば後処理済みピクチャ33といった後処理済みのピクチャデータ33を得るように構成される。後処理ユニット32によって実行される後処理は、例えば、カラーフォーマット変換(例えば、YCbCrからRGBへ)、カラー補正、トリミング、若しくは再サンプリング、又は、例えば表示装置34による表示のために復号ピクチャデータ31を準備するためなどの任意の他の処理を有し得る。
【0104】
デスティネーション装置14の表示装置34は、ピクチャを例えばユーザ又はビューアに表示するために、後処理済みピクチャデータ33を受け取るように構成される。表示装置34は、例えば一体化された又は外付けのディスプレイ又はモニタといった、再構成ピクチャを表現するための任意の種類のディスプレイである又はそれを有するとし得る。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶・オン・シリコン(LCoS)、デジタルライトプロセッサ(DLP)、又は任意の種類の他のディスプレイを有し得る。
【0105】
図1Aは、ソース装置12及びデスティネーション装置14を別々の装置として描いているが、装置の実施形態はまた、ソース装置12又は対応する機能と、デスティネーション装置14又は対応する機能との、両方又は両方の機能を有してもよい。そのような実施形態では、ソース装置12又は対応する機能と、デスティネーション装置14又は対応する機能とが、同一のハードウェア及び/又はソフトウェアを用いて、又は別々のハードウェア及び/又はソフトウェアによって、又はこれらの任意の組み合わせにて実装され得る。
【0106】
説明に基づいて当業者に明らかなになるように、
図1Aに示したようなソース装置12及び/又はデスティネーション装置14内の複数の異なるユニット又は機能の存在及び(正確な)機能分割は、実際の装置及び用途に応じて変わり得る。
【0107】
エンコーダ20(例えば、ビデオエンコーダ20)若しくはデコーダ30(例えば、ビデオデコーダ30)、又はエンコーダ20とデコーダ30との両方は、例えば、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、映像コーディング専用、又はこれらの任意の組み合わせなどの、
図1Bに示すような処理回路によって実装され得る。エンコーダ20は、
図2のエンコーダ20及び/又はここに記載されるいずれかの他のエンコーダシステム若しくはサブシステムに関して説明されるような様々なモジュールを具体化するように、処理回路46によって実装され得る。デコーダ30は、
図3のデコーダ30及び/又はここに記載されるいずれかの他のデコーダシステム若しくはサブシステムに関して説明されるような様々なモジュールを具体化するように、処理回路46によって実装され得る。処理回路は、後述する様々な演算を実行するように構成され得る。
図5に示すように、当該技術が部分的にソフトウェアで実装される場合、装置が、好適な非一時的なコンピュータ読み取り可能記憶媒体にソフトウェアの命令を格納し、それらの命令を、1つ以上のプロセッサを用いてハードウェアにて実行することで、この開示の技術を実行することができる。ビデオエンコーダ20及びビデオデコーダ30のいずれかが、例えば
図1Bに示すように、単一の装置内の結合されたエンコーダ/デコーダ(CODEC)の部分として一体化されてもよい。
【0108】
ソース装置12及びデスティネーション装置14は、例えば、ノートブック若しくはラップトップコンピュータ、携帯電話、スマートフォン、タブレット若しくはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビジョン、ディスプレイ装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング装置(例えばコンテンツサービスサーバ又はコンテンツ配信サーバなど)、放送受信器装置、放送送信器装置など、又はこれらに類するものといった、任意の種類のハンドヘルド装置又は固定装置を含め、広範囲の装置うちのいずれかを有することができ、また、オペレーティングシステムを使用しなくてもよいし、あるいは任意の種類のオペレーティングシステムを使用してもよい。一部のケースにおいて、ソース装置12及びデスティネーション装置14は無線通信向けに装備されてもよい。従って、ソース装置12及びデスティネーション装置14は無線通信装置であってもよい。
【0109】
一部のケースにおいて、
図1Aに示した映像コーディングシステム10は、単に一例に過ぎず、本出願の技術は、必ずしも符号化装置と復号装置との間で如何なるデータ通信も含まない映像コーディング設定(例えば、映像符号化又は映像復号)に適用されてもよい。他の例において、データがローカルメモリから取り出されてネットワーク上でストリーミングされるなどする。映像符号化装置が、データを符号化してメモリに格納することができ、且つ/或いは映像復号装置が、メモリからデータを取り出して復号することができる。一部の例において、符号化及び復号は、互いに通信せずに単にデータをメモリにエンコードする及び/又はメモリからデータを取り出して復号する装置によって実行される。
【0110】
説明の便宜のため、発明の実施形態は、ここでは、例えば、ハイエフィシェンシビデオコーディング(HEVC)、又はITU-Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのジョイントコラボレーションチーム・オン・ビデオコーディング(JCT-VC)によって開発された次世代映像コーディング標準であるバーサタイルビデオコーディング(VVC)のリファレンスソフトウェアを参照して説明される。当業者が理解することには、発明の実施形態はHEVC又はVVCに限定されるものではない。
【0111】
エンコーダ及び符号化方法
図2は、本出願の技術を実装するように構成されたビデオエンコーダ20の一例の概略ブロック図を示している。
図2の例において、ビデオエンコーダ20は、入力201(又は入力インタフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタユニット220、復号ピクチャバッファ(decoded picture buffer;DPB)230、モード選択ユニット260、エントロピー符号化ユニット270、及び出力272(又は出力インタフェース272)を有している。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、及び分割ユニット262を含み得る。インター予測ユニット244は、動き推定ユニット及び動き補償ユニット(図示せず)を含み得る。
図2に示すビデオエンコーダ20は、ハイブリッドビデオエンコーダ、又はハイブリッドビデオコーデックに従ったビデオエンコーダとしても参照され得る。
【0112】
残差計算ユニット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の“内蔵デコーダ”を形成するとしても参照される。
【0113】
ピクチャ&ピクチャ分割(ピクチャ&ブロック)
エンコーダ20は、例えば入力201を介して、例えば映像又は映像シーケンスを形成する一連のピクチャのうちのピクチャといった、ピクチャ17(又はピクチャデータ17)を受信するように構成され得る。受信されるピクチャ又はピクチャデータはまた、前処理済みピクチャ19(又は前処理済みピクチャデータ19)であってもよい。単純にするため、以下の説明はピクチャ17を参照する。ピクチャ17はまた、現在ピクチャ又はコーディング対象のピクチャとしても参照され得る(特に、映像コーディングでは、現在ピクチャを、例えば同一の映像シーケンスすなわち現在ピクチャをも含む映像シーケンスのうち先行して符号化及び/又は復号されたピクチャといった他のピクチャから区別するため)。
【0114】
(デジタル)ピクチャは、強度値を有するサンプルの二次元アレイ又はマトリクスとみなされ、あるいはそうみなされることができる。アレイ内のサンプルは、ピクセル(ピクチャエレメントの短縮形)又はペルとしても参照され得る。アレイ又はピクチャの水平及び垂直方向(又は軸)のサンプルの数が、ピクチャのサイズ及び/又は解像度を定める。色の表現のため、典型的に3つの色成分が使用され、すなわち、ピクチャは、3つのサンプルアレイで表現され、あるいはそれらを含み得る。RGBフォーマット又は色空間では、ピクチャは、対応する赤、緑及び青のサンプルアレイを有する。しかしながら、映像コーディングにおいて、各ピクセルは典型的に、例えば、Yによって示されるルミナンス成分(代わりにLが使用されることもある)と、Cb及びCrによって示される2つのクロミナンス成分とを有するものであるYCbCrといった、ルミナンス及びクロミナンスのフォーマット又は色空間で表現される。ルミナンス(又は略してルマ)成分Yは輝度又は(例えば、グレースケールピクチャにおいてのような)グレーレベル強度を表し、2つのクロミナンス(又は略してクロマ)成分Cb及びCrは色度又は色情報成分を表す。従って、YCbCrフォーマットのピクチャは、ルミナンスサンプル値(Y)のルミナンスサンプルアレイと、クロミナンス値(Cb及びCr)の2つのクロミナンスサンプルアレイとを有する。RGBフォーマットのピクチャはYCbCrフォーマットに変換される(converted又はtransformed)ことができ、その逆もまた然りであり、このプロセスは、カラー変換(transformation又はconversion)としても知られている。ピクチャがモノクロである場合、そのピクチャはルミナンスサンプルアレイのみを有し得る。従って、ピクチャは、例えば、モノクロフォーマットにおいてはルマサンプルのアレイであることができ、あるいは4:2:0、4:2:2、及び4:4:4カラーフォーマットにおいてはルマサンプルのアレイとクロマサンプルの2つの対応するアレイとであることができる。
【0115】
ビデオエンコーダ20の実施形態は、ピクチャ17を複数の(典型的には重なり合わない)ピクチャブロック203に分割するように構成されたピクチャ分割ユニット(
図2には示さず)を有し得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)、又はコーディングツリーブロック(CTB)若しくはコーディングツリーユニット(CTU)(H.265/HEVC及びVVC)として参照されることもある。ピクチャ分割ユニットは、映像シーケンスの全てのピクチャ及びブロックサイズを定める対応するグリッドに対して同じブロックサイズを使用して、又はピクチャ間で、又はピクチャのサブセット若しくはグループ間でブロックサイズを変更して、各ピクチャを対応するブロックに分割するように構成され得る。
【0116】
更なる実施形態において、ビデオエンコーダは、例えばピクチャ17を形成する1つの、幾つかの、又は全てのブロックといった、ピクチャ17のブロック203を直接受信するように構成され得る。ピクチャブロック203は、現在ピクチャブロック又はコーディング対象のピクチャブロックとして参照されることもある。
【0117】
ピクチャ17と同様に、ピクチャブロック203もやはり、強度値(サンプル値)を有するサンプルの二次元アレイ又はマトリクスとみなされ、あるいはそうみなされることができるが、ピクチャ17よりも小さい寸法のものである。換言すれば、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロピクチャ17の場合のルマアレイ、又はカラーピクチャの場合のルマアレイ若しくはクロマアレイ)、又は3つのサンプルアレイ(例えば、カラーピクチャ17の場合のルマアレイ及び2つのクロマアレイ)、又は適用されるカラーフォーマットに応じた何らかの他の数及び/又は種類のアレイを有し得る。ブロック203の水平及び垂直方向(又は軸)のサンプルの数が、ブロック203のサイズを定める。従って、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、又は変換係数のM×Nアレイとし得る。
【0118】
図2に示すビデオエンコーダ20の実施形態は、ブロック毎にピクチャ17を符号化するように構成されることができ、例えば、符号化及び予測がブロック203毎に実行される。
【0119】
図2に示すビデオエンコーダ20の実施形態は更に、スライス(映像スライスとしても参照される)を使用することによってピクチャを分割及び/又は符号化するように構成されることができ、ピクチャが、1つ以上のスライス(典型的に重なり合わない)に分割され又は1つ以上のスライス(典型的に重なり合わない)を用いて符号化され得るとともに、各スライスが、1つ以上のブロック(例えば、CTU)を有し得る。
【0120】
図2に示すビデオエンコーダ20の実施形態は更に、タイルグループ(映像タイルグループとしても参照される)及び/又はタイル(映像タイルとしても参照される)を使用することによってピクチャを分割及び/又は符号化するように構成されることができ、ピクチャが、1つ以上のタイルグループ(典型的に重なり合わない)に分割され又は1つ以上のタイルグループ(典型的に重なり合わない)を用いて符号化され得るとともに、各タイルグループが、例えば、1つ以上のブロック(例えば、CTU)又は1つ以上のタイルを有することができ、各タイルは、例えば、矩形の形状のものとし得るとともに、例えば完全なるブロック又は部分的なブロックといった、1つ以上のブロック(例えば、CTU)を有し得る。
【0121】
残差計算
残差計算ユニット204は、ピクチャブロック203及び予測ブロック265(予測ブロック265に関する更なる詳細については後に提供する)に基づいて、例えば、予測ブロック265のサンプル値をピクチャブロック203のサンプル値からサンプル毎(ピクセル毎)に差し引くことにより、残差ブロック205(残差205としても参照される)を計算して、サンプルドメインにおける残差ブロック205を得るように構成され得る。
【0122】
変換
変換処理ユニット206は、残差ブロック205のサンプル値に対して例えば離散コサイン変換(DCT)又は離散サイン変換(DST)といった変換を適用して、変換ドメインにおける変換係数207を得るように構成され得る。変換係数207は、変換残差係数として参照されることもあり、変換ドメインでの残差ブロック205を表し得る。
【0123】
変換処理ユニット206は、例えばH.265/HEVCに対して規定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、典型的に、ある特定の係数によってスケーリングされる。順変換及び逆変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として追加のスケーリング係数が適用される。スケーリング係数は、典型的に、スケーリング係数はシフト演算のために2のべき乗であること、変換係数のビット深度、精度と実装コストとの間のトレードオフなどのような、特定の制約に基づいて選択される。特定のスケーリング係数が、例えば逆変換処理ユニット212による逆変換に関して(及び、ビデオデコーダ30における例えば逆変換処理ユニット312による対応する逆変換に関して)指定され、また、それに従って、エンコーダ20における例えば変換処理ユニット206による順変換に関する対応するスケーリング係数が指定され得る。
【0124】
ビデオエンコーダ20(それぞれ変換処理ユニット206)の実施形態は、エントロピー符号化ユニット270を介して、例えば1つ以上の変換のタイプといった変換パラメータを、例えば直接又は符号化若しくは圧縮して出力するように構成されることができ、その結果、例えば、ビデオデコーダ30が復号のために変換パラメータを受信して使用し得る。
【0125】
量子化
量子化ユニット208は、例えばスカラー量子化又はベクトル量子化を適用することによって、変換係数207を量子化して、量子化された係数209を得るように構成され得る。量子化された係数209は、量子化された変換係数209又は量子化された残差係数209として参照されることもある。
【0126】
量子化プロセスは、変換係数207の一部又は全てに関連するビット深度を減少させ得る。例えば、nはmより大きいとして、nビットの変換係数が量子化の間にmビットの変換係数に丸められ得る。量子化の程度は、量子化パラメータ(QP)を調節することによって変更され得る。例えば、スカラー量子化の場合、より細かい又はより粗い量子化を達成するために、異なるスケーリングが適用され得る。より小さい量子化ステップサイズは、より細かい量子化に対応し、より大きい量子化ステップサイズは、より粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって指し示され得る。量子化パラメータは、例えば、予め定められた一組の適用可能な量子化ステップサイズに対するインデックスとし得る。例えば、小さい量子化パラメータが細かい量子化(小さい量子化ステップサイズ)に対応することができるとともに、大きい量子化パラメータが粗い量子化(大きい量子化ステップサイズ)に対応するとすることができ、その逆もまた然りである。量子化は、量子化ステップサイズによる除算を含むことができ、例えば逆量子化ユニット210による、対応する且つ/或いは逆の、量子化解除は、量子化ステップサイズによる乗算を含むことができる。例えばHEVCといった一部の標準に従った実施形態は、量子化パラメータを用いて量子化ステップサイズを決定するように構成され得る。一般に、量子化ステップサイズは、除算を含む式の固定小数点近似を用いて、量子化パラメータに基づいて計算され得る。残差ブロックのノルムを復元するために追加のスケーリング係数を量子化及び量子化解除に対して導入してもよく、量子化ステップサイズ及び量子化パラメータについての式の固定小数点近似に使用されるスケーリングに起因して、残差ブロックのノルムが変更され得る。一実装例において、逆変換及び量子化解除のスケーリングを組み合わせてもよい。あるいは、カスタマイズされた量子化テーブルを使用し、それをエンコーダからデコーダへ例えばビットストリーム内でシグナリングしてもよい。量子化は、非可逆演算であり、量子化ステップサイズを大きくするのに伴って損失が増加する。
【0127】
ピクチャ圧縮レベルは、ピクチャ全体に対して固定され得る(例えば、同一の量子化パラメータ値を使用することによって)又はピクチャの異なる領域に対して異なる量子化パラメータ値を有し得る量子化パラメータによって制御される。YCbCr 4:2:0及び4:2:2映像では、ルマ成分の信号特性とクロマ成分の信号特性とがかなり異なる。具体的には、クロマは強いローパス特性を示すことが多い。強い量子化が適用されると、クロマ情報が完全にゼロに量子化されてしまうことがあり、これは、色の完全なる喪失につながることになる。従って、これを抑制するために、クロマ用の量子化器ステップサイズは、高いQP値に対するクロマ量子化器ステップサイズを小さくすることによって適応される[2]。
【0128】
[1]で規定されるハイエフィシェンシビデオコーディング(HEVC)標準では、クロマ量子化パラメータQPcは表1によって導出され、ここで、qPiは、関連するルマ量子化パラメータに、ピクチャパラメータセット(PPS)及び/又はスライスヘッダ内でシグナリングされるクロマQPオフセット値を加えたものに等しい。関連するルマQP値からのクロマQP値の導出は、異なるクロマQPオフセット値をシグナリングすることによって調整されることができる。正のクロマQPオフセット値は、関連するクロマ成分に対して、より粗い量子化器をもたらすことになる。
【表15】
【0129】
[2]に従った、HEVC(黒色)及びH.264|AVC(灰色)についての、量子化パラメータインデックスQP
iのクロマ量子化パラメータQP
cへのマッピングを概略的に表したものを、
図6に提示する。
【0130】
HEVC標準では、ルミナンス(又はルマ)コーディングブロック(CB)用のQP値は、予測QP(qPY_PRED)に基づいて導出され、そして、予測QP(qPY_PRED)はフレーム/スライス/タイル内でのCB位置に依存する。次いで、Qp
Y変数が、次の式1によって導出される:
Qp
Y=((qPY
PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY (式1)
ここで、CuQpDeltaValは、コーディングユニット(CU)に対してシグナリング又は導出されるデルタQP値であり、QpBdOffsetYは、ルマビット深度(HEVC標準から、この用語は“ルマアレイのサンプルのビット深度”に対応する)に依存した一定のオフセットである。最後に、ルミナンス(又はルマ)成分の量子化パラメータQp
Y’が、次の式2によって計算され得る:
Qp
Y’=Qp
Y+QpBdOffsetY (式2)
変数qPCb及びqPCrは、それぞれqPiCb又はqPiCrに等しいインデックスqPiに基づいて、マッピングテーブル(例えば、表1)に規定されるQpCの値に等しく設定され、qPiCb及びqPiCrは、式3によって以下のように導出される:
qPiCb=Clip3(-QpBdOffsetC,69,QpY+pps_cb_qp_offset+slice_cb_qp_offset)
qPiCr=Clip3(-QpBdOffsetC,69,QpY+pps_cr_qp_offset+slice_cr_qp_offset)
(式3)
ここで、QpBdOffsetCは、クロマビット深度(HEVC標準から、この用語は“クロマアレイのサンプルのビット深度”に対応する)に依存した一定のオフセットであり、pps_cb_qp_offset又はpps_cr_qp_offsetは、ピクチャパラメータセット(PPS)によってシグナリングされるCb成分又はCr成分用の固定のオフセットであり、slice_cb_qp_offset又はslice_cr_qp_offsetは、スライスヘッダ内でシグナリングされるCb成分又はCr成分用の固定のオフセットであり、
【数1】
である。
【0131】
Cb及びCr成分用のクロマ量子化パラメータ(QpCb’及びQpCr’)は、次の式5のように導出される:
QpCb’=qPCb+QpBdOffsetC
QpCr’=qPCr+QpBdOffsetC
(式5)
変数qPCb及びqPCrは、それぞれqPiCb及びqPiCrに等しいインデックスqPiに基づいて、表1に規定されるQpCの値に等しく設定される。
【0132】
VVCは、新たに開発中の標準であり、仕様書ドラフト第5版[]にて、クロマ量子化パラメータを導出するための以下の手順を含んでいる:
- treeTypeがDUAL_TREE_CHROMAに等しいとき、変数Qp
Yは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQp
Yに等しく設定される。
- 変数qP
Cb、qP
Cr及びqP
CbCrは、次のように導出される:
qPi
Cb=Clip3(-QpBdOffset
C,69,Qp
Y+pps_cb_qp_offset+slice_cb_qp_offset) (8-926)
qPi
Cr=Clip3(-QpBdOffset
C,69,Qp
Y+pps_cr_qp_offset+slice_cr_qp_offset) (8-927)
qPi
CbCr=Clip3(-QpBdOffset
C,69,Qp
Y+pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset) (8-928)
- ChromaArrayTypeが1に等しい場合、変数qP
Cb、qP
Cr、及びqP
CbCrは、それぞれqPi
Cb、qPi
Cr及びqPi
CbCrに等しいインデックスqPiに基づいて、Qp’
CbCr=qP
CbCr+QpBdOffsetC (8-931)表2に規定されるQp
Cの値に等しく設定される。
- それ以外の場合、変数qP
Cb、qP
Cr及びqP
CbCrは、それぞれqPi
Cb、qPi
Cr及びqPi
CbCrに等しいインデックスqPiに基づいて、Min(qPi,63)に等しく設定される。
- Cb及びCr成分用のクロマ量子化パラメータQp’
Cb及びQp’
Cr、並びにジョイントCb-CrコーディングQp’
CbCrは、以下のように導出される:
Qp’
Cb=qP
Cb+QpBdOffset
C (8-929)
Qp’
Cr=qP
Cr+QpBdOffset
C (8-930)
Qp’
CbCr=qP
CbCr+QpBdOffset
C (8-931)
【表16】
ここで、pps_cb_qp_offset及びslice_cb_qp_offsetは、対応してピクチャパラメータセット(PPS)及び/又はスライスヘッダ内でシグナリングされるピクチャレベル及びスライスレベルのクロマQPオフセット値である。
【0133】
クロマ圧縮効率は、クロマ分離ツリー及びCCLMのようなクロマ専用コーディングツールを含めることにより、VVCで大幅に改善されているので、クロマQpマッピング関数は調整を必要とし得る。
【0134】
HEVC標準(表1)においてと同じクロマQpマッピングテーブル(表2)が使用されることが分かる。HEVCとは対照的に、ブロックに対する量子化パラメータを導出するために、Qp’Cb及びQp’Crの他にQp’CbCrが導入され、Cb及びCrカラー成分がまとめて量子化される。このQp’CbCrパラメータも、表2に規定されるクロマQpマッピング関数に基づいて導出される。
【0135】
上述のように、関連するルマQP値からのクロマQP値の導出は、異なるクロマQPオフセット値をシグナリングすることによって調整されることができる。正のクロマQPオフセット値は、関連するクロマ成分に対して、より粗い量子化器をもたらすことになる。
図10は、1に等しいクロマQpオフセットでのHEVC/VVCクロマQpマッピング関数の例を示している。
【0136】
ビデオエンコーダ20の実施形態(それぞれ量子化ユニット208)は、エントロピー符号化ユニット270を介して、量子化パラメータ(QP)を、例えば直接又は符号化して出力するように構成されることができ、その結果、例えば、ビデオデコーダ30が復号のために量子化パラメータを受信して適用し得る。
【0137】
逆量子化
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて又はそれを用いて、量子化ユニット208によって適用された量子化スキームの逆を適用することによって、量子化された係数に対して量子化ユニット208の逆量子化を適用して、量子化解除された係数211を得るように構成される。量子化解除された係数211は、量子化解除された残差係数211として参照されることもあり、変換係数207に対応するが、典型的には量子化による損失のために変換係数と同じではない。
【0138】
逆変換
逆変換処理ユニット212は、例えば、逆の離散コサイン変換(DCT)、逆の離散サイン変換(DST)、又は他の逆変換といった、変換処理ユニット206によって適用された変換の逆変換を適用して、サンプルドメインにおける再構成残差ブロック213(又は対応する量子化解除された係数213)を得るように構成される。再構成残差ブロック213は、変換ブロック213として参照されることもある。
【0139】
再構成
再構成ユニット214(例えば、加算器(adder又はsummer)214)は、例えば再構成残差ブロック213のサンプル値と予測ブロック265のサンプル値とをサンプル毎に足し合わせることによって、変換ブロック213(すなわち、再構成残差ブロック213)を予測ブロック265に足し合わせて、サンプルドメインにおける再構成ブロック215を得るように構成される。
【0140】
フィルタリング
ループフィルタユニット220(又は略して“ループフィルタ”220)は、再構成ブロック215をフィルタリングして、フィルタリングされたブロック221を得るように構成され、又は一般に、再構成サンプルをフィルタリングして、フィルタリングされたサンプルを得るように構成される。ループフィルタユニットは、例えば、ピクセル遷移を平滑化するように構成され、又はその他の方法で映像品質を向上させるように構成される。ループフィルタユニット220は、例えば、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset;SAO)フィルタ、又は例えばバイラテラルフィルタ、適応ループフィルタ(adaptive loop filter;ALF)、鮮鋭化、平滑化フィルタ、若しくはコラボティブフィルタ、又はこれらの任意の組み合わせといった1つ以上の他のフィルタなどの、1つ以上のループフィルタを有し得る。ループフィルタユニット220は、
図2ではインループフィルタとして示されているが、他の構成では、ループフィルタユニット220は、ポストループフィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構成ブロック221として参照されることもある。
【0141】
ビデオエンコーダ20の実施形態(それぞれループフィルタユニット220)は、エントロピー符号化ユニット270を介して、ループフィルタパラメータ(例えば、サンプル適応オフセット情報など)を、例えば直接又は符号化して出力するように構成されることができ、その結果、例えば、デコーダ30が復号のために同じループフィルタパラメータ又はそれぞれのループフィルタを受信して適用使用し得る。
【0142】
復号ピクチャバッファ
復号ピクチャバッファ(DPB)230は、ビデオエンコーダ20によって映像データを符号化するための参照ピクチャ又は一般に参照ピクチャデータを格納するメモリとし得る。DPB230は、例えば、同期DRAM(SDRAM)を含めたダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、又は他のタイプのメモリデバイスなどの、多様なメモリデバイスのうちのいずれかによって形成され得る。復号ピクチャバッファ(DPB)230は、フィルタリングされた1つ以上のブロック221を格納するように構成され得る。復号ピクチャバッファ230は更に、同じ現在ピクチャの又は例えば先行再構成ピクチャなどの異なるピクチャの、先行して再構成されてフィルタリングされたブロック221といった、他の先行したフィルタリングされたブロックを格納するように構成されてもよく、また、例えばインター予測のために、完全な先行した再構成すなわち復号されたピクチャ(並びに対応する参照ブロック及びサンプル)、及び/又は部分的に再構成された現在ピクチャ(並びに対応する参照ブロック及びサンプル)を提供し得る。復号ピクチャバッファ(DPB)230はまた、例えば再構成ブロック215がループフィルタユニット220によってフィルタリングされない場合に、1つ以上のフィルタリングされていない再構成ブロック215、又は一般に、フィルタリングされていない再構成サンプルを格納するように構成されてもよく、あるいは、再構成ブロック又は再構成サンプルの任意の他の更に処理されたバージョンを格納するように構成されてもよい。
【0143】
モード選択(分割&予測)
モード選択ユニット260は、分割ユニット262、インター予測ユニット244、及びイントラ予測ユニット254を有し、例えば元のブロック203(現在ピクチャ17の現在ブロック203)といった、元のピクチャデータと、例えば復号ピクチャバッファ230又は他のバッファ(例えば、ラインバッファ、図示せず)からの、例えば同一(現在)ピクチャの及び/又は1つ若しくは複数の先行復号ピクチャからのフィルタリングされた及び/又はフィルタリングされていない再構成サンプル若しくはブロックといった、再構成ピクチャデータと、を受信又は取得するように構成される。再構成ピクチャデータは、予測ブロック265又は予測子265を得るために、例えばインター予測又はイントラ予測である予測のための参照ピクチャデータとして使用される。
【0144】
モード選択ユニット260は、現在ブロック予測モードについての分割(分割なしを含む)及び予測モード(例えば、イントラ又はインター予測モード)を決定又は選択し、対応する予測ブロック265を生成するように構成されることができ、該予測ブロック265が、残差ブロック205の計算のため及び再構成ブロック215の再構成のために使用される。
【0145】
モード選択ユニット260の実施形態は、最良の一致若しくは換言して最小の残差(最小の残差は、伝送又は保管のためにより良い圧縮を意味する)又は最小のシグナリングオーバーヘッド(最小のシグナリングオーバーヘッドは、伝送又は保管のためにより良い圧縮を意味する)を提供するものである、あるいは両方を考慮するかバランスさせるかするものである分割及び予測モードを(例えば、モード選択ユニット260によってサポートされているもの又はモード選択ユニット260に利用可能なものから)選択するように構成され得る。モード選択ユニット260は、レート歪み最適化(rate distortion optimization;RDO)に基づいて分割及び予測モードを決定するように、すなわち、最小のレート歪みを提供する予測モードを選択するように構成されてもよい。この文脈における“最良”、“最小”、“最適”のような用語は、必ずしも全体的な“最良”、“最小”、“最適”などを意味するわけではなく、値が閾値又は他の制約を上回るか下回るかして、“準最適な選択”ではあるが複雑さ及び処理時間を減少させることにつながる可能性があるといったような、終了基準又は選択基準の達成をも意味し得る。
【0146】
換言すれば、分割ユニット262は、例えば、四分木分割(QT)、二分木分割(BT)若しくは三分木分割(TT)、又はこれらの任意の組み合わせを繰り返し用いて、ブロック203を、より小さいブロックパーティション又はサブブロック(これらもやはりブロックを形成する)へと分割し、例えば、ブロックパーティション又はサブブロックの各々について予測を実行するように構成されることができ、モード選択は、分割されるブロック203のツリー構造の選択を有し、予測モードは、ブロックパーティション又はサブブロックの各々に適用される。
【0147】
以下、ビデオエンコーダ20の一例によって行われる分割(例えば、分割ユニット260による)及び予測処理(インター予測ユニット244及びイントラ予測ユニット254による)を更に詳細に説明する。
【0148】
分割
分割ユニット262は、現在ブロック203を、例えば正方形又は長方形のいっそう小さいサイズのブロックといった、より小さいパーティションに分割する(又はスプリットする)ことができる。より小さいこれらのブロック(これらはサブブロックとして参照されることもある)が、さらに小さいパーティションへと更に分割されてもよい。これは、ツリー分割又は階層ツリー分割とも呼ばれ、例えばルートツリーレベル0(階層レベル0、深さ0)にあるルートブロックを再帰的に分割することができ、例えば、ツリーレベル1(階層レベル1、深さ1)にあるノードといった次の下位ツリーレベルの2つ以上のブロックに分割され、これらのブロックが再び、例えばツリーレベル2(階層レベル2、深さ2)といった次の下位レベルの2つ以上のブロックに分割される等々、例えば最大ツリー深さ又は最小ブロックサイズに到達するといった終了基準が満たされるなどによって分割が終了するまで続けられ得る。それ以上分割されないブロックは、ツリーのリーフブロック又はリーフノードとも呼ばれる。2つのパーティションへの分割を用いるツリーは二分木(BT)と呼ばれ、3つのパーティションへの分割を用いるツリーは三分木(TT)と呼ばれ、そして、4つのパーティションへの分割を用いるツリーは四分木(QT)と呼ばれる。
【0149】
前述したように、用語“ブロック”は、ここで使用されるとき、特に正方形又は長方形の部分である、ピクチャの一部である。例えばHEVC及びVVCを参照すれば、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、及び変換ユニット(TU)である又はそれらに相当することができ、及び/又は例えばコーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)又は予測ブロック(PB)といった、対応するブロックに相当することができる。
【0150】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有するピクチャの、ルマサンプルのCTB、2つの対応するクロマサンプルのCTB、又はモノクロピクチャの若しくは3つの別々のカラープレーンを用いてコーディングされるピクチャのサンプルのCTBと、サンプルをコーディングするのに使用される構文構造、であるとすることができ、あるいはそれらを有することができる。対応して、コーディングツリーブロック(CTB)は、何らかの値NでのサンプルのN×Nブロックとすることができ、ある成分を複数のCTBへと分けることが分割である。コーディングユニット(CU)は、3つのサンプルアレイを有するピクチャの、ルマサンプルのコーディングブロック、2つの対応するクロマサンプルのコーディングブロック、又はモノクロピクチャの若しくは3つの別々のカラープレーンを用いてコーディングされるピクチャのサンプルのコーディングブロックと、サンプルをコーディングするのに使用される構文構造、であるとすることができ、あるいはそれらを有することができる。対応して、コーディングブロック(CB)は、何らかの値M及びNでのサンプルのM×Nブロックとすることができ、CTBを複数のコーディングブロックへと分けることが分割である。
【0151】
実施形態において、例えばHEVCによれば、コーディングツリーユニット(CTU)は、コーディングツリーと表記される四分木構造を用いることによってCUにスプリットされ得る。ピクチャ領域をインターピクチャ(時間)予測を用いてコーディングするか、それともイントラピクチャ(空間)予測を用いてコーディングするかの決定が、CUレベルで為される。各CUは更に、PUスプリットタイプに従って、1つ、2つ、又は4つのPUにスプリットされることができる。1つのPU内では、同じ予測プロセスが適用され、関連情報がPUベースでデコーダに伝送される。PUスプリット型に基づいて予測プロセスを適用することによって残差ブロックを得た後に、CUを、CUに対するコーディングツリーと同様の別の四分木構造に従って変換ユニット(TU)に分割することができる。
【0152】
実施形態において、例えばバーサタイルビデオコーディング(VVC)と称される現在開発中の最新の映像コーディング標準によれば、コーディングブロックを分割するのに例えばコンバインド四分木・二分木(QTBT)分割が使用される。QTBTブロック構造において、CUは正方形又は長方形のいずれかの形状を持つことができる。例えば、コーディングツリーユニット(CTU)は先ず四分木構造によって分割される。四分木リーフノードが更に、二分木構造又は三分木(ternary tree又はtriple tree)構造によって分割される。分割木リーフノードはコーディングユニット(CU)と呼ばれ、そのセグメンテーションが、更なる分割なしで予測及び変換処理に使用される。これが意味することは、CU、PU、及びTUは、QTBTコーディングブロック構造において同じブロックサイズを持つということである。並列に、QTBTブロック構造とともに例えば三分木分割などの多重分割が使用されてもよい。
【0153】
一例において、ビデオエンコーダ20のモード選択ユニット260は、ここに記載される分割技術の任意の組み合わせを実行するように構成されてもよい。
【0154】
上述のように、ビデオエンコーダ20は、(例えば、所定の)予測モードのセットから最良又は最適な予測モードを決定又は選択するように構成される。予測モードのセットは、例えば、複数のイントラ予測モード及び/又は複数のインター予測モードを有し得る。
【0155】
イントラ予測
イントラ予測モードのセットは、例えばHEVCで規定されるように、35個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプレーナモードのような非方向モード、又は方向モード、を有することができ、あるいは、VVC向けに規定されるように、67個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプレーナモードのような非方向モード、又は方向モード、を有することができる。
【0156】
イントラ予測ユニット254は、同じ現在ピクチャの隣接ブロックの再構成サンプルを用いて、イントラ予測モードのセットのうちのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するように構成される。
【0157】
イントラ予測ユニット254(又は、一般に、モード選択ユニット260)は更に、イントラ予測パラメータ(又は、一般に、そのブロックに対して選択されたイントラ予測モードを指し示す情報)を、符号化ピクチャデータ21に含める構文要素266の形態で、エントロピー符号化ユニット270に出力するように構成され、その結果、例えば、ビデオデコーダ30が復号のために予測パラメータを受信して使用し得る。
【0158】
インター予測
インター予測モード(又は取り得るインター予測モード)のセットは、利用可能な参照ピクチャ(すなわち、先行する少なくとも部分的に復号されたピクチャ、例えば、DBP230に格納されている)、及び他のインター予測パラメータ、例えば、最良一致の参照ブロックを探索するために使用されるのが、参照ピクチャのうち、参照ピクチャ全体であるのか、それとも、例えば現在ブロックの領域の周りのサーチウィンドウ領域といった一部のみであるのか、及び/又は、例えば、例えば二分の一/半ペル及び/又は四分の一ペル補間といったピクセル補間が適用されるか否か、に依存する。
【0159】
上の予測モードに加えて、スキップモード及び/又は直接モードが適用されてもよい。
【0160】
インター予測ユニット244は、動き推定(ME)ユニット及び動き補償(MC)ユニット(どちらも
図2には示さず)を含み得る。動き推定ユニットは、動き推定のために、ピクチャブロック203(現在ピクチャ17の現在ピクチャブロック203)と、復号ピクチャ231、又は例えば1つ又は複数の他の/異なる先行復号ピクチャ231の再構成ブロックといった少なくとも1つ又は複数の先行再構成ブロックと、を受信又は取得するように構成され得る。例えば、映像シーケンスは現在ピクチャと先行復号ピクチャ231とを有することができ、すなわち換言すれば、現在ピクチャ及び先行復号ピクチャ231は、映像シーケンスを形成する一連のピクチャの一部であることができ、あるいはそれを形成することができる。
【0161】
エンコーダ20は、例えば、複数の他のピクチャの中の同一ピクチャ又は複数の異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ピクチャ(又は参照ピクチャインデックス)及び/又は参照ブロックの位置(x,y座標)と現在ブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして、動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0162】
動き補償ユニットは、インター予測パラメータを例えば受信するなどして取得し、インター予測パラメータに基づいて又はそれを用いてインター予測を実行して、インター予測ブロック265を得るように構成される。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロックベクトルに基づいて、予測ブロックをフェッチ又は生成することを含むことができ、場合により、サブピクセル精度への補間を実行する。補間フィルタリングは、既知のピクセルサンプルから追加のピクセルサンプルを生成することができ、それ故に、ピクチャブロックをコーディングするのに使用され得る候補予測ブロックの数を増やせる可能性がある。現在ピクチャブロックのPUに関する動きベクトルを受信すると、動き補償ユニットは、動きベクトルが指す予測ブロックを参照ピクチャリストのうちの1つ内で位置特定し得る。
【0163】
動き補償ユニットはまた、映像スライスのピクチャブロックを復号する際にビデオデコーダ30によって使用される、ブロック及び映像スライスに関連する構文要素を生成し得る。スライス及びそれぞれの構文要素に加えて、又はこれらの代わりとして、タイルグループ及び/又はタイル並びにそれぞれの構文要素が生成されるか使用されるかしてもよい。
【0164】
エントロピーコーディング
エントロピー符号化ユニット270は、例えば、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、及び/又は他の構文要素に対して、エントロピー符号化アルゴリズム若しくはスキーム(例えば、可変長コーディング(variable length coding;VLC)スキーム、コンテキスト適応VLCスキーム(context adaptive VLC;CAVLC)、算術コーディングスキーム、二値化、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding;CABAC)、構文スベースコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding;SBAC)、確率インターバルパーティショニングエントロピー(probability interval partitioning entropy;PIPE)コーディング、又は他のエントロピー符号化方法若しくは技術)又はバイパス(圧縮なし)を適用して、出力272を用いて出力することができる符号化ピクチャデータ21を例えば符号化ビットストリーム21の形態で得るように構成され、その結果、例えば、ビデオデコーダ30が復号のためにこれらのパラメータを受信して使用し得る。符号化ビットストリーム21は、ビデオデコーダ30に送信されてもよいし、あるいは、後の送信又はビデオデコーダ30による取り出しのためにメモリに格納されてもよい。
【0165】
映像ストリームを符号化するために、ビデオエンコーダ20の他の構成バリエーションを使用することができる。例えば、非変換ベースのエンコーダ20は、特定のブロック又はフレームに対して、変換処理ユニット206を用いずに直接的に残差信号を量子化することができる。他の一実装において、エンコーダ20は、単一のユニットへと組み合わされた量子化ユニット208及び逆量子化ユニット210を有することができる。
【0166】
デコーダ及び復号方法
図3は、この本出願の技術を実装するように構成されたビデオデコーダ30の一例を示している。ビデオデコーダ30は、例えばエンコーダ20によって符号化された、符号化ピクチャデータ21(例えば、符号化ビットストリーム21)を受信して、復号ピクチャ331を得るように構成される。符号化ピクチャデータ又はビットストリームは、例えば、符号化映像スライス(及び/又はタイルグループ若しくはタイル)のピクチャブロックを表すデータ及び付随する構文要素といった、符号化ピクチャデータを復号するための情報を有する。
【0167】
図3の例において、デコーダ30は、エントロピー復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、加算器314)、ループフィルタ320、復号ピクチャバッファ(DBP)330、モード適用ユニット360、インター予測ユニット344、及びイントラ予測ユニット354を有している。インター予測ユニット344は、動き補償ユニットとすることができ、あるいはそれを含むことができる。ビデオデコーダ30は、一部の例において、
図2からのビデオエンコーダ100に関して説明した符号化パスに対して概して逆の復号パスを実行し得る。
【0168】
エンコーダ20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、復号ピクチャバッファ(DPB)230、インター予測ユニット344、及びイントラ予測ユニット354はまた、ビデオエンコーダ20の“内蔵デコーダ”を形成するとしても参照される。従って、逆量子化ユニット310は、機能において逆量子化ユニット110に同じであるとすることができ、逆変換処理ユニット312は、機能において逆変換処理ユニット212に同じであるとすることができ、再構成ユニット314は、機能において再構成ユニット214に同じであるとすることができ、ループフィルタ320は、機能においてループフィルタ220に同じであるとすることができ、復号ピクチャバッファ330は、機能において復号ピクチャバッファ230に同じであるとすることができる。従って、ビデオエンコーダ20のそれぞれのユニット及び機能についての説明は、対応して、ビデオデコーダ30のそれぞれのユニット及び機能に当てはまる。
【0169】
エントロピー復号
エントロピー復号ユニット304は、ビットストリーム21(又は、一般に、符号化ピクチャデータ21)を構文解析し、例えば、符号化ピクチャデータ21に対してエントロピー復号を実行して、例えば、量子化された係数309、及び/又は復号されたコーディングパラメータ(
図3には示さず)、例えば、インター予測パラメータ(例えば、参照ピクチャインデックス及び動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、及び/又は他の構文要素のうちのいずれか又は全て、を得るように構成される。エントロピー復号ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関して説明した符号化スキームに対応する復号アルゴリズム又はスキームを適用するように構成され得る。エントロピー復号ユニット304は更に、インター予測パラメータ、イントラ予測パラメータ及び/又は他の構文要素をモード適用ユニット360に提供するとともに、他のパラメータをデコーダ30の他のユニットに提供するように構成され得る。ビデオデコーダ30は、映像スライスレベル及び/又は映像ブロックレベルで構文要素を受信し得る。スライス及びそれぞれの構文要素に加えて、又はこれらの代わりとして、タイルグループ及び/又はタイル並びにそれぞれの構文要素が受信及び/又は使用されてもよい。
【0170】
逆量子化
逆量子化ユニット310は、符号化ピクチャデータ21から量子化パラメータ(QP)(又は、一般に、逆量子化に関する情報)及び量子化された係数を受け取り(例えばエントロピー復号ユニット304により、例えば構文解析及び/又は復号することによって)、復号した量子化された係数309に対して量子化パラメータに基づいて逆量子化を適用して、変換係数311としても参照され得るものである量子化解除された係数311を得るように構成され得る。逆量子化プロセスは、量子化の程度、及び同様に、適用されるべき逆量子化の程度を決定するために、映像スライス(又はタイル若しくはタイルグループ)内の各映像ブロックに対してビデオエンコーダ20によって決定された量子化パラメータを使用することを含み得る。
【0171】
逆変換
逆変換処理ユニット312は、変換係数311とも称される量子化解除された係数311を受け取り、そして、サンプルドメインにおける再構成残差ブロック213を得るために、量子化解除された係数311に変換を適用するように構成され得る。再構成残差ブロック213は、変換ブロック313として参照されることもある。この変換は、例えば逆DCT、逆DST、逆整数変換、又は概念的に類似した逆変換プロセスといった、逆変換とし得る。逆変換処理ユニット312は更に、符号化ピクチャデータ21から変換パラメータ又は対応する情報を受け取り(例えばエントロピー復号ユニット304により、例えば構文解析及び/又は復号することによって)、量子化解除された係数311に適用すべき変換を決定するように構成され得る。
【0172】
再構成
再構成ユニット314(例えば、加算器(adder又はsummer)314)は、例えば再構成残差ブロック313のサンプル値と予測ブロック365のサンプル値とを足し合わせることによって、再構成残差ブロック313を予測ブロック365に足し合わせて、サンプルドメインにおける再構成ブロック315を得るように構成され得る。
【0173】
フィルタリング
ループフィルタユニット320(コーディングループ内又はコーディングループ後のいずれか)は、例えば、ピクセル遷移を平滑化するために、又はその他の方法で映像品質を向上させるために、再構成ブロック315をフィルタリングして、フィルタリングされたブロック321を得るように構成される。ループフィルタユニット320は、例えば、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset;SAO)フィルタ、又は例えばバイラテラルフィルタ、適応ループフィルタ(adaptive loop filter;ALF)、鮮鋭化、平滑化フィルタ、若しくはコラボティブフィルタ、又はこれらの任意の組み合わせといった1つ以上の他のフィルタなどの、1つ以上のループフィルタを有し得る。ループフィルタユニット320は、
図3ではインループフィルタとして示されているが、他の構成では、ループフィルタユニット320は、ポストループフィルタとして実装されてもよい。
【0174】
復号ピクチャバッファ
そして、ピクチャの復号映像ブロック321は、他のピクチャの後の動き補償のための参照ピクチャとして及び/又はそれぞれの表示の出力のために復号ピクチャ331を格納するものである復号ピクチャバッファ330に格納される。
【0175】
デコーダ30は、復号ピクチャ311を、ユーザへの提示又は表示のために例えば出力312を介して出力するように構成される。
【0176】
予測
機能において、インター予測ユニット344はインター予測ユニット244(特に、動き補償ユニット)に同じであるとすることができ、イントラ予測ユニット354はイントラ予測ユニット254と同じであるとすることができ、符号化ピクチャデータ21から受信した(例えばエントロピー復号ユニット304により、構文解析及び/又は復号することによって)分割及び/又は予測パラメータ若しくはそれぞれの情報に基づいて、スプリット若しくは分割の決定及び予測を実行する。モード適用ユニット360は、再構成ピクチャ、ブロック又はそれぞれのサンプル(フィルタリングされた又はフィルタリングされていない)に基づいてブロック毎に予測(イントラ予測又はインター予測)を実行して、予測ブロック365を得るように構成され得る。
【0177】
映像スライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、モード適用ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードと、現在ピクチャの先行復号ブロックからのデータとに基づいて、現在映像スライスのピクチャブロックについての予測ブロック365を生成するように構成される。映像ピクチャが、インターコーディングされた(すなわち、B又はP)スライスとしてコーディングされるとき、モード適用ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピー復号ユニット304から受信した動きベクトル及び他の構文要素に基づいて、現在映像スライスの映像ブロックについての予測ブロック365を生成するように構成される。インター予測では、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから予測ブロックが生成され得る。ビデオデコーダ30は、DPB330に格納された参照ピクチャに基づいて、デフォルトの構築技術を使用して、リスト0及びリスト1なる参照フレームリストを構築し得る。スライス(例えば、映像スライス)に加えて又は代えてタイルグループ(例えば、映像タイルグループ)及び/又はタイル(例えば、映像タイル)を使用する実施形態に対しても、又はそのような実施形態によっても、同じ又は同様のものを適用することができ、例えば、I、P又はBタイルグループ及び/又はタイルを用いて映像がコーディングされ得る。
【0178】
モード適用ユニット360は、動きベクトル又は関連情報と他の構文要素とを構文解析することによって、現在映像スライスの映像ブロックについての予測情報を決定するように構成され、該予測情報を使用して、復号している現在映像ブロックについての予測ブロックを生成する。例えば、モード適用ユニット360は、受け取った構文要素の一部を用いて、映像スライスの映像ブロックをコーディングするのに使用された予測モード(例えば、イントラ予測又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスに関する参照ピクチャリストのうちの1つ以上の構築情報、スライスの各インター符号化映像ブロックについての動きベクトル、スライスの各インターコーディングされた映像ブロックについてのインター予測ステータス、及び現在映像スライス内の映像ブロックを復号するための他の情報を決定する。スライス(例えば、映像スライス)に加えて又は代えてタイルグループ(例えば、映像タイルグループ)及び/又はタイル(例えば、映像タイル)を使用する実施形態に対しても、又はそのような実施形態によっても、同じ又は同様のものを適用することができ、例えば、I、P又はBタイルグループ及び/又はタイルを用いて映像がコーディングされ得る。
【0179】
図3に示すビデオデコーダ30の実施形態は、スライス(映像スライスとしても参照される)を使用することによってピクチャを分割及び/又は復号するように構成されることができ、ピクチャが、1つ以上のスライス(典型的に重なり合わない)に分割され又は1つ以上のスライス(典型的に重なり合わない)を用いて復号され得るとともに、各スライスが、1つ以上のブロック(例えば、CTU)を有し得る。
【0180】
図3に示すビデオデコーダ30の実施形態は更に、タイルグループ(映像タイルグループとしても参照される)及び/又はタイル(映像タイルとしても参照される)を使用することによってピクチャを分割及び/又は復号するように構成されることができ、ピクチャが、1つ以上のタイルグループ(典型的に重なり合わない)に分割され又は1つ以上のタイルグループ(典型的に重なり合わない)を用いて復号され得るとともに、各タイルグループが、例えば、1つ以上のブロック(例えば、CTU)又は1つ以上のタイルを有することができ、各タイルは、例えば、矩形の形状のものとし得るとともに、例えば完全なるブロック又は部分的なブロックといった、1つ以上のブロック(例えば、CTU)を有し得る。
【0181】
符号化ピクチャデータ21を復号するために、ビデオデコーダ30の他のバリエーションを使用することができる。例えば、デコーダ30は、ループフィルタリングユニット320を用いずに出力映像ストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロック又はフレームに対して、逆変換処理ユニット312を用いずに直接的に残差信号を逆量子化することができる。他の一実装において、ビデオデコーダ30は、単一のユニットへと組み合わされた逆量子化ユニット310及び逆変換処理ユニット312を有することができる。
【0182】
理解されるべきことには、エンコーダ20及びデコーダ30において、現在ステップの処理結果が更に処理されてから次ステップに出力されてもよい。例えば、補間フィルタリング、動きベクトル導出、又はループフィルタリングの後に、その補間フィルタリング、動きベクトル導出、又はループフィルタリングの処理結果に対して、例えばクリップ又はシフトなどの更なる操作が実行されてもよい。
【0183】
なお、現在ブロックの導出される動きベクトル(以下に限られないが、アフィンモードの制御点動きベクトル、アフィン、プレーナ、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の整数部の間の最大の差が、例えば1ピクセル以下など、Nピクセル以下であるように制約される。ここでは、bitDepthに従って動きベクトルを制約する2つの方法を提供する。
【0184】
方法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(17ビット)であり、次いでMSBが破棄され、そうして得られる2の補数は0111,1111,1111,1111(10進数は32767である)であり、これは、式(1)及び(2)を適用することによる出力と同じである。
【0185】
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との和の間に適用され得る。
【0186】
方法2:値をクリッピングすることによりオーバーフローMSBを除去する
vx=Clip3(-2
bitDepth-1,2
bitDepth-1-1,vx)
vy=Clip3(-2
bitDepth-1,2
bitDepth-1-1,vy)
ここで、vxは、画像ブロック又はサブブロックの動きベクトルの水平成分であり、vyは、画像ブロック又はサブブロックの動きベクトルの垂直成分であり、x、y及びzは、それぞれ、MVクリッピングプロセスの3つの入力値に対応し、関数Clip3の定義は次の通りである:
【数2】
【0187】
図4は、開示の一実施形態に従った映像コーディング装置400の概略図である。映像コーディング装置400は、ここに記載される開示実施形態を実装するのに適している。一実施形態において、映像コーディング装置400は、例えば
図1Aのビデオデコーダ30などのデコーダ又は例えば
図1Aのビデオエンコーダ20などのエンコーダとし得る。
【0188】
映像コーディング装置400は、データを受信するための入口ポート410(又は入力ポート410)及び受信器ユニット(Rx)420と、データを処理するプロセッサ、論理ユニット、又は中央演算処理ユニット(CPU)430と、データを送信するための送信器ユニット(Tx)440及び出口ポート450(又は出力ポート450)と、データを格納するためのメモリ460とを含んでいる。映像コーディング装置400はまた、光信号又は電気信号の出口又は入口のために、入口ポート410、受信器ユニット420、送信器ユニット440、及び出口ポート450に結合された、光-電気(OE)コンポーネント及び電気-光(EO)コンポーネントを有し得る。
【0189】
プロセッサ430は、ハードウェア及びソフトウェアによって実装される。プロセッサ430は、1つ以上の、CPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、及びDSPとして実装され得る。プロセッサ430は、入口ポート410、受信器ユニット420、送信器ユニット440、出口ポート450、及びメモリ460と連通している。プロセッサ430は、コーディングモジュール470を有する。コーディングモジュール470は、上述の開示実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング演算を実装し、処理し、準備し、又は提供する。コーディングモジュール470を含むことは、それ故に、映像コーディング装置400の機能への実質的な改良を提供し、異なる状態への映像コーディング装置400の変換を実現する。あるいは、コーディングモジュール470は、メモリ460に格納されてプロセッサ430によって実行される命令として実装される。
【0190】
メモリ460は、1つ以上のディスク、テープドライブ、及びソリッドステートドライブを有することができ、また、オーバーフローデータ記憶デバイスとして使用されて、プログラムが実行のために選択されるときにそのようなプログラムを格納するとともに、プログラム実行中に読み出される命令及びデータを格納し得る。メモリ460は、例えば、揮発性及び/又は不揮発性とすることができ、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(ternary content-addressable memory、TCAM)、及び/又はスタティックランダムアクセスメモリ(SRAM)とし得る。
【0191】
図5は、例示的な一実施形態に従った、
図1からのソース装置12及びデスティネーション装置14のいずれか又は双方として使用され得る装置500の簡略ブロック図である。
【0192】
装置500内のプロセッサ502は、中央演算処理ユニットととすることができる。あるいは、プロセッサ502は、現存の又は今後開発される情報を操作又は処理することが可能な任意の他のタイプのデバイス又は複数のデバイスであってもよい。開示される実装は、例えばプロセッサ502といった、図示のような単一のプロセッサで実施され得るものの、2つ以上のプロセッサを使用して速度及び効率における利点を達成してもよい。
【0193】
装置500内のメモリ504は、一実装において、読み出し専用メモリ(ROM)デバイス又はランダムアクセスメモリ(RAM)デバイスとすることができる。何らかの他の好適タイプの記憶デバイスがメモリ504として使用されてもよい。メモリ504は、バス512を用いてプロセッサ502によってアクセスされるコード及びデータ506を含むことができる。メモリ504は更に、オペレーティングシステム508及びアプリケーションプログラム510を含むことができ、アプリケーションプログラム510は、ここに記載される方法をプロセッサ502が実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510はアプリケーション1乃至Nを含むことができ、それらは更に、ここに記載される方法を実行する映像コーディングアプリケーションを含む。
【0194】
装置500はまた、例えばディスプレイ518などの1つ以上の出力装置を含むことができる。ディスプレイ518は、一例において、タッチ入力をセンシングするように動作可能なタッチ感知素子とディスプレイを組み合わせたタッチ感知ディスプレイとし得る。ディスプレイ518は、バス512を介してプロセッサ502に結合されることができる。
【0195】
ここでは単一のバスとして描かれているが、装置500のバス512は複数のバスで構成されてもよい。さらに、二次ストレージ514が、装置500の他のコンポーネントに直接的に結合されてもよいし、あるいは、ネットワークを介してアクセスされてもよく、また、例えばメモリカードなどの単一の集積ユニット、又は例えば複数のメモリカードなどの複数のユニットを有することができる。装置500は、従って、広範な多様な構成で実装されることができる。
【0196】
バーサタイルビデオコーディング(VVC)VVCは、標準ダイナミックレンジ及び高ダイナミックレンジの双方の映像コンテンツをコーディングする新たに開発中の標準である。高ダイナミックレンジ映像(HDR映像)は、標準ダイナミックレンジ映像(SDR映像)のダイナミックレンジよりも高いダイナミックレンジを持つ映像を言い表す。HDR映像のキーとなる特徴は、より明るい白、より深い黒、及びこの拡張されたレンジにわたって精度を維持するための少なくとも10ビットの色深度である(SDR映像での8ビットと対比)。技術的には異なるが、用語“HDR映像”は広い色域をも意味すると一般的に理解される。
【0197】
現在、SDR及びHDRは商業的に展開されており、長期にわたって共存するであろう。SDRコンテンツは典型的に、BT.709又はBT.2020コンテナにて非一定ルミナンス(Non-Constant Luminance;NCL)Y’CbCrガンマとしてコーディングされる。HDRコンテンツは典型的に、BT.2020/BT.2100コンテナにて、NCL Y’CbCr PQ、一定ルミナンスICtCp PQ、又はNCL Y’CbCr HLGとしてコーディングされる。現行のVVC仕様では、ルマをクロマ量子化パラメータにマッピングするためのマッピングテーブルが1つだけ規定されている(表1)。該テーブルは、HEVCから継承されたものであり、SDRコンテンツ用に設計されただけのものである。[3]にて報告されているように、デフォルトQpCテーブルを使用することは、特に無彩色の領域で、低ビットレートにおいてクロマアーチファクトを生じさせる。この文書は、HDRコンテンツに固有の(1つ以上の)クロママッピングテーブルを追加することを提案する。
【0198】
新たに開発された標準は数年かけて展開されること、及び処理される信号タイプの多様性が増大され得ることを考えると、マッピングテーブル仕様に柔軟性を持たせることが望ましくあり得る。また、コンテンツ固有のクロマQPマッピングテーブルを使用することは、エンコーダ最適化に関するいっそう多くのオプションをもたらし得る。単純なソリューションは、ピクチャ/スライス/タイルグループレベルでマッピングテーブルを規定することである。しかしながら、コーデックによってサポートされるQP範囲が十分に広くなり得ること(例えば、VVCにおいて、それは0から63の範囲内である)を考えると、直接的なテーブル規定はかなりの量のビットを消費してしまい得る。ビット消費を減らすことを可能にするクロマQPマッピングテーブルのシグナリングのための方法を更に説明する。更に理解されるべきことには、ルマQPとクロマQPとの間の関係は、関数として又はテーブル表現としてのいずれで表現されてもよく、ここで及び以降では、マッピングテーブルとマッピング関数とを同義語として使用する。
【0199】
図7は、サポートされるQP範囲についての、量子化パラメータインデックスQPiのクロマ量子化パラメータQPcへのHEVCマッピング関数を概略的に表した図であり、72はHEVCマッピング関数であり、71は一対一マッピング関数である。
【0200】
本開示をより良く理解するためにこの時点で思い出しておくべきことには、x<=yである全てのx及びyについてf(x)<=f(y)であり、従ってfが順序を維持する場合に、関数は単調増加と呼ばれ、すなわち、増加又は非減少とも呼ばれる。ここで理解されるべきことには、x及びyは、それに対して関数が定義される集合からのものである。
【0201】
線形関数の場合、傾きがdf(x)/dxとして定義される。上記を参照されたいことには、非減少関数の定義によれば、dx及びdf(x)は常に同じ符号をもつ。従って、代わってdf(x)/dx及び傾きは常に非負である。これは、下記を参照されたいことには、ピボット点のdx及びdf(x)を符号化するのに符号なしue(v)コードを使用することによって達成され得る。
【0202】
発明の第1実施形態によれば、ルマ・ツー・クロママッピング関数は、2つのクラスの領域に分割される単調増加(非減少)関数である。クラスAは、関数が増加しない(すなわちフラットである)、すなわち、f(x)-f(x-1)=0であるフラット領域(732)であり、クラスB領域は、関数が増加する領域(731)、すなわち、f(x)-f(x-1)=cである領域であり、ここで、cはxの関数であり且つc(x)>=1であり、より具体的なケースでは、クラスB領域において、関数は、連続した入力引数ごとに増分1を有し、すなわち、f(x)-f(x-1)=1である。入力引数値xの集合Xが、2つの重なり合わない集合に分割される。集合Aが、非増加領域(クラスA)からの関数値に対応し、集合Bが、増加領域(クラスB)からの関数値に対応する。なお、X=A+Bである。
【0203】
図8は、ゼロに等しい、すなわち、フラット領域の、関数デルタ値(87)、及び対応する引数値x(88)の例を指す例示的なマッピングテーブルを表している。例えば、HEVCマッピングテーブル82では、集合Aは、値30、35、37、39、41及び43からなる。別の例示的な修正マッピングテーブル83では、集合Aは、値30、39、43(又は35、39、43)からなる。第1実施形態によれば、集合Aがビットストリーム内でシグナリングされ、デコーダが、ビットストリームから得られる集合Aについての情報に従って、マッピング関数を例えばテーブル形式で構築する。Xは例えば、デコーダによってサポートされるQP範囲(例えば、0から63)の集合であるとして、Bは、B=X-Aとして導出されることができ、且つ集合A及びBの入力引数に対してマッピング関数挙動が定められているので、マッピング関数は、x=0に対応するマッピング関数の最初の値が0であるという仮定を用いる以下の例示的な擬似コードを用いて、例えばテーブル形式で構築されることができる:
chroma_qp_mapping_table[0]=0; // 初期化
for(i=1;i<=maxQP;i++) // maxQPはデコーダによってサポートされる最大QP
{
int incStep=1; // 集合Bに対する関数増分
for(j=0;j<cQpFlatSize;j++) // cQpFlatSizeは集合Aのサイズ
{
if(i==cQpFlat[j]) // cQpFlatは、集合Aの要素を有するアレイ
{
incStep=0; // 集合Aに対するゼロ関数増分(フラット)
break;
}
}
chroma_qp_mapping_table[i]=chroma_qp_mapping_table[i-1]+incStep;
}
【0204】
以下は、所与のQPインデックスQPiに基づいて1つのQPcをどのように計算することができるのかを例証する別の例示的な擬似コードである:
int getQPc(int QPi)
{
int QPi=i;
int sum=0;
for(int j=0;j<cQpFlatSize;j++)
{
sum=sum+(cQpFlat[j]<=QPi?1:0);
}
int QPc=QPi-sum;
return QPc
}
【0205】
なお、一部の実装セットにおいて、集合Xは、デコーダによってサポートされるQP範囲のうちの何らかの部分集合であってもよい。その部分集合は、予め定められることができ、あるいはビットストリーム内でシグナリングされることができる。
【0206】
なお、マッピング関数のフラット(非増加)領域の定義はまた、現在及び次の入力引数値を用いる、すなわち、f(x+1)-f(x)=0を用いる形式で与えられることもできる。理解されることには、このような定義は、マッピング関数をシグナリング及び取得することのロジックを変えるものではない。例えば、値x+1を集合Aに入れることによって、同様の効果を達成することができる。
【0207】
マッピング関数の点が、2つのクラスの定められた挙動に分類され、マッピング関数が増加しない点の数が制限されるので、シグナリングオーバーヘッドが、マッピング関数の各値の直接的なシグナリングと比較して減少される。
【0208】
デコーダに側で集合Aを得るために、ビットストリームは、該集合のサイズ(要素の数)及び要素値についての情報を有する。
【0209】
実施形態の第1の態様によれば、集合Aのサイズ(sizeA)が直接、例えばバイナリ、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードといった、適切なコードのうちの1つを用いてビットストリーム内でシグナリングされる。集合Aが非ゼロのサイズを持つという制約を有する一部の実装では、値sizeA-1がビットストリーム内でシグナリングされる。これは、1ビット分のシグナリングを節約することを可能にする。
【0210】
実施形態の第2の態様によれば、集合Aの要素の値(例えば、30、39、43)が直接、例えばバイナリ、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードといった、適切なコードのうちの1つを用いてビットストリーム内でシグナリングされる。対応するマッピング関数は、以下の例示的な形式でテーブルとして表されることができる:
【表17】
【0211】
理解されるべきことには、この上述のテーブルは、ビットストリームを介したマッピングテーブルのシグナリングが有効にされないとき、又はエンコーダ/デコーダによってサポートされない場合に、デフォルトマッピング関数を規定するのに使用されることができる。
【0212】
第2の態様に従った他の例示的な一実施形態において、集合Aの要素の値は(35,39,43)に等しい。対応するマッピング関数は、以下の例示的な形式でテーブルとして表されることができる:
【表18】
【0213】
理解されるべきことには、この上述のテーブルは、ビットストリームを介したマッピングテーブルのシグナリングが有効にされないとき、又はエンコーダ/デコーダによってサポートされない場合に、デフォルトマッピング関数を規定するのに使用されることができる。
【0214】
第3の態様によれば、現在の要素の値(ai)と先行する要素の値(ai-1)との間の差(delta_ai)が、最初の要素を除く各要素(例えば、i>0での、delta_ai=ai-ai-1)についてシグナリングされる。順になった集合Aを有することは、負の差を排除して符号ビットのシグナリングを節約することを可能にする。また、集合A内の要素値が唯一無二(非反復)であることを知っていることは、delta_aiが常にゼロより大きいことを保証し、これは、ビットストリーム内でdelta_ai-1をシグナリングすることを可能にして、シグナリングオーバーヘッドの更なる減少を提供する。
【0215】
集合Aの最初の値a0は、何らかのstarting_point_valueとの差としてシグナリングされ、starting_point_valueは、ビットストリーム内でシグナリングされるか、あるいは、例えば0、21、30、maxQP>>1といった、何らかの予め定められた値であるかのいずれかであり、maxQPは、例えば63といった、デコーダによってサポートされる最大QP値であり、starting_point_valueはコンテンツタイプ(例えば、SDR又はHDR)にも依存し得る。差delta_a0は、上述の方法に従ってシグナリングされる。適切なstarting_point_valueを選択することは、最初の値のシグナリングのビットを節約することを可能にする。
【0216】
以下は、上述のシグナリング方法についての構文テーブル及び対応するセマンティクスの一例である。
【0217】
【0218】
クロマQPマッピングデータセマンティクス:
cqp_flat_points_minus1に1を足したものは、マッピング関数が増加しない点の数を規定する;
cqp_delta_fp0は、マッピング関数が増加しない点の集合の最初の要素とstarting_point_valueとの間のデルタ値を規定し、starting_point_valueは21に等しく(別の取り得る実装では、starting_point_valueは、0、又は26、又は32であることができ、あるいは、例えばmaxQP/2としてなど、サポートされるQP範囲に基づいて定められることができる)。cqp_delta_fp_minus1[i]に1を足したものは、マッピング関数が増加しない点の集合のi番目の要素と(i-1)番目の要素との間のデルタ値を規定する;
変数cQpFlatSizeは次のように導出される:
cQpFlatSize=cqp_flat_points_minus1+1
変数cQpFlat[]は次のように導出される:
cQpFlat[0]=cqp_delta_fp0+starting_point_value;
for(i=1;i<cQpFlatSize;i++){
cQpFlat[i]=cqp_delta_fp_minus1[i]+1+cQpFlat[i-1]
}
クロマQPマッピングテーブルcqpMappingTable[]は次のように導出され:
cqpMappingTable[0]=0;
for(i=1;i<=maxQP;i++){
incStep=1
for(j=0;j<cQpFlatSize;j++)
{
if(i==cQpFlat[j])
{
incStep=0
}
}
cqpMappingTable[i]=cqpMappingTable[i-1]+incStep;
}
ここで、maxQPは、サポートされる最大QPである。
【0219】
starting_point_valueが0である場合の取り得る一実装において、cqp_delta_fp0は、マッピング関数が増加しない点の集合の最初の要素の値を規定する。
【0220】
同じ結果を得て、ある特定のQPインデックスQPiに基づいてQPcを取得することを可能にするための代わりセマンティクスは、次の通りである:
sum=0
for(j=0;j<cQpFlatSize;j++){
sum=sum+(cQpFlat[j]<=QPi?1:0)
}
QPc=QPi-sum
【0221】
starting_point_valueが0である場合の取り得る実装は、以下の構文及びセマンティクスを有し得る:
【表20】
又は、代わりの一例として:
【表21】
【0222】
1に等しいchroma_qp_mapping_flagは、クロマQpマッピングテーブルがシグナリングされ、QpCを導出するのに使用される表2に優先することを規定する。0に等しいchroma_qp_mapping_flagは、表2に規定されるデフォルトのクロマQpマッピングテーブルが、QpCを導出するのに使用されることを規定する。chroma_qp_mapping_flagが存在しないとき、それは0に等しいと推定される;
cqp_flat_points_minus1に1を足したものは、マッピング関数が増加しない点の数を規定する;
cqp_fp0は、マッピング関数が増加しない点の集合の最初の要素を規定する;
cqp_delta_fp_minus1[i]に1を足したものは、マッピング関数が増加しない点の集合のi番目の要素と(i-1)番目の要素との間のデルタ値を規定する。
【0223】
変数cQpFlatSizeは次のように導出される:
cQpFlatSize=cqp_flat_points_minus1+1
変数cQpFlat[]は次のように導出される:
cQpFlat[0]=cqp_fp0;
for(i=1;i<cQpFlatSize;i++){
cQpFlat[i]=cqp_delta_fp_minus1[i]+1+cQpFlat[i-1]
}
クロマQPマッピングテーブルcqpMappingTable[]は次のように導出され:
cqpMappingTable[0]=0;
for(i=1;i<=maxQP;i++){
incStep=1
for(j=0;j<cQpFlatSize;j++)
{
if(i==cQpFlat[j])
incStep=0
}
cqpMappingTable[i]=cqpMappingTable[i-1]+incStep;
}
ここで、maxQPは、サポートされる最大QPである。
【0224】
一例において、qPCb、qPCr及びqPCbCrが次のように導出され:
qPChroma=Clip3(-QpBdOffset,63,QpY);
qPCb=ChromaQpTable[0][qPChroma];
qPCr=ChromaQpTable[1][qPChroma];
qPCbCr=ChromaQpTable[2][qPChroma];
Cb成分及びCr成分用のクロマ量子化パラメータQp’Cb及びQp’Cr、並びにジョイントCb-CrコーディングQp’CbCrが、次のように導出され:
Qp’Cb=Clip3(-QpBdOffset,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffset;
Qp’Cr=Clip3(-QpBdOffset,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffset;
Qp’CbCr=Clip3(-QpBdOffset,63,qPCbCr+pps_joint_cbcr_qp_offset_value+slice_joint_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffset;
ChromaQpTableは、前記クロマQPマッピングテーブルであり;
QPiは、qPChromaに対応し;
QPcは、qPCb、qPCr及びqPCbCrに対応し;
QpBdOffsetは、式:
QpBdOffset=6*bit_depth_minus8
を用いてルマアレイ及びクロマアレイのサンプルのビット深度に基づいて計算されるビット深度オフセットであり;
bit_depth_minus8は、両端を含めて0から8の範囲内とされ;
pps_cb_qp_offset及びpps_cr_qp_offsetは、それぞれ、Qp’Cb及びQp’Crを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し;
pps_joint_cbcr_qp_offset_valueは、Qp’CbCrを導出するのに使用される、ルマ量子化パラメータQp’Yに対するオフセットを規定し;
slice_cr_qp_offsetは、Qp’Cr量子化パラメータの値を決定するときにpps_cr_qp_offsetの値に加算される差分を規定し;
slice_cb_qp_offsetは、Qp’Cb量子化パラメータの値を決定するときにpps_cb_qp_offsetの値に加算される差分を規定し;
slice_joint_cbcr_qp_offsetは、Qp’CbCrの値を決定するときにpps_joint_cbcr_qp_offset_valueに加算される差分を規定し;
変数CuQpOffsetCb、CuQpOffsetCr、及びCuQpOffsetCbCrは、前記デコーダ用のQp’Cb、Qp’Cr、及びQp’CbCr量子化パラメータのそれぞれの値を決定するときに使用される値を規定する。
【0225】
一部の実装において、非増加点のアレイcQpFlatの導出において、ピクチャレベル及びスライスレベルのクロマQPオフセット(pps_cr_qp_offset、slice_cr_qp_offset)を利用することができる:
変数cQpFlat[]は次のように導出される:
cQpFlat[0]=cqp_fp0;
for(i=1;i<cQpFlatSize;i++){
cQpFlat[i]=cqp_delta_fp_minus1[i]+1+cQpFlat[i-1]-pps_cr_qp_offset-pps_cr_qp_offset
}
【0226】
以下は、クロミナンスQP導出プロセスに統合される、ビットストリームから構文解析された情報に基づいて得られる非増加点のアレイcQpFlatを使用する例である:
ChromaArrayTypeが0に等しくなく、且つtreeTypeがSINGLE_TREE又はDUAL_TREE_CHROMAに等しいとき、以下が適用される:
- treeTypeがDUAL_TREE_CHROMAに等しいとき、変数QpYは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- 変数qPCb、qPCr及びqPCbCrは、次のように導出される:
qPiCb=Clip3(-QpBdOffsetC,69,QpY+pps_cb_qp_offset+slice_cb_qp_offset) (8-928)
qPiCr=Clip3(-QpBdOffsetC,69,QpY+pps_cr_qp_offset+slice_cr_qp_offset) (8-929)
qPiCbCr=Clip3(-QpBdOffsetC,69,QpY+pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset) (8-930)
- ChromaArrayTypeが1に等しい場合、変数qPCb、qPCr及びqPCbCrは、次のように、QpCの値に等しく設定され:
QpC=qPi-QpShift,
ここで、変数QpShiftは、次のように導出される:
QpShift=0
for(j=0;j<cQpFlatSize;j++){
QpShift=QpShift+(cQpFlat[j]<=qPi?1:0)
}
【0227】
上に与えられた例における変数cQpFlatは、デフォルトのマッピングテーブルの定義及び初期化に使用されることができる。以下は、デフォルトとして使用されることができるcQpFlatの例である:
cQpFlat={30,35,37,39,41,43}
cQpFlat={30,39,43}
cQpFlat={35,39,43}cQpFlat={35,39,41,43}
cQpFlat={22,23,25,27,29,31,33,35,39,40,41,43,47,49,51,53,55}
cQpFlat={21,22,24,25,26,27,29,30,31,32,33,35,42,47,49,51,53,55}
【0228】
cQpFlat[0]の値がstarting_point_valueより低いことを可能にするため、cqp_delta_fp0は負であることができ、このパラメータのシグナリングは、符号ビットを含むことができ、あるいは、以下の例に規定されるように、符号付きExp-Golombコードを使用することができる:
【表22】
【0229】
あるいは、一部の例示的な実装において、集合Aのサイズ及び値が、以下の方式でシグナリングされる:
1. 以下のビットストリーム情報が集合Aの要素を含んでいるかのインジケータを読み取る;
2. インジケータが正(TRUE)である場合、例えば、態様2又は態様3に記載される方法に従って、要素値を読み取る。ステップ1を繰り返す;
3. インジケータが負(FALSE)である場合、集合Aに関係する情報を読み取ることを中止する。
【0230】
この実装では、集合Aのサイズは、正の値を持つインジケータの数である。
【0231】
集合Aがエンプティではないという制約を持つことは、集合Aのサイズ及び値のシグナリングを以下の方式で実装することを可能にする:
1. 例えば態様2又は態様3に記載される方法に従って要素値を読み取る;
2. 後続のビットストリーム情報が、集合Aの別の要素を含むかのインジケータを読み取る;
3. インジケータが正(TRUE)である場合、ステップ1及び次いでステップ2を繰り返す;
4. インジケータが負(FALSE)である場合、集合Aに関係する情報を読み取ることを中止する。
【0232】
この実装では、集合Aのサイズは、正の値を持つインジケータの数に1を加えたものである。集合Aがエンプティではないという制約を持つことは、1つの追加インジケータのシグナリングを排除することを可能にし、これは、シグナリングオーバーヘッドを更に減少させる。
【0233】
言及しておくべきことには、上述の集合Aのサイズ及び要素の値のシグナリングは、適切なコード、例えばバイナリ、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードといった、適切なコードのうちのいずれかを用いて実装されることができる。
【0234】
マッピング関数の一部の実現において、フラット領域(集合A)の要素の数は、増加領域(集合B)の要素の数よりも多いことができる。その場合、上述の方法を用いる代わりに、集合Bの要素をシグナリングすることが有益である。
【0235】
発明の第2実施形態によれば、ルマ・ツー・クロママッピング関数のクラスB領域が、Bkという部分集合のセットに分割され、各部分集合Bkが、そこでマッピング関数が同じ増分ckを持つ要素xを含む:
f(x)-f(x-1)=ckである場合、x∈Bk、ここで、ckは自然数(例えば、0,1,2,3,4,…)のうちの1つである。
【0236】
換言すれば、部分集合Bが、部分集合Bkの点xにおけるマッピング関数増分の量に応じて複数の異なる部分集合に分割される。
【0237】
図10に示す例において、1031によって指し示される領域は、1に等しいマッピング関数増分(c
k=1)を有する。1032によって指し示される領域は、2に等しい関数増分(c
k=2)を有する。1032によって指し示される領域は、0に等しい関数増分(c
k=0)を有する。下の表は、
図10に示した例示的な関数に対応する部分集合Bkの分割を説明するものである。
【表23】
ここで、maxQPは、デコーダによってサポートされる最大QP値(例えば、0から63)である。
【0238】
第3実施形態によれば、ビットストリームは、ビットストリーム内でシグナリングされた部分集合Bkの数、ビットストリーム内でシグナリングされる各部分集合に関する関数増分ck、ビットストリーム内でシグナリングされる各部分集合Bkのサイズ、及びビットストリーム内でシグナリングされる各部分集合Bkの点、についての情報を有する。
【0239】
以下はif構文及びセマンティクスの例である:
【表24】
cqp_set_numは、クロマQpマッピングテーブルが非デフォルト挙動を持つ点の集合の数である(デフォルト挙動関数の下では関数増分が1に等しいことが理解され、一般に、デフォルト挙動は、例えば、前にシグナリングされたマッピング関数又はデフォルトマッピング関数としてなど、他の方式で定義されることができる);
cqp_set_inc[k]は、k番目の集合の点における関数増分を規定する;
cqp_set_size[k]は、k番目の集合の点の数を規定する;
cqp_fp0は、マッピング関数が増加しない点の集合の最初の要素を規定する;
cqp_set_point[k][i]は、k番目の集合のi番目の要素を規定する(ここでは、上の例においてのように、i=0以外の要素について、i番目と(i-1)番目との間のデルタのコーディングを用いることができる);
変数cQpFlatSizeは次のように導出される:
cQpFlatSize=cqp_flat_points_minus1+1
変数cQpFlat[]は次のように導出される:
cQpFlat[0]=cqp_fp0;
for(i=1;i<cQpFlatSize;i++){
cQpFlat[i]=cqp_delta_fp_minus1[i]+1+cQpFlat[i-1]
}
クロマQPマッピングテーブルcqpMappingTable[]は次のように導出され:
cqpMappingTable[0]=0;
for(i=1;i<=maxQP;i++){
incStep=1 //(デフォルト挙動をセット)
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
if(i==cqp_set_point[k][i])
incStep=cqp_set_inc[k]
}
}
cqpMappingTable[i]=cqpMappingTable[i-1]+incStep;
}
ここで、maxQPは、サポートされる最大QPである。
【0240】
特定のQPインデックス(qPi)に基づく特定のQpC値の導出は、以下のように記述され得る:
QpC=qPi+QpShift,
ここで、変数QpShiftは次のように導出され:
QpShift=0
defInc=1
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
if(qPi<=cqp_set_point[k][i])
QpShift=QpShift+cqp_set_inc[k]-defInc
}
}
ここで、変数defInc=1はデフォルト関数増分を定める(例えば、与えられた例では1に等しい)。
【0241】
あるいは代わりに:
QpC=qPi+QpShift,
ここで、変数QpShiftは次のように導出される:
QpShift=0
defInc=1
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
QpShift=QpShift+(cqp_set_point[k][i]<=qPi?cqp_set_inc[k]-defInc:0)
}
}
【0242】
なお、変数cqp_set_inc[k]に関する値がシグナリングされることは(例えば、符号付きExp-Golombコード(se(v))を使用してシグナリングされる)、関数の負の増分を持つすなわち、マッピング関数減少が同じセマンティクスを維持する、という更なる柔軟性を可能にする。
【0243】
第2実施形態の第2の態様として、クロマQPマッピングテーブル情報は、デフォルトマッピング関数又は前にシグナリングされたマッピング関数の変更に使用されることができる。これは、変化する映像信号特性をより良く利用することによって圧縮効率を高めるために、映像シーケンスの特定の部分に対するマッピング関数の適応に使用されることができる。この態様によれば、上述のデフォルト関数挙動(又は増分)が、既存のマッピング関数増分によって置き換えられる。例示的なセマンティクスは、以下の通りとし得る:
クロマQPマッピングテーブルcqpMappingTable[]は次のように導出され:
cqpMappingTable[0]=0;
for(i=1;i<=maxQP;i++){
incStep=cqpMappingTablePrev[i]-cqpMappingTablePrev[i-1]//(前のマッピング関数増分)
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
if(i==cqp_set_point[k][j])
incStep=cqp_set_inc[k]
}
}
cqpMappingTable[i]=cqpMappingTable[i-1]+incStep;
}
ここで、maxQPはサポートされる最大QPであり、cqpMappingTablePrevは、前にシグナリングされた、又はデフォルトの、マッピングテーブルである。
【0244】
特定のQPインデックス(qPi)に基づく特定のQpC値の導出は、以下のように記述され得る:
QpC=qPi+QpShift,
ここで、変数QpShiftは次のように導出され:
QpShift=0
defInc=cqpMappingTablePrev[qPi]-cqpMappingTablePrev[qPi-1]
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
if(qPi<=cqp_set_point[k][i])
QpShift=QpShift+cqp_set_inc[k]-defInc
}
}
ここで、変数defIncは前のマッピング関数(cqpMappingTablePrev)の増分を定める。
【0245】
あるいは代わりに:
QpC=qPi+QpShift,
ここで、変数QpShiftは次のように導出され:
QpShift=0
defInc=cqpMappingTablePrev[qPi]-cqpMappingTablePrev[qPi-1]
for(k=0;k<cqp_set_num;k++){
for(j=0;j<cqp_set_size[k];j++){
QpShift=QpShift+(cqp_set_point[k][i]<=qPi?cqp_set_inc[k]-defInc:0)
}
}
ここで、変数defIncは前のマッピング関数(cqpMappingTablePrev)の増分を定める。
【0246】
第2実施形態で説明した使用方法は、pps_cr_qp_offset及びslice_cr_qp_offsetパラメータをQPインデックス(qPi)計算から除外し、ルマQPをマッピング関数の入力引数として使用することを可能にする。これは、クロマQPパラメータ導出公式を単純化し、ビットストリーム内でクロマQPオフセットパラメータpps_cr_qp_offset及びslice_cr_qp_offsetをシグナリングする必要を排除する。
【0247】
pps_cr_qp_offset及びslice_cr_qp_offsetパラメータは、マッピング関数を適用した後に適用されることができる。
【0248】
以下は、各点でのマッピング関数の増加がどれだけ大きいかの制限を持たない、他の一例の構文及びセマンティクスである。マッピング関数は依然として非減少であるという制限を持つ。
【0249】
【0250】
セマンティクス:オプション2、テーブルベース
シグナリングされるパラメータに基づいてクロマQpマッピングテーブルを導出するために、以下のセマンティクスが提案される:
1に等しいsame_сqp_tableは、1つのクロマQPマッピングテーブルのみがシグナリングされて、Cb及びCr成分の両方並びにジョイントCb-Crコーディングに適用されることを規定する。0に等しいsame_сqp_tableは、3つのクロマQPマッピングテーブルがSPS内でシグナリングされることを規定する;
cqp_set_num_m1[n]に1を足したものは、n番目のクロマQpマッピング関数が1以外のデルタ値を持つ点の集合の数を規定する;
cqp_set_inc[n][k]は、k番目の集合の点におけるクロマQpマッピング関数増分を規定し、1ではないことに制約される;
cqp_set_size_m1[n][k]に1を足したものは、その集合の点の数を規定する;
cqp_set_delta_m1[n][k][i]に1を足したものは、iが0に等しい場合には集合のi番目の要素を規定し、それ以外の場合にはi番目の要素と(i-1)番目の要素との間のデルタ値を規定する;
アレイcqp_set_point[n][k][i]は、n番目のクロマQpマッピングテーブルが1以外のデルタ値を持つ点の集合を規定し、次のように導出される:
cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i-1]:0)
n=0..same_qp_table_for_chroma?0:2でのn番目のクロマQPマッピングテーブルcqpMappingTable[i]が、次のように導出され:
cqpMappingTable[n][0]=0
cqpMappingTable[n][i]=cqpMappingTable[n][i-1]+incStep,withi=1..63
ここで、incStepは1に初期化され、次のように変更される:
for k=0..cqp_set_num_m1[n]、及びj=0..cqp_set_size_m1[n][k]:
- If(i==cqp_set_point[n][k][j]) incStep=cqp_set_inc[n][k]
【0251】
一部の実装では、メモリを節約するためにマッピングテーブル全体を格納することを避けることが有益であり得る。それを達成するために、特定のクロマQp値に対する導出プロセスが提供される。それに関する構文要素及びセマンティクスはオプション1と同じであるが、cqpMappingTableの維持管理は必要ない:
1に等しいsame_сqp_tableは、1つのクロマQPマッピングテーブルのみがシグナリングされて、Cb及びCr成分の両方並びにジョイントCb-Crコーディングに適用されることを規定する。0に等しいsame_сqp_tableは、3つのクロマQPマッピングテーブルがSPS内でシグナリングされることを規定する;
cqp_set_num_m1[n]に1を足したものは、n番目のクロマQpマッピング関数が1以外のデルタ値を持つ点の集合の数を規定する;
cqp_set_inc[n][k]は、k番目の集合の点におけるクロマQpマッピング関数増分を規定し、1ではないことに制約される;
cqp_set_size_m1[n][k]に1を足したものは、その集合の点の数を規定する;
cqp_set_delta_m1[n][k][i]に1を足したものは、iが0に等しい場合には集合のi番目の要素を規定し、それ以外の場合にはi番目の要素と(i-1)番目の要素との間のデルタ値を規定する;
アレイcqp_set_point[n][k][i]は、n番目のクロマQpマッピングテーブルが1以外のデルタ値を持つ点の集合を規定し、次のように導出される:
cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i-1]:0)
【0252】
セマンティクス:オプション2、テーブルレス
一部の実装では、メモリを節約するためにマッピングテーブル全体を格納することを避けることが有益であり得る。それを達成するために、特定のクロマQp値に対する導出プロセスが提供される。それに関する構文要素及びセマンティクスはオプション1と同じであるが、cqpMappingTableの維持管理は必要ない:
1に等しいsame_сqp_tableは、1つのクロマQPマッピングテーブルのみがシグナリングされて、Cb及びCr成分の両方並びにジョイントCb-Crコーディングに適用されることを規定する。0に等しいsame_сqp_tableは、3つのクロマQPマッピングテーブルがSPS内でシグナリングされることを規定する;
cqp_set_num_m1[n]に1を足したものは、n番目のクロマQpマッピング関数が1以外のデルタ値を持つ点の集合の数を規定する;
cqp_set_inc[n][k]は、k番目の集合の点におけるクロマQpマッピング関数増分を規定し、1ではないことに制約される;
cqp_set_size_m1[n][k]に1を足したものは、その集合の点の数を規定する;
cqp_set_delta_m1[n][k][i]に1を足したものは、iが0に等しい場合には集合のi番目の要素を規定し、それ以外の場合にはi番目の要素と(i-1)番目の要素との間のデルタ値を規定する;
アレイcqp_set_point[n][k][i]は、n番目のクロマQpマッピングテーブルが1以外のデルタ値を持つ点の集合を規定し、次のように導出される:
cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i-1]:0)
【0253】
導出プロセス
treeTypeがDUAL_TREE_CHROMAに等しいとき、変数QpYは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- n=0..2で、アレイQpMapOffset[n]が0で初期化される。ChromaArrayTypeが1に等しい場合、QpMapOffsetが次のように変更される:k=0..cqp_set_num_m1[n]及びi=0..cqp_set_size_m1[n][k]で:
- QpMapOffset[n]=QpMapOffset[n]+(cqp_set_point[n][k][i]<=QpY?cqp_set_inc[n][k]-1:0).
- 変数QpOffsetCb、QpOffsetCr、及びQpOffsetCbCrは、次のように導出される:
QpOffsetCb=QpMapOffset[0]+pps_cb_qp_offset+slice_cb_qp_offset
QpOffsetCr=QpMapOffset[1]+pps_cr_qp_offset+slice_cr_qp_offset
QpOffsetCbCr=QpMapOffset[2]+pps_cbcr_qp_offset+slice_cbcr_qp_offset
- Cb及びCr成分並びにジョイントCb-Crコーディング用のクロマ量子化パラメータQp’Cb及びQp’Cr並びにQp’CbCrは、次のように導出される:
Qp′Cb=Clip3(-QpBdOffsetC,63,QpY+QpOffsetCb)+QpBdOffsetC (8-931)
Qp′Cr=Clip3(-QpBdOffsetC,63,QpY+QpOffsetCr)+QpBdOffsetC (8-932)
Qp′CbCr=Clip3(-QpBdOffsetC,63,QpY+QpOffsetCbCr)+QpBdOffsetC
(8-933)
【0254】
なお、CbとCrとについて別々のマッピングテーブルが使用されることができ、すなわち、Cb用のマッピングテーブルの情報がビットストリームに基づいて取得され得るとともに、Cr用のマッピングテーブルの情報がビットストリームに基づいて取得され得る。
【0255】
第3実施形態によれば、マッピング関数は区分関数として表現され、ビットストリーム内でシグナリングされる情報は、例えば
図9に示される94、95といった、区分関数の区切り点(又は変化点、又はピボット点)である。
【0256】
最も単純な方式では、マッピング関数を得るための情報として、ピボット点の数とそのx及びy座標がビットストリーム内でシグナリングされる。第1実施形態の態様1で説明したのと同様にして、ピボット点を有する集合のサイズを、ゼロより大きいサイズを持つように制約することができ、その場合、値size-1がビットストリーム内でシグナリングされる。なお、“マッピング関数を得るための情報”は“マッピング関数の情報”と記載されてもよく、“・・・を得るための情報”は“・・・の情報”と記載されてもよい。
【0257】
第3実施形態の第1の態様において、マッピング関数を表すために区分線形関数が使用される。
【0258】
更なる実装では、集合内の最初の点(点D94)が単調一対一関数91に属し、例えばDxといった1つの座標をシグナリングすることで十分であり、DyはDy=Dxとして導出されると制約することができる。さらに、区分線形関数の最後のセグメント(又はピース)が一対一関数に平行であると仮定すると、点F96はシグナリングされる必要がなく、最後のセグメントのパラメータは、最後のセグメントが一対一関数に平行であるという知識と点E95とに基づいて導出される。
【0259】
シグナリングオーバーヘッドを更に減少させるために、現在のピボット点(例えば、E95)と先行するピボット点(例えば、D94)との対応するx及びy座標の間の差がビットストリーム内でシグナリングされる。最初の点については、何らかのstarting_pointからの差分がシグナリングされる。starting_pointは、何らかの予め定められた点であるか、ビットストリーム内でシグナリングされるかのいずれかである。一部の実装では、starting_pointが一対一ライン上にあると制約することができ、その場合、starting_pointを定めるのに1つの座標で十分である。
【0260】
マッピング関数の単調増加を達成するために、現在の及び先行するピボット点の対応するx及びy座標の間の差は、例えば0以上など、負でないように制約される。差分をシグナリングするために、例えば符号なし整数0次Exp-Golombコードといった符号なしコードを使用することができる。
【0261】
指摘しておくべきことには、上述の実施形態1及び実施形態2は、デコーダの1つの実装において共存することができる。例えば、より少ないビットをシグナリングに関して有するといった、最も適切な方法がエンコーダによって選択され、対応するインジケータによってビットストリーム内でシグナリングされる。一部の実装において、デコーダは、予め定められたマッピング関数と、ビットストリームから得られたマッピング関数を用いるオプションとを使用することができる。その場合、オプションは、対応するインジケータによってビットストリーム内でシグナリングされる。適切なマッピング関数は、シーケンス又はその一部の特定の信号特性に依存し得るので、エンコーダは、より良い圧縮効率、及び再構成映像におけるバランスのとれたルマ及びクロマ品質を達成するために、予め定められたマッピング関数を使用すべきか、それとも、ビットストリーム内でマッピング関数をシグナリングすることに幾らかの追加ビットを費やすべきかを決定し得る。
【0262】
シーケンスの異なる部分は、異なる信号特性を有し得るものであり、対応して異なる最適マッピング関数を有し得る。シーケンスの異なる部分に対してマッピング関数を変更する能力を提供するために、ビットストリームは、マッピング関数を変更するかを指し示すインジケータを、例えば、ピクチャ、スライス、若しくはタイルグループレベルにて、又は適応パラメータセットにて含む。これは、シーケンスの一部の特定の信号特性に合わせて、より良好に調整することによって、圧縮効率を高めることを可能にする。
【0263】
以下は、シーケンスパラメータセット内でマッピング関数情報をシグナリングすることに対応する構文テーブルの一例である:
【表26】
上の構文テーブルに関する例示的なセマンティクスは以下の通りである:
1に等しいchroma_qp_mapping_flagは、クロマQpマッピング関数がシグナリングされて、Qp
Cを導出するのに使用されるqPiの関数(ルマQpに基づいて導出される)として、Qp
C(クロマQp)のデフォルト仕様に優先することを規定する。0に等しいchroma_qp_mapping_flagは、Qp
Cを導出するのにデフォルトのクロマQpマッピングテーブルが使用しされることを規定する。chroma_qp_mapping_flagが存在しないとき、chroma_qp_mapping_flagは0に等しいと推定される。
【0264】
なお、一部の実装において、chroma_qp_mapping_flagは省略されて、系統的に1にされることができる。これが意味することは、クロマQpマッピング情報(cqp_mapping_data())が常にビットストリーム内に存在するということである。
【0265】
ビットストリームにて伝送される映像信号は、異なるクロマフォーマットサンプリング構造を有し得る。以下は、クロマサンプリングフォーマット仕様の一例である:
【表27】
モノクロサンプリングでは、名目上ルマアレイとみなされる1つのみのサンプルアレイが存在する;
4:2:0サンプリングでは、2つのクロマアレイの各々がルマアレイの半分の高さ及び半分の幅を有する;
4:2:2サンプリングでは、2つのクロマアレイの各々がルマアレイと同じ高さ及び半分の幅を有する;
4:4:4サンプリングでは、separate_colour_plane_flagの値に応じて、以下が適用される:
separate_colour_plane_flagが0に等しい場合、2つのクロマアレイの各々がルマアレイと同じ高さ及び幅を有する;
そうでない(separate_colour_plane_flagが1に等しい)場合、3つのカラープレーンが別々にモノクロサンプリングされたピクチャとして処理される。
【0266】
一部の実装において、chroma_qp_mapping_flag及び/又はクロマQpマッピング情報(cqp_mapping_data())は、下の表に例示的に規定されるようにクロマサンプリングフォーマットに依存することができ、ここで、chroma_format_idcが3に等しいことは、クロマサンプリングフォーマットが4:2:0であることを指し示している:
【表28】
【0267】
【0268】
この時点で留意すべきことには、ピクチャがモノクロである場合、ピクチャはルミナンスサンプルアレイのみを有し得る。従って、ピクチャは、例えば、モノクロフォーマットにおけるルマサンプルのアレイ、又は4:2:0、4:2:2、及び4:4:4カラーフォーマットにおける、ルマサンプルのアレイ及び2つの対応するクロマサンプルのアレイであり得る。
【0269】
以下は、適応パラメータセット内でマッピング関数情報をシグナリングすることに対応する構文テーブルの一例であり:
【表30】
ここで、CQP_APSがクロマQPマッピングテーブル情報の識別子である。
【0270】
好適なマッピング関数は、カラー成分の圧縮におけるコーデック効率及び特定のシーケンスの信号特性に依存し得る。このことは、HDRコンテンツにとって、よりいっそう考慮すべきことであり得る。何故なら、このタイプのコンテンツではカラー情報が非常に重要であるからである。また、Cb及びCr成分は、異なる特性を有し得るものであり、ひいては異なる最適マッピング関数を有し得る。コンテンツのタイプ及び特性によりよく適合するために、Cb成分とCr成分とで異なるマッピング関数を持つことが有益であり得る。この能力を提供するために、一部の有利な実装において、ビットストリームは、Cb及びCr成分の両方についてマッピング関数を得るための情報を有する。
【0271】
柔軟性を有することを可能にする更なる有利な実装において、ビットストリームは、Cb及びCr成分の両方についてマッピング関数がシグナリングされるかを指し示すインジケータを有する。インジケータが正(TRUE)である場合、デコーダは、Cb及びCr成分に対応する2つのマッピング関数をビットストリームから取得し、それを再構成プロセスにおいて使用する。さうでない場合、単一マッピング関数がCb及びCr成分の再構成に使用される。
【0272】
図11は、VVCクロマQpマッピングテーブルを実際にqPiの関数として示してみたものである。見て取れるように、ルマ・ツー・クロママッピング関数は、2つのクラスの領域で分割されることができる単調増加(非減少)関数である。クラスA領域では、関数が非増加(又はフラット)であり、すなわち、f(x)-f(x-1)=0であり、クラスB領域では、関数が増加している、すなわち、f(x)-f(x-1)=1である。
【0273】
シグナリングの方法において、我々は、クラスA(フラット領域)の点を、ビットストリーム内で、差分表現(例えば、cqp_delta_fpi=A[i]-A[i-1])を用いてシグナリングすることを提案する。提案する方法によれば、デコーダは、集合Aの点についての情報を用いてマッピング関数を構築する。許されるQp範囲の残りの点に関しては、マッピング関数が刻み幅1で単調増加されると仮定される。例えば、現行VVCマッピング関数を再現するためには、以下の点:30、35、37、39、41、及び43がシグナリングされる必要がある。
【0274】
SPSに、新たな構文要素chroma_qp_mapping_flagが追加される。chroma_qp_mapping_flagの値が0に等しいとき、デフォルトのクロマQpマッピングテーブルが使用される。chroma_qp_mapping_flagの値が1に等しいとき、クロマQpマッピングテーブルがシグナリングされる。
【0275】
例示的なシーケンスパラメータセット構文
【表31】
シグナリングされるパラメータに基づいてクロマQpマッピングテーブルを導出するために、以下のセマンティクスが提案される:
1に等しいchroma_qp_mapping_flagは、クロマQpマッピングテーブルがシグナリングされ、Qp
Cを導出するために使用されるqPiの関数としてのQpCの仕様である表8 15に優先することを規定する。0に等しいchroma_qp_mapping_flagは、Qp
Cを導出するために使用されるqPiの関数としてのQpCの仕様である表8 15に規定されるデフォルトのクロマQpマッピングテーブルが使用されることを規定する。chroma_qp_mapping_flagが存在しないとき、それは0に等しいと推定される;
cqp_flat_points_minus1に1を足したものは、マッピング関数が増加しない点の数を規定する;
cqp_fp0は、マッピング関数が増加しない点の集合の最初の要素を規定する;
cqp_delta_fp_minus1[i]に1を足したものは、マッピング関数が増加しない点の集合のi番目の要素と(i-1)番目の要素との間のデルタ値を規定する。
【0276】
変数cQpFlatSizeは次のように導出される:
cQpFlatSize=cqp_flat_points_minus1+1
変数cQpFlat[]は次のように導出される:
cQpFlat[0]=cqp_fp0;
for(i=1;i<cQpFlatSize;i++){
cQpFlat[i]=cqp_delta_fp_minus1[i]+1+cQpFlat[i-1]
}
クロマQPマッピングテーブルcqpMappingTable[]は次のように導出される:
cqpMappingTable[0]=0;
for(i=1;i<=maxQP;i++){
incStep=1
for(j=0;j<cQpFlatSize;j++)
{
if(i==cQpFlat[j])
incStep=0
}
cqpMappingTable[i]=cqpMappingTable[i-1]+incStep;
}
【0277】
当該提案の第2の態様として、我々は、点35、39、43に非増加領域を持つ調整マッピング関数を評価した。その調整マッピング関数を
図12に示す。
点35、39及び43にフラット領域を有する調整クロマQpマッピング関数を用いて、以下の結果を得た。マッピングテーブルを、提案するシグナリング機構を用いるテスト構成ファイルを用いて調整した。この実験において、我々は、AI構成のみに関してクロマQPオフセットを1に等しく保っている。構成RA、LDB及びLDPに関しては、クロマQPオフセットが0に設定されている。
【0278】
表A VTM5.0に対する調整マッピングテーブルのコーディング性能
【表32】
【0279】
気付いたことには、アンカーとしてのVTM5.0の使用は、一部のシーケンスについてRD曲線の交差をもたらす。これは、BDレート数値を関連ないものにし得る。正しい数値を得るために、我々は、HMに対するVTM5.0及び調整マッピングテーブルでの試験の性能の差をとることにより、VTM5.0に対する性能を見積もっている。下の表Bで、左側の部分は、VTM5.0とのBDレート差を表しており、真ん中の部分は、HM16.20に対する調整テーブルのコーディング性能を報告しており、右側の部分は、HMに対するVTM5.0のコーディング性能を比較のために与えている。
【0280】
表B HMをアンカーとした、VTM5.0に対する調整マッピングテーブルのコーディング性能の差
【表33】
【0281】
さらに、
図13は、本開示に従ったクロミナンス量子化パラメータを取得する方法を示している。
図13は、クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法を示しており、当該方法は、デコーダによって実行される。
図13の方法は、ビットストリームを受信するステップ1601と、ビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるクロマQPマッピングテーブルについての情報と、を取得するステップ1603と、ルミナンスQPに少なくとも部分的に基づいてQPiを取得するステップ1605と、取得した上記情報に基づいてクロマQPマッピングテーブルを取得するステップ1607と、取得したクロマQPマッピングテーブルと、取得したQPiとに基づいて、QPcを取得するステップ1609と、取得したQPcに基づいてクロミナンス量子化パラメータを取得するステップ1611と、を有する。
【0282】
さらに、
図14は、本開示に従ったデコーダ30を示している。
図13は、クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得するデコーダ30を示している。
図13のデコーダは、ビットストリームを受信するように構成された受信ユニット3001と、ビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるクロマQPマッピングテーブルについての情報と、を取得するように構成された構文解析ユニット3003と、ルミナンスQPに少なくとも部分的に基づいてQPiを取得するように構成された第1取得ユニット3005と、取得した上記情報に基づいてクロマQPマッピングテーブルを取得するように構成された第2取得ユニット3007と、取得したクロマQPマッピングテーブルと、取得したQPiとに基づいて、QPcを取得するように構成された第3取得ユニット3009と、取得したQPcに基づいてクロミナンス量子化パラメータを取得するように構成された第4取得ユニット3011と、を有する。
【0283】
理解されるべきことには、第1、第2、第3及び第4取得ユニット3005、3007、3009、3011は、別々のユニットとして示されているが、これらのユニットの2つ以上又は全てが実効的に、それぞれ、共通の1つの取得ユニット又は共通の複数の取得ユニットによって実現されてもよい。
【0284】
数学演算子
この出願で使用される数学演算子は、Cプログラミング言語で使用されるものと同様である。しかし、整数除算及び算術シフト演算の結果をいっそう正確に定義し、例えば指数化及び実数値除算などの更なる演算を定義する。番号付ける及びカウントすることの慣習は一般に0から始まり、例えば、“1番目(the first)”は0番(0-th)、“2番目(the second)”は1番(1-th)、等々である。
【0285】
算術演算子
以下の算術演算子は、次のように定義される:
【数3】
【0286】
論理演算子
以下の論理演算子は次のように定義される:
x&&y x及びyのブール論理“and”
x||y x及びyのブール論理“or”
! ブール論理“not”
x? y:z xがTRUEである又は0に等しくない場合、yの値の方を評価し、そうでない場合、zの値の方を評価する。
【0287】
関係演算子
以下の関係演算子は次のように定義される:
> より大きい
>= 以上
< より小さい
<= 以下
== 等しい
!= 等しくない。
【0288】
関係演算子が、値“na”(非該当)が割り当てられた構文要素又は変数に適用される場合、値“na”は、その構文要素又は変数に関する独特な値として扱われる。値“na”は、他の値とは等しくないとみなされる。
【0289】
ビット単位演算子
以下のビット単位演算子は次のように定義される:
& ビット単位の“and”。整数の引数について演算するとき、整数値の2の補数表現について演算する。別の引数よりも少ないビットを含むバイナリ引数について演算するとき、短い方の引数が、0に等しい上位ビットを付加することによって延ばされる。
| ビット単位の“or”。整数の引数について演算するとき、整数値の2の補数表現について演算する。別の引数よりも少ないビットを含むバイナリ引数について演算するとき、短い方の引数が、0に等しい上位ビットを付加することによって延ばされる。
^ ビット単位の“排他的or”。整数の引数について演算するとき、整数値の2の補数表現について演算する。別の引数よりも少ないビットを含むバイナリ引数について演算するとき、短い方の引数が、0に等しい上位ビットを付加することによって延ばされる。
x>>y xの2の補数の整数表現の、バイナリでy桁の算術右シフト。この関数は、負でない整数値のyに対してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされたビットは、シフト演算前のxのMSBに等しい値を持つ。
x<<y xの2の補数の整数表現の、バイナリでy桁の算術左シフト。この関数は、負でない整数値のyに対してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされたビットは、0に等しい値を持つ。
【0290】
割当て演算子
以下の算術演算子は次のように定義される:
= 割当て演算子
++ インクリメント、すなわち、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)と等価である。
【0291】
範囲表記
値の範囲を規定するために以下の表記が使用される:
x=y..z xは、yから始まってzまでの整数値を、y、zを含めてとり、x、y、及びzは整数であり、且つzはyより大きい。
【0292】
【0293】
演算優先順位の序列
式の中で優先順位の序列が括弧を用いて明示的に示されない場合、次の規則が適用される:
- より高い優先順位の演算が、任意のより低い優先順位の演算の前に評価される。
- 同じ優先順位の演算が、左から右に順に評価される。
【0294】
下の表は、最高から最低までの演算の優先順位を規定しており、表中の高い位置ほど高い優先順位を指し示す。
【0295】
Cプログラミング言語でも使用される演算子については、この明細書で使用される優先順位の序列は、Cプログラミング言語で使用されるものと同じである。
【表34】
【0296】
論理演算のテキスト記述
テキストにおいて、次の形式で数学的に記述される論理演算のステートメント:
if(condition 0)
statement 0
else if(condition 1)
statement 1
...
else /* 残りの条件についての情報の言及 */
Statement n
は、以下のように記述され得る:
...以下のとおりである/...以下が適用される:
- If condition 0, statement 0
- Otherwise, if condition 1, statement 1
- ...
- Otherwise (残りの条件についての情報の言及), statement n。
【0297】
テキスト内の各“If...otherwise, if...otherwise, ...”ステートメントが直後に“If...”が続く“...以下のとおりである”又は“...以下が適用される”を用いて導入される。“If...otherwise, if...otherwise, ...”の最後の条件は、常に“Otherwise, ...”である。インターリーブされる“If...otherwise, if...otherwise, ...”ステートメントは、“...以下のとおりである”又は“...以下が適用される”を終わりとなる“Otherwise, ...”と合わせることによって識別され得る。
【0298】
テキストにおいて、次の形式で数学的に記述される論理演算のステートメント:
if(condition 0a && condition 0b)
statement 0
else if(condition 1a || condition 1b)
statement 1
...
else
statement n
は、以下のように記述され得る:
...以下のとおりである/...以下が適用される:
- If 以下の条件の全てがtrueである, statement 0:
- condition 0a
- condition 0b
- Otherwise, if 以下の条件のうち1つ以上がtrueである, statement 1:
- condition 1a
- condition 1b
- ...
- Otherwise, statement n。
【0299】
テキストにおいて、次の形式で数学的に記述される論理演算のステートメント:
if(condition 0)
statement 0
if(condition 1)
statement 1
は、以下のように記述され得る:
Condition 0である場合, statement 0
Condition 1である場合, statement 1。
【0300】
発明の実施形態を、主に映像コーディングに基づいて説明してきたが、留意すべきことには、コーディングシステム10、エンコーダ20及びデコーダ30(及び対応するシステム10)の実施形態並びにここに記載された他の実施形態はまた、静止ピクチャ処理又はコーディング、すなわち、映像コーディングにおいてのような先行する又は連続するピクチャとは独立した、個々のピクチャの処理又はコーディング向けに構成されてもよい。一般に、ピクチャ処理コーディングが単一のピクチャ17に限られる場合、インター予測ユニット244(エンコーダ)及び344(デコーダ)のみ利用可能でないとし得る。例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、分割262/362、イントラ予測254/354、及び/又はループフィルタリング220、320、並びにエントロピーコーディング270及びエントロピー復号304といった、ビデオエンコーダ20及びビデオデコーダ30の他の全ての機能(ツール又は技術としても参照される)は、静止ピクチャ処理に等しく使用され得る。
【0301】
例えばエンコーダ20及びデコーダ30の実施形態、並びに、例えばエンコーダ20及びデコーダ30を参照してここに記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実装され得る。ソフトウェアで実装される場合、機能は、1つ以上の命令又はコードとして、コンピュータ読み取り可能媒体に記憶され、又は通信媒体上で伝送され、そして、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ読み取り可能媒体は、例えばデータ記憶媒体などの有形媒体に対応するコンピュータ読み取り可能記憶媒体、又は、例えば通信プロトコルに従って1つの場所から別の場所へのコンピュータプログラムの転送を支援する任意の媒体を含む通信媒体を含み得る。斯くして、コンピュータ読み取り可能媒体は、一般に、(1)非一時的である有形のコンピュータ読み取り可能記憶媒体、又は(2)例えば信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、この開示に記載された技術の実装のための命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体とし得る。コンピュータプログラムプロダクトがコンピュータ読み取り可能媒体を含み得る。
【0302】
例として、限定することなく、そのようなコンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、フラッシュメモリ、又は、命令若しくはデータ構造の形態で所望のプログラムコードを格納するために使用され且つコンピュータによってアクセスされることができる任意の他の媒体を有することができる。また、任意の接続が適切にコンピュータ読み取り可能媒体と呼ばれる。例えば、命令が、ウェブサイト、サーバ、又は他のリモートソースから、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、又は例えば赤外線、無線、及びマイクロ波などの無線技術を用いて伝送される場合、その同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は例えば赤外線、無線、及びマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、理解されるべきことには、コンピュータ読み取り可能記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まず、代わりに非一時的で有形の記憶媒体に向けられる。ディスク(disk及びdisc)は、ここで使用されるとき、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク及びBlu-rayディスクを含み、diskは、通常、磁気的にデータを再生し、discはレーザを用いて光学的にデータを再生する。上述のものの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【0303】
命令は、例えば1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又は他の同等の集積論理回路若しくはディスクリート論理回路などの、1つ以上のプロセッサによって実行され得る。従って、用語“プロセッサ”は、ここで使用されるとき、上述の構造のいずれか、又はここに記載された技術の実装に適した任意の他の構造を指し得る。さらに、一部の態様において、ここに記載された機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内で提供されてもよいし、あるいは、組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、1つ以上の回路又は論理素子にて完全に実装されてもよい。
【0304】
この開示の技術は、無線ハンドセット、集積回路(IC)、又は一組のIC(例えば、チップセット)を含め、広範で多様なデバイス又は装置にて実装され得る。この開示においては、開示された技術を実行するように構成されたデバイスの機能的側面を強調するために、様々なコンポーネント、モジュール、又はユニットが説明されているが、必ずしも、複数の異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述のように、様々なユニットが、コーデックハードウェアユニットに組み合わされてもよいし、あるいは、上述の1つ以上のプロセッサを含め、好適なソフトウェア及び/又はファームウェアと併せられた相互動作ハードウェアユニットの集合によって提供されてもよい。
【0305】
クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法であって、当該方法は、デコーダによって実行され、当該方法は、
受信したビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるマッピング関数(f)の情報と、を取得し、
ルミナンスQPに少なくとも部分的に基づいてQPiを取得し、
取得した上記情報に基づいてマッピング関数を取得し、そして、
取得したマッピング関数と、取得したQPiとに基づいて、QPcを取得する、
ことを有する。
【0306】
クロマQPマッピングテーブルについての情報をビットストリーム内に有することは、例えばSDR若しくはHDRなどの入力映像信号の特定の特性又はルミナンス及びクロミナンスチャネル上の異なる強度及び分布への調整を可能にし、それ故に、圧縮効率を向上させるとともに、再構成映像におけるクロマ成分とルマ成分との間のバランスを向上させる。
【0307】
上の方法において、マッピング関数は、デコーダによってサポートされる許容QPi範囲(例えば、0から63、又は例えば20から50といった、サポートされる範囲の他の部分)内のQPiに対応する集合Xの各要素xを、又は集合Xの何らかの部分集合を、デコーダによってサポートされる許容QPc範囲(例えば、0から63、又は例えば0から59若しくは18から46といった、サポートされる範囲の他の部分)内のQPcに対応する集合Yの1つの要素yに関連付ける。
【0308】
例えば、QPi範囲及びQPc範囲は同じであってもよいし、あるいは異なってもよい。
【0309】
上の方法において、マッピング関数は単調増加(非減少)関数である。
【0310】
この制約をマッピング関数に課すことは、ルマQPの増加に伴ってクロマQPが減少するときの、例えば予期せぬ望ましくない、“奇妙な”挙動を有するマッピング関数の設定を回避することを可能にし、換言すれば、ルマの品質低下に伴ってクロマ品質が上昇するケースを回避することを可能にする。単調増加制約があることは、ルマ及びクロマの品質が同期されることを可能にする。更なる利点として、この制約は、関数の負の増分を記述する必要を排除することによって、マッピング関数情報のシグナリングのビットを節約することを可能にする。
【0311】
上の方法において、集合Xは、そこでマッピング関数fが増加しない部分集合Aを含み、例えば:
部分集合Aの任意のxに対して、f(x)-f(x-1)=0
である。
【0312】
例えば、A={30,39,43}、f(30)-f(29)=0、f(39)-f(38)=0、又はf(43)-f(42)=0;又は
A={35,39,43}、f(35)-f(34)=0、f(39)-f(38)=0、又はf(43)-f(42)=0である。
【0313】
上の方法において、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち:
部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、A+B=Xであり、cは1以上の自然数である。
【0314】
例えば、c=1又は2などであり、あるいは、cはxの関数であってもよく、c(x)>=1である。
【0315】
上のいずれか1つの方法において、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち:
部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、cは1以上の自然数である。
【0316】
例えば、c=1又は2などであり、あるいは、cはxの関数であってもよく、c(x)>=1である。
【0317】
本開示は、以下の更なる41態様を開示し、第1態様から第41態様まで以下の通り列挙する。
【0318】
クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法の第1態様であって、当該方法は、デコーダによって実行され、当該方法は、受信したビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるマッピング関数(f)の情報と、を取得し、ルミナンスQPに少なくとも部分的に基づいてQPiを取得し、取得した上記情報に基づいてマッピング関数を取得し、そして、取得したマッピング関数と、取得したQPiとに基づいて、QPcを取得する、ことを有する。
【0319】
第1態様の方法の第2態様であって、マッピング関数は、デコーダによってサポートされる許容QPi範囲内のQPiに対応する集合Xの各要素xを、又は集合Xの何らかの部分集合を、デコーダによってサポートされる許容QPc範囲内のQPcに対応する集合Yの1つの要素yに関連付ける。
【0320】
第2態様に従った、方法の第3態様であって、マッピング関数は単調増加(非減少)関数である。
【0321】
第2又は第3態様に従った、方法の第4態様であって、集合Xは、そこでマッピング関数fが増加しない部分集合Aを含み、例えば:
部分集合Aの任意のxに対して、f(x)-f(x-1)=0
である。
【0322】
第4態様に従った、方法の第5態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、A+B=Xであり、cは1以上の自然数である。
【0323】
第2乃至第4態様のいずれか一に従った、方法の第6態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、cは1以上の自然数である。
【0324】
第5又は第6態様に従った、方法の第7態様であって、部分集合Bについてのマッピング関数は次のように定められる:部分集合Bの任意のxに対して、f(x)-f(x-1)=1。
【0325】
第1乃至第7態様のいずれか一に従った、方法の第8態様であって、マッピング関数の情報は、部分集合Aのサイズ(sizeA)及び部分集合Aの要素aiの情報を有する。
【0326】
これは有益なことに、関数挙動が通常の予め定められた挙動(部分集合B)とは異なる点(部分集合A)のみをシグナリングすることによって、ビットを節約することを可能にする。
【0327】
第1乃至第8態様のいずれか一に従った、方法の第9態様であって、マッピング関数の情報は部分集合Aのサイズを有する。
【0328】
第1乃至第9態様のいずれか一に従った、方法の第10態様であって、マッピング関数の情報は、部分集合Aの要素aiの直接的な値を有する。
【0329】
第8乃至第10態様のいずれか一に従った、方法の第11態様であって、マッピング関数の情報は、要素aiの現在値と要素ai-1の先行値との間の差(delta_ai)を有し、値aiは次のように得られる:任意のi>0に対して、ai=ai-1+delta_ai。
【0330】
直接的な値の代わりに差分をシグナリングすることは、ビットを更に節約することを可能にする。
【0331】
第8乃至第10態様のいずれか一に従った、方法の第12態様であって、マッピング関数の情報は、最初の値a0とstarting_point_valueとの間の差(delta_a0)を有し、部分集合Aの最初の値a0が、差(delta_a0)に基づいて、a0=starting_point_value+delta_a0のように取得され、starting_point_valueは、ビットストリーム内でシグナリングされるか、あるいは、例えば0、21、30、maxQPi>>1といった、予め定められた値であるかのいずれかであり、maxQPiは、例えば63といった、デコーダによってサポートされる最大QPi値である。
【0332】
第1乃至第12態様のいずれか一に従った、方法の第13態様であって、マッピング関数の情報は、以下のコード:バイナリ、固定長、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いて、ビットストリーム内でシグナリングされる。
【0333】
第1乃至第13態様のいずれか一に従った、方法の第14態様であって、マッピング関数は、部分集合A及びBの定められた関数挙動を用いて取得され、すなわち、例えばf(x)-f(x-1)=1など、部分集合Bからの任意の入力引数xについて、関数が例えば1だけ増加し、及び、例えばf(x)-f(x-1)=0など、部分集合Aからの任意の入力引数xについて、関数がフラットであることを用して取得され、x=0に対応するマッピング関数の最初の値が0であると仮定して、例えば、以下の擬似コードを繰り返し用いて実装されることができる:
chroma_qp_mapping_table[0]=0; // 初期化
for(i=1;i<=maxQP;i++) // maxQPはデコーダによってサポートされる最大QP
{
int incStep=1; // 集合Bに対する関数増分
for(j=0;j<cQpFlatSize;j++) // cQpFlatSizeは集合Aのサイズ
{
if(i==cQpFlat[j]) // cQpFlatは、集合Aの要素を有するアレイ
{
incStep=0; // 集合Aに対するゼロ関数増分(フラット)
break;
}
}
chroma_qp_mapping_table[i]=chroma_qp_mapping_table[i-1]+incStep;
}
【0334】
第4乃至第14態様のいずれか一に従った、方法の第15態様であって、マッピング関数の情報は、部分集合Bの値bの情報を有し、部分集合Aは、A=X-Bとして得られる。
【0335】
これは、予め定められた挙動とは関数挙動が異なる点のみをシグナリングすることによって、最小化されたシグナリングオーバーヘッドで、サポートされるQPiの値の集合X全体についての関数挙動を取得することを可能にする。
【0336】
第4乃至第14態様のいずれか一に従った、方法の第16態様であって、部分集合Bはサブ部分集合Bkを含み、サブ部分集合Bkは、そこでマッピング関数が同じ増分ckを持つ要素xを含み:x∈Bkであ場合、f(x)-f(x-1)=ckであり、ここで、ckは自然数であり、例えば、ckは0、1、2、3、4、…に等しい。換言すれば、部分集合Bが、サブ部分集合Bkの点xにおけるマッピング関数増分の量に応じて異なるサブ部分集合にスプリットされ得る。
【0337】
これは、関数が異なる増加速さ(ck)を持ち得る点を追加することによって、マッピング関数定義の柔軟性を高めることを可能にする。
【0338】
第16態様に従った、方法の第17態様であって、マッピング関数の情報は、サブ部分集合Bkのうちの少なくとも1つのサイズ(サイズBk)と、サブ部分集合Bkのうちの少なくとも1つの要素biとの情報を有する。
【0339】
第16又は第17態様に従った、方法の第18態様であって、マッピング関数の情報は、サブ部分集合Bkの点におけるマッピング関数の増分の値の情報を有する。
【0340】
第16又は第17態様に従った、方法の第19態様であって、マッピング関数の情報は、サブ部分集合Bkの数の情報を有する。
【0341】
第16乃至第19態様のいずれか一に従った、方法の第20態様であって、マッピング関数の情報の少なくとも一部(例えば、サブ部分集合B
kの情報)は、次の構文を用いて取得される:
【表35】
【0342】
第16乃至第19態様のいずれか一に従った、方法の第21態様であって、マッピング関数の情報の少なくとも一部(例えば、サブ部分集合B
kの情報)は、次の構文を用いて取得される:
【表36】
【0343】
第2又は第3態様に従った、方法の第22態様であって、マッピング関数は区分関数であり、マッピング関数の情報は、区分関数の区切り点、変化点、又はピボット点を有する。
【0344】
この態様は、関数がその挙動(例えば、直線の傾き)を変化させる点のみをシグナリングすることによって、限られたシグナリングオーバーヘッドで関数挙動を記述することを可能にし、そして、変化点又はピボット点の間の区分関数として関数を記述することを可能にする。
【0345】
第22態様に従った、方法の第23態様であって、区切り点、又は変化点、又はピボット点の数、及びそのx及びy座標が、直接的な形式で、又は現在点座標と先行点座標との間の差を用いて、ビットストリーム内でシグナリングされる。
【0346】
差分をシグナリングすることは、ピボット点座標の直接値のシグナリングとは対照的に、ビットを更に節約することを可能にする。
【0347】
第22又は第23態様に従った、方法の第24態様であって、前記マッピング関数は、線形方程式、指数方程式、対数方程式、又は上記の方程式の組み合わせ、に基づく区分関数である。
【0348】
予め定められた方程式フォーム(例えば、線形方程式)を区分関数に使用することは、明示的なシグナリングなしにピボット点間の関数値を得ることを可能にし、これは有益なことに、マッピング関数を記述することのシグナリングオーバーヘッドを減少させる。
【0349】
第24態様に従った、方法の第25態様であって、区分関数のパラメータがピボット点に基づいて取得され、例えば、線形方程式の場合の例として:slope=(Ey-Dy)/(Ex-Dx)、b=Dy+slope*Dxであり、ここで、D(94)及びE(95)は、対応して座標Dx、Dy、及びEx、Eyを有する例示的な変化点であり、slope及びbは、例えばy=slope*x+bなどの線形方程式のパラメータである。
【0350】
マッピング関数の単調増加を達成するためには、slopeは非負であるべきであり、これは、例えば0以上など、特に非負であるように、同じ符号を持つという制約をデルタ(Ey-Dy)及び(Ex-Dx)に適用することによって達成されることができる。これを達成するために、例えば符号なし整数0次Exp-Golombコードといった符号なしコードを、差分をシグナリングすることに使用することができる。更なる技術的利益として、単調増加制約を有することは、符号なし符号を用いてデルタをシグナリングすることを可能にし、これは、デルタの符号のビットを節約することを可能にする。
【0351】
第2又は第3態様に従った、方法の第26態様であって、集合Xは部分集合Cを含み、マッピング関数の情報は、部分集合Cの開始インデックス(x_start)及び部分集合Cの終了インデックス(x_end)の情報を有する。
【0352】
第25又は第26態様に従った、方法の第27態様であって、マッピング関数の情報は、部分集合Cの任意のxについてのマッピング関数f(x)-f(x-1)のデルタ値の情報を有する。
【0353】
第27態様に従った、方法の第28態様であって、デルタ値は、次の構文を用いて取得され:
【表37】
ここで、sps_qpc_cb_delta[i]がデルタ値を表している。
【0354】
第27態様に従った、方法の第29態様であって、デルタ値は0から1の範囲内である。
【0355】
第29態様に従った、方法の第30態様であって、デルタ値は、次の構文を用いて取得され:
【表38】
ここで、sps_qpc_cb_delta[i]がデルタ値を表している。
【0356】
第26乃至第30態様のいずれか一に従った、方法の第31態様であって、マッピング関数の情報は、以下のコード:バイナリ、固定長、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いてシグナリングされる。
【0357】
第1乃至第31態様のいずれか一に従った、方法の第32態様であって、デコーダは更に、予め定められたマッピング関数を有し、ビットストリームは、予め定められたマッピング関数を使用すべきか、それとも、ビットストリーム内でマッピング関数をシグナリングすべきかを指し示すインジケータを有する。
【0358】
この態様は、マッピング関数についての情報を、それが有益である場合にのみ、すなわち、ルマ及びクロマチャネルの特性が、HDR信号の場合のように、一般的なケースとは著しく異なるときにのみ、シグナリングすることを可能にし、一般的なケースに適したものである予め定められたマッピング関数を使用することを可能にする。これは、大抵の一般的なケースでシグナリングオーバーヘッドを節約することを可能にする。
【0359】
第1乃至第32態様のいずれか一に従った、方法の第33態様であって、マッピング関数の情報は、Cb及びCr成分(クロミナンス成分)の両方についてシグナリングされる。
【0360】
第1乃至第33態様のいずれか一に従った、方法の第34態様であって、マッピング関数の情報は、マッピング関数がCb及びCr成分について別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有する。
【0361】
この態様は、異なるクロマチャネル(Cb及びCr)が異なる信号特性を有する場合に量子化プロセスを制御することの柔軟性を更に高めることを可能にし、ひいては、圧縮効率を更に高めることを可能にする。
【0362】
第1乃至第34態様のいずれか一に従った、方法の第35態様であって、マッピング関数の情報は、シーケンスパラメータセット内でシーケンスレベルで、又はピクチャパラメータセット内でピクチャレベルで、又はタイルグループパラメータセット内でタイルグループレベルで、又は適応パラメータセット内で、又は補足拡張情報(SEI)メッセージ内でシグナリングされる。
【0363】
第1乃至第35態様のいずれか一に従った、方法の第36態様であって、マッピング関数は、次のテーブルとして表現される:
【表39】
【0364】
第1乃至第35態様のいずれか一に従った、方法の第37態様であって、マッピング関数は、次のテーブルとして表現される:
【表40】
【0365】
第1乃至第36態様のいずれか一に従った、方法の第38態様であって、マッピング関数の情報は、直接的に又は間接的にビットストリーム内でシグナリングされる。
【0366】
デコーダ(30)の第39態様は、第1乃至第38態様のいずれか一に従った方法を実行する処理回路を有する。
【0367】
コンピュータプログラムプロダクトの第40態様は、第1乃至第38態様のいずれか一に従った方法を実行するためのプログラムコードを有する。
【0368】
デコーダの第40態様は、1つ以上のプロセッサと、プロセッサに結合され、プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体と、を有し、プログラミングは、プロセッサによって実行されるときに、第1乃至第38態様のいずれか一に従った方法を実行するように当該デコーダを構成する。
【0369】
さらに、本開示は、以下の更なる25態様を開示し、第1態様から第25態様まで以下の通り列挙する。
【0370】
クロミナンス成分用の量子化パラメータ(QP)をルミナンス成分用のQPに基づいて取得する方法の第1態様であって、当該方法は、デコーダによって実行され、当該方法は、
ルミナンスQPを取得し、
受信したビットストリームを構文解析することにより、ルミナンスQPをクロミナンスQPに関連付けるマッピング関数(f)を取得するための情報を取得し、
取得した上記情報に基づいてマッピング関数を取得し、
マッピング関数に基づいてクロミナンスQPを取得する、
ことを有する。
【0371】
第1態様の方法の第2態様であって、マッピング関数は、デコーダによってサポートされる許容ルミナンスQP範囲(例えば、0から63、又は例えば20から50といった、サポートされる範囲の他の部分)内のルミナンスQPに対応する集合Xの各要素xを、又は集合Xの何らかの部分集合を、デコーダによってサポートされる許容クロミナンスQP範囲(例えば、0から63、又は例えば0から59若しくは18から46といった、サポートされる範囲の他の部分)内のクロミナンスQPに対応する集合Yの1つの要素yに関連付ける。例えば、ルミナンスQP範囲及びクロミナンスQP範囲は同じであってもよいし、あるいは異なってもよい。
【0372】
第2態様に従った、方法の第3態様であって、マッピング関数は単調増加(非減少)関数である。
【0373】
第2態様に従った、方法の第4態様であって、集合Xは、そこでマッピング関数fが増加しない部分集合Aを含み、例えば、集合A(例えば、A={30,39,43})の任意のxに対して、f(x)-f(x-1)=0である。例えば、f(30)-f(29)=0、f(39)-f(38)=0、又はf(43)-f(42)=0である。
【0374】
第2態様に従った、方法の第5態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、f(x)-f(x-1)=cであり、cはxの関数であり、部分集合Bの任意のxに対して、c(x)>=1である。例えば、部分集合Bは、X-Aに等しいとすることができ、換言すれば、部分集合A及び部分集合Bは、例えばA+B=Xなど、Xの重なり合わない2つの部分集合である。
【0375】
第5態様に従った、方法の第6態様であって、部分集合Bについてのマッピング関数は次のように定められる:部分集合Bの任意のxに対して、f(x)-f(x-1)=1。
【0376】
第1乃至第6態様のいずれか一に従った、方法の第7態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Aのサイズ(sizeA)及び部分集合Aの要素aiを取得するための情報を有する。
【0377】
第7態様に従った、方法の第8態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Aのサイズを有する。
【0378】
第7態様に従った、方法の第9態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、要素aiの直接的な値を有する。
【0379】
第7態様に従った、方法の第10態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、要素aiの現在値と要素ai-1の先行値との間の差(delta_ai)を有し、値aiは次のように得られる:任意のi>0に対して、ai=ai-1+delta_ai。
【0380】
第7態様に従った、方法の第11態様であって、部分集合Aの最初の値a0は、a0とstarting_point_valueとの間の差(delta_a0)に基づいて取得され、該差(delta_a0)がビットストリーム内でシグナリングされ、最初の値a0は、a0=starting_point_value+delta_a0のように取得され、starting_point_valueは、ビットストリーム内でシグナリングされるか、あるいは、例えば0、21、30、maxQP>>1といった、予め定められた値であるかのいずれかであり、maxQPは、例えば63といった、デコーダによってサポートされる最大QP値である。
【0381】
第7乃至第11態様のいずれか一に従った、方法の第12態様であって、ビットストリームからのマッピング関数を取得するための情報は、以下のコード:バイナリ、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いてシグナリングされる。
【0382】
第1乃至第11態様のいずれか一に従った、方法の第13態様であって、マッピング関数は、部分集合A及びBの定められた関数挙動を用いて取得され、すなわち、例えばf(x)-f(x-1)=1など、部分集合Bからの任意の入力引数xについて、関数が例えば1だけ増加し、及び、例えばf(x)-f(x-1)=0など、部分集合Aからの任意の入力引数xについて、関数がフラットであることを用して取得され、x=0に対応するマッピング関数の最初の値が0であると仮定して、例えば、以下の擬似コードを繰り返し用いて実装されることができる:
chroma_qp_mapping_table[0]=0; // 初期化
for(i=1;i<=maxQP;i++) // maxQPはデコーダによってサポートされる最大QP
{
int incStep=1; // 集合Bに対する関数増分
for(j=0;j<cQpFlatSize;j++) // cQpFlatSizeは集合Aのサイズ
{
if(i==cQpFlat[j]) // cQpFlatは、集合Aの要素を有するアレイ
{
incStep=0; // 集合Aに対するゼロ関数増分(フラット)
break;
}
}
chroma_qp_mapping_table[i]=chroma_qp_mapping_table[i-1]+incStep;
}
【0383】
第4乃至第12態様のいずれか一に従った、方法の第14態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Bの値bを取得するための情報を有し、部分集合Aは、A=X-Bとして得られる。
【0384】
第2態様に従った、方法の第15態様であって、マッピング関数は区分関数であり、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、区分関数の区切り点(又は変化点、又はピボット点)を有する。
【0385】
第15態様に従った、方法の第16態様であって、区切り点(又は変化点、又はピボット点)の数、及びそのx及びy座標が、直接的な形式で、又は現在点座標と先行点座標との間の差を用いて、ビットストリーム内でシグナリングされる。
【0386】
第15又は第16態様に従った、方法の第17態様であって、前記マッピング関数は、線形方程式、指数方程式、対数方程式、又は上記の方程式の組み合わせ、に基づく区分関数である。
【0387】
第17態様に従った、方法の第18態様であって、区分関数のパラメータがピボット点に基づいて取得され、例えば、線形方程式の場合の例として:slope=(Ey-Dy)/(Ex-Dx)、b=Dy+slope*Dxであり、ここで、D(94)及びE(95)は、対応して座標Dx、Dy、及びEx、Eyを有する例示的な変化点であり、slope及びbは、例えばy=slope*x+bなどの線形方程式のパラメータである。
【0388】
マッピング関数の単調増加を達成するためには、slopeは非負であるべきであり、これは、例えば0以上など、特に非負であるように、同じ符号を持つという制約をデルタ(Ey-Dy)及び(Ex-Dx)に適用することによって達成されることができる。これを達成するために、例えば符号なし整数0次Exp-Golombコードといった符号なしコードを、差分をシグナリングすることに使用することができる。
【0389】
第1乃至第18態様のいずれか一に従った、方法の第19態様であって、デコーダは更に、予め定められたマッピング関数を有し、ビットストリームは、予め定められたマッピング関数を使用すべきか、それとも、ビットストリーム内でマッピング関数をシグナリングすべきかを指し示すインジケータを有する。
【0390】
第1乃至第19態様のいずれか一に従った、方法の第20態様であって、マッピング関数を取得するための情報は、Cb及びCr成分(クロミナンス成分)の両方についてシグナリングされる。
【0391】
第1乃至第20態様のいずれか一に従った、方法の第21態様であって、マッピング関数を取得するための情報は、マッピング関数がCb及びCr成分について別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有する。
【0392】
第1乃至第21態様のいずれか一に従った、方法の第22態様であって、マッピング関数を取得するための情報は、シーケンスパラメータセット内でシーケンスレベルで、ピクチャパラメータセット内でピクチャレベルで、又は適応パラメータセット内のタイルグループパラメータセット内でタイルグループレベルでシグナリングされる。
【0393】
デコーダ(30)の第23態様は、第1乃至第22態様のいずれか一に従った方法を実行する処理回路を有する。
【0394】
コンピュータプログラムプロダクトの第24態様は、第1乃至第22態様のいずれか一に従った方法を実行するためのプログラムコードを有する。
【0395】
デコーダの第25態様は、1つ以上のプロセッサと、プロセッサに結合され、プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体と、を有し、プログラミングは、プロセッサによって実行されるときに、第1乃至第22態様のいずれか一に従った方法を実行するように当該デコーダを構成する。
【0396】
さらに、本開示は、以下の更なる32態様を開示し、第1態様から第32態様まで以下の通り列挙する。
【0397】
クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法の第1態様であって、当該方法は、デコーダによって実行され、当該方法は、受信したビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるマッピング関数(f)の情報と、を取得し、ルミナンスQPに少なくとも部分的に基づいてQPiを取得し、取得した上記情報に基づいてマッピング関数を取得し、そして、取得したマッピング関数と、取得したQPiとに基づいて、QPcを取得する、ことを有する。
【0398】
第1態様の方法の第2態様であって、マッピング関数は、デコーダによってサポートされる許容QPi範囲内のQPiに対応する集合Xの各要素xを、又は集合Xの何らかの部分集合を、デコーダによってサポートされる許容QPc範囲内のQPcに対応する集合Yの1つの要素yに関連付ける。
【0399】
第2態様に従った、方法の第3態様であって、マッピング関数は単調増加(非減少)関数である。
【0400】
第2態様に従った、方法の第4態様であって、集合Xは、そこでマッピング関数fが増加しない部分集合Aを含み、例えば、部分集合Aの任意のxに対して、f(x)-f(x-1)=0である。
【0401】
第4態様に従った、方法の第5態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、A+B=Xであり、cは1以上の自然数である。
【0402】
第2乃至第4態様のいずれか一に従った、方法の第6態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、cは1以上の自然数である。
【0403】
第5又は第6態様に従った、方法の第7態様であって、部分集合Bについてのマッピング関数は次のように定められる:部分集合Bの任意のxに対して、f(x)-f(x-1)=1。
【0404】
第1乃至第7態様のいずれか一に従った、方法の第8態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Aのサイズ(sizeA)及び部分集合Aの要素aiを取得するための情報を有する。
【0405】
第8態様に従った、方法の第9態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Aのサイズを有する。
【0406】
第8態様に従った、方法の第10態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、要素aiの直接的な値を有する。
【0407】
第8態様に従った、方法の第11態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、要素aiの現在値と要素ai-1の先行値との間の差(delta_ai)を有し、値aiは次のように得られる:任意のi>0に対して、ai=ai-1+delta_ai。
【0408】
第8態様に従った、方法の第12態様であって、部分集合Aの最初の値a0は、a0とstarting_point_valueとの間の差(delta_a0)に基づいて取得され、該差(delta_a0)がビットストリーム内でシグナリングされ、最初の値a0は、a0=starting_point_value+delta_a0のように取得され、starting_point_valueは、ビットストリーム内でシグナリングされるか、あるいは、例えば0、21、30、maxQPi>>1といった、予め定められた値であるかのいずれかであり、maxQPiは、例えば63といった、デコーダによってサポートされる最大QPi値である。
【0409】
第8乃至第12態様のいずれか一に従った、方法の第13態様であって、ビットストリームからのマッピング関数を取得するための情報は、以下のコード:バイナリ、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いてシグナリングされる。
【0410】
第1乃至第11態様のいずれか一に従った、方法の第14態様であって、マッピング関数は、部分集合A及びBの定められた関数挙動を用いて取得され、すなわち、例えばf(x)-f(x-1)=1など、部分集合Bからの任意の入力引数xについて、関数が例えば1だけ増加し、及び、例えばf(x)-f(x-1)=0など、部分集合Aからの任意の入力引数xについて、関数がフラットであることを用して取得され、x=0に対応するマッピング関数の最初の値が0であると仮定して、例えば、以下の擬似コードを繰り返し用いて実装されることができる:
chroma_qp_mapping_table[0]=0; // 初期化
for(i=1;i<=maxQP;i++) // maxQPはデコーダによってサポートされる最大QP
{
int incStep=1; // 集合Bに対する関数増分
for(j=0;j<cQpFlatSize;j++) // cQpFlatSizeは集合Aのサイズ
{
if(i==cQpFlat[j]) // cQpFlatは、集合Aの要素を有するアレイ
{
incStep=0; // 集合Aに対するゼロ関数増分(フラット)
break;
}
}
chroma_qp_mapping_table[i]=chroma_qp_mapping_table[i-1]+incStep;
}
【0411】
第4乃至第13態様のいずれか一に従った、方法の第15態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、部分集合Bの値bを取得するための情報を有し、部分集合Aは、A=X-Bとして得られる。
【0412】
第4乃至第13態様のいずれか一に従った、方法の第16態様であって、部分集合Bはサブ部分集合Bkを含み、サブ部分集合Bkは、そこでマッピング関数が同じ増分ckを持つ要素xを含み:x∈Bkであ場合、f(x)-f(x-1)=ckであり、ここで、ckは自然数であり、例えば、ckは0、1、2、3、4、…に等しい。換言すれば、部分集合Bが、サブ部分集合Bkの点xにおけるマッピング関数増分の量に応じて異なるサブ部分集合にスプリットされ得る。
【0413】
第16態様に従った、方法の第17態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、サブ部分集合Bkのうちの少なくとも1つのサイズ(サイズBk)と、サブ部分集合Bkのうちの少なくとも1つの要素biとを取得するための情報を有する。
【0414】
第16又は第17態様に従った、方法の第18態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、サブ部分集合Bkの点におけるマッピング関数の増分の値を取得するための情報を有する。
【0415】
第16又は第17態様に従った、方法の第19態様であって、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、サブ部分集合Bkの数を取得するための情報を有する。
【0416】
第2態様に従った、方法の第20態様であって、マッピング関数は区分関数であり、ビットストリーム内でシグナリングされる、マッピング関数を取得するための情報は、区分関数の区切り点(又は変化点、又はピボット点)を有する。
【0417】
第20態様に従った、方法の第21態様であって、区切り点(又は変化点、又はピボット点)の数、及びそのx及びy座標が、直接的な形式で、又は現在点座標と先行点座標との間の差を用いて、ビットストリーム内でシグナリングされる。
【0418】
第20又は第21態様に従った、方法の第22態様であって、前記マッピング関数は、線形方程式、指数方程式、対数方程式、又は上記の方程式の組み合わせ、に基づく区分関数である。
【0419】
第22態様に従った、方法の第23態様であって、区分関数のパラメータがピボット点に基づいて取得され、例えば、線形方程式の場合の例として:slope=(Ey-Dy)/(Ex-Dx)、b=Dy+slope*Dxであり、ここで、D(94)及びE(95)は、対応して座標Dx、Dy、及びEx、Eyを有する例示的な変化点であり、slope及びbは、例えばy=slope*x+bなどの線形方程式のパラメータである。
【0420】
第1乃至第23態様のいずれか一に従った、方法の第24態様であって、デコーダは更に、予め定められたマッピング関数を有し、ビットストリームは、予め定められたマッピング関数を使用すべきか、それとも、ビットストリーム内でマッピング関数をシグナリングすべきかを指し示すインジケータを有する。
【0421】
第1乃至第24態様のいずれか一に従った、方法の第25態様であって、マッピング関数を取得するための情報は、Cb及びCr成分(クロミナンス成分)の両方についてシグナリングされる。
【0422】
第1乃至第25態様のいずれか一に従った、方法の第26態様であって、マッピング関数を取得するための情報は、マッピング関数がCb及びCr成分について別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有する。
【0423】
第1乃至第26態様のいずれか一に従った、方法の第27態様であって、マッピング関数の情報は、シーケンスパラメータセット内でシーケンスレベルで、又はピクチャパラメータセット内でピクチャレベルで、又はタイルグループパラメータセット内でタイルグループレベルで、又は適応パラメータセット内で、又は補足拡張情報(SEI)メッセージ内でシグナリングされる。
【0424】
第1乃至第27態様のいずれか一に従った、方法の第28態様であって、マッピング関数は、次のテーブルとして表現される:
【表41】
【0425】
第1乃至第27態様のいずれか一に従った、方法の第29態様であって、マッピング関数は、次のテーブルとして表現される:
【表42】
【0426】
デコーダ(30)の第30態様は、第1乃至第29態様のいずれか一に従った方法を実行する処理回路を有する。
【0427】
コンピュータプログラムプロダクトの第31態様は、第1乃至第29態様のいずれか一に従った方法を実行するためのプログラムコードを有する。
【0428】
デコーダの第32態様は、1つ以上のプロセッサと、プロセッサに結合され、プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体と、を有し、プログラミングは、プロセッサによって実行されるときに、第1乃至第29態様のいずれか一に従った方法を実行するように当該デコーダを構成する。
【0429】
本開示は、以下の更なる41態様を開示し、第1態様から第41態様まで以下の通り列挙する。
【0430】
クロミナンス成分用のクロミナンス量子化パラメータ(QP)をルミナンス成分用のルミナンスQPに基づいて取得する方法の第1態様であって、当該方法は、デコーダによって実行され、当該方法は、受信したビットストリームを構文解析して、ルミナンスQPと、QPインデックス(QPi)をクロミナンスQP(QPc)に関連付けるマッピング関数(f)の情報と、を取得し、ルミナンスQPに少なくとも部分的に基づいてQPiを取得し、取得した上記情報に基づいてマッピング関数を取得し、そして、取得したマッピング関数と、取得したQPiとに基づいて、QPcを取得する、ことを有する。
【0431】
第1態様の方法の第2態様であって、マッピング関数は、デコーダによってサポートされる許容QPi範囲内のQPiに対応する集合Xの各要素xを、又は集合Xの何らかの部分集合を、デコーダによってサポートされる許容QPc範囲内のQPcに対応する集合Yの1つの要素yに関連付ける。
【0432】
第2態様に従った、方法の第3態様であって、マッピング関数は単調増加(非減少)関数である。
【0433】
第2又は第3態様に従った、方法の第4態様であって、集合Xは、そこでマッピング関数fが増加しない部分集合Aを含み、例えば:
部分集合Aの任意のxに対して、f(x)-f(x-1)=0
である。
【0434】
第4態様に従った、方法の第5態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、A+B=Xであり、cは1以上の自然数である。
【0435】
第2乃至第4態様のいずれか一に従った、方法の第6態様であって、集合Xは、そこでマッピング関数fが増加する部分集合Bを含み、すなわち、部分集合Bの任意のxに対して、f(x)-f(x-1)=cであり、cは1以上の自然数である。
【0436】
第5又は第6態様に従った、方法の第7態様であって、部分集合Bについてのマッピング関数は次のように定められる:部分集合Bの任意のxに対して、f(x)-f(x-1)=1。
【0437】
第1乃至第7態様のいずれか一に従った、方法の第8態様であって、マッピング関数の情報は、部分集合Aのサイズ(sizeA)及び部分集合Aの要素aiの情報を有する。
【0438】
第1乃至第8態様のいずれか一に従った、方法の第9態様であって、マッピング関数の情報は部分集合Aのサイズを有する。
【0439】
第1乃至第9態様のいずれか一に従った、方法の第10態様であって、マッピング関数の情報は、部分集合Aの要素aiの直接的な値を有する。
【0440】
第8乃至第10態様のいずれか一に従った、方法の第11態様であって、マッピング関数の情報は、要素aiの現在値と要素ai-1の先行値との間の差(delta_ai)を有し、値aiは次のように得られる:任意のi>0に対して、ai=ai-1+delta_ai。
【0441】
第8乃至第10態様のいずれか一に従った、方法の第12態様であって、マッピング関数の情報は、最初の値a0とstarting_point_valueとの間の差(delta_a0)を有し、部分集合Aの最初の値a0が、差(delta_a0)に基づいて、a0=starting_point_value+delta_a0のように取得され、starting_point_valueは、ビットストリーム内でシグナリングされるか、あるいは、例えば0、21、30、maxQPi>>1といった、予め定められた値であるかのいずれかであり、maxQPiは、例えば63といった、デコーダによってサポートされる最大QPi値である。
【0442】
第1乃至第12態様のいずれか一に従った、方法の第13態様であって、マッピング関数の情報は、以下のコード:バイナリ、固定長、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いて、ビットストリーム内でシグナリングされる。
【0443】
第1乃至第13態様のいずれか一に従った、方法の第14態様であって、マッピング関数は、部分集合A及びBの定められた関数挙動を用いて取得され、すなわち、例えばf(x)-f(x-1)=1など、部分集合Bからの任意の入力引数xについて、関数が例えば1だけ増加し、及び、例えばf(x)-f(x-1)=0など、部分集合Aからの任意の入力引数xについて、関数がフラットであることを用して取得され、x=0に対応するマッピング関数の最初の値が0であると仮定して、例えば、以下の擬似コードを繰り返し用いて実装されることができる:
chroma_qp_mapping_table[0]=0; // 初期化
for(i=1;i<=maxQP;i++) // maxQPはデコーダによってサポートされる最大QP
{
int incStep=1; // 集合Bに対する関数増分
for(j=0;j<cQpFlatSize;j++) // cQpFlatSizeは集合Aのサイズ
{
if(i==cQpFlat[j]) // cQpFlatは、集合Aの要素を有するアレイ
{
incStep=0; // 集合Aに対するゼロ関数増分(フラット)
break;
}
}
chroma_qp_mapping_table[i]=chroma_qp_mapping_table[i-1]+incStep;
}
【0444】
第4乃至第14態様のいずれか一に従った、方法の第15態様であって、マッピング関数の情報は、部分集合Bの値bの情報を有し、部分集合Aは、A=X-Bとして得られる。
【0445】
第4乃至第14態様のいずれか一に従った、方法の第16態様であって、部分集合Bはサブ部分集合Bkを含み、サブ部分集合Bkは、そこでマッピング関数が同じ増分ckを持つ要素xを含み:x∈Bkであ場合、f(x)-f(x-1)=ckであり、ここで、ckは自然数であり、例えば、ckは0、1、2、3、4、…に等しい。換言すれば、部分集合Bが、サブ部分集合Bkの点xにおけるマッピング関数増分の量に応じて異なるサブ部分集合にスプリットされ得る。
【0446】
第16態様に従った、方法の第17態様であって、マッピング関数の情報は、サブ部分集合Bkのうちの少なくとも1つのサイズ(サイズBk)と、サブ部分集合Bkのうちの少なくとも1つの要素biとの情報を有する。
【0447】
第16又は第17態様に従った、方法の第18態様であって、マッピング関数の情報は、サブ部分集合Bkの点におけるマッピング関数の増分の値の情報を有する。
【0448】
第16又は第17態様に従った、方法の第19態様であって、マッピング関数の情報は、サブ部分集合Bkの数の情報を有する。
【0449】
第16乃至第19態様のいずれか一に従った、方法の第20態様であって、マッピング関数の情報の少なくとも一部(例えば、サブ部分集合B
kの情報)は、次の構文を用いて取得される:
【表43】
【0450】
第16乃至第19態様のいずれか一に従った、方法の第21態様であって、マッピング関数の情報の少なくとも一部(例えば、サブ部分集合B
kの情報)は、次の構文を用いて取得される:
【表44】
【0451】
第2又は第3態様に従った、方法の第22態様であって、マッピング関数は区分関数であり、マッピング関数の情報は、区分関数の区切り点、変化点、又はピボット点を有する。
【0452】
第2又は第3態様に従った、方法の第23態様であって、区切り点、又は変化点、又はピボット点の数、及びそのx及びy座標が、直接的な形式で、又は現在点座標と先行点座標との間の差を用いて、ビットストリーム内でシグナリングされる。
【0453】
第22又は第23態様に従った、方法の第24態様であって、前記マッピング関数は、線形方程式、指数方程式、対数方程式、又は上記の方程式の組み合わせ、に基づく区分関数である。
【0454】
第24態様に従った、方法の第25態様であって、区分関数のパラメータがピボット点に基づいて取得され、例えば、線形方程式の場合の例として:slope=(Ey-Dy)/(Ex-Dx)、b=Dy+slope*Dxであり、ここで、D(94)及びE(95)は、対応して座標Dx、Dy、及びEx、Eyを有する例示的な変化点であり、slope及びbは、例えばy=slope*x+bなどの線形方程式のパラメータである。
【0455】
第2又は第3態様に従った、方法の第26態様であって、集合Xは部分集合Cを含み、マッピング関数の情報は、部分集合Cの開始インデックス(x_start)及び部分集合Cの終了インデックス(x_end)の情報を有する。
【0456】
第25又は第26態様に従った、方法の第27態様であって、マッピング関数の情報は、部分集合Cの任意のxについてのマッピング関数f(x)-f(x-1)のデルタ値の情報を有する。
【0457】
第27態様に従った、方法の第28態様であって、デルタ値は、次の構文を用いて取得され:
【表45】
ここで、sps_qpc_cb_delta[i]がデルタ値を表している。
【0458】
第27態様に従った、方法の第29態様であって、デルタ値は0から1の範囲内である。
【0459】
第29態様に従った、方法の第30態様であって、デルタ値は、次の構文を用いて取得され:
【表46】
ここで、sps_qpc_cb_delta[i]がデルタ値を表している。
【0460】
第26乃至第30態様のいずれか一に従った、方法の第31態様であって、マッピング関数の情報は、以下のコード:バイナリ、固定長、ユナリ、トランケートユナリ、トランケートバイナリ、Golomb、又はExp-Golombコードのうちのいずれかを用いてシグナリングされる。
【0461】
第1乃至第31態様のいずれか一に従った、方法の第32態様であって、デコーダは更に、予め定められたマッピング関数を有し、ビットストリームは、予め定められたマッピング関数を使用すべきか、それとも、ビットストリーム内でマッピング関数をシグナリングすべきかを指し示すインジケータを有する。
【0462】
第1乃至第32態様のいずれか一に従った、方法の第33態様であって、マッピング関数の情報は、Cb及びCr成分(クロミナンス成分)の両方についてシグナリングされる。
【0463】
第1乃至第33態様のいずれか一に従った、方法の第34態様であって、マッピング関数の情報は、マッピング関数がCb及びCr成分について別々にシグナリングされるのか、それともまとめてシグナリングされるのかを指し示すインジケータを有する。
【0464】
第1乃至第34態様のいずれか一に従った、方法の第35態様であって、マッピング関数の情報は、シーケンスパラメータセット内でシーケンスレベルで、又はピクチャパラメータセット内でピクチャレベルで、又はタイルグループパラメータセット内でタイルグループレベルで、又は適応パラメータセット内で、又は補足拡張情報(SEI)メッセージ内でシグナリングされる。
【0465】
第1乃至第35態様のいずれか一に従った、方法の第36態様であって、マッピング関数は、次のテーブルとして表現される:
【表47】
【0466】
第1乃至第35態様のいずれか一に従った、方法の第37態様であって、マッピング関数は、次のテーブルとして表現される:
【表48】
【0467】
第1乃至第36態様のいずれか一に従った、方法の第38態様であって、マッピング関数の情報は、直接的に又は間接的にビットストリーム内でシグナリングされる。
【0468】
デコーダ(30)の第39態様は、第1乃至第38態様のいずれか一に従った方法を実行する処理回路を有する。
【0469】
コンピュータプログラムプロダクトの第40態様は、第1乃至第38態様のいずれか一に従った方法を実行するためのプログラムコードを有する。
【0470】
デコーダの第40態様は、1つ以上のプロセッサと、プロセッサに結合され、プロセッサによる実行のためのプログラミングを格納した非一時的なコンピュータ読み取り可能記憶媒体と、を有し、プログラミングは、プロセッサによって実行されるときに、第1乃至第38態様のいずれか一に従った方法を実行するように当該デコーダを構成する。