JP2024513551A - ビデオ符号化復号化のための残差及び係数符号化復号化 - Google Patents
ビデオ符号化復号化のための残差及び係数符号化復号化 Download PDFInfo
- Publication number
- JP2024513551A JP2024513551A JP2023560156A JP2023560156A JP2024513551A JP 2024513551 A JP2024513551 A JP 2024513551A JP 2023560156 A JP2023560156 A JP 2023560156A JP 2023560156 A JP2023560156 A JP 2023560156A JP 2024513551 A JP2024513551 A JP 2024513551A
- Authority
- JP
- Japan
- Prior art keywords
- video
- encoding
- rice
- slice
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 402
- 235000007164 Oryza sativa Nutrition 0.000 claims abstract description 218
- 235000009566 rice Nutrition 0.000 claims abstract description 218
- 238000013139 quantization Methods 0.000 claims abstract description 134
- 238000003860 storage Methods 0.000 claims abstract description 39
- 241000209094 Oryza Species 0.000 claims description 217
- 230000002123 temporal effect Effects 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 24
- 230000008859 change Effects 0.000 claims description 6
- 240000007594 Oryza sativa Species 0.000 abstract 1
- 230000008569 process Effects 0.000 description 193
- 238000010586 diagram Methods 0.000 description 112
- 238000012545 processing Methods 0.000 description 101
- 238000005192 partition Methods 0.000 description 75
- 239000013598 vector Substances 0.000 description 70
- 238000009795 derivation Methods 0.000 description 66
- 238000013507 mapping Methods 0.000 description 52
- 230000011664 signaling Effects 0.000 description 30
- 238000006243 chemical reaction Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 26
- 230000006978 adaptation Effects 0.000 description 22
- 239000011159 matrix material Substances 0.000 description 22
- 230000003044 adaptive effect Effects 0.000 description 20
- 230000001419 dependent effect Effects 0.000 description 18
- 238000000638 solvent extraction Methods 0.000 description 17
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 16
- 230000002085 persistent effect Effects 0.000 description 16
- 238000013461 design Methods 0.000 description 14
- 238000004458 analytical method Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 10
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 241000023320 Luma <angiosperm> Species 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000036961 partial effect Effects 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000000717 retained effect Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- IESVDEZGAHUQJU-ZLBXKVHBSA-N 1-hexadecanoyl-2-(4Z,7Z,10Z,13Z,16Z,19Z-docosahexaenoyl)-sn-glycero-3-phosphocholine Chemical compound CCCCCCCCCCCCCCCC(=O)OC[C@H](COP([O-])(=O)OCC[N+](C)(C)C)OC(=O)CC\C=C/C\C=C/C\C=C/C\C=C/C\C=C/C\C=C/CC IESVDEZGAHUQJU-ZLBXKVHBSA-N 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012432 intermediate storage Methods 0.000 description 2
- 238000003064 k means clustering Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
低遅延変換スキップ残差符号化復号化(TSRC)方法を利用するビデオ符号化復号化のための方法、装置および非一時的コンピュータ可読記憶媒体を提供する。前記TSRC方法は、ビデオの現在のスライスの符号化情報に基づいてエンコーダによってライスパラメータを導出することを含む。符号化情報は、ビデオのスライス、画像またはシーケンスに関連する量子化パラメータまたは符号化ビット深度、または、ビデオのスライス、画像またはシーケンスに関連するハッシュ率、のうちの1つまたは複数のパラメータを含む。
Description
本出願は、2021年3月29日に提出された米国仮出願第63/167621号に対する優先権を主張するものであり、この特許出願の開示全体を参照によって本願明細書に援引する。
本開示は、ビデオ符号化復号化及び圧縮に関する。特に、本開示は、ビデオ符号化復号化のための残差及び係数符号化復号化の改善及び簡略化に関する。
多種のビデオ符号化復号化技術は、ビデオデータを圧縮することに使用されることが可能である。ビデオ符号化復号化は、1つまたは複数のビデオ符号化復号化標準に従って実行される。ビデオ符号化復号化標準には、例えば多用途ビデオ符号化(VVC:Versatile Video Coding)、共同探査試験モデル(JEM:Joint Exploration Test Model)、高効率ビデオ符号化復号化(H.265/HEVC:High Efficiency Video Coding)、高度なビデオ符号化復号化(H.264/AVC:Advanced Video Coding)、及び動画専門家グループ(MPEG:Moving Picture Experts Group)符号化復号化などを含む。ビデオ符号化復号化では、一般に、ビデオ画像またはシーケンスに存在する冗長性による予測方法(例えば、インター予測、イントラ予測など)が利用される。ビデオ符号化復号化技術の重要な目標は、ビデオ品質の低下を回避しまたは最小限に抑えながら、ビデオデータをより低いビットレートの形式に圧縮することである。
本開示の例は、ビデオ符号化復号化のための方法及び装置を提供する。
本開示の第1の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、シーケンスパラメータセット(SPS)範囲拡張フラグをSPS範囲拡張フラグデコーダによって受信することを含み、前記SPS範囲拡張フラグが、スライスヘッダ(SH)ローバイトシーケンスペイロード(RBSP)の構文構造に構文構造sps_range_extensionが存在するか否かを、前記SPS範囲拡張フラグの値に基づいて示す。
本開示の第2の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、シーケンスパラメータセット(SPS)整列有効化フラグをデコーダによって受信することを含み、前記SPS整列有効化フラグが、構文要素sb_coded_flag、abs_remainder、dec_abs_levelおよびcoeff_sign_flagnのバイパス復号の前にインデックスivlCurrRangeが整列されるか否かを、前記SPS整列有効化フラグの値に基づいて示す。
本開示の第3の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、拡張精度処理フラグをデコーダによって受信することを含み、前記拡張精度処理フラグが、変換処理中に変換係数について拡張ダイナミックレンジが使用されるか否かを、前記拡張精度処理フラグの値に基づいて示す。
本開示の第4の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、持続ライス適応有効化フラグをデコーダによって受信することを含み、前記持続ライス適応有効化フラグが、abs_remainderおよびdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われるか否かを、前記持続ライス適応有効化フラグの値に基づいて示す。
なお、上記の発明の概要及び以下の詳細な説明は、例示的及び説明的なものにすぎず、本開示を限定することを意図していないことを理解すべきである。
本明細書に組み込まれ、本明細書の一部を構成する図面は、本開示と一致する例を示し、記述とともに本開示の原理を説明するためのものである。
以下、例が添付の図面に示されている具体的な実施の形態を詳細に参照する。以下の説明は、別段の説明がない限り、異なる図面における同一の数字が同一または類似の要素を表す図面を参照する。例示的な実施形態における以下の説明において説明される実現は、本開示と一致するすべての実現を表すものではない。これらは、添付の特許請求の範囲に記載された本開示に関連する態様と一致する装置および方法の例にすぎない。
本開示に使用されている用語は、特定の実施例を記載する目的のみに用いられるものであり、本開示を限定するためのものではない。本開示および添付する特許請求の範囲に使用されている単数形式の「一種」、「一個」および「当該」は、文脈で明確に説明されない限り、複数形式も含むこととする。さらに、本明細書で使用されている「および/または」という用語は、関連する1つまたは複数のリストアップ項目の任意または全てのありうる組合せを示したり含んだりするとする。
本明細書では、「第1」、「第2」、「第3」などの用語を用いて各種情報を記述することができるが、記載されている情報は、これらの用語に限定されるべきではないことを理解されたい。これらの用語は、1つの情報の種類を別の情報の種類と区別するためにのみ使用される。例えば、本開示の範囲を逸脱しない場合、第1の情報を第2の情報と呼ぶことができ、また同様に、第2の情報を第1の情報と呼ぶこともできる。本明細書で使用されるように、文脈によれば、「もし」という用語は、「…の時に」または「一旦…すると」または「判断に応じる」ことを意味すると理解される。
HEVC標準の第1版は、2013年10月に完成されたものであって、その前世代のビデオ符号化復号化標準H.264/MPEG AVCと比較して、約50%のビットレート節約または同等の知覚品質を提供する。HEVC標準は、前身と比較して顕著な符号化復号化改善を提供しているが、追加の符号化復号化ツールを利用してHEVCより優れた符号化復号化効率を実現できる証拠がある。これに基づいて、VCEG及びMPEGは、いずれも将来のビデオ符号化復号化規格化のための新しい符号化復号化技術の探索を開始した。ITU-T VECG及びISO/IEC MPEGは、2015年10月で統合共同ビデオ専門家チーム(JVET)を形成して、符号化復号化効率の大幅な向上を実現可能な先進技術に対する重要な研究を開始した。JVETは、HEVCテストモデル(HM:test model)の上にいくつかの追加の符号化復号化ツールを積分することにより、共同探査試験モデル(JEM)と呼ばれる参照ソフトウェアを維持する。
2017年10月、ITU-T及びISO/IECは、HEVCを上回る性能を持つビデオ圧縮に関する共同提案募集(CfP:joint call for proposals)を発表した。2018年4月、第10回JVET会議では、HEVCより約40%上回る圧縮効率利得を示す23つのCfP応答を受信して評価した。このような評価結果に基づいて、JVETは、多用途ビデオ符号化(VVC)と呼ばれる次世代ビデオ符号化復号化標準を開発するための新プロジェクトを開始した。同月には、VVC標準の参照実装を示すために、VVCテストモデル(VTM:VVC test model)と呼ばれる参照ソフトウェアコードベースが構築された。
HEVCと同様に、VVCは、ブロックベースのハイブリッドビデオ符号化復号化フレームワークに構築される。
図1は、VVC用のブロックベースのビデオエンコーダの概略的な図を示す。具体的には、図1は、典型的なエンコーダ100を示す。エンコーダ100は、ビデオ入力110、動き補償112、動き推定114、イントラ/インターモード決定116、ブロック予測因子140、加算器128、変換130、量子化132、予測関連情報142、イントラ予測118、画像バッファ120、逆量子化134、逆変換136、加算器126、メモリ124、インループフィルタ122、エントロピー符号化138およびビットストリーム144を有する。
エンコーダ100では、ビデオフレームが、処理のために複数のビデオブロックに分割される。所与のビデオブロック毎に、予測は、インター予測方法またはイントラ予測方法に基づいて形成される。
現在のビデオブロック(ビデオ入力110の一部)とその予測因子(ブロック予測因子140の一部)との差を示す予測残差は、加算器128から変換130に送信される。その後、変換係数は、エントロピー低減のために変換130から量子化132に送信される。その後、量子化係数は、圧縮ビデオビットストリームを生成するためにエントロピー符号化138に供給される。図1に示すように、イントラ/インターモード決定116からの予測関連情報142(例えば、ビデオブロック区画情報、動きベクトル(MV)、参照画像インデックス、イントラ予測モード)も、エントロピー符号化138によって供給されて圧縮ビットストリーム144に保存される。圧縮ビットストリーム144は、ビデオビットストリームを含む。
エンコーダ100では、予測目的のための画素を再構成するために、デコーダ関連回路も必要である。まず、逆量子化134及び逆変換136によって予測残差を再構成する。再構成された当該予測残差は、現在のビデオブロックのためのフィルタリングされていない再構成画素を生成するためにブロック予測因子140と組み合わされる。
空間予測(または「イントラ予測」)は、現在のビデオブロックと同じビデオフレーム中の符号化済み隣接ブロックのサンプル(参照サンプルと呼ばれる)からの画素を使用して、現在のビデオブロックを予測する。
時間予測(「インター予測」とも呼ばれる)は、符号化済みビデオ画像からの再構成画素を使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間冗長性を低減する。所与の符号化ユニット(CU)または符号化ブロックのための時間予測信号は、通常、現在のCUとその時間参照との間の動きの量および方向を示す1つまたは複数のMVによって信号で通知される。さらに、複数の参照画像がサポートされている場合は、時間予測信号が参照画像記憶部内のどの参照画像から来るかを識別するための参照画像インデックスが追加的に送信される。
動き推定114は、ビデオ入力110及び画像バッファ120からの信号を取り込んで、動き推定信号を動き補償112に出力する。動き補償112は、ビデオ入力110、画像バッファ120からの信号、および動き推定114からの動き推定信号を取り込んで、動き補償信号をイントラ/インターモード決定116に出力する。
空間予測および/または時間予測を実行した後、エンコーダ100におけるイントラ/インターモード決定116は、例えば、レート歪み最適化方法に基づいて最適な予測モードを選択する。次に、変換130及び量子化132によってブロック予測因子140を現在のビデオブロックから減算し、得られた予測残差を非相関化する。得られた量子化の残差係数は、逆量子化134によって逆量子化され、逆変換136によって逆変換されて再構成の残差を形成し、その後、この再構成の残差を予測ブロックに加算し戻してCUの再構成信号を形成する。再構成されたCUは、画像バッファ120の参照画像記憶部に入れられて将来のビデオブロックを符号化するために使用される前に、デブロッキングフィルタ、サンプル適応オフセット(SAO:sample adaptive offset)、および/または適応インループフィルタ(ALF:adaptive in-loop filter)などのインループフィルタ122が適用されることができる。出力ビデオビットストリーム144を形成するために、符号化モード(インターまたはイントラ)、予測モード情報、動き情報、及び量子化の残差係数は、すべてエントロピー符号化ユニット138に送信され、さらに圧縮され、パッケージングされてビットストリームを形成する。
図1は、汎用のブロックベースのハイブリッドビデオ符号化システムを示すブロック図である。入力ビデオ信号は、ブロック単位(CUと呼ばれる)で処理される。VTM-1.0では、CUは、最大128×128画素まで可能である。しかし、四分木のみに基づいてブロックを区画するHEVCとは異なり、VVCでは、1つの符号化木ユニット(CTU)が四分木/二分木/三分木に基づいてCUに分割されて、変化する局所特性に適応する。定義によれば、符号化木ブロック(CTB)があるN値に対するN×Nサンプルブロックであり、成分をCTBに分割することは、一種の区画である。CTUは、3つのサンプルアレイを有する画像の輝度サンプルのCTB、彩度サンプルの2つの対応するCTB、または単色画像のサンプルのCTB、または3つの個別の色平面及びサンプル符号化用の構文構造で符号化された画像のサンプルのCTBを含む。また、HEVCにおける多区画ユニットタイプの概念は、除去され、すなわち、VVCにおいてCU、予測ユニット(PU)、変換ユニット(TU)は、区別されなくなる。その代わりに、各CUは、さらなる区画を必要とせずに、常に予測及び変換の両方のためのベースユニットとして使用される。マルチタイプ木構造では、1つのCTUが最初に四分木構造によって区画される。次に、各四分木の葉ノードは、二分木構造及び三分木構造によってさらに区画されることができる。図3A、図3B、図3C、図3D、図3Eに示すように、四元区画、水平二元区画、垂直二元区画、水平三元区画および垂直三元区画の5種類の分割タイプが存在する。
図3Aは、本開示に係るマルチタイプ木構造におけるブロック四元区画を示す図である。
図3Bは、本開示に係るマルチタイプ木構造におけるブロック垂直二元区画を示す図である。
図3Cは、本開示に係るマルチタイプ木構造におけるブロック水平二元区画を示す図である。
図3Dは、本開示に係るマルチタイプ木構造におけるブロック垂直三元区画を示す図である。
図3Eは、本開示に係るマルチタイプ木構造におけるブロック水平3元区画を示す図である。
図1において、空間予測および/または時間予測は、実行されてよい。空間予測(または「イントラ予測」)は、同じビデオ画像/スライス内の符号化済み隣接ブロックのサンプル(参照サンプルと呼ばれる)からの画素を使用して、現在のビデオブロックを予測する。空間予測は、ビデオ信号における固有の空間冗長性を低減する。時間予測(「インター予測」または「動き補償された予測」とも呼ばれる)は、符号化済みビデオ画像からの再構成画素を使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間冗長性を低減する。所与のCUのための時間予測信号は、通常、現在のCUとその時間参照との間の動きの量及び方向を示す1つまたは複数の動きベクトル(MV)によって信号で通知される。さらに、複数の参照画像がサポートされている場合は、時間予測信号が参照画像記憶部内のどの参照画像から来るかを識別するための参照画像インデックスが追加的に送信される。空間および/または時間予測の後、エンコーダ内のモード決定ブロックは、例えば、レート歪み最適化方法に基づいて最適な予測モードを選択する。次に、現在のビデオブロックから予測ブロックを減算し、変換を用いて予測残差を非相関化して量子化する。量子化された残差係数は、逆量子化および逆変換されて再構成残差を形成し、再構成された残差が、その後予測ブロックに加算し戻されてCUの再構成信号を形成する。さらに、再構成されたCUは、参照画像記憶部に入れられて将来のビデオブロックを符号化するために使用される前に、デブロッキングフィルタ、サンプル適応オフセット(SAO)、および適応インループフィルタ(ALF)などのインループフィルタが適用されることができる。出力ビデオビットストリームを形成するために、符号化モード(インターまたはイントラ)、予測モード情報、動き情報及び量子化された残差係数は、すべてエントロピー符号化ユニットに送信され、さらに圧縮され、パッケージングされてビットストリームを形成する。
図2は、VVC用のビデオデコーダの概略的なブロック図を示す。具体的には、図2は、典型的なデコーダ200のブロック図を示す。デコーダ200は、ビットストリーム210、エントロピー復号化212、逆量子化214、逆変換216、加算器218、イントラ/インターモード選択220、イントラ予測222、メモリ230、インループフィルタ228、動き補償224、画像バッファ226、予測関連情報234およびビデオ出力232を有する。
デコーダ200は、図1のエンコーダ100に存在する再構成関連部分と同様である。デコーダ200では、最初にエントロピー復号212によって入力したビデオビットストリーム210を復号化し、量子化係数レベル及び予測相関情報を導出する。その後、逆量子化214および逆変換216によって量子化係数レベルを処理して、再構成された予測残差を得る。イントラ/インターモード選択器220において実装されるブロック予測因子機構は、復号化された予測情報に基づいてイントラ予測222または動き補償224を実行するように構成される。加算器218を用いて、逆変換216からの再構成予測残差とブロック予測因子機構によって生成された予測出力とを加算することにより、フィルタリングされていない再構成画素のセットが得られる。
再構成されたブロックは、参照画像記憶部として使用される画像バッファ226に格納される前に、さらにインループフィルタ228を通過することができる。画像バッファ226内の再構成されたビデオは、表示装置を駆動するために送信されてもよく、将来のビデオブロックを予測するために使用されてもよい。インループフィルタ228を開いた場合、再構成された画素に対してフィルタリング動作を実行して、最終的な再構成ビデオ出力232を導出する。
図2は、ブロックベースのビデオデコーダの概略的なブロック図を示す。ビデオビットストリームは、最初にエントロピー復号化ユニットでエントロピー復号化される。符号化モードおよび予測情報は、予測ブロックを形成するために空間予測ユニット(イントラ符号化される場合)または時間予測ユニット(インター符号化される場合)に送信される。残差変換係数は、残差ブロックを再構成するために逆量子化ユニットおよび逆変換ユニットに送信される。予測ブロックと残差ブロックは、次に加算される。再構成されたブロックは、参照画像記憶部に格納される前にさらにインループフィルタを通過することができる。その後、参照画像記憶部内の再構成ビデオが送信されて、表示装置を駆動し、将来のビデオブロックを予測するために使用される。
一般に、VVCにおいて適用されるベースイントラ予測スキームは、例えば、イントラサブ区画(ISP:intra sub-partition)符号化モード、広角イントラ方向を有する拡張イントラ予測、位置関連イントラ予測組み合わせ(PDPC)および4タップイントラ補間など、いくつかのモジュールがさらに拡張および/または改良されたことを除いて、HEVCのベースイントラ予測スキームと同じである。
VVCにおける画像、タイル群、タイルおよびCTUの区画
VVCでは、タイルは、画像内の特定のタイル列及び特定のタイル行内のCTUの矩形領域として定義される。タイル群は、画像における単一のNALユニットにのみ含まれる整数個のタイルの組み合わせである。基本的に、タイル群の概念は、HEVCで定義されているスライスと同じである。たとえば、画像は、タイル群及びタイルに分割される。タイルは、画像の矩形領域を覆うCTUシーケンスである。タイル群には、画像の複数のタイルが含まれる。タイル群の2つのモード、すなわちラスタ走査タイル群モード及び矩形タイル群モードはサポートされる。ラスタ走査タイル群モードでは、タイル群には、画像におけるタイルラスタ走査されたタイルシーケンスが含まれる。矩形タイル群モードでは、タイル群には、画像における矩形領域を共同で形成する複数のタイルが含まれる。矩形タイル群内のタイルは、タイル群のタイルラスタ走査の順序に従う。
図4は、画像のラスタ走査タイル群区画の例を示し、ここで、画像は、12タイルと3ラスタ走査タイル群に分割される。図4は、タイル410、412、414、416および418を含む。各タイルには18個のCTUがある。より具体的には、図4は、12個のタイルと3個のタイル群(情報性)に区画された18×12輝度CTUを有する画像を示す。3つのタイル群は、以下の通りである。(1)第1のタイル群は、タイル410及び412を含む。(2)第2のタイル群は、タイル414、416、418、420および422を含む。(3)第3のタイル群は、タイル424、426、428、430および432を含む。
図5は、画像の矩形タイル群区画の例を示しており、ここで、画像は、24タイル(6タイル列及び4タイル行)と9矩形タイル群に分割されている。図5は、タイル510、512、514、516、518、520、522、524、526、528、530、532、534、536、538、540、542、544、546、548、550、552、554および556を含む。より具体的には、図5は、24個のタイルと9個のタイル群(情報性)に区画された18×12輝度CTUを有する画像を示す。タイル群にはタイルが含まれ、タイルにはCTUが含まれている。9つの矩形タイル群は、(1)2つのタイル510及び512、(2)2つのタイル514及び516、(3)2つのタイル518及び520、(4)4つのタイル522、524、534および536、(5)4つのタイル群526、528、538および540、(6)4つのタイル530、532、542および544、(7)2つのタイル546及び548、(8)2つのタイル550及び552、(9)2つのタイル554及び556を含む。
VVCにおける高周波ゼロ復帰によるラージブロックサイズ変換
VTM4では、主に例えば1080pおよび4Kシーケンスなどの高解像度ビデオに使用される最大サイズ64×64までのラージブロックサイズ変換が有効にされる。サイズ(幅または高さ、または幅と高さの両方)が64に等しい変換ブロックに対して、低周波数係数のみが残るように高周波変換係数をゼロにする。例えば、M×N変換ブロック(Mはブロック幅、Nはブロック高さである)について、M=64の場合、変換係数の左側の32列のみが保持される。同様に、N=64の場合、変換係数の先頭の32行のみが保持される。変換スキップモードをラージブロックに使用する場合、任意の値をゼロにすることなくブロック全体を使用する。
VVCにおける仮想パイプラインデータユニット(VPDU)
仮想パイプラインデータユニット(VPDU)は、画像中の非オーバーラップユニットとして定義される。ハードウェアデコーダでは、連続するVPDUが複数のパイプライン段階で同時に処理される。VPDUサイズがほとんどのパイプライン段階におけるバッファサイズにほぼ比例するため、VPDUサイズを小さく保つことが重要である。ほとんどのハードウェアデコーダでは、VPDUサイズを最大変換ブロック(TB)サイズに設定することができる。しかし、VVCでは、三分木(TT)及び二分木(BT)の区画によってVPDUサイズが増加する可能性がある。
VPDUサイズを64×64輝度サンプルに保つために、VTM5に以下の(構文信号通知による修正の)標準区画制限を適用する。
幅または高さ、または幅と高さの両方が128に等しいCUは、TT分割が許可されない。
N≦64の128×N CU(すなわち、幅が128に等しく、高さが128未満)は、水平BTが許可されない。
N≦64のN×128 CU(すなわち、高さが128に等しく、幅が128未満)は、垂直BTが許可されない。
図6A、図6B、図6C、図6D、図6E、図6F、図6G、図6Hは、VTMにおいて許されないTT区画及びBT区画の例を示す。
VVCにおける変換係数の符号化復号化
VVCにおける変換係数の符号化復号化は、非オーバーラップ係数群(CGまたはサブブロックとも呼ばれる)を使用する上でHEVCと類似している。しかし、それらの間にもいくつかの違いがある。HEVCでは、係数の各CGは、4×4の固定サイズを有する。VVCドラフト6では、CGサイズが、TBサイズに依存するようになる。したがって、VVCでは、各種のCGサイズ(1×16、2×8、8×2、2×4、4×2および16×1)は、利用可能である。符号化ブロック内のCGおよびCG内の変換係数は、予め定められた走査順にしたがって符号化される。
画素当たりのコンテキスト符号化された2進数字の最大数を制限するために、TBの面積およびビデオ成分のタイプ(例えば、輝度成分および彩度成分)は、TBに対してコンテキスト符号化された2進数字(CCB)の最大数を導出するために使用される。コンテキスト符号化された2進数字の最大数は、TB_zosize*1.75である。ここで、TB_zosizeは、係数がゼロに復帰した後のTB内のサンプル数を示す。なお、CGが非ゼロ係数を含むか否かを示すフラグであるcoded_sub_block_flagは、CCBカウントに対して考慮されない。
係数ゼロ復帰は、変換ブロックの特定の領域に位置する係数を0に強制するためにその変換ブロックに対して実行される動作である。例えば、現在のVVCでは、64×64変換は、関連するゼロ復帰動作を有する。したがって、64×64変換ブロック内部の左上32×32領域外の変換係数は、すべて0に強制される。実際には、現在のVVCでは、特定の次元に沿ってサイズが32を超える任意の変換ブロックについて、係数ゼロ復帰動作を実行して、左上32×32領域外の係数を0に強制する。
VVCにおける変換係数符号化復号化では、まず変数remBinsPass1を、許可されるコンテキスト符号化された2進数字の最大数(MCCB)に設定する。符号化プロセスでは、コンテキスト符号化された2進数字が信号で送信されるたびに、この変数が1減少する。remBinsPass1が4以上の場合、まずすべてが第1のパスでコンテキスト符号化された2進数字を使用する構文sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagによって係数を信号で送信する。第2のパスでゴロム・ライス(Golomb-rice)コードおよびバイパス符号化(bypass-coded)された2進数字を使用して、構文要素abs_remainderによって係数のレベル情報の残りの部分を符号化する。第1のパスで符号化する際にremBinsPass1が4未満になると、現在の係数は、第1のパスで符号化されず、第2のパスでゴロム・ライスコード及びバイパス符号化された2進数字を使用して、構文要素dec_abs_levelによって直接符号化される。dec_abs_level[ ]のためのライスパラメータ導出プロセスを表3に指定されているように導出する。すべての上記レベル符号化の後、sig_coeff_flagが1に等しいすべての走査位置のシンボル(sign_flag)は、最終的にバイパスされた2進数字として符号化される。このようなプロセスは、図7に示されている。TBごとにremBinsPass1をリセットする。sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagに対して、コンテキスト符号化された2進数字を使用するとともに、残りの係数に対して、バイパス符号化された2進数字を使用する遷移は、TBあたり最大1回しか発生しない。係数サブブロックの場合、最初の係数を符号化する前にremBinsPass1が4未満であれば、バイパス符号化された2進数字を使用して係数サブブロック全体を符号化する。
図7は、変換ブロックのための残差符号化復号化構造を示す図である。
統合(同一)されたライスパラメータ(RicePara)導出は、構文abs_remainder及びdec_abs_levelを信号で送信するために用いられる。唯一の違いは、ベースレベルbaseLevelが4及び0に設定されて、abs_remainder及びdec_abs_levelに対してそれぞれ符号化を行うことにある。ライスパラメータは、局所テンプレート中の隣接する5つの変換係数の絶対レベルの合計だけでなく、以下のように対応する基礎レベルに基づいて決定される。
RicePara = RiceParTable[ max(min( 31, sumAbs - 5 * baseLevel), 0) ]
現在のVVCドラフト仕様における残差符号化復号化の構文および関連する意味をそれぞれ表1及び表2に示す。本開示の付録セクションには、表1をどのように読むかが示されており、これは、VVC仕様でも見つけることができる。
VVCにおける変換スキップモードのための残差符号化復号化
1つの残差符号化復号化スキームが変換係数及び変換スキップ係数の両方の符号化復号化に対して設計されているHEVCとは異なり、VVCでは、2つの個別の残差符号化復号化スキームが変換係数及び変換スキップ係数(すなわち残差)にそれぞれ用いられる。
変換スキップモードでは、残差信号の統計特性が、変換係数の統計特性と異なり、低周波成分周辺のエネルギー圧縮が観察されなかった。残差符号化復号化は、以下を含む(空間)変換スキップ残差の異なる信号特性を考慮するように修正された。
最後のx/y位置を信号で送信しない。
すべての以前のフラグが0に等しい場合、coded_sub_block_flagは、DCサブブロックを除く各サブブロックのために符号化される。
2つの隣接係数に基づくsig_coeff_flagコンテキストモデリング。
par_level_flagは、コンテキストモデルを1つだけ使用する。
追加された5、7、9個より多いフラグ。
剰余2値化のための修正されたライスパラメータ導出。
サインフラグのためのコンテキストモデリングは、左と上の隣接係数値に基づいて決定され、sig_coeff_flagの後にサインフラグを解析して、すべてのコンテキスト符号化された2進数字を一緒に維持する。
図8に示すように、構文要素sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flagは、第1のパスで交互に残差サンプルごとに符号化され、その後、abs_level_gtx_ flagは、第2のパスでビット平面にしたがって符号化され、abs_remainderは、第3のパスで符号化される。
・パス1:sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag
・パス2:abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag
・パス3:abs_remainder
図8は、変換スキップブロックのための残差符号化復号化構造を示す図である。
現在のVVCドラフト仕様における変換スキップモードのための残差符号化復号化の構文と関連する意味をそれぞれ表5及び表2に示す。本開示の付録セクションには、表5をどのように読むかが示されており、これは、VVC仕様でも見つけることができる。
量子化
現在のVVCでは、最大QP値が51から63に拡張され、それに応じて初期QPのシグナリングが変更される。slice_qp_deltaの非ゼロ値を符号化する場合、スライスセグメント層でSliceQpYの初期値を変更することができる。変換スキップブロックの場合、最小許容量子化パラメータ(QP)は、QP=4の場合に量子化ステップが1になるため、4と定義される。
また、同じHEVCスカラ量子化は、依存スカラ量子化と呼ばれる新しい概念とともに使用される。依存スカラー量子化とは、変換係数のための許容再構成値の集合が、再構成順で現在の変換係数レベルの前の変換係数レベルの値に依存する方法を指す。この方法の主な効果は、HEVCで使用されている従来の独立スカラー量子化に比べて、許容再構成ベクトルがN(Nは、変換ブロックにおける変換係数の数を表す)次元ベクトル空間においてより密にパッケージングされることである。これは、入力ベクトルと最も近い再構成ベクトルとの間の平均歪が、N次元単位体積当たりの許容再構成ベクトルの所定の平均数に対して減少されることを示している。依存スカラー量子化方法は、(a)再構成レベルが異なる2つのスカラー量子化器を定義することと、(b)2つのスカラー量子化器を切り替えるためのプロセスを定義することによって実現される。
使用される2つのスカラー量子化器(Q0とQ1で表される)は、図9に示されている。使用可能な再構成レベルの位置は、量子化ステップΔによって一意に指定される。使用されるスカラー量子化器(Q0またはQ1)は、ビットストリームで非明示的に信号で送信される。対照的に、現在の変換係数のための量子化器は、符号化/再構成順で現在の変換係数の前の変換係数レベルのパリティによって決定される。
図9は、提案された依存量子化方法で使用される2つのスカラー量子化器を示す図である。
図10Aおよび図10Bに示すように、2つのスカラー量子化器(Q0およびQ1)間の切り替えは、4つの量子化器状態(QState)を有するステートマシンによって実現される。QStateは、0、1、2、3の4つの異なる値を使用することができる。これは、符号化/再構成順で現在の変換係数の前の変換係数レベルのパリティによって一意に決定される。変換ブロックのための逆量子化の開始時には、状態は、0に等しく設定される。変換係数は、走査順(すなわち、エントロピー復号化された同じ順序)で再構成される。現在の変換係数を再構成した後、図10に示すように状態を更新する。ここで、kは、変換係数レベルの値を表す。
図10Aは、提案された依存量子化の状態遷移を説明する遷移図である。
図10Bは、提案された依存量子化のための量子化器選択を説明する表である。
デフォルトのスケーリング行列及びユーザ定義のスケーリング行列を信号で送信することもサポートされている。デフォルトモードスケーリング行列は、すべてフラットであり、すべてのTBサイズで要素が16に等しい。IBC及びイントラ符号化モードは、現在、同じスケーリング行列を共有している。したがって、ユーザ定義行列の場合、MatrixType及びMatrixType_DCの数の更新は、次の通りである。
MatrixType:30=2(2はイントラおよびIBC/インター用)×3(Y/CB/Cr成分)×5(正方形TBサイズ:輝度に対して4×4~64×64、彩度に対して2×2~32×32)
MatrixType_DC:14=2(2はイントラおよびIBC/インター用×1はY成分用)×3(TBサイズ:16×16、32×32、64×64)+4(2はイントラおよびIBC/インター用×2はCB/Cr成分用)×2(TBサイズ:16×16、32×32)
DC値は、以下のスケーリング行列16×16、32×32、64×64に対してそれぞれ符号化される。サイズが8×8未満のTBの場合、スケーリング行列内のすべての要素を信号で送信する。TBのサイズが8×8以上の場合、8×8スケーリング行列内の64要素のみを信号で送信してベーススケーリング行列とする。8×8より大きいサイズの正方形行列を得るために、8×8ベーススケーリング行列を対応する正方形寸法(すなわち16×16、32×32、64×64)に(要素のコピーによる)アップサンプリングをする。64点変換用の高周波係数のゼロ復帰を適用すると、スケーリング行列の対応する高周波もゼロになる。すなわち、TBの幅または高さが32以上であれば、係数の左半分または上半分のみが保持され、残りの係数にゼロが割り当てられる。また、64×64スケーリング行列に対して信号で送信される要素の数も、8×8から3つの4×4サブ行列に減らされる。これは、右下4×4要素が使用されていないためである。
変換係数符号化復号化のためのコンテキストモデリング
変換係数レベルの絶対値に関連する構文要素の確率モデルの選択は、局所近傍における絶対レベルまたは部分再構成の絶対レベルの値に依存する。使用されるテンプレートを図11に示す。
図11は、確率モデルを選択するためのテンプレートの図を示す。黒い正方形は、現在の走査位置を指定し、「x」を持つ正方形は、使用される局所近傍を表す。
選択される確率モデルは、局所近傍における絶対レベル(または部分再構成の絶対レベル)の合計と、局所近傍における0より大きい絶対レベルの数(1に等しいsig_coeff_flagsの数によって与えられる)に依存する。コンテキストモデリングと2値化は、局所近傍に関する次のメトリックに依存する。
numSig:局所近傍における非ゼロレベルの数
sumAbs1:局所近傍における第1のパスの後の部分再構成の絶対レベル(absLevel1)の合計
sumAbs:局所近傍における再構成の絶対レベルの合計
対角線位置(d):変換ブロック内の現在の走査位置の水平座標と垂直座標の合計。
numSig、sumAbs1およびdの値に基づいて、sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagを符号化するための確率モデルを選択する。sumAbs及びnumSigの値に基づいて、abs_remainder及びdec_abs_levelの2値化のためのライスパラメータを選択する。
現在のVVCでは、減少した32点MTS(RMTS32とも呼ばれる)は、高周波係数スキップに基づいており、32点DST-7/DCT-8の計算複雑度を低減するために使用される。そして、それは、すべてのタイプのゼロ復帰(すなわち、RMTS32およびDCT2における高周波成分の既存のゼロアウト)を含む係数符号化変化を伴う。具体的には、最後非ゼロ係数位置符号化の2値化は、低減されたTUサイズに基づいて符号化され、最後非ゼロ係数位置符号化のためのコンテキストモデル選択は、元のTUサイズによって決定される。また、60のコンテキストモデルを用いて変換係数のsig_coeff_flagを符号化する。コンテキストモデルインデックスの選択は、以下のように、locSumAbsPass1と呼ばれる最大5つの以前の部分再構成の絶対レベルの合計および依存量子化状態QStateに基づく。
cIdx=0の場合、次のようにctxIncを導出する。
ctxInc=12×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?8:(d<5?4:0))
ctxInc=12×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?8:(d<5?4:0))
そうでなければ(cIdxが0より大きい)、次のようにctxIncを導出する。
ctxInc=36+8×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
ctxInc=36+8×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
パレットモード
パレットモードの背後にある基本的な考え方は、CU内のサンプルが代表的なカラー値のセットによって表されることである。このセットは、パレットと呼ばれる。パレットから除外されたカラー値をエスケープカラーとして信号で送信することにより、パレットから除外されたカラー値を示すこともでき、3つの色成分の値をビットストリームで直接信号で送信する。これを図12に示す。
図12は、パレットモードで符号化されるブロックの例を示す図である。図12は、パレットモードで符号化されたブロック1210及びパレット1220とを含む。
図12において、パレットサイズは、4である。最初の3つのサンプルは、それぞれパレットエントリ2、0、3を使用して再構築される。青色サンプルは、エスケープシンボルを表す。CUレベルフラグpalette_escape_val_present_flagは、CU内にエスケープシンボルが存在するか否かを示す。エスケープシンボルが存在する場合、パレットサイズは、1だけ増加し、最後のインデックスは、エスケープシンボルを示すために使用される。したがって、図12では、インデックス4は、エスケープシンボルに割り当てられる。
パレットで符号化されたブロックを復号するために、デコーダは、以下の情報を持つ必要がある。
パレットテーブル
パレットインデックス
パレットインデックスがエスケープシンボルに対応する場合、サンプルの対応するカラー値を示すために、追加のオーバーヘッドを信号で送信する。
また、エンコーダ側では、CUとともに使用される適切なパレットを導出する必要がある。
ロッシー符号化のためのパレットを導出するために、修正されたk平均クラスタアルゴリズムを使用する。ブロックの第1のサンプルをパレットに追加する。次に、当該ブロックからの次の各サンプルについて、サンプルと各々の現在のパレットカラーとの絶対差の和(SAD)を計算する。成分内の各成分の歪みが、最小SADに対応するパレットエントリの閾値未満である場合、そのパレットエントリに属するクラスタに当該サンプルを追加する。そうでなければ、新しいパレットエントリとしてそのサンプルを追加する。クラスタにマップされたサンプルの数が閾値を超えると、そのクラスタの中心が更新され、そのクラスタのパレットエントリになる。
次の手順では、使用する降順にクラスタをソートする。次に、各エントリに対応するパレットエントリを更新する。通常、クラスタ中心は、パレットエントリとして使用される。しかし、パレットエントリを符号化するコストを考慮すると、レート歪み解析を実行して、パレット予測因子からのエントリが、中心ではなく、更新されたパレットエントリとして使用するのに適している可能性があるか否かを分析する。すべてのクラスタが処理されるか、最大パレットサイズに達するまでプロセスを続行する。最後に、クラスタが単一のサンプルのみを持ち、対応するパレットエントリがパレット予測因子に含まれていない場合、そのサンプルをエスケープシンボルに変換する。また、繰り返しのパレットエントリを除去し、それらのクラスタをマージする。
パレットの導出後、ブロック内の各サンプルには、(SAD内)最も近いパレットエントリのインデックスが割り当てられる。次に、「INDEX」または「COPY_ABOVE」モードにサンプルを割り当てる。各サンプルについて、「INDEX」モードまたは「COPY_ABOVE」モードがある。そして、モードを符号化するコストを計算する。低コストのモードを選択する。
パレットエントリを符号化するために、パレット予測因子を維持する。SPSではパレットの最大サイズ及びパレット予測因子を信号で送信する。パレット予測因子は、各CTU行、各スライスおよび各タイルの開始点で初期化される。
パレット予測因子の各エントリについて、現在のパレットの一部であるか否かを示す再使用フラグが信号で送信される。これを図13に示す。
図13は、パレット予測因子を使用してパレットエントリを信号で送信することを示す図である。図13は、以前のパレット1310及び現在のパレット1320を含む。
ゼロのランレングス符号化によって再使用フラグを送信する。その後、0次指数ゴロムコードを用いて新しいパレットエントリの数を信号で送信する。最後に、新しいパレットエントリのための成分値を信号で送信する。
図14Aおよび図14Bに示すように、水平トラバース走査および垂直トラバース走査を用いてパレットインデックスを符号化する。palette_transpose_flagを用いてビットストリームで走査順を明示的に信号で送信する。
図14Aは、水平トラバース走査を示す図である。
図14Bは、垂直トラバース走査を示す図である。
パレットインデックスを符号化するために、トラバース走査モードに基づいてCUを16のサンプルを有する複数のセグメントに分割する線係数グループ(CG)に基づくパレットモードが使用される。図15Aおよび図15Bに示すように、各CGに対して、エスケープモードのためのインデックスラン、パレットインデックス値および量子化された色を順次符号化/解析する。
図15Aは、パレットのためのサブブロックベースのインデックスマップ走査を示す図である。
図15Bは、パレットのためのサブブロックベースのインデックスマップ走査を示す図である。
2つのメインパレットサンプルモードの「INDEX」または「COPY_ABOVE」を用いてパレットインデックスを符号化する。先に説明したように、エスケープシンボルには、最大パレットサイズに等しいインデックスが割り当てられる。「COPY_ABOVE」モードでは、上の行のサンプルのパレットインデックスをコピーする。「INDEX」モードでは、パレットインデックスを明示的に信号で送信する。各セグメントにおけるパレットラン符号化のための符号化順は、次のとおりである。
各画素に対して、コンテキスト符号化された2進数字run_copy_flag=0を信号で送信する。run_copy_flag=0は、画素には以前の画素と同じモード(すなわち、以前に走査された画素と現在の画素とは、ともにランタイプCOPY_ABOVEを有するか、または以前に走査された画素と現在の画素とは、ともにランタイプINDEXを有するか)と、同じインデックス値を有するか否かを示す。そうでなければ、run_copy_flag=1を信号で送信する。
画素には以前の画素と異なるモードを有する場合、その画素のランタイプ(すなわち、INDEXまたはCOPY_ABOVE)を示すコンテキスト符号化された2進数字copy_above_palette_indices_flagを信号で送信する。サンプルが第1行(水平トラバース走査)にある場合、または第1列(垂直トラバース走査)にある場合、デコーダは、デフォルトでINDEXモードが使用されているため、ランタイプを解析する必要がない。また、以前に解析したランタイプがCOPY_ABOVEであれば、デコーダは、ランタイプを解析する必要がない。
1つのセグメント内の画素に対してパレットラン符号化をした後、INDEXモードのためのインデックス値(palette_idx_idc)と量子化されたエスケープカラー(palette_escape_val)に対してバイパス符号化をする。
1つのセグメント内の画素に対してパレットラン符号化をした後、INDEXモードのためのインデックス値(palette_idx_idc)と量子化されたエスケープカラー(palette_escape_val)に対してバイパス符号化をする。
残差および係数符号化復号化の改善
VVCでは、変換係数を符号化する際に、統一(同一)ライスパラメータ(RicePara)導出は、abs_remainder及びdec_abs_levelの構文を信号で送信することに使用される。唯一の違いは、ベースレベルbaseLevelを4と0に設定して、abs_remainder及びdec_abs_levelをそれぞれ符号化することにある。ライスパラメータは、次のように、局所テンプレート内の隣接する5つの変換係数の絶対レベルの合計に基づいているだけでなく、対応するベースレベルに基づいて決定される。
RicePara=RiceParTable[max(min(31,sumAbs-5×baseLevel),0)]
言い換えれば、隣接係数のレベル情報に基づいて、構文要素abs_remainderとdec_abs_levelのバイナリコードワードを適応的に決定する。このコードワードの決定がサンプル毎に実行されるので、係数符号化のためのコードワード適応を処理するために追加の論理が必要である。
同様に、変換スキップモードで残差ブロックを符号化する場合、隣接する残差サンプルのレベル情報に基づいて、構文要素abs_remainderのバイナリコードワードを適応的に決定する。
さらに、残差符号化復号化または変換係数符号化に関連する構文要素を符号化する場合、確率モデルの選択は、隣接するレベルのレベル情報に依存し、これには、追加の論理と追加のコンテキストモデルが必要である。
現在の設計では、エスケープサンプルの2値化は、3次指数ゴロム2値化プロセスを呼び出すことによって導出される。さらに性能を改善するスペースもある。
現在のVVCでは、2つの異なるレベルマッピングスキームが使用可能であり、通常の変換と変換スキップにそれぞれ適用される。各レベルマッピングスキームは、異なる条件、マッピング関数およびマッピング位置に関連する。通常の変換が適用されるブロックは、コンテキスト符号化された2進数字(CCB)の数が制限を超えた後にレベルマッピングスキームが使用される。ZeroPos[n]として表されるマッピング位置とAbsLevel[xC][yC]として表されるマッピング結果は、表2で指定したように導出される。変換スキップを適用するブロックは、コンテキスト符号化された2進数字(CCB)の数が制限を超える前に別のレベルマッピングスキームが使用される。PredCoeffとして表されるマッピング位置とAbsLevel[xC][yC]として表されるマッピング結果は、表5に指定されているように導出される。標準化の観点から見ると、このような非統一的な設計は、最適ではないかもしれない。
HEVC中の10ビットを超えるプロファイルについて、extended_precision_processing_flag=1は、係数解析および逆変換処理に拡張ダイナミックレンジを用いることを指定する。現在のVVCでは、10ビット以上の変換係数のための残差符号化復号化または変換スキップ符号化は、性能が著しく低下した理由として報告されている。さらに性能を改善するスペースもある。
提案された方法
本開示では、残差および係数の符号化の改善部分で言及された問題を解決するためのいくつかの方法が提案されている。以下の方法は、独立してまたは連合して適用することができることに留意すべきである。
本開示の第1の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder)を固定バイナリコードワードセットを用いて符号化することが提案されている。バイナリコードワードは、異なる方法を用いて形成することができる。いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(例えば、1、2または3)が常に選択される。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
本開示の第2の態様によれば、変換係数符号化における特定の構文要素(例えば、abs_remainderおよびdec_abs_level)を固定コードワードセットを用いて符号化することが提案されている。バイナリコードワードは、異なる方法を用いて形成することができる。いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderおよびdec_abs_levelのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ、例えば1、2または3が選択される。現在のVVCで使用されているabs_remainderおよびdec_abs_levelは、baseLevelの値が依然として異なることができる。(例えば、baseLevelは、abs_remainderとdec_abs_levelをそれぞれ符号化するために4と0に設定される。)
第2に、現在のVVCで使用されているものと同じであって、abs_remainderおよびdec_abs_levelのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ、例えば1、2または3が選択される。abs_remainderおよびdec_abs_levelのためのbaseLevelの値は、同じに選択される。例えば、両者とも0を使用するか、両者とも4を使用する。
第3に、固定長の2値化。
第4に、切り詰められたライス2値化。
第5に、切り詰められたバイナリ(TB)2値化プロセス。
第6に、k次指数ゴロム2値化プロセス(EGK)。
第7に、有限k次指数ゴロム2値化。
本発明の第3の態様によれば、残差符号化復号化または係数符号化に関連する構文要素(例えば、abs_level_gtx_flag)を単一コンテキストで符号化し、隣接復号レベル情報に基づくコンテキスト選択を除去できることが提案されている。
本開示の第4の態様によれば、可変バイナリコードワードセットで残差符号化復号化における特定の構文要素(例えばabs_remainder)を符号化し、現在のブロックの特定の符号化情報(例えばTB/CBおよび/またはスライスに関連する量子化パラメータ(QP)、CUの予測モード(例えばIBCモードまたはイントラまたはインター)および/またはスライスタイプ(例えばIスライス、PスライスまたはBスライス))に基づいて、バイナリコードワードセットの選択を決定することが提案されている。異なる方法を使用してバイナリコードワードの変数セットを導出することができ、その中のいくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、異なるライスパラメータが使用される。
第2に、k次指数ゴロム2値化プロセス(EGK)。
第3に、有限k次指数ゴロム2値化。
第4の態様で説明した同様の方法は、変換係数符号化にも適用可能である。本開示の第5の態様によれば、バイナリコードワードの変数セットで変換係数符号化における特定の構文要素(例えば、abs_remainderおよびdec_abs_level)を符号化し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライスに関連する量子化パラメータ(QP)、CUの予測モード(例えばIBCモードまたはイントラまたはインター)および/またはスライスタイプ(例えばIスライス、PスライスまたはBスライス))に基づいて、バイナリコードワードセットの選択を決定することが提案されている。同様に、バイナリコードワードの変数セットを導出するために異なる方法を使用することができ、そのいくつかの例示的な方法は、以下のようになる。
第1に、現在のVVCで使用されているプロセスと同じであって、abs_remainderのためのコードワードを決定するためのものが使用されるが、異なるライスパラメータが使用される。
第2に、k次指数ゴロム2値化プロセス(EGK)。
第3に、有限k次指数ゴロム2値化。
上記のような方法では、異なるライスパラメータで異なるバイナリコードワードセットを導出することができる。残差サンプルの所与のブロックについて、使用されるライスパラメータは、隣接レベル情報ではなくCU QP(QPCUとして表される)に基づいて決定される。表6に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表6に示すように、現在のCUのQP値に基づいて同じライスパラメータを導出することもできる。
本開示の第5の態様によれば、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、2値化コードワードとして使用される。
パラメータおよび/または閾値のセットは、構文要素のコードワード決定に関連するすべてのパラメータおよび閾値の完全なセットまたはサブセットであってもよいことに留意されたい。前記パラメータおよび/または閾値のセットは、ビデオビットストリームで異なるレベルで信号で送信されてもよい。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)、画像レベル(例えば、画像パラメータセットおよび/または画像ヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化木ユニット(CTU)レベルまたは符号化ユニット(CU)レベルで信号で送信される。
一例では、スライスヘッダ、画像ヘッダ、PPSおよび/またはSPSでライスパラメータを信号で送信する。ここで、当該ライスパラメータは、変換スキップ残差符号化復号化においてabs_remainder構文の符号化を行うためのコードワードを決定するために用いられる。CUが変換スキップモードに符号化され、かつCUが上述のスライスヘッダ、画像ヘッダ、PPSおよび/またはSPSなどに関連する場合、信号で送信されるライスパラメータは、構文abs_remainderの符号化を行うためのコードワードを決定するために用いられる。
本開示の第6の態様によれば、第1および第2の態様で説明したコードワード決定に関連するパラメータおよび/または閾値のセットは、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素に用いられる。また、現在のブロックが輝度残差/係数または彩度残差/係数を含むか否かに応じて異なるセットを使用することができる。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、バイナリコードワードとして使用される。
一例では、現在のVVCで使用されている変換残差符号化復号化に関連するabs_remainderに用いられるコードワードは、輝度ブロックと彩度ブロックの両方に使用されるが、輝度ブロックと彩度ブロックでは、それぞれ異なる固定ライスパラメータが使用される。(例えば、K1は、輝度ブロック用であり、K2は、彩度ブロック用である。ここでK1及びK2は、整数である。)
本開示の第7の態様によれば、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。また、輝度ブロックと彩度ブロックに対して異なるセットを信号で送信することができる。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、2値化コードワードとして使用される。
上記で説明した同様の方法は、例えばpalette_escape_valのように、パレットモードにおけるエスケープ値の符号化にも適用可能である。
本開示の第8の態様によれば、パレットモードでエスケープ値を符号化するための異なるバイナリコードワードのセットを、異なるk次指数ゴロム2値化で導出することができる。一例では、エスケープサンプルの所与のブロックについて、当該ブロックのQP値(QPCUとして表される)に基づいて、使用される指数ゴロムパラメータ(すなわち、kの値)を決定する。表6に示すような同じ例を用いて、ブロックの所与のQP値に基づいてパラメータkの値を導出することができる。この例では4つの異なる閾値(TH1~TH4)がリストされているが、これらの閾値とQPCUに基づいて5つの異なるk値(K0~K4)を導出することができる。特に、閾値の数は、説明の目的のためだけに使用される。実際には、異なる数の閾値を使用してQP値範囲全体を異なる数のQP値セグメントに分割し、各QP値セグメントについて、パレットモードで符号化されたブロックのエスケープ値を符号化するための対応するバイナリコードワードを異なるk値を使用して導出することができる。また、実際には同じ論理を異なるように実施することができることにも注目すべきである。例えば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することができる。
本開示の第9の態様によれば、エスケープサンプルの構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。エントロピーエンコーダによってエスケープサンプルの構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、バイナリコードワードとして使用される。
パラメータおよび/または閾値のセットは、構文要素のためのコードワード決定に関連するすべてのパラメータおよび閾値の完全なセットまたはサブセットであってもよいことに留意されたい。前記パラメータおよび/または閾値のセットは、ビデオビットストリームで異なるレベルで信号で送信されてもよい。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)、画像レベル(例えば、画像パラメータセットおよび/または画像ヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化木ユニット(CTU)レベルまたは符号化ユニット(CU)レベルで信号で送信される。
前記態様による一例では、パレットモードでpalette_escape_val構文を符号化するためのコードワードをK次指数ゴロム2値化で決定し、ビットストリームにおいてkの値をデコーダに信号で送信する。kの値は、異なるレベルで信号で送信されてもよく、例えば、スライスヘッド、画像ヘッド、PPSおよび/またはSPSなどで信号で送信される。CUがパレットモードに符号化され、かつCUが上述したスライスヘッダ、画像ヘッダ、PPSおよび/またはSPSなどに関連する場合、構文palette_escape_valを符号化するためのコードワードを、信号で送信される指数ゴロムパラメータで決定する。
変換スキップモード及び通常変換モードのためのレベルマッピングの協調
本開示の第10の態様によれば、レベルマッピングを適用するための同じ条件は、変換スキップモード及び通常変換モードの両方に使用される。一例では、コンテキスト符号化された2進数字(CCB)の数が変換スキップモード及び通常変換モードの両方に対する制限を超えた後にレベルマッピングを適用することが提案されている。別の例では、コンテキスト符号化された2進数字(CCB)の数が変換スキップモード及び通常変換モードの両方に対する制限を超える前にレベルマッピングを適用することが提案されている。
本開示の第11の態様によれば、レベルマッピングにおけるマッピング位置を導出するための同じ方法は、変換スキップモード及び通常変換モードの両方に使用される。一例では、変換スキップモードで使用されるレベルマッピングにおけるマッピング位置の導出方法を通常変換モードにも適用することが提案されている。別の例では、通常変換モードで使用されているレベルマッピングにおけるマッピング位置の導出方法を変換スキップモードにも適用することが提案されている。
本開示の第12の態様によれば、変換スキップモード及び通常変換モードの両方に同じレベルマッピング方法を適用する。一例では、変換スキップモードで使用されるレベルマッピング関数を通常変換モードにも適用することが提案されている。別の例では、通常変換モードで使用されるレベルマッピング関数を変換スキップモードにも適用することが提案されている。
残差符号化復号化におけるライスパラメータ導出の簡略化
本開示の第13の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際に、ルックアップテーブルではなく単純な論理(シフトや除算など)でライスパラメータを導出することが提案されている。本開示によれば、表4で指定したルックアップテーブルを削除することができる。一例では、ライスパラメータcRiceParamは、cRiceParam=(locSumAbs>> n)として導出される。ここでnは、正の数、例えば3である。注目すべきことに、実際には、2のn乗に等しい値の除算演算など、他の異なる論理を使用して同じ結果を実施することができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が削除線付きの斜体フォントで示されている。
本開示の第14の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、より少ない隣接位置を使用してライスパラメータを導出することが提案されている。一例では、abs_remainder/dec_abs_levelの構文要素を符号化する際には、2つの隣接位置だけを使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
別例では、abs_remainder/dec_abs_levelの構文要素を符号化する際には、1つの隣接位置だけを使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第15の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、baseLevelの値に基づいて異なる論理を使用してlocSumAbsの値を調整し、ライスパラメータを導出することが提案されている。一例では、「(locSumAbs-baseLevel×5)×alpha+Beta」という形式で追加のスケーリングとオフセット操作を適用する。alphaが1.5の値をとり、Betaが1の値をとると、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本発明の第16の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、トリミング操作を除去してライスパラメータを導出することが提案されている。本開示によれば、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示によれば、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第17の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、locSumAbsの初期値を0から非ゼロ整数に変更してライスパラメータを導出することが提案されている。一例では、初期値1をlocSumAbsに割り当てる。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第18の態様によれば、コロンブス・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、隣接位置レベル値の合計値ではなく、隣接位置レベル値の最大値を使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第19の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際に、隣接位置における各AbsLevel値とベースレベル値の相対幅に基づいてライスパラメータを導出することが提案されている。一例では、ライスパラメータは、隣接位置におけるAbsLevel値のうちベースレベルより大きいAbsLevel値の数に基づいて導出される。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
別の例では、ライスパラメータは、AbsLevel値がベースレベルより大きい隣接位置の(AbsLevel-BasLevel)値の合計に基づいて導出される。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
VVCドラフトの復号化プロセスに関する一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
残差符号化復号化におけるレベルマッピング位置導出の簡略化
本開示の第20の態様によれば、ZeroPos[n]がcRiceParamのみに基づいて導出されるように、ZeroPos[n]の導出からQStateを除去することが提案されている。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、変更された内容がが太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第21の態様によれば、locSumAbsの値に基づいてZeroPos[n]を導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第22の態様によれば、隣接位置のAbsLevelの値に基づいてZeroPos[n]を導出することが提案されている。一例では、AbsLevel[xC+1][yC]およびAbsLevel[xC][yC+1]の最大値に基づいてZeroPos[n]を導出する。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第23の態様によれば、隣接位置のすべてのAbsLevel値の最大値に基づいてcRiceParam及びZeroPos[n]の両方を導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
上記で説明した同様の方法は、変換スキップモードのための残差符号化復号化におけるPredCoeffの導出にも適用できる。一例では、変数PredCoeffは、次のように導出される。
PredCoeff=Max(absLeftCoeff,absAboveCoeff)+1
変換係数のための残差符号化復号化
本開示では、「残差および係数符号化の改善」の部分で指摘された問題を解決するために、残差符号化復号化の既存の設計を簡略化および/またはさらに改善する方法を提供する。通常、本開示で提案された技術の主な特徴は、以下のようにまとめられる。
第1に、現在の設計に基づいて、通常残差符号化復号化で使用されるライスパラメータ導出を調整する。
第2に、通常残差符号化復号化で使用されるバイナリ方法を変更する。
第3に、通常残差符号化復号化で使用されるライスパラメータ導出を変更する。
現在の設計に基づく残差符号化復号化におけるライスパラメータ導出
本開示の第24の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をライスパラメータ導出の変形方法で符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、cRiceParam=(cRiceParam<<a)+(cRiceParam>>b)+c。ここでa、b、cは、正数であり、例えば、{a,b,c}={1,1,0}。注目すべきことに、実際には、同じ結果を、例えば2のn乗に等しい値の乗算など、他の異なる論理を使用して実施することができる。
第2に、cRiceParam=(cRiceParam<<a)+b。ここでa及びbは、正数であり、例えば、{a,b}={1,1}。注目すべきことに、実際には、同じ結果、例えば2のn乗に等しい値を乗算するなど、他の異なる論理を使用して実施することができる。
第3に、cRiceParam=(cRiceParam×a)+b。ここでa及びbは、正の数であり、例えば、{a,B}={1.5,0}。注目すべきことに、実際には、同じ結果、例えば2のn乗に等しい値の乗算など、他の異なる論理を使用して実施することができる。
VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更を太字と斜体で表22に示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、cRiceParam=(cRiceParam<<a)+(cRiceParam>>b)+cと導出され、ここでa、b、cは、正の数、例えば1である。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表23に太字と斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
10ビットを超えるプロファイルのための残差符号化復号化におけるバイナリ方法
本開示の第25の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をバイナリコードワード変数セットで符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。バイナリコードワード変数セットを導出するために、異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(たとえば、2、3、4、5、6、7または8)が常に選択される。固定値は、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する構文要素(例えば、rice_Parameter_value)に応じて、異なる条件下で異なることができる。表24に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表24に示すように、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
一例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、正数(例えば、2、3、4、5、6、7または8)である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表25に太字と斜体フォントで示されている。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、abs_remainder/dec_abs_levelの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトの変化を表26に太字と斜体で示す。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、4、5、6、7または8などの正数である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15、または16)である。VVCドラフトへの変更は、表27に太字と斜体フォントで示し、削除内容を斜体フォントで示している。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)よりも大きい場合、abs_remainder/dec_abs_levelの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15または16)であり、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表28に太字と斜体フォントで示されている。
残差符号化復号化におけるライスパラメータ導出
本開示の第26の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をライスパラメータ導出の変形方法で符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、ライスパラメータを導出するためにカウンタを使用することが提案されている。カウンタは、現在のブロックの符号化係数の値および特定の符号化情報(例えば、成分ID)に基づいて決定される。具体例として、riceParameter=counter/aであり、ここでaは、正数、例えば4であり、2つのカウンタ(輝度/彩度で分割)を維持する。これらのカウンタは、各スライスの開始点で0にリセットされる。符号化が行われると、サブTUで符号化された最初の係数である場合、カウンタは、次のように更新される。
if (coeffValue >= (3 << rice)) counter++
if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--。
if (coeffValue >= (3 << rice)) counter++
if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--。
第2に、VVCにおけるライスパラメータ導出にシフト動作を追加することが提案されている。シフトは、符号化係数の値に基づいて決定される。VVCドラフトに基づく対応する復号処理の例を以下に示し、方法1のカウンタにしたがってシフトが決定され、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表29に太字と斜体フォントで示されている。
第1に、VVCにおけるライスパラメータ導出にシフト動作を追加することが提案されている。シフトは、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイル(例えば、14ビットプロファイルまたは16ビットプロファイル)に関連する符号化ビット深度)に基づいて決定される。VVCドラフトに基づく対応する復号処理の例を以下に示し、方法1のカウンタにしたがってシフトが決定され、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示される。VVCドラフトへの変更は、表30に太字と斜体フォントで示されている。
変換スキップのための残差符号化復号化
本開示の第27の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)をバイナリコードワード変数セットで符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。可変バイナリコードワード変数セットを導出するために、異なる方法を使用することができ、いくつかの例示的な、方法は以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(たとえば、2、3、4、5、6、7または8)が常に選択される。固定値は、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータ、フレームタイプ(例えば、I、PまたはB)、成分ID(例えば、輝度または彩度)、色フォーマット(例えば、420、422、444)、または符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する構文要素(例えば、rice_Parameter_value)に応じて、異なる条件で異なることができる。表7に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表7に示すように、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
VVCドラフトに基づく対応する復号処理の例を以下に示し、VVCドラフトへの変更は、表31に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、abs_remainderの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表32に太字と斜体フォントで示されている。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、正数(例えば、2、3、4、5、6、7または8)である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表33に太字と斜体フォントで示されている。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、Nに固定され、ここでNは、4、5、6、7または8などの正数である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15または16)であり、変更された内容は、太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表34に太字と斜体フォントで示されている。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)であり、変更された内容は、太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表35に太字と斜体フォントで示されている。注目すべきは、sh_ts_residual_coding_rice_indexは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダ構文
sh_ts_residual_coding_rice_flag=1は、sh_ts_residual_coding_rice_indexが現在のスライスに存在することができることを指定する。sh_ts_residual_coding_rice_flag=0は、sh_ts_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。sh_ts_residual_coding_rice_flagが存在しない場合、sh_ts_residual_coding_rice_flagの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをシーケンスパラメータセット(またはシーケンスパラメータセット範囲拡張構文)内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素をさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表37に太字と斜体フォントで示され、削除された内容は、削除線で示されている。注目すべきは、sh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
シーケンスパラメータセットRBSP構文
sps_ts_residual_coding_rice_present_in_sh_flag=1は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_ts_residual_coding_rice_present_in_sh_flag=0は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。sps_ts_residual_coding_rice_present_in_sh_flagが存在しない場合、sps_ts_residual_coding_rice_present_in_sh_flagの値は、0に等しいと推定される。
スライスヘッダ構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、変換スキップスライスごとに、当該スライスのライスパラメータを示す構文要素を信号送信する。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。VVCドラフトへの変更は、表40に太字と斜体フォントで示されている。注目すべきは、sh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダ構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグを画像パラメータセット範囲拡張構文内で信号送信する。有効にするとして制御フラグが信号送信されると、当該画像のライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素をさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表42に太字と斜体フォントで示されている。注目すべきは、pps_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
画像パラメータセット範囲拡張構文
pps_ts_residual_coding_rice_flag=1は、pps_ts_residual_coding_rice_indexが現在の画像に存在することができることを指定する。pps_ts_residual_coding_rice_flag=0は、pps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。pps_ts_residual_coding_rice_flagが存在しない場合、pps_ts_residual_coding_rice_flagの値は、0に等しいと推定される。
pps_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、可変ライスパラメータのみで構文要素abs_remainderを符号化することが提案されている。適用されるライスパラメータの値は、現在のブロックの特定の符号化情報(例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなど)に基づいて決定される。特定の実施例では、符号化ビット深度と、CUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、VVCドラフトへの変更を表44に太字および斜体フォントで示し、削除された内容を斜体フォントで示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
さらに別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば33または34)である。VVCドラフトへの変更は、表45に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示す。ここでTHAおよびTHBは、予め定められた閾値(例えば、THA =8、THB =33または34)である。VVCドラフトへの変更は、表46に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合に可変ライスパラメータのみでabs_remainderの構文要素を符号化することが提案されている。可変値は、現在のブロックの特定の符号化情報(例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなど)に基づいて決定される。特定の実施例では、符号化ビット深度と、CUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示す。VVCドラフトへの変更は、表47に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば18、19)である。VVCドラフトへ変更を表48に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更を表49に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
図16は、ビデオ符号化のための方法を示す。この方法は、例えばエンコーダに適用することができる。ステップ1610において、エンコーダは、ビデオ入力を受信することができる。例えば、ビデオ入力は、ライブストリームであってもよい。ステップ1612において、エンコーダは、ビデオ入力に基づいて量子化パラメータを取得することができる。例えば、量子化パラメータは、エンコーダ内の量子化ユニットによって計算することができる。ステップ1614において、エンコーダは、少なくとも1つの予め定められた閾値、符号化ビット深度、量子化パラメータに基づいてライスパラメータを導出することができる。例えば、ライスパラメータは、abs_remainder及びdec_abs_levelの構文を信号送信するために使用される。ステップ1616において、エンコーダは、ライスパラメータに基づいてビデオビットストリームをエントロピー符号化することができる。例えば、ビデオビットストリームをエントロピー符号化して圧縮ビデオビットストリームを生成することができる。
別の例では、BitDepthが10よりも大きい場合、abs_remainderの構文要素を符号化する際には、ライスパラメータのための固定値(例えば、2、3、4、5、6、7または8)のみが使用されることが提案されている。固定値は、現在のブロックの特定の符号化情報(例えば量子化パラメータ)に基づいて、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、18、19)である。VVCドラフトへの変更は、表50に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更を表51に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、33または34)であることを示す。VVCドラフトへの変更は、表52に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=33または34)である。VVCドラフトへの変更を表53に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
上述の説明では、特定のライスパラメータを計算するための等式は、提案されたアイデアを説明するための例としてのみ使用されることに注目すべきである。今のビデオ符号化技術の技術者にとって、他のマッピング関数(または等価マッピング等式)は、提案されたアイデア(すなわち、符号化ビットと適用された量子化パラメータに基づいて変換スキップモードのライスパラメータを決定する)に適用されている。また、現在のVVC設計では、適用される量子化パラメータの値を符号化ブロックのグループレベルで変更することができることにも言及すべきである。したがって、提案されたライスパラメータ調整スキームは、符号化ブロックのグループレベルで変換スキップモードのライスパラメータの柔軟な適応を提供することができる。
通常残差符号化復号化および変換スキップ残差符号化復号化のためのシグナリング情報
本開示の第28の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)を符号化するためのバイナリコードワードのライスパラメータ、通常残差符号化復号化におけるabs_remainder/dec_abs_levelのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを信号送信し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、sps_residual_coding_info_present_in_sh_flag)に基づいて信号送信するか否かを決定することが提案されている。
一例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、変換スライスのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての変換スライスにデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表54に太字と斜体フォントで示されている。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_indexは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
図17は、ビデオ復号化のための方法を示す。この方法は、例えばエンコーダに適用することができる。ステップ1710において、エンコーダは、ビデオ入力を受信することができる。ステップ1712において、エンコーダは、構文要素符号化のためのバイナリコードワードのライスパラメータを信号送信することができる。構文要素符号化は、変換スキップ残差符号化復号化におけるabs_remainderを含むことができる。ステップ1714において、エンコーダは、ライスパラメータおよびビデオ入力に基づいてビデオビットストリームをエントロピー符号化することができる。
スライスヘッダ構文
sh_residual_coding_rice_flag=1は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_residual_coding_rice_indexが現在のスライスに存在することができることを指定する。sh_residual_coding_rice_flag=0は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。
sh_residual_coding_rice_shiftは、abs_remainder[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainder[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをシーケンスパラメータセット(またはシーケンスパラメータセット範囲拡張構文)内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、変換スライスのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての変換スライスにデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表57に太字と斜体フォントで示されている。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい
シーケンスパラメータセットRBSPの構文
sps_residual_coding_info_present_in_sh_flag=1は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_residual_coding_info_present_in_sh_flag=0は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。sps_residual_coding_info_present_in_sh_flagが存在しない場合、sps_residual_coding_info_present_in_sh_flagの値は、0に等しいと推定される。
スライスヘッダの構文
sh_residual_coding_rice_shiftは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素が信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。VVCドラフトへの変更を表61に太字と斜体で示す。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダの構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグを画像パラメータセット範囲拡張構文内で信号送信する。有効にするとして制御フラグが信号送信されると、当該画像の変換スキップ残差符号化復号化のためのライスパラメータを示すための構文要素がさらに信号送信され、さらにその画像の通常残差符号化復号化のためのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップ残差符号化復号化のためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップ残差符号化復号化にデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、通常残差符号化復号化のためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての通常残差符号化復号化にデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表64に太字と斜体フォントで示されている。注目すべきは、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
画像パラメータセット範囲拡張構文
pps_residual_coding_info_flag=1は、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_indexが現在の画像に存在することができることを指定する。pps_residual_coding_info_flag=0は、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。pps_residual_coding_info_flagが存在しない場合、pps_residual_coding_info_flagの値は、0に等しいと推定される。
pps_residual_coding_rice_shiftは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。pps_residual_coding_rice_shiftが存在しない場合、pps_residual_coding_rice_shiftの値は、0に等しいと推定される。
pps_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。pps_residual_coding_rice_offsetが存在しない場合、pps_residual_coding_rice_offsetの値は、0に等しいと推定される。
pps_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。pps_ts_residual_coding_rice_indexが存在しない場合、pps_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
本開示の第29の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)、通常残差符号化復号化におけるabs_remainder/dec_abs_levelに使用されるライスパラメータを導出するためのシフトおよびオフセットパラメータを異なるライスパラメータで符号化し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、sps_residual_coding_info_present_in_shflag)に基づいて、どの構文要素を使用するかを決定することが提案されている。
一例では、変換スキップブロックのためのライスパラメータの導出プロセスおよび変換ブロック内のライスパラメータのためのシフトおよび/またはオフセットパラメータの導出プロセスを有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、ライスパラメータは、現在のブロックの特定の符号化情報(例えば、量子化パラメータおよびビット深度)に応じて異なる条件で異なることができる。また、通常残差符号化復号化におけるライスパラメータを導出するためのシフトおよび/またはオフセットパラメータは、現在のブロックの特定の符号化情報(例えば、量子化パラメータおよびビット深度)に応じて異なる条件で異なることができる。無効として(たとえば、「0」に等しく設定されている)制御フラグが信号で送信される場合、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、すべての変換スライスにデフォルトのシフトパラメータおよび/またはオフセットパラメータ(たとえば、0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。ここで、THAおよびTHBは、予め定められた閾値(例えば、THA =8、THB =18または19)である。VVCドラフトへの変更を表67に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
スライスヘッダの構文
sh_residual_coding_rice_flag=1は、ビット深度に依存するライスパラメータ導出プロセスが現在のスライスで使用されることを指定する。sh_residual_coding_rice_flag=0は、ビット深度に関連するライスパラメータ導出プロセスを現在のスライスで使用しないことを指定する。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、18、19)である。VVCドラフトへの変更を表70に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
本開示の別の態様によれば、上述のこれらの符号化ツールフラグの値に対する制約を追加することで、一般的制約情報における他の一般的制約制御と同じ一般的制約制御を提供することが提案されている。
例えば、sps_ts_residual_coding_rice_present_in_sh_flag=1は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_ts_residual_coding_rice_present_in_sh_flag=0は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_ts_residual_coding_rice_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
別の例では、pps_ts_residual_coding_rice_flag=1は、pps_ts_residual_coding_rice_indexが現在の画像に存在することができるを指定する。pps_ts_residual_coding_rice_flag=0は、pps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_ts_residual_coding_rice_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
別の例では、sps_rice_adaptation_enabled_flag=1は、abs_remainder[]とdec_abs_levelの2値化のためのライスパラメータが式で導出できることを指定する。
この式は、RiceParam=RiceParam+ShiftValを含み、ShiftVal=(localSumAbs<Tx[ 0 ])?Rx[ 0 ]:((localSumAbs < Tx[ 1 ])?Rx[ 1 ]:((localSumAbs<Tx[ 2 ])?Rx[ 2 ]:((localSumAbs<Tx[ 3 ])?Rx[ 3 ]:Rx[4]))。ここでリストTx[]とRx[]は、以下のように指定される。Tx[]={321285122048}>>(1523)Rx[]={0、2、4、6、8}。
本開示によれば、一般的制約情報構文に構文要素gci_no_rice_adaptation_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
提案されたライスパラメータ適応スキームが変換スキップ残差符号化復号化(TSRC)にのみ使用されるため、提案された方法は、TSRCが有効になっている場合にのみ有効である。そこで、本開示の1つまたは複数の実施例では、一般的制約情報レベルに基づいて変換スキップモードが無効になった場合(例えば、gci_no_transform_skip_constraint_flagの値が1に設定されている場合)、gci_no_rice_adaptation_constraint_flagの値が1であることを求めるビットストリーム制約を追加する。
別の例では、sps_range_extension_flag=1は、sps_range_extension()構文構造がSPS RBSP構文構造に存在することを指定する。sps_range_extension_flag=0は、この構文構造が存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_range_extension_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図19は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ1902において、デコーダは、シーケンスパラメータセット(SPS)範囲拡張フラグを受信することができる。SPS範囲拡張フラグは、スライスヘッダ(SH)ローバイトシーケンスペイロード(RBSP)の構文構造に構文構造sps_range_extensionが存在するか否かを、SPS範囲拡張フラグの値に基づいて示す。
ステップ1904において、デコーダは、SPS範囲拡張フラグの値が1に等しいとの決定に応じて、SH RBSP構文構造にsps_range_extensionが存在すると決定することができる。
ステップ1906において、デコーダは、SPS範囲拡張フラグの値が0に等しいとの決定に応じて、SH RBSP構文構造にsps_range_extensionが存在しないと決定することができる。
別の例では、sps_cabac_bypass_alignment_enabled_flag=1は、構文要素sb_coded_flag[][]、abs_remaind[]、dec_abs_level[n]およびcoeff_sign_flag[]に対するバイパス復号の前にivlCurrRangeの値を整列することを指定する。sps_cabac_bypass_alignment_enabled_flag=0は、バイパス符号化の前にivlCurrRangeの値を整列しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_cabac_bypass_alignment_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図20は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2002において、デコーダは、シーケンスパラメータセット(SPS)整列有効化フラグを受信することができる。SPS整列有効化フラグは、構文要素sb_coded_flag、abs_remainder、dec_abs_levelおよびcoeff_sign_flagnのバイパス復号の前にインデックスivlCurrRangeが整列されるか否かを、SPS整列有効化フラグの値に基づいて示す。
ステップ2004において、SPS整列有効化フラグの値が1に等しいとの決定に応じて、デコーダは、バイパス復号の前にivlCurrRangeを整列すると決定することができる。
ステップ2006において、SPS整列有効化フラグの値が0に等しいとの決定に応じて、デコーダは、バイパス復号の前にivlCurrRangeを整列しないと決定することができる。
別の例では、extended_precision_processing_flag=1は、拡張ダイナミックレンジが変換係数および変換処理に用いることができることを指定する。extended_precision_processing_flag=0は、拡張ダイナミックレンジを使用しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_extended_precision_processing_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図21は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2102において、デコーダは、拡張精度処理フラグを受信することができる。拡張精度処理フラグは、変換係数について変換処理中に拡張ダイナミックレンジが使用されるか否かを、拡張精度処理フラグの値に基づいて示す。
ステップ2104において、拡張精度処理フラグの値が1に等しいとの決定に応じて、デコーダは、変換係数について変換処理中に拡張ダイナミックレンジが使用されると決定することができる。
ステップ2106において、拡張精度処理フラグの値が0であるとの決定に応じて、デコーダは、変換係数について、または変換処理中に拡張ダイナミックレンジが使用されないと決定することができる。
別の例では、persistent_rice_adaptation_enabled_flag=1は、abs_remainder[]及びdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われることを指定する。persistent_rice_adaptation_enabled_flag=0は、ライスパラメータ導出に以前のサブブロック状態が使用されないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_persistent_rice_adaptation_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供するために使用される。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図22は、本開示の一例に係るビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2202において、デコーダは、持続ライス適応有効化フラグを受信することができる。持続ライス適応有効化フラグは、abs_remainderおよびdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われるか否かを、持続ライス適応有効化フラグの値に基づいて示す。
ステップ2204において、持続ライス適応有効化フラグの値が1に等しいとの決定に応じて、デコーダは、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計によって、2値化のためのライスパラメータ導出を初期化すると決定することができる。
ステップ2206において、持続ライス適応有効化フラグの値が0であるとの決定に応じて、デコーダは、ライスパラメータ導出において以前のサブブロック状態が採用されないと決定することができる。
上述の方法は、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサまたは他の電子コンポーネントを含む1つまたは複数の回路を含む装置を使用して実現することができる。装置は、他のハードウェアまたはソフトウェアコンポーネントと組み合わせた回路を使用して上記方法を実行することができる。上記に開示された各モジュール、サブモジュール、ユニットまたはサブユニットは、少なくとも部分的に1つまたは複数の回路を使用して実装することができる。
ライスパラメータ決定
エンコーダ側では、TSRC符号化には、最適なライスパラメータを導出するために複数の符号化パスが必要となる場合がある。このようなマルチパス符号化は、実際のハードウェアエンコーダ設計には適していない可能性がある。この問題を解決するために、低遅延TSRC符号化方法も提案されている。本開示の第30の態様によれば、現在のスライスの特定の符号化情報(例えば、スライス/画像/シーケンスに関連する量子化パラメータおよび/または符号化ビット深度)および/またはスライス/画像/シーケンスレベルに関連するハッシュ率に基づいてライスパラメータを導出することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。以下の方法は、独立してまたは連合して適用することができることに留意すべきである。
1.上記実施例で言及されたライスパラメータは、ビデオの時間解像度(例えば、フレームレート)と空間解像度(例えば、画像幅と高さ)の両方を含むビデオ解像度にさらに依存することができる。
2.ライスパラメータは、シーケンスレベル、画像レベル、スライスレベルおよび/または任意の予め定められた領域で変化することができる。1つの特定の例では、異なるライス値は、異なる時間層ID(VVC仕様で指定されたnuh_temporal_id_plus1に関連する)を有する画像に使用される。オプションとして、ライスパラメータは、シーケンスレベル、画像レベル、スライスレベルおよび/または任意の予め定められた領域で使用されるQP値に基づいて決定された値を含むことができる。例えば、ライスパラメータ=Clip3(1,8,(TH-QP)/6)であり、ここで、THは、予め定められた閾値(例えば18、19)である。
3.現在のスライスと以前のスライスとの間の符号化情報の変化に基づいて、ライスパラメータをデフォルト値、例えば1に設定することができる。1つの特定の例では、画像の時間層IDが以前の画像と比較して変化した場合、その画像に対してデフォルトのライス値が使用される。オプションとして、ΔQがTHよりも大きい場合、この画像に対してデフォルトのライス値を使用する。ここで、ΔQは、abs(QPcurrent-QPprevious)として計算され、THは、予め定められた閾値である。ライスパラメータ(例えば、0.5)。例えば、現在のスライス内のハッシュ率形式イントラブロックコピーモードがTHよりも大きい場合、ライスパラメータ=1。ここでTHは、予め定められた閾値であり、例えばMax(41×(CTUの数),4200)である。
4.符号化順にしたがって各スライスの以前のスライスで符号化されたabs_remainderの値に基づく各スライスのためのライスパラメータ。1つの特定の例では、1つのスライスを符号化した後、異なるライスパラメータを用いてabs_remainderの2値化を行うための2進数字の数を算出する。前記2進数字の数は、後続のスライスのライスパラメータを決定するために使用される。たとえば、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。別の例では、現在のスライスと以前のスライスで同じQPが使用されている場合、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。そうでなければ、他のライスパラメータと比較する前に、以前のスライス内のデフォルトのライスパラメータ(すなわち、1)を使用して生成された2進数字の数は、THによってスケーリングされ、現在のスライスに対して2進数字の最小数をもたらすライスパラメータが選択され、ここでTHは、予め定められた閾値、例えば0.9である。
5.現在のスライスと以前のスライスとの間の符号化情報の変化に基づいて、符号化順にしたがって各スライスの以前のスライスで符号化されたabs_remainderの値に基づく各スライスのためのライスパラメータ及びライスパラメータを調整することができる。1つの特定の例では、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。そしてΔQがTHよりも大きい場合、ライス値を調整することができる。ここでΔQは、abs(QPcurrent-QPprevious)として計算される。THは、予め定められた閾値である。ライスパラメータ(例えば、0.5)。調整は、予め定められたオフセット(たとえば、+1、-1)を追加するか、予め定められた値でスケーリングする。
図26は、本開示の一例に係る低遅延変換スキップ残差符号化復号化(TSRC)方法のフローチャートを示す。この方法は、例えばエンコーダに適用することができる。ステップ2602において、エンコーダは、ビデオの現在のスライスの符号化情報に基づいてライスパラメータを導出することができる。符号化情報は、ビデオのスライス、画像またはシーケンスに関連する量子化パラメータまたは符号化ビット深度、またはビデオのスライス、画像またはシーケンスに関連するハッシュ率のうちの1つまたは複数のパラメータを含む。
なお、上述したエンコーダ方法は、デコーダ側に適用することができる。1つの特定例では、ライスパラメータをデコーダに信号で送信する必要がなく、エンコーダ/デコーダでは同じ方法でライスパラメータが導出される。
図18は、ユーザインタフェース1860に結合されたコンピューティング環境1810を示す。コンピューティング環境1810は、データ処理サーバの一部であってもよい。コンピューティング環境1810は、プロセッサ1820、メモリ1840およびI/Oインタフェース1850を含む。
プロセッサ1820は、一般的に、表示、データ収集、データ通信および画像処理に関連する動作といったコンピューティング環境1810の全体的な動作を制御する。プロセッサ1820は、上述した方法のすべてまたはいくつかのステップを実行するための命令を実行する1つまたは複数のプロセッサを含むことができる。さらに、プロセッサ1820は、プロセッサ1820と他のコンポーネントとの間の相互作用を容易にする1つまたは複数のモジュールを含むことができる。プロセッサは、中央処理ユニット(CPU)、マイクロプロセッサ、シングルチップ、GPUなどであってもよい。
メモリ1840は、コンピューティング環境1810の動作をサポートするために、さまざまなタイプのデータを格納するように構成される。メモリ1840は、所定のソフトウェア1842を含むことができる。このようなデータの例には、コンピューティング環境1810上で動作するための任意のアプリケーションまたは方法の命令、ビデオデータセット、画像データなどが含まれる。メモリ1840は、静的ランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、消去可能プログラマブル読取専用メモリ(EPROM)、プログラマブル読取専用メモリ(PROM)、読取専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなど、任意のタイプの揮発性または不揮発性メモリ装置またはそれらの組み合わせによって実装することができる。
I/Oインタフェース1850は、プロセッサ1820と周辺インタフェースモジュール(キーボード、クリックホイール、ボタンなど)との間のインタフェースを提供する。ボタンは、ホームボタン、スキャン開始ボタン、スキャン停止ボタンを含むことができるが、これらに限定されない。I/Oインターフェース1850は、エンコーダおよびデコーダに結合されてもよい。
いくつかの実施例では、メモリ1840に格納されて上述した方法を実行するためにコンピュータ環境1810内のプロセッサ1820によって実行可能な複数のプログラムを含む非一時的コンピュータ可読記憶媒体も提供される。例えば、非一時的コンピュータ可読記憶媒体は、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光学データ記憶装置などであってもよい。
非一時的コンピュータ可読記憶媒体には、1つまたは複数のプロセッサを有するコンピューティングデバイスによって実行される複数のプログラムが格納されている。複数のプログラムは、1つまたは複数のプロセッサによって実行される際に、上述した動き予測のための方法をコンピューティングデバイスに実行させる。
いくつかの実施例では、コンピューティング環境1810は、上述の方法を実行するために、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックス処理ユニット(GPU)、コントローラ、マイクロコントローラ、マイクロプロセッサ、または他の電子コンポーネントによって実装することができる。
図23は、本開示のいくつかの実施形態に係るビデオブロックを並列に符号化および復号するための例示的なシステム10を示すブロック図である。図23に示すように、システム10は、ソースデバイス12を含む。ソースデバイス12は、後に目標装置14によって復号されるビデオデータを生成して符号化する。ソースデバイス12および目標装置14は、デスクトップコンピュータまたはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーム伝送デバイスなどを含むさまざまな電子デバイスの中の任意の電子デバイスを含むことができる。いくつかの実施形態では、ソースデバイス12および目標装置14は、無線通信能力を備えている。
いくつかの実施形態では、目標装置14は、復号すべき符号化ビデオデータをリンク16を介して受信することができる。リンク16は、符号化ビデオデータをソースデバイス12から目標装置14に移動することができる任意のタイプの通信媒体またはデバイスを含むことができる。一例では、リンク16は、ソースデバイス12が符号化ビデオデータを目標装置14にリアルタイムで直接送信できるようにする通信媒体を含むことができる。符号化ビデオデータは、無線通信プロトコルなどの通信標準にしたがって変調され、目標装置14に送信される。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送路など、任意の無線または有線通信媒体を含むことができる。通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはインターネットなどのグローバルネットワークなどのパケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から目標装置14への通信を容易にすることができるその他の任意のデバイスを含むことができる。
いくつかの他の実施形態では、符号化ビデオデータは、出力インタフェース22から記憶装置32に送信される。その後、記憶装置32内の符号化ビデオデータは、入力インタフェース28を介して目標装置14によってアクセスすることができる。記憶装置32は、ハードディスクドライブ、ブルーレイディスク、デジタル汎用光ディスク(DVD)、読み取り専用光ディスクメモリ(CD-ROM)、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、さまざまな分散型またはローカルアクセスデータ記憶媒体中の任意のデータ記憶媒体を含むことができる。さらなる例では、記憶装置32は、ファイルサーバに対応していてもよく、ソースデバイス12によって生成された符号化ビデオデータを保持していてもよい別の中間記憶装置に対応していてもよい。目標装置14は、記憶デバイス32からストリーミングまたはダウンロードを介して、記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶し、符号化ビデオデータを目標装置14に送信することができる任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、ウェブサーバ(例えば、ウェブサイト用)、ファイル転送プロトコル(FTP)サーバ、ネットワーク付属ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。目標装置14は、ファイルサーバに格納された符号化ビデオデータにアクセスするのに適した任意の標準データ接続を介して、符号化ビデオデータにアクセスすることができる。標準データ接続は、無線パス(例えば、無線忠実度(WI-FI)接続)、有線接続(例えば、デジタルユーザ回線(DSL)、ケーブルモデムなど)、または両方の組合せを含む。符号化ビデオデータの記憶装置32からの伝送は、ストリーム伝送、ダウンロード伝送、または両方の組み合わせである。
図23に示すように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20および出力インタフェース22を含む。ビデオソース18は、ビデオキャプチャ装置(例えば、ビデオカメラ)、以前キャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインタフェース、および/またはソースビデオとしてのコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソースまたはそのようなソースの組み合わせを含むことができる。一例として、ビデオソース18がセキュリティ監視システムのカメラである場合、ソースデバイス12および目標装置14は、カメラ電話またはビデオ電話を形成することができる。しかしながら、本願に記載された実施形態は、ビデオ符号化に一般的に適用することができ、無線および/または有線アプリケーションに適用することができる。
キャプチャされたビデオ、予めキャプチャされたビデオ、またはコンピュータによって生成されたビデオは、ビデオエンコーダ20によって符号化することができる。符号化ビデオデータは、ソースデバイス12の出力インタフェース22を介して目標装置14に直接送信することができる。符号化ビデオデータは、後に目標装置14または他のデバイスによってアクセスされて復号および/または再生するために記憶デバイス32に格納されてもよい(またはオプションである)。出力インタフェース22は、モデムおよび/または送信機をさらに含むことができる。
目標装置14は、入力インターフェース28、ビデオデコーダ30およびディスプレイデバイス34を含む。入力インターフェース28は、受信機および/またはモデムを含み、リンク16を介して符号化ビデオデータを受信することができる。リンク16を介して通信される符号化ビデオデータ、または記憶装置32上に提供される符号化ビデオデータは、ビデオデコーダ30がビデオデータを復号する際に使用されるために、ビデオエンコーダ20によって生成されるさまざまな構文要素を含むことができる。そのような構文要素は、通信媒体上で送信される符号化ビデオデータ、記憶媒体上に記憶される符号化ビデオデータ、またはファイルサーバ上に記憶される符号化ビデオデータ内に含まれることができる。
いくつかの実施形態では、目標装置14は、ディスプレイデバイス34を含むことができる。ディスプレイデバイス34は、統合ディスプレイデバイス、および目標装置14と通信するように構成された外部ディスプレイデバイスであることができる。ディスプレイデバイス34は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、さまざまなディスプレイデバイスの中の任意のディスプレイデバイスを含むことができる。
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part10、AVCなどの独自標準または業界標準およびそのような標準の拡張にしたがって動作することができる。本願は、特定のビデオ符号化/復号標準に限定されるものではなく、他のビデオ符号化/復号標準に適用することができることを理解されたい。ソースデバイス12のビデオエンコーダ20は、これらの現在の標準または将来の標準のいずれかに基づいてビデオデータを符号化するように構成することができると一般的に考えられる。同様に、目標装置14のビデオデコーダ30は、これらの現在の標準または将来の標準のいずれかに基づいてビデオデータを復号するように構成することができると一般的に考えられる。
ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせなど、さまざまな適切なエンコーダおよび/またはデコーダ回路の中の任意の回路として実装することができる。部分的にソフトウェアで実装される場合、電子機器は、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に格納し、1つまたは複数のプロセッサを使用してハードウェア内の命令を実行して、本開示に開示されたビデオ符号化/復号動作を実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含めることができ、エンコーダまたはデコーダのいずれかは、それぞれの装置における組合せ型エンコーダ/デコーダ(CODEC)の一部として統合することができる。
図24は、本願に記載されたいくつかの実施形態に係る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化およびインター予測符号化を実行することができる。イントラ予測符号化は、所与のビデオフレームまたは画像内のビデオデータにおける空間冗長性を低減または除去するための空間予測に依存する。インター予測符号化は、ビデオシーケンスの近接ビデオフレームまたは画像内のビデオデータにおける時間冗長性を低減または除去するための時間予測に依存する。なお、「フレーム」という用語は、ビデオ符号化分野における「画像」または「画像」という用語の類義語として使用することができる。
図24に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号化画像バッファ(DPB)64、加算器50、変換処理ユニット52、量子化ユニット54およびエントロピー符号化ユニット56を備える。予測処理ユニット41は、さらに、動き推定ユニット42、動き補償ユニット44、区画ユニット45、イントラ予測処理ユニット46およびイントラブロックコピー(BC)ユニット48を含む。いくつかの実施形態では、ビデオエンコーダ20は、ビデオブロック再構成のための逆量子化ユニット58、逆変換処理ユニット60および加算器62をさらに含む。デブロッキングフィルタなどのインループフィルタ63は、再構成されたビデオからブロック効果を除去するためにブロック境界をフィルタリングするように、加算器62とDPB64との間に配置することができる。デブロッキングフィルタに加えて、加算器62の出力は、別のインループフィルタ(例えば、サンプル適応オフセット(SAO)フィルタおよび/または適応インループフィルタ(ALF))を用いてフィルタリングすることができる。いくつかの例では、インループフィルタは、省略されてもよく、復号されたビデオブロックは、加算器62によってDPB64に直接供給されてもよい。ビデオエンコーダ20は、固定ハードウェアユニットまたはプログラマブルハードウェアユニットの形態をとることができ、または説明した固定ハードウェアユニットまたはプログラマブルハードウェアユニットのうちの1つまたは複数に分散することができる。
ビデオデータメモリ40は、ビデオエンコーダ20のコンポーネントによって符号化されるビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは、例えば図23に示すようなビデオソース18から取得することができる。DPB64は、ビデオエンコーダ20が(例えば、イントラ予測符号化モードまたはインター予測符号化モードで)ビデオデータを符号化する際に使用するための参照ビデオデータ(例えば、参照フレームまたは参照画像)を格納するバッファである。ビデオデータメモリ40およびDPB64は、さまざまなメモリ装置の中の任意のメモリ装置によって形成することができる。さまざまな例では、ビデオデータメモリ40は、ビデオエンコーダ20の他のコンポーネントと一緒にチップ上にあってもよく、またはそれらのコンポーネントに対してチップ外にあってもよい。
図24に示すように、予測処理ユニット41内の区画ユニット45は、ビデオデータを受信すると、ビデオデータをビデオブロックに分割する。この分割はまた、四分木(QT)構造などのビデオデータに関連する予め定められた分割構造に基づいてビデオフレームをスライス、タイル(tile)(例えば、ビデオブロックセット)、または他のより大きな符号化ユニット(CU)に分割することを含むことができる。ビデオフレームは、サンプル値を持つサンプルの2次元アレイまたは行列であるか、それに見なされるものである。アレイ内のサンプルは、画素またはPelとも呼ばれる。アレイまたは画像の水平方向および垂直方向(または軸)のサンプルの数は、ビデオフレームのサイズおよび/または解像度を定義する。ビデオフレームは、例えばQT分割を用いて複数のビデオブロックに分割することができる。ビデオブロックのサイズがビデオフレームよりも小さいが、ビデオブロックは、同様に、サンプル値を持つサンプルの2次元アレイまたは行列であるか、それに見なされるものである。ビデオブロックの水平方向と垂直方向(または軸)のサンプルの数によって、ビデオブロックのサイズが定義される。ビデオブロックは、例えば、QT分割、2分木(BT)分割、または3分木(TT)分割、またはそれらの任意の組合せを繰り返し使用して、ブロックを再形成することができる1つまたは複数のブロックパーティションまたはサブブロックにさらに分割することができる。なお、ここで使用する「ブロック」または「ビデオブロック」という用語は、フレームまたは画像の一部、特に矩形(正方形または非正方形)の部分である。例えば、HEVCおよびVVCを参照すると、ブロックまたはビデオブロックは、符号化木ユニット(CTU)、CU、予測ユニット(PU)、または変換ユニット(TU)であるか、それに対応するものであってもよく、および/または、符号化木ブロック(CTB)、符号化ブロック(CB)、予測ブロック(PB)、または変換ブロック(TB)、および/またはサブブロックなどの対応するブロックであるか、それに対応するものであってもよい。
予測処理ユニット41は、誤差結果(例えば、符号化レートおよび歪みレベル)に基づいて、複数のイントラ予測符号化モードのうちの1つまたは複数のインター予測符号化モードのうちの1つなど、現在のビデオブロックのための複数の可能な予測符号化モードのうちの1つを選択することができる。予測処理ユニット41は、得られたイントラ予測符号化ブロックまたはインター予測符号化ブロックを加算器50に供給して残差ブロックを生成し、加算器62に供給して、符号化されたブロックを再構成し、その後の参照フレームの一部として使用することができる。予測処理ユニット41はまた、構文要素(例えば動きベクトル、イントラモードインジケータ、分割情報、その他のそのような構文情報)をエントロピー符号化ユニット56に供給する。
現在のビデオブロックのための適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、符号化される現在のブロックと同じフレーム内にある1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測符号化を実行して空間予測を提供することができる。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレームのうちの1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測符号化を実行して時間予測を提供する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックに適切な符号化モードを選択するために、複数の符号化パスを実行することができる。
いくつかの実施形態では、動き推定ユニット42は、参照ビデオフレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの変位を示す動きベクトルを、ビデオフレームシーケンス内の所定のモードに基づいて生成することにより、現在のビデオフレームのためのインター予測モードを決定する。動き推定ユニット42による動き推定は、ビデオブロックに対する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレーム内の予測ブロックに対する現在のビデオフレームまたは画像内のビデオブロックの変位を示すことができ、予測ブロックは、現在フレーム内で符号化されている現在のブロックに対するものである。所定のモードは、シーケンス内のビデオフレームをPフレームまたはBフレームとして指定することができる。イントラBCユニット48は、イントラBC符号化のためのベクトル(例えば、ブロックベクトル)を決定するために、動き推定ユニット42がインター予測のための動きベクトルを決定するのと同様の方法で決定し、または動き推定ユニット42を用いてブロックベクトルを決定することができる。
画素差の面では、ビデオブロックのための予測ブロックは、符号化されるビデオブロックに密接に一致すると考えられる参照フレームのブロックまたは参照ブロックであるか、それに対応するものである。画素差は、絶対差総和(SAD)、二乗差総和(SSD)または他の差メトリックによって決定されることができる。いくつかの実施形態では、ビデオエンコーダ20は、DPB64に記憶された参照フレームのためのサブ整数画素位置の値を計算することができる。例えば、ビデオエンコーダ20は、参照フレームの4分の1の画素位置、8分の1の画素位置、または他の分数の画素位置の値を補間することができる。したがって、動き推定ユニット42は、全画素位置および分数画素位置に対して動き探索を行い、分数画素精度を有する動きベクトルを出力することができる。
動き推定ユニット42は、ビデオブロックの位置を、第1の参照フレームリスト(リスト0)または第2の参照フレームリスト(リスト1)から選択された参照フレームの予測ブロックの位置と比較して、インター予測符号化フレーム中のビデオブロックのための動きベクトルを計算する。第1の参照フレームリストおよび第2の参照フレームリスト中の各々の参照フレームリストは、DPB64に記憶された1つまたは複数の参照フレームを識別する。動き推定ユニット42は、算出した動きベクトルを動き補償ユニット44に送信し、その後エントロピー符号化ユニット56に送信する。
動き補償ユニット44による動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックを抽出または生成することを含むことができる。動き補償ユニット44は、現在のビデオブロックのための動きベクトルを受信すると、動きベクトルが指向する予測ブロックを参照フレームリスト内の1つの参照フレームリスト内で特定し、DPB64から予測ブロックを回収し、予測ブロックを加算器50に転送することができる。次いで、加算器50は、符号化されている現在のビデオブロックの画素値から動き補償ユニット44から供給される予測ブロックの画素値を減算することにより、画素差分値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差分値は、輝度差分成分または彩度差分成分または両方を含むことができる。動き補償ユニット44は、ビデオフレームのビデオブロックを復号する際にビデオデコーダ30が使用するために、ビデオフレームのビデオブロックに関連する構文要素を生成することもできる。構文要素は、例えば、予測ブロックを識別するための動きベクトルを定義する構文要素、予測モードを示す任意のマーカー、または本明細書で説明する他の構文情報を含むことができる。なお、動き推定ユニット42と動き補償ユニット44とは、高度に統合されていてもよいが、概念のために別個に説明されている。
いくつかの実施形態では、イントラBCユニット48は、以上で動き推定ユニット42と動き補償ユニット44に関連して説明された方式と同様にベクトルを生成し、予測ブロックを抽出することができるが、これらの予測ブロックは、符号化されている現在のブロックと同じフレームにあり、これらのベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。具体的には、イントラBCユニット48は、現在のブロックを符号化するために使用されるイントラ予測モードを決定することができる。いくつかの例では、イントラBCユニット48は、例えば、複数の個別の符号化パス中に、さまざまなイントラ予測モードを使用して現在のブロックを符号化し、レート歪み解析によってその性能をテストすることができる。次に、イントラBCユニット48は、さまざまなテストされたイントラ予測モードから適切なイントラ予測モードを選択して使用し、それに応じてイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、レート歪み解析を用いて、さまざまなテストされたイントラ予測モードについてレート歪み値を計算し、テストされたモードから最適なレート歪み特性を有するイントラ予測モードを適切なイントラ予測モードとして選択して使用することができる。レート歪み解析は、通常、符号化されたブロックと、符号化されて符号化されたブロックを生成する元の符号化されていないブロックとの間の歪み(または誤差)量、および符号化されたブロックを生成するためのビットレート(すなわち、ビット数)を決定する。イントラBCユニット48は、どのイントラ予測モードがブロックに対する最適なレート歪み値を示すかを決定するために、さまざまな符号化されたブロックに対する歪みとレートから比率を計算することができる。
他の例では、イントラBCユニット48は、本明細書に記載の実施形態に係るイントラBC予測のためのそのような機能を実行するために、動き推定ユニット42および動き補償ユニット44をすべてまたは部分的に使用することができる。いずれの場合も、イントラブロックコピーについて、画素差の面では、予測ブロックは、符号化されるブロックと密接に一致すると考えられるブロックであってもよく、画素差は、SAD、SSD、または他の差メトリックによって決定されてもよく、予測ブロックの識別は、サブ整数画素ビットのための値を計算することを含むことができる。
ビデオエンコーダ20は、予測ブロックがイントラ予測による同一フレームからのものであるか、インター予測による異なるフレームからのものであるかにかかわらず、符号化されている現在のビデオブロックの画素値から予測ブロックの画素値を減算することにより画素差値を形成し、残差ビデオブロックを形成することができる。残差ビデオブロックを形成する画素差分値は、輝度成分差と彩度成分差の両方を含むことができる。
上述したように、動き推定ユニット42および動き補償ユニット44によるインター予測またはイントラBCユニット48によるイントラブロックコピー予測の代替として、イントラ予測処理ユニット46は、現在のビデオブロックをイントラ予測することができる。具体的には、イントラ予測処理ユニット46は、現在のブロックを符号化するためにイントラ予測モードを決定することができる。このようにするために、イントラ予測処理ユニット46は、例えば、複数の個別の符号化パス中に、さまざまなイントラ予測モードを用いて現在のブロックを符号化し、イントラ予測処理ユニット46(またはいくつかの例では、モード選択ユニット)は、テストされたイントラ予測モードの中から適切なイントラ予測モードを選択して使用することができる。イントラ予測処理ユニット46は、ブロックのために選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に供給することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化することができる。
予測処理ユニット41がインター予測またはイントラ予測を介して現在のビデオブロックのための予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することにより残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つまたは複数のTUに含まれ、変換処理ユニット52に供給されることができる。変換処理ユニット52は、離散コサイン変換(DCT)や概念的に類似した変換などの変換を用いて、残差ビデオデータを残差変換係数に変換する。
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送信することができる。量子化ユニット54は、ビットレートをさらに小さくするために変換係数を量子化する。量子化プロセスはまた、係数中のいくつかの係数またはすべての係数に関連するビット深度を低減することができる。量子化パラメータを調整することで、量子化の度合いを変更することができる。いくつかの例では、量子化ユニット54は、その後、量子化された変換係数を含む行列の走査を実行することができる。あるいは、エントロピー符号化ユニット56は、走査を実行することができる。
量子化後、エントロピー符号化ユニット56は、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文に基づくコンテキスト適応バイナリ算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、または別のエントロピー符号化方法または技術を用いて、量子化された変換係数をビデオビットストリームにエントロピー符号化する。その後、符号化されたビットストリームは、図23に示すビデオデコーダ30に送信されてもよく、または後にビデオデコーダ30に送信するために、またはビデオデコーダ30によって回収されるために、図23に示す記憶装置32に保存されてもよい。エントロピー符号化ユニット56は、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化することもできる。
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して画素領域に残差ビデオブロックを再構成し、他のビデオブロックを予測するための参照ブロックを生成する。上述したように、動き補償ユニット44は、DPB64に格納されたフレームの1つまたは複数の参照ブロックから、動き補償された予測ブロックを生成することができる。動き補償ユニット44は、動き推定時に使用するためにサブ整数画素値を計算するように、1つまたは複数の補間フィルタを予測ブロックに適用することもできる。
加算器62は、DPB64に記憶するために、動き補償ユニット44によって生成された動き補償された予測ブロックに再構成された残差ブロックを加算して参照ブロックを生成する。次いで、参照ブロックは、イントラBCユニット48、動き推定ユニット42、および動き補償ユニット44によって予測ブロックとして使用され、後続のビデオフレーム中の別のビデオブロックをインター予測することができる。
図25は、本明細書のいくつかの実施形態に係る例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90およびDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84およびイントラBCユニット85をさらに含む。ビデオデコーダ30は、ビデオエンコーダ20に関して図24に関連して上述した符号化プロセスと実質的に相互逆の復号化プロセスを実行することができる。例えば、動き補償ユニット82は、エントロピー復号化ユニット80から受信した動きベクトルに基づいて予測データを生成することができ、イントラ予測ユニット84は、エントロピー復号化ユニット80から受信したイントラ予測モードインジケータに基づいて予測データを生成することができる。
いくつかの例では、ビデオデコーダ30のユニットは、本願の実施形態を実行するためにタスクを割り当てられることができる。さらに、いくつかの例では、本開示の実施形態は、ビデオデコーダ30の複数のユニットのうちの1つまたは複数のユニットに分散することができる。例えば、イントラBCユニット85は、単独で、または動き補償ユニット82、イントラ予測ユニット84、エントロピー復号化ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実施形態を実行することができる。いくつかの例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他のコンポーネントによって実行される。
ビデオデータメモリ79は、符号化ビデオビットストリームなどのビデオデコーダ30の他のコンポーネントによって復号されるビデオデータを記憶することができる。ビデオデータメモリ79に格納されたビデオデータは、例えば、記憶装置32から取得するか、カメラなどのローカルビデオソースから取得するか、ビデオデータの有線または無線ネットワーク通信を介して取得するか、フラッシュメモリドライブやハードディスクなどの物理データ記憶媒体にアクセスすることによって取得することができる。ビデオデータメモリ79は、符号化ビデオビットストリームからの符号化ビデオデータを格納する符号化画像バッファ(CPB)を含むことができる。ビデオデコーダ30のDPB92は、ビデオデータを復号する際にビデオデコーダ30が(例えば、イントラまたはインター予測符号化モードで)使用するための参照ビデオデータを記憶する。ビデオデータメモリ79およびDPB92は、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなど、さまざまなメモリデバイスの中の任意のメモリデバイスによって形成することができる。例示的な目的のために、ビデオデータメモリ79とDPB92は、図25においてビデオデコーダ30の2つの異なるコンポーネントとして図示されている。しかし、ビデオデータメモリ79およびDPB92は、同一のメモリデバイスまたは個別のメモリデバイスによって提供されてもよいことは、当業者には明らかであろう。いくつかの例では、ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントと一緒にチップ上にあってもよく、またはそれらのコンポーネントに対してチップ外にあってもよい。
復号化プロセス中に、ビデオデコーダ30は、符号化ビデオフレームのビデオブロックおよび関連する構文要素を表す符号化ビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信することができる。ビデオデコーダ30のエントロピー復号化ユニット80は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、およびその他の構文要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号化ユニット80は、その後、動きベクトルまたはイントラ予測モードインジケータおよびその他の構文要素を予測処理ユニット81に転送する。
ビデオフレームがイントラ予測符号化(I)フレームまたは他のタイプのフレーム中のイントラ符号化予測ブロックとして符号化される場合、予測処理ユニット81のイントラ予測ユニット84は、信号で送信されるイントラ予測モードと、現在のフレームの以前の復号ブロックからの参照データとに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成することができる。
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームとして符号化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号化ユニット80から受信した動きベクトルおよびその他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1つまたは複数の予測ブロックを生成する。予測ブロック内の各予測ブロックは、参照フレームリスト内の1つの参照フレームリスト内の参照フレームから生成することができる。ビデオデコーダ30は、DPB92に格納された参照フレームに基づいてデフォルト構成技術を用いて参照フレームリスト(リスト0およびリスト1)を構築することができる。
いくつかの例では、本明細書で説明するイントラBCモードにしたがってビデオブロックが符号化される場合、予測処理ユニット81のイントラBCユニット85は、エントロピー復号化ユニット80から受信したブロックベクトルおよびその他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって定義される現在のビデオブロックの同じ画像の再構成領域内にあることができる。
動き補償ユニット82および/またはイントラBCユニット85は、動きベクトルおよび他の構文要素を解析することにより、現在のビデオフレームのビデオブロックのための予測情報を決定し、その後、その予測情報を用いて、復号されている現在のビデオブロックのための予測ブロックを生成する。例えば、動き補償ユニット82は、受信した構文要素のうちのいくつかの構文要素を用いて、ビデオフレームのビデオブロックを復号するための予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、フレームのための参照フレームリストのうちの1つまたは複数の参照フレームリストのための構成情報、フレームの各インター予測復号ビデオブロックのための動きベクトル、フレームの各インター予測復号ビデオブロックのためのインター予測状態、および現在のビデオフレーム中のビデオブロックを復号するための他の情報を決定する。
同様に、イントラBCユニット85は、フラグなど、受信した構文要素のうちのいくつかの構文要素を用いて、現在のビデオブロックがイントラBCモードで予測されたものであることや、フレームのどのビデオブロックが再構成領域内にあるかかつDPB92に格納されるべきかの構成情報、フレームの各イントラBC予測ビデオブロックのためのブロックベクトル、フレームの各イントラBC予測ビデオブロックのためのイントラBC予測状態、および現在のビデオフレーム中のビデオブロックを復号するための他の情報を決定する。
動き補償ユニット82はまた、ビデオエンコーダ20によってビデオブロックの符号化中に使用される補間フィルタを用いて補間を実行して、参照ブロックのサブ整数画素のための補間値を計算することができる。この場合、動き補償ユニット82は、受信した構文要素から、ビデオエンコーダ20によって使用される補間フィルタを決定し、これらの補間フィルタを使用して予測ブロックを生成することができる。
逆量子化ユニット86は、ビデオエンコーダ20によってビデオフレーム中の各ビデオブロックに対して計算された量子化の程度を決定するための同じ量子化パラメータを用いて、ビットストリーム中に供給されエントロピー復号化ユニット80によってエントロピー復号された量子化変換係数を逆量子化する。逆変換処理ユニット88は、画素領域において残差ブロックを再構成するために、逆変換(例えば、逆DCT、逆整数変換、または概念的に類似した逆変換プロセス)を変換係数に適用する。
動き補償ユニット82またはイントラBCユニット85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックに加算することによって、現在のビデオブロックのための復号されたビデオブロックを再構成する。デブロッキングフィルタ、SAOフィルタおよび/またはALFなどのインループフィルタ91は、復号されたビデオブロックをさらに処理するために加算器90とDPB92との間に配置することができる。いくつかの例では、インループフィルタ91は、省略されてもよく、復号されたビデオブロックは、加算器90によって直接DPB92に提供されてもよい。所与のフレーム中の復号ビデオブロックはその後、DPB92に記憶され、DPB92は、次のビデオブロックの後の動き補償のための参照フレームを記憶する。DPB92またはDPB92から分離されたメモリデバイスは、後にディスプレイデバイス(図23のディスプレイデバイス34など)に表示するために、復号されたビデオを記憶することもできる。
本開示の説明は、説明の目的で提示されており、本開示に限定されることが意図されていない。前述の説明および関連する図面に提示された教示をヒントに、多くの修正、変更および代替実施形態が当業者には明らかになるであろう。
例を選択して説明することは、本開示の原理を理解し、当業者が本開示のさまざまな実施形態を理解できるようにするためであり、基本原理と予想される特定の用途に適したさまざまな変更を有するさまざまな実施形態を好適に利用するためである。したがって、本開示の範囲は、開示された実施形態の具体例に限定されるものではなく、修正および他の実施形態は、本開示の範囲内に含まれることが意図されていることを理解されたい。
本出願は、2021年3月29日に提出された米国仮出願第63/167621号に対する優先権を主張するものであり、この特許出願の開示全体を参照によって本願明細書に援引する。
本開示は、ビデオ符号化復号化及び圧縮に関する。特に、本開示は、ビデオ符号化復号化のための残差及び係数符号化復号化の改善及び簡略化に関する。
多種のビデオ符号化復号化技術は、ビデオデータを圧縮することに使用されることが可能である。ビデオ符号化復号化は、1つまたは複数のビデオ符号化復号化標準に従って実行される。ビデオ符号化復号化標準には、例えば多用途ビデオ符号化(VVC:Versatile Video Coding)、共同探査試験モデル(JEM:Joint Exploration Test Model)、高効率ビデオ符号化復号化(H.265/HEVC:High Efficiency Video Coding)、高度なビデオ符号化復号化(H.264/AVC:Advanced Video Coding)、及び動画専門家グループ(MPEG:Moving Picture Experts Group)符号化復号化などを含む。ビデオ符号化復号化では、一般に、ビデオ画像またはシーケンスに存在する冗長性による予測方法(例えば、インター予測、イントラ予測など)が利用される。ビデオ符号化復号化技術の重要な目標は、ビデオ品質の低下を回避しまたは最小限に抑えながら、ビデオデータをより低いビットレートの形式に圧縮することである。
本開示の例は、ビデオ符号化復号化のための方法及び装置を提供する。
本開示の第1の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、シーケンスパラメータセット(SPS)範囲拡張フラグをSPS範囲拡張フラグデコーダによって受信することを含み、前記SPS範囲拡張フラグが、スライスヘッダ(SH)ローバイトシーケンスペイロード(RBSP)の構文構造に構文構造sps_range_extensionが存在するか否かを、前記SPS範囲拡張フラグの値に基づいて示す。
本開示の第2の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、シーケンスパラメータセット(SPS)整列有効化フラグをデコーダによって受信することを含み、前記SPS整列有効化フラグが、構文要素sb_coded_flag、abs_remainder、dec_abs_levelおよびcoeff_sign_flagnのバイパス復号の前にインデックスivlCurrRangeが整列されるか否かを、前記SPS整列有効化フラグの値に基づいて示す。
本開示の第3の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、拡張精度処理フラグをデコーダによって受信することを含み、前記拡張精度処理フラグが、変換処理中に変換係数について拡張ダイナミックレンジが使用されるか否かを、前記拡張精度処理フラグの値に基づいて示す。
本開示の第4の態様によれば、ビデオ符号化復号化のための方法が提供される。前記方法は、持続ライス適応有効化フラグをデコーダによって受信することを含み、前記持続ライス適応有効化フラグが、abs_remainderおよびdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われるか否かを、前記持続ライス適応有効化フラグの値に基づいて示す。
なお、上記の発明の概要及び以下の詳細な説明は、例示的及び説明的なものにすぎず、本開示を限定することを意図していないことを理解すべきである。
本明細書に組み込まれ、本明細書の一部を構成する図面は、本開示と一致する例を示し、記述とともに本開示の原理を説明するためのものである。
以下、例が添付の図面に示されている具体的な実施の形態を詳細に参照する。以下の説明は、別段の説明がない限り、異なる図面における同一の数字が同一または類似の要素を表す図面を参照する。例示的な実施形態における以下の説明において説明される実現は、本開示と一致するすべての実現を表すものではない。これらは、添付の特許請求の範囲に記載された本開示に関連する態様と一致する装置および方法の例にすぎない。
本開示に使用されている用語は、特定の実施例を記載する目的のみに用いられるものであり、本開示を限定するためのものではない。本開示および添付する特許請求の範囲に使用されている単数形式の「一種」、「一個」および「当該」は、文脈で明確に説明されない限り、複数形式も含むこととする。さらに、本明細書で使用されている「および/または」という用語は、関連する1つまたは複数のリストアップ項目の任意または全てのありうる組合せを示したり含んだりするとする。
本明細書では、「第1」、「第2」、「第3」などの用語を用いて各種情報を記述することができるが、記載されている情報は、これらの用語に限定されるべきではないことを理解されたい。これらの用語は、1つの情報の種類を別の情報の種類と区別するためにのみ使用される。例えば、本開示の範囲を逸脱しない場合、第1の情報を第2の情報と呼ぶことができ、また同様に、第2の情報を第1の情報と呼ぶこともできる。本明細書で使用されるように、文脈によれば、「もし」という用語は、「…の時に」または「一旦…すると」または「判断に応じる」ことを意味すると理解される。
HEVC標準の第1版は、2013年10月に完成されたものであって、その前世代のビデオ符号化復号化標準H.264/MPEG AVCと比較して、約50%のビットレート節約または同等の知覚品質を提供する。HEVC標準は、前身と比較して顕著な符号化復号化改善を提供しているが、追加の符号化復号化ツールを利用してHEVCより優れた符号化復号化効率を実現できる証拠がある。これに基づいて、VCEG及びMPEGは、いずれも将来のビデオ符号化復号化規格化のための新しい符号化復号化技術の探索を開始した。ITU-T VECG及びISO/IEC MPEGは、2015年10月で統合共同ビデオ専門家チーム(JVET)を形成して、符号化復号化効率の大幅な向上を実現可能な先進技術に対する重要な研究を開始した。JVETは、HEVCテストモデル(HM:test model)の上にいくつかの追加の符号化復号化ツールを積分することにより、共同探査試験モデル(JEM)と呼ばれる参照ソフトウェアを維持する。
2017年10月、ITU-T及びISO/IECは、HEVCを上回る性能を持つビデオ圧縮に関する共同提案募集(CfP:joint call for proposals)を発表した。2018年4月、第10回JVET会議では、HEVCより約40%上回る圧縮効率利得を示す23つのCfP応答を受信して評価した。このような評価結果に基づいて、JVETは、多用途ビデオ符号化(VVC)と呼ばれる次世代ビデオ符号化復号化標準を開発するための新プロジェクトを開始した。同月には、VVC標準の参照実装を示すために、VVCテストモデル(VTM:VVC test model)と呼ばれる参照ソフトウェアコードベースが構築された。
HEVCと同様に、VVCは、ブロックベースのハイブリッドビデオ符号化復号化フレームワークに構築される。
図1は、VVC用のブロックベースのビデオエンコーダの概略的な図を示す。具体的には、図1は、典型的なエンコーダ100を示す。エンコーダ100は、ビデオ入力110、動き補償112、動き推定114、イントラ/インターモード決定116、ブロック予測因子140、加算器128、変換130、量子化132、予測関連情報142、イントラ予測118、画像バッファ120、逆量子化134、逆変換136、加算器126、メモリ124、インループフィルタ122、エントロピー符号化138およびビットストリーム144を有する。
エンコーダ100では、ビデオフレームが、処理のために複数のビデオブロックに分割される。所与のビデオブロック毎に、予測は、インター予測方法またはイントラ予測方法に基づいて形成される。
現在のビデオブロック(ビデオ入力110の一部)とその予測因子(ブロック予測因子140の一部)との差を示す予測残差は、加算器128から変換130に送信される。その後、変換係数は、エントロピー低減のために変換130から量子化132に送信される。その後、量子化係数は、圧縮ビデオビットストリームを生成するためにエントロピー符号化138に供給される。図1に示すように、イントラ/インターモード決定116からの予測関連情報142(例えば、ビデオブロック区画情報、動きベクトル(MV)、参照画像インデックス、イントラ予測モード)も、エントロピー符号化138によって供給されて圧縮ビットストリーム144に保存される。圧縮ビットストリーム144は、ビデオビットストリームを含む。
エンコーダ100では、予測目的のための画素を再構成するために、デコーダ関連回路も必要である。まず、逆量子化134及び逆変換136によって予測残差を再構成する。再構成された当該予測残差は、現在のビデオブロックのためのフィルタリングされていない再構成画素を生成するためにブロック予測因子140と組み合わされる。
空間予測(または「イントラ予測」)は、現在のビデオブロックと同じビデオフレーム中の符号化済み隣接ブロックのサンプル(参照サンプルと呼ばれる)からの画素を使用して、現在のビデオブロックを予測する。
時間予測(「インター予測」とも呼ばれる)は、符号化済みビデオ画像からの再構成画素を使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間冗長性を低減する。所与の符号化ユニット(CU)または符号化ブロックのための時間予測信号は、通常、現在のCUとその時間参照との間の動きの量および方向を示す1つまたは複数のMVによって信号で通知される。さらに、複数の参照画像がサポートされている場合は、時間予測信号が参照画像記憶部内のどの参照画像から来るかを識別するための参照画像インデックスが追加的に送信される。
動き推定114は、ビデオ入力110及び画像バッファ120からの信号を取り込んで、動き推定信号を動き補償112に出力する。動き補償112は、ビデオ入力110、画像バッファ120からの信号、および動き推定114からの動き推定信号を取り込んで、動き補償信号をイントラ/インターモード決定116に出力する。
空間予測および/または時間予測を実行した後、エンコーダ100におけるイントラ/インターモード決定116は、例えば、レート歪み最適化方法に基づいて最適な予測モードを選択する。次に、変換130及び量子化132によってブロック予測因子140を現在のビデオブロックから減算し、得られた予測残差を非相関化する。得られた量子化の残差係数は、逆量子化134によって逆量子化され、逆変換136によって逆変換されて再構成の残差を形成し、その後、この再構成の残差を予測ブロックに加算し戻してCUの再構成信号を形成する。再構成されたCUは、画像バッファ120の参照画像記憶部に入れられて将来のビデオブロックを符号化するために使用される前に、デブロッキングフィルタ、サンプル適応オフセット(SAO:sample adaptive offset)、および/または適応インループフィルタ(ALF:adaptive in-loop filter)などのインループフィルタ122が適用されることができる。出力ビデオビットストリーム144を形成するために、符号化モード(インターまたはイントラ)、予測モード情報、動き情報、及び量子化の残差係数は、すべてエントロピー符号化ユニット138に送信され、さらに圧縮され、パッケージングされてビットストリームを形成する。
図1は、汎用のブロックベースのハイブリッドビデオ符号化システムを示すブロック図である。入力ビデオ信号は、ブロック単位(CUと呼ばれる)で処理される。VTM-1.0では、CUは、最大128×128画素まで可能である。しかし、四分木のみに基づいてブロックを区画するHEVCとは異なり、VVCでは、1つの符号化木ユニット(CTU)が四分木/二分木/三分木に基づいてCUに分割されて、変化する局所特性に適応する。定義によれば、符号化木ブロック(CTB)があるN値に対するN×Nサンプルブロックであり、成分をCTBに分割することは、一種の区画である。CTUは、3つのサンプルアレイを有する画像の輝度サンプルのCTB、彩度サンプルの2つの対応するCTB、または単色画像のサンプルのCTB、または3つの個別の色平面及びサンプル符号化用の構文構造で符号化された画像のサンプルのCTBを含む。また、HEVCにおける多区画ユニットタイプの概念は、除去され、すなわち、VVCにおいてCU、予測ユニット(PU)、変換ユニット(TU)は、区別されなくなる。その代わりに、各CUは、さらなる区画を必要とせずに、常に予測及び変換の両方のためのベースユニットとして使用される。マルチタイプ木構造では、1つのCTUが最初に四分木構造によって区画される。次に、各四分木の葉ノードは、二分木構造及び三分木構造によってさらに区画されることができる。図3A、図3B、図3C、図3D、図3Eに示すように、四元区画、水平二元区画、垂直二元区画、水平三元区画および垂直三元区画の5種類の分割タイプが存在する。
図3Aは、本開示に係るマルチタイプ木構造におけるブロック四元区画を示す図である。
図3Bは、本開示に係るマルチタイプ木構造におけるブロック垂直二元区画を示す図である。
図3Cは、本開示に係るマルチタイプ木構造におけるブロック水平二元区画を示す図である。
図3Dは、本開示に係るマルチタイプ木構造におけるブロック垂直三元区画を示す図である。
図3Eは、本開示に係るマルチタイプ木構造におけるブロック水平3元区画を示す図である。
図1において、空間予測および/または時間予測は、実行されてよい。空間予測(または「イントラ予測」)は、同じビデオ画像/スライス内の符号化済み隣接ブロックのサンプル(参照サンプルと呼ばれる)からの画素を使用して、現在のビデオブロックを予測する。空間予測は、ビデオ信号における固有の空間冗長性を低減する。時間予測(「インター予測」または「動き補償された予測」とも呼ばれる)は、符号化済みビデオ画像からの再構成画素を使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間冗長性を低減する。所与のCUのための時間予測信号は、通常、現在のCUとその時間参照との間の動きの量及び方向を示す1つまたは複数の動きベクトル(MV)によって信号で通知される。さらに、複数の参照画像がサポートされている場合は、時間予測信号が参照画像記憶部内のどの参照画像から来るかを識別するための参照画像インデックスが追加的に送信される。空間および/または時間予測の後、エンコーダ内のモード決定ブロックは、例えば、レート歪み最適化方法に基づいて最適な予測モードを選択する。次に、現在のビデオブロックから予測ブロックを減算し、変換を用いて予測残差を非相関化して量子化する。量子化された残差係数は、逆量子化および逆変換されて再構成残差を形成し、再構成された残差が、その後予測ブロックに加算し戻されてCUの再構成信号を形成する。さらに、再構成されたCUは、参照画像記憶部に入れられて将来のビデオブロックを符号化するために使用される前に、デブロッキングフィルタ、サンプル適応オフセット(SAO)、および適応インループフィルタ(ALF)などのインループフィルタが適用されることができる。出力ビデオビットストリームを形成するために、符号化モード(インターまたはイントラ)、予測モード情報、動き情報及び量子化された残差係数は、すべてエントロピー符号化ユニットに送信され、さらに圧縮され、パッケージングされてビットストリームを形成する。
図2は、VVC用のビデオデコーダの概略的なブロック図を示す。具体的には、図2は、典型的なデコーダ200のブロック図を示す。デコーダ200は、ビットストリーム210、エントロピー復号化212、逆量子化214、逆変換216、加算器218、イントラ/インターモード選択220、イントラ予測222、メモリ230、インループフィルタ228、動き補償224、画像バッファ226、予測関連情報234およびビデオ出力232を有する。
デコーダ200は、図1のエンコーダ100に存在する再構成関連部分と同様である。デコーダ200では、最初にエントロピー復号212によって入力したビデオビットストリーム210を復号化し、量子化係数レベル及び予測相関情報を導出する。その後、逆量子化214および逆変換216によって量子化係数レベルを処理して、再構成された予測残差を得る。イントラ/インターモード選択器220において実装されるブロック予測因子機構は、復号化された予測情報に基づいてイントラ予測222または動き補償224を実行するように構成される。加算器218を用いて、逆変換216からの再構成予測残差とブロック予測因子機構によって生成された予測出力とを加算することにより、フィルタリングされていない再構成画素のセットが得られる。
再構成されたブロックは、参照画像記憶部として使用される画像バッファ226に格納される前に、さらにインループフィルタ228を通過することができる。画像バッファ226内の再構成されたビデオは、表示装置を駆動するために送信されてもよく、将来のビデオブロックを予測するために使用されてもよい。インループフィルタ228を開いた場合、再構成された画素に対してフィルタリング動作を実行して、最終的な再構成ビデオ出力232を導出する。
図2は、ブロックベースのビデオデコーダの概略的なブロック図を示す。ビデオビットストリームは、最初にエントロピー復号化ユニットでエントロピー復号化される。符号化モードおよび予測情報は、予測ブロックを形成するために空間予測ユニット(イントラ符号化される場合)または時間予測ユニット(インター符号化される場合)に送信される。残差変換係数は、残差ブロックを再構成するために逆量子化ユニットおよび逆変換ユニットに送信される。予測ブロックと残差ブロックは、次に加算される。再構成されたブロックは、参照画像記憶部に格納される前にさらにインループフィルタを通過することができる。その後、参照画像記憶部内の再構成ビデオが送信されて、表示装置を駆動し、将来のビデオブロックを予測するために使用される。
一般に、VVCにおいて適用されるベースイントラ予測スキームは、例えば、イントラサブ区画(ISP:intra sub-partition)符号化モード、広角イントラ方向を有する拡張イントラ予測、位置関連イントラ予測組み合わせ(PDPC)および4タップイントラ補間など、いくつかのモジュールがさらに拡張および/または改良されたことを除いて、HEVCのベースイントラ予測スキームと同じである。
VVCにおける画像、タイル群、タイルおよびCTUの区画
VVCでは、タイルは、画像内の特定のタイル列及び特定のタイル行内のCTUの矩形領域として定義される。タイル群は、画像における単一のNALユニットにのみ含まれる整数個のタイルの組み合わせである。基本的に、タイル群の概念は、HEVCで定義されているスライスと同じである。たとえば、画像は、タイル群及びタイルに分割される。タイルは、画像の矩形領域を覆うCTUシーケンスである。タイル群には、画像の複数のタイルが含まれる。タイル群の2つのモード、すなわちラスタ走査タイル群モード及び矩形タイル群モードはサポートされる。ラスタ走査タイル群モードでは、タイル群には、画像におけるタイルラスタ走査されたタイルシーケンスが含まれる。矩形タイル群モードでは、タイル群には、画像における矩形領域を共同で形成する複数のタイルが含まれる。矩形タイル群内のタイルは、タイル群のタイルラスタ走査の順序に従う。
図4は、画像のラスタ走査タイル群区画の例を示し、ここで、画像は、12タイルと3ラスタ走査タイル群に分割される。図4は、タイル410、412、414、416、418、420、422、424、426、428、430および432を含む。各タイルには18個のCTUがある。より具体的には、図4は、12個のタイルと3個のタイル群(情報性)に区画された18×12輝度CTUを有する画像を示す。3つのタイル群は、以下の通りである。(1)第1のタイル群は、タイル410及び412を含む。(2)第2のタイル群は、タイル414、416、418、420および422を含む。(3)第3のタイル群は、タイル424、426、428、430および432を含む。
図5は、画像の矩形タイル群区画の例を示しており、ここで、画像は、24タイル(6タイル列及び4タイル行)と9矩形タイル群に分割されている。図5は、タイル510、512、514、516、518、520、522、524、526、528、530、532、534、536、538、540、542、544、546、548、550、552、554および556を含む。より具体的には、図5は、24個のタイルと9個のタイル群(情報性)に区画された18×12輝度CTUを有する画像を示す。タイル群にはタイルが含まれ、タイルにはCTUが含まれている。9つの矩形タイル群は、(1)2つのタイル510及び512、(2)2つのタイル514及び516、(3)2つのタイル518及び520、(4)4つのタイル522、524、534および536、(5)4つのタイル526、528、538および540、(6)4つのタイル530、532、542および544、(7)2つのタイル546及び548、(8)2つのタイル550及び552、(9)2つのタイル554及び556を含む。
VVCにおける高周波ゼロ復帰によるラージブロックサイズ変換
VTM4では、主に例えば1080pおよび4Kシーケンスなどの高解像度ビデオに使用される最大サイズ64×64までのラージブロックサイズ変換が有効にされる。サイズ(幅または高さ、または幅と高さの両方)が64に等しい変換ブロックに対して、低周波数係数のみが残るように高周波変換係数をゼロにする。例えば、M×N変換ブロック(Mはブロック幅、Nはブロック高さである)について、M=64の場合、変換係数の左側の32列のみが保持される。同様に、N=64の場合、変換係数の先頭の32行のみが保持される。変換スキップモードをラージブロックに使用する場合、任意の値をゼロにすることなくブロック全体を使用する。
VVCにおける仮想パイプラインデータユニット(VPDU)
仮想パイプラインデータユニット(VPDU)は、画像中の非オーバーラップユニットとして定義される。ハードウェアデコーダでは、連続するVPDUが複数のパイプライン段階で同時に処理される。VPDUサイズがほとんどのパイプライン段階におけるバッファサイズにほぼ比例するため、VPDUサイズを小さく保つことが重要である。ほとんどのハードウェアデコーダでは、VPDUサイズを最大変換ブロック(TB)サイズに設定することができる。しかし、VVCでは、三分木(TT)及び二分木(BT)の区画によってVPDUサイズが増加する可能性がある。
VPDUサイズを64×64輝度サンプルに保つために、VTM5に以下の(構文信号通知による修正の)標準区画制限を適用する。
幅または高さ、または幅と高さの両方が128に等しいCUは、TT分割が許可されない。
N≦64の128×N CU(すなわち、幅が128に等しく、高さが128未満)は、水平BTが許可されない。
N≦64のN×128 CU(すなわち、高さが128に等しく、幅が128未満)は、垂直BTが許可されない。
図6A、図6B、図6C、図6D、図6E、図6F、図6G、図6Hは、VTMにおいて許されないTT区画及びBT区画の例を示す。
VVCにおける変換係数の符号化復号化
VVCにおける変換係数の符号化復号化は、非オーバーラップ係数群(CGまたはサブブロックとも呼ばれる)を使用する上でHEVCと類似している。しかし、それらの間にもいくつかの違いがある。HEVCでは、係数の各CGは、4×4の固定サイズを有する。VVCドラフト6では、CGサイズが、TBサイズに依存するようになる。したがって、VVCでは、各種のCGサイズ(1×16、2×8、8×2、2×4、4×2および16×1)は、利用可能である。符号化ブロック内のCGおよびCG内の変換係数は、予め定められた走査順にしたがって符号化される。
画素当たりのコンテキスト符号化された2進数字の最大数を制限するために、TBの面積およびビデオ成分のタイプ(例えば、輝度成分および彩度成分)は、TBに対してコンテキスト符号化された2進数字(CCB)の最大数を導出するために使用される。コンテキスト符号化された2進数字の最大数は、TB_zosize*1.75である。ここで、TB_zosizeは、係数がゼロに復帰した後のTB内のサンプル数を示す。なお、CGが非ゼロ係数を含むか否かを示すフラグであるcoded_sub_block_flagは、CCBカウントに対して考慮されない。
係数ゼロ復帰は、変換ブロックの特定の領域に位置する係数を0に強制するためにその変換ブロックに対して実行される動作である。例えば、現在のVVCでは、64×64変換は、関連するゼロ復帰動作を有する。したがって、64×64変換ブロック内部の左上32×32領域外の変換係数は、すべて0に強制される。実際には、現在のVVCでは、特定の次元に沿ってサイズが32を超える任意の変換ブロックについて、係数ゼロ復帰動作を実行して、左上32×32領域外の係数を0に強制する。
VVCにおける変換係数符号化復号化では、まず変数remBinsPass1を、許可されるコンテキスト符号化された2進数字の最大数(MCCB)に設定する。符号化プロセスでは、コンテキスト符号化された2進数字が信号で送信されるたびに、この変数が1減少する。remBinsPass1が4以上の場合、まずすべてが第1のパスでコンテキスト符号化された2進数字を使用する構文sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagによって係数を信号で送信する。第2のパスでゴロム・ライス(Golomb-rice)コードおよびバイパス符号化(bypass-coded)された2進数字を使用して、構文要素abs_remainderによって係数のレベル情報の残りの部分を符号化する。第1のパスで符号化する際にremBinsPass1が4未満になると、現在の係数は、第1のパスで符号化されず、第2のパスでゴロム・ライスコード及びバイパス符号化された2進数字を使用して、構文要素dec_abs_levelによって直接符号化される。dec_abs_level[ ]のためのライスパラメータ導出プロセスを表3に指定されているように導出する。すべての上記レベル符号化の後、sig_coeff_flagが1に等しいすべての走査位置のシンボル(sign_flag)は、最終的にバイパスされた2進数字として符号化される。このようなプロセスは、図7に示されている。TBごとにremBinsPass1をリセットする。sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagに対して、コンテキスト符号化された2進数字を使用するとともに、残りの係数に対して、バイパス符号化された2進数字を使用する遷移は、TBあたり最大1回しか発生しない。係数サブブロックの場合、最初の係数を符号化する前にremBinsPass1が4未満であれば、バイパス符号化された2進数字を使用して係数サブブロック全体を符号化する。
図7は、変換ブロックのための残差符号化復号化構造を示す図である。
統合(同一)されたライスパラメータ(RicePara)導出は、構文abs_remainder及びdec_abs_levelを信号で送信するために用いられる。唯一の違いは、ベースレベルbaseLevelが4及び0に設定されて、abs_remainder及びdec_abs_levelに対してそれぞれ符号化を行うことにある。ライスパラメータは、局所テンプレート中の隣接する5つの変換係数の絶対レベルの合計だけでなく、以下のように対応する基礎レベルに基づいて決定される。
RicePara = RiceParTable[ max(min( 31, sumAbs - 5 * baseLevel), 0) ]
現在のVVCドラフト仕様における残差符号化復号化の構文および関連する意味をそれぞれ表1及び表2に示す。表1をどのように読むかがVVC仕様で見つけることができる。
VVCにおける変換スキップモードのための残差符号化復号化
1つの残差符号化復号化スキームが変換係数及び変換スキップ係数の両方の符号化復号化に対して設計されているHEVCとは異なり、VVCでは、2つの個別の残差符号化復号化スキームが変換係数及び変換スキップ係数(すなわち残差)にそれぞれ用いられる。
変換スキップモードでは、残差信号の統計特性が、変換係数の統計特性と異なり、低周波成分周辺のエネルギー圧縮が観察されなかった。残差符号化復号化は、以下を含む(空間)変換スキップ残差の異なる信号特性を考慮するように修正された。
最後のx/y位置を信号で送信しない。
すべての以前のフラグが0に等しい場合、coded_sub_block_flagは、DCサブブロックを除く各サブブロックのために符号化される。
2つの隣接係数に基づくsig_coeff_flagコンテキストモデリング。
par_level_flagは、コンテキストモデルを1つだけ使用する。
追加された5、7、9個より多いフラグ。
剰余2値化のための修正されたライスパラメータ導出。
サインフラグのためのコンテキストモデリングは、左と上の隣接係数値に基づいて決定され、sig_coeff_flagの後にサインフラグを解析して、すべてのコンテキスト符号化された2進数字を一緒に維持する。
図8に示すように、構文要素sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flagは、第1のパスで交互に残差サンプルごとに符号化され、その後、abs_level_gtx_ flagは、第2のパスでビット平面にしたがって符号化され、abs_remainderは、第3のパスで符号化される。
・パス1:sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag
・パス2:abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag
・パス3:abs_remainder
図8は、変換スキップブロックのための残差符号化復号化構造を示す図である。
現在のVVCドラフト仕様における変換スキップモードのための残差符号化復号化の構文と関連する意味をそれぞれ表5及び表2に示す。表5をどのように読むかがVVC仕様で見つけることができる。
量子化
現在のVVCでは、最大QP値が51から63に拡張され、それに応じて初期QPのシグナリングが変更される。slice_qp_deltaの非ゼロ値を符号化する場合、スライスセグメント層でSliceQpYの初期値を変更することができる。変換スキップブロックの場合、最小許容量子化パラメータ(QP)は、QP=4の場合に量子化ステップが1になるため、4と定義される。
また、同じHEVCスカラ量子化は、依存スカラ量子化と呼ばれる新しい概念とともに使用される。依存スカラー量子化とは、変換係数のための許容再構成値の集合が、再構成順で現在の変換係数レベルの前の変換係数レベルの値に依存する方法を指す。この方法の主な効果は、HEVCで使用されている従来の独立スカラー量子化に比べて、許容再構成ベクトルがN(Nは、変換ブロックにおける変換係数の数を表す)次元ベクトル空間においてより密にパッケージングされることである。これは、入力ベクトルと最も近い再構成ベクトルとの間の平均歪が、N次元単位体積当たりの許容再構成ベクトルの所定の平均数に対して減少されることを示している。依存スカラー量子化方法は、(a)再構成レベルが異なる2つのスカラー量子化器を定義することと、(b)2つのスカラー量子化器を切り替えるためのプロセスを定義することによって実現される。
使用される2つのスカラー量子化器(Q0とQ1で表される)は、図9に示されている。使用可能な再構成レベルの位置は、量子化ステップΔによって一意に指定される。使用されるスカラー量子化器(Q0またはQ1)は、ビットストリームで非明示的に信号で送信される。対照的に、現在の変換係数のための量子化器は、符号化/再構成順で現在の変換係数の前の変換係数レベルのパリティによって決定される。
図9は、提案された依存量子化方法で使用される2つのスカラー量子化器を示す図である。
図10Aおよび図10Bに示すように、2つのスカラー量子化器(Q0およびQ1)間の切り替えは、4つの量子化器状態(QState)を有するステートマシンによって実現される。QStateは、0、1、2、3の4つの異なる値を使用することができる。これは、符号化/再構成順で現在の変換係数の前の変換係数レベルのパリティによって一意に決定される。変換ブロックのための逆量子化の開始時には、状態は、0に等しく設定される。変換係数は、走査順(すなわち、エントロピー復号化された同じ順序)で再構成される。現在の変換係数を再構成した後、図10に示すように状態を更新する。ここで、kは、変換係数レベルの値を表す。
図10Aは、提案された依存量子化の状態遷移を説明する遷移図である。
図10Bは、提案された依存量子化のための量子化器選択を説明する表である。
デフォルトのスケーリング行列及びユーザ定義のスケーリング行列を信号で送信することもサポートされている。デフォルトモードスケーリング行列は、すべてフラットであり、すべてのTBサイズで要素が16に等しい。IBC及びイントラ符号化モードは、現在、同じスケーリング行列を共有している。したがって、ユーザ定義行列の場合、MatrixType及びMatrixType_DCの数の更新は、次の通りである。
MatrixType:30=2(2はイントラおよびIBC/インター用)×3(Y/CB/Cr成分)×5(正方形TBサイズ:輝度に対して4×4~64×64、彩度に対して2×2~32×32)
MatrixType_DC:14=2(2はイントラおよびIBC/インター用×1はY成分用)×3(TBサイズ:16×16、32×32、64×64)+4(2はイントラおよびIBC/インター用×2はCB/Cr成分用)×2(TBサイズ:16×16、32×32)
DC値は、以下のスケーリング行列16×16、32×32、64×64に対してそれぞれ符号化される。サイズが8×8未満のTBの場合、スケーリング行列内のすべての要素を信号で送信する。TBのサイズが8×8以上の場合、8×8スケーリング行列内の64要素のみを信号で送信してベーススケーリング行列とする。8×8より大きいサイズの正方形行列を得るために、8×8ベーススケーリング行列を対応する正方形寸法(すなわち16×16、32×32、64×64)に(要素のコピーによる)アップサンプリングをする。64点変換用の高周波係数のゼロ復帰を適用すると、スケーリング行列の対応する高周波もゼロになる。すなわち、TBの幅または高さが32以上であれば、係数の左半分または上半分のみが保持され、残りの係数にゼロが割り当てられる。また、64×64スケーリング行列に対して信号で送信される要素の数も、8×8から3つの4×4サブ行列に減らされる。これは、右下4×4要素が使用されていないためである。
変換係数符号化復号化のためのコンテキストモデリング
変換係数レベルの絶対値に関連する構文要素の確率モデルの選択は、局所近傍における絶対レベルまたは部分再構成の絶対レベルの値に依存する。使用されるテンプレートを図11に示す。
図11は、確率モデルを選択するためのテンプレートの図を示す。黒い正方形は、現在の走査位置を指定し、「x」を持つ正方形は、使用される局所近傍を表す。
選択される確率モデルは、局所近傍における絶対レベル(または部分再構成の絶対レベル)の合計と、局所近傍における0より大きい絶対レベルの数(1に等しいsig_coeff_flagsの数によって与えられる)に依存する。コンテキストモデリングと2値化は、局所近傍に関する次のメトリックに依存する。
numSig:局所近傍における非ゼロレベルの数
sumAbs1:局所近傍における第1のパスの後の部分再構成の絶対レベル(absLevel1)の合計
sumAbs:局所近傍における再構成の絶対レベルの合計
対角線位置(d):変換ブロック内の現在の走査位置の水平座標と垂直座標の合計。
numSig、sumAbs1およびdの値に基づいて、sig_coeff_flag、abs_level_gt1_flag、par_level_flagおよびabs_level_gt3_flagを符号化するための確率モデルを選択する。sumAbs及びnumSigの値に基づいて、abs_remainder及びdec_abs_levelの2値化のためのライスパラメータを選択する。
現在のVVCでは、減少した32点MTS(RMTS32とも呼ばれる)は、高周波係数スキップに基づいており、32点DST-7/DCT-8の計算複雑度を低減するために使用される。そして、それは、すべてのタイプのゼロ復帰(すなわち、RMTS32およびDCT2における高周波成分の既存のゼロアウト)を含む係数符号化変化を伴う。具体的には、最後非ゼロ係数位置符号化の2値化は、低減されたTUサイズに基づいて符号化され、最後非ゼロ係数位置符号化のためのコンテキストモデル選択は、元のTUサイズによって決定される。また、60のコンテキストモデルを用いて変換係数のsig_coeff_flagを符号化する。コンテキストモデルインデックスの選択は、以下のように、locSumAbsPass1と呼ばれる最大5つの以前の部分再構成の絶対レベルの合計および依存量子化状態QStateに基づく。
cIdx=0の場合、次のようにctxIncを導出する。
ctxInc=12×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?8:(d<5?4:0))
ctxInc=12×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?8:(d<5?4:0))
そうでなければ(cIdxが0より大きい)、次のようにctxIncを導出する。
ctxInc=36+8×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
ctxInc=36+8×Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
パレットモード
パレットモードの背後にある基本的な考え方は、CU内のサンプルが代表的なカラー値のセットによって表されることである。このセットは、パレットと呼ばれる。パレットから除外されたカラー値をエスケープカラーとして信号で送信することにより、パレットから除外されたカラー値を示すこともでき、3つの色成分の値をビットストリームで直接信号で送信する。これを図12に示す。
図12は、パレットモードで符号化されるブロックの例を示す図である。図12は、パレットモードで符号化されたブロック1210及びパレット1220とを含む。
図12において、パレットサイズは、4である。最初の3つのサンプルは、それぞれパレットエントリ2、0、3を使用して再構築される。青色サンプルは、エスケープシンボルを表す。CUレベルフラグpalette_escape_val_present_flagは、CU内にエスケープシンボルが存在するか否かを示す。エスケープシンボルが存在する場合、パレットサイズは、1だけ増加し、最後のインデックスは、エスケープシンボルを示すために使用される。したがって、図12では、インデックス4は、エスケープシンボルに割り当てられる。
パレットで符号化されたブロックを復号するために、デコーダは、以下の情報を持つ必要がある。
パレットテーブル
パレットインデックス
パレットインデックスがエスケープシンボルに対応する場合、サンプルの対応するカラー値を示すために、追加のオーバーヘッドを信号で送信する。
また、エンコーダ側では、CUとともに使用される適切なパレットを導出する必要がある。
ロッシー符号化のためのパレットを導出するために、修正されたk平均クラスタアルゴリズムを使用する。ブロックの第1のサンプルをパレットに追加する。次に、当該ブロックからの次の各サンプルについて、サンプルと各々の現在のパレットカラーとの絶対差の和(SAD)を計算する。成分内の各成分の歪みが、最小SADに対応するパレットエントリの閾値未満である場合、そのパレットエントリに属するクラスタに当該サンプルを追加する。そうでなければ、新しいパレットエントリとしてそのサンプルを追加する。クラスタにマップされたサンプルの数が閾値を超えると、そのクラスタの中心が更新され、そのクラスタのパレットエントリになる。
次の手順では、使用する降順にクラスタをソートする。次に、各エントリに対応するパレットエントリを更新する。通常、クラスタ中心は、パレットエントリとして使用される。しかし、パレットエントリを符号化するコストを考慮すると、レート歪み解析を実行して、パレット予測因子からのエントリが、中心ではなく、更新されたパレットエントリとして使用するのに適している可能性があるか否かを分析する。すべてのクラスタが処理されるか、最大パレットサイズに達するまでプロセスを続行する。最後に、クラスタが単一のサンプルのみを持ち、対応するパレットエントリがパレット予測因子に含まれていない場合、そのサンプルをエスケープシンボルに変換する。また、繰り返しのパレットエントリを除去し、それらのクラスタをマージする。
パレットの導出後、ブロック内の各サンプルには、(SAD内)最も近いパレットエントリのインデックスが割り当てられる。次に、「INDEX」または「COPY_ABOVE」モードにサンプルを割り当てる。各サンプルについて、「INDEX」モードまたは「COPY_ABOVE」モードがある。そして、モードを符号化するコストを計算する。低コストのモードを選択する。
パレットエントリを符号化するために、パレット予測因子を維持する。SPSではパレットの最大サイズ及びパレット予測因子を信号で送信する。パレット予測因子は、各CTU行、各スライスおよび各タイルの開始点で初期化される。
パレット予測因子の各エントリについて、現在のパレットの一部であるか否かを示す再使用フラグが信号で送信される。これを図13に示す。
図13は、パレット予測因子を使用してパレットエントリを信号で送信することを示す図である。図13は、以前のパレット1310及び現在のパレット1320を含む。
ゼロのランレングス符号化によって再使用フラグを送信する。その後、0次指数ゴロムコードを用いて新しいパレットエントリの数を信号で送信する。最後に、新しいパレットエントリのための成分値を信号で送信する。
図14Aおよび図14Bに示すように、水平トラバース走査および垂直トラバース走査を用いてパレットインデックスを符号化する。palette_transpose_flagを用いてビットストリームで走査順を明示的に信号で送信する。
図14Aは、水平トラバース走査を示す図である。
図14Bは、垂直トラバース走査を示す図である。
パレットインデックスを符号化するために、トラバース走査モードに基づいてCUを16のサンプルを有する複数のセグメントに分割する線係数グループ(CG)に基づくパレットモードが使用される。図15Aおよび図15Bに示すように、各CGに対して、エスケープモードのためのインデックスラン、パレットインデックス値および量子化された色を順次符号化/解析する。
図15Aは、パレットのためのサブブロックベースのインデックスマップ走査を示す図である。
図15Bは、パレットのためのサブブロックベースのインデックスマップ走査を示す図である。
2つのメインパレットサンプルモードの「INDEX」または「COPY_ABOVE」を用いてパレットインデックスを符号化する。先に説明したように、エスケープシンボルには、最大パレットサイズに等しいインデックスが割り当てられる。「COPY_ABOVE」モードでは、上の行のサンプルのパレットインデックスをコピーする。「INDEX」モードでは、パレットインデックスを明示的に信号で送信する。各セグメントにおけるパレットラン符号化のための符号化順は、次のとおりである。
各画素に対して、コンテキスト符号化された2進数字run_copy_flag=0を信号で送信する。run_copy_flag=0は、画素には以前の画素と同じモード(すなわち、以前に走査された画素と現在の画素とは、ともにランタイプCOPY_ABOVEを有するか、または以前に走査された画素と現在の画素とは、ともにランタイプINDEXを有するか)と、同じインデックス値を有するか否かを示す。そうでなければ、run_copy_flag=1を信号で送信する。
画素には以前の画素と異なるモードを有する場合、その画素のランタイプ(すなわち、INDEXまたはCOPY_ABOVE)を示すコンテキスト符号化された2進数字copy_above_palette_indices_flagを信号で送信する。サンプルが第1行(水平トラバース走査)にある場合、または第1列(垂直トラバース走査)にある場合、デコーダは、デフォルトでINDEXモードが使用されているため、ランタイプを解析する必要がない。また、以前に解析したランタイプがCOPY_ABOVEであれば、デコーダは、ランタイプを解析する必要がない。
1つのセグメント内の画素に対してパレットラン符号化をした後、INDEXモードのためのインデックス値(palette_idx_idc)と量子化されたエスケープカラー(palette_escape_val)に対してバイパス符号化をする。
1つのセグメント内の画素に対してパレットラン符号化をした後、INDEXモードのためのインデックス値(palette_idx_idc)と量子化されたエスケープカラー(palette_escape_val)に対してバイパス符号化をする。
残差および係数符号化復号化の改善
VVCでは、変換係数を符号化する際に、統一(同一)ライスパラメータ(RicePara)導出は、abs_remainder及びdec_abs_levelの構文を信号で送信することに使用される。唯一の違いは、ベースレベルbaseLevelを4と0に設定して、abs_remainder及びdec_abs_levelをそれぞれ符号化することにある。ライスパラメータは、次のように、局所テンプレート内の隣接する5つの変換係数の絶対レベルの合計に基づいているだけでなく、対応するベースレベルに基づいて決定される。
RicePara=RiceParTable[max(min(31,sumAbs-5×baseLevel),0)]
言い換えれば、隣接係数のレベル情報に基づいて、構文要素abs_remainderとdec_abs_levelのバイナリコードワードを適応的に決定する。このコードワードの決定がサンプル毎に実行されるので、係数符号化のためのコードワード適応を処理するために追加の論理が必要である。
同様に、変換スキップモードで残差ブロックを符号化する場合、隣接する残差サンプルのレベル情報に基づいて、構文要素abs_remainderのバイナリコードワードを適応的に決定する。
さらに、残差符号化復号化または変換係数符号化に関連する構文要素を符号化する場合、確率モデルの選択は、隣接するレベルのレベル情報に依存し、これには、追加の論理と追加のコンテキストモデルが必要である。
現在の設計では、エスケープサンプルの2値化は、3次指数ゴロム2値化プロセスを呼び出すことによって導出される。さらに性能を改善するスペースもある。
現在のVVCでは、2つの異なるレベルマッピングスキームが使用可能であり、通常の変換と変換スキップにそれぞれ適用される。各レベルマッピングスキームは、異なる条件、マッピング関数およびマッピング位置に関連する。通常の変換が適用されるブロックは、コンテキスト符号化された2進数字(CCB)の数が制限を超えた後にレベルマッピングスキームが使用される。ZeroPos[n]として表されるマッピング位置とAbsLevel[xC][yC]として表されるマッピング結果は、表2で指定したように導出される。変換スキップを適用するブロックは、コンテキスト符号化された2進数字(CCB)の数が制限を超える前に別のレベルマッピングスキームが使用される。PredCoeffとして表されるマッピング位置とAbsLevel[xC][yC]として表されるマッピング結果は、表5に指定されているように導出される。標準化の観点から見ると、このような非統一的な設計は、最適ではないかもしれない。
HEVC中の10ビットを超えるプロファイルについて、extended_precision_processing_flag=1は、係数解析および逆変換処理に拡張ダイナミックレンジを用いることを指定する。現在のVVCでは、10ビット以上の変換係数のための残差符号化復号化または変換スキップ符号化は、性能が著しく低下した理由として報告されている。さらに性能を改善するスペースもある。
提案された方法
本開示では、残差および係数の符号化の改善部分で言及された問題を解決するためのいくつかの方法が提案されている。以下の方法は、独立してまたは連合して適用することができることに留意すべきである。
本開示の第1の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder)を固定バイナリコードワードセットを用いて符号化することが提案されている。バイナリコードワードは、異なる方法を用いて形成することができる。いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(例えば、1、2または3)が常に選択される。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
本開示の第2の態様によれば、変換係数符号化における特定の構文要素(例えば、abs_remainderおよびdec_abs_level)を固定コードワードセットを用いて符号化することが提案されている。バイナリコードワードは、異なる方法を用いて形成することができる。いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderおよびdec_abs_levelのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ、例えば1、2または3が選択される。現在のVVCで使用されているabs_remainderおよびdec_abs_levelは、baseLevelの値が依然として異なることができる。(例えば、baseLevelは、abs_remainderとdec_abs_levelをそれぞれ符号化するために4と0に設定される。)
第2に、現在のVVCで使用されているものと同じであって、abs_remainderおよびdec_abs_levelのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ、例えば1、2または3が選択される。abs_remainderおよびdec_abs_levelのためのbaseLevelの値は、同じに選択される。例えば、両者とも0を使用するか、両者とも4を使用する。
第3に、固定長の2値化。
第4に、切り詰められたライス2値化。
第5に、切り詰められたバイナリ(TB)2値化プロセス。
第6に、k次指数ゴロム2値化プロセス(EGK)。
第7に、有限k次指数ゴロム2値化。
本発明の第3の態様によれば、残差符号化復号化または係数符号化に関連する構文要素(例えば、abs_level_gtx_flag)を単一コンテキストで符号化し、隣接復号レベル情報に基づくコンテキスト選択を除去できることが提案されている。
本開示の第4の態様によれば、可変バイナリコードワードセットで残差符号化復号化における特定の構文要素(例えばabs_remainder)を符号化し、現在のブロックの特定の符号化情報(例えばTB/CBおよび/またはスライスに関連する量子化パラメータ(QP)、CUの予測モード(例えばIBCモードまたはイントラまたはインター)および/またはスライスタイプ(例えばIスライス、PスライスまたはBスライス))に基づいて、バイナリコードワードセットの選択を決定することが提案されている。異なる方法を使用してバイナリコードワードの変数セットを導出することができ、その中のいくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、異なるライスパラメータが使用される。
第2に、k次指数ゴロム2値化プロセス(EGK)。
第3に、有限k次指数ゴロム2値化。
第4の態様で説明した同様の方法は、変換係数符号化にも適用可能である。本開示の第5の態様によれば、バイナリコードワードの変数セットで変換係数符号化における特定の構文要素(例えば、abs_remainderおよびdec_abs_level)を符号化し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライスに関連する量子化パラメータ(QP)、CUの予測モード(例えばIBCモードまたはイントラまたはインター)および/またはスライスタイプ(例えばIスライス、PスライスまたはBスライス))に基づいて、バイナリコードワードセットの選択を決定することが提案されている。同様に、バイナリコードワードの変数セットを導出するために異なる方法を使用することができ、そのいくつかの例示的な方法は、以下のようになる。
第1に、現在のVVCで使用されているプロセスと同じであって、abs_remainderのためのコードワードを決定するためのものが使用されるが、異なるライスパラメータが使用される。
第2に、k次指数ゴロム2値化プロセス(EGK)。
第3に、有限k次指数ゴロム2値化。
上記のような方法では、異なるライスパラメータで異なるバイナリコードワードセットを導出することができる。残差サンプルの所与のブロックについて、使用されるライスパラメータは、隣接レベル情報ではなくCU QP(QPCUとして表される)に基づいて決定される。表6に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表6に示すように、現在のCUのQP値に基づいて同じライスパラメータを導出することもできる。
本開示の第5の態様によれば、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、2値化コードワードとして使用される。
パラメータおよび/または閾値のセットは、構文要素のコードワード決定に関連するすべてのパラメータおよび閾値の完全なセットまたはサブセットであってもよいことに留意されたい。前記パラメータおよび/または閾値のセットは、ビデオビットストリームで異なるレベルで信号で送信されてもよい。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)、画像レベル(例えば、画像パラメータセットおよび/または画像ヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化木ユニット(CTU)レベルまたは符号化ユニット(CU)レベルで信号で送信される。
一例では、スライスヘッダ、画像ヘッダ、PPSおよび/またはSPSでライスパラメータを信号で送信する。ここで、当該ライスパラメータは、変換スキップ残差符号化復号化においてabs_remainder構文の符号化を行うためのコードワードを決定するために用いられる。CUが変換スキップモードに符号化され、かつCUが上述のスライスヘッダ、画像ヘッダ、PPSおよび/またはSPSなどに関連する場合、信号で送信されるライスパラメータは、構文abs_remainderの符号化を行うためのコードワードを決定するために用いられる。
本開示の第6の態様によれば、第1および第2の態様で説明したコードワード決定に関連するパラメータおよび/または閾値のセットは、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素に用いられる。また、現在のブロックが輝度残差/係数または彩度残差/係数を含むか否かに応じて異なるセットを使用することができる。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、バイナリコードワードとして使用される。
一例では、現在のVVCで使用されている変換残差符号化復号化に関連するabs_remainderに用いられるコードワードは、輝度ブロックと彩度ブロックの両方に使用されるが、輝度ブロックと彩度ブロックでは、それぞれ異なる固定ライスパラメータが使用される。(例えば、K1は、輝度ブロック用であり、K2は、彩度ブロック用である。ここでK1及びK2は、整数である。)
本開示の第7の態様によれば、変換係数符号化および/または変換スキップ残差符号化復号化の構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。また、輝度ブロックと彩度ブロックに対して異なるセットを信号で送信することができる。エントロピーエンコーダによって構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、2値化コードワードとして使用される。
上記で説明した同様の方法は、例えばpalette_escape_valのように、パレットモードにおけるエスケープ値の符号化にも適用可能である。
本開示の第8の態様によれば、パレットモードでエスケープ値を符号化するための異なるバイナリコードワードのセットを、異なるk次指数ゴロム2値化で導出することができる。一例では、エスケープサンプルの所与のブロックについて、当該ブロックのQP値(QPCUとして表される)に基づいて、使用される指数ゴロムパラメータ(すなわち、kの値)を決定する。表6に示すような同じ例を用いて、ブロックの所与のQP値に基づいてパラメータkの値を導出することができる。この例では4つの異なる閾値(TH1~TH4)がリストされているが、これらの閾値とQPCUに基づいて5つの異なるk値(K0~K4)を導出することができる。特に、閾値の数は、説明の目的のためだけに使用される。実際には、異なる数の閾値を使用してQP値範囲全体を異なる数のQP値セグメントに分割し、各QP値セグメントについて、パレットモードで符号化されたブロックのエスケープ値を符号化するための対応するバイナリコードワードを異なるk値を使用して導出することができる。また、実際には同じ論理を異なるように実施することができることにも注目すべきである。例えば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することができる。
本開示の第9の態様によれば、エスケープサンプルの構文要素のためのコードワード決定に関連するパラメータおよび/または閾値のセットが信号でビットストリームに送信される。エントロピーエンコーダによってエスケープサンプルの構文要素を符号化(例えば算術符号化)する場合、決定されたコードワードは、バイナリコードワードとして使用される。
パラメータおよび/または閾値のセットは、構文要素のためのコードワード決定に関連するすべてのパラメータおよび閾値の完全なセットまたはサブセットであってもよいことに留意されたい。前記パラメータおよび/または閾値のセットは、ビデオビットストリームで異なるレベルで信号で送信されてもよい。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)、画像レベル(例えば、画像パラメータセットおよび/または画像ヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化木ユニット(CTU)レベルまたは符号化ユニット(CU)レベルで信号で送信される。
前記態様による一例では、パレットモードでpalette_escape_val構文を符号化するためのコードワードをK次指数ゴロム2値化で決定し、ビットストリームにおいてkの値をデコーダに信号で送信する。kの値は、異なるレベルで信号で送信されてもよく、例えば、スライスヘッド、画像ヘッド、PPSおよび/またはSPSなどで信号で送信される。CUがパレットモードに符号化され、かつCUが上述したスライスヘッダ、画像ヘッダ、PPSおよび/またはSPSなどに関連する場合、構文palette_escape_valを符号化するためのコードワードを、信号で送信される指数ゴロムパラメータで決定する。
変換スキップモード及び通常変換モードのためのレベルマッピングの協調
本開示の第10の態様によれば、レベルマッピングを適用するための同じ条件は、変換スキップモード及び通常変換モードの両方に使用される。一例では、コンテキスト符号化された2進数字(CCB)の数が変換スキップモード及び通常変換モードの両方に対する制限を超えた後にレベルマッピングを適用することが提案されている。別の例では、コンテキスト符号化された2進数字(CCB)の数が変換スキップモード及び通常変換モードの両方に対する制限を超える前にレベルマッピングを適用することが提案されている。
本開示の第11の態様によれば、レベルマッピングにおけるマッピング位置を導出するための同じ方法は、変換スキップモード及び通常変換モードの両方に使用される。一例では、変換スキップモードで使用されるレベルマッピングにおけるマッピング位置の導出方法を通常変換モードにも適用することが提案されている。別の例では、通常変換モードで使用されているレベルマッピングにおけるマッピング位置の導出方法を変換スキップモードにも適用することが提案されている。
本開示の第12の態様によれば、変換スキップモード及び通常変換モードの両方に同じレベルマッピング方法を適用する。一例では、変換スキップモードで使用されるレベルマッピング関数を通常変換モードにも適用することが提案されている。別の例では、通常変換モードで使用されるレベルマッピング関数を変換スキップモードにも適用することが提案されている。
残差符号化復号化におけるライスパラメータ導出の簡略化
本開示の第13の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際に、ルックアップテーブルではなく単純な論理(シフトや除算など)でライスパラメータを導出することが提案されている。本開示によれば、表4で指定したルックアップテーブルを削除することができる。一例では、ライスパラメータcRiceParamは、cRiceParam=(locSumAbs>> n)として導出される。ここでnは、正の数、例えば3である。注目すべきことに、実際には、2のn乗に等しい値の除算演算など、他の異なる論理を使用して同じ結果を実施することができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が削除線付きの斜体フォントで示されている。
本開示の第14の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、より少ない隣接位置を使用してライスパラメータを導出することが提案されている。一例では、abs_remainder/dec_abs_levelの構文要素を符号化する際には、2つの隣接位置だけを使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
別例では、abs_remainder/dec_abs_levelの構文要素を符号化する際には、1つの隣接位置だけを使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第15の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、baseLevelの値に基づいて異なる論理を使用してlocSumAbsの値を調整し、ライスパラメータを導出することが提案されている。一例では、「(locSumAbs-baseLevel×5)×alpha+Beta」という形式で追加のスケーリングとオフセット操作を適用する。alphaが1.5の値をとり、Betaが1の値をとると、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本発明の第16の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、トリミング操作を除去してライスパラメータを導出することが提案されている。本開示によれば、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示によれば、VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第17の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、locSumAbsの初期値を0から非ゼロ整数に変更してライスパラメータを導出することが提案されている。一例では、初期値1をlocSumAbsに割り当てる。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第18の態様によれば、コロンブス・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際には、隣接位置レベル値の合計値ではなく、隣接位置レベル値の最大値を使用してライスパラメータを導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第19の態様によれば、ゴロム・ライスコードでabs_remainder/dec_abs_levelの構文要素を符号化する際に、隣接位置における各AbsLevel値とベースレベル値の相対幅に基づいてライスパラメータを導出することが提案されている。一例では、ライスパラメータは、隣接位置におけるAbsLevel値のうちベースレベルより大きいAbsLevel値の数に基づいて導出される。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
別の例では、ライスパラメータは、AbsLevel値がベースレベルより大きい隣接位置の(AbsLevel-BasLevel)値の合計に基づいて導出される。VVCドラフトに基づく対応する復号化プロセスを以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
VVCドラフトの復号化プロセスに関する一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
残差符号化復号化におけるレベルマッピング位置導出の簡略化
本開示の第20の態様によれば、ZeroPos[n]がcRiceParamのみに基づいて導出されるように、ZeroPos[n]の導出からQStateを除去することが提案されている。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、変更された内容がが太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第21の態様によれば、locSumAbsの値に基づいてZeroPos[n]を導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第22の態様によれば、隣接位置のAbsLevelの値に基づいてZeroPos[n]を導出することが提案されている。一例では、AbsLevel[xC+1][yC]およびAbsLevel[xC][yC+1]の最大値に基づいてZeroPos[n]を導出する。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
本開示の第23の態様によれば、隣接位置のすべてのAbsLevel値の最大値に基づいてcRiceParam及びZeroPos[n]の両方を導出することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。
上記で説明した同様の方法は、変換スキップモードのための残差符号化復号化におけるPredCoeffの導出にも適用できる。一例では、変数PredCoeffは、次のように導出される。
PredCoeff=Max(absLeftCoeff,absAboveCoeff)+1
変換係数のための残差符号化復号化
本開示では、「残差および係数符号化の改善」の部分で指摘された問題を解決するために、残差符号化復号化の既存の設計を簡略化および/またはさらに改善する方法を提供する。通常、本開示で提案された技術の主な特徴は、以下のようにまとめられる。
第1に、現在の設計に基づいて、通常残差符号化復号化で使用されるライスパラメータ導出を調整する。
第2に、通常残差符号化復号化で使用されるバイナリ方法を変更する。
第3に、通常残差符号化復号化で使用されるライスパラメータ導出を変更する。
現在の設計に基づく残差符号化復号化におけるライスパラメータ導出
本開示の第24の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をライスパラメータ導出の変形方法で符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、cRiceParam=(cRiceParam<<a)+(cRiceParam>>b)+c。ここでa、b、cは、正数であり、例えば、{a,b,c}={1,1,0}。注目すべきことに、実際には、同じ結果を、例えば2のn乗に等しい値の乗算など、他の異なる論理を使用して実施することができる。
第2に、cRiceParam=(cRiceParam<<a)+b。ここでa及びbは、正数であり、例えば、{a,b}={1,1}。注目すべきことに、実際には、同じ結果、例えば2のn乗に等しい値を乗算するなど、他の異なる論理を使用して実施することができる。
第3に、cRiceParam=(cRiceParam×a)+b。ここでa及びbは、正の数であり、例えば、{a,B}={1.5,0}。注目すべきことに、実際には、同じ結果、例えば2のn乗に等しい値の乗算など、他の異なる論理を使用して実施することができる。
VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更を太字と斜体で表22に示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、cRiceParam=(cRiceParam<<a)+(cRiceParam>>b)+cと導出され、ここでa、b、cは、正の数、例えば1である。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表23に太字と斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
10ビットを超えるプロファイルのための残差符号化復号化におけるバイナリ方法
本開示の第25の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をバイナリコードワード変数セットで符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。バイナリコードワード変数セットを導出するために、異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(たとえば、2、3、4、5、6、7または8)が常に選択される。固定値は、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する構文要素(例えば、rice_Parameter_value)に応じて、異なる条件下で異なることができる。表24に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表24に示すように、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
一例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、正数(例えば、2、3、4、5、6、7または8)である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表25に太字と斜体フォントで示されている。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、abs_remainder/dec_abs_levelの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトの変化を表26に太字と斜体で示す。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、4、5、6、7または8などの正数である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15、または16)である。VVCドラフトへの変更は、表27に太字と斜体フォントで示し、削除内容を斜体フォントで示している。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)よりも大きい場合、abs_remainder/dec_abs_levelの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15または16)であり、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表28に太字と斜体フォントで示されている。
残差符号化復号化におけるライスパラメータ導出
本開示の第26の態様によれば、残差符号化復号化における特定の構文要素(例えば、abs_remainder/dec_abs_level)をライスパラメータ導出の変形方法で符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。
第1に、ライスパラメータを導出するためにカウンタを使用することが提案されている。カウンタは、現在のブロックの符号化係数の値および特定の符号化情報(例えば、成分ID)に基づいて決定される。具体例として、riceParameter=counter/aであり、ここでaは、正数、例えば4であり、2つのカウンタ(輝度/彩度で分割)を維持する。これらのカウンタは、各スライスの開始点で0にリセットされる。符号化が行われると、サブTUで符号化された最初の係数である場合、カウンタは、次のように更新される。
if (coeffValue >= (3 << rice)) counter++
if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--。
if (coeffValue >= (3 << rice)) counter++
if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--。
第2に、VVCにおけるライスパラメータ導出にシフト動作を追加することが提案されている。シフトは、符号化係数の値に基づいて決定される。VVCドラフトに基づく対応する復号処理の例を以下に示し、方法1のカウンタにしたがってシフトが決定され、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表29に太字と斜体フォントで示されている。
第3に、VVCにおけるライスパラメータ導出にシフト動作を追加することが提案されている。シフトは、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイル(例えば、14ビットプロファイルまたは16ビットプロファイル)に関連する符号化ビット深度)に基づいて決定される。VVCドラフトに基づく対応する復号処理の例を以下に示し、方法1のカウンタにしたがってシフトが決定され、変更された内容は、太字と斜体フォントで示され、削除された内容は、斜体フォントで示される。VVCドラフトへの変更は、表30に太字と斜体フォントで示されている。
変換スキップのための残差符号化復号化
本開示の第27の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)をバイナリコードワード変数セットで符号化し、そして、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、extended_precision_processing_flag)に基づいて選択を決定することが提案されている。可変バイナリコードワード変数セットを導出するために、異なる方法を使用することができ、いくつかの例示的な、方法は以下の通りである。
第1に、現在のVVCで使用されているものと同じであって、abs_remainderのためのコードワードを決定するためのプロセスが使用されるが、固定されたライスパラメータ(たとえば、2、3、4、5、6、7または8)が常に選択される。固定値は、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータ、フレームタイプ(例えば、I、PまたはB)、成分ID(例えば、輝度または彩度)、色フォーマット(例えば、420、422、444)、または符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する構文要素(例えば、rice_Parameter_value)に応じて、異なる条件で異なることができる。表7に示すように、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす予め定められた閾値であり、K0~K4は予め定められたライスパラメータである具体例を示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。例えば、いくつかの等式またはルックアップテーブルを使用して、表7に示すように、現在のCU/シーケンスのビット深度値に基づいて同じライスパラメータを導出することもできる。
第2に、固定長の2値化。
第3に、切り詰められたライス2値化。
第4に、切り詰められたバイナリ(TB)2値化プロセス。
第5に、k次指数ゴロム2値化プロセス(EGK)。
第6に、有限k次指数ゴロム2値化。
VVCドラフトに基づく対応する復号処理の例を以下に示し、VVCドラフトへの変更は、表31に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、abs_remainderの構文要素を符号化する際には、ライスパラメータのための1つの固定値だけを使用することが提案されている。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表32に太字と斜体フォントで示されている。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合、ライスパラメータcRiceParamは、nに固定され、ここでnは、正数(例えば、2、3、4、5、6、7または8)である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの一例を以下に示し、変更された内容が太字および斜体フォントで示され、削除された内容が斜体フォントで示されている。VVCドラフトへの変更は、表33に太字と斜体フォントで示されている。
別の例では、BitDepthが予め定められた閾値(例えば、10、11、12、13、14、15または16)以上である場合、ライスパラメータcRiceParamは、Nに固定され、ここでNは、4、5、6、7または8などの正数である。固定値は、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた閾値(例えば、10、11、12、13、14、15または16)であり、変更された内容は、太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表34に太字と斜体フォントで示されている。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)であり、変更された内容は、太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。VVCドラフトへの変更は、表35に太字と斜体フォントで示されている。注目すべきは、sh_ts_residual_coding_rice_indexは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダ構文
sh_ts_residual_coding_rice_flag=1は、sh_ts_residual_coding_rice_indexが現在のスライスに存在することができることを指定する。sh_ts_residual_coding_rice_flag=0は、sh_ts_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。sh_ts_residual_coding_rice_flagが存在しない場合、sh_ts_residual_coding_rice_flagの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをシーケンスパラメータセット(またはシーケンスパラメータセット範囲拡張構文)内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素をさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表37に太字と斜体フォントで示され、削除された内容は、削除線で示されている。注目すべきは、sh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
シーケンスパラメータセットRBSP構文
sps_ts_residual_coding_rice_present_in_sh_flag=1は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_ts_residual_coding_rice_present_in_sh_flag=0は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。sps_ts_residual_coding_rice_present_in_sh_flagが存在しない場合、sps_ts_residual_coding_rice_present_in_sh_flagの値は、0に等しいと推定される。
スライスヘッダ構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、変換スキップスライスごとに、当該スライスのライスパラメータを示す構文要素を信号送信する。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。VVCドラフトへの変更は、表40に太字と斜体フォントで示されている。注目すべきは、sh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダ構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグを画像パラメータセット範囲拡張構文内で信号送信する。有効にするとして制御フラグが信号送信されると、当該画像のライスパラメータを示すための構文要素がさらに信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素をさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば1)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表42に太字と斜体フォントで示されている。注目すべきは、pps_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
画像パラメータセット範囲拡張構文
pps_ts_residual_coding_rice_flag=1は、pps_ts_residual_coding_rice_indexが現在の画像に存在することができることを指定する。pps_ts_residual_coding_rice_flag=0は、pps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。pps_ts_residual_coding_rice_flagが存在しない場合、pps_ts_residual_coding_rice_flagの値は、0に等しいと推定される。
pps_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。
別の例では、可変ライスパラメータのみで構文要素abs_remainderを符号化することが提案されている。適用されるライスパラメータの値は、現在のブロックの特定の符号化情報(例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなど)に基づいて決定される。特定の実施例では、符号化ビット深度と、CUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示し、VVCドラフトへの変更を表44に太字および斜体フォントで示し、削除された内容を斜体フォントで示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
さらに別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば33または34)である。VVCドラフトへの変更は、表45に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示す。ここでTHAおよびTHBは、予め定められた閾値(例えば、THA =8、THB =33または34)である。VVCドラフトへの変更は、表46に太字および斜体フォントで示され、削除された内容は、斜体フォントで示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、新しいフラグ(例えば、extended_precision_processing_flag)が1に等しい場合に可変ライスパラメータのみでabs_remainderの構文要素を符号化することが提案されている。可変値は、現在のブロックの特定の符号化情報(例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなど)に基づいて決定される。特定の実施例では、符号化ビット深度と、CUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案されている。VVCドラフトに基づく対応する復号化プロセスを以下に示す。VVCドラフトへの変更は、表47に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば18、19)である。VVCドラフトへ変更を表48に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更を表49に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
図16は、ビデオ符号化のための方法を示す。この方法は、例えばエンコーダに適用することができる。ステップ1610において、エンコーダは、ビデオ入力を受信することができる。例えば、ビデオ入力は、ライブストリームであってもよい。ステップ1612において、エンコーダは、ビデオ入力に基づいて量子化パラメータを取得することができる。例えば、量子化パラメータは、エンコーダ内の量子化ユニットによって計算することができる。ステップ1614において、エンコーダは、少なくとも1つの予め定められた閾値、符号化ビット深度、量子化パラメータに基づいてライスパラメータを導出することができる。例えば、ライスパラメータは、abs_remainder及びdec_abs_levelの構文を信号送信するために使用される。ステップ1616において、エンコーダは、ライスパラメータに基づいてビデオビットストリームをエントロピー符号化することができる。例えば、ビデオビットストリームをエントロピー符号化して圧縮ビデオビットストリームを生成することができる。
別の例では、BitDepthが10よりも大きい場合、abs_remainderの構文要素を符号化する際には、ライスパラメータのための固定値(例えば、2、3、4、5、6、7または8)のみが使用されることが提案されている。固定値は、現在のブロックの特定の符号化情報(例えば量子化パラメータ)に基づいて、異なる条件で異なることができる。VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、18、19)である。VVCドラフトへの変更は、表50に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更を表51に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、33または34)であることを示す。VVCドラフトへの変更は、表52に太字と斜体で示されている。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THAおよびTHBが予め定められた閾値(例えば、THA=8、THB=33または34)である。VVCドラフトへの変更を表53に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
上述の説明では、特定のライスパラメータを計算するための等式は、提案されたアイデアを説明するための例としてのみ使用されることに注目すべきである。今のビデオ符号化技術の技術者にとって、他のマッピング関数(または等価マッピング等式)は、提案されたアイデア(すなわち、符号化ビットと適用された量子化パラメータに基づいて変換スキップモードのライスパラメータを決定する)に適用されている。また、現在のVVC設計では、適用される量子化パラメータの値を符号化ブロックのグループレベルで変更することができることにも言及すべきである。したがって、提案されたライスパラメータ調整スキームは、符号化ブロックのグループレベルで変換スキップモードのライスパラメータの柔軟な適応を提供することができる。
通常残差符号化復号化および変換スキップ残差符号化復号化のためのシグナリング情報
本開示の第28の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)を符号化するためのバイナリコードワードのライスパラメータ、通常残差符号化復号化におけるabs_remainder/dec_abs_levelのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを信号送信し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、sps_residual_coding_info_present_in_sh_flag)に基づいて信号送信するか否かを決定することが提案されている。
一例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、変換スライスのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての変換スライスにデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表54に太字と斜体フォントで示されている。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_indexは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
図17は、ビデオ符号化のための方法を示す。この方法は、例えばエンコーダに適用することができる。ステップ1710において、エンコーダは、ビデオ入力を受信することができる。ステップ1712において、エンコーダは、構文要素符号化のためのバイナリコードワードのライスパラメータを信号送信することができる。構文要素符号化は、変換スキップ残差符号化復号化におけるabs_remainderを含むことができる。ステップ1714において、エンコーダは、ライスパラメータおよびビデオ入力に基づいてビデオビットストリームをエントロピー符号化することができる。
スライスヘッダ構文
sh_residual_coding_rice_flag=1は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_residual_coding_rice_indexが現在のスライスに存在することができることを指定する。sh_residual_coding_rice_flag=0は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。
sh_residual_coding_rice_shiftは、abs_remainder[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainder[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_indexは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグをシーケンスパラメータセット(またはシーケンスパラメータセット範囲拡張構文)内で信号送信する。有効にするとして制御フラグが信号送信されると、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素がさらに信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップスライスのためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、変換スライスのためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての変換スライスにデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表57に太字と斜体フォントで示されている。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい
シーケンスパラメータセットRBSPの構文
sps_residual_coding_info_present_in_sh_flag=1は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_residual_coding_info_present_in_sh_flag=0は、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。sps_residual_coding_info_present_in_sh_flagが存在しない場合、sps_residual_coding_info_present_in_sh_flagの値は、0に等しいと推定される。
スライスヘッダの構文
sh_residual_coding_rice_shiftは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップスライスごとに、当該スライスのライスパラメータを示すための構文要素が信号送信され、変換スライスごとに、さらにそのスライスのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。VVCドラフトへの変更を表61に太字と斜体で示す。注目すべきは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offsetおよびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
スライスヘッダの構文
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は、0に等しいと推定される。
sh_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は、0に等しいと推定される。
sh_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
別の例では、変換スキップブロックのためのライスパラメータの信号送信及び変換ブロック内のライスパラメータを導出するためのシフトおよび/またはオフセットパラメータの信号送信を有効にするかそれとも無効にするかを示す制御フラグを画像パラメータセット範囲拡張構文内で信号送信する。有効にするとして制御フラグが信号送信されると、当該画像の変換スキップ残差符号化復号化のためのライスパラメータを示すための構文要素がさらに信号送信され、さらにその画像の通常残差符号化復号化のためのライスパラメータを導出するためのシフトおよび/またはオフセットパラメータを示すための2つの構文要素が信号送信される。無効にする(たとえば、「0」に等しく設定されている)として制御フラグが信号送信されると、下位レベルでは、変換スキップ残差符号化復号化のためのライスパラメータを示すための構文要素がさらに信号送信されず、すべての変換スキップ残差符号化復号化にデフォルトのライスパラメータ(たとえば、1)が使用され、さらに、下位レベルでは、通常残差符号化復号化のためのライスパラメータを導出するためのシフトおよびオフセットパラメータを示すための構文要素が信号送信されず、すべての通常残差符号化復号化にデフォルトのシフトおよび/またはオフセットパラメータ(例えば0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示し、THが予め定められた値(例えば、0、1、2)である。VVCドラフトへの変更は、表64に太字と斜体フォントで示されている。注目すべきは、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができる。例えば、u(n)(nビットを使用する符号なし整数)またはf(n)(左ビットから(左から右へ)書き込まれるnビットを使用する固定パターンビット文字列)は、同じ構文要素を符号化/復号するために使用されてもよい。
画像パラメータセット範囲拡張構文
pps_residual_coding_info_flag=1は、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_indexが現在の画像に存在することができることを指定する。pps_residual_coding_info_flag=0は、pps_residual_coding_rice_shift、pps_residual_coding_rice_offsetおよびpps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。pps_residual_coding_info_flagが存在しない場合、pps_residual_coding_info_flagの値は、0に等しいと推定される。
pps_residual_coding_rice_shiftは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。pps_residual_coding_rice_shiftが存在しない場合、pps_residual_coding_rice_shiftの値は、0に等しいと推定される。
pps_residual_coding_rice_offsetは、abs_remainer[]とdec_abs_level[]のためのライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。pps_residual_coding_rice_offsetが存在しない場合、pps_residual_coding_rice_offsetの値は、0に等しいと推定される。
pps_ts_residual_coding_rice_idxは、residual_ts_coding()構文構造に使用されるライスパラメータを指定する。pps_ts_residual_coding_rice_indexが存在しない場合、pps_ts_residual_coding_rice_indexの値は、0に等しいと推定される。
本開示の第29の態様によれば、変換スキップ残差符号化復号化における特定の構文要素(例えば、abs_remainder)、通常残差符号化復号化におけるabs_remainder/dec_abs_levelに使用されるライスパラメータを導出するためのシフトおよびオフセットパラメータを異なるライスパラメータで符号化し、現在のブロックの特定の符号化情報(例えば、TB/CBおよび/またはスライス/プロファイルに関連する量子化パラメータまたは符号化ビット深度)および/またはTB/CB/スライス/画像/シーケンスレベルに関連する新しいフラグ(例えば、sps_residual_coding_info_present_in_shflag)に基づいて、どの構文要素を使用するかを決定することが提案されている。
一例では、変換スキップブロックのためのライスパラメータの導出プロセスおよび変換ブロック内のライスパラメータのためのシフトおよび/またはオフセットパラメータの導出プロセスを有効にするかそれとも無効にするかを示す制御フラグをスライスヘッダ内で信号送信する。有効にするとして制御フラグが信号送信されると、ライスパラメータは、現在のブロックの特定の符号化情報(例えば、量子化パラメータおよびビット深度)に応じて異なる条件で異なることができる。また、通常残差符号化復号化におけるライスパラメータを導出するためのシフトおよび/またはオフセットパラメータは、現在のブロックの特定の符号化情報(例えば、量子化パラメータおよびビット深度)に応じて異なる条件で異なることができる。無効として(たとえば、「0」に等しく設定されている)制御フラグが信号で送信される場合、すべての変換スキップスライスにデフォルトのライスパラメータ(たとえば、1)が使用され、すべての変換スライスにデフォルトのシフトパラメータおよび/またはオフセットパラメータ(たとえば、0)が使用される。VVCドラフトに基づく対応する復号化プロセスの例を以下に示す。ここで、THAおよびTHBは、予め定められた閾値(例えば、THA =8、THB =18または19)である。VVCドラフトへの変更を表67に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
スライスヘッダの構文
sh_residual_coding_rice_flag=1は、ビット深度に依存するライスパラメータ導出プロセスが現在のスライスで使用されることを指定する。sh_residual_coding_rice_flag=0は、ビット深度に関連するライスパラメータ導出プロセスを現在のスライスで使用しないことを指定する。
別の例では、VVCドラフトに基づく対応する復号化プロセスを以下に示し、THが予め定められた閾値(例えば、18、19)である。VVCドラフトへの変更を表70に太字と斜体で示す。注目すべきことは、実際には同じ論理を異なるように実施することができることである。たとえば、いくつかの等式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
本開示の別の態様によれば、上述のこれらの符号化ツールフラグの値に対する制約を追加することで、一般的制約情報における他の一般的制約制御と同じ一般的制約制御を提供することが提案されている。
例えば、sps_ts_residual_coding_rice_present_in_sh_flag=1は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在することができることを指定する。sps_ts_residual_coding_rice_present_in_sh_flag=0は、sh_ts_residual_coding_rice_idxが参照SPSのSH構文構造に存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_ts_residual_coding_rice_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
別の例では、pps_ts_residual_coding_rice_flag=1は、pps_ts_residual_coding_rice_indexが現在の画像に存在することができるを指定する。pps_ts_residual_coding_rice_flag=0は、pps_ts_residual_coding_rice_idxが現在の画像に存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_ts_residual_coding_rice_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
別の例では、sps_rice_adaptation_enabled_flag=1は、abs_remainder[]とdec_abs_levelの2値化のためのライスパラメータが式で導出できることを指定する。
この式は、RiceParam=RiceParam+ShiftValを含み、ShiftVal=(localSumAbs<Tx[ 0 ])?Rx[ 0 ]:((localSumAbs < Tx[ 1 ])?Rx[ 1 ]:((localSumAbs<Tx[ 2 ])?Rx[ 2 ]:((localSumAbs<Tx[ 3 ])?Rx[ 3 ]:Rx[4]))。ここでリストTx[]とRx[]は、以下のように指定される。Tx[]={321285122048}>>(1523)Rx[]={0、2、4、6、8}。
本開示によれば、一般的制約情報構文に構文要素gci_no_rice_adaptation_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
提案されたライスパラメータ適応スキームが変換スキップ残差符号化復号化(TSRC)にのみ使用されるため、提案された方法は、TSRCが有効になっている場合にのみ有効である。そこで、本開示の1つまたは複数の実施例では、一般的制約情報レベルに基づいて変換スキップモードが無効になった場合(例えば、gci_no_transform_skip_constraint_flagの値が1に設定されている場合)、gci_no_rice_adaptation_constraint_flagの値が1であることを求めるビットストリーム制約を追加する。
別の例では、sps_range_extension_flag=1は、sps_range_extension()構文構造がSPS RBSP構文構造に存在することを指定する。sps_range_extension_flag=0は、この構文構造が存在しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_range_extension_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトの復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図19は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ1902において、デコーダは、シーケンスパラメータセット(SPS)範囲拡張フラグを受信することができる。SPS範囲拡張フラグは、スライスヘッダ(SH)ローバイトシーケンスペイロード(RBSP)の構文構造に構文構造sps_range_extensionが存在するか否かを、SPS範囲拡張フラグの値に基づいて示す。
ステップ1904において、デコーダは、SPS範囲拡張フラグの値が1に等しいとの決定に応じて、SH RBSP構文構造にsps_range_extensionが存在すると決定することができる。
ステップ1906において、デコーダは、SPS範囲拡張フラグの値が0に等しいとの決定に応じて、SH RBSP構文構造にsps_range_extensionが存在しないと決定することができる。
別の例では、sps_cabac_bypass_alignment_enabled_flag=1は、構文要素sb_coded_flag[][]、abs_remaind[]、dec_abs_level[n]およびcoeff_sign_flag[]に対するバイパス復号の前にivlCurrRangeの値を整列することを指定する。sps_cabac_bypass_alignment_enabled_flag=0は、バイパス符号化の前にivlCurrRangeの値を整列しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_cabac_bypass_alignment_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図20は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2002において、デコーダは、シーケンスパラメータセット(SPS)整列有効化フラグを受信することができる。SPS整列有効化フラグは、構文要素sb_coded_flag、abs_remainder、dec_abs_levelおよびcoeff_sign_flagnのバイパス復号の前にインデックスivlCurrRangeが整列されるか否かを、SPS整列有効化フラグの値に基づいて示す。
ステップ2004において、SPS整列有効化フラグの値が1に等しいとの決定に応じて、デコーダは、バイパス復号の前にivlCurrRangeを整列すると決定することができる。
ステップ2006において、SPS整列有効化フラグの値が0に等しいとの決定に応じて、デコーダは、バイパス復号の前にivlCurrRangeを整列しないと決定することができる。
別の例では、extended_precision_processing_flag=1は、拡張ダイナミックレンジが変換係数および変換処理に用いることができることを指定する。extended_precision_processing_flag=0は、拡張ダイナミックレンジを使用しないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_extended_precision_processing_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供することが提案されている。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図21は、本開示の一例によるビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2102において、デコーダは、拡張精度処理フラグを受信することができる。拡張精度処理フラグは、変換係数について変換処理中に拡張ダイナミックレンジが使用されるか否かを、拡張精度処理フラグの値に基づいて示す。
ステップ2104において、拡張精度処理フラグの値が1に等しいとの決定に応じて、デコーダは、変換係数について変換処理中に拡張ダイナミックレンジが使用されると決定することができる。
ステップ2106において、拡張精度処理フラグの値が0であるとの決定に応じて、デコーダは、変換係数について、または変換処理中に拡張ダイナミックレンジが使用されないと決定することができる。
別の例では、persistent_rice_adaptation_enabled_flag=1は、abs_remainder[]及びdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われることを指定する。persistent_rice_adaptation_enabled_flag=0は、ライスパラメータ導出に以前のサブブロック状態が使用されないことを指定する。本開示によれば、一般的制約情報構文に構文要素gci_no_persistent_rice_adaptation_constraint_flagを追加することで、他のフラグと同じ一般的制約制御を提供するために使用される。以下に、VVCドラフトにおける復号化プロセスの例を示す。VVCドラフトへの変更は、強調表示される。追加した部分は、斜体フォントで強調表示される。
図22は、本開示の一例に係るビデオ符号化のための方法を示す。前記方法は、(例えば)デコーダに適用することができる。ステップ2202において、デコーダは、持続ライス適応有効化フラグを受信することができる。持続ライス適応有効化フラグは、abs_remainderおよびdec_abs_levelの2値化のためのライスパラメータ導出について、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計を用いた初期化が行われるか否かを、持続ライス適応有効化フラグの値に基づいて示す。
ステップ2204において、持続ライス適応有効化フラグの値が1に等しいとの決定に応じて、デコーダは、各サブブロックの開始点で、以前のサブブロックより蓄積されたモード関連統計によって、2値化のためのライスパラメータ導出を初期化すると決定することができる。
ステップ2206において、持続ライス適応有効化フラグの値が0であるとの決定に応じて、デコーダは、ライスパラメータ導出において以前のサブブロック状態が採用されないと決定することができる。
上述の方法は、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサまたは他の電子コンポーネントを含む1つまたは複数の回路を含む装置を使用して実現することができる。装置は、他のハードウェアまたはソフトウェアコンポーネントと組み合わせた回路を使用して上記方法を実行することができる。上記に開示された各モジュール、サブモジュール、ユニットまたはサブユニットは、少なくとも部分的に1つまたは複数の回路を使用して実装することができる。
ライスパラメータ決定
エンコーダ側では、TSRC符号化には、最適なライスパラメータを導出するために複数の符号化パスが必要となる場合がある。このようなマルチパス符号化は、実際のハードウェアエンコーダ設計には適していない可能性がある。この問題を解決するために、低遅延TSRC符号化方法も提案されている。本開示の第30の態様によれば、現在のスライスの特定の符号化情報(例えば、スライス/画像/シーケンスに関連する量子化パラメータおよび/または符号化ビット深度)および/またはスライス/画像/シーケンスレベルに関連するハッシュ率に基づいてライスパラメータを導出することが提案されている。ライスパラメータを導出するために異なる方法を使用することができ、いくつかの例示的な方法は、以下の通りである。以下の方法は、独立してまたは連合して適用することができることに留意すべきである。
1.上記実施例で言及されたライスパラメータは、ビデオの時間解像度(例えば、フレームレート)と空間解像度(例えば、画像幅と高さ)の両方を含むビデオ解像度にさらに依存することができる。
2.ライスパラメータは、シーケンスレベル、画像レベル、スライスレベルおよび/または任意の予め定められた領域で変化することができる。1つの特定の例では、異なるライス値は、異なる時間層ID(VVC仕様で指定されたnuh_temporal_id_plus1に関連する)を有する画像に使用される。オプションとして、ライスパラメータは、シーケンスレベル、画像レベル、スライスレベルおよび/または任意の予め定められた領域で使用されるQP値に基づいて決定された値を含むことができる。例えば、ライスパラメータ=Clip3(1,8,(TH-QP)/6)であり、ここで、THは、予め定められた閾値(例えば18、19)である。
3.現在のスライスと以前のスライスとの間の符号化情報の変化に基づいて、ライスパラメータをデフォルト値、例えば1に設定することができる。1つの特定の例では、画像の時間層IDが以前の画像と比較して変化した場合、その画像に対してデフォルトのライス値が使用される。オプションとして、ΔQがTHよりも大きい場合、この画像に対してデフォルトのライス値を使用する。ここで、ΔQは、abs(QPcurrent-QPprevious)として計算され、THは、予め定められた閾値である。ライスパラメータ(例えば、0.5)。例えば、現在のスライス内のイントラブロックコピーモードからのハッシュ率がTHよりも大きい場合、ライスパラメータ=1。ここでTHは、予め定められた閾値であり、例えばMax(41×(CTUの数),4200)である。
4.符号化順にしたがって各スライスの以前のスライスで符号化されたabs_remainderの値に基づいて各スライスのためのライスパラメータを決定する。1つの特定の例では、1つのスライスを符号化した後、異なるライスパラメータを用いてabs_remainderの2値化を行うための2進数字の数を算出する。前記2進数字の数は、後続のスライスのライスパラメータを決定するために使用される。たとえば、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。別の例では、現在のスライスと以前のスライスで同じQPが使用されている場合、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。そうでなければ、他のライスパラメータと比較する前に、以前のスライス内のデフォルトのライスパラメータ(すなわち、1)を使用して生成された2進数字の数は、THによってスケーリングされ、現在のスライスに対して2進数字の最小数をもたらすライスパラメータが選択され、ここでTHは、予め定められた閾値、例えば0.9である。
5.符号化順にしたがって各スライスの以前のスライスで符号化されたabs_remainderの値に基づいて、各スライスのためのライスパラメータを決定し、現在のスライスと以前のスライスとの間の符号化情報の変化に基づいて、ライスパラメータを調整することができる。1つの特定の例では、現在のスライスに対して、以前のスライスで最小2進数字数を実現するライスパラメータが選択される。そしてΔQがTHよりも大きい場合、ライス値を調整することができる。ここでΔQは、abs(QPcurrent-QPprevious)として計算される。THは、予め定められた閾値である。ライスパラメータ(例えば、0.5)。調整は、予め定められたオフセット(たとえば、+1、-1)を追加するか、予め定められた値でスケーリングする。
図26は、本開示の一例に係る低遅延変換スキップ残差符号化復号化(TSRC)方法のフローチャートを示す。この方法は、例えばエンコーダに適用することができる。ステップ2602において、エンコーダは、ビデオの現在のスライスの符号化情報に基づいてライスパラメータを導出することができる。符号化情報は、ステップ2604におけるビデオのスライス、画像またはシーケンスに関連する量子化パラメータまたは符号化ビット深度、またはステップ2606におけるビデオのスライス、画像またはシーケンスに関連するハッシュ率のうちの1つまたは複数のパラメータを含む。
なお、上述したエンコーダ方法は、デコーダ側に適用することができる。1つの特定例では、ライスパラメータをデコーダに信号で送信する必要がなく、エンコーダ/デコーダでは同じ方法でライスパラメータが導出される。
図18は、ユーザインタフェース1860に結合されたコンピューティング環境1810を示す。コンピューティング環境1810は、データ処理サーバの一部であってもよい。コンピューティング環境1810は、プロセッサ1820、メモリ1840およびI/Oインタフェース1850を含む。
プロセッサ1820は、一般的に、表示、データ収集、データ通信および画像処理に関連する動作といったコンピューティング環境1810の全体的な動作を制御する。プロセッサ1820は、上述した方法のすべてまたはいくつかのステップを実行するための命令を実行する1つまたは複数のプロセッサを含むことができる。さらに、プロセッサ1820は、プロセッサ1820と他のコンポーネントとの間の相互作用を容易にする1つまたは複数のモジュールを含むことができる。プロセッサは、中央処理ユニット(CPU)、マイクロプロセッサ、シングルチップ、GPUなどであってもよい。
メモリ1840は、コンピューティング環境1810の動作をサポートするために、さまざまなタイプのデータを格納するように構成される。メモリ1840は、所定のソフトウェア1842を含むことができる。このようなデータの例には、コンピューティング環境1810上で動作するための任意のアプリケーションまたは方法の命令、ビデオデータセット、画像データなどが含まれる。メモリ1840は、静的ランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、消去可能プログラマブル読取専用メモリ(EPROM)、プログラマブル読取専用メモリ(PROM)、読取専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなど、任意のタイプの揮発性または不揮発性メモリ装置またはそれらの組み合わせによって実装することができる。
I/Oインタフェース1850は、プロセッサ1820と周辺インタフェースモジュール(キーボード、クリックホイール、ボタンなど)との間のインタフェースを提供する。ボタンは、ホームボタン、スキャン開始ボタン、スキャン停止ボタンを含むことができるが、これらに限定されない。I/Oインターフェース1850は、エンコーダおよびデコーダに結合されてもよい。
いくつかの実施例では、メモリ1840に格納されて上述した方法を実行するためにコンピュータ環境1810内のプロセッサ1820によって実行可能な複数のプログラムを含む非一時的コンピュータ可読記憶媒体も提供される。例えば、非一時的コンピュータ可読記憶媒体は、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光学データ記憶装置などであってもよい。
非一時的コンピュータ可読記憶媒体には、1つまたは複数のプロセッサを有するコンピューティングデバイスによって実行される複数のプログラムが格納されている。複数のプログラムは、1つまたは複数のプロセッサによって実行される際に、上述した動き予測のための方法をコンピューティングデバイスに実行させる。
いくつかの実施例では、コンピューティング環境1810は、上述の方法を実行するために、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックス処理ユニット(GPU)、コントローラ、マイクロコントローラ、マイクロプロセッサ、または他の電子コンポーネントによって実装することができる。
図23は、本開示のいくつかの実施形態に係るビデオブロックを並列に符号化および復号するための例示的なシステム10を示すブロック図である。図23に示すように、システム10は、ソースデバイス12を含む。ソースデバイス12は、後に目標装置14によって復号されるビデオデータを生成して符号化する。ソースデバイス12および目標装置14は、デスクトップコンピュータまたはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーム伝送デバイスなどを含むさまざまな電子デバイスの中の任意の電子デバイスを含むことができる。いくつかの実施形態では、ソースデバイス12および目標装置14は、無線通信能力を備えている。
いくつかの実施形態では、目標装置14は、復号すべき符号化ビデオデータをリンク16を介して受信することができる。リンク16は、符号化ビデオデータをソースデバイス12から目標装置14に移動することができる任意のタイプの通信媒体またはデバイスを含むことができる。一例では、リンク16は、ソースデバイス12が符号化ビデオデータを目標装置14にリアルタイムで直接送信できるようにする通信媒体を含むことができる。符号化ビデオデータは、無線通信プロトコルなどの通信標準にしたがって変調され、目標装置14に送信される。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送路など、任意の無線または有線通信媒体を含むことができる。通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはインターネットなどのグローバルネットワークなどのパケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から目標装置14への通信を容易にすることができるその他の任意のデバイスを含むことができる。
いくつかの他の実施形態では、符号化ビデオデータは、出力インタフェース22から記憶装置32に送信される。その後、記憶装置32内の符号化ビデオデータは、入力インタフェース28を介して目標装置14によってアクセスすることができる。記憶装置32は、ハードディスクドライブ、ブルーレイディスク、デジタル汎用光ディスク(DVD)、読み取り専用光ディスクメモリ(CD-ROM)、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、さまざまな分散型またはローカルアクセスデータ記憶媒体中の任意のデータ記憶媒体を含むことができる。さらなる例では、記憶装置32は、ファイルサーバに対応していてもよく、ソースデバイス12によって生成された符号化ビデオデータを保持していてもよい別の中間記憶装置に対応していてもよい。目標装置14は、記憶デバイス32からストリーミングまたはダウンロードを介して、記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶し、符号化ビデオデータを目標装置14に送信することができる任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、ウェブサーバ(例えば、ウェブサイト用)、ファイル転送プロトコル(FTP)サーバ、ネットワーク付属ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。目標装置14は、ファイルサーバに格納された符号化ビデオデータにアクセスするのに適した任意の標準データ接続を介して、符号化ビデオデータにアクセスすることができる。標準データ接続は、無線パス(例えば、無線忠実度(WI-FI)接続)、有線接続(例えば、デジタルユーザ回線(DSL)、ケーブルモデムなど)、または両方の組合せを含む。符号化ビデオデータの記憶装置32からの伝送は、ストリーム伝送、ダウンロード伝送、または両方の組み合わせである。
図23に示すように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20および出力インタフェース22を含む。ビデオソース18は、ビデオキャプチャ装置(例えば、ビデオカメラ)、以前キャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインタフェース、および/またはソースビデオとしてのコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソースまたはそのようなソースの組み合わせを含むことができる。一例として、ビデオソース18がセキュリティ監視システムのカメラである場合、ソースデバイス12および目標装置14は、カメラ電話またはビデオ電話を形成することができる。しかしながら、本願に記載された実施形態は、ビデオ符号化に一般的に適用することができ、無線および/または有線アプリケーションに適用することができる。
キャプチャされたビデオ、予めキャプチャされたビデオ、またはコンピュータによって生成されたビデオは、ビデオエンコーダ20によって符号化することができる。符号化ビデオデータは、ソースデバイス12の出力インタフェース22を介して目標装置14に直接送信することができる。符号化ビデオデータは、後に目標装置14または他のデバイスによってアクセスされて復号および/または再生するために記憶デバイス32に格納されてもよい(またはオプションである)。出力インタフェース22は、モデムおよび/または送信機をさらに含むことができる。
目標装置14は、入力インターフェース28、ビデオデコーダ30およびディスプレイデバイス34を含む。入力インターフェース28は、受信機および/またはモデムを含み、リンク16を介して符号化ビデオデータを受信することができる。リンク16を介して通信される符号化ビデオデータ、または記憶装置32上に提供される符号化ビデオデータは、ビデオデコーダ30がビデオデータを復号する際に使用されるために、ビデオエンコーダ20によって生成されるさまざまな構文要素を含むことができる。そのような構文要素は、通信媒体上で送信される符号化ビデオデータ、記憶媒体上に記憶される符号化ビデオデータ、またはファイルサーバ上に記憶される符号化ビデオデータ内に含まれることができる。
いくつかの実施形態では、目標装置14は、ディスプレイデバイス34を含むことができる。ディスプレイデバイス34は、統合ディスプレイデバイス、および目標装置14と通信するように構成された外部ディスプレイデバイスであることができる。ディスプレイデバイス34は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、さまざまなディスプレイデバイスの中の任意のディスプレイデバイスを含むことができる。
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part10、AVCなどの独自標準または業界標準およびそのような標準の拡張にしたがって動作することができる。本願は、特定のビデオ符号化/復号標準に限定されるものではなく、他のビデオ符号化/復号標準に適用することができることを理解されたい。ソースデバイス12のビデオエンコーダ20は、これらの現在の標準または将来の標準のいずれかに基づいてビデオデータを符号化するように構成することができると一般的に考えられる。同様に、目標装置14のビデオデコーダ30は、これらの現在の標準または将来の標準のいずれかに基づいてビデオデータを復号するように構成することができると一般的に考えられる。
ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせなど、さまざまな適切なエンコーダおよび/またはデコーダ回路の中の任意の回路として実装することができる。部分的にソフトウェアで実装される場合、電子機器は、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に格納し、1つまたは複数のプロセッサを使用してハードウェア内の命令を実行して、本開示に開示されたビデオ符号化/復号動作を実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含めることができ、エンコーダまたはデコーダのいずれかは、それぞれの装置における組合せ型エンコーダ/デコーダ(CODEC)の一部として統合することができる。
図24は、本願に記載されたいくつかの実施形態に係る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化およびインター予測符号化を実行することができる。イントラ予測符号化は、所与のビデオフレームまたは画像内のビデオデータにおける空間冗長性を低減または除去するための空間予測に依存する。インター予測符号化は、ビデオシーケンスの近接ビデオフレームまたは画像内のビデオデータにおける時間冗長性を低減または除去するための時間予測に依存する。なお、「フレーム」という用語は、ビデオ符号化分野における「画像」または「画像」という用語の類義語として使用することができる。
図24に示すように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号化画像バッファ(DPB)64、加算器50、変換処理ユニット52、量子化ユニット54およびエントロピー符号化ユニット56を備える。予測処理ユニット41は、さらに、動き推定ユニット42、動き補償ユニット44、区画ユニット45、イントラ予測処理ユニット46およびイントラブロックコピー(BC)ユニット48を含む。いくつかの実施形態では、ビデオエンコーダ20は、ビデオブロック再構成のための逆量子化ユニット58、逆変換処理ユニット60および加算器62をさらに含む。デブロッキングフィルタなどのインループフィルタ63は、再構成されたビデオからブロック効果を除去するためにブロック境界をフィルタリングするように、加算器62とDPB64との間に配置することができる。デブロッキングフィルタに加えて、加算器62の出力は、別のインループフィルタ(例えば、サンプル適応オフセット(SAO)フィルタおよび/または適応インループフィルタ(ALF))を用いてフィルタリングすることができる。いくつかの例では、インループフィルタは、省略されてもよく、復号されたビデオブロックは、加算器62によってDPB64に直接供給されてもよい。ビデオエンコーダ20は、固定ハードウェアユニットまたはプログラマブルハードウェアユニットの形態をとることができ、または説明した固定ハードウェアユニットまたはプログラマブルハードウェアユニットのうちの1つまたは複数に分散することができる。
ビデオデータメモリ40は、ビデオエンコーダ20のコンポーネントによって符号化されるビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは、例えば図23に示すようなビデオソース18から取得することができる。DPB64は、ビデオエンコーダ20が(例えば、イントラ予測符号化モードまたはインター予測符号化モードで)ビデオデータを符号化する際に使用するための参照ビデオデータ(例えば、参照フレームまたは参照画像)を格納するバッファである。ビデオデータメモリ40およびDPB64は、さまざまなメモリ装置の中の任意のメモリ装置によって形成することができる。さまざまな例では、ビデオデータメモリ40は、ビデオエンコーダ20の他のコンポーネントと一緒にチップ上にあってもよく、またはそれらのコンポーネントに対してチップ外にあってもよい。
図24に示すように、予測処理ユニット41内の区画ユニット45は、ビデオデータを受信すると、ビデオデータをビデオブロックに分割する。この分割はまた、四分木(QT)構造などのビデオデータに関連する予め定められた分割構造に基づいてビデオフレームをスライス、タイル(tile)(例えば、ビデオブロックセット)、または他のより大きな符号化ユニット(CU)に分割することを含むことができる。ビデオフレームは、サンプル値を持つサンプルの2次元アレイまたは行列であるか、それに見なされるものである。アレイ内のサンプルは、画素またはPelとも呼ばれる。アレイまたは画像の水平方向および垂直方向(または軸)のサンプルの数は、ビデオフレームのサイズおよび/または解像度を定義する。ビデオフレームは、例えばQT分割を用いて複数のビデオブロックに分割することができる。ビデオブロックのサイズがビデオフレームよりも小さいが、ビデオブロックは、同様に、サンプル値を持つサンプルの2次元アレイまたは行列であるか、それに見なされるものである。ビデオブロックの水平方向と垂直方向(または軸)のサンプルの数によって、ビデオブロックのサイズが定義される。ビデオブロックは、例えば、QT分割、2分木(BT)分割、または3分木(TT)分割、またはそれらの任意の組合せを繰り返し使用して、ブロックを再形成することができる1つまたは複数のブロックパーティションまたはサブブロックにさらに分割することができる。なお、ここで使用する「ブロック」または「ビデオブロック」という用語は、フレームまたは画像の一部、特に矩形(正方形または非正方形)の部分である。例えば、HEVCおよびVVCを参照すると、ブロックまたはビデオブロックは、符号化木ユニット(CTU)、CU、予測ユニット(PU)、または変換ユニット(TU)であるか、それに対応するものであってもよく、および/または、符号化木ブロック(CTB)、符号化ブロック(CB)、予測ブロック(PB)、または変換ブロック(TB)、および/またはサブブロックなどの対応するブロックであるか、それに対応するものであってもよい。
予測処理ユニット41は、誤差結果(例えば、符号化レートおよび歪みレベル)に基づいて、複数のイントラ予測符号化モードのうちの1つまたは複数のインター予測符号化モードのうちの1つなど、現在のビデオブロックのための複数の可能な予測符号化モードのうちの1つを選択することができる。予測処理ユニット41は、得られたイントラ予測符号化ブロックまたはインター予測符号化ブロックを加算器50に供給して残差ブロックを生成し、加算器62に供給して、符号化されたブロックを再構成し、その後の参照フレームの一部として使用することができる。予測処理ユニット41はまた、構文要素(例えば動きベクトル、イントラモードインジケータ、分割情報、その他のそのような構文情報)をエントロピー符号化ユニット56に供給する。
現在のビデオブロックのための適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は、符号化される現在のブロックと同じフレーム内にある1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測符号化を実行して空間予測を提供することができる。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレームのうちの1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測符号化を実行して時間予測を提供する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックに適切な符号化モードを選択するために、複数の符号化パスを実行することができる。
いくつかの実施形態では、動き推定ユニット42は、参照ビデオフレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの変位を示す動きベクトルを、ビデオフレームシーケンス内の所定のモードに基づいて生成することにより、現在のビデオフレームのためのインター予測モードを決定する。動き推定ユニット42による動き推定は、ビデオブロックに対する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレーム内の予測ブロックに対する現在のビデオフレームまたは画像内のビデオブロックの変位を示すことができ、予測ブロックは、現在フレーム内で符号化されている現在のブロックに対するものである。所定のモードは、シーケンス内のビデオフレームをPフレームまたはBフレームとして指定することができる。イントラBCユニット48は、イントラBC符号化のためのベクトル(例えば、ブロックベクトル)を決定するために、動き推定ユニット42がインター予測のための動きベクトルを決定するのと同様の方法で決定し、または動き推定ユニット42を用いてブロックベクトルを決定することができる。
画素差の面では、ビデオブロックのための予測ブロックは、符号化されるビデオブロックに密接に一致すると考えられる参照フレームのブロックまたは参照ブロックであるか、それに対応するものである。画素差は、絶対差総和(SAD)、二乗差総和(SSD)または他の差メトリックによって決定されることができる。いくつかの実施形態では、ビデオエンコーダ20は、DPB64に記憶された参照フレームのためのサブ整数画素位置の値を計算することができる。例えば、ビデオエンコーダ20は、参照フレームの4分の1の画素位置、8分の1の画素位置、または他の分数の画素位置の値を補間することができる。したがって、動き推定ユニット42は、全画素位置および分数画素位置に対して動き探索を行い、分数画素精度を有する動きベクトルを出力することができる。
動き推定ユニット42は、ビデオブロックの位置を、第1の参照フレームリスト(リスト0)または第2の参照フレームリスト(リスト1)から選択された参照フレームの予測ブロックの位置と比較して、インター予測符号化フレーム中のビデオブロックのための動きベクトルを計算する。第1の参照フレームリストおよび第2の参照フレームリスト中の各々の参照フレームリストは、DPB64に記憶された1つまたは複数の参照フレームを識別する。動き推定ユニット42は、算出した動きベクトルを動き補償ユニット44に送信し、その後エントロピー符号化ユニット56に送信する。
動き補償ユニット44による動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックを抽出または生成することを含むことができる。動き補償ユニット44は、現在のビデオブロックのための動きベクトルを受信すると、動きベクトルが指向する予測ブロックを参照フレームリスト内の1つの参照フレームリスト内で特定し、DPB64から予測ブロックを回収し、予測ブロックを加算器50に転送することができる。次いで、加算器50は、符号化されている現在のビデオブロックの画素値から動き補償ユニット44から供給される予測ブロックの画素値を減算することにより、画素差分値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差分値は、輝度差分成分または彩度差分成分または両方を含むことができる。動き補償ユニット44は、ビデオフレームのビデオブロックを復号する際にビデオデコーダ30が使用するために、ビデオフレームのビデオブロックに関連する構文要素を生成することもできる。構文要素は、例えば、予測ブロックを識別するための動きベクトルを定義する構文要素、予測モードを示す任意のマーカー、または本明細書で説明する他の構文情報を含むことができる。なお、動き推定ユニット42と動き補償ユニット44とは、高度に統合されていてもよいが、概念のために別個に説明されている。
いくつかの実施形態では、イントラBCユニット48は、以上で動き推定ユニット42と動き補償ユニット44に関連して説明された方式と同様にベクトルを生成し、予測ブロックを抽出することができるが、これらの予測ブロックは、符号化されている現在のブロックと同じフレームにあり、これらのベクトルは、動きベクトルではなくブロックベクトルと呼ばれる。具体的には、イントラBCユニット48は、現在のブロックを符号化するために使用されるイントラ予測モードを決定することができる。いくつかの例では、イントラBCユニット48は、例えば、複数の個別の符号化パス中に、さまざまなイントラ予測モードを使用して現在のブロックを符号化し、レート歪み解析によってその性能をテストすることができる。次に、イントラBCユニット48は、さまざまなテストされたイントラ予測モードから適切なイントラ予測モードを選択して使用し、それに応じてイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は、レート歪み解析を用いて、さまざまなテストされたイントラ予測モードについてレート歪み値を計算し、テストされたモードから最適なレート歪み特性を有するイントラ予測モードを適切なイントラ予測モードとして選択して使用することができる。レート歪み解析は、通常、符号化されたブロックと、符号化されて符号化されたブロックを生成する元の符号化されていないブロックとの間の歪み(または誤差)量、および符号化されたブロックを生成するためのビットレート(すなわち、ビット数)を決定する。イントラBCユニット48は、どのイントラ予測モードがブロックに対する最適なレート歪み値を示すかを決定するために、さまざまな符号化されたブロックに対する歪みとレートから比率を計算することができる。
他の例では、イントラBCユニット48は、本明細書に記載の実施形態に係るイントラBC予測のためのそのような機能を実行するために、動き推定ユニット42および動き補償ユニット44をすべてまたは部分的に使用することができる。いずれの場合も、イントラブロックコピーについて、画素差の面では、予測ブロックは、符号化されるブロックと密接に一致すると考えられるブロックであってもよく、画素差は、SAD、SSD、または他の差メトリックによって決定されてもよく、予測ブロックの識別は、サブ整数画素ビットのための値を計算することを含むことができる。
ビデオエンコーダ20は、予測ブロックがイントラ予測による同一フレームからのものであるか、インター予測による異なるフレームからのものであるかにかかわらず、符号化されている現在のビデオブロックの画素値から予測ブロックの画素値を減算することにより画素差値を形成し、残差ビデオブロックを形成することができる。残差ビデオブロックを形成する画素差分値は、輝度成分差と彩度成分差の両方を含むことができる。
上述したように、動き推定ユニット42および動き補償ユニット44によるインター予測またはイントラBCユニット48によるイントラブロックコピー予測の代替として、イントラ予測処理ユニット46は、現在のビデオブロックをイントラ予測することができる。具体的には、イントラ予測処理ユニット46は、現在のブロックを符号化するためにイントラ予測モードを決定することができる。このようにするために、イントラ予測処理ユニット46は、例えば、複数の個別の符号化パス中に、さまざまなイントラ予測モードを用いて現在のブロックを符号化し、イントラ予測処理ユニット46(またはいくつかの例では、モード選択ユニット)は、テストされたイントラ予測モードの中から適切なイントラ予測モードを選択して使用することができる。イントラ予測処理ユニット46は、ブロックのために選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に供給することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化することができる。
予測処理ユニット41がインター予測またはイントラ予測を介して現在のビデオブロックのための予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することにより残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つまたは複数のTUに含まれ、変換処理ユニット52に供給されることができる。変換処理ユニット52は、離散コサイン変換(DCT)や概念的に類似した変換などの変換を用いて、残差ビデオデータを残差変換係数に変換する。
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送信することができる。量子化ユニット54は、ビットレートをさらに小さくするために変換係数を量子化する。量子化プロセスはまた、係数中のいくつかの係数またはすべての係数に関連するビット深度を低減することができる。量子化パラメータを調整することで、量子化の度合いを変更することができる。いくつかの例では、量子化ユニット54は、その後、量子化された変換係数を含む行列の走査を実行することができる。あるいは、エントロピー符号化ユニット56は、走査を実行することができる。
量子化後、エントロピー符号化ユニット56は、例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文に基づくコンテキスト適応バイナリ算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、または別のエントロピー符号化方法または技術を用いて、量子化された変換係数をビデオビットストリームにエントロピー符号化する。その後、符号化されたビットストリームは、図23に示すビデオデコーダ30に送信されてもよく、または後にビデオデコーダ30に送信するために、またはビデオデコーダ30によって回収されるために、図23に示す記憶装置32に保存されてもよい。エントロピー符号化ユニット56は、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化することもできる。
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して画素領域に残差ビデオブロックを再構成し、他のビデオブロックを予測するための参照ブロックを生成する。上述したように、動き補償ユニット44は、DPB64に格納されたフレームの1つまたは複数の参照ブロックから、動き補償された予測ブロックを生成することができる。動き補償ユニット44は、動き推定時に使用するためにサブ整数画素値を計算するように、1つまたは複数の補間フィルタを予測ブロックに適用することもできる。
加算器62は、DPB64に記憶するために、動き補償ユニット44によって生成された動き補償された予測ブロックに再構成された残差ブロックを加算して参照ブロックを生成する。次いで、参照ブロックは、イントラBCユニット48、動き推定ユニット42、および動き補償ユニット44によって予測ブロックとして使用され、後続のビデオフレーム中の別のビデオブロックをインター予測することができる。
図25は、本明細書のいくつかの実施形態に係る例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90およびDPB92を含む。予測処理ユニット81は、動き補償ユニット82、イントラ予測ユニット84およびイントラBCユニット85をさらに含む。ビデオデコーダ30は、ビデオエンコーダ20に関して図24に関連して上述した符号化プロセスと実質的に相互逆の復号化プロセスを実行することができる。例えば、動き補償ユニット82は、エントロピー復号化ユニット80から受信した動きベクトルに基づいて予測データを生成することができ、イントラ予測ユニット84は、エントロピー復号化ユニット80から受信したイントラ予測モードインジケータに基づいて予測データを生成することができる。
いくつかの例では、ビデオデコーダ30のユニットは、本願の実施形態を実行するためにタスクを割り当てられることができる。さらに、いくつかの例では、本開示の実施形態は、ビデオデコーダ30の複数のユニットのうちの1つまたは複数のユニットに分散することができる。例えば、イントラBCユニット85は、単独で、または動き補償ユニット82、イントラ予測ユニット84、エントロピー復号化ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実施形態を実行することができる。いくつかの例では、ビデオデコーダ30は、イントラBCユニット85を含まなくてもよく、イントラBCユニット85の機能は、動き補償ユニット82などの予測処理ユニット81の他のコンポーネントによって実行される。
ビデオデータメモリ79は、符号化ビデオビットストリームなどのビデオデコーダ30の他のコンポーネントによって復号されるビデオデータを記憶することができる。ビデオデータメモリ79に格納されたビデオデータは、例えば、記憶装置32から取得するか、カメラなどのローカルビデオソースから取得するか、ビデオデータの有線または無線ネットワーク通信を介して取得するか、フラッシュメモリドライブやハードディスクなどの物理データ記憶媒体にアクセスすることによって取得することができる。ビデオデータメモリ79は、符号化ビデオビットストリームからの符号化ビデオデータを格納する符号化画像バッファ(CPB)を含むことができる。ビデオデコーダ30のDPB92は、ビデオデータを復号する際にビデオデコーダ30が(例えば、イントラまたはインター予測符号化モードで)使用するための参照ビデオデータを記憶する。ビデオデータメモリ79およびDPB92は、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなど、さまざまなメモリデバイスの中の任意のメモリデバイスによって形成することができる。例示的な目的のために、ビデオデータメモリ79とDPB92は、図25においてビデオデコーダ30の2つの異なるコンポーネントとして図示されている。しかし、ビデオデータメモリ79およびDPB92は、同一のメモリデバイスまたは個別のメモリデバイスによって提供されてもよいことは、当業者には明らかであろう。いくつかの例では、ビデオデータメモリ79は、ビデオデコーダ30の他のコンポーネントと一緒にチップ上にあってもよく、またはそれらのコンポーネントに対してチップ外にあってもよい。
復号化プロセス中に、ビデオデコーダ30は、符号化ビデオフレームのビデオブロックおよび関連する構文要素を表す符号化ビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信することができる。ビデオデコーダ30のエントロピー復号化ユニット80は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、およびその他の構文要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号化ユニット80は、その後、動きベクトルまたはイントラ予測モードインジケータおよびその他の構文要素を予測処理ユニット81に転送する。
ビデオフレームがイントラ予測符号化(I)フレームまたは他のタイプのフレーム中のイントラ符号化予測ブロックとして符号化される場合、予測処理ユニット81のイントラ予測ユニット84は、信号で送信されるイントラ予測モードと、現在のフレームの以前の復号ブロックからの参照データとに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成することができる。
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームとして符号化される場合、予測処理ユニット81の動き補償ユニット82は、エントロピー復号化ユニット80から受信した動きベクトルおよびその他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1つまたは複数の予測ブロックを生成する。予測ブロック内の各予測ブロックは、参照フレームリスト内の1つの参照フレームリスト内の参照フレームから生成することができる。ビデオデコーダ30は、DPB92に格納された参照フレームに基づいてデフォルト構成技術を用いて参照フレームリスト(リスト0およびリスト1)を構築することができる。
いくつかの例では、本明細書で説明するイントラBCモードにしたがってビデオブロックが符号化される場合、予測処理ユニット81のイントラBCユニット85は、エントロピー復号化ユニット80から受信したブロックベクトルおよびその他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって定義される現在のビデオブロックの同じ画像の再構成領域内にあることができる。
動き補償ユニット82および/またはイントラBCユニット85は、動きベクトルおよび他の構文要素を解析することにより、現在のビデオフレームのビデオブロックのための予測情報を決定し、その後、その予測情報を用いて、復号されている現在のビデオブロックのための予測ブロックを生成する。例えば、動き補償ユニット82は、受信した構文要素のうちのいくつかの構文要素を用いて、ビデオフレームのビデオブロックを復号するための予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、フレームのための参照フレームリストのうちの1つまたは複数の参照フレームリストのための構成情報、フレームの各インター予測復号ビデオブロックのための動きベクトル、フレームの各インター予測復号ビデオブロックのためのインター予測状態、および現在のビデオフレーム中のビデオブロックを復号するための他の情報を決定する。
同様に、イントラBCユニット85は、フラグなど、受信した構文要素のうちのいくつかの構文要素を用いて、現在のビデオブロックがイントラBCモードで予測されたものであることや、フレームのどのビデオブロックが再構成領域内にあるかかつDPB92に格納されるべきかの構成情報、フレームの各イントラBC予測ビデオブロックのためのブロックベクトル、フレームの各イントラBC予測ビデオブロックのためのイントラBC予測状態、および現在のビデオフレーム中のビデオブロックを復号するための他の情報を決定する。
動き補償ユニット82はまた、ビデオエンコーダ20によってビデオブロックの符号化中に使用される補間フィルタを用いて補間を実行して、参照ブロックのサブ整数画素のための補間値を計算することができる。この場合、動き補償ユニット82は、受信した構文要素から、ビデオエンコーダ20によって使用される補間フィルタを決定し、これらの補間フィルタを使用して予測ブロックを生成することができる。
逆量子化ユニット86は、ビデオエンコーダ20によってビデオフレーム中の各ビデオブロックに対して計算された量子化の程度を決定するための同じ量子化パラメータを用いて、ビットストリーム中に供給されエントロピー復号化ユニット80によってエントロピー復号された量子化変換係数を逆量子化する。逆変換処理ユニット88は、画素領域において残差ブロックを再構成するために、逆変換(例えば、逆DCT、逆整数変換、または概念的に類似した逆変換プロセス)を変換係数に適用する。
動き補償ユニット82またはイントラBCユニット85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックに加算することによって、現在のビデオブロックのための復号されたビデオブロックを再構成する。デブロッキングフィルタ、SAOフィルタおよび/またはALFなどのインループフィルタ91は、復号されたビデオブロックをさらに処理するために加算器90とDPB92との間に配置することができる。いくつかの例では、インループフィルタ91は、省略されてもよく、復号されたビデオブロックは、加算器90によって直接DPB92に提供されてもよい。所与のフレーム中の復号ビデオブロックはその後、DPB92に記憶され、DPB92は、次のビデオブロックの後の動き補償のための参照フレームを記憶する。DPB92またはDPB92から分離されたメモリデバイスは、後にディスプレイデバイス(図23のディスプレイデバイス34など)に表示するために、復号されたビデオを記憶することもできる。
本開示の説明は、説明の目的で提示されており、本開示に限定されることが意図されていない。前述の説明および関連する図面に提示された教示をヒントに、多くの修正、変更および代替実施形態が当業者には明らかになるであろう。
例を選択して説明することは、本開示の原理を理解し、当業者が本開示のさまざまな実施形態を理解できるようにするためであり、基本原理と予想される特定の用途に適したさまざまな変更を有するさまざまな実施形態を好適に利用するためである。したがって、本開示の範囲は、開示された実施形態の具体例に限定されるものではなく、修正および他の実施形態は、本開示の範囲内に含まれることが意図されていることを理解されたい。
Claims (16)
- ビデオの現在のスライスの符号化情報に基づいてエンコーダによってライスパラメータを導出することを含み、
前記符号化情報は、前記ビデオのスライス、画像またはシーケンスに関連する量子化パラメータまたは符号化ビット深度、または、前記ビデオの前記スライス、前記画像または前記シーケンスに関連するハッシュ率、のうちの1つまたは複数のパラメータを含む、低遅延変換スキップ残差符号化復号化(TSRC)方法。 - 前記ビデオの時間解像度及び空間解像度を含むビデオ解像度に基づいて、前記ライスパラメータを導出することをさらに含む、請求項1に記載の低遅延TSRC方法。
- 前記ビデオのシーケンスレベル、画像レベル、スライスレベルまたは予め定められた領域で前記ライスパラメータを導出することをさらに含む、請求項1に記載の低遅延TSRC方法。
- 異なる時間IDを持つ画像に対して、異なるライスパラメータ値を導出することをさらに含む、請求項3に記載の低遅延TSRC方法。
- 前記ビデオの前記シーケンスレベル、前記画像レベル、前記スライスレベルまたは前記予め定められた領域で用いられる量子化パラメータ(QP)値に基づいて、前記ライスパラメータを導出することをさらに含む、請求項3に記載の低遅延TSRC方法。
- 前記ビデオの現在のスライスと以前のスライスとの間の符号化情報の変化に基づいて、前記ライスパラメータをデフォルト値に設定することをさらに含む、請求項1に記載の低遅延TSRC方法。
- 現在の画像の時間層IDが以前の画像の時間層IDから変更されたと決定したことに応じて、画像について前記ライスパラメータが前記デフォルト値に設定される、請求項6に記載の低遅延TSRC方法。
- ΔQがTHより大きいと決定したことに応じて、画像について前記ライスパラメータが前記デフォルト値に設定され、
ここで、ΔQは、abs(QPcurrent-QPprevious)と決定され、QPcurrentは、現在の画像の量子化パラメータであり、QPpreviousは、前の画像の量子化パラメータであり、THは、予め定められた閾値である、請求項6に記載の低遅延TSRC方法。 - 現在のスライスにおけるハッシュ率形式イントラブロックコピーモードが予め定められた閾値であるTHより大きいと決定したことに応じて、画像について前記ライスパラメータがデフォルト値1に設定される、請求項8に記載の低遅延TSRC方法。
- 符号化復号化順にしたがって前記ビデオの各スライスの以前のスライスで符号化されたパラメータabs_remainderの値に基づいて、前記各スライスのためのライスパラメータを導出することをさらに含む、請求項1に記載の低遅延TSRC方法。
- 1つのスライスが符号化されたと決定したことに応じて、異なるライスパラメータを用いてabs_remainderの2値化のための2進数字の数を決定することと、
前記abs_remainderの2値化のための2進数字の数に基づいて、後続のスライスのためのライスパラメータを決定することと、
をさらに含む、請求項10に記載の低遅延TSRC方法。 - 現在のスライスのためのライスパラメータとして、以前のスライスで2進数字の最小数を実現するライスパラメータを選択することをさらに含む、請求項10に記載の低遅延TSRC方法。
- 現在のスライスと以前のスライスに同じQPが採用されていると決定したことに応じて、現在のスライスのためのライスパラメータとして、以前のスライスで2進数字の最小数を実現するライスパラメータを選択することと、
現在のスライスと以前のスライスに異なるQPが採用されていると決定したことに応じて、
以前のスライスでデフォルトのライスパラメータによって生成された2進数字の数を、予め定められた閾値によってスケーリングし、
前記デフォルトのライスパラメータを他のライスパラメータと比較し、
現在のスライスについて最小数の2進数字が得られるようにするライスパラメータを選択することと
をさらに含む、請求項10に記載の低遅延TSRC方法。 - 符号化復号化順にしたがって前記ビデオの各スライスの以前のスライスで符号化されたパラメータabs_remainderの値に基づいて、前記各スライスのためのライスパラメータを導出することと、
前記ビデオの現在のスライスと一つ前のスライスとの間の符号化情報の変化に基づいて、前記ライスパラメータを調整することと、
をさらに含む、請求項1に記載の低遅延TSRC方法。 - 1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサによって実行可能な指令を格納するように構成されたメモリと、を含み、
前記1つまたは複数のプロセッサは、前記指令を実行すると、請求項1~14のいずれか1項に記載の方法を実行するように構成されている、ビデオ符号化復号化のための装置。 - コンピュータ実行可能プログラムを格納しているビデオ符号化復号化のための非一時的コンピュータ可読記憶媒体
前記コンピュータ実行可能プログラムは、1つまたは複数のコンピュータプロセッサによって実行されると、前記1つまたは複数のコンピュータプロセッサに請求項1~14のいずれか1項に記載の方法を実行させる、ビデオ符号化復号化のための非一時的コンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163167621P | 2021-03-29 | 2021-03-29 | |
US63/167,621 | 2021-03-29 | ||
PCT/US2022/022054 WO2022212214A1 (en) | 2021-03-29 | 2022-03-25 | Residual and coefficients coding for video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024513551A true JP2024513551A (ja) | 2024-03-26 |
Family
ID=83456879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023560156A Pending JP2024513551A (ja) | 2021-03-29 | 2022-03-25 | ビデオ符号化復号化のための残差及び係数符号化復号化 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20240040134A1 (ja) |
EP (1) | EP4315862A1 (ja) |
JP (1) | JP2024513551A (ja) |
KR (1) | KR20230162806A (ja) |
CN (1) | CN116965033A (ja) |
MX (1) | MX2023011564A (ja) |
WO (1) | WO2022212214A1 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10021419B2 (en) * | 2013-07-12 | 2018-07-10 | Qualcomm Incorported | Rice parameter initialization for coefficient level coding in video coding process |
WO2021040319A1 (ko) * | 2019-08-23 | 2021-03-04 | 엘지전자 주식회사 | 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치 |
US11265536B2 (en) * | 2019-09-23 | 2022-03-01 | Tencent America LLC | Method to extend the range of rice parameter for residual coding in transform skip mode |
US11470334B2 (en) * | 2019-09-23 | 2022-10-11 | Qualcomm Incorporated | Rice parameter derivation for lossless/lossy coding modes for video coding |
-
2022
- 2022-03-25 KR KR1020237037268A patent/KR20230162806A/ko active Search and Examination
- 2022-03-25 JP JP2023560156A patent/JP2024513551A/ja active Pending
- 2022-03-25 EP EP22781936.4A patent/EP4315862A1/en active Pending
- 2022-03-25 MX MX2023011564A patent/MX2023011564A/es unknown
- 2022-03-25 CN CN202280019867.4A patent/CN116965033A/zh active Pending
- 2022-03-25 WO PCT/US2022/022054 patent/WO2022212214A1/en active Application Filing
-
2023
- 2023-09-12 US US18/367,452 patent/US20240040134A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240040134A1 (en) | 2024-02-01 |
MX2023011564A (es) | 2023-10-09 |
EP4315862A1 (en) | 2024-02-07 |
WO2022212214A1 (en) | 2022-10-06 |
CN116965033A (zh) | 2023-10-27 |
KR20230162806A (ko) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200068194A1 (en) | Variable number of intra modes for video coding | |
JP7546747B2 (ja) | 残差及び係数のコーディングの方法及び装置 | |
JP7350988B2 (ja) | ビデオコーディングにおける小さい色差ブロックサイズ制限 | |
JP7201873B2 (ja) | 残差及び係数符号化の方法、プログラム並びに装置 | |
CN114567786B (zh) | 以4:4:4色度格式进行视频编解码的方法和装置 | |
KR102521034B1 (ko) | 팔레트 모드를 이용한 비디오 코딩의 방법 및 장치 | |
JP2024506156A (ja) | ビデオ符号化のための残差および係数の符号化 | |
JP2024515980A (ja) | ビデオ符号化のための残差および係数の符号化 | |
JP7509927B2 (ja) | 4:4:4色フォーマットにおけるビデオコーディングの方法及び装置 | |
JP2024502109A (ja) | ビデオコーディング用の残差および係数のコーディング | |
JP7349028B2 (ja) | パレットモードを使用するビデオ符号化の方法及び装置 | |
JP2024513551A (ja) | ビデオ符号化復号化のための残差及び係数符号化復号化 | |
RU2824946C2 (ru) | Кодирование остатков и коэффициентов для кодирования видео | |
JP2023156469A (ja) | ビデオ符号化用のループ内フィルタ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231127 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231127 |