JP2022178335A - Image decoding device and image encoding device - Google Patents
Image decoding device and image encoding device Download PDFInfo
- Publication number
- JP2022178335A JP2022178335A JP2021085070A JP2021085070A JP2022178335A JP 2022178335 A JP2022178335 A JP 2022178335A JP 2021085070 A JP2021085070 A JP 2021085070A JP 2021085070 A JP2021085070 A JP 2021085070A JP 2022178335 A JP2022178335 A JP 2022178335A
- Authority
- JP
- Japan
- Prior art keywords
- transform
- range
- flag
- size
- unit
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
本発明の実施形態は、画像復号装置及び画像符号化装置に関する。 TECHNICAL FIELD Embodiments of the present invention relate to an image decoding device and an image encoding device.
画像を効率的に伝送又は記録するために、画像を符号化することによって符号化データを生成する画像符号化装置、及び、当該符号化データを復号することによって復号画像を生成する画像復号装置が用いられている。 In order to efficiently transmit or record images, an image encoding device that generates encoded data by encoding an image and an image decoding device that generates a decoded image by decoding the encoded data are used. used.
具体的な画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video
Coding)方式等が挙げられる。
Examples of specific image coding methods include H.264/AVC and HEVC (High-Efficiency Video
Coding) method, etc.
このような画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得ら
れる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、
符号化単位を分割することより得られる変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CU毎に符号化/復号される。
In such an image coding method, the images (pictures) that make up a moving image are slices obtained by dividing an image, and coding tree units (CTU: Coding Tree Unit) obtained by dividing a slice. , a coding unit obtained by dividing a coding tree unit (sometimes called a coding unit (CU)), and
Managed by a hierarchical structure composed of transform units (TU: Transform Units) obtained by dividing a coding unit, and encoded/decoded for each CU.
また、このような画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測誤差(「差分画像」又は「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、及び、画面内予測(イントラ予測)が挙げられる。 Further, in such an image coding method, a predicted image is normally generated based on a locally decoded image obtained by encoding/decoding an input image, and the predicted image is subtracted from the input image (original image). The prediction error (also called "difference image" or "residual image") obtained by Inter-prediction and intra-prediction are examples of predictive image generation methods.
また、近年の画像符号化及び復号技術として非特許文献1(VVC)が挙げられる。非特
許文献1には、extended_precision_processing_flagフラグに応じて、変換係数のレンジとシフト値をビットデプスに応じて増加させることにより精度を向上させる技術が開示されている。
In addition, Non-Patent Document 1 (VVC) can be cited as a recent image encoding and decoding technology. Non-Patent
非特許文献2には、量子化パラメータが小さい場合に変換サイズを32x32までに制限す
ることが開示されている。非特許文献3には、変換係数のシフト値を、残差の大きさによって変更することが知られている。
Non-Patent
非特許文献1の変換係数のレンジを拡張する技術では、変換の積に必要なビット数が16
ビットを超えるために、ソフトウェアではSIMD処理の並列度低下、ハードウェアでは回路規模の増大という課題がある。非特許文献2では、64x64変換を量子化パラメータに応じ
て禁止することにより、量子化パラメータが小さい場合の変換の回路規模を小さくすることができる。しかしながら、量子化パラメータが大きい場合、回路規模低減の効果が得られないという課題がある。非特許文献3では、変換係数のシフト値を、変換係数の値域によって可変的に設定することにより、変換係数のレンジを増やすことなく精度を高めることができる。しかしながら、変換係数の値域の分析のために複雑度やレイテンシが増加する課題がある。
In the technique for extending the range of transform coefficients in
In order to exceed the number of bits, there are problems such as a decrease in parallelism of SIMD processing in software and an increase in circuit scale in hardware. In
上記課題を解決するために、本発明の一態様に係る画像復号装置は、変換係数のレンジを拡張するかを示すフラグと、変換の最大サイズを示すシンタックス要素を復号し、変換の最大サイズを導出するヘッダ復号部と、変換係数のレンジを拡張する場合に、ビットデプスに応じた変換係数のレンジを導出し、上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部と、上記ヘッダ復号部は、変換係数のレンジを拡張するかを示すフラグが有効である場合に、変換の最大サイズを所定の値以下に制限することを特徴とする。 To solve the above problem, an image decoding device according to an aspect of the present invention decodes a flag indicating whether to expand the range of transform coefficients and a syntax element indicating the maximum size of transform, and decodes the maximum size of transform. and a header decoding unit that derives a transform coefficient range according to the bit depth when extending the transform coefficient range, and using the first shift value derived according to the transform coefficient range, A scaling unit that right-shifts a value obtained by multiplying a transform coefficient by a value that depends on a quantization parameter, and the header decoding unit, when a flag indicating whether to extend the range of the transform coefficient is enabled, the maximum size of the transform. is limited to a predetermined value or less.
上記動画像復号装置は、さらに変換ユニットのサイズが上記変換の最大サイズ以下となるように、再帰的に変換ツリーを分割するTU復号部を備えることを特徴とする。 The video decoding device is characterized by further comprising a TU decoding section that recursively divides the transform tree so that the size of the transform unit is equal to or smaller than the maximum size of the transform.
上記ヘッダ復号部は、変換の最大サイズを示すシンタックス要素として所定の最大変換サイズTXを用いるか否かを示すフラグを復号し、上記ヘッダ復号部は、所定の最大変換サイズTXを用いることを示し、かつ、上記変換係数のレンジを拡張するかを示すフラグが有効ではない場合に、最大変換サイズとして上記最大変換サイズTXを用いることを特徴とする。 The header decoding unit decodes a flag indicating whether or not to use a predetermined maximum transform size TX as a syntax element indicating the maximum transform size, and the header decoding unit instructs to use the predetermined maximum transform size TX. and the maximum transform size TX is used as the maximum transform size when the flag indicating whether to extend the range of transform coefficients is not valid.
上記ヘッダ復号部は、上記ヘッダ復号部は、所定の最大変換サイズTXを用いることを示し、かつ、上記変換係数のレンジを拡張するかを示すフラグが有効ではない場合に、最大変換サイズに上記最大変換サイズTXを設定し、それ以外の場合には、最大変換サイズに上記最大変換サイズTX/2を設定することを特徴とする。 When the flag indicating that the header decoding unit uses a predetermined maximum transform size TX and indicating whether to extend the range of transform coefficients is not valid, the header decoding unit sets the maximum transform size to the above The maximum transform size TX is set, and in other cases, the maximum transform size TX/2 is set as the maximum transform size.
変換係数のレンジを拡張するかを示すフラグと、変換の最大サイズを示すシンタックス要素を符号化し、変換の最大サイズを導出するヘッダ符号化部と、
変換係数のレンジを拡張する場合に、ビットデプスに応じた変換係数のレンジを導出し、上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部と、
上記ヘッダ符号化部は、変換係数のレンジを拡張するかを示すフラグが有効である場合に、変換の最大サイズを所定の値以下に制限することを特徴とする。
a header encoding unit that encodes a flag indicating whether to extend the range of transform coefficients and a syntax element indicating the maximum size of the transform to derive the maximum size of the transform;
when extending the range of transform coefficients, derive a range of transform coefficients according to the bit depth, and rely on a quantization parameter for transform coefficients using a first shift value derived according to the range of transform coefficients. a scaling unit that right-shifts the value multiplied by the value of
The header encoding unit is characterized by limiting the maximum size of transform to a predetermined value or less when a flag indicating whether to extend the range of transform coefficients is valid.
変換係数のレンジを拡張するかを示すフラグを復号するヘッダ復号部と、
変換係数のレンジを導出するTU復号部を備え
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備え、
上記TU復号部は、上記フラグと変換ブロックのブロックサイズに応じて、変換係数のレンジを導出することを特徴とする。
a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
Scaling for right-shifting a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient having a department,
The TU decoding unit is characterized by deriving the range of transform coefficients according to the flag and the block size of the transform block.
上記TU復号部は、上記フラグが有効を示し、かつ上記変換ブロックのブロックサイズが所定の変換サイズの最大値より小さい場合に、変換係数のレンジ拡張することを特徴とする。 The TU decoding unit is characterized by extending the range of transform coefficients when the flag indicates valid and the block size of the transform block is smaller than a predetermined maximum transform size.
上記TU復号部は、上記フラグが有効を示し、かつ上記変換係数のブロックサイズが64より小さい場合に、変換係数のレンジ拡張することを特徴とする。 The TU decoding unit is characterized in that, when the flag indicates valid and the block size of the transform coefficients is smaller than 64, the range of the transform coefficients is extended.
変換係数のレンジを拡張するかを示すフラグを符号化するヘッダ符号化部と、
変換係数のレンジを導出するTU符号化部を備え
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備え、
上記TU復号部は、上記フラグと変換ブロックのブロックサイズに応じて、変換係数のレンジを導出することを特徴とする。
a header encoding unit that encodes a flag indicating whether to extend the range of transform coefficients;
A TU encoding unit for deriving a range of transform coefficients is provided, and a first shift value derived according to the range of transform coefficients is used to right-shift a value obtained by multiplying the transform coefficients by a value dependent on a quantization parameter. Equipped with a scaling section,
The TU decoding unit is characterized by deriving the range of transform coefficients according to the flag and the block size of the transform block.
変換係数のレンジを拡張するかを示すフラグを復号するヘッダ復号部と、
変換係数のレンジを導出するTU復号部を備え、
上記TU復号部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズ以下の場合に、変換係数のレンジを拡張し、
上記TU復号部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズより大きいの場合に、上記フラグが有効の場合に、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存し、
上記TU復号部は、上記フラグが有効以外の場合には、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存せずに導出し、
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備えることを特徴とする。
a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
a TU decoder for deriving a range of transform coefficients,
The TU decoding unit expands the range of transform coefficients when the flag is valid and the block size of the transform block is equal to or less than a predetermined size,
When the flag is valid and the block size of the transform block is larger than a predetermined size, the TU decoding unit converts the shift value without expanding the range of transform coefficients when the flag is valid. , depending on the maximum magnitude of the transform coefficients, and
The TU decoding unit derives the shift value without depending on the maximum value of the magnitude of the transform coefficient without extending the range of the transform coefficient unless the flag is valid,
A scaling unit is provided for right-shifting a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient.
変換係数のレンジを拡張するかを示すフラグを符号化するヘッダ符号化部と、
変換係数のレンジを導出するTU復号部を備え、
上記TU符号化部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズ以下の場合に、変換係数のレンジを拡張し、
上記TU符号化部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズより大きいの場合に、上記フラグが有効の場合に、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存し、
上記TU符号化部は、上記フラグが有効以外の場合には、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存せずに導出し、
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備えることを特徴とする。
a header encoding unit that encodes a flag indicating whether to extend the range of transform coefficients;
a TU decoder for deriving a range of transform coefficients,
The TU encoding unit expands the range of transform coefficients when the flag is valid and the block size of the transform block is equal to or less than a predetermined size,
When the flag is valid and the block size of the transform block is larger than a predetermined size, the TU encoding unit, when the flag is valid, does not extend the range of transform coefficients, and shifts the shift value , depending on the maximum magnitude of the transform coefficients,
The TU encoding unit derives the shift value without depending on the maximum value of the magnitude of the transform coefficient without extending the range of the transform coefficient unless the flag is valid,
A scaling unit is provided for right-shifting a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient.
以上の構成によれば、上記問題の何れかの解決を図ることができる。 According to the above configuration, any one of the above problems can be solved.
〔実施形態1〕
以下、図面を参照しながら本発明の実施形態について説明する。
[Embodiment 1]
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
FIG. 1 is a schematic diagram showing the configuration of an
画像伝送システム1は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム1は、動画像符号化装置(画像符号化装置)11、ネットワーク21、動画像復号装置(画像復号装置)31、及び画像表示装置(画像表示装置)41を含んで構成される。
The
動画像符号化装置11には画像Tが入力される。
An image T is input to the moving
ネットワーク21は、動画像符号化装置11が生成した符号化ストリームTeを動画像復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(
WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれら
の組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であってもよい。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blue-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されてもよい。
The
Wide Area Network (WAN), Local Area Network (LAN), or a combination thereof. The
動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1又は複数の復号画像Tdを生成する。
The
画像表示装置41は、動画像復号装置31が生成した1又は複数の復号画像Tdの全部又は一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
The
<演算子>
本明細書で用いる演算子を以下に記載する。
<operator>
The operators used in this specification are described below.
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR
、|=はOR代入演算子であり、||は論理和を示す。
>> is right bit shift, << is left bit shift, & is bitwise AND, | is bitwise OR
, |= is the OR assignment operator, and || indicates the disjunction.
x?y:zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。 x?y:z is a ternary operator that takes y if x is true (not 0) and z if x is false (0).
Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返
し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
Clip3(a,b,c) is a function that clips c to a value greater than or equal to a and less than or equal to b, if c<a returns a, if c>b returns b, otherwise is a function that returns c (where a<=b).
abs(a)はaの絶対値を返す関数である。 abs(a) is a function that returns the absolute value of a.
Int(a)はaの整数値を返す関数である。 Int(a) is a function that returns the integer value of a.
floor(a)はa以下の最小の整数を返す関数である。 floor(a) is a function that returns the smallest integer less than or equal to a.
ceil(a)はa以上の最大の整数を返す関数である。 ceil(a) is a function that returns the largest integer greater than or equal to a.
a/dはdによるaの除算(小数点以下切り捨て)を表す。 a/d represents division of a by d (truncated after the decimal point).
<符号化ストリームTeの構造>
本実施形態に係る動画像符号化装置11及び動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
<Structure of encoded stream Te>
Prior to a detailed description of the
図4は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリ
ームTeは、例示的に、シーケンス、及びシーケンスを構成する複数のピクチャを含む。図4には、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定す
る符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図が示されている。
FIG. 4 is a diagram showing the hierarchical structure of data in the encoded stream Te. The encoded stream Te illustratively includes a sequence and a plurality of pictures forming the sequence. FIG. 4 shows a coded video sequence that defines the sequence SEQ, a coded picture that defines the picture PICT, a coded slice that defines the slice S, coded slice data that defines the slice data, and coded slice data that defines the slice data. A diagram showing the included coding tree unit and the coding units included in the coding tree unit is shown.
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号
装置31が参照するデータの集合が規定されている。シーケンスSEQは、図4の符号化ビデオシーケンスに示すように、ビデオパラメータセット(Video Parameter Set)、シーケン
スパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャヘッダ(picture header)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
(encoded video sequence)
The encoded video sequence defines a set of data that the
ビデオパラメータセットVPSは、複数のレイヤから構成されている画像において、複数
の画像に共通する符号化パラメータの集合及び画像に含まれる複数のレイヤ及び個々のレイヤに関連する符号化パラメータの集合が規定されている。
A video parameter set VPS specifies a set of coding parameters common to multiple images, a set of coding parameters related to multiple layers included in an image, and individual layers in an image composed of multiple layers. It is
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装
置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れか
を選択する。
The sequence parameter set SPS defines a set of coding parameters that the
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために
動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)及びスケーリングリスト(量子化マトリックス)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
The picture parameter set PPS defines a set of coding parameters that the
ピクチャヘッダでは、1枚の符号化ピクチャに含まれる全てのスライスに共通の符号化パラメータが定義される。例えばPOC(Picture Order Count)や分割に関する符号化パラメータが含まれる。 The picture header defines coding parameters common to all slices included in one coded picture. For example, POC (Picture Order Count) and coding parameters related to division are included.
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図4の符号化ピクチャに示すよ
うに、スライス0~スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)
。
(coded picture)
The encoded picture defines a set of data that the
.
なお、以下、スライス0~スライスNS-1のそれぞれを区別する必要が無い場合、符号の
添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
In the following description, if there is no need to distinguish between
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照
するデータの集合が規定されている。スライスは、図4の符号化スライスに示すように、
スライスヘッダ、及び、スライスデータを含んでいる。
(coded slice)
The encoded slice defines a set of data that the
It contains a slice header and slice data.
スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。
The slice header includes a coding parameter group that the
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライス等が挙げられる。なお、インター予測は、単予測、双予測に限
定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
Slice types that can be designated by the slice type designation information include (1) I slices that use only intra prediction during encoding, (2) P slices that use unidirectional prediction or intra prediction during encoding, (3) B slices using uni-prediction, bi-prediction, or intra-prediction in encoding. Note that inter prediction is not limited to uni-prediction and bi-prediction, and a predicted image may be generated using more reference pictures. Hereinafter, when referred to as P and B slices, they refer to slices containing blocks for which inter prediction can be used.
なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいてもよい。 Note that the slice header may include a reference (pic_parameter_set_id) to the picture parameter set PPS.
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータは、図4の符号化スライ
スヘッダに示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(encoded slice data)
The encoded slice data defines a set of data that the
(符号化ツリーユニット)
図4の符号化ツリーユニットには、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)
分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)
分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分
割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
(encoding tree unit)
The coding tree unit in FIG. 4 defines a set of data that the
split), binary tree split (BT (Binary Tree) split) or ternary tree split (TT (Ternary Tree)
division) into coding units CU, which are basic units for coding processing. BT partitioning and TT partitioning are collectively called multi-tree partitioning (MT (Multi Tree) partitioning). A tree-structured node obtained by recursive quadtree partitioning is called a coding node. Intermediate nodes of quadtrees, binary trees, and ternary trees are coding nodes, and the CTU itself is defined as the top-level coding node.
CTは、CT情報として、QT分割を行うか否かを示す分割フラグを含む。図5に分割の例を
示す。
CT includes, as CT information, a segmentation flag indicating whether to perform QT segmentation. Fig. 5 shows an example of division.
CUは符号化ノードの末端ノードであり、これ以上分割されない。CUは符号化処理の基本的な単位となる。 A CU is a terminal node of an encoding node and is not split any further. A CU is a basic unit of encoding processing.
(符号化ユニット)
図4の符号化ユニットに示すように、処理対象の符号化ユニットを復号するために動画
像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
(encoding unit)
As shown in the encoding unit in FIG. 4, a set of data that the
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCU
のサイズよりも大きい場合、CUは、サブCUに分割される。例えばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
Prediction processing may be performed in units of CUs or may be performed in units of sub-CUs obtained by further dividing a CU. If the CU and sub-CU sizes are equal, there is one sub-CU in the CU. CU is sub CU
, the CU is split into sub-CUs. For example, if the CU is 8x8 and the sub-CU is 4x4, the CU is divided into 4 sub-CUs consisting of 2 horizontal divisions and 2 vertical divisions.
予測の種類(予測モードCuPredMode)は、イントラ予測(MODE_INTRA)と、インター予測(MODE_INTER)の2つを少なくとも備える。さらにイントラブロツクコピー予測(MODE_IBC)
を備えても良い。イントラ予測、イントラブロツクコピー予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
The type of prediction (prediction mode CuPredMode) includes at least two of intra prediction (MODE_INTRA) and inter prediction (MODE_INTER). In addition intra block copy prediction (MODE_IBC)
may be provided. Intra prediction and intra block copy prediction are predictions within the same picture, and inter prediction refers to prediction processing performed between different pictures (for example, between display times or between layer images).
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位
でエントロピー符号化してもよい。
Transformation/quantization processing is performed in units of CUs, but the quantized transform coefficients may be entropy-encoded in units of subblocks such as 4x4.
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。 A predicted image is derived from the prediction parameters associated with the block. The prediction parameters include prediction parameters for intra prediction and inter prediction.
(動画像復号装置の構成)
本実施形態に係る動画像復号装置31(図6)の構成について説明する。
(Configuration of video decoding device)
The configuration of the video decoding device 31 (FIG. 6) according to this embodiment will be described.
動画像復号装置31は、エントロピー復号部301、パラメータ復号部(予測画像復号装置
)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311(スケーリング部)、及び加算部312を含んで構成される。なお、後述の動画像符号化装置11に合わせ、動画像復号装
置31にループフィルタ305が含まれない構成もある。
The
パラメータ復号部302は、さらに、ヘッダ復号部3020、CT情報復号部3021、及びCU復号
部3022(予測モード復号部)を備えており、CU復号部3022はTU復号部3024を備えている。これらを総称して復号モジュールと呼んでもよい。ヘッダ復号部3020は、符号化データからVPS、SPS、PPS等のパラメータセット情報、スライスヘッダ(スライス情報)を復号す
る。CT情報復号部3021は、符号化データからCTを復号する。CU復号部3022は符号化データからCUを復号する。TU復号部3024は、符号化データから、変換スキップフラグtransform_skip_flagとQP更新情報(量子化補正値)と量子化変換係数(residual_coding)を復号する。
TU復号部3024は、変換ユニットのサイズ(tbWidthとtbHeight)が所定の最大サイズ以
下である場合(tbWidth<=MaxTsSize && tbHeight<=MaxTsSize)、transform_skip_flag[x0][y0][cIdx]を復号する。
TU復号部3024は、TUに予測誤差が含まれている場合(例えば、tu_cbf_luma[x0][y0]が
1の場合)、符号化データからQP更新情報と量子化変換係数を復号する。量子化変換係数の導出では複数のモード(例えばRRCモードとTSRCモード)を備えてもよい。具体的には
、変換を用いる通常の予測誤差の導出(RRC:Regular Residual Coding)と、変換を用いな
い変換スキップモードでの予測誤差の導出(TSRC:Transform Skip Residual Coding)とで
、異なる処理を実施してもよい。QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値である。
The
また、以降では処理の単位としてCTU、CUを使用した例を記載するが、この例に限らず
、サブCU単位で処理をしてもよい。あるいはCTU、CUをブロック、サブCUをサブブロック
と読み替え、ブロックあるいはサブブロック単位の処理としてもよい。
Further, although an example using CTU and CU as units of processing will be described below, the processing is not limited to this example, and processing may be performed in units of sub-CUs. Alternatively, CTU and CU may be read as blocks, and sub-CU may be read as sub-blocks, and processing may be performed in units of blocks or sub-blocks.
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロ
ピー復号を行って、個々の符号(シンタックス要素)をパースする。エントロピー符号化には、シンタックス要素の種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックス要素を可変長符号化する方式と、予め定められた表、あるいは計算式を用いてシンタックス要素を可変長符号化する方式がある。前者の例としてCABAC(Context Adaptive Binary Arithmetic Coding)が挙げられる。パースされた符号には、予測画像を生成するための予測情報及び、差分画像を生成するための予測誤差等がある。
The
エントロピー復号部301は、分離した符号をパラメータ復号部302に出力する。分離した符号とは、例えば、予測モードCuPredModeである。どの符号を復号するかの制御は、パラメータ復号部302の指示に基づいて行われる。
(基本フロー)
図7は動画像復号装置31の概略的動作を説明するフローチャートである。
(Basic flow)
FIG. 7 is a flowchart for explaining a schematic operation of the
(S1100:パラメータセット情報復号)ヘッダ復号部3020は、符号化データからVPS、SPS、PPS、SEI、PH等のパラメータセット情報を復号する。
(S1100: Parameter Set Information Decoding)
(S1200:スライス情報復号)ヘッダ復号部3020は、符号化データからスライスヘッダ
(スライス情報)を復号する。
(S1200: Slice Information Decoding)
以下、動画像復号装置31は、対象ピクチャに含まれる各CTUについて、S1300からS5000
の処理を繰り返すことにより各CTUの復号画像を導出する。
Below, the
The decoded image of each CTU is derived by repeating the process of .
(S1300:CTU情報復号)CT情報復号部3021は、符号化データからCTUを復号する。
(S1300: CTU Information Decoding) CT
(S1400:CT情報復号)CT情報復号部3021は、符号化データからCTを復号する。
(S1400: CT Information Decoding) CT
(S1500:CU復号)CU復号部3022はS1510、S1520を実施して、符号化データからCUを復
号する。また、CU復号部3022は、符号化データからCU単位で量子化パラメータの差分CuQpDeltaValを復号し、量子化パラメータを導出する。
(S1500: CU Decoding)
(S1510:CU情報復号)CU復号部3022は、符号化データからCU情報、予測情報、TU分割
フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を復号する。
(S1510: CU information decoding)
(S1520:TU情報復号)TU復号部3024は、TUに予測誤差が含まれている場合に、符号化
データからQP更新情報と量子化変換係数を復号する。
(S1520: TU information decoding)
(S2000:予測画像生成)予測画像生成部308は、対象CUに含まれる各ブロックについて、予測情報に基づいて予測画像を生成する。
(S2000: Generate Predicted Image) The predicted
(S3000:逆量子化・逆変換)逆量子化・逆変換部311は、対象CUに含まれる各TUについて、逆量子化・逆変換処理を実行する。
(S3000: Inverse Quantization/Inverse Transform) The inverse quantization/
(S4000:復号画像生成)加算部312は、予測画像生成部308より供給される予測画像と
、逆量子化・逆変換部311より供給される予測誤差とを加算することによって、対象CUの
復号画像を生成する。
(S4000: Decoded image generation) The
(S5000:ループフィルタ)ループフィルタ305は、復号画像にデブロッキングフィルタ、SAO (Sample Adaptive Filter)、ALF (AdaptiveLoopFilter)等のループフィルタをかけ、復号画像を生成する。
(S5000: Loop Filter)
(量子化変換係数の導出、残差符号化)
ロスレス符号化や原画の画素間相関が小さい時には、変換を実施しない方が、符号化効率は高い場合がある。変換を実施しない技術を変換スキップ(Transform Skip)と称す。変換スキップは、Identical Transformとも呼ばれ、量子化パラメータに応じた変換係数
のスケーリングのみを行う。変換スキップであるかはシンタックス要素transform_skip_flagを用いて通知される。transform_skip_flagは、Y, Cb, Crの各色コンポーネント(cIdx)ごとに通知されてもよい。
(Derivation of quantized transform coefficients, residual coding)
In the case of lossless encoding or when the correlation between pixels in the original image is small, the encoding efficiency may be higher if no transform is performed. A technique that does not perform any transformation is called Transform Skip. Transform skipping, also called Identical Transform, only scales the transform coefficients according to the quantization parameter. The transform skip is notified using the syntax element transform_skip_flag. transform_skip_flag may be signaled for each color component (cIdx) of Y, Cb, and Cr.
変換を用いる通常の予測誤差の導出(RRC:Regular Residual Coding)と、変換スキップ
モードでの予測誤差の導出(TSRC:Transform Skip Residual Coding)とでは、予測誤差の
符号化方法も復号方法も異なる。
Normal prediction error derivation using transform (RRC: Regular Residual Coding) and prediction error derivation in transform skip mode (TSRC: Transform Skip Residual Coding) differ in prediction error encoding and decoding methods.
図8はTU復号部3024のブロック図であり、RRC部30241とTSRC部30242が含まれる。RRC部30241は変換を用いる通常の予測誤差を導出する処理部であり、TSRC部30242は変換スキッ
プモードでの予測誤差を導出する処理部である。
FIG. 8 is a block diagram of
図9(a)sps_transform_skip_enabled_flagは、各TUでtransform_skip_flagが通知されるか否かを示すフラグである。sps_transform_skip_enabled_flag=1は、各TUでtransform_skip_flagが通知されることを示す。sps_transform_skip_enabled_flag=0は、各TUでtransform_skip_flagが通知されないことを示す。sps_transform_skip_enabled_flagが通知さ
れない場合、0と推定される。
FIG. 9(a) sps_transform_skip_enabled_flag is a flag indicating whether transform_skip_flag is notified in each TU. sps_transform_skip_enabled_flag=1 indicates that transform_skip_flag is notified in each TU. sps_transform_skip_enabled_flag=0 indicates that transform_skip_flag is not signaled in each TU.
図10(b)のtransform_skip_flag[x0][y0][cIdx]は、左上座標が(x0,y0)、色成分がcIdx
のブロックにおいて、変換が適用されるか否かを示す。transform_skip_flag=1(変換ス
キップモード)の場合、このブロックには変換は適用されない。transform_skip_flag=0
の場合、このブロックに変換が適用されるか否かは他のパラメータに依存する。
transform_skip_flag[x0][y0][cIdx] in FIG. 10(b) has upper left coordinates (x0, y0) and color component cIdx
, indicates whether the transform is applied. If transform_skip_flag=1 (transform skip mode), no transform is applied to this block. transform_skip_flag=0
, whether a transform is applied to this block depends on other parameters.
図11から図13、および図14から図15は各々、RRC(Regular Residual Coding)、TSRC(Transform Skip Residual Coding)での変換係数(予測誤差)の符号化データの構造(符号化方法)を示すシンタックステーブルである。 FIGS. 11 to 13 and FIGS. 14 to 15 respectively show the structures (encoding methods) of encoded data of transform coefficients (prediction errors) in RRC (Regular Residual Coding) and TSRC (Transform Skip Residual Coding). It is a syntax table.
(RRC部、RRCモード)
変換スキップしない通常の予測誤差符号化方法(図11から図13)において、RRC部30241は、LAST位置を示すシンタックス要素(図示しない)を復号し、LAST位置(LastSignificantCoeffX, LastSignificantCoeffY)を導出する。LAST位置は、TUの変換係数を低周波数成分から高周波数成分の方向にスキャンする場合の最後の非ゼロ係数の位置である。高周波数成分から順に変換係数(係数)を符号化、復号する場合、LAST位置は最初に復号する量子化変換係数の位置を示す。次に、RRC部30241は、LAST位置を参照してsb_coded_flagを復号する。sb_coded_flagは、サブブロックに非ゼロ係数が含まれるか否かを示すフラグである。サブブロックはTUを4x4単位に分割した領域である。sb_coded_flag=1(サブブロックに非ゼロ係数が含まれる)であれば、RRC部30241はsig_coeff_flagを復号する。sig_coeff_flagは係数値が非ゼロか否かを示すフラグである。sig_coeff_flag=1(係数値は非ゼロ)であれば、RRC部30241はabs_level_gtx_flag、par_level_flag、abs_remainder、dec_abs_levelを復号する。これらは係数の絶対値を示すシンタックス要素である。abs_level_gtx_flag[n][j]はスキャン位置nの係数の絶対値が(j<<1)+1より大きいか否かを表すフラグである。abs_level_gtx_flag[n][j]が通知されない場合、0と推定される。par_level_flag[n]はスキャン位置nの係数のパリティである。par_level_flag[n][j]が通知されない場合、0と推定される。abs_remainder[n]はスキャン位置nの係数の絶対値の残り(remaining)を表し、ゴロム・ライス符号(Golomb-Rice code)により復号される。abs_remainder[n]が通知されない場合、0と推定される。dec_abs_level[n]はスキャン位置nにおける係数の絶対値を導出するための残差の絶対値である。dec_abs_level[n]が通知されない場合、0と推定される。RRC部30241はこれらのシンタックス要素から係数の絶対値を導出する。
(RRC part, RRC mode)
In the normal prediction error encoding method without transform skip (FIGS. 11 to 13), the
上記のように、RRC部30241は、TUのサブブロックにおいてLAST位置を復号することが特徴である。
As described above, the
(TSRC部、TSRCモード)
変換を実施しない場合(変換スキップモード)の予測誤差符号化方法(図14、図15)において、TSRC部30242は、各サブブロックのsb_coded_flagを復号する。sb_coded_flag=1(サブブロックに非ゼロ係数が含まれる)であれば、TSRC部30242は、サブブロック内の位置(xC,
xC)の変換係数のsig_coeff_flag[xC][yC]を復号する。sig_coeff_flag=1(係数値は非ゼ
ロ)であれば、TSRC部30242はcoeff_sign_flag、abs_level_gtx_flag、par_level_flag、abs_remainderを復号する。これらは係数の絶対値を示すシンタックス要素であり、定義は上述の通りである。TSRC部30242はこれらのシンタックス要素から係数の絶対値を導出する。
(TSRC section, TSRC mode)
In the predictive error coding method (FIGS. 14 and 15) when no transform is performed (transform skip mode), the
Decode the sig_coeff_flag[xC][yC] of the transform coefficients of xC). If sig_coeff_flag=1 (coefficient value is non-zero), the
上記のように、TSRC部30242は、TUのサブブロックにおいてLAST位置を復号しないこと
が特徴である。
As described above, the
(abs_remainderとdec_abs_levelの復号)
TU復号部3024は、符号化データから、ライスパラメータcRiceParamを用いて、残差絶対値のシンタックス値(abs_remainderもしくはdec_abs_level、以下残差と記す)を復号する。当該シンタックスのバイナリゼーションには、プリフィックスとサフィックスとから構成される符号を用いる。プリフィックスとサフィックスとして、ゴロムライス符号のアルファ符号と固定長バイナリゼーションを用いてもよい。サフィックスはEG(k)(Exponential-Golomb code)符号を用いてもよい。シンタックス要素として符号化される、「変換係数の残差の絶対値(残差絶対値)」を単に「残差」と表現する。
(decoding of abs_remainder and dec_abs_level)
The
本実施形態では、ゴロムライス符号として、Truncated Rice(TR)符号を用い、プリフィックスをprefixValTRとsuffixValTRに分けて符号化し、EG(k)符号では、サフィックスをexp部のexpValとescape部のescapeValに分けて符号化する例を説明する。残差(abs_remainderもしくはdec_abs_level)を1<<cRiceParam、(((1<<expVal))-1)<<cRiceParamで割った商は各々prefixValTRとexpValを用いて符号化される。残差(abs_remainderもしくはdec_abs_level)を1<<cRiceParam、(1<<expVal<<cRiceParam)で割った余りは、各々suffixValTR、escapeValを用いて符号化される。つまり、残差は以下の様に符号化される。 In this embodiment, Truncated Rice (TR) code is used as the Golomb Rice code, and the prefix is divided into prefixValTR and suffixValTR for encoding. An example of encoding will be described. The quotients of dividing the residual (abs_remainder or dec_abs_level) by 1<<cRiceParam, (((1<<expVal))-1)<<cRiceParam are encoded using prefixValTR and expVal, respectively. The remainders of dividing the residual (abs_remainder or dec_abs_level) by 1<<cRiceParam, (1<<expVal<<cRiceParam) are encoded using suffixValTR and escapeVal, respectively. That is, the residual is encoded as follows.
((prefixValTR + ((1<<expVal-1))) << cRiceParam) + suffixValTR + escapeVal
残差が所定の値cMax以下の場合には、prefixValTRとsuffixValTRだけが符号化される。
((prefixValTR + ((1<<expVal-1))) << cRiceParam) + suffixValTR + escapeVal
If the residual is less than or equal to a predetermined value cMax, only prefixValTR and suffixValTR are encoded.
prefixVal = (prefixValTR<<cRiceParam) + suffixValTR
残差が所定の値より大きい場合(suffixValが存在する場合)、cMaxと等しいprefixValを示すprefixValTRに加えてexpValとescapeValが符号化される。
prefixVal = (prefixValTR<<cRiceParam) + suffixValTR
If the residual is greater than a predetermined value (if suffixVal is present) then prefixValTR indicating prefixVal equal to cMax plus expVal and escapeVal are encoded.
prefixVal = (prefixValTR<<cRiceParam) = cMax
suffixVal = (((1<<expVal)-1)<<cRiceParam) + escapeVal
ここでは残差は以下で表せる。プリフィックスだけで表せる場合の残差は下式である。
prefixVal = (prefixValTR<<cRiceParam) = cMax
suffixVal = (((1<<expVal)-1)<<cRiceParam) + escapeVal
Here the residual can be expressed as The residual when it can be expressed only by the prefix is the following formula.
残差=((prefixValTR) << cRiceParam) + suffixValTR
それ以外(プリフィックスだけで表せない場合、もしくは、prefixValTR=6)の場合の残
差は下式である。
Residual = ((prefixValTR) << cRiceParam) + suffixValTR
Otherwise (if it cannot be represented by prefix only, or if prefixValTR=6), the residual is given by the following equation.
残差=((prefixValTR + (1<<(expVal)-1 )) << cRiceParam) + escapeVal
また以下のように、prefixVal、suffixValを定義してもよい。
residual = ((prefixValTR + (1<<(expVal)-1 )) << cRiceParam) + escapeVal
You can also define prefixVal and suffixVal as follows.
prefixVal = (prefixValTR << cRiceParam) + suffixValTR
suffixVal = (((2<<expVal)-2) << cRiceParam) + escapeVal
(流れ)
TU復号部3024は、まずプリフィックスprefixValの最大値cMaxを、cRiceParamから導出
する。
prefixVal = (prefixValTR << cRiceParam) + suffixValTR
suffixVal = (((2<<expVal)-2) << cRiceParam) + escapeVal
(flow)
cMax = 6 << cRiceParam
ここで6はprefixValTRの最大値である。maxPrefixValTRとも呼ぶ。
cMax = 6 << cRiceParam
Here 6 is the maximum value of prefixValTR. Also called maxPrefixValTR.
TU復号部3024は、後述のTruncated Rice(TR)符号のバイナリゼーションに基づいて符号化データからプリフィックスの値(prefixVal)を復号する。なお、プリフィックスと残
差の関係は以下のとおりである。
The
prefixVal = Min(cMax,abs_remainder[n])
あるいは以下でもよい。
prefixVal = Min(cMax,abs_remainder[n])
Or it can be:
prefixVal = Min(cMax,dec_abs_level)
続いて、残差がcMaxより大きい場合(prefixValだけでは残差を表現できない場合)、TU復号部3024は、以下の関係式を満たすsuffixValをさらに復号する。
prefixVal = Min(cMax,dec_abs_level)
Subsequently, if the residual is larger than cMax (if the residual cannot be represented by prefixVal alone),
suffixVal = abs_remainder[n] - cMax
あるいは以下でもよい。
suffixVal = abs_remainder[n] - cMax
Or it can be:
suffixVal = dec_abs_level - cMax
具体的には、TU復号部3024は、suffixValが存在する場合、符号化データからLimited k-th order Exp-Golomb(EG(k))のバイナリゼーションに基づいてsuffixValを復号する。suffixValが存在する場合とは、TR符号のprefixValのビット列が長さ6(=maxPrefixValTR)、つまり"111111"の場合である。ここで、次数kをcRiceParam、変数maxPreExtLenを11、変数truncSuffixLenを15とする。maxPreExtLenは固定値(11)とせず、変換係数のレンジlog2TransformRangeに応じて導出してもよい。
suffixVal = dec_abs_level - cMax
Specifically, when suffixVal exists,
本実施形態において例えば、maxPreExtLenを以下の式で導出してもよい。 In this embodiment, for example, maxPreExtLen may be derived by the following formula.
maxPreExtLen = (32 - 6) - log2TransformRange = 26 - log2TransformRange
例えば、log2TransformRangeが後述の(式R-1)の場合、以下のように導出してもよい。
maxPreExtLen = (32 - 6) - log2TransformRange = 26 - log2TransformRange
For example, when the log2TransformRange is (Equation R-1) described later, it may be derived as follows.
maxPreExtLen = extended_precision_processing_flag ? 26 - Max(15, BitDepth + BDOFFSET) : 11
ここで、maxPreExtLen、escapeLengthは、各々、EG(k)符号におけるexp部とescape部の長さの最大値を示す。log2TransformRangeは、逆量子化・逆変換部311で処理される変換
での係数のレンジを示す変数である。
maxPreExtLen = extended_precision_processing_flag ? 26 - Max(15, BitDepth + BDOFFSET) : 11
Here, maxPreExtLen and escapeLength respectively indicate the maximum lengths of the exp part and the escape part in the EG(k) code. log2TransformRange is a variable that indicates the range of coefficients in the transform processed by the inverse quantization/
図19は、prefixValTR、maxPreExtLenとtruncSuffixLenの符号の関係を説明した図であ
る。残差の符号はTR符号のプリフィックス(prefixValTR)と、EG(k)符号のサフィックスから構成され、サフィックスはexp部とescape部から構成される。prefixValTR、escape部の長さは各々maxPrefixValTR、truncSuffixLenであり、exp部の最大長はmaxPreExtLenであ
る。以降では、maxPrefixValTR=6として説明する。
FIG. 19 is a diagram explaining the sign relationship of prefixValTR, maxPreExtLen and truncSuffixLen. The residual code consists of a TR code prefix (prefixValTR) and an EG(k) code suffix, and the suffix consists of an exp part and an escape part. The lengths of prefixValTR and escape are maxPrefixValTR and truncSuffixLen, respectively, and the maximum length of exp is maxPreExtLen. In the following explanation, maxPrefixValTR=6.
(Truncated Rice(TR)符号のバイナリゼーション)
TRバイナリゼーションの入力symbolValはprefixValであり、TRバイナリゼーションでは、symbolVal(==prefixVal)の(1<<cRiceParam)による商をprefixValTR、余りをsuffixValTRとして符号化する。なお、TR符号の入力symbolValとprefixValTRの関係は以下のとおりである。
(binarization of Truncated Rice (TR) code)
The input symbolVal for TR binarization is prefixVal, and in TR binarization, the quotient of symbolVal (==prefixVal) by (1<<cRiceParam) is encoded as prefixValTR and the remainder as suffixValTR. The relationship between the input symbolVal of the TR code and prefixValTR is as follows.
prefixValTR = symbolVal>>cRiceParam
prefixValTRは以下の定義でビット列に変換される。prefixValTR<(cMax>>cRiceParam)
の場合、prefixValTR+1の長さのbinIdxでインデックスされたビット列である。binIdx<prefixValTRの場合、ビン(bins)は"1"、binIdx==prefixValTRの場合、ビンは"0"である。それ以外(prefixValTR==(cMax>>cRiceParam)の場合、長さがcMax>>cRiceParamの"1"の列である。なお、ビンとは、"0"か"1"からなるビット列である。binIdxとは、ビット列の先頭からの位置を示す値であり、binIdx=0が先頭(バイナリ列の左端)に対応する。以下にprefixValTRが0~5の場合のビット列(bins)の例を示す。
prefixValTR = symbolVal>>cRiceParam
prefixValTR is converted to a bit string with the following definition. prefixValTR<(cMax>>cRiceParam)
, is a bit string indexed by binIdx of
prefixValTR==0 bins=0
prefixValTR==1 bins=10
prefixValTR==2 bins=110
prefixValTR==3 bins=1110
prefixValTR==4 bins=11110
prefixValTR==5 bins=111110
…
ただし、symbolVal>=cMax(すなわちprefixVal==(6<<cRiceParam))の場合は下式である。
prefixValTR==0 bins=0
prefixValTR==1 bins=10
prefixValTR==2 bins=110
prefixValTR==3 bins=1110
prefixValTR==4 bins=11110
prefixValTR==5 bins=111110
…
However, if symbolVal>=cMax (that is, prefixVal==(6<<cRiceParam)), the following formula is used.
prefixValTR==6 bins=111111
TR符号のprefixValTRのbinsはtruncatedなアルファ符号(unary符号)である。ここでtruncatedであるとは最大値に一致する場合には、最後の0を省略することを意味する。
prefixValTR==6 bins=111111
The bins of prefixValTR of the TR code are truncated alpha codes (unary codes). Here truncated means omitting the trailing 0 if it matches the maximum value.
cMaxがsymbolValより大きく(symbolVal<cMax)、cRiceParam>0の場合には、TRビン列のsuffixTRが存在し、下記のように導出される。suffixValTRはTRビット列のsuffixである。 If cMax is greater than symbolVal (symbolVal<cMax) and cRiceParam>0, then there is a TR bin string suffixTR, derived as follows: suffixValTR is the suffix of the TR bit string.
suffixValTR = symbolVal - (prefixValTR<<cRiceParam)
また、TRビット列のsuffixのバイナリゼーションは、最大値cMaxFLを(1<<cRiceParam)-1とする、固定長バイナリゼーション(後述)を用いる。
suffixValTR = symbolVal - (prefixValTR<<cRiceParam)
Also, for the binarization of the suffix of the TR bit string, fixed-length binarization (described later) is used with the maximum value cMaxFL set to (1<<cRiceParam)-1.
なお、symbolVal==cMaxの場合には、残差のサフィックスは、上記TRバイナリゼーショ
ンのsuffixValTRではなく、EG(k)符号のバイナリゼーションを用いる。
Note that when symbolVal==cMax, the binarization of the EG(k) code is used for the residual suffix instead of the suffixValTR of the above TR binarization.
(Limited k-th order Exp-Golomb/EG(k)符号のバイナリゼーション)
残差のsuffixValはEG(k)符号のバイナリゼーションを用いてもよい。EG(k)符号は、次
数k(=cRiceParam)とmaxPreExtLenを入力として得られるバイナリゼーションであり、以下の疑似コードで示す。EG(k)符号は長さmaxPreExtLen以下からなるexp部と、escapeLength長の固定長バイナリゼーションのescape部からなる。preExtLenは、exp部のput(1)の数をカウントする変数であり、exp部で符号化される値espValに等しい。つまりexpVal=preExtLen。対応する残差の値はexpVal<<cRiceParamである。escapeValはescape部で符号化される値である。
// exp部
codeValue = symbolVal >> k
preExtLen = 0
while((preExtLen<maxPreExtLen) && (codeValue > ((2<<preExtLen) - 2)))) {
preExtLen++
put(1)
}
if(preExtLen == maxPreExtLen)
escapeLength = truncSuffixLen
else {
escapeLength = preExtLen + k
put(0)
}
// escape部
symbolVal = symbolVal - (((1<<preExtLen)-1)<<k)
while((escapeLength--)>0)
put((symbolVal>>escapeLength) & 1)
ここで、symbolValは入力値であり、残差からprefixVal(==cMax)を引いた値である。put(X)は、X("0"または"1")をビット列の最後に追加してビット列を作る操作を示す。ビット列の初期値は空({})である。escapeLengthは、symbolValにおいてescape部から出力されるビット位置を示す変数である。
なお、escape部は以下のようにしてもよい。
(Limited k-th order Exp-Golomb/EG(k) code binarization)
The residual suffixVal may use binarization of the EG(k) code. The EG(k) code is a binarization obtained with the order k (=cRiceParam) and maxPreExtLen as input, and is shown in the pseudocode below. An EG(k) code consists of an exp part of length maxPreExtLen or less and an escape part of fixed length binarization of escapeLength length. preExtLen is a variable that counts the number of put(1)s in the exp part and is equal to the value espVal encoded in the exp part. That is, expVal=preExtLen. The corresponding residual values are expVal<<cRiceParam. escapeVal is the value encoded in the escape part.
// exp part
codeValue = symbolVal >> k
preExtLen = 0
while((preExtLen<maxPreExtLen) && (codeValue >((2<<preExtLen) - 2)))) {
preExtLen++
put(1)
}
if(preExtLen == maxPreExtLen)
escapeLength = truncSuffixLen
else {
escapeLength = preExtLen + k
put(0)
}
// escape part
symbolVal = symbolVal - (((1<<preExtLen)-1)<<k)
while((escapeLength--)>0)
put((symbolVal>>escapeLength) & 1)
where symbolVal is the input value and the residual minus prefixVal(==cMax). put(X) indicates an operation to create a bit string by adding X ("0" or "1") to the end of the bit string. The initial value of the bit string is empty ({}). escapeLength is a variable indicating the bit position output from the escape section in symbolVal.
Note that the escape section may be configured as follows.
symbolVal = symbolVal - (((2<<preExtLen)-2)<<k)
while((escapeLength--)>0)
put((symbolVal>>escapeLength) & 1)
(固定長バイナリゼーション)
固定長バイナリゼーションは、最大値cMaxFL、値symbolValに対して、Ceil(Log2(cMaxFL+1))の長さfixedLengthのunsigned整数列(2進数列)を用いて行う。なお、位置binIdxの0が最上位ビット(MSB)に対応し、binIdxが大きくなるにつれて最下位ビット(LSB)に近づく。
symbolVal = symbolVal - (((2<<preExtLen)-2)<<k)
while((escapeLength--)>0)
put((symbolVal>>escapeLength) & 1)
(fixed length binarization)
Fixed-length binarization is performed using an unsigned integer sequence (binary sequence) of length fixedLength of Ceil(Log2(cMaxFL+1)) for maximum value cMaxFL and value symbolVal. Note that 0 in position binIdx corresponds to the most significant bit (MSB), and as binIdx increases, it approaches the least significant bit (LSB).
(残差の復号のまとめ)
TU復号部3024は、prefixValとsuffixValから構成される残差を復号する。
(Summary of residual decoding)
TU復号部3024は、cRiceParamからcMaxを導出し、cMaxを上限として符号化データからprefixValを復号し、suffixValが存在する場合にはsuffixValを復号する。
具体的には、TU復号部3024は、TRバイナリゼーションのprefixValTRを復号し、symbolVal<cMax、cRiceParam>0(つまりprefixVal<cMax、prefixVal<6)の場合には、さらに符号化データから固定長バイナリゼーションのsuffixValTRを復号する。この場合、suffixValが存在しない。
Specifically, the
TU復号部3024は、上記suffixValが存在しない場合、以下の式で、abs_remainder[n]、dec_abs_levelを導出する。
abs_remainder[n] = (prefixValTR<<cRiceParam) + suffixValTR
dec_abs_level[n]= (prefixValTR<<cRiceParam) + suffixValTR
それ以外の場合(prefixVal==cMax、prefixValTR==6の場合)、TU復号部3024は、EG(k)符号によりsuffixValを復号し、下式でabs_remainder[n]、dec_abs_level[n]を導出する。
abs_remainder[n] = (prefixValTR<<cRiceParam) + suffixValTR
dec_abs_level[n]= (prefixValTR<<cRiceParam) + suffixValTR
Otherwise (if prefixVal==cMax, prefixValTR==6), the
abs_remainder[n] = cMax + suffixVal
dec_abs_level[n] = cMax + suffixVal
ここで、suffixValがEG(k)符号のexp部のpreExtLenとescape部のescapeValからなる場
合、下記が成り立つ。
abs_remainder[n] = cMax + suffixVal
dec_abs_level[n] = cMax + suffixVal
Here, when suffixVal consists of preExtLen of the exp part of the EG(k) code and escapeVal of the escape part, the following holds.
suffixVal = (preExtLen<<cRiceParam) + escapeVal
まとめると、TU復号部3024は、符号化データからTRバイナリゼーションのプリフィックスprefixValと、EG(k)符号のexp部のpreExtLenとescape部のescapeValからなるsuffixValを復号して、残差(abs_remainder[n]もしくはdec_abs_level[n])を導出する。
suffixVal = (preExtLen<<cRiceParam) + escapeVal
In summary, the
abs_remainder[n] = prefixVal + suffixVal = (prefixValTR<<cRiceParam) + (prefix
ValTR < 6) ? suffixValTR : (1<<expVal<<cRiceParam) + escapeVal
ここで、(prefixValTR < 6)の場合にpreExtLen=escapeVal=0とすると、
abs_remainder[n] = (prefixValTR+preExtLen)<<cRiceParam + (prefixValTR < 6) ? suffixValTR : escapeVal
dec_abs_level[n]の導出も同様である。
なお、truncatedなアルファ符号のpredfixValTRのbinsとアルファ符号のpredExtLenのbinsを連結した符号もアルファ符号であるので、TR符号のprefixValとEG(k)符号のexp部は一体のものとして復号してもよい。この場合、最大長maxPreExtLen+6のアルファ符号を符号化データから読み取って、アルファ符号の長さprefixtmp(=prefixValTR+expVal)を復号する。ここで、maxPreExtLen+6は、prefixValTRの最大長6と、EG(k)符号のexp部の最大長maxPreExtLenの和である。
abs_remainder[n] = prefixVal + suffixVal = (prefixValTR<<cRiceParam) + (prefix
ValTR < 6) ? suffixValTR : (1<<expVal<<cRiceParam) + escapeVal
Here, if (prefixValTR < 6) and preExtLen=escapeVal=0,
abs_remainder[n] = (prefixValTR+preExtLen)<<cRiceParam + (prefixValTR < 6) ? suffixValTR : escapeVal
Derivation of dec_abs_level[n] is similar.
Note that the code that concatenates the bins of prefixValTR of the truncated alpha code and the bins of predExtLen of the alpha code is also an alpha code. good. In this case, an alpha code of maximum
TU復号部3024は、1<<cRiceParamの商と余りに分けて、残差を以下のように導出しても
よい。
The
残差 = (prefixRes << cRiceParam) + suffixRes
復号されたアルファ符号の長さをprefixtmpとすると、残差の指数部prefixResは下式で表される。
residual = (prefixRes << cRiceParam) + suffixRes
Assuming that the length of the decoded alpha code is prefixtmp, the residual exponent prefixRes is expressed by the following equation.
prefixRes = (prefixVal<6) ? prefixValTR : prefixValTR + (1<<expVal) - 1
prefixtmp<6の場合はprefixValTR=prefixtmp、prefixtmp>=6の場合はprefixValTR=6、expVal=prefixtmp-6であるので、以下で導出できる。
prefixRes = (prefixVal<6) ? prefixValTR : prefixValTR + (1<<expVal) - 1
If prefixtmp<6, prefixValTR=prefixtmp, and if prefixtmp>=6, prefixValTR=6 and expVal=prefixtmp-6, so they can be derived as follows.
prefixRes
= (prefixtmp<6) ? prefixtmp : 6 + (1<<(prefixtmp-6)) - 1
= (prefixtmp<6) ? prefixtmp : (1<<(prefixtmp-6)) + 5
また、
prefixRes = (prefixVal<6) ? prefixValTR : prefixValTR + (2<<expVal) - 2
を用いる構成の場合には以下でもよい。
prefixRes
= (prefixtmp<6) ? prefixtmp : 6 + (1<<(prefixtmp-6)) - 1
= (prefixtmp<6) ? prefixtmp : (1<<(prefixtmp-6)) + 5
again,
prefixRes = (prefixVal<6) ? prefixValTR : prefixValTR + (2<<expVal) - 2
In the case of a configuration using , the following may be used.
prefixRes
= (prefixtmp<6) ? prefixtmp : 6 + (2<<(prefixtmp-6)) - 2
= (prefixtmp<6) ? prefixtmp : (2<<(prefixtmp-6)) + 4
= (prefixtmp<6) ? prefixtmp : (1<<(prefixtmp-5)) + 4
ここでprefixtmp<6はprefixtmp<5としても処理できる。また、suffixValTRもescapeValもどちらも固定長バイナリゼーションなので、前者をcMaxFLのfixedLength、後者をescapeLength長のfixedLengthとして、同様にsuffixResも復号してよい。
prefixRes
= (prefixtmp<6) ? prefixtmp : 6 + (2<<(prefixtmp-6)) - 2
= (prefixtmp<6) ? prefixtmp : (2<<(prefixtmp-6)) + 4
= (prefixtmp<6) ? prefixtmp : (1<<(prefixtmp-5)) + 4
Here prefixtmp<6 can also be treated as prefixtmp<5. Also, since both suffixValTR and escapeVal are fixed-length binarizations, the former can be fixedLength of cMaxFL, the latter can be fixedLength of escapeLength length, and suffixRes can be decoded in the same way.
(量子化変換係数)
TU復号部3024(残差復号部30241)は、位置nに対して、順に、符号化データからabs_remainderを復号し、量子化変換係数AbsLevelをAbsLevelPass1とabs_remainderから以下の式で導出する。nはサブブロック内のスキャン順で最後の係数位置以下で、所定のビット数を復号するまでの位置のいずれかである。
(quantized transform coefficients)
The TU decoding unit 3024 (residual decoding unit 30241) sequentially decodes abs_remainder from the encoded data for the position n, and derives the quantized transform coefficient AbsLevel from AbsLevelPass1 and abs_remainder by the following formula. n is any position below the last coefficient position in the scan order in the sub-block until a predetermined number of bits are decoded.
AbsLevel[xC][yC] = AbsLevelPass1[xC][yC] + 2 * abs_remainder[n]
ここで、AbsLevelPass1[xC][yC] = sig_coeff_flag[xC][yC] + par_level_flag[n] + abs_level_gtx_flag[n][0] + 2 * abs_level_gtx_flag[n][1]。
AbsLevel[xC][yC] = AbsLevelPass1[xC][yC] + 2 * abs_remainder[n]
where AbsLevelPass1[xC][yC] = sig_coeff_flag[xC][yC] + par_level_flag[n] + abs_level_gtx_flag[n][0] + 2 * abs_level_gtx_flag[n][1].
TU復号部3024は、上記以外(所定のビット数を復号した時のn)の場合、符号化データ
からdec_abs_levelを復号し、以下の式によりAbsLevelを導出する。
In cases other than the above (n when decoding a predetermined number of bits),
if (dec_abs_level[n] == ZeroPos[n])
AbsLevel[xC][yC] = 0
else if (dec_abs_level[n] < ZeroPos)
AbsLevel[xC][yC] = dec_abs_level[n] + 1
else /*dec_abs_level[n] > ZeroPos[n]*/
AbsLevel[xC][yC] = dec_abs_level[n]
ここでZeroPosは以下の式で導出される。
if (dec_abs_level[n] == ZeroPos[n])
AbsLevel[xC][yC] = 0
else if (dec_abs_level[n] < ZeroPos)
AbsLevel[xC][yC] = dec_abs_level[n] + 1
else /*dec_abs_level[n] > ZeroPos[n]*/
AbsLevel[xC][yC] = dec_abs_level[n]
Here, ZeroPos is derived by the following formula.
ZeroPos[n] = ( QState < 2 ? 1 : 2 ) << cRiceParam
ここでQStateは依存量子化の状態を示す。
ZeroPos[n] = ( QState < 2 ? 1 : 2 ) << cRiceParam
where QState indicates the state of dependent quantization.
(ライスパラメータ導出)
係数の絶対値を表すシンタックス要素の内、abs_remainder、dec_abs_levelは、ゴロム・ライス符号(またはライス符号)でバイナリ化された値を、バイパス符号(CABACの等確率符号)により復号される。abs_remainderは変換係数の絶対値のオフセットに対する差分であり、dec_abs_levelは変換係数の絶対値である。
(Rice parameter derivation)
Of the syntax elements representing the absolute values of coefficients, abs_remainder and dec_abs_level are values binarized by Golomb-Rice code (or Rice code) and decoded by bypass code (equal probability code of CABAC). abs_remainder is the difference of the absolute value of the transform coefficient with respect to the offset, and dec_abs_level is the absolute value of the transform coefficient.
なお、ゴロム・ライス符号は、シンタックス要素を前半部(プリフィックス)と後半(リマインダー、サフィックス)の2つの部分に分割して符号化する。プリフィックスには0に近い値を短い符号量で符号化可能なアルファ符号(unary符号)を用いる。サフィックスにはライスパラメータcRiceParamを用いた固定長バイナリゼーションもしくはEG(k)バイナリゼーションを用いる。ライスパラメータが大きいほど、小さな値のビット長はより長く、大きな値のビット長がより短くなる特性がある。シンタックス要素の値の大きさの発生確率に応じて、ライスパラメータを調整することで符号量の削減が可能である。 In the Golomb-Rice code, syntax elements are encoded by dividing them into two parts, the first half (prefix) and the second half (reminder, suffix). An alpha code (unary code) capable of encoding a value close to 0 with a short code amount is used for the prefix. Fixed-length binarization or EG(k) binarization using Rice parameter cRiceParam is used for the suffix. The larger the Rice parameter, the longer the bit length of small values and the shorter the bit length of large values. It is possible to reduce the code amount by adjusting the Rice parameter according to the occurrence probability of the value of the syntax element.
本実施形態の動画像復号装置、動画像符号化装置では、既に導出された係数の絶対値から、復号するシンタックス要素の値を予測する。そして、その予測値から適切なライスパラメータを導出する。図17を用いて、以下に詳細を示す。 In the video decoding device and the video encoding device of this embodiment, values of syntax elements to be decoded are predicted from the absolute values of already derived coefficients. Then, an appropriate Rice parameter is derived from the predicted value. Details are shown below with reference to FIG.
現在のTUの左上座標を(x0,y0)、現在のスキャン位置を(xC,yC)、TUの幅と高さのlog2の値をそれぞれlog2TbWidth、log2TbHeightとする。また係数の絶対値を格納する配列を、
位置(x,y)を用いてAbsLevel[x][y]で表す。図17(a)はabs_remainder、または、dec_abs_levelを復号する際に用いる、係数の周りの復号済係数の位置を示している。周りの係数の絶対値和を表す変数をlocSumAbsとすると、TU復号部3024はRRCにおいてlocSumAbsを以下
のように導出する。
Let (x0,y0) be the upper left coordinate of the current TU, (xC,yC) be the current scan position, and log2TbWidth and log2TbHeight be the log2 values of the width and height of the TU, respectively. Also, the array that stores the absolute values of the coefficients is
It is represented by AbsLevel[x][y] using the position (x,y). FIG. 17(a) shows the positions of decoded coefficients around coefficients used when decoding abs_remainder or dec_abs_level. Letting locSumAbs be a variable representing the sum of absolute values of surrounding coefficients,
locSumAbs = 0
if(xC < (1<<log2TbWidth)-1) {
locSumAbs += AbsLevel[xC+1][yC]
if(xC < (1<<log2TbWidth)-2)
locSumAbs += AbsLevel[xC+2][yC]
if(yC < (1<<log2TbHeight)-1)
locSumAbs += AbsLevel[xC+1][yC+1]
}
if(yC < (1<<log2TbHeight)-1) {
locSumAbs += AbsLevel[xC][yC+1]
if(yC < (1<<log2TbHeight)-2)
locSumAbs += AbsLevel[xC][yC+2]
}
locSumAbs0 = locSumAbs
locSumAbs = Clip3(0, 31, locSumAbs-baseLevel*5)
1) 係数位置(xC+1,yC)がブロック内にある(xC<(1<<log2TbWidth)-1)とき、locSumAbsにt1(AbsLevel[xC+1][yC])の値を加える。
2) 1)のとき、さらに位置(xC+2,yC)がブロック内にある(xC<(1<<log2TbWidth)-2)とき、locSumAbsにt2(AbsLevel[xC+2][yC])の値を加える。
3) 1)のときさらに位置(xC+1,yC+1)がブロック内にある(yC<(1<<log2TbHeigh)-1)とき、locSumAbsにt3(AbsLevel[xC+1][yC+1])の値を加える。
4) 位置(xC,yC+1)がブロック内にある(yC<(1<<log2TbHeight)-1)とき、locSumAbsにt4(AbsLevel[xC][yC+1])の値を加える。
5) 4)のときさらに位置(xC,yC+2)がブロック内にある(yC<(1<<log2TbHeight)-2)
とき、locSumAbsにt5(AbsLevel[xC][yC+2])の値を加える。
以上の処理から計算されたlocSumAbsを変数baseLevelとクリップ処理によって以下のように更新する。
locSumAbs = 0
if(xC <(1<<log2TbWidth)-1) {
locSumAbs += AbsLevel[xC+1][yC]
if(xC <(1<<log2TbWidth)-2)
locSumAbs += AbsLevel[xC+2][yC]
if(yC <(1<<log2TbHeight)-1)
locSumAbs += AbsLevel[xC+1][yC+1]
}
if(yC <(1<<log2TbHeight)-1) {
locSumAbs += AbsLevel[xC][yC+1]
if(yC <(1<<log2TbHeight)-2)
locSumAbs += AbsLevel[xC][yC+2]
}
locSumAbs0 = locSumAbs
locSumAbs = Clip3(0, 31, locSumAbs-baseLevel*5)
1) Add the value of t1(AbsLevel[xC+1][yC]) to locSumAbs when the coefficient position (xC+1,yC) is within the block (xC<(1<<log2TbWidth)-1).
2) In case of 1), furthermore, when the position (xC+2,yC) is within the block (xC<(1<<log2TbWidth)-2), locSumAbs has t2(AbsLevel[xC+2][yC]) Add value.
3) If 1) and position (xC+1, yC+1) is within the block (yC<(1<<log2TbHeigh)-1), locSumAbs has t3(AbsLevel[xC+1][yC+1 ]) value.
4) Add the value of t4(AbsLevel[xC][yC+1]) to locSumAbs when position (xC,yC+1) is within the block (yC<(1<<log2TbHeight)-1).
5) If 4) then position (xC,yC+2) is also within the block (yC<(1<<log2TbHeight)-2)
then add the value of t5(AbsLevel[xC][yC+2]) to locSumAbs.
The locSumAbs calculated from the above processing are updated as follows by the variable baseLevel and clip processing.
locSumAbs = Clip3(0, 31, locSumAbs-baseLevel*5)
ここでbaseLevelは、abs_remainderを復号するとき(tcoeff==0)は4、dec_abs_levelを復
号するとき(tcoeff==1)は0としてもよい。tcoeffは復号対象がabs_remainderであるか、dec_abs_levelであるかを示す変数である。
locSumAbs = Clip3(0, 31, locSumAbs-baseLevel*5)
Here, baseLevel may be 4 when decoding abs_remainder (tcoeff==0) and 0 when decoding dec_abs_level (tcoeff==1). tcoeff is a variable indicating whether the decoding target is abs_remainder or dec_abs_level.
図17(b)に示すテーブルを用いて、導出されたlocSumAbsからabs_remainder、dec_abs_levelの復号に用いられるライスパラメータを導出する。 Using the table shown in FIG. 17(b), Rice parameters used for decoding abs_remainder and dec_abs_level are derived from the derived locSumAbs.
図示しないが、TU復号部3024は以下のようにテーブルを用いずに、式を用いてライスパラメータcRiceParamを導出してもよい。
Although not shown, the
if (baseLevel != 0)
cRiceParam = Max(0, floor(log2(15 * locSumAbs)) - 7)
else
cRiceParam = Max(0, floor(log2(9 * locSumAbs) + 20) - 5)
式としては上記のように、周囲の変換係数の和locSumAbsとの積和と、2を底とする対
数を用いることができる。ここでbaseLevel!=0は、abs_remainderの復号に用いる場合を
示し、else以下のbaseLevel==0は、dec_abs_levelの復号に用いる場合を示す。
if (baseLevel != 0)
cRiceParam = Max(0, floor(log2(15 * locSumAbs)) - 7)
else
cRiceParam = Max(0, floor(log2(9 * locSumAbs) + 20) - 5)
As the formula, the sum of products with the sum locSumAbs of surrounding transform coefficients and the logarithm with
TU復号部3024は、TSRCにおいて周りの復号済係数を用いず、ライスパラメータcRiceParamを常に1にセットする。
The
(量子化変換係数の導出、依存量子化)
逆量子化・逆変換部311は、変換係数を逆量子化する。量子化方法として、スカラー量
子化と依存量子化の2つの方法を備える。依存量子化の場合、さらにRRC部30241において逆量子化処理の一部を行ってもよい。
(Derivation of quantized transform coefficients, dependent quantization)
The inverse quantization/
逆量子化・逆変換部311は、量子化パラメータqPと、rectNonTsFlag、量子化マトリックスm[][]の値に応じて、線形スケール値ls[x][y]を以下のように導出する。逆量子化・逆
変換部311は、依存量子化が有効で、かつ、変換スキップが無効の場合と、それ以外とでls[][]の導出方法を切り替える。
The inverse quantization/
if (sh_dep_quant_used_flag && !transform_skip_flag)
ls[x][y] = (m[x][y]*levelScale[rectNonTsFlag][(qP+1)%6]) << ((qP+1)/6)
else
ls[x][y] = (m[x][y]*levelScale[rectNonTsFlag][qP%6]) << (qP/6)
rectNonTsFlag = (transform_skip_flag==0 && (((Log2(nTbW)+Log2(nTbH)) & 1)==1))
? 1 : 0
bdShift1 = transform_skip_flag==1 ? 10 : BitDepth+rectNonTsFlag+((Log2(nTbW)+Log2(nTbH))/2)-5+sh_dep_quant_used_flag
なお、後述のように係数の範囲を拡張する場合には、スケーリングのシフト値bdShift1を以下の式で導出してもよい。
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
(依存量子化ではない場合)
依存量子化ではない場合、逆量子化部3111(スケーリング部31111、変換係数クリップ部31112)は、量子化変換係数と量子化パラメータから一意に変換係数を導出する。例えば変換係数値dを導出する。
if (sh_dep_quant_used_flag && !transform_skip_flag)
ls[x][y] = (m[x][y]*levelScale[rectNonTsFlag][(qP+1)%6]) << ((qP+1)/6)
else
ls[x][y] = (m[x][y]*levelScale[rectNonTsFlag][qP%6]) << (qP/6)
rectNonTsFlag = (transform_skip_flag==0 && (((Log2(nTbW)+Log2(nTbH)) & 1)==1))
? Ten
bdShift1 = transform_skip_flag==1 ? 10 : BitDepth+rectNonTsFlag+((Log2(nTbW)+Log2(nTbH))/2)-5+sh_dep_quant_used_flag
Note that when expanding the range of coefficients as described later, the scaling shift value bdShift1 may be derived by the following equation.
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
(if not dependent quantization)
In the case of non-dependent quantization, the inverse quantization unit 3111 (scaling
TransCoeffLevel[x0][y0][cIdx][xC][yC] = AbsLevel[xC][yC] * (1-2*coeff_sign_flag[n]) <式TC_REGULAR>
dz[xC][yC] = TransCoeffLevel[x0][y0][cIdx][xC][yC]
ls[x][y] = (m[x][y] * levelScale[rectNonTsFlag][qP%6]) << (qP / 6)
dnc[xC][yC] = (dz[xC][yC]*ls[xC][yC]+((1<<bdShift1)>>1)) >> bdShift1
d[xC][yC] = Clip3(CoeffMin, CoeffMax, dnc[xC][yC])
ここでAbsLevelは量子化変換係数値、ls,bdShift1は量子化パラメータqPから導出される
変数である。CoeffMin、CoeffMaxはクリッピングの最小値と最大値であり、以下の式により導出する。
TransCoeffLevel[x0][y0][cIdx][xC][yC] = AbsLevel[xC][yC] * (1-2*coeff_sign_flag[n]) <expression TC_REGULAR>
dz[xC][yC] = TransCoeffLevel[x0][y0][cIdx][xC][yC]
ls[x][y] = (m[x][y] * levelScale[rectNonTsFlag][qP%6]) << (qP / 6)
dnc[xC][yC] = (dz[xC][yC]*ls[xC][yC]+((1<<bdShift1)>>1)) >> bdShift1
d[xC][yC] = Clip3(CoeffMin, CoeffMax, dnc[xC][yC])
Here, AbsLevel is the quantized transform coefficient value, and ls and bdShift1 are variables derived from the quantization parameter qP. CoeffMin and CoeffMax are the clipping minimum and maximum values, which are derived from the following equations.
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
log2TransformRangeは変換係数のレンジを示す。log2TransformRange=15の場合、CoeffMin = -(1<<15)、CoeffMax = (1<<15)-1。
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
log2TransformRange indicates the range of transform coefficients. If log2TransformRange=15 then CoeffMin = -(1<<15), CoeffMax = (1<<15)-1.
変換係数のレンジlog2TransformRangeは、BitDepthに依存して下記により設定してもよい。 The range of transform coefficients log2TransformRange may be set depending on BitDepth by:
log2TransformRange = extended_precision_processing_flag ? Max(15, BitDepth +
BDOFFSET) : 15 (式R-1)
また、以下のようにlog2TransformRangeの最大長を制限してもよい。
log2TransformRange = extended_precision_processing_flag ? Min(Max(15, BitDepth +
BDOFFSET), 20) : 15 (式R-1A)
bitDepth>10の場合にさらに制限してもよい。
log2TransformRange = extended_precision_processing_flag ? Min(Max(15, BitDepth +
BDOFFSET), 20) : 15 (式R-1B)
ここで、BDOFFSETは変換係数の範囲を計算するための固定値であり、4, 5, 6などが適当
である。extended_precision_processing_flagは、変換係数の範囲として拡張レンジを使うか否かを示すフラグである。
log2TransformRange = extended_precision_processing_flag ? Max(15, BitDepth +
BDOFFSET) : 15 (equation R-1)
You may also limit the maximum length of log2TransformRange as follows:
log2TransformRange = extended_precision_processing_flag ? Min(Max(15, BitDepth +
BDOFFSET), 20) : 15 (equation R-1A)
It may be further restricted when bitDepth>10.
log2TransformRange = extended_precision_processing_flag ? Min(Max(15, BitDepth +
BDOFFSET), 20) : 15 (equation R-1B)
Here, BDOFFSET is a fixed value for calculating the range of transform coefficients, and 4, 5, 6, etc. are appropriate. extended_precision_processing_flag is a flag indicating whether to use an extended range as the range of transform coefficients.
(依存量子化の場合)
一方、図11に示すように、依存量子化は異なるレベルを持つ2つの量子化器を備える。TU復号部3024(残差復号部30242)は、量子化変換係数の中間値(AbsLevelPass1、AbsLevel)のパリティを用いて、4つの状態QStateを切り替える。そして、QStateに応じて量子化・逆量子化する。
(for dependent quantization)
On the other hand, dependent quantization comprises two quantizers with different levels, as shown in FIG. The TU decoding unit 3024 (residual decoding unit 30242) switches between four states QState using the parity of the intermediate values (AbsLevelPass1, AbsLevel) of the quantized transform coefficients. Then, quantization/inverse quantization is performed according to the QState.
QState = QStateTransTable[QState][AbsLevelPass1[xC][yC] & 1]
TransCoeffLevel[x0][y0][cIdx][xC][yC] = (2*AbsLevel[xC][yC]-(QState>1 ? 1 : 0)) * (1-2*coeff_sign_flag[n]) <式TC_DQ>
dz[xC][yC] = TransCoeffLevel[x0][y0][cIdx][xC][yC]
逆量子化部3111(スケーリング部31111)は、量子化パラメータを用いて導出される変
数lsを用いてスケーリングを行う。
QState = QStateTransTable[QState][AbsLevelPass1[xC][yC] & 1]
TransCoeffLevel[x0][y0][cIdx][xC][yC] = (2*AbsLevel[xC][yC]-(QState>1 ? 1 : 0)) * (1-2*coeff_sign_flag[n]) < Formula TC_DQ>
dz[xC][yC] = TransCoeffLevel[x0][y0][cIdx][xC][yC]
The inverse quantization unit 3111 (scaling unit 31111) performs scaling using the variable ls derived using the quantization parameter.
ls[x][y] = (m[x][y] * levelScale[rectNonTsFlag][(qP+1) % 6]) << ((qP+1) / 6
dnc[xC][yC] = (dz[xC][yC]*ls[xC][yC]+((1<<bdShift1)>>1)) >> bdShift1
逆量子化部3111(変換係数クリップ部31112)は、変換係数をCoeffMinとCoeffMaxの間
にクリップする。
ls[x][y] = (m[x][y] * levelScale[rectNonTsFlag][(qP+1) % 6]) << ((qP+1) / 6
dnc[xC][yC] = (dz[xC][yC]*ls[xC][yC]+((1<<bdShift1)>>1)) >> bdShift1
The inverse quantization unit 3111 (transform coefficient clipping unit 31112) clips transform coefficients between CoeffMin and CoeffMax.
d[xC][yC] = Clip3(CoeffMin, CoeffMax, dnc[xC][yC])
ここで、QStateは状態、QStateTransTable[][]は状態遷移に用いるテーブルで、例えばQStateTransTable[][]={{0,2},{2,0},{1,3},{3,1}}である。
d[xC][yC] = Clip3(CoeffMin, CoeffMax, dnc[xC][yC])
Here, QState is the state, QStateTransTable[][] is the table used for state transition, for example QStateTransTable[][]={{0,2},{2,0},{1,3},{3,1 }}.
QStateは、QStateTransTable[][]を用いずに以下の式で導出してもよい。 QState may be derived by the following formula without using QStateTransTable[][].
QState =(32040 >>((QState << 2)+((AbsLevelPass1[xC][yC] & 1)<< 1)))&
3
QStateの値により、AbsLevelが同じでも異なるTransCoeffLevel(あるいはd)が導出される。QStateは1つ前に復号した量子化変換係数値を参照して導出されるので、一般的なスカラー(逆)量子化に比べ、係数間の相関を利用した符号化効率の良い(逆)量子化ができる。
QState = (32040 >> ((QState << 2) + ((AbsLevelPass1[xC][yC] & 1) << 1))) &
3
Depending on the value of QState, different TransCoeffLevel (or d) can be derived even if the AbsLevel is the same. Since QState is derived by referring to the quantized transform coefficient value decoded one before, compared to general scalar (inverse) quantization, (inverse) quantization with better coding efficiency using correlation between coefficients can be made
(逆変換)
逆量子化・逆変換部311は逆量子化部3111、逆変換部3112から構成される。逆変換部3112は、逆コア変換部31123と、非分離変換部(LFNST部、セカンダリ変換部)を備えている。
(inverse transformation)
The inverse quantization/
逆コア変換部31123(垂直変換部311231)は得られた残差d[][]に対して垂直変換を行う。 The inverse core transform unit 31123 (vertical transform unit 311231) performs vertical transform on the obtained residual d[][].
e[x][y] = Σ(transMatrix[y][j]×d[x][j]) (j = 0..nTbS - 1)
逆コア変換部31123(中間値クリップ部311232)は、第1の中間値e[x][y]をシフト、クリッピングし、第2の中間値g[x][y]を導出する。
e[x][y] = Σ(transMatrix[y][j]×d[x][j]) (j = 0..nTbS - 1)
The inverse core transform unit 31123 (intermediate value clipping unit 311232) shifts and clips the first intermediate value e[x][y] to derive the second intermediate value g[x][y].
g[x][y] = Clip3(CoeffMin, CoeffMax, (e[x][y] + 64) >> 7)
またCoeffMin、CoeffMaxはクリッピングの最小値と最大値である。
g[x][y] = Clip3(CoeffMin, CoeffMax, (e[x][y] + 64) >> 7)
CoeffMin and CoeffMax are the minimum and maximum clipping values.
逆コア変換部31123(水平変換部311233)は、変換係数d[ ][ ]、又は、修正変換係数d[
][ ]に対し、変換を行い予測誤差r[][]を導出する(S5)。
The inverse core transform unit 31123 (horizontal transform unit 311233) uses transform coefficients d[ ][ ] or modified transform coefficients d[
][ ] is transformed to derive the prediction error r[][] (S5).
r[x][y] = Σ(TransMatrix[x][j]×g[j][y]) (j = 0..nTbS - 1)
そして、r[][]に対し、ビットデプス(BitDepth)に応じたシフトを行い、予測画像生成部308で導出される予測画像と同じ精度の誤差resSamples[][]を導出する。例えば、シフトは以下で表現される。
r[x][y] = Σ(TransMatrix[x][j]×g[j][y]) (j = 0..nTbS - 1)
Then, r[][] is shifted according to the bit depth (BitDepth) to derive an error resSamples[][] with the same accuracy as the predicted image derived by the predicted
resSamples[x][y] = (r[x][y] + (1 << (bdShift2 - 1))) >> bdShift2 (式BD-1)
ここで、変換後のシフト値bdShift2=5+log2TransformRange-BitDepthを導出する。(式R-1)の場合、
bdShift2 = extended_precision_processing_flag ? (5 + BDOFFSET) : Max(20 - BitDepth, 0)
なお、上記のシフト値bdShift2は、変換サイズのnTbW、nTHが両方とも1より大きい場
合に用いる構成であり、それ以外(変換サイズのnTbW、nTHの大きさのいずれかが1)の
場合ではシフト値を1だけ大きくしてもよい。
resSamples[x][y] = (r[x][y] + (1 << (bdShift2 - 1))) >> bdShift2 (expression BD-1)
Here, the shift value after transformation bdShift2=5+log2TransformRange-BitDepth is derived. In the case of (Formula R-1),
bdShift2 = extended_precision_processing_flag ? (5 + BDOFFSET) : Max(20 - BitDepth, 0)
The above shift value bdShift2 is used when both of the transform sizes nTbW and nTH are greater than 1; You can increase the value by 1.
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
図18は残差の復号、逆量子化、逆変換の処理を示す図である。すでに説明したように、残差dz[]は、TU復号部3024により1<<(log2CoeffRange+1)の幅の残差が復号される。逆量
子化部3111では、逆量子化されてdnc[][]が得られる。逆量子化部3111は、さらにbdShift1により右シフトし、クリップにより変数のレンジを1<<(log2TransformRange+1)の幅に制限しd[][]を得る。逆変換部3112は、d[][]を垂直変換し、7で右シフトし、クリップにより変数のレンジを1<<(log2TransformRange+1)の幅に制限しg[][]を得る。逆変換部3112は、得られたg[][]を水平変換し、さらにbdShift2の右シフトにより差分画像r[][]を得る。以下の実施形態では、高深度の場合には、bdShift1のシフト数を減らし、bdShift2のシフト数を大きくすることで、変換精度の精度が向上するが、その分、クリップのレンジを広くする必要がある。また、変換に入力される前の残差の幅も大きくする必要がある。以下の実施形態は、このレンジとシフトの値をどのように設定するかに特徴を有する。
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
FIG. 18 is a diagram showing residual decoding, inverse quantization, and inverse transform processing. As described above, the residual dz[ ] is decoded by the
(実施形態1:変換係数のレンジに応じた変換サイズの制限)
本実施形態の動画像符号化装置11、動画像復号装置10は、変換係数のレンジを拡張することを示すフラグextended_precision_processing_flagが有効を示す(例えば1)場合に
、変換ブロックの最大サイズを制限してもよい。
(Embodiment 1: Limitation of transform size according to range of transform coefficients)
The
図20は、extended_precision_processing_flagに応じて、変換ブロックの最大サイズを制限する処理を示すフローチャートである。S3021で、extended_precision_processing_flagが有効ではない場合、S3022に遷移し、変換ブロックの最大サイズを制限しない。逆にextended_precision_processing_flagが有効な場合、S3023に遷移し、変換ブロックの最
大サイズを制限する。
FIG. 20 is a flowchart showing processing for limiting the maximum size of transform blocks according to extended_precision_processing_flag. In S3021, if the extended_precision_processing_flag is not valid, transition to S3022 and do not limit the maximum size of the transform block. Conversely, if extended_precision_processing_flag is valid, the process proceeds to S3023 and limits the maximum size of transform blocks.
例えば、パラメータ復号部302は、extended_precision_processing_flagが有効である
場合、変換ブロックの最大サイズMaxTbSizeYを32以下(MaxTbSizeYの対数値MaxTbLog2SizeYは5以下)となるようにクリップしてもよい。
MaxTbSizeY = extended_precision_processing_flag ? Min(32, MaxTbSizeY) : MaxTbSizeY
MaxTbLog2SizeY = extended_precision_processing_flag ? Min(5, MaxTbLog2SizeY) : MaxTbLog2SizeY
図21は、extended_precision_processing_flagに応じて、変換サイズを制限する処理を示すフローチャートである。S3021A1で、extended_precision_processing_flagが有効で
はない場合、S3021A2に遷移する。そして、sps_max_luma_transform_size_TX_flagが有効であるか否かを判定する。sps_max_luma_transform_size_TX_flagは、所定の変換ブロッ
クの最大サイズTX(TXは例えば64、128)を使うか否かを示すフラグである。判定が有効
の場合、S3022Aに遷移し、変換ブロックの最大サイズをTXに設定する。S3021Aでextended_precision_processing_flagが有効な場合、もしくは、S3021A2でsps_max_luma_transform_size_TX_flagが有効ではない場合、S3023Aに遷移し、変換ブロックの最大サイズをTX/2に設定する。
For example, when extended_precision_processing_flag is enabled, the
MaxTbSizeY = extended_precision_processing_flag ? Min(32, MaxTbSizeY) : MaxTbSizeY
MaxTbLog2SizeY = extended_precision_processing_flag ? Min(5, MaxTbLog2SizeY) : MaxTbLog2SizeY
FIG. 21 is a flowchart showing processing for limiting transform size according to extended_precision_processing_flag. In S3021A1, if extended_precision_processing_flag is not valid, transition to S3021A2. Then, it is determined whether sps_max_luma_transform_size_TX_flag is valid. sps_max_luma_transform_size_TX_flag is a flag indicating whether or not to use the maximum size TX (TX is 64, 128, for example) of a predetermined transform block. If the determination is valid, the process proceeds to S3022A and sets the maximum transform block size to TX. If extended_precision_processing_flag is valid in S3021A or sps_max_luma_transform_size_TX_flag is not valid in S3021A2, transition to S3023A and set the maximum transform block size to TX/2.
より具体的には、パラメータ復号部302は、extended_precision_processing_flagが有
効ではない場合(例えば0)に限り、変換ブロックの最大サイズを示す変数MaxTbSizeY(
対数値はMaxTbLog2SizeY)として所定の最大サイズ(例えば64、対数値は6)を使うよう
にしてもよい。つまり、パラメータ復号部302は、符号化データから復号したsps_max_luma_transform_size_TX_flagが有効である場合に、さらにextended_precision_processing_flagが有効ではない場合のみ最大サイズTXを使ってもよい。TX=64の場合は下記で示される。
MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag && extended_precision_processing_flag==0 ? 6 : 5
MaxTbSizeY = 1 << MaxTbLog2SizeY
上記のように、パラメータ復号部302は、sps_max_luma_transform_size_TX_flagが有効かつextended_precision_processing_flagが無効の場合、所定の変換ブロックの最大サイズを示す値TX(例えば64、対応値は6)を最大サイズMaxTbSizeYとして設定してもよい。
それ以外の場合に、所定の最大サイズより小さい値(例えば32、対数値は5)をMaxTbSizeYとして設定してもよい。
More specifically, the
A logarithmic value (MaxTbLog2SizeY) may be set to use a predetermined maximum size (eg 64, logarithmic value is 6). That is,
MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag && extended_precision_processing_flag==0 ? 6 : 5
MaxTbSizeY = 1 << MaxTbLog2SizeY
As described above, when sps_max_luma_transform_size_TX_flag is valid and extended_precision_processing_flag is invalid,
Otherwise, MaxTbSizeY may be set to a value less than a predetermined maximum size (eg, 32, logarithmic value of 5).
また、所定の最大サイズの対数値は6(64x64)によらず、7(128x128)や8(256x256)であってもよい。例えば、128x128変換を所定の最大サイズとする構成では、パラメータ復号部302は符号化データからsps_max_luma_transform_size_128_flagを復号して、最大サイズを以下のように導出してもよい。sps_max_luma_transform_size_128_flagは所定の変換ブロックの最大サイズとして128を使うか否かを示すフラグである。
MaxTbLog2SizeY = sps_max_luma_transform_size_128_flag && extended_precision_processing_flag==0 ? 7 : 6
MaxTbSizeY = 1 << MaxTbLog2SizeY
例えば、256x256変換を所定の最大サイズとする構成では、パラメータ復号部302は符号化データからsps_max_luma_transform_size_256_flagを復号して、最大サイズを以下のように導出してもよい。sps_max_luma_transform_size_256_flagは所定の変換ブロックの最大サイズとして256を使うか否かを示すフラグである。
MaxTbLog2SizeY = sps_max_luma_transform_size_256_flag && extended_precision_processing_flag==0 ? 8 : 7
MaxTbSizeY = 1 << MaxTbLog2SizeY
TU復号部3024は、以下のように、cIdxの値、SubWidthC、SubHeightCに応じて、最大変
換サイズmaxTbWidth、maxTbHeightを導出する。cIdxは色コンポーネントを示すインデッ
クスである。SubWidthC、SubHeightCは色差の色サブサンプリングを示す変数である。
maxTbWidth = (cIdx==0) ? MaxTbSizeY : MaxTbSizeY / SubWidthC
maxTbHeight = (cIdx==0) ? MaxTbSizeY : MaxTbSizeY / SubHeightC
図22は、TU復号部3024の復号処理を示すシンタックステーブルである。TU復号部3024は、CUの残差を復号する際に、変換ツリー(図のtransform_tree())を再帰的に復号する。具体的には、変換ツリーのサイズtbWidth、tbHeightの何れかが、最大サイズMaxTbSizeY、MaxTbSizeYを超える場合(tbWidth>MaxTbSizeY || tbHeight>MaxTbSizeY)、変換ツリーの幅もしくは高さを半分に設定して、変換ツリーを再度復号する。逆に、tbWidth、tbHeightの双方がMaxTbSizeY、MaxTbSizeYを超えない場合には、TU復号部3024はtbWidth、tbHeightのサイズの変換ユニット(図ではtransform_unit)を復号する。
Also, the logarithmic value of the predetermined maximum size is not limited to 6 (64x64), but may be 7 (128x128) or 8 (256x256). For example, in a configuration with a predetermined maximum size of 128x128 transform, the
MaxTbLog2SizeY = sps_max_luma_transform_size_128_flag && extended_precision_processing_flag==0 ? 7 : 6
MaxTbSizeY = 1 << MaxTbLog2SizeY
For example, in a configuration with a predetermined maximum size of 256x256 transform, the
MaxTbLog2SizeY = sps_max_luma_transform_size_256_flag && extended_precision_processing_flag==0 ? 8 : 7
MaxTbSizeY = 1 << MaxTbLog2SizeY
maxTbWidth = (cIdx==0) ? MaxTbSizeY : MaxTbSizeY / SubWidthC
maxTbHeight = (cIdx==0) ? MaxTbSizeY : MaxTbSizeY / SubHeightC
FIG. 22 is a syntax table showing the decoding process of
transform_unit(x0, y0, tbWidth, tbHeight, treeType, 0, chType)
transform_unitは残差を示す符号化データである。なお、TU復号部3024は以下の式で、垂直方向を先に分割するか否かを示すフラグverSplitFirstを導出し、verSplitFirstが1の場合にtbWidthを1/2とし、verSplitFirstが0の場合にtbHeightを1/2としてもよい。
transform_unit(x0, y0, tbWidth, tbHeight, treeType, 0, chType)
transform_unit is the encoded data representing the residual. Note that the
verSplitFirst = (tbWidth>MaxTbSizeY && tbWidth>tbHeight) ? 1 : 0
trafoWidth = verSplitFirst ? (tbWidth/2) : tbWidth
trafoHeight = !verSplitFirst ? (tbHeight/2) : tbHeight
TU復号部3024は導出された変換サイズtrafoWidth、trafoHeightと左上座標(x0, y0)を
用いて、transform_treeを2つに分割し得られる1つ目のtransform_treeを復号する。
verSplitFirst = (tbWidth>MaxTbSizeY &&tbWidth>tbHeight) ? 1 : 0
trafoWidth = verSplitFirst ? (tbWidth/2) : tbWidth
trafoHeight = !verSplitFirst ? (tbHeight/2) : tbHeight
The
transform_tree(x0, y0, trafoWidth, trafoHeight, treeType, chType)
さらに、TU復号部3024は導出された変換サイズtrafoWidth、trafoHeightと、左上座標(x0+tbWidth, y0)もしくは(x0, y0+tbHeight)を用いて、transform_treeを2つに分割して得られる2つ目のtransform_treeを復号する。なおverSplitFirstが1の場合に、左上座標を(x0+tbWidth, y0)、それ以外の場合に(x0, y0+tbHeight)を用いる。このように、CUの残差の符号化データであるtransform_unitを復号する際にtransform_treeのノードを用いてCUを再帰的に分割する、これにより、残差のブロックサイズ(変換ブロックのサイズ、変換ユニットのサイズ)を上記、sps_max_luma_transform_size_TX_flagや、extended_precision_processing_flagから導出される最大サイズTX以下に制限することができる。エントロピー復号部301はtransform_unitで示されるtbWidth、tbHeightのサイズの量子化変換ブロックを復号する。
transform_tree(x0, y0, trafoWidth, trafoHeight, treeType, chType)
Furthermore, the
逆量子化・逆変換部311は、tbWidth、tbHeightのサイズの量子化変換ブロックを逆量子化する。そして、変換サイズで指定された変換基底を用いて変換する。
An inverse quantization/
上記構成によれば、変換係数のレンジが大きくなる場合(extended_precision_processing_flag==1)に、変換サイズを所定のサイズ以下に制限するため、変換係数のレンジが
大きい場合にハードウェア回路の規模を小さくすることができる。この効果は、量子化パラメータに依存せず常に得ることができる。また、変換係数のレンジが大きくならない場合(extended_precision_processing_flag==0)、変換サイズを所定のサイズ以下に制限
せず、大きいサイズを使用可能とする。従って、変換係数のレンジが大きくならない場合、符号化効率の低下は生じない効果を奏する。
According to the above configuration, when the range of transform coefficients is large (extended_precision_processing_flag==1), the transform size is limited to a predetermined size or less, so that the size of the hardware circuit is reduced when the range of transform coefficients is large. be able to. This effect can always be obtained regardless of the quantization parameter. Also, when the range of transform coefficients does not increase (extended_precision_processing_flag==0), the transform size is not limited to a predetermined size or less, and a large size can be used. Therefore, if the range of transform coefficients does not increase, there is an effect that the coding efficiency does not decrease.
(実施形態2:変換のサイズが所定のサイズ以上の場合において、変換のレンジを拡張しない)
本実施形態の動画像符号化装置11、動画像復号装置10は、変換ブロックのサイズに応じて変換係数のレンジを拡張してもよい。
(Embodiment 2: When the size of the transform is equal to or larger than the predetermined size, the range of the transform is not extended)
The
図23は、extended_precision_processing_flagと変換ブロックのサイズnTbW、nTbHに応じて、変換係数レンジを拡張する処理を示すフローチャートである。S3021B1で、extended_precision_processing_flagが有効である場合、S3021B2に遷移し、変換ブロックのサイズが所定の最大サイズTX未満であるかを判定する。判定がYESの場合に、S3022Bに遷移し、変換係数レンジを拡張する。例えばビットデプスに応じてlog2TransformRange=bitDepth+BDOFFSETに設定する。log2TransformRangeは変換係数のレンジを示すパラメータである。S3021B1で、extended_precision_processing_flagが有効ではない場合、もしくは、S3021B2で変換ブロックのサイズが所定の最大サイズTX未満ではない場合、S3023Bに遷移し、変換係数レンジを拡張しない。例えば、log2TransformRange=15に設定する。 FIG. 23 is a flowchart showing processing for extending the transform coefficient range according to extended_precision_processing_flag and transform block sizes nTbW and nTbH. In S3021B1, if extended_precision_processing_flag is valid, transition to S3021B2 and determine whether the transform block size is less than a predetermined maximum size TX. If the determination is YES, the process transitions to S3022B to extend the transform coefficient range. For example, set log2TransformRange=bitDepth+BDOFFSET depending on the bit depth. log2TransformRange is a parameter indicating the range of transform coefficients. If the extended_precision_processing_flag is not valid in S3021B1, or if the transform block size is not less than the predetermined maximum size TX in S3021B2, the process proceeds to S3023B and does not extend the transform coefficient range. For example, set log2TransformRange=15.
TU復号部302は、transform_unitもしくは残差ブロックのサイズtbWidth、tbHeightが所定の最大サイズTX以上(もしくは所定の最大サイズと等しい)の場合、extended_precision_processing_flagが有効(==1)でも、変換係数のレンジを示す変数の値を大きくしない。extended_precision_processing_flagは変換係数のレンジを拡張することを示すフラグである。
以下のように、TU復号部302は、残差のブロックサイズnTbW、nTbHextended_precision_
processing_flagに応じて、以下のようにlog2TransformRangeを導出する。
As described below,
Depending on processing_flag, derive log2TransformRange as follows.
log2TransformRange = extended_precision_processing_flag && nTbW<TX && nTbH<TX ? Max(15, BitDepth+BDOFFSET) : 15 (式R-1TXA)
また、TU復号部302は、以下の式で導出してもよい。
log2TransformRange = extended_precision_processing_flag &&nTbW<TX&&nTbH<TX ? Max(15, BitDepth+BDOFFSET) : 15 (Formula R-1TXA)
Also,
log2TransformRange = extended_precision_processing_flag && nTbW<=TX/2 && nTbH<=TX/2 ? Max(15, BitDepth+BDOFFSET) : 15 (式R-1TXB)
つまり、nTbW、nTbHが所定のサイズTX未満である場合にだけ、実際の変換係数のレンジをビットデプスに依存して拡張する。
ここでTXは、64、128、256などであってもよい。
log2TransformRange = extended_precision_processing_flag &&nTbW<=TX/2&&nTbH<=TX/2 ? Max(15, BitDepth+BDOFFSET) : 15 (Formula R-1TXB)
That is, only when nTbW and nTbH are less than a predetermined size TX, the range of actual transform coefficients is expanded depending on the bit depth.
Here TX may be 64, 128, 256, and so on.
また、TX=64の場合、パラメータ復号部302は符号化データからsps_max_luma_transform_size_64_flagを復号して、変換サイズの最大値を以下のように導出してもよい。sps_max_luma_transform_size_64_flagは所定の変換ブロックの最大サイズとして64を使うか否かを示すフラグである。
MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag ? 6 : 5
つまり、TU復号部302は、以下の式で導出してもよい。
Also, when TX=64, the
MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag ? 6 : 5
That is,
log2TransformRange = extended_precision_processing_flag && nTbW<64 && nTbH<64 ? Max(15, BitDepth+BDOFFSET) : 15 (式R-1T64A)
また、TU復号部302は、以下の式で導出してもよい。
log2TransformRange = extended_precision_processing_flag &&nTbW<64&&nTbH<64 ? Max(15, BitDepth+BDOFFSET) : 15 (Formula R-1T64A)
Also,
log2TransformRange = extended_precision_processing_flag && nTbW<=32 && nTbH<=32 ? Max(15, BitDepth+BDOFFSET) : 15 (式R-1T64B)
別の例として、TX= MaxTbLog2SizeYの場合、パラメータ復号部302は符号化データからsps_max_luma_transform_size_TX_flagを復号して、変換サイズの最大値を以下のように導出してもよい。sps_max_luma_transform_size_TX_flagは所定の変換ブロックの最大サイズとしてTXを使うか否かを示すフラグである。
MaxTbLog2SizeY = sps_max_luma_transform_size_TX_flag ? log2(TX) : log2(TX)-1
また、TU復号部302は変換サイズの最大値を以下の式で導出してもよい。
log2TransformRange = extended_precision_processing_flag &&nTbW<=32&&nTbH<=32 ? Max(15, BitDepth+BDOFFSET) : 15 (Formula R-1T64B)
As another example, if TX=MaxTbLog2SizeY, the
MaxTbLog2SizeY = sps_max_luma_transform_size_TX_flag ? log2(TX) : log2(TX)-1
Also,
log2TransformRange = extended_precision_processing_flag && nTbW<(1<<MaxTbLog2SizeY) && nTbH<(1<<MaxTbLog2SizeY) ? Max(15, BitDepth+BDOFFSET) : 15 (式R-1TV)
すでに説明したように、変換係数のクリップのレンジCoeffMin、CoeffMax、bdShift1, bdShift2、maxPreExtLenについても、log2TransformRangeに応じて導出してもよい。
log2TransformRange = extended_precision_processing_flag &&nTbW<(1<<MaxTbLog2SizeY)&&nTbH<(1<<MaxTbLog2SizeY) ? Max(15, BitDepth+BDOFFSET) : 15 (Formula R-1TV)
As already explained, the transform coefficient clip ranges CoeffMin, CoeffMax, bdShift1, bdShift2, maxPreExtLen may also be derived according to log2TransformRange.
上記において、すでに説明したように、変換係数のレンジを拡張する場合においても、変換係数のレンジの最大値を所定の値(ここでは20)以下にクリップしてもよい。つまり、実施形態に記載のMax(15, BitDepth + BDOFFSET) : 15をMin(Max(15, BitDepth + BDOFFSET), 20) : 15に置き替えてもよい。 As described above, even when the range of transform coefficients is extended, the maximum value of the range of transform coefficients may be clipped to a predetermined value (here, 20) or less. That is, Max(15, BitDepth+BDOFFSET):15 described in the embodiment may be replaced with Min(Max(15, BitDepth+BDOFFSET), 20):15.
また、以下のように変数ExtendedPrecisionFlagを、nTbW、nTbHとextended_precision_processing_flagに応じて導出し、ExtendedPrecisionFlagを用いて、log2TransformRange
、CoeffMin、CoeffMax、bdShift1, bdShift2maxPreExtLenを導出してもよい。ExtendedPrecisionFlagは実際に変換係数のレンジ拡張を行うか否かを示す変数である。
Also, derive the variable ExtendedPrecisionFlag according to nTbW, nTbH and extended_precision_processing_flag as follows, and use ExtendedPrecisionFlag to log2TransformRange
, CoeffMin, CoeffMax, bdShift1, bdShift2maxPreExtLen may be derived. ExtendedPrecisionFlag is a variable that indicates whether or not to actually extend the range of transform coefficients.
ExtendedPrecisionFlag = extended_precision_processing_flag && nTbW<TX && nTbH<TX ? l : 0
また、以下でもよい。
ExtendedPrecisionFlag = extended_precision_processing_flag &&nTbW<TX&&nTbH<TX ? l : 0
Also, the following may be used.
ExtendedPrecisionFlag = extended_precision_processing_flag && nTbW<=TX/2 && nTbH<=TX/2 ? l : 0
また、以下でもよい。
ExtendedPrecisionFlag = extended_precision_processing_flag &&nTbW<=TX/2&&nTbH<=TX/2 ? l : 0
Also, the following may be used.
ExtendedPrecisionFlag = extended_precision_processing_flag && nTbW<64 && nTbH<64 ? l : 0
ExtendedPrecisionFlag = extended_precision_processing_flag && nTbW<=32 && nTbH<=32 ? l : 0
この場合、TU復号部302は、nTbW, nTbHに応じて導出されたExtendedPrecisionFlagを用いてlog2TransformRangeを導出する。
ExtendedPrecisionFlag = extended_precision_processing_flag &&nTbW<64&&nTbH<64 ? l : 0
ExtendedPrecisionFlag = extended_precision_processing_flag &&nTbW<=32&&nTbH<=32 ? l : 0
In this case,
log2TransformRange = ExtendedPrecisionFlag ? Max(15, BitDepth+BDOFFSET) : 15
(式R-1TV)
すでに説明したように、変換係数のレンジを拡張する場合、変換係数のレンジの最大値を所定の値(ここでは20)以下にクリップしてもよい。
log2TransformRange = ExtendedPrecisionFlag? Min(Max(15, BitDepth+BDOFFSET), 20) : 15
上記構成によれば、変換サイズが大きい場合であっても、変換係数のレンジ拡張を示すシンタックス要素が有効を示す(extended_precision_processing_flag==1)場合に、実
際に用いる変換サイズを所定のサイズ以下に制限する。そのため、ハードウェア回路の規模を小さくすることができる。この効果は量子化パラメータに依存せず常に得ることができる。また、変換係数のレンジが大きくならない場合(extended_precision_processing_flag==0)には、変換サイズを所定のサイズ以下に制限せず、大きいサイズを使用可能とするため、符号化効率の低下は生じない効果を奏する。
log2TransformRange = ExtendedPrecisionFlag ? Max(15, BitDepth+BDOFFSET) : 15
(Formula R-1TV)
As already explained, when extending the range of transform coefficients, the maximum value of the range of transform coefficients may be clipped below a predetermined value (here, 20).
log2TransformRange = ExtendedPrecisionFlag? Min(Max(15, BitDepth+BDOFFSET), 20) : 15
According to the above configuration, even if the transform size is large, if the syntax element indicating the range extension of transform coefficients indicates that it is valid (extended_precision_processing_flag==1), the transform size that is actually used is reduced to a predetermined size or less. Restrict. Therefore, the scale of the hardware circuit can be reduced. This effect can always be obtained regardless of the quantization parameter. In addition, when the range of transform coefficients does not increase (extended_precision_processing_flag==0), the transform size is not limited to a predetermined size or less, and large sizes can be used, so there is no reduction in coding efficiency. Play.
(実施形態3:ビットストリーム制限)
本実施形態の動画像符号化装置11の符号化する符号化データ、動画像復号装置10が復号する符号化データは、extended_precision_processing_flagが有効を示す(例えば1)場
合に、変換ブロックの最大サイズを制限することを、コンフォーマンス制限として備えてもよい。extended_precision_processing_flagは変換係数のレンジを拡張することを示すフラグである。
(Embodiment 3: Bitstream restriction)
The encoded data encoded by the
具体的には、動画像復号装置10は以下のビットストリーム制限をコンフォーマンス制限として備える符号化データを復号してもよい。
Specifically, the
extended_precision_processing_flagが1の場合には、nTbW=64もしくはnTbH=64の変換
ブロックを用いてはならない。
コンフォーマンス制限は以下でもよい。
If extended_precision_processing_flag is 1, then transform blocks with nTbW=64 or nTbH=64 shall not be used.
Conformance restrictions may be:
extended_precision_processing_flagが1の場合、変換ブロックのサイズnTbW、nTbHの
いずれもが32以下でなくてはならない。
あるいは、コンフォーマンス制限の以下のいずれかでもよい。
If extended_precision_processing_flag is 1, both transform block sizes nTbW and nTbH must be 32 or less.
Alternatively, one of the following conformance restrictions:
extended_precision_processing_flagが1の場合、sps_max_luma_transform_size_TX_flagは0でなくてはならない。 If extended_precision_processing_flag is 1, sps_max_luma_transform_size_TX_flag MUST be 0.
sps_max_luma_transform_size_TX_flagが1の場合、extended_precision_processing_flagは0でなくてはならない。 extended_precision_processing_flag must be 0 if sps_max_luma_transform_size_TX_flag is 1.
sps_max_luma_transform_size_TX_flagとextended_precision_processing_flagがどち
らも1であることを禁止する。
Disallows both sps_max_luma_transform_size_TX_flag and extended_precision_processing_flag to be 1.
sps_max_luma_transform_size_TX_flagとextended_precision_processing_flagのいず
れかが0でなくてはならない。
Either sps_max_luma_transform_size_TX_flag or extended_precision_processing_flag must be 0.
上記の構成の動画像復号装置10及び動画像符号化装置10によれば、変換サイズが所定のサイズ以下の場合、変換係数のレンジを拡張した符号化データのみを復号・符号化すればよいので、ハードウェア回路の規模を小さくすることができる効果を奏する。
According to the moving
(実施形態4:ブロックサイズが大きい場合だけ変換係数依存シフトを用いる構成)
図24は、extended_precision_processing_flagと変換ブロックのサイズnTbW、nTbHに応じて、変換係数レンジを拡張するか、変換係数に応じてシフト値を可変に設定するかを切り替える処理を示すフローチャートである。S3021C1で、extended_precision_processing_flagが有効ではない場合、S3024Cに遷移し、変換係数レンジを拡張しない。例えば、S3024Cにおいて、TU復号部3024もしくはTU符号化部1114は、変換係数のレンジを示す変数log2TransformRangeを通常の値15に設定する。この場合、復号される残差の変換係数のレンジ(例えば後述のLog2ResidualRange)に依存せずシフト値bdShift1、bdShift2を導出する。Log2ResidualRangeは符号化データを復号して得られる残差(変換係数)の大きさを示す変数、つまり、スケーリング前の変換係数の実際のレンジを示す変数である。
(Embodiment 4: Configuration using transform coefficient dependent shift only when block size is large)
FIG. 24 is a flowchart showing a process of switching between extending the transform coefficient range and variably setting the shift value according to the transform coefficients according to the extended_precision_processing_flag and the transform block sizes nTbW and nTbH. In S3021C1, if the extended_precision_processing_flag is not valid, transition to S3024C and do not extend the transform coefficient range. For example, in S3024C,
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
S3021C1で、extended_precision_processing_flagが有効である場合、S3021C2に遷移し、変換ブロックのサイズが所定の最大サイズTX未満であるかを判定する。S3021C2の判定がYESの場合、S3022Cに遷移し、ビットデプスに応じて変換係数レンジを拡張する。例えばS3022Cにおいて、TU復号部3024もしくはTU符号化部1114は、log2TransformRange = bitDepth+BDOFFSETに設定する。(式R-1)に限定されず、(式R-1A)、(式R-1B)...(式R-1TXA)... (式R-1TV)などの変形例を利用してもよい。そして、変換係数に依存せずシフト値bdShift1、bdShift2を導出する。
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
In S3021C1, if extended_precision_processing_flag is valid, transition to S3021C2 to determine whether the transform block size is less than a predetermined maximum size TX. If the determination in S3021C2 is YES, the process transitions to S3022C to extend the transform coefficient range according to the bit depth. For example, in S3022C,
log2TransformRange = bitDepth + BDOFFSET
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
S3021C2の判定がNOの場合、つまり、変換ブロックのサイズが所定の最大サイズTX未満で
はない場合、S3023Cに遷移し、変換係数レンジlog2TransformRangeを拡張せず、変換係数に応じてシフト値bdShift1、bdShift2を導出する。S3023Cにおいて、TU復号部3024もしくはTU符号化部1114は、スケーリング前の変換係数に応じて導出される変数Log2ResidualRangeを用いて、例えば、以下のようにシフト値を導出する。
log2TransformRange = bitDepth + BDOFFSET
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
If the determination in S3021C2 is NO, that is, if the size of the transform block is not less than the predetermined maximum size TX, transition to S3023C, do not extend the transform coefficient range log2TransformRange, and change the shift values bdShift1 and bdShift2 according to the transform coefficients. derive In S3023C,
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
まとめると、TU復号部3024もしくはTU符号化部1114は、以下の式を用いてパラメータを導出してもよい。maxRangeは後述する残差(変換係数)の大きさから導出される変数である。
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
In summary,
log2TransformRange = extended_precision_processing_flag && (nTbW<TX && nTbH<TX) && bitDepth>10 ? bitDepth+6 : 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
Log2ResidualRange = extended_precision_processing_flag && (nTbW>=TX || nTbH>=TX)&& bitDepth>10 ? Ceil(maxRange) : log2TransformRange
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
上記図24の構成によれば、ブロックサイズが大きい時だけ、変換係数の値域を分析し、変換係数のシフト値を実際の変換係数の大きさに応じて設定することにより、複雑度やレイテンシを低減させることができる効果を奏する。一般にブロックサイズが大きいほど処理に余裕がある。処理に余裕がないブロックサイズが小さい場合、変換係数の値域の分析を行わない。またブロックサイズが大きい場合、変換係数のレンジの拡張を行わないため、レイテンシに伴う複雑度が大きくなることを防ぐことができる。
log2TransformRange = extended_precision_processing_flag &&(nTbW<TX&&nTbH<TX)&&bitDepth>10 ? bitDepth+6 : 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
Log2ResidualRange = extended_precision_processing_flag &&(nTbW>=TX || nTbH>=TX)&&bitDepth>10 ? Ceil(maxRange) : log2TransformRange
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
According to the configuration of FIG. 24 above, only when the block size is large, the complexity and latency can be reduced by analyzing the value range of the transform coefficient and setting the shift value of the transform coefficient according to the actual size of the transform coefficient. There is an effect that it can be reduced. In general, the larger the block size, the more room there is in processing. If the block size is too small for processing, the range of transform coefficients is not analyzed. Also, when the block size is large, the range of transform coefficients is not expanded, so it is possible to prevent complexity associated with latency from increasing.
(実施形態5:ブロックサイズが小さい場合だけ変換係数依存シフトを用いる構成)
実施形態5は実施形態4と同種の構成であるが、変換係数依存シフト(実際の変換係数の大きさのレンジに応じたシフト)を用いる場合の条件が異なる。
(Embodiment 5: Configuration using transform coefficient dependent shift only when block size is small)
The fifth embodiment has a configuration similar to that of the fourth embodiment, but differs in the conditions when transform coefficient dependent shift (shift according to the range of the magnitude of the actual transform coefficient) is used.
図25は、extended_precision_processing_flagと変換ブロックのサイズnTbW、nTbHに応じて、変換係数レンジを拡張するか、変換係数に応じてシフト値を可変に設定するかを切り替える処理を示す別のフローチャートである。S3021D1で、TU復号部3024もしくはTU符
号化部1114は、extended_precision_processing_flagが有効ではない場合、S3024Dに遷移し、変換係数レンジを拡張しない。例えばlog2TransformRange=15に設定する。
FIG. 25 is another flowchart showing the process of switching between extending the transform coefficient range and variably setting the shift value according to the transform coefficients according to the extended_precision_processing_flag and the transform block sizes nTbW and nTbH. In S3021D1, if extended_precision_processing_flag is not valid,
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
この場合、TU復号部3024もしくはTU符号化部1114は変換係数に依存せずシフト値を導出する。
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
In this case,
S3021D1で、extended_precision_processing_flagが有効である場合、S3021D2に遷移し、変換ブロックのサイズが所定の最大サイズTX未満であるかを判定する。S3021D2の判定がNOの場合、S3022Dに遷移し、変換係数レンジを拡張する。S3022Dにおいて、TU復号部3024もしくはTU符号化部1114は、例えばビットデプスに応じてlog2TransformRange=bitDepth+BDOFFSETに設定し、変換係数に依存せずシフト値を導出する。
In S3021D1, if extended_precision_processing_flag is valid, transition to S3021D2 to determine whether the transform block size is less than a predetermined maximum size TX. If the determination in S3021D2 is NO, the process proceeds to S3022D to extend the conversion coefficient range. In S3022D,
log2TransformRange=bitDepth + BDOFFSET
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
S3021D2の判定がYES、つまり、変換ブロックのサイズが所定の最大サイズTX未満である場合、TU復号部3024もしくはTU符号化部1114は変換係数レンジlog2TransformRangeを拡張せず、変換係数に応じてシフト値bdShift1、bdShift2を導出する。具体的には、S3023Dにおいて、TU復号部3024もしくはTU符号化部1114は、Log2ResidualRangeに応じて、例えば、
以下のように導出する。Log2ResidualRangeは符号化データから復号される変換係数を参
照して導出される変数である。
log2TransformRange=bitDepth + BDOFFSET
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
If the determination in S3021D2 is YES, that is, if the transform block size is less than the predetermined maximum size TX, the
It is derived as follows. Log2ResidualRange is a variable derived with reference to transform coefficients decoded from encoded data.
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
ただし、ビットデプスが16ビットの場合、16ビットに制限するのは難しいため、変換係数のレンジlog2TransformRangeを以下としてもよい。
log2TransformRange = 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
However, when the bit depth is 16 bits, it is difficult to limit to 16 bits, so the range log2TransformRange of transform coefficients may be set as follows.
log2TransformRange = BitDepth == 16 ? 16: 15
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
まとめると、TU復号部3024もしくはTU符号化部1114は、以下の式においてシフト値を導出してもよい。ここで、maxRangeは後述する残差(変換係数)の大きさから導出される変数である。
log2TransformRange = BitDepth == 16 ? 16: 15
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
In summary,
log2TransformRange = extended_precision_processing_flag && (nTbW>=TX && nTbH>=TX) && bitDepth>10 ? bitDepth + 6 : 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
Log2ResidualRange = extended_precision_processing_flag && (nTbW<TX && nTbH<TX)&& bitDepth>10 ? Ceil(maxRange) : log2TransformRange
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
上記図25の構成によれば、ブロックサイズが小さい時だけ変換係数のシフト値を、変換係数の値域の分析から可変的に設定することにより、分析に必要な一時メモリのサイズを低減させることができる効果を奏する。一般にブロックサイズが小さいほどメモリ増加での影響が小さい。またブロックサイズが小さい場合、変換係数のレンジの拡張を行うこと
から、符号化効率を高く保つことができる。
log2TransformRange = extended_precision_processing_flag &&(nTbW>=TX&&nTbH>=TX)&&bitDepth>10 ? bitDepth + 6 : 15
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
Log2ResidualRange = extended_precision_processing_flag &&(nTbW<TX&&nTbH<TX)&&bitDepth>10 ? Ceil(maxRange) : log2TransformRange
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
According to the configuration of FIG. 25, the size of the temporary memory required for analysis can be reduced by variably setting the shift value of the transform coefficient from the analysis of the value range of the transform coefficient only when the block size is small. produce the effect possible. In general, the smaller the block size, the smaller the effect of memory increase. Also, when the block size is small, the range of transform coefficients is expanded, so that the coding efficiency can be kept high.
図24の構成と図25の構成は、レイテンシが重視される設計か、メモリサイズが重視される設計かに応じて選択することが好ましい。レイテンシ的には図24の構成が高速であり、メモリサイズ的には図25の構成が小メモリである。 The configuration of FIG. 24 and the configuration of FIG. 25 are preferably selected depending on whether the design emphasizes latency or the design emphasizes memory size. In terms of latency, the configuration in FIG. 24 is fast, and in terms of memory size, the configuration in FIG. 25 is a small memory.
(実施形態4と実施形態5のより具体的な構成例)
図26は、本発明の実施形態のTU復号部3024、逆量子化・逆変換部311の構成を示すブロ
ック図である。TU復号部3024のRRC部30241は、残差復号部30242、残差レンジ導出部30243、変換係数レンジ導出部30244から構成される。逆量子化・逆変換部311は、逆量子化部3111(スケーリング部31111、係数クリップ部31112)、逆コア変換部31123(垂直変換部31123、中間クリップ部31124、水平変換部31125)から構成される。残差復号部30242、逆量
子化・逆変換部311はすでに説明済みであるので、ここでは、残差レンジ導出部30243、変換係数レンジ導出部30244の動作を説明する。
(More specific configuration example of
FIG. 26 is a block diagram showing the configuration of the
残差レンジ導出部30243は、スケーリングのシフト値を導出するために、スケーリング
前の変換係数の値域を導出する。具体的には、幅nTbW、高さnTbHの残差ブロックの変換係数の絶対値AbsLevel[xC][yC]の最大値maxLevelを導出してもよい。
The residual
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < AbsLevel[xC][yC]) {
maxLevel = AbsLevel
}
}
}
あるいは残差レンジ導出部30243は、、幅nTbW、高さnTbHの残差ブロックの変換係数TransCoeffLevel[x0][y0][cIdx][xC][yC]の絶対値の最大値maxLevelを導出してもよい。
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < AbsLevel[xC][yC]) {
maxLevel = AbsLevel
}
}
}
Alternatively, the residual
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < Abs(TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = Abs(TransCoeffLevel[x0][y0][cIdx][xC][yC])
}
}
}
なお、レンジが2の指数で表現される場合、通例-N~N-1までの間をとりえることから、残差レンジ導出部30243は、残差が正か負かを区別してmaxLevelを求めてもよい。
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < Abs(TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = Abs(TransCoeffLevel[x0][y0][cIdx][xC][yC])
}
}
}
Note that when the range is expressed by an exponent of 2, it usually takes a range from -N to N-1. may
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (TransCoeffLevel[x0][y0][cIdx][xC][yC] > 0) {
if maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC])
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
}
if (TransCoeffLevel[x0][y0][cIdx][xC][yC] < 0) {
if maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1)
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1
}
}
}
}
また、残差レンジ導出部30243は、以下を用いてmaxLevelを導出してもよい。
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (TransCoeffLevel[x0][y0][cIdx][xC][yC] > 0) {
if maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC])
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
}
if (TransCoeffLevel[x0][y0][cIdx][xC][yC] < 0) {
if maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1)
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1
}
}
}
}
Also, the residual
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
if (maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1) {
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1
}
}
}
を用いてもよい。この場合、-N~N-1のレンジにおいて、maxLevel=N-1となるため最後にmaxLevel=maxLevel+1としてもよい。
また残差レンジ導出部30243は、以下を用いてmaxLevelを導出してもよい。
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
if (maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1) {
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]-1
}
}
}
may be used. In this case, since maxLevel=N-1 in the range of -N to N-1, maxLevel=maxLevel+1 may be set at the end.
Also, the residual
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC]+1) {
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]+1
}
if (maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
}
}
また、上記においてmaxLevelは、色コンポーネントごとに求めてもよい。この場合、変数maxLevelの代わりにmaxLevel[cIdx]の配列を用いる。またブロックの左上位置(x0, y0)に依存して導出してもよい。この場合、maxLevel[cIdx][x0][y0]を用いる。
maxLevel = 0
for (yC in 0..nTbH-1) {
for (xC in 0..nTbW-1) {
if (maxLevel < TransCoeffLevel[x0][y0][cIdx][xC][yC]+1) {
maxLevel = TransCoeffLevel[x0][y0][cIdx][xC][yC]+1
}
if (maxLevel < -TransCoeffLevel[x0][y0][cIdx][xC][yC]) {
maxLevel = -TransCoeffLevel[x0][y0][cIdx][xC][yC]
}
}
}
Also, in the above, maxLevel may be obtained for each color component. In this case, an array of maxLevel[cIdx] is used instead of the variable maxLevel. It may also be derived depending on the upper left position (x0, y0) of the block. In this case, use maxLevel[cIdx][x0][y0].
変換係数レンジ導出部30244は、変換係数の最大値の対数値Log2ResidualRangeを以下の式で導出する。
The transform coefficient
Log2ResidualRange=Ceil(maxLevel)
また、さらにクリップによってLog2ResidualRangeを所定の範囲に納めてもよい。
Log2ResidualRange=Ceil(maxLevel)
Further, the Log2ResidualRange may be kept within a predetermined range by clipping.
Log2ResidualRange = Clip(0, 15, Log2ResidualRange)
また、ビットデプスが16ビットの場合において、16ビットに制限するのは難しいため、ビットデプスが16ビットの場合には16ビットに制限してもよい。
Log2ResidualRange = Clip(0, 15, Log2ResidualRange)
Also, when the bit depth is 16 bits, it is difficult to limit to 16 bits, so if the bit depth is 16 bits, it may be limited to 16 bits.
Log2ResidualRange = Clip(0, (BitDepth == 16 ? 16 : 15), Log2ResidualRange)
変換係数レンジ導出部30244は、Log2ResidualRangeを用いて、シフト値bdShift1、bdSh
ift2を以下の式で導出してもよい。
Log2ResidualRange = Clip(0, (BitDepth == 16 ? 16 : 15), Log2ResidualRange)
Transform coefficient
ift2 may be derived by the following equation.
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
逆量子化部3111のスケーリング部31111では、bdShift1によるシフトを用いて残差のス
ケーリングを行う。逆コア変換部31123の水平変換部31123でも同様に、bdShift2によるシフトを行って、BitDepth精度の残差画像を導出する。
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
The
なお、図24に照らし合わせて適応的な処理を説明する。 Note that adaptive processing will be described with reference to FIG.
extended_precision_processing_flag==0の場合、変換係数レンジ導出部30244は変換係数レンジlog2TransformRangeをBitDepthに依存せずに固定の値として、例えば、以下の式を用いて導出する(S3024C)。
When extended_precision_processing_flag==0, the transform coefficient
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
extended_precision_processing_flag==1かつ変換ブロックサイズが所定サイズ未満の
場合、変換係数レンジ導出部30244はlog2TransformRangeをBitDepth依存の値に拡張し、
例えば、以下の式を用いて導出する(S3022C)。
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
When extended_precision_processing_flag==1 and the transform block size is less than the predetermined size, the transform coefficient
For example, it is derived using the following formula (S3022C).
log2TransformRange = BitDepth + 6
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag = rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 4 + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
extended_precision_processing_flag==1かつ変換ブロックサイズが所定サイズ以上の
場合、変換係数レンジ導出部30244はlog2TransformRangeをBitDepth依存の値に拡張せず
固定の値15とする。そして、シフト値を残差のレンジ(例えば残差の最大値の対数値Log2ResidualRange)に応じて導出する(S3023C)。例えば、以下の式を用いて導出する。
log2TransformRange =
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag = rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 4 + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
When extended_precision_processing_flag==1 and the transform block size is equal to or greater than a predetermined size, the transform coefficient
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
ただし上述したように、BitDepth==16の場合には、以下のようにレンジを拡張しても構わない。
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
However, as described above, when BitDepth==16, the range may be extended as follows.
log2TransformRange = BitDepth == 16 ? 16 : 15
図25に照らし合わせて適応的な処理を説明する。
log2TransformRange = BitDepth == 16 ? 16 : 15
Adaptive processing will be described with reference to FIG.
extended_precision_processing_flag==0の場合、変換係数レンジ導出部30244は変換係数レンジlog2TransformRangeをBitDepth依存の値に拡張せずに固定の値として、例えば、以下の式を用いて導出する(S3024D)。
When extended_precision_processing_flag==0, the transform coefficient
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
extended_precision_processing_flag==1かつ変換ブロックサイズが所定サイズ以上の
場合、変換係数レンジ導出部30244は以下の式を用いて、変換係数レンジlog2TransformRangeをBitDepth依存の値に拡張して、例えば、以下の式を用いて導出する(S3022D)。
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
When extended_precision_processing_flag==1 and the transform block size is equal to or greater than a predetermined size, the transform coefficient
log2TransformRange = BitDepth + 6
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
extended_precision_processing_flag==1かつ変換ブロックサイズが所定サイズ未満の
場合、変換係数レンジ導出部30244は以下の式を用いて、変換係数レンジlog2TransformRangeをBitDepth依存の値に拡張せずに固定の値としながら、シフト値を残差のレンジLog2ResidualRangeに応じて導出する(S3023D)。例えば、以下の式を用いて導出する。
log2TransformRange =
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - log2TransformRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + log2TransformRange - BitDepth : 6 + log2TransformRange - BitDepth
When extended_precision_processing_flag==1 and the transform block size is less than the predetermined size, the transform coefficient
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag +(((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 && nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
ただし上述したように、BitDepth==16の場合には、以下のようにレンジを拡張しても構わない。
log2TransformRange = 15
bdShift1 = BitDepth + rectNonTsFlag + (((Log2(nTbW)+Log2(nTbH))/2) + 10 - Log2ResidualRange + sh_dep_quant_used_flag
bdShift2 = (nTbH>1 &&nTbW>1) ? 5 + Log2ResidualRange - BitDepth : 6 + Log2ResidualRange - BitDepth
However, as described above, when BitDepth==16, the range may be extended as follows.
log2TransformRange = BitDepth == 16 ? 16 : 15
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数をスケーリング(逆量子化)して変換係数d[][]を求める。この量子化変換係数は、符号化処
理において、予測誤差に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)等の変換を行い量子化して得られる係数である。逆量子化・逆変換部311はtransform_skip_flagが0の場合、スケーリング済み
の変換係数d[][]に対して、逆DCT、逆DST等の逆周波数変換を行い、予測誤差res[][]を算出する。逆量子化・逆変換部311はtransform_skip_flagが1の場合、res[x][y]=d[x][y]とする。逆量子化・逆変換部311は予測誤差を加算部312に出力する。
log2TransformRange = BitDepth == 16 ? 16 : 15
The inverse quantization/
なお、逆変換及び変換は、対になる処理であるため、変換と逆変換とを互いに置き換えて解釈してもよい。あるいは、逆変換を変換と呼ぶ場合には、変換を順変換と呼んでもよい。例えば、逆非分離変換を非分離変換と呼ぶ場合、非分離変換は順非分離変換と呼んでもよい。また、分離変換を単に変換と呼ぶ。 Note that the inverse transform and the transform are paired processes, so the transform and the inverse transform may be interpreted by replacing each other. Alternatively, if the inverse transform is called a transform, the transform may be called a forward transform. For example, if the inverse non-separable transform is called the non-separable transform, the non-separable transform may be called the forward non-separable transform. In addition, separate transformations are simply referred to as transformations.
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。
加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
The
The
(動画像符号化装置の構成)
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図16は、本実施
形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、エントロピー符号化部104を含んで構成される。
(Configuration of video encoding device)
Next, the configuration of the
予測画像生成部101は画像Tの各ピクチャを分割した領域であるCU毎に予測画像を生成する。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
The predicted
減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103
に出力する。
The
output to
変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、
量子化変換係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
Transform/
The quantized transform coefficients are output to
逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311(図10)と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
The inverse quantization/
エントロピー符号化部104には、変換・量子化部103から量子化変換係数が入力され、パラメータ符号化部111から符号化パラメータが入力される。符号化パラメータは、例えば
、予測モードを示すpredModeである。predModeはイントラ予測を示すMODE_INTRA、インター予測を示すMODE_INTERのいずれでもよいし、MODE_INTRA、MODE_INTER、画面内のブロックをコピーして予測画像とするイントラブロックコピー予測を示すMODE_IBCであってもよい。
エントロピー符号化部104は、分割情報、予測パラメータ、量子化変換係数等をエント
ロピー符号化して符号化ストリームTeを生成し、出力する。
The
パラメータ符号化部111は、図示しないヘッダ符号化部1110、CT情報符号化部1111、CU
符号化部1112(予測モード符号化部)、及びインター予測パラメータ符号化部112とイン
トラ予測パラメータ符号化部113を備えている。CU符号化部1112はさらにTU符号化部1114
を備えている。
An encoding unit 1112 (prediction mode encoding unit), an inter prediction parameter encoding unit 112 and an intra prediction parameter encoding unit 113 are provided.
It has
以下、各モジュールの概略動作を説明する。パラメータ符号化部111はヘッダ情報、分
割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
The general operation of each module will be described below. A
CT情報符号化部1111は、符号化データからQT、MT(BT、TT)分割情報等を符号化する。
CT
CU符号化部1112はCU情報、予測情報、TU分割フラグ、CU残差フラグ等を符号化する。
TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報と量子化変換係数を符号化する。TU符号化部1114は、TU復号部3024で説明したように、TR符号とEG(k)符号
で残差を符号化する。つまり、TR符号、EG(k)符号に用いて、残差の絶対値を示すシンタ
ックス要素(abs_remainder、dec_abs_level)を符号化する。符号化に用いるライスパラメータの導出方法、TR符号のプリフィックスの最大値、exp部の最大長maxPreExtLen、escape部の長さtruncSuffixLenは、画像復号装置で説明した方法のいずれかを用いる。変換・量子化部103、逆量子化・逆変換部105も、画像復号装置で説明したような、CoeffMin, CoeffMax, bdShift1, bdShift2の値を用いることができる。
つまり、TU符号化部1114は、図26に示すように、変換ブロック中の復号装置における逆量子化・スケーリング前(符号化装置における量子化・スケーリング後)の変換係数の値の実際のレンジLog2ResidualRangeに応じて、適応的に、bdShift1、bdShift2を導出して
もよい。さらに、図24, 図25に示すように、extended_precision_flagと、変換ブロック
サイズnTbW、nTbHの大きさに依存して、変換係数のレンジlog2TransformRangeと、bdShift1、bdShift2を導出してもよい。
That is, as shown in FIG. 26,
CT情報符号化部1111、CU符号化部1112は、インター予測パラメータ、イントラ予測パラメータ、量子化変換係数等のシンタックス要素をエントロピー符号化部104に供給する。
The CT
加算部106は、予測画像生成部101から入力されたブロックの予測画像の画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算
部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
The
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まな
くてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
A
SAOは、サンプル単位で分類結果に応じたオフセットを加算するフィルタであり、ALFは、伝送したフィルタ係数と参照画像(もしくは参照画像と対象画素との差異)の積和を用いるフィルタである。 SAO is a filter that adds an offset according to the classification result in sample units, and ALF is a filter that uses the sum of products of transmitted filter coefficients and a reference image (or the difference between a reference image and a target pixel).
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
The
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
The
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
Coding
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化
誤差を示すRDコスト値を算出する。符号化パラメータ決定部110は、算出したコスト値が
最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
Coding
なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成
部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量
子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータ
システム」とは、動画像符号化装置11、動画像復号装置31の何れかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであってもよい。
Note that a part of the
また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、又は全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
Also, part or all of the moving
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。 Although one embodiment of the present invention has been described in detail above with reference to the drawings, the specific configuration is not limited to the above, and various design changes, etc., can be made without departing from the gist of the present invention. It is possible to
〔応用例〕
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CG及びGUIを含む)であってもよい。
[Application example]
The moving
まず、上述した動画像符号化装置11及び動画像復号装置31を、動画像の送信及び受信に利用できることを、図2を参照して説明する。
First, it will be described with reference to FIG. 2 that the moving
図2には、動画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図が
示されている。図に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_A1として利用される。
FIG. 2 shows a block diagram showing the configuration of the transmission device PROD_A equipped with the
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像
するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成又は加工する画像処理部A7を更に備えていてもよ
い。図においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
The transmission device PROD_A uses a camera PROD_A4 for capturing a moving image, a recording medium PROD_A5 for recording the moving image, an input terminal PROD_A6 for externally inputting the moving image, and , and an image processing unit A7 for generating or processing an image. In the drawing, the configuration in which the transmitter PROD_A has all of these is illustrated, but some of them may be omitted.
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよい
し、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(
不図示)を介在させるとよい。
The recording medium PROD_A5 may record an unencoded moving image, or record a moving image encoded by an encoding scheme for recording different from the encoding scheme for transmission. can be anything. In the latter case, a decoding unit (
(not shown) may be interposed.
また、図2には、動画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック
図が示されている。図に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した動画像復号装置31は、この復号部PROD_B3として利用される。
Also, FIG. 2 shows a block diagram showing the configuration of the receiving device PROD_B equipped with the
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示す
るディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図においては、これら全て
を受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
The receiving device PROD_B supplies the moving image output from the decoding unit PROD_B3 to a display PROD_B4 for displaying the moving image, a recording medium PROD_B5 for recording the moving image, and an output terminal for outputting the moving image to the outside. PROD_B6 may also be provided. In the drawing, the configuration in which the receiving device PROD_B has all of these is illustrated, but some of them may be omitted.
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであって
もよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から
取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
The recording medium PROD_B5 may be used for recording unencoded moving images, or may be encoded by an encoding scheme for recording that is different from the encoding scheme for transmission. may In the latter case, an encoding unit (not shown) may be interposed between the decoding unit PROD_B3 and the recording medium PROD_B5 to encode the moving image acquired from the decoding unit PROD_B3 according to the recording encoding method.
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。 A transmission medium for transmitting the modulated signal may be wireless or wired. Further, the transmission mode for transmitting the modulated signal may be broadcasting (here, transmission mode in which the destination is not specified in advance), or communication (here, transmission mode in which the destination is specified in advance). aspect) may be used. That is, transmission of the modulated signal may be realized by any of wireless broadcasting, wired broadcasting, wireless communication, and wired communication.
例えば、地上デジタル放送の放送局(放送設備等)/受信局(テレビジョン受像機等)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備等)/受信局(テレビジョン受像機等)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。 For example, a broadcasting station (broadcasting equipment, etc.)/receiving station (television receiver, etc.) for terrestrial digital broadcasting is an example of a transmitting device PROD_A/receiving device PROD_B that transmits and receives modulated signals by radio broadcasting. A broadcasting station (broadcasting equipment, etc.)/receiving station (television receiver, etc.) of cable television broadcasting is an example of a transmitting device PROD_A/receiving device PROD_B that transmits/receives a modulated signal by cable broadcasting.
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービス等のサーバ(ワークステーション等)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォン等)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。 In addition, servers (workstations, etc.)/clients (television receivers, personal computers, smartphones, etc.) for VOD (Video On Demand) services and video sharing services using the Internet are transmission devices that transmit and receive modulated signals through communication. This is an example of PROD_A/receiving device PROD_B (usually, in LAN, either wireless or wired transmission medium is used, and in WAN, wired transmission medium is used). Here, personal computers include desktop PCs, laptop PCs, and tablet PCs. Smartphones also include multifunctional mobile phone terminals.
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。 A client of the video sharing service has a function of decoding encoded data downloaded from a server and displaying the data on a display, as well as a function of encoding a video captured by a camera and uploading it to the server. That is, the client of the video sharing service functions as both the transmitting device PROD_A and the receiving device PROD_B.
次に、上述した動画像符号化装置11及び動画像復号装置31を、動画像の記録及び再生に利用できることを、図3を参照して説明する。
Next, it will be described with reference to FIG. 3 that the moving
図3には、上述した動画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロ
ック図が示されている。図に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記
録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置11
は、この符号化部PROD_C1として利用される。
FIG. 3 shows a block diagram showing the configuration of a recording device PROD_C equipped with the moving
is used as this encoder PROD_C1.
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)等のように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリ等のように、記録装置PROD_Cに
接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc:登録商標)やBD(Blu-ray Disc:登録商標)等のように、記録装置PROD_Cに内蔵されたドライブ
装置(不図示)に装填されるものであってもよい。
The recording medium PROD_M may be (1) a type built into the recording device PROD_C, such as a HDD (Hard Disk Drive) or SSD (Solid State Drive), or (2) an SD memory. It may be of a type connected to the recording device PROD_C, such as a card or USB (Universal Serial Bus) flash memory. Disc: registered trademark) may be loaded in a drive device (not shown) incorporated in the recording device PROD_C.
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像
を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成又は加工する画像処理部PROD_C6を更に備えていてもよい。図においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
In addition, the recording device PROD_C includes a camera PROD_C3 for capturing the moving image, an input terminal PROD_C4 for inputting the moving image from the outside, and a receiving terminal for receiving the moving image as a supply source of the moving image to be input to the encoding unit PROD_C1. It may further include a unit PROD_C5 and an image processing unit PROD_C6 that generates or processes an image. In the drawing, the configuration in which the recording device PROD_C includes all of these is exemplified, but some of them may be omitted.
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
Note that the receiving unit PROD_C5 may receive an unencoded moving image, or receive encoded data encoded by an encoding scheme for transmission that is different from the encoding scheme for recording. It may be something to do. In the latter case, it is preferable to interpose a decoding unit for transmission (not shown) that decodes encoded data encoded by an encoding method for transmission between the receiving unit PROD_C5 and the encoding unit PROD_C1.
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダ等が挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が
動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の
主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5又は画像処理
部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受
信部PROD_C5が動画像の主な供給源となる)等も、このような記録装置PROD_Cの一例であ
る。
Examples of such a recording device PROD_C include a DVD recorder, a BD recorder, an HDD (Hard Disk Drive) recorder, etc. (In this case, the input terminal PROD_C4 or the receiver PROD_C5 is the main supply source of moving images.) . In addition, camcorders (in this case, the camera PROD_C3 is the main source of moving images), personal computers (in this case, the receiver PROD_C5 or the image processing unit C6 is the main source of moving images), smartphones (in this case, the camera PROD_C3 is the main source of moving images) In this case, the camera PROD_C3 or the receiving unit PROD_C5 serves as the main supply source of moving images) is also an example of such a recording device PROD_C.
また、図3には、上述した動画像復号装置31を搭載した再生装置PROD_Dの構成を示した
ブロック図が示されている。図に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置31は、この復号部PROD_D2として利用される。
Further, FIG. 3 shows a block diagram showing the configuration of a playback device PROD_D equipped with the moving
なお、記録媒体PROD_Mは、(1)HDDやSSD等のように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリ等のように
、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBD等のよう
に、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
The recording medium PROD_M may be (1) a type built into the playback device PROD_D, such as an HDD or SSD, or (2) an SD memory card, USB flash memory, or the like. It may be of the type connected to the playback device PROD_D, or (3) like a DVD or BD, it may be loaded into a drive device (not shown) built into the playback device PROD_D. good.
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を
表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図においては、これら全てを
再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
Further, the playback device PROD_D includes a display PROD_D3 for displaying the moving image, an output terminal PROD_D4 for outputting the moving image to the outside, and a transmitting unit for transmitting the moving image, as destinations to which the moving image output by the decoding unit PROD_D2 is supplied. PROD_D5 may also be provided. In the drawing, the configuration in which the playback device PROD_D includes all of these is illustrated, but some of them may be omitted.
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像
を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
The transmission unit PROD_D5 may transmit an unencoded moving image, or transmit encoded data encoded by an encoding scheme for transmission different from the encoding scheme for recording. It may be something to do. In the latter case, it is preferable to interpose an encoding unit (not shown) that encodes a moving image using an encoding method for transmission between the decoding unit PROD_D2 and the transmitting unit PROD_D5.
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤ等が挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画
像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3
が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は
送信部PROD_D5が動画像の主な供給先となる)等も、このような再生装置PROD_Dの一例で
ある。
Such a playback device PROD_D includes, for example, a DVD player, a BD player, an HDD player, and the like (in this case, the output terminal PROD_D4 to which a television receiver or the like is connected is the main supply destination of moving images). . Also, the TV receiver (in this case the display PROD_D3
is the main destination of moving images), digital signage (also called electronic billboards, electronic bulletin boards, etc., and the display PROD_D3 or transmission unit PROD_D5 is the main destination of moving images), desktop PCs (in this case, Output terminal PROD_D4 or transmitter PROD_D5 is the main destination of video), laptop or tablet PC (in this case, display PROD_D3 or transmitter PROD_D5 is the main video), smartphone ( In this case, the display PROD_D3 or the transmission unit PROD_D5 is the main supply destination of the moving image) is also an example of such a playback device PROD_D.
(ハードウェア的実現及びソフトウェア的実現)
また、上述した動画像復号装置31及び動画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
(Hardware realization and software realization)
Further, each block of the moving
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記
プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random
Access Memory)、上記プログラム及び各種データを格納するメモリ等の記憶装置(記録媒体)等を備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(又はCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
In the latter case, each of the above devices has a CPU that executes the instructions of the program that implements each function, a ROM (Read Only Memory) that stores the above program, and a RAM (Random Memory) that expands the above program.
Access Memory), and a storage device (recording medium) such as a memory for storing the above program and various data. An object of the embodiments of the present invention is a computer-readable record of the program code (executable program, intermediate code program, source program) of the control program for each of the above devices, which is software for realizing the above functions. It can also be achieved by supplying a medium to each of the devices described above and causing the computer (or CPU or MPU) to read and execute the program code recorded on the recording medium.
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc:登録商標)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray
Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)
/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)
/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類等を用いることができる。
Examples of the recording medium include tapes such as magnetic tapes and cassette tapes, magnetic disks such as floppy (registered trademark) disks/hard disks, CD-ROMs (Compact Disc Read-Only Memory)/MO disks (Magneto-Optical discs). ) / MD (Mini Disc) / DVD (Digital Versatile Disc: registered trademark) / CD-R (CD Recordable) / Blu-ray Disc (Blu-ray
Disc: Discs including optical discs such as registered trademark), IC cards (including memory cards)
/ cards such as optical cards, mask ROM / EPROM (Erasable Programmable Read-Only Memory) / EEPROM (Electrically Erasable and Programmable Read-Only Memory: registered trademark)
/Semiconductor memories such as flash ROMs, or logic circuits such as PLDs (Programmable Logic Devices) and FPGAs (Field Programmable Gate Arrays) can be used.
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成又は種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛
星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
Further, each device may be configured to be connectable to a communication network, and the program code may be supplied via the communication network. This communication network is not particularly limited as long as it can transmit the program code. For example, Internet, intranet, extranet, LAN (Local Area Network), ISDN (Integrated Services Digital Network), VAN (Value-Added Network), CATV (Community Antenna television/Cable Television) communication network, Virtual Private Network Network), telephone line network, mobile communication network, satellite communication network, etc. can be used. Also, the transmission medium constituting this communication network is not limited to a specific configuration or type as long as it can transmit the program code. For example, even wired such as IEEE (Institute of Electrical and Electronic Engineers) 1394, USB, power line carrier, cable TV line, telephone line, ADSL (Asymmetric Digital Subscriber Line) line, infrared rays such as IrDA (Infrared Data Association) and remote control , BlueTooth (registered trademark), IEEE802.11 wireless, HDR (High Data Rate), NFC (Near Field Communication), DLNA (Digital Living Network Alliance: registered trademark), mobile phone networks, satellite circuits, terrestrial digital broadcasting networks, etc. Also available wirelessly. Embodiments of the invention may also be implemented in the form of a computer data signal embedded in a carrier wave, with the program code embodied in electronic transmission.
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。 The embodiments of the present invention are not limited to the embodiments described above, and various modifications are possible within the scope of the claims. That is, the technical scope of the present invention also includes embodiments obtained by combining technical means appropriately modified within the scope of the claims.
本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、及び、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。 INDUSTRIAL APPLICABILITY Embodiments of the present invention are preferably applied to a moving image decoding device that decodes encoded image data and a moving image encoding device that generates encoded image data. be able to. Also, the present invention can be preferably applied to the data structure of encoded data generated by a video encoding device and referenced by a video decoding device.
31 動画像復号装置
301 エントロピー復号部
302 パラメータ復号部
3020 ヘッダ復号部
308 予測画像生成部
311 逆量子化・逆変換部
312 加算部
11 動画像符号化装置
101 予測画像生成部
102 減算部
103 変換・量子化部
104 エントロピー符号化部
105 逆量子化・逆変換部(スケーリング部)
107 ループフィルタ
110 符号化パラメータ決定部
111 パラメータ符号化部
1110 ヘッダ符号化部
1111 CT情報符号化部
1112 CU符号化部(予測モード符号化部)
1114 TU符号化部
311 逆量子化・逆変換部(スケーリング部)
3111 逆量子化部
3112 逆変換部
31123 逆コア変換部
31 Video decoder
301 Entropy Decoder
302 Parameter decoder
3020 Header decoder
308 Predictive image generator
311 Inverse Quantization/Inverse Transform Unit
312 adder
11 Video encoder
101 Predictive image generator
102 Subtractor
103 Transform/Quantization Unit
104 Entropy Encoder
105 Inverse quantization/inverse transform unit (scaling unit)
107 loop filter
110 Encoding parameter determination unit
111 Parameter encoder
1110 Header encoder
1111 CT information encoder
1112 CU encoder (prediction mode encoder)
1114 TU encoder
311 Inverse quantization/inverse transform unit (scaling unit)
3111 Inverse quantization section
3112 Inverse Transformer
31123 Inverse Core Transformer
Claims (11)
変換係数のレンジを拡張する場合に、ビットデプスに応じた変換係数のレンジを導出し、上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部と、
上記ヘッダ復号部は、変換係数のレンジを拡張するかを示すフラグが有効である場合に、変換の最大サイズを所定の値以下に制限することを特徴とする動画像復号装置。 a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients and a syntax element indicating the maximum size of the transform to derive the maximum size of the transform;
when extending the range of transform coefficients, derive a range of transform coefficients according to the bit depth, and rely on a quantization parameter for transform coefficients using a first shift value derived according to the range of transform coefficients. a scaling unit that right-shifts the value multiplied by the value of
The moving image decoding device, wherein the header decoding unit limits the maximum size of transform to a predetermined value or less when a flag indicating whether to expand the range of transform coefficients is valid.
変換係数のレンジを拡張する場合に、ビットデプスに応じた変換係数のレンジを導出し、上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部と、
上記ヘッダ符号化部は、変換係数のレンジを拡張するかを示すフラグが有効である場合に、変換の最大サイズを所定の値以下に制限することを特徴とする動画像符号化装置。 a header encoding unit that encodes a flag indicating whether to extend the range of transform coefficients and a syntax element indicating the maximum size of the transform to derive the maximum size of the transform;
when extending the range of transform coefficients, derive a range of transform coefficients according to the bit depth, and rely on a quantization parameter for transform coefficients using a first shift value derived according to the range of transform coefficients. a scaling unit that right-shifts the value multiplied by the value of
The moving image coding apparatus, wherein the header coding unit limits the maximum size of transform to a predetermined value or less when a flag indicating whether to extend the range of transform coefficients is valid.
変換係数のレンジを導出するTU復号部を備え
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備え、
上記TU復号部は、上記フラグと変換ブロックのブロックサイズに応じて、変換係数のレンジを導出することを特徴とする動画像復号装置。 a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
Scaling for right-shifting a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient having a department,
The moving image decoding device, wherein the TU decoding unit derives the range of transform coefficients according to the flag and the block size of the transform block.
変換係数のレンジを導出するTU符号化部を備え
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備え、
上記TU符号化部は、上記フラグと変換ブロックのブロックサイズに応じて、変換係数のレンジを導出することを特徴とする動画像符号化装置。 a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
A TU encoding unit for deriving a range of transform coefficients is provided, and a first shift value derived according to the range of transform coefficients is used to right-shift a value obtained by multiplying the transform coefficients by a value dependent on a quantization parameter. Equipped with a scaling section,
The moving image coding apparatus, wherein the TU coding unit derives the range of transform coefficients according to the flag and the block size of the transform block.
変換係数のレンジを導出するTU復号部を備え、
上記TU復号部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズ以下の場合に、変換係数のレンジを拡張し、
上記TU復号部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズより大きいの場合に、上記フラグが有効の場合に、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存し、
上記TU復号部は、上記フラグが有効以外の場合には、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存せずに導出し、
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備えることを特徴とする動画像復号装置。 a header decoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
a TU decoder for deriving a range of transform coefficients,
The TU decoding unit expands the range of transform coefficients when the flag is valid and the block size of the transform block is equal to or less than a predetermined size,
When the flag is valid and the block size of the transform block is larger than a predetermined size, the TU decoding unit converts the shift value without expanding the range of transform coefficients when the flag is valid. , depending on the maximum magnitude of the transform coefficients, and
The TU decoding unit derives the shift value without depending on the maximum value of the magnitude of the transform coefficient without extending the range of the transform coefficient unless the flag is valid,
A video decoding device comprising a scaling unit that right-shifts a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient. .
変換係数のレンジを導出するTU符号化部を備え、
上記TU符号化部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズ以下の場合に、変換係数のレンジを拡張し、
上記TU符号化部は、上記フラグが有効の場合で、変換ブロックのブロックサイズが所定のサイズより大きいの場合に、上記フラグが有効の場合に、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存し、
上記TU符号化部は、上記フラグが有効以外の場合には、変換係数のレンジを拡張せずに、シフト値を、変換係数の大きさの最大値に依存せずに導出し、
上記変換係数のレンジに応じて導出される第1シフト値を用いて、変換係数に量子化パラメータに依存する値をかけた値を右シフトするスケーリング部を備えることを特徴とする動画像符号化装置。 a header encoding unit that decodes a flag indicating whether to extend the range of transform coefficients;
a TU encoder for deriving a range of transform coefficients,
The TU encoding unit expands the range of transform coefficients when the flag is valid and the block size of the transform block is equal to or less than a predetermined size,
When the flag is valid and the block size of the transform block is larger than a predetermined size, the TU encoding unit, when the flag is valid, does not extend the range of transform coefficients, and shifts the shift value , depending on the maximum magnitude of the transform coefficients,
The TU encoding unit derives the shift value without depending on the maximum value of the magnitude of the transform coefficient without extending the range of the transform coefficient unless the flag is valid,
A moving image encoding comprising a scaling unit that right-shifts a value obtained by multiplying a transform coefficient by a value dependent on a quantization parameter using a first shift value derived according to the range of the transform coefficient. Device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021085070A JP2022178335A (en) | 2021-05-20 | 2021-05-20 | Image decoding device and image encoding device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021085070A JP2022178335A (en) | 2021-05-20 | 2021-05-20 | Image decoding device and image encoding device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022178335A true JP2022178335A (en) | 2022-12-02 |
Family
ID=84239310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021085070A Pending JP2022178335A (en) | 2021-05-20 | 2021-05-20 | Image decoding device and image encoding device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022178335A (en) |
-
2021
- 2021-05-20 JP JP2021085070A patent/JP2022178335A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112514386B (en) | Grid coding and decoding quantization coefficient coding and decoding | |
WO2016203881A1 (en) | Arithmetic decoding device and arithmetic coding device | |
JP7469904B2 (en) | Image decoding device, image encoding device, image decoding method, and image encoding method | |
JP7369191B2 (en) | Canonical coded bin reduction for coefficient decoding using thresholds and Rician parameters | |
CN115315957A (en) | Luminance mapping with chroma scaling (LMCS) in video coding | |
JP7402016B2 (en) | Image decoding device and image encoding device | |
TWI827662B (en) | Regular coded bin reduction for coefficient coding | |
US11128876B2 (en) | Joint coefficient coding of transform skip and BDPCM mode for 4:4:4 color formats | |
JP2022523789A (en) | Coefficient coding for conversion skip mode | |
CN113196776B (en) | Predictive image generation device, moving image decoding device, moving image encoding device, and predictive image generation method | |
CN113597762A (en) | Fixed filter with nonlinear adaptive loop filter in video coding | |
JPWO2020241858A5 (en) | ||
JP2022516132A (en) | Escape coding for coefficient levels | |
WO2021246284A1 (en) | Moving image decoding device and moving image encoding device | |
CN116458156A (en) | Context-based transform index signaling in video coding | |
WO2022131243A1 (en) | Image decoding device and image coding device | |
JP2022178335A (en) | Image decoding device and image encoding device | |
JP2022188825A (en) | Image decoding device and image encoding device | |
JP2023006203A (en) | Image decoding device and image coding device | |
TWI856996B (en) | Escape coding for coefficient levels | |
JP2022045909A (en) | Image decoding device and image encoding device | |
JP2023046435A (en) | Moving image decoder and moving image encoder | |
JP2024054362A (en) | Video decoding device, video encoding device, and predicted image generation method | |
JP2021013110A (en) | Image decoding device and image encoding device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20221207 |