WO2020262995A1 - 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치 - Google Patents

2차 변환을 이용하는 비디오 신호 처리 방법 및 장치 Download PDF

Info

Publication number
WO2020262995A1
WO2020262995A1 PCT/KR2020/008301 KR2020008301W WO2020262995A1 WO 2020262995 A1 WO2020262995 A1 WO 2020262995A1 KR 2020008301 W KR2020008301 W KR 2020008301W WO 2020262995 A1 WO2020262995 A1 WO 2020262995A1
Authority
WO
WIPO (PCT)
Prior art keywords
transform
block
order
transformation
coefficient
Prior art date
Application number
PCT/KR2020/008301
Other languages
English (en)
French (fr)
Inventor
정재홍
손주형
김동철
고건중
곽진삼
Original Assignee
주식회사 윌러스표준기술연구소
(주)휴맥스
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to CN202211654918.9A priority Critical patent/CN116055745A/zh
Priority to KR1020237019410A priority patent/KR20230088845A/ko
Application filed by 주식회사 윌러스표준기술연구소, (주)휴맥스 filed Critical 주식회사 윌러스표준기술연구소
Priority to KR1020207032652A priority patent/KR102423840B1/ko
Priority to JP2020562152A priority patent/JP7091479B2/ja
Priority to EP24160181.4A priority patent/EP4354863A3/en
Priority to CN202211654904.7A priority patent/CN115941975A/zh
Priority to KR1020227024898A priority patent/KR102544252B1/ko
Priority to CN202211654921.0A priority patent/CN116016947A/zh
Priority to EP20797644.0A priority patent/EP3790275A4/en
Priority to CN202080002631.0A priority patent/CN112438050B/zh
Priority to CN202211664714.3A priority patent/CN115941976A/zh
Priority to CN202211654911.7A priority patent/CN115967811A/zh
Priority to US17/088,110 priority patent/US11330302B2/en
Publication of WO2020262995A1 publication Critical patent/WO2020262995A1/ko
Priority to US17/716,956 priority patent/US11736729B2/en
Priority to JP2022096604A priority patent/JP7351973B2/ja
Priority to US18/341,936 priority patent/US20230345048A1/en
Priority to US18/341,966 priority patent/US20230336782A1/en
Priority to US18/341,983 priority patent/US20230345049A1/en
Priority to JP2023149119A priority patent/JP2023161005A/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • the present invention relates to a video signal processing method and apparatus, and more particularly, to a video signal processing method and apparatus for encoding or decoding a video signal.
  • Compression coding refers to a series of signal processing techniques for transmitting digitized information through a communication line or storing it in a format suitable for a storage medium.
  • Targets for compression encoding include audio, video, and text, and in particular, a technique for performing compression encoding on an image is referred to as video image compression.
  • Compression coding of a video signal is performed by removing redundant information in consideration of spatial correlation, temporal correlation, and probabilistic correlation.
  • a more efficient method and apparatus for processing a video signal is required.
  • An object of the present invention is to improve the coding efficiency of a video signal.
  • An object of the present invention is to increase coding efficiency through quadratic transformation.
  • the present specification provides a video signal processing method using quadratic transformation.
  • the apparatus includes a processor, wherein the processor parses a syntax element related to a quadratic transformation of a coding unit from a bitstream of a video signal when one or more preset conditions are satisfied ( parsing) and, based on the parsed syntax element, checks whether the quadratic transform is applied to a transform block included in the coding unit, and when the quadratic transform is applied to the transform block, the transform block Performing a quadratic inverse transform based on one or more coefficients of a first subblock, which is one of one or more subblocks constituting a, to obtain one or more inverse transform coefficients for the first subblock, and the one or more inverse transform coefficients
  • a residual sample for the transform block is obtained by performing a first-order inverse transform based on, but the second transform is a low frequency non-separable transform (LFNST), and the transform block is a vertical transform.
  • LNNST low frequency non-separable transform
  • a block to which a separable first-order transform is applied by a horizontal transform, and a first condition among the one or more preset conditions is a position of a first coefficient among the one or more coefficients of the first subblock. It is characterized in that it is a case in which an index value indicating is greater than a preset threshold value.
  • the syntax element is characterized in that it includes information indicating whether the quadratic transformation is applied to the coding unit and information indicating a transformation kernel used for the quadratic transformation.
  • the first coefficient is a last significant coefficient according to a preset scan order
  • the significant coefficient is a non-zero coefficient
  • the first subblock is a first subblock according to a preset scan order.
  • a second condition among the one or more preset conditions is characterized in that the transform block has a width of 4 pixels or more.
  • the preset threshold is characterized in that it is 0.
  • the preset scan order is an up-right diagonal scan order.
  • a third condition among the one or more preset conditions is a case where a value of the transform skip flag included in the bitstream is not a specific value, and the value of the transform skip flag indicates the specific value. If so, the transform skip flag indicates that the first-order transform and the second-order transform are not applied to the transform block.
  • the fourth condition among the one or more preset conditions is that at least one coefficient among the one or more coefficients of the first subblock is not 0, and the at least one coefficient is a preset scan order. It is characterized in that it exists in a place other than the first position according to.
  • the second-order transform Syntax elements related to are characterized in that they are parsed.
  • the apparatus in the apparatus for encoding a video signal, includes a processor, wherein the processor performs a first order transformation on a residual sample of a block included in the coding unit to calculate a plurality of first order transform coefficients for the block.
  • the second order transformation comprises: a low-band non-separated transformation ( Low Frequency Non-Separable Transform, LFNST), and the first-order transform is separated into a vertical transform and a horizontal transform, and is separable, and the syntax element related to the second-order transform of the coding unit meets one or more preset conditions. If satisfied, it is encoded, and the first condition among the one or more preset conditions is a case in which an index value indicating the position of the first coefficient among the one or more quadratic transform coefficients is greater than a preset threshold value. do.
  • LFNST Low Frequency Non-Separable Transform
  • the syntax element is characterized in that it includes information indicating whether the quadratic transformation is applied to the coding unit and information indicating a transformation kernel used for the quadratic transformation.
  • the first coefficient is a last significant coefficient according to a preset scan order
  • the significant coefficient is a non-zero coefficient
  • the first subblock is a first subblock according to a preset scan order.
  • the second condition among the one or more preset conditions is characterized in that the width and height of the first-order transform block are 4 pixels or more.
  • the preset threshold is characterized in that it is 0.
  • the preset scan order is an up-right diagonal scan order.
  • a third condition among the one or more preset conditions is a case where a value of the transform skip flag included in the bitstream is not a specific value, and the value of the transform skip flag indicates the specific value. If present, the transform skip flag may indicate that the first-order transform and the second-order transform are not applied to the block.
  • the fourth condition among the preset one or more conditions is that at least one coefficient among the one or more quadratic transform coefficients is not 0, and the at least one coefficient is a first according to a preset scan order. It is characterized in that it exists in a place other than the second position.
  • the bitstream is included in the residual sample of a block included in the coding unit.
  • Performing a first-order transform for the block to obtain a plurality of first-order transform coefficients for the block;
  • the second-order transform is a Low Frequency Non-Separable Transform (LFNST), and the first-order transform can be performed separately into a vertical transform and a horizontal transform. (separable), and the syntax element related to the quadratic transformation is encoded when one or more preset conditions are satisfied, and a first condition among the one or more preset conditions is a first condition among the one or more quadratic transformation coefficients. It is characterized in that the index value indicating the position of the 1 coefficient is greater than a preset threshold value.
  • LTNST Low Frequency Non-Separable Transform
  • An embodiment of the present invention provides a video signal processing method using second-order transformation and an apparatus therefor.
  • FIG. 1 is a schematic block diagram of a video signal encoding apparatus according to an embodiment of the present invention.
  • FIG. 2 is a schematic block diagram of a video signal decoding apparatus according to an embodiment of the present invention.
  • FIG. 3 shows an embodiment in which a coding tree unit is divided into coding units within a picture.
  • FIG. 4 shows an embodiment of a method for signaling division of a quad tree and a multi-type tree.
  • FIG 5 and 6 more specifically illustrate an intra prediction method according to an embodiment of the present invention.
  • FIG. 7 is a diagram specifically illustrating a method of converting a residual signal by an encoder.
  • FIG. 8 is a diagram specifically illustrating a method of obtaining a residual signal by inverse transforming a transform coefficient by an encoder and a decoder.
  • FIG. 9 is a diagram showing basis functions for a plurality of transform kernels that can be used in a first-order transform.
  • FIG. 10 is a block diagram illustrating a process of restoring a residual signal in a decoder that performs quadratic transformation according to an embodiment of the present invention.
  • FIG. 11 is a diagram illustrating a process of restoring a residual signal in a decoder performing quadratic transformation according to an embodiment of the present invention at a block level.
  • FIG. 12 is a diagram illustrating a method of applying a quadratic transformation using a reduced number of samples according to an embodiment of the present invention.
  • FIG. 13 is a diagram illustrating a method of determining an up-right diagonal scan order according to an embodiment of the present invention.
  • FIG. 14 is a diagram illustrating an upper-right diagonal scan order according to a block size according to an embodiment of the present invention.
  • 15 is a diagram illustrating a method of instructing quadratic transformation at a coding unit level.
  • 16 is a diagram illustrating a residual_coding syntax structure according to an embodiment of the present invention.
  • 17 is a diagram illustrating a method of instructing quadratic transformation at a coding unit level according to an embodiment of the present invention.
  • FIG. 18 is a diagram illustrating a method of instructing quadratic transformation at a coding unit level according to an embodiment of the present invention.
  • 19 is a diagram showing a residual_coding syntax structure according to an embodiment of the present invention.
  • 20 is a diagram showing a residual_coding syntax structure according to another embodiment of the present invention.
  • 21 is a diagram illustrating a method of instructing a quadratic transformation at a coding unit level according to another embodiment of the present invention.
  • FIG. 22 is a diagram illustrating a residual_coding syntax structure according to another embodiment of the present invention.
  • FIG. 23 is a diagram illustrating a method of instructing a second-order transformation at a transformation unit level according to an embodiment of the present invention.
  • 24 is a diagram illustrating a method of instructing a quadratic transformation at a transformation unit level according to another embodiment of the present invention.
  • 25 is a diagram showing a coding unit syntax according to an embodiment of the present invention.
  • 26 is a diagram illustrating a method of instructing quadratic transformation at a transformation unit level according to another embodiment of the present invention.
  • FIG. 27 illustrates a syntax structure related to a position of a last significant coefficient in a scan order according to an embodiment of the present invention.
  • FIG. 28 is a diagram illustrating a residual_coding syntax structure according to another embodiment of the present invention.
  • 29 is a flowchart illustrating a video signal processing method according to an embodiment of the present invention.
  • Coding can be interpreted as encoding or decoding in some cases.
  • an apparatus for generating a video signal bitstream by performing encoding (encoding) of a video signal is referred to as an encoding apparatus or an encoder
  • an apparatus for restoring a video signal by performing decoding (decoding) of a video signal bitstream is decoding It is referred to as a device or decoder.
  • a video signal processing apparatus is used as a term for a concept including both an encoder and a decoder.
  • The'unit' is used to refer to a basic unit of image processing or a specific position of a picture, and refers to an image area including at least one of a luma component and a chroma component.
  • a'block' refers to an image region including a specific component among luminance components and color difference components (ie, Cb and Cr).
  • terms such as'unit','block','partition', and'area' may be used interchangeably.
  • the unit may be used as a concept including all of a coding unit, a prediction unit, and a transform unit.
  • a picture refers to a field or a frame, and the terms may be used interchangeably according to embodiments.
  • the encoding apparatus 100 of the present invention includes a transform unit 110, a quantization unit 115, an inverse quantization unit 120, an inverse transform unit 125, a filtering unit 130, and a prediction unit 150. ) And an entropy coding unit 160.
  • the transform unit 110 converts a residual signal that is a difference between an input video signal and a prediction signal generated by the prediction unit 150 to obtain a transform coefficient value.
  • Discrete Cosine Transform DCT
  • DST Discrete Sine Transform
  • Wavelet Transform may be used.
  • Discrete cosine transform and discrete sine transform are transformed by dividing the input picture signal into a block form. In transformation, coding efficiency may vary depending on the distribution and characteristics of values in the transformation region.
  • the quantization unit 115 quantizes a transform coefficient value output from the transform unit 110.
  • the picture signal is not coded as it is, but a reconstructed picture by predicting a picture using a region already coded through the prediction unit 150 and adding a residual value between the original picture and the predicted picture to the predicted picture.
  • the method of obtaining is used.
  • information available in the decoder must be used when performing prediction in the encoder.
  • the encoder performs a process of reconstructing the encoded current block.
  • the inverse quantization unit 120 inverse quantizes the transform coefficient value, and the inverse transform unit 125 restores the residual value by using the inverse quantization transform coefficient value.
  • the filtering unit 130 performs a filtering operation to improve the quality and encoding efficiency of the reconstructed picture.
  • a deblocking filter For example, a deblocking filter, a sample adaptive offset (SAO), and an adaptive loop filter may be included.
  • the filtered picture is output or stored in a decoded picture buffer (DPB) 156 to be used as a reference picture.
  • DPB decoded picture buffer
  • the picture signal is not coded as it is, but a reconstructed picture by predicting a picture using a region already coded through the prediction unit 150 and adding a residual value between the original picture and the predicted picture to the predicted picture.
  • the method of obtaining is used.
  • the intra prediction unit 152 performs intra prediction within the current picture, and the inter prediction unit 154 predicts the current picture by using a reference picture stored in the decoded picture buffer 156.
  • the intra prediction unit 152 performs intra prediction from reconstructed regions in the current picture, and transmits the intra encoding information to the entropy coding unit 160.
  • the inter prediction unit 154 may again include a motion estimation unit 154a and a motion compensation unit 154b.
  • the motion estimation unit 154a obtains a motion vector value of the current region by referring to the restored specific region.
  • the motion estimation unit 154a transfers position information (reference frame, motion vector, etc.) of the reference region to the entropy coding unit 160 to be included in the bitstream.
  • the motion compensation unit 154b performs inter-motion compensation using the motion vector value transmitted from the motion estimation unit 154a.
  • the prediction unit 150 includes an intra prediction unit 152 and an inter prediction unit 154.
  • the intra prediction unit 152 performs intra prediction within the current picture, and the inter prediction unit 154 predicts the current picture using a reference picture stored in the decoded picture buffer 156. Perform.
  • the intra prediction unit 152 performs intra prediction from reconstructed samples in the current picture, and transmits intra encoding information to the entropy coding unit 160.
  • the intra encoding information may include at least one of an intra prediction mode, a Most Probable Mode (MPM) flag, and an MPM index.
  • Intra encoding information may include information on a reference sample.
  • the inter prediction unit 154 may include a motion estimation unit 154a and a motion compensation unit 154b.
  • the motion estimation unit 154a obtains a motion vector value of the current region by referring to a specific region of the reconstructed reference picture.
  • the motion estimation unit 154a transmits a motion information set (reference picture index, motion vector information, etc.) for the reference region to the entropy coding unit 160.
  • the motion compensation unit 154b performs motion compensation using the motion vector value transmitted from the motion estimation unit 154a.
  • the inter prediction unit 154 transmits inter encoding information including motion information on the reference region to the entropy coding unit 160.
  • the prediction unit 150 may include an intra block copy (BC) prediction unit (not shown).
  • the intra BC prediction unit performs intra BC prediction from reconstructed samples in the current picture, and transfers intra BC encoding information to the entropy coding unit 160.
  • the intra BC predictor refers to a specific region in the current picture and obtains a block vector value indicating a reference region used for prediction of the current region.
  • the intra BC prediction unit may perform intra BC prediction using the obtained block vector value.
  • the intra BC prediction unit transfers intra BC encoding information to the entropy coding unit 160.
  • Intra BC encoding information may include block vector information.
  • the transform unit 110 obtains a transform coefficient value by transforming a residual value between the original picture and the predicted picture.
  • the transformation may be performed in units of a specific block within the picture, and the size of the specific block may vary within a preset range.
  • the quantization unit 115 quantizes the transform coefficient values generated by the transform unit 110 and transmits the quantization to the entropy coding unit 160.
  • the entropy coding unit 160 generates a video signal bitstream by entropy coding information representing a quantized transform coefficient, intra coding information, and inter coding information.
  • a variable length coding (VLC) method and an arithmetic coding method may be used.
  • the variable length coding (VLC) method converts input symbols into consecutive codewords, and the length of the codeword may be variable. For example, frequently occurring symbols are expressed as short codewords, and infrequently occurring symbols are expressed as long codewords.
  • a context-based adaptive variable length coding (CAVLC) scheme may be used as a variable length coding scheme.
  • Arithmetic coding converts consecutive data symbols into one prime number, and arithmetic coding can obtain an optimal prime bit necessary to represent each symbol.
  • Context-based Adaptive Binary Arithmetic Code may be used as arithmetic coding.
  • CABAC Context-based Adaptive Binary Arithmetic Code
  • the entropy coding unit 160 may binarize information representing a quantized transform coefficient.
  • the entropy coding unit 160 may generate a bitstream by arithmetic coding the binary information.
  • the generated bitstream is encapsulated in a basic unit of a Network Abstraction Layer (NAL) unit.
  • the NAL unit includes a coded integer number of coding tree units.
  • the bitstream In order to decode a bitstream in a video decoder, the bitstream must first be separated into NAL unit units, and then each separated NAL unit must be decoded. Meanwhile, information necessary for decoding a video signal bitstream is a high-level set such as a picture parameter set (PPS), a sequence parameter set (SPS), and a video parameter set (VPS). It may be transmitted through RBSP (Raw Byte Sequence Payload).
  • PPS picture parameter set
  • SPS sequence parameter set
  • VPN video parameter set
  • FIG. 1 shows the encoding apparatus 100 according to an embodiment of the present invention, and separately displayed blocks are shown by logically distinguishing elements of the encoding apparatus 100. Accordingly, the elements of the encoding apparatus 100 described above may be mounted as one chip or as a plurality of chips according to the design of the device. According to an embodiment, the operation of each element of the encoding apparatus 100 described above may be performed by a processor (not shown).
  • the decoding apparatus 200 of the present invention includes an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 225, a filtering unit 230, and a prediction unit 250.
  • the entropy decoding unit 210 entropy-decodes the video signal bitstream, and extracts transform coefficient information, intra encoding information, inter encoding information, and the like for each region. For example, the entropy decoding unit 210 may obtain a binarization code for transform coefficient information of a specific region from a video signal bitstream. In addition, the entropy decoding unit 210 obtains quantized transform coefficients by inverse binarizing the binarized code. The inverse quantization unit 220 inverse quantizes the quantized transform coefficient, and the inverse transform unit 225 restores a residual value using the inverse quantization transform coefficient. The video signal processing apparatus 200 restores the original pixel value by summing the residual value obtained by the inverse transform unit 225 with the predicted value obtained by the prediction unit 250.
  • the filtering unit 230 improves image quality by filtering a picture.
  • This may include a deblocking filter for reducing block distortion and/or an adaptive loop filter for removing distortion of an entire picture.
  • the filtered picture is output or stored in the decoded picture buffer (DPB) 256 to be used as a reference picture for the next picture.
  • DPB decoded picture buffer
  • the prediction unit 250 includes an intra prediction unit 252 and an inter prediction unit 254.
  • the prediction unit 250 generates a prediction picture by using an encoding type decoded by the entropy decoding unit 210 described above, a transform coefficient for each region, and intra/inter encoding information.
  • a current picture including the current block or a decoded area of other pictures may be used.
  • an intra picture or an I picture (or tile/slice), intra prediction, inter prediction, and intra BC prediction Using only the current picture for restoration, i.e., a picture (or tile/slice) performing intra prediction or intra BC prediction, an intra picture or an I picture (or tile/slice), intra prediction, inter prediction, and intra BC prediction
  • a picture (or tile/slice) that can be performed is referred to as an inter picture (or tile/slice).
  • a picture (or tile/slice) using at most one motion vector and a reference picture index is a predictive picture or a P picture (or , Tile/slice), and a picture (or tile/slice) using up to two motion vectors and a reference picture index is referred to as a bi-predictive picture or a B picture (or tile/slice).
  • a P picture (or tile/slice) uses at most one set of motion information to predict each block
  • a B picture (or tile/slice) uses at most two motion information to predict each block.
  • the motion information set includes one or more motion vectors and one reference picture index.
  • the intra prediction unit 252 generates a prediction block using intra-encoding information and reconstructed samples in the current picture.
  • the intra encoding information may include at least one of an intra prediction mode, a Most Probable Mode (MPM) flag, and an MPM index.
  • MPM Most Probable Mode
  • the intra prediction unit 252 predicts sample values of the current block by using reconstructed samples located on the left and/or above of the current block as reference samples.
  • reconstructed samples, reference samples, and samples of the current block may represent pixels. Also, sample values may represent pixel values.
  • the reference samples may be samples included in a neighboring block of the current block.
  • the reference samples may be samples adjacent to the left boundary of the current block and/or samples adjacent to the upper boundary.
  • the reference samples are samples located on a line within a preset distance from the left boundary of the current block among samples of the neighboring blocks of the current block and/or on a line within a preset distance from the upper boundary of the current block. It may be a sample.
  • the neighboring block of the current block is a left (L) block, an upper (A) block, a lower left (BL) block, an upper right (AR) block, or an upper left (Above Left) block.
  • AL may include at least one of the blocks.
  • the inter prediction unit 254 generates a prediction block using a reference picture and inter encoding information stored in the decoded picture buffer 256.
  • the inter-encoding information may include a set of motion information (reference picture index, motion vector information, etc.) of the current block for the reference block.
  • Inter prediction may include L0 prediction, L1 prediction, and Bi-prediction.
  • L0 prediction means prediction using one reference picture included in the L0 picture list
  • L1 prediction means prediction using one reference picture included in the L1 picture list.
  • a set of motion information (eg, a motion vector and a reference picture index) may be required.
  • up to two reference regions may be used, and the two reference regions may exist in the same reference picture or may exist in different pictures.
  • the two motion vectors may correspond to the same reference picture index or to different reference picture indexes. May correspond.
  • the reference pictures may be displayed (or output) temporally before or after the current picture.
  • the two reference regions used in the bi-prediction scheme may be regions selected from each of the L0 picture list and the L1 picture list.
  • the inter prediction unit 254 may obtain a reference block of the current block using a motion vector and a reference picture index.
  • the reference block exists in a reference picture corresponding to a reference picture index.
  • a sample value of a block specified by a motion vector or an interpolated value thereof may be used as a predictor of the current block.
  • an 8-tap interpolation filter may be used for a luminance signal and a 4-tap interpolation filter may be used for a color difference signal.
  • the interpolation filter for motion prediction in units of subpels is not limited thereto.
  • the inter prediction unit 254 performs motion compensation for predicting the texture of the current unit from a previously restored picture.
  • the inter prediction unit may use a motion information set.
  • the prediction unit 250 may include an intra BC prediction unit (not shown).
  • the intra BC predictor may reconstruct the current area by referring to a specific area including reconstructed samples in the current picture.
  • the intra BC prediction unit obtains intra BC encoding information for the current region from the entropy decoding unit 210.
  • the intra BC predictor acquires a block vector value of the current region indicating a specific region in the current picture.
  • the intra BC prediction unit may perform intra BC prediction using the obtained block vector value.
  • Intra BC encoding information may include block vector information.
  • a reconstructed video picture is generated by adding a prediction value output from the intra prediction unit 252 or the inter prediction unit 254 and a residual value output from the inverse transform unit 225. That is, the video signal decoding apparatus 200 reconstructs the current block by using the prediction block generated by the prediction unit 250 and the residual obtained from the inverse transform unit 225.
  • FIG. 2 shows the decoding apparatus 200 according to an embodiment of the present invention, and separately displayed blocks are shown by logically distinguishing elements of the decoding apparatus 200. Therefore, the elements of the decoding apparatus 200 described above may be mounted as one chip or as a plurality of chips according to the design of the device. According to an embodiment, the operation of each element of the decoding apparatus 200 described above may be performed by a processor (not shown).
  • a coding tree unit (CTU) is divided into coding units (CUs) in a picture.
  • a picture may be divided into a sequence of coding tree units (CTUs).
  • the coding tree unit is composed of an NXN block of luma samples and two blocks of chroma samples corresponding thereto.
  • the coding tree unit may be divided into a plurality of coding units.
  • the coding tree unit is not divided and may be a leaf node. In this case, the coding tree unit itself may be a coding unit.
  • the coding unit refers to a basic unit for processing a picture in the above-described video signal processing, that is, intra/inter prediction, transformation, quantization, and/or entropy coding.
  • the size and shape of a coding unit in one picture may not be constant.
  • the coding unit may have a square or rectangular shape.
  • the rectangular coding unit (or rectangular block) includes a vertical coding unit (or vertical block) and a horizontal coding unit (or horizontal block).
  • a vertical block is a block having a height greater than a width
  • a horizontal block is a block having a width greater than the height.
  • a non-square block may refer to a rectangular block, but the present invention is not limited thereto.
  • a coding tree unit is first divided into a quad tree (QT) structure. That is, in a quad tree structure, one node having a size of 2NX2N may be divided into four nodes having a size of NXN.
  • the quad tree may also be referred to as a quaternary tree.
  • Quad-tree partitioning can be performed recursively, and not all nodes need to be partitioned to the same depth.
  • the leaf node of the quad tree described above may be further divided into a multi-type tree (MTT) structure.
  • MTT multi-type tree
  • one node in a multi-type tree structure, one node may be divided into a horizontal or vertically divided binary (binary) or ternary (ternary) tree structure. That is, in the multi-type tree structure, there are four division structures: vertical binary division, horizontal binary division, vertical ternary division, and horizontal ternary division.
  • both widths and heights of nodes in each tree structure may have a power of 2.
  • a node having a size of 2NX2N may be divided into two NX2N nodes by vertical binary division, and divided into two 2NXN nodes by horizontal binary division.
  • a node of 2NX2N size is divided into nodes of (N/2)X2N, NX2N and (N/2)X2N by vertical ternary division, and horizontal ternary It can be divided into 2NX(N/2), 2NXN, and 2NX(N/2) nodes by division.
  • This multi-type tree division can be performed recursively.
  • Leaf nodes of a multi-type tree can be coding units. If the coding unit is not larger than the maximum transform length, the coding unit may be used as a unit of prediction and/or transformation without further division. As an embodiment, when the width or height of the current coding unit is greater than the maximum transform length, the current coding unit may be divided into a plurality of transform units without explicit signaling regarding segmentation. Meanwhile, in the above-described quad tree and multi-type tree, at least one of the following parameters may be defined in advance or transmitted through RBSP of a higher level set such as PPS, SPS, and VPS.
  • CTU size the size of the root node of the quad tree
  • MinQtSize the minimum QT leaf node size allowed
  • maximum BT size the maximum BT root node size allowed
  • Maximum TT size Maximum allowed TT root node size
  • Maximum MTT depth Maximum allowable depth of MTT split from leaf node of QT
  • Minimum BT size MinBtSize: Allowed Minimum BT leaf node size
  • Minimum TT size Minimum allowed TT leaf node size.
  • Pre-set flags may be used to signal the division of the quad tree and multi-type tree described above. 4, a flag'split_cu_flag' indicating whether to divide a node, a flag'split_qt_flag' indicating whether to divide a quad tree node, a flag'mtt_split_cu_vertical_flag' indicating a splitting direction of a multi-type tree node, or multi- At least one of the flags'mtt_split_cu_binary_flag' indicating the split shape of the type tree node may be used.
  • 'split_cu_flag' which is a flag indicating whether the current node is divided, may be signaled first.
  • the value of'split_cu_flag' is 0, it indicates that the current node is not divided, and the current node becomes a coding unit.
  • the coding tree unit includes one non-divided coding unit.
  • the current node is a quad tree node'QT node'
  • the current node is a leaf node'QT leaf node' of the quad tree and becomes a coding unit.
  • the current node is a multi-type tree node'MTT node'
  • the current node is a leaf node'MTT leaf node' of the multi-type tree and becomes a coding unit.
  • the current node may be divided into nodes of a quad tree or a multi-type tree according to the value of'split_qt_flag'.
  • the coding tree unit is a root node of a quad tree, and may be first divided into a quad tree structure. In the quad tree structure,'split_qt_flag' is signaled for each node'QT node'.
  • quad-tree division may be limited according to the type of the current node. If the current node is a coding tree unit (the root node of the quart tree) or a quart tree node, quad-tree partitioning may be allowed, and if the current node is a multi-type tree node, the quart tree partitioning may not be allowed.
  • Each quad tree leaf node'QT leaf node' may be further divided into a multi-type tree structure. As described above, when'split_qt_flag' is 0, the current node may be divided into multi-type nodes. In order to indicate the splitting direction and split shape,'mtt_split_cu_vertical_flag' and'mtt_split_cu_binary_flag' may be signaled. When the value of'mtt_split_cu_vertical_flag' is 1, the vertical split of the node'MTT node' is indicated, and the value of'mtt_split_cu_vertical_flag' is If 0, horizontal division of the node'MTT node' is indicated.
  • the node'MTT node' is divided into two rectangular nodes, and when the value of'mtt_split_cu_binary_flag' is 0, the node'MTT node' is divided into three rectangular nodes.
  • Picture prediction (motion compensation) for coding is performed for coding units that are no longer divided (ie, leaf nodes of the coding unit tree).
  • the basic unit that performs such prediction is hereinafter referred to as a prediction unit or a prediction block.
  • the term unit used herein may be used as a term to replace the prediction unit, which is a basic unit for performing prediction.
  • the present invention is not limited thereto, and may be more broadly understood as a concept including the coding unit.
  • the intra prediction unit predicts sample values of the current block by using reconstructed samples located on the left and/or above of the current block as reference samples.
  • FIG. 5 shows an embodiment of reference samples used for prediction of a current block in an intra prediction mode.
  • the reference samples may be samples adjacent to the left boundary of the current block and/or samples adjacent to the upper boundary.
  • a maximum of 2W+2H+1 located on the left and/or above of the current block Reference samples can be set using the surrounding samples.
  • the intra prediction unit may obtain a reference sample by performing a reference sample padding process. Also, the intra prediction unit may perform a reference sample filtering process to reduce an error in intra prediction. That is, filtered reference samples may be obtained by performing filtering on neighboring samples and/or reference samples obtained by the reference sample padding process. The intra prediction unit predicts samples of the current block using the reference samples thus obtained. The intra prediction unit predicts samples of the current block using unfiltered reference samples or filtered reference samples.
  • peripheral samples may include samples on at least one reference line.
  • the surrounding samples may include adjacent samples on a line adjacent to the boundary of the current block.
  • FIG. 6 shows an embodiment of prediction modes used for intra prediction.
  • intra prediction mode information indicating an intra prediction direction may be signaled.
  • the intra prediction mode information indicates any one of a plurality of intra prediction modes constituting the intra prediction mode set.
  • the decoder receives intra prediction mode information of the current block from the bitstream.
  • the intra prediction unit of the decoder performs intra prediction on the current block based on the extracted intra prediction mode information.
  • the intra prediction mode set may include all intra prediction modes (eg, a total of 67 intra prediction modes) used for intra prediction. More specifically, the intra prediction mode set may include a planar mode, a DC mode, and a plurality (eg, 65) angular modes (ie, directional modes). Each intra prediction mode may be indicated through a preset index (ie, an intra prediction mode index). For example, as shown in FIG. 6, an intra prediction mode index 0 indicates a planar mode, and an intra prediction mode index 1 indicates a DC mode.
  • intra prediction mode indexes 2 to 66 may indicate different angular modes, respectively. The angle modes indicate different angles within a preset angle range, respectively.
  • the angle mode may indicate an angle within an angle range between 45 degrees and -135 degrees in a clockwise direction (ie, a first angle range).
  • the angular mode may be defined based on the 12 o'clock direction.
  • intra prediction mode index 2 indicates a horizontal diagonal (HDIA) mode
  • intra prediction mode index 18 indicates a horizontal (HOR) mode
  • intra prediction mode index 34 indicates a diagonal (Diagonal, DIA) mode.
  • a mode is indicated
  • an intra prediction mode index 50 indicates a vertical (VER) mode
  • an intra prediction mode index 66 indicates a vertical diagonal (VDIA) mode.
  • the preset angle range may be set differently according to the shape of the current block. For example, when the current block is a rectangular block, a wide-angle mode indicating an angle exceeding 45 degrees or less than -135 degrees clockwise may be additionally used. When the current block is a horizontal block, the angle mode may indicate an angle within an angle range (that is, a second angle range) between (45+offset1) degrees and (-135+offset1) degrees in a clockwise direction. In this case, angle modes 67 to 76 outside the first angle range may be additionally used.
  • the angle mode may indicate an angle within an angle range (ie, a third angle range) between (45-offset2) degrees and (-135-offset2) degrees in a clockwise direction.
  • angle modes -10 to -1 outside the first angle range may be additionally used.
  • values of offset1 and offset2 may be determined differently according to a ratio between the width and height of the rectangular block. Also, offset1 and offset2 may be positive numbers.
  • a plurality of angular modes constituting the intra prediction mode set may include a basic angular mode and an extended angular mode.
  • the extended angle mode may be determined based on the basic angle mode.
  • the basic angle mode is a mode corresponding to an angle used in intra prediction of an existing HEVC (High Efficiency Video Coding) standard
  • the extended angle mode corresponds to an angle newly added in intra prediction of the next generation video codec standard. It can be a mode to do.
  • the basic angular mode is an intra prediction mode ⁇ 2, 4, 6, ... , 66 ⁇
  • the extended angle mode is an intra prediction mode ⁇ 3, 5, 7, ... , 65 ⁇ may be an angle mode corresponding to any one of. That is, the extended angle mode may be an angle mode between basic angle modes within the first angle range. Accordingly, the angle indicated by the extended angle mode may be determined based on the angle indicated by the basic angle mode.
  • the basic angle mode is a mode corresponding to an angle within a preset first angle range
  • the extended angle mode may be a wide angle mode outside the first angle range. That is, the basic angular mode is the intra prediction mode ⁇ 2, 3, 4,... , 66 ⁇ , and the extended angle mode is an intra prediction mode ⁇ -10, -9, ... , -1 ⁇ and ⁇ 67, 68,... , 76 ⁇ may be an angular mode corresponding to any one of.
  • the angle indicated by the extended angle mode may be determined as an angle opposite to the angle indicated by the corresponding basic angle mode. Accordingly, the angle indicated by the extended angle mode may be determined based on the angle indicated by the basic angle mode.
  • the number of expansion angle modes is not limited thereto, and additional expansion angles may be defined according to the size and/or shape of the current block.
  • the extended angle mode is the intra prediction mode ⁇ -14, -13,... , -1 ⁇ and ⁇ 67, 68,... , 80 ⁇ may be defined as an angle mode corresponding to any one of.
  • the total number of intra prediction modes included in the intra prediction mode set may vary according to the configuration of the above-described basic angle mode and extended angle mode.
  • the spacing between the extended angle modes may be set based on the spacing between the corresponding basic angle modes. For example, extended angle modes ⁇ 3, 5, 7,... , 65 ⁇ the spacing between the corresponding basic angular modes ⁇ 2, 4, 6,... , 66 ⁇ can be determined based on the interval. Also, the extended angle modes ⁇ -10, -9,... , -1 ⁇ the spacing between the corresponding opposite basic angular modes ⁇ 56, 57,... , 65 ⁇ , determined based on the spacing between the extended angle modes ⁇ 67, 68, ... , 76 ⁇ the spacing between the corresponding opposite basic angular modes ⁇ 3, 4,... , 12 ⁇ may be determined based on the interval. The angular spacing between the extended angle modes may be set to be the same as the angular spacing between the corresponding basic angle modes. In addition, the number of extended angle modes in the intra prediction mode set may be set to be less than or equal to the number of basic angle modes.
  • the extended angle mode may be signaled based on the basic angle mode.
  • the wide-angle mode ie, the extended angle mode
  • the wide-angle mode may replace at least one angle mode (ie, the basic angle mode) within the first angle range.
  • the replaced default angle mode may be an angle mode corresponding to the opposite side of the wide angle mode. That is, the replaced basic angle mode is an angle mode that corresponds to an angle in a direction opposite to the angle indicated by the wide-angle mode or to an angle that differs by a preset offset index from the angle in the opposite direction.
  • the preset offset index is 1.
  • the intra prediction mode index corresponding to the replaced basic angular mode may be remapped to the wide-angle mode to signal the corresponding wide-angle mode.
  • wide-angle mode ⁇ -10, -9,... , -1 ⁇ is the intra prediction mode index ⁇ 57, 58, ... , 66 ⁇
  • each can be signaled by the wide-angle mode ⁇ 67, 68, ... , 76 ⁇ is an intra prediction mode index ⁇ 2, 3, ... , 11 ⁇ , respectively.
  • the intra prediction mode index for the basic angular mode signals the extended angular mode
  • the intra prediction mode indices of the same set are applied to the signaling of the intra prediction mode even if the configurations of the angular modes used for intra prediction of each block are different. Can be used. Accordingly, signaling overhead due to a change in the intra prediction mode configuration can be minimized.
  • whether to use the extended angle mode may be determined based on at least one of the shape and size of the current block.
  • the extended angle mode when the size of the current block is larger than a preset size, the extended angle mode is used for intra prediction of the current block, otherwise, only the basic angle mode may be used for intra prediction of the current block.
  • the current block when the current block is a non-square block, the extended angle mode is used for intra prediction of the current block, and when the current block is a square block, only the basic angle mode may be used for intra prediction of the current block.
  • a method of quantizing a transform coefficient value obtained by transforming the residual signal and coding the quantized transform coefficient may be used instead of coding the above-described residual signal as it is.
  • the transform unit may obtain a transform coefficient value by transforming the residual signal.
  • the residual signal of a specific block may be distributed over the entire area of the current block. Accordingly, it is possible to improve coding efficiency by concentrating energy in the low frequency region through frequency domain conversion of the residual signal.
  • a method of transforming or inversely transforming the residual signal will be described in detail.
  • the residual signal in the spatial domain may be converted to the frequency domain.
  • the encoder may convert the obtained residual signal to obtain a transform coefficient.
  • the encoder may obtain at least one residual block including a residual signal for the current block.
  • the residual block may be either the current block or blocks divided from the current block.
  • the residual block may be referred to as a residual array or a residual matrix including residual samples of the current block.
  • the residual block may represent a transform unit or a block having the same size as the size of the transform block.
  • the encoder can transform the residual block using a transform kernel.
  • the transformation kernel used for transformation for the residual block may be a transformation kernel having separable characteristics of vertical transformation and horizontal transformation.
  • the transformation for the residual block may be performed separately into vertical transformation and horizontal transformation.
  • the encoder may perform vertical transformation by applying a transformation kernel in the vertical direction of the residual block.
  • the encoder may perform horizontal transformation by applying a transformation kernel in the horizontal direction of the residual block.
  • a transform kernel may be used as a term referring to a parameter set used for transforming a residual signal such as a transform matrix, a transform array, a transform function, and a transform.
  • the conversion kernel may be any one of a plurality of usable kernels.
  • a transformation kernel based on different transformation types may be used for each of the vertical transformation and the horizontal transformation.
  • the encoder may quantize by transferring the transform block transformed from the residual block to the quantization unit.
  • the transform block may include a plurality of transform coefficients.
  • the transform block may be composed of a plurality of transform coefficients arranged in two dimensions.
  • the size of the transform block may be the same as either the current block or a block divided from the current block.
  • the transform coefficients transferred to the quantization unit may be expressed as quantized values.
  • the encoder may perform additional transform before the transform coefficient is quantized.
  • the above-described transform method may be referred to as a primary transform, and an additional transform may be referred to as a secondary transform.
  • the quadratic transformation may be selective for each residual block.
  • the encoder may improve coding efficiency by performing a second-order transform on a region where it is difficult to concentrate energy in a low-frequency region with only first-order transform.
  • a quadratic transformation may be added to a block in which residual values appear larger in a direction other than the horizontal or vertical direction of the residual block.
  • the residual values of the intra-predicted block may have a higher probability of changing in a direction other than the horizontal or vertical direction compared to the residual values of the inter-predicted block. Accordingly, the encoder may additionally perform quadratic transformation on the residual signal of the intra-predicted block. In addition, the encoder may omit the quadratic transformation for the residual signal of the inter-predicted block.
  • whether to perform the quadratic transformation may be determined according to the size of the current block or the residual block.
  • transform kernels having different sizes according to the size of the current block or the residual block may be used.
  • 8X8 quadratic transformation may be applied to a block in which the shorter side of the width or height is greater than or equal to the first preset length.
  • a 4X4 quadratic transformation may be applied to a block having a shorter side of the width or height that is greater than or equal to the second preset length and smaller than the first preset length.
  • the first preset length may be a value larger than the second preset length, but the present disclosure is not limited thereto.
  • the second transformation may not be performed separately into vertical transformation and horizontal transformation. This second-order transform may be referred to as a low frequency non-separable transform (LFNST).
  • Whether to perform conversion on the residual signal of a specific area may be determined by a syntax element related to conversion of the specific area.
  • the syntax element may include transform skip information.
  • the transform skip information may be a transform skip flag.
  • the encoder may immediately quantize the residual signal in which the transformation of the corresponding region has not been performed. The operations of the encoder described with reference to FIG. 7 may be performed through the converter of FIG. 1.
  • the above-described conversion related syntax elements may be information parsed from a video signal bitstream.
  • the decoder may entropy decode the video signal bitstream to obtain syntax elements related to transformation.
  • the encoder may generate a video signal bitstream by entropy-coding the transform-related syntax elements.
  • FIG. 8 is a diagram specifically illustrating a method of obtaining a residual signal by inverse transforming a transform coefficient by an encoder and a decoder.
  • the inverse transform unit may obtain a residual signal by inverse transforming the inverse quantized transform coefficient.
  • the inverse transform unit may detect whether an inverse transform for a corresponding region is performed from a syntax element related to transformation of a specific region. According to an embodiment, when a transformation-related syntax element for a specific transformation block indicates transformation skip, transformation for the corresponding transformation block may be omitted.
  • both the first-order inverse transform and the second-order inverse transform may be omitted for the transform block.
  • the inverse quantized transform coefficient can be used as a residual signal.
  • the decoder may reconstruct the current block by using the inverse quantized transform coefficient as a residual signal.
  • the above-described first-order inverse transform represents an inverse transform with respect to a first-order transform, and may be referred to as an inverse primary transform.
  • the second-order inverse transform represents an inverse transform for the second-order transform, and may be referred to as an inverse secondary transform or inverse LFNST.
  • a first-order (inverse) transformation may be referred to as a first (inverse) transformation
  • a second-order (inverse) transformation may be referred to as a second (inverse) transformation.
  • a transform-related syntax element for a specific transform block may not indicate transform skip.
  • the inverse transform unit may determine whether to perform the second-order inverse transform for the second transform. For example, when the transform block is a transform block of an intra-predicted block, a second-order inverse transform may be performed on the transform block. Also, a second-order transform kernel used for the transform block may be determined based on the intra prediction mode corresponding to the transform block. As another example, whether to perform the second-order inverse transform may be determined based on the size of the transform block. The second-order inverse transform may be performed after the inverse quantization process and before the first-order inverse transform is performed.
  • the inverse transform unit may perform a first-order inverse transform on an inverse quantized transform coefficient or a second inverse transform coefficient.
  • the first-order inverse transformation like the first-order transformation, the vertical transformation and the horizontal transformation may be performed separately.
  • the inverse transform unit may obtain a residual block by performing vertical inverse transform and horizontal inverse transform on the transform block.
  • the inverse transform unit may inverse transform the transform block based on the transform kernel used for transforming the transform block.
  • the encoder may explicitly or implicitly signal information indicating a transform kernel applied to a current transform block among a plurality of usable transform kernels.
  • the decoder may select a transform kernel to be used for inverse transform of a transform block from among a plurality of available transform kernels by using information indicating the signaled transform kernel.
  • the inverse transform unit may reconstruct the current block by using the residual signal obtained through inverse transform of the transform coefficient.
  • the distribution of the residual signal of a picture may be different for each region.
  • a distribution of values for a residual signal in a specific region may vary according to a prediction method.
  • coding efficiency may vary for each transformation region according to distributions and characteristics of values in the transformation region. Accordingly, when a transform kernel used for transforming a specific transform block is adaptively selected from among a plurality of usable transform kernels, coding efficiency may be further improved. That is, the encoder and the decoder may additionally be configured to use a transform kernel other than the basic transform kernel in transforming a video signal.
  • a method of adaptively selecting a transform kernel may be referred to as adaptive multiple core transform (AMT) or multiple transform selection (MTS).
  • AMT adaptive multiple core transform
  • MTS multiple transform selection
  • transform and inverse transform are collectively referred to as transform.
  • the transform kernel and the inverse transform kernel are collectively referred to as a transform kernel.
  • the residual (residual) signal which is a difference signal between the original signal and the prediction signal generated through inter prediction or intra prediction, has energy distributed over the entire pixel domain, so when the pixel value of the residual signal itself is encoded, compression There is a problem of poor efficiency. Therefore, a process of concentrating energy in the low frequency region of the frequency domain through transcoding of the residual signal in the pixel domain is required.
  • DCT-II discrete cosine transform type-II
  • the predicted 4x4 in the screen DST-VII discrete sine transform type-VII
  • the residual signal in the pixel domain was transformed into the frequency domain.
  • DCT-II transformation it may be suitable for a residual signal generated through inter prediction (when energy is evenly distributed in the pixel domain).
  • AMT is a transformation technique that adaptively selects a transformation kernel from among several preset transformation kernels according to a prediction method. Depending on which prediction method is used, the pattern in the pixel domain of the residual signal (signal characteristics in the horizontal direction, signal characteristics in the vertical direction) differs, compared to when only DCT-II was used for the conversion of the residual signal. High coding efficiency can be expected.
  • AMT is not limited to its name, and may be referred to as multiple transform selection (MTS).
  • FIG. 9 is a diagram showing basis functions for a plurality of transform kernels that can be used in a first-order transform.
  • FIG. 9 is a diagram showing a basis function of a transform kernel used in AMT, DCT-II, discrete cosine transform type-V (DCT-V), and discrete cosine transform type- DCT-VIII applied to AMT. VIII), DST-I (discrete sine transform type-I), and DST-VII kernel equations are shown.
  • DCT and DST can be expressed as functions of cosine and sine, respectively, and when the basis function of the transform kernel for the number of samples N is expressed as Ti(j), index i represents the index in the frequency domain, and index j is the basis. Represents the index in the function. That is, the smaller i represents the low frequency basis function, and the larger i represents the high frequency basis function.
  • the basis function Ti(j) can represent the j-th element of the i-th row. Since all of the transformation kernels shown in FIG. 9 have separable characteristics, the residual signal X is in the horizontal direction. Transformation can be performed in the and vertical directions respectively.
  • T the transformation of the residual signal X
  • T' denotes a transpose matrix of the transform kernel matrix T.
  • Values of the transformation matrix defined by the basis function shown in FIG. 9 may be in a decimal form rather than an integer form. Values of a prime number may be difficult to implement in hardware in a video encoding device and a decoding device. Accordingly, a transform kernel approximated by an integer from an original transform kernel including values in the form of decimals can be used for encoding and decoding of a video signal.
  • the approximated transform kernel including integer values may be generated through scaling and rounding of the circular transform kernel.
  • the integer value included in the approximated conversion kernel may be a value within a range that can be represented by a preset number of bits. The preset number of bits may be 8-bit or 10-bit.
  • the orthonormal property of DCT and DST may not be maintained. However, since the resulting coding efficiency loss is not large, it may be advantageous in terms of hardware implementation to approximate the transform kernel in an integer form.
  • DST-IV discrete sine transform type-IV
  • DCT-IV discrete cosine transform type-IV
  • the DCT-II kernel for the number of samples 2N contains a DCT-IV kernel for the number of samples N
  • the DST-IV kernel for the number of samples N is a simple operation from the DCT-IV kernel for the number of samples N, and Since it can be implemented by sorting the basis function in reverse order, DST-IV and DCT-IV for the number of samples N can be simply derived from the DCT-II for the number of samples 2N.
  • the residual signal which is the difference between the original signal and the predicted signal, changes the energy distribution of the signal according to the prediction method
  • coding efficiency can be improved when a transform kernel is adaptively selected according to a prediction method such as AMT or MTS.
  • additional transformations such as the second-order transformation and the inverse second-order transformation (inverse transformation corresponding to the second-order transformation)
  • the coding efficiency can be improved by performing
  • the second-order transformation can improve energy compaction for an intra-predicted residual signal block in which strong energy is likely to exist in a direction other than the horizontal or vertical direction of the residual signal block.
  • this second order transform may be referred to as a low frequency non-separable transform (LFNST).
  • the first-order transform may be referred to as a core transform.
  • the entropy coder may parse a syntax element related to a residual signal from a bitstream and obtain a quantization coefficient through de-binarization.
  • the decoder may obtain a transform coefficient by performing inverse quantization on the reconstructed quantization coefficient, and may reconstruct a residual signal block by performing inverse transform on the transform coefficient.
  • the inverse transform can be applied to a block to which transform skip (TS) is not applied.
  • the inverse transform may be performed in the order of a second-order inverse transform and a first-order inverse transform in the decoder.
  • the second-order inverse transformation may be omitted.
  • the second-order inverse transformation is not performed on the inter-predicted block, and may be omitted.
  • the second-order inverse transformation may be omitted depending on the block size condition.
  • the reconstructed residual signal includes a quantization error, and the second-order transform can reduce the quantization error than when only the first-order transform is performed by changing the energy distribution of the residual signal.
  • FIG. 11 is a diagram illustrating a process of restoring a residual signal in a decoder performing quadratic transformation according to an embodiment of the present invention at a block level. Restoration of the residual signal may be performed in a transform unit (TU) or a sub-block unit within the TU.
  • FIG. 11 shows a process of reconstructing a residual signal block to which a second order transform is applied, and a second order inverse transform may be first performed on an inverse quantized transform coefficient block.
  • the decoder may perform a second-order inverse transformation on all samples of WxH (W: width, number of horizontal samples, H: height, number of vertical samples) in the TU, but considering the complexity, the low frequency region, which is the most influential, It is also possible to perform a second-order inverse transform only on a sub-block having a size of W'xH' at the top left. At this time, W'is less than or equal to W. H'is less than or equal to H.
  • min(x, y) represents an operation that returns x when x is less than or equal to y, and returns y when x is greater than y.
  • the decoder may obtain a sub-block transform coefficient of the size of the upper left-hand W'xH' in the TU, and perform a first-order inverse transform on the transform coefficient block of the entire WxH size to obtain a residual signal. Blocks can be restored.
  • the second-order transformation can be activated or applied is determined by high level syntax such as sequence parameter set (SPS), picture parameter set (PPS), picture header, slice header, and tile group header. , HLS) It may be indicated by being included in at least one of the RBSP in the form of a 1-bit flag. Additionally, when the second-order transformation is applicable, the size of the upper left sub-block considered in the second-order transformation may be indicated in the form of a 1-bit flag to at least one of the HLS RBSPs. For example, whether or not an 8x8-sized sub-block can be used for a quadratic transformation considering a 4x4 or 8x8-sized sub-block may be indicated by a 1-bit flag in at least one of the HLS RBSPs.
  • a higher level eg, HLS
  • whether or not secondary transformation is applied may be indicated by a 1-bit flag at the coding unit (CU) level.
  • an index indicating a transform kernel used for the second-order transform may be indicated at the coding unit level.
  • the decoder may perform a second-order inverse transform on a block to which the second-order transform is applied by using a transform kernel indicated by a corresponding index within a preset transform kernel set according to the prediction mode.
  • the index representing the transform kernel can be binarized using truncated unary or fixed length binarization methods.
  • the 1-bit flag indicating whether the second-order conversion is applied at the CU level and the index indicating the conversion kernel used for the second-order conversion may be indicated using one syntax element, and in this specification, this is lfnst_idx[x0]. It is referred to as [y0] or lfnst_idx, but the present invention is not limited to this name.
  • the first bit of lfnst_idx[x0][y0] may indicate whether or not second-order transformation is applied at the CU level.
  • the remaining bits may indicate an index indicating a conversion kernel used for the second-order conversion.
  • lfnst_idx[x0][y0] may indicate whether a second order transformation (LFNST) is applied and an index indicating a transformation kernel used when the second order transformation is applied.
  • LFNST second order transformation
  • Such lfnst_idx[x0][y0] can be coded through an entropy coder such as context-based adeptive binary arithmetic coding (CABAC) and context-based adaptive variable length coding (CAVLC) that adaptively encodes according to the context. have.
  • CABAC context-based adeptive binary arithmetic coding
  • CAVLC context-based adaptive variable length coding
  • the quadratic transformation may not be applied, and the syntax element lfnst_idx[x0][y0] related to the quadratic transformation may be set to 0 without signaling. .
  • the syntax element lfnst_idx[x0][y0] is 0, it may indicate that the quadratic transformation is not applied.
  • lfnst_idx[x0][y0] is greater than 0, it may indicate that a second order transformation is applied, and a transformation kernel used for the second order transformation may be selected based on lfnst_idx[x0][y0].
  • a coding tree unit, a leaf node of a quad tree, and a leaf node of a multi-type tree may be a coding unit.
  • the coding unit may be used as a unit of prediction and/or transformation without further division.
  • the current coding unit may be divided into a plurality of transform units without explicit signaling regarding segmentation.
  • the size of the coding unit is larger than the maximum transform size, it may be divided into a plurality of transform blocks without signaling. In this case, when the second-order transform is applied, performance degradation and complexity may increase.
  • the maximum coding block (or the maximum size of the coding block) to which the second-order transform is applied may be limited.
  • the size of the maximum coding block may be the same as the maximum transform size.
  • the size of the maximum coding block may be defined as the size of a preset coding block.
  • the preset value may be 64, 32, or 16, but the present invention is not limited thereto.
  • a value to be compared with a preset value (or maximum transform size) may be defined as the length of a long side or the total number of samples.
  • the transform kernel based on the DCT-II, DST-VII, and DCT-VIII basis functions used in the first-order transform has a separable characteristic. Accordingly, two transforms in the vertical/horizontal direction may be performed on samples in the residual block of size NxN, and the size of the transform kernel may be NxN.
  • the transformation kernel has a non-separable characteristic. Therefore, when the number of samples considered in the quadratic transformation is nxn, one transformation may be performed. In this case, the size of the transform kernel may be (n ⁇ 2)x(n ⁇ 2).
  • a 16x16 transform kernel when performing a quadratic transformation on a left-top 4x4 coefficient block, a 16x16 transform kernel may be applied.
  • a transformation kernel having a size of 64x64 when performing quadratic transformation on the upper left-hand 8x8 coefficient block, a transformation kernel having a size of 64x64 may be applied. Since the 64x64 transform kernel involves a large amount of multiplication operations, it can be a heavy burden on the encoder and decoder. Accordingly, when the number of samples considered in the second-order transformation decreases, the amount of computation and memory required for storing the transformation kernel can be reduced.
  • the quadratic transform may be expressed as a product of a quadratic transform kernel matrix and a first transformed coefficient vector, and may be interpreted as mapping the first transformed coefficient to another space.
  • the number of coefficients to be quadratic transformation is reduced, that is, when the number of basis vectors constituting the quadratic transformation kernel is reduced, the amount of computation required for the quadratic transformation and a memory capacity required for storing the transformation kernel can be reduced.
  • the size of 16(row)x64(column) (or 16(row)x48(column) ) Size) can be applied.
  • the transform unit of the encoder may obtain a second-order transformed coefficient vector through an inner product of each row vector constituting the transform kernel matrix and a first-order transformed coefficient vector.
  • the inverse transform unit of the encoder and the decoder may obtain a first-order transformed coefficient vector through a dot product of each column vector constituting the transform kernel matrix and a second-order transformed coefficient vector.
  • the encoder may first perform a forward primary transform on a residual signal block to obtain a coefficient block having a first-order transform.
  • the size of the first-order transformed coefficient block is MxN
  • 4x4 quadratic transformation is performed on the left-top 4x4 samples of the first-order transformed coefficient block.
  • (forward secondary transform) may be performed.
  • 8x8 quadratic transformation may be performed on left-top 8x8 samples of the coefficient block having a first-order transform.
  • the 8x8 quadratic transformation since it involves a large amount of computation and memory, only some of the 8x8 samples may be utilized.
  • the first order A 4x4 quadratic transformation may be performed on each of the two upper left 4x4 subblocks in the transformed coefficient block.
  • the encoder may first configure the coefficients in the upper-left sub-block of the coefficient block having the first-order transform in a vector form.
  • a method of constructing a vector may depend on an intra prediction mode. For example, if the intra prediction mode is less than or equal to the 34th angular mode among the intra prediction modes shown in FIG. 6, the encoder scans the upper-left subblock of the first-order transformed coefficient block in the horizontal direction and converts the coefficients into a vector. Configurable.
  • coefficients When the element of the i-th row and j-th column of the first-order nxn block of the coefficient block is expressed as x(I, j), the vectorized coefficients are (x(0, 0), x(0, 1) , ..., x(0, n-1), x(1, 0), x(1, 1),... , x(1, n-1), ..., x(n-1, 0), x(n-1, 1), ..., x(n-1, n-1)] have.
  • coefficients when the intra prediction mode is greater than the 34th angular mode, coefficients may be configured as vectors by scanning the upper-left sub-block of the coefficient block having the first order transform in the vertical direction.
  • the vectorized coefficients are (x(0, 0), x(1, 0), ..., x(n-1, 0), x(0, 1), x(1, 1), ..., x(n-1, 1), ..., x(0, n-1), x(1, n-1), ..., x(n-1, n-1)] have.
  • the coefficient x_ij with i>3 and j>3 may not be included in the above-described vector construction method.
  • 16 first-order transformed coefficients may be inputs of the quadratic transformation.
  • 48 first-order transformed coefficients can be inputs to the quadratic transformation.
  • the encoder may obtain quadratic transformed coefficients by multiplying upper-left sub-block samples of a vectorized first-order transform coefficient block with a quadratic transform kernel matrix.
  • the second transform kernel applied to the second transform may be determined according to the size of a transform unit or transform block, an intra mode, and a syntax element indicating the transform kernel. As described above, if the number of coefficients to be quadratic transformed is reduced, the amount of computation and memory required for storing the transform kernel may be reduced. Accordingly, the number of coefficients to be quadratic transformed may be determined according to the size of the current transform block.
  • the encoder may obtain a coefficient vector of length 8 by multiplying a vector of length 16 and an 8 (row)x16 (column) transform kernel matrix.
  • the 8 (row) x 16 (column) transform kernel matrix may be obtained based on the eighth basis vector from the first basis vector constituting the 16 (row) x 16 (column) transform kernel matrix.
  • the encoder may obtain a coefficient vector of length 16 by multiplying a vector of length 16 and a 16 (row)x16 (column) transform kernel matrix.
  • the encoder may obtain a coefficient vector of length 8 through the product of a vector of length 48 and an 8 (row)x48 (column) transform kernel matrix.
  • the 8 (row) x 48 (column) transform kernel matrix may be obtained based on the eighth basis vector from the first basis vector constituting the 16 (row) x 48 (column) transform kernel matrix.
  • the encoder may obtain a coefficient vector of length 16 by multiplying a vector of length 48 and a 16 (row)x48 (column) transform kernel matrix.
  • the coefficients converted by the second order since they are in the form of vectors, they may be expressed as data in a two-dimensional form.
  • the coefficients second-order transformed according to a preset scan order may be composed of upper left coefficient sub-blocks.
  • the preset scan order may be an up-right diagonal scan order.
  • the present invention is not limited thereto, and the upper-right diagonal scan order may be determined based on the method described in FIGS. 13 and 14 to be described later.
  • transform coefficients of a total transform unit size including quadratic transformed coefficients may be included in a bitstream and transmitted after quantization.
  • the bitstream may include syntax elements related to second-order transformation.
  • the bitstream may include information on whether a second-order transform is applied to the current block and information indicating a transform kernel applied to the current block.
  • the decoder may first parse the quantized transform coefficients from the bitstream, and obtain transform coefficients through de-quantization. Inverse-quantization may be referred to as scaling.
  • the decoder may determine whether to perform a second-order inverse transform on the current block based on a syntax element related to the second-order transform. When the second-order inverse transform is applied to the current transform unit or transform block, 8 or 16 transform coefficients may be inputs of the second-order inverse transform according to the size of the transform unit or transform block. The number of coefficients that are input to the second-order inverse transform may match the number of coefficients output from the second-order transform of the encoder.
  • the size of the transform unit or transform block is 4x4 or 8x8, 8 transform coefficients may be inputs of the second-order inverse transform, otherwise, 16 transform coefficients may be inputs of the second-order inverse transform.
  • a 4x4 quadratic inverse transform is performed on 16 or 8 coefficients of the upper-left 4x4 sub-block of the transform coefficient block for an intra-predicted block with a value of 4 min(M, N).
  • 4 min(M, N) For an intra-predicted block having min(M, N) equal to or greater than 8, 8x8 quadratic inverse transformation may be performed on 16 or 8 coefficients of the upper left 4x4 subblock of the transform coefficient block.
  • min(M,N) is 4 and M or N is greater than 8 (for example, a rectangular block having a size of 4x16 or 16x4)
  • two left-hand corners in a transform coefficient block A 4x4 quadratic inverse transformation may be performed on each of the upper 4x4 sub-blocks.
  • the decoder since the second-order inverse transform can be calculated as a product of the second-order inverse transform kernel matrix and the input vector, the decoder first selects the input inverse-quantized transform coefficient block according to a preset scan order. It can be configured in vector form.
  • the preset scan order may be an up-right diagonal scan order, and the present invention is not limited thereto, and the upper-right diagonal scan order is a method described in FIGS. 13 and 14 to be described later. Can be determined based on
  • the decoder may obtain a first-order transformed coefficient by multiplying a vectorized transform coefficient and a second-order inverse transform kernel matrix.
  • the second-order inverse transform kernel may be determined according to a size of a transform unit or transform block, an intra mode, and a syntax element indicating the transform kernel.
  • the second-order inverse transform kernel matrix may be a transposed matrix of a second-order transform kernel matrix.
  • the elements of the kernel matrix may be integers expressed with 10-bit or 8-bit accuracy.
  • the length of the vector used as the output of the second-order inverse transform may be determined based on the size of the current transform block.
  • a coefficient vector of length 16 may be obtained by multiplying a vector of length 8 and an 8 (row)x16 (column) transform kernel matrix.
  • the 8 (row) x 16 (column) transform kernel matrix may be obtained based on the eighth basis vector from the first basis vector constituting the 16 (row) x 16 (column) transform kernel matrix.
  • a coefficient vector having a length of 16 may be obtained through a product of a vector having a length of 16 and a 16 (row)x16 (column) transform kernel matrix.
  • a coefficient vector of length 48 may be obtained by multiplying a vector of length 8 and an 8 (row)x48 (column) transform kernel matrix.
  • the 8 (row) x 48 (column) transform kernel matrix may be obtained based on the eighth basis vector from the first basis vector constituting the 16 (row) x 48 (column) transform kernel matrix.
  • a coefficient vector having a length of 48 may be obtained by multiplying a vector of length 16 and a 16 (row)x48 (column) transform kernel matrix.
  • the decoder may express it again as data in a two-dimensional form, which may depend on the intra mode.
  • the mapping relationship based on the intra mode applied by the encoder may be equally applied.
  • the decoder may obtain a two-dimensional transform coefficient array by scanning a coefficient vector having a second-order inverse transform in the horizontal direction.
  • the decoder may obtain a two-dimensional transform coefficient array by scanning the inverse quadratic transformed coefficient vector in the vertical direction.
  • the decoder may obtain a residual signal by performing a first-order inverse transform on the entire transform unit including the transform coefficients obtained by performing the second-order inverse transform or a transform coefficient block having a transform block size.
  • a scaling process using a bit shift operation may be included in applying transform or inverse transform.
  • FIG. 13 is a diagram illustrating a method of determining an up-right diagonal scan order according to an embodiment of the present invention.
  • a process of initializing a scan order may be performed during encoding or decoding.
  • An array including scan order information may be initialized according to the block size.
  • the initializing process of the upper right diagonal scan order arrangement shown in FIG. 13 in which 1 ⁇ log2BlockWidth and 1 ⁇ log2BlockHeight are inputted for the combination of log2BlockWidth and log2BlockHeight may be called (or performed).
  • the output of the process of initializing the upper-right diagonal scan order arrangement may be allocated to DiagScanOrder[log2BlockWidth][log2BlockHeight].
  • log2BlockWidth and log2BlockHeight are variables representing values obtained by taking a logarithm of the base 2 with respect to the width and height of the block, respectively, and may be values in the range [0, 4].
  • the encoder/decoder may output the array diagScan[sPos][sComp] for blkWidth, which is the width of the received block, and blkHeight, which is the height of the block.
  • SPos which is an index of an array, may represent a scan position (scan index), and may be a value in the range of [0, blkWidth*blkHeight-1].
  • sComp which is an index of an array
  • sPos may represent a horizontal component (x)
  • sPos may represent a vertical component (y).
  • the x-coordinate and y-coordinate values of the two-dimensional coordinates at the scan position sPos are assigned to diagScan[sPos][0] and diagScan[sPos][1], respectively, according to the upper-right diagonal scan order. It can be interpreted as being.
  • the value stored in the DiagScanOrder[log2BlockHeight][sPos][sComp] array (or array) is sPos in the upper-right diagonal scan order of the block whose width and height are 1 ⁇ log2BlockWidth, 1 ⁇ log2BlockHeight, respectively. It may mean a coordinate value corresponding to sComp when it is a scan position (scan index).
  • FIG. 14 is a diagram illustrating an upper-right diagonal scan order according to a block size according to an embodiment of the present invention.
  • log2BlockWidth and log2BlockHeight when both log2BlockWidth and log2BlockHeight are 2, it may mean a block having a size of 4x4.
  • log2BlockWidth and log2BlockHeight when both log2BlockWidth and log2BlockHeight are 3, it may mean a block having a size of 8x8.
  • the numbers displayed in the gray shaded area indicate the scan position (scan index) sPos.
  • the x-coordinate and y-coordinate values at the sPos position may be assigned to DiagScanOrder[log2BlockWidth][log2BlockHeight][sPos][0], DiagScanOrder[log2BlockWidth][log2BlockHeight][sPos][1], respectively.
  • the encoder/decoder may code transform coefficient information based on the above-described scan order.
  • an embodiment based on a case in which the upper right scanning method is used is mainly described, but the present invention is not limited thereto, and other known scanning methods may also be applied.
  • the second transform may be indicated at the coding unit level, and a syntax element related to the second transform may be included in the coding_unit syntax structure.
  • the coding_unit syntax structure may include a syntax element related to a coding unit. In this case, based on the left-top luma sample of the picture, (x0, y0), the block width, cbWidth, the block height, cbHeight, and treeType, a variable representing the type of the encoding tree, are It may be an input of a coding_unit syntax structure.
  • variable treeType is SINGLE_TREE
  • the coding unit may include a luma coding block and a chroma coding block according to a color format.
  • the treeType is DUAL_TREE_LUMA, it means that luma and chroma are coded as different coding trees, indicating that the currently processed tree is a tree for luma.
  • the coding unit may include only a luma coding block.
  • the treeType is DUAL_TREE_CHROMA, it means that luma and chroma are encoded as different coding trees, and may indicate that the currently processed tree is a tree for chroma.
  • the coding unit may include a chroma coding block according to a color format.
  • a prediction method for a current coding unit may be indicated, and a variable CuPredMode[x0][y0] may indicate a prediction method for a current block.
  • CuPredMode[x0][y0] is MODE_INTRA, it may indicate that the intra prediction method is applied to the current block, and if it is MODE_INTER, it may indicate that the inter prediction method is applied to the current block.
  • CuPredMode[x0][y0] is MODE_IBC
  • IBC Intra Block Copy
  • syntax elements related to the prediction method may be processed.
  • the decoder parses a syntax element including information related to intra prediction mode, reference line index, and Intra Sub-Partitions (ISP) prediction, or Depending on the method, the intra prediction mode and related variables can be set.
  • ISP Intra Sub-Partitions
  • the transform_tree() syntax structure is a syntax structure for a transform tree, and the transform tree has the same size as the coding unit as a root node, and can be divided into nodes having a size smaller than the root node.
  • a leaf node of a transform tree may be a transform unit.
  • the transform_tree syntax structure may include information related to division of a transform tree.
  • PCM Pulse Code Modulation
  • the transform_tree syntax structure may not exist. That is, since the transform_tree syntax structure does not exist, the decoder may not perform an operation on the transform_tree syntax structure.
  • PCM prediction may be indicated by pcm_flag[x0][y0] when intra prediction is indicated in the current coding unit. That is, when pcm_flag[x0][y0] is 1, the operation of the decoder for the transform_tree syntax structure may not be performed.
  • a transform_tree syntax structure exists for the current coding unit may be indicated by a 1-bit flag, which is referred to as cu_cbf in this specification, but is not limited thereto.
  • the decoder may parse cu_cbf or, if cu_cbf is not parsed, may set cu_cbf according to a preset method. When cu_cbf is 1, the decoder may perform an operation on the transform_tree syntax structure.
  • merge prediction may also be used for prediction of the current coding unit. Whether merge prediction is used may be indicated by merge_flag[x0][y0].
  • the preset method may be a method based on cu_skip_flag[x0][y0] indicating the skip mode. For example, when cu_skip_flag[x0][y0] is 1, cu_cbf is inferred as 0, otherwise, cu_cbf may be inferred as 1.
  • cu_cbf When cu_cbf is 1, processing of the transform_tree syntax structure may be performed, and a counter value for measuring the number of non-zero quantization coefficients may be initialized to 0.
  • the numSigCoeff variable refers to a variable representing the number of non-zero significant coefficients existing in the transform unit of the current coding unit, and processing of the syntax element related to the quadratic transformation may vary according to the value of numSigCoeff.
  • the numZeroOutSigCoeff variable refers to a variable representing the number of non-zero quantization coefficients present on a specific position in the transform unit included in the current coding unit.
  • the syntax element related to the quadratic transform according to the value of numZeroOutSigCoeff Treatment may vary.
  • transform_tree a transform tree may be divided, and a leaf node of the transform tree may be a transform unit.
  • transform_tree may include a transform_unit syntax structure that is a syntax structure related to a transform unit that is a leaf node.
  • the transform_unit may process a syntax element related to the transform unit, and may include a residual_coding syntax structure when the corresponding transform unit includes one or more transform coefficients that are not zero.
  • the residual_coding syntax structure may include a syntax structure related to quantized transform coefficients and processing related thereto.
  • the transform block constituting the transform unit may vary according to the type of the tree currently being processed.
  • the current transform unit may include a luma transform block and chroma transform blocks according to a color format.
  • the current transform unit may include a luma transform block.
  • the current transform unit may include chroma transform blocks.
  • the transform_unit syntax structure may include coded block flag (CBF) information, which is information indicating whether a corresponding transform block includes one or more non-zero coefficients for transform blocks included in the current transform unit according to the treeType.
  • CBF coded block flag
  • the coefficients of the luma transform block are all 0, so The residual_coding syntax structure may not be processed.
  • the CBF value for the chroma Cb transform block of the current transform unit indicates that the chroma Cb transform block includes one or more coefficients that are not zero, a residual_coding syntax structure for the Cb transform block of the current transform unit exists. I can.
  • Whether or not the second-order transform is applied to the current block may be indicated at the CU level.
  • an index indicating the transformation kernel used for the quadratic transformation may be additionally indicated.
  • whether or not a quadratic transformation is applied to the current block may be indicated by using the lfnst_idx[x0][y0] syntax element.
  • the first bit of lfnst_idx[x0][y0] may indicate whether quadratic transformation is applied to the current coding unit.
  • the second-order conversion to the current block Indicates that this applies.
  • an additional bit may be used to indicate the transformation kernel used for the second transformation, and an index indicating the second transformation kernel may be signaled through the additional bits.
  • the lfnst_idx[x0][y0] syntax element may be parsed when conditions described later are satisfied. On the other hand, when conditions described below are not satisfied, lfnst_idx[x0][y0] does not exist in the current coding unit, and lfnst_idx[x0][y0] may be set to 0.
  • the encoder performs lfnst_idx[x0][y0] for the current coding unit.
  • a bitstream including syntax elements can be generated.
  • the lfnst_idx[x0][y0] syntax element for the current coding unit is not included in the bitstream generated by the encoder, and lfnst_idx[x0][y0] may be set to 0.
  • the decoder that has received such a bitstream may parse the syntax element lfnst_idx[x0][y0] based on conditions described later.
  • the first condition is related to the block size (size).
  • the decoder may parse the syntax element lfnst_idx[x0][y0].
  • the decoder may check the block size condition to which the quadratic transformation can be applied.
  • the variables SubWidthC and SubHeightC are set according to the color format, and may represent the ratio of the width and height of the chroma component to the width and height of the luma component of a picture, respectively. For example, since a 4:2:0 color format image has a structure including one chroma sample per 4 luma samples, both SubWidthC and SubHeightC may be set to 2. As another example, since a 4:4:4 color format image has a structure including one chroma sample corresponding to one luma sample, both SubWidthC and SubHeightC may be set to 1.
  • LfnstWidth which is the number of samples in the horizontal direction and lfnstHeight, which is the number of samples in the vertical direction of the current block may be set based on SubWidthC and SubHeightC.
  • the treeType is DUAL_TREE_CHROMA
  • the number of samples in the horizontal direction of the chroma coding block is equal to the value obtained by dividing cbWidth, the width of the luma coding block, by SubWidthC.
  • the number of samples in the vertical direction of the chroma coding block is equal to the value obtained by dividing cbHeight, which is the height of the luma coding block, by SubHeightC.
  • cbHeight which is the height of the luma coding block
  • SubHeightC the number of samples in the vertical direction of the chroma coding block.
  • the second condition relates to a flag value indicating whether the second transformation is activated or applicable, and when the value of the flag (sps_lfnst_enabled_flag) indicating whether the second transformation is activated or applicable is set to 1, the decoder is lfnst_idx [x0][y0] syntax elements can be parsed.
  • the second-order transformation may be indicated in the higher level syntax RBSP.
  • a flag having a 1-bit size indicating whether to enable or apply secondary transformation may be included in at least one of SPS, PPS, VPS, tile group header, and slice header.
  • sps_lfnst_enabled_flag 1, it indicates that the lfnst_idx[x0][y0] syntax element exists in the coding unit syntax.
  • sps_lfnst_enabled_flag is 0, it indicates that the lfnst_idx[x0][y0] syntax element does not exist in the coding unit syntax.
  • the third condition relates to the prediction mode, and the quadratic transform can be applied only to the intra-predicted block. Accordingly, when the current block is an intra-predicted block, the decoder may parse the syntax element lfnst_idx[x0][y0].
  • the fourth condition relates to whether or not the ISP prediction method is applied.
  • the decoder can parse the syntax element lfnst_idx[x0][y0].
  • the second transform may not be applied to the divided transform units.
  • lfnst_idx[x0][y0] which is a syntax element related to the second-order transformation
  • the case where the transform tree for the current CU is divided into a plurality of transform units smaller than the CU size may include a case where ISP prediction is applied to the current coding unit.
  • the ISP prediction method may be a prediction method of dividing a transform tree into a plurality of transform units smaller than a CU size according to a preset partitioning method when intra prediction is applied to the current coding unit.
  • the ISP prediction mode may be indicated at the coding unit level, and a variable IntraSubPartitionsSplitType may be set based on this.
  • IntraSubPartitionsSplitType is ISP_NO_SPLIT, it indicates that ISP is not applied to the current block.
  • the second-order transform is indicated at the coding unit level, but the actual second-order transform can be applied at the transform unit level. Therefore, when a transform tree is divided into a plurality of transform units, it may be inefficient to apply the same quadratic transform kernel to all divided transform units.
  • the accuracy of prediction may be higher than when the transform tree is not divided. Therefore, when the transform tree is divided into a plurality of transform units, there is a high possibility that the energy of the residual signal is efficiently compressed even if the second-order transform is not applied to the divided plurality of transform units.
  • the transform tree can be divided into a plurality of transform units smaller than the CU size. have.
  • the quadratic transform may not be applied.
  • MaxTbSizeY may be a natural number expressed in the form of an exponent of 2.
  • MaxTbSizeY may be indicated by being included in high-level syntax RBSP such as SPS, PPS, slice header, tile group header, etc., or the encoder and decoder may use the same preset value.
  • the preset value may be 64 (2 ⁇ 6).
  • the fifth condition relates to an intra prediction method. If Matrix based Intra Predicition (MIP) is not applied to the current coding unit prediction, the decoder may parse the lfnst_idx[x0][y0] syntax element.
  • MIP Matrix based Intra Predicition
  • MIP may be used as a method of intra prediction, and whether or not MIP is applied may be indicated by intra_mip_flag[x0][y0] at the coding unit level.
  • Intra_mip_flag[x0][y0] 1
  • it may indicate that MIP is applied to prediction of the current coding unit, and prediction may be performed by multiplying reconstructed samples around the current block and a preset matrix.
  • the second-order transform may not be applied to the transform block when MIP is applied.
  • the sixth condition relates to treeType and coefficient.
  • the quadratic transformation may be applied to the current block, and the decoder may parse the syntax element lfnst_idx[x0][y0].
  • numSigCoeff means a variable representing the number of significant coefficients existing in the current coding unit.
  • the significant coefficient may mean a non-zero coefficient.
  • a significant coefficient described in the present specification may mean a non-zero coefficient as described above.
  • the seventh condition relates to the significant coefficeient that exists at a specific location.
  • the transform coefficient quantized by the decoder may always be 0 at a specific position. Therefore, if there is a non-zero (quantization) coefficient at a specific position, since the quadratic transformation has not been applied to the current block, lfnst_idx[x0][y0] is calculated according to the number of significant coefficients at the specific position. Whether to parse or not can be determined. For example, if numZeroOutSigCoeff is not 0, it means that a significant coefficient exists at a specific location, and thus lfnst_idx[x0][y0] may be set to 0 without being parsed. On the other hand, if numZeroOutSigCoeff is 0, it means that there is no significant coefficient at a specific location, so lfnst_idx[x0][y0] can be parsed.
  • 16 is a diagram illustrating a residual_coding syntax structure according to an embodiment of the present invention.
  • the residual_coding syntax structure is a syntax structure related to a quantization coefficient, and may receive x0, y0, log2TbWidth, and log2TbHeight as inputs.
  • x0, y0 means (x0, y0), which is the upper-left coordinate of the transform block
  • log2TbWidth is a value obtained by taking the logarithm of the base 2 to the width of the transform block
  • log2TbHeight is the base 2 to the height of the transform block. It can mean a value obtained by taking phosphorus.
  • the coefficients in the transform block may be coded in units of sub-blocks, and the coefficient values in each sub-block may be determined based on several syntax elements including sig_coeff_flag.
  • the coefficient of the sub-block unit may be expressed as a coefficient group (CG).
  • CG coefficient group
  • sig_coeff_flag[xC][yC] may indicate whether a coefficient value of a position (xC, yC) in the current transform block is 0. If sig_coeff_flag[xC][yC] is 1, it may indicate that the coefficient value of the corresponding position is not 0. If sig_coeff_flag[xC][yC] is 0, it may indicate that the coefficient value of the corresponding position is 0 have.
  • an x-coordinate value and a y-coordinate value of a last significant coefficient in a scan order may be indicated.
  • An index (lastSubBlock) of a subblock including a last significant coefficient in a scan order may be determined based on an x coordinate value and a y coordinate value of the last significant coefficient in the scan order.
  • the index of the sub-block may also be indexed based on the scan order.
  • the scan order may be an up-right diagonal scan order described in FIG. 13.
  • the index xC, yC representing the position (coordinate value) of the coefficient is based on the upper-left coordinates (xS ⁇ log2SbW, yS ⁇ log2SbH) and the upper-right diagonal scan order (DiagScanOrder) of the sub-block. Can be determined.
  • xS and yS denote an index in a horizontal direction and an index in a vertical direction, respectively.
  • log2SbW and log2SbH may be values obtained by taking the base 2 logarithm of the width and height of the subblock, respectively.
  • numSigCoeff may be counted.
  • the transform skip since the quadratic transform may not be applied, the numSigCoeff used for parsing lfnst_idx[x0][y0] can count the number of effective coefficients of the block to which the transform skip is not applied. .
  • the numZeroOutSigCoeff counter counts the number of valid coefficients (numZeroOutSigCoeff) existing in a specific area, and when numZeroOutSigCoeff is not 0, lfnst_idx[x0][y0] may not be parsed.
  • an area in which no significant coefficients cannot exist may be determined according to the size of the transform block.
  • the index [0, 7] area and [8,] in the scan order within the transform block 15] is divided into regions, and there may be effective coefficients in the [0, 7] areas, and no significant coefficients exist in the [8, 15] areas.
  • the effective coefficient may exist only in the first subblock in the transform block, and the rest Significant coefficients cannot exist in sub-blocks (eg, second and third sub-blocks). Even within the first sub-block, an effective coefficient may exist in an index [0, 7] region in the scan order, but an effective coefficient cannot exist in an index [8, 15] region.
  • 17 is a diagram illustrating a method of instructing quadratic transformation at a coding unit level according to an embodiment of the present invention.
  • whether or not second-order transformation is applied may be indicated by a syntax element lfnst_idx[x0][y0] at the coding unit level, and two valid in order for lfnst_idx[x0][y0] to be parsed.
  • a significant coefficient counter ie, numSigCoeff counter, numZeroOutSigCoeff counter
  • numSigCoeff since the numSigCoeff counter must count the number of significant coefficients present in the entire coding unit area, the throughput of coefficient coding may be reduced. Therefore, there is a need for a method of reducing the number of counters or not using a counter.
  • the second-order transformation indication method shown in FIG. 17 is a method capable of parsing lfnst_idx[x0][y0] regardless of numSigCoeff. In other words, if all of the conditions described in FIG. 15, i), ii), iii), iv), v), and vii) are satisfied (all are true), the decoder parses lfnst_idx[x0][y0]. can do. Further, since the value of numSigCoeff is not referenced, the operation of the numSigCoeff counter described in FIG. 16 may not be performed.
  • FIG. 18 is a diagram illustrating a method of instructing quadratic transformation at a coding unit level according to an embodiment of the present invention.
  • FIG. 18 is a diagram illustrating a method of parsing lfnst_idx[x0][y0] using position information of a last significant coefficient in a scan order obtained from residual_coding, instead of a numSigCoeff counter.
  • the numSigCoeff counter since the numSigCoeff counter is not used, the numSigCoeff value does not need to be initialized, and lfnstLastScanPos, which is a variable related to the position of the last significant coefficient in the scan order, may be initialized to 1.
  • lfnstLastScanPos When the lfnstLastScanPos value is 1, it indicates that the position (scan index) of the last significant coefficient in the scan order is less than the threshold value or that all transform coefficients in the block are 0.
  • the lfnstLastScanPos value when the lfnstLastScanPos value is 0, it indicates that at least one significant coefficient exists in the block, and the position (scan index) of the last significant coefficient in the scan order is equal to or greater than the threshold value. Accordingly, if the lfnstLastScanPos value is 1, lfnst_idx[x0][y0] is not parsed, and if the lfnstLastScanPos value is 0, lfnst_idx[x0][y0] can be parsed.
  • lfnst_idx[x0][y0] is parsed when the lfnstLastScanPos value is 0, and conditions i), ii), iii), iv), v), and vii) are all satisfied (all true). May be.
  • the threshold value may be an integer greater than or equal to 0. For example, assuming that the threshold value is 1, if the position of the last significant coefficient (scan index) in the scan order is equal to or greater than the threshold value, it means that the significant coefficient exists at a position other than the upper left corner of the block. I can.
  • lfnst_idx when the significant coefficient does not exist in the current block or exists only in the upper left corner of the current block, i.e., when the significant coefficient exists at a position other than the upper left corner of the current block.
  • [x0][y0] can be parsed.
  • the upper left of the block described herein may mean that the values of the horizontal and vertical coordinates are (0, 0), and according to a preset scan order (e.g., an up-right diagonal order). It may mean the first position, or may be referred to as DC.
  • 19 is a diagram showing a residual_coding syntax structure according to an embodiment of the present invention.
  • FIG. 19 shows the residual_coding syntax structure according to FIG. 18 described above.
  • residual_coding syntax elements related to the x coordinate and y coordinate of the last significant coefficient in the scan order are parsed, and LastSignificantCoeffX and LastSignificantCoeffY variables are set. I can.
  • LastSignificantCoeffX represents the x coordinate of the last significant coefficient in the scan order
  • LastSignificantCoeffY represents the y coordinate of the last significant coefficient in the scan order.
  • the lastScanPos variable that is the scan index of the last significant coefficient in the scan order and the index of the subblock including the last significant coefficient may be determined.
  • lastSubBlock the index of the subblock including the last significant coefficient
  • LastSignificantCoeffX is 2 and LastSignificantCoeffY is 3
  • lastScanPos may be determined as 13. Since a block having a size of 4x4 may be composed of one subblock, the index of the subblock including the last significant coefficient (lastSubBlock) may be determined as 0.
  • the 8x8 sized block in FIG. 14B may be divided into 4x4 sized subblocks. Specifically, in Fig.
  • 4x4 blocks corresponding to x coordinates 0 to 3 and y coordinates 0 to 3 are the first subblock
  • 4x4 blocks corresponding to x coordinates 0 to 3 and y coordinates 4 to 7 are two
  • the 4x4 blocks corresponding to x coordinates 4 to 7 and y coordinates 0 to 3 are the third subblock
  • the 4x4 blocks corresponding to x coordinates 4 to 7 and y coordinates 4 to 7 are the fourth subblocks.
  • the first subblock may be indexed as index 0
  • the second subblock may be indexed as index 1
  • the third subblock may be indexed as index 2
  • the fourth subblock may be indexed as index 3.
  • the sub-blocks may be indexed according to the upper-right diagonal scan order described in FIG. 13.
  • LastSignificantCoeffX is 2 and LastSignificantCoeffY is 3
  • lastScanPos may be determined as 13. Since lastScanPos is 13, since the subblock including lastScanPos 13 is the first subblock (ie, subblock index 0), the index of the subblock including the last significant coefficient (lastSubBlock) may be determined as 0.
  • the flag transform_skip_flag[x0][y0] described in the present specification may indicate whether the first and second transforms are applied to the transform block. For example, if the transform_skip_flag[x0][y0] value is 1, it indicates that the first and second transforms are not applied to the transform block (that is, the transform skip is applied), and the transform_skip_flag[x0][y0] value If this is 0, it may indicate that the first transform and the second transform can be applied to the transform block (that is, the transform skip is not applied).
  • the initial value of lfnstLastScanPos may be set to 1.
  • cIdx may represent a variable indicating a color component of the current transform block. For example, when cIdx is 0, it may indicate that a transform block processed in residual_coding is a luma Y component. When cIdx is 1, it may indicate that a transform block processed in residual_coding is a chroma Cb component, and when cIdx is 2, it may indicate that a transform block processed is a chroma Cr component.
  • the threshold value for lastScanPos, lfnstLastScanPosTh[cIdx] may be set to a different value according to color components.
  • Equation 1 when lfnstLastScanPos immediately before is 1 and lastScanPos is less than lfnstLastScanPosTh[cIdx], lfnstLastScanPos may be updated to 1. Meanwhile, when the immediately preceding lfnstLastScanPos is 0 or lastScanPos is equal to or greater than lfnstScanPosTh[cIdx], lfnstLastScanPos may be updated to 0.
  • lfnstLastScanPos may be determined as 1, and the parsing condition of lfnst_idx[x0][y0] of FIG. Accordingly, lfnst_idx[x0][y0] may be set to 0 without being parsed. If lfnst_idx[x0][y0] is not parsed and is set to 0, it indicates that the quadratic transformation is not applied to the current block.
  • lfnstLastScanPos may be determined to be 0, and conditions i), ii), iii), iv), v), vii) described in FIG. 15 When all of these are satisfied (if all are true), the decoder can parse lfnst_idx[x0][y0].
  • the decoder may parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine a transform kernel used for the second-order transform.
  • LfnstLastScanPosTh[cIdx] in Equation 1 is a preset integer value equal to or greater than 0, and both the encoder and the decoder may use the same value. Also, the same threshold value may be used for all color components. In this case, lfnstLastScanPos may be set as in Equation 2 below.
  • the coding unit described herein may be composed of a plurality of coding blocks, and a transform block corresponding to each of the coding blocks may exist.
  • the transform block may be a transform block having luminance and color difference components. Specifically, it may be a Y transform block, a Cb transform block, and a Cr transform block.
  • lfnst_idx[x0[y0] may be parsed.
  • lfnstLastScanPosTh is a preset integer value greater than or equal to 0, and both the encoder and the decoder can use the same value.
  • lfnstLastScanPosTh may be 1. That is, when lastScanPos is 1 or more, lfnstLastScanPos may be updated to 0, and lfnst_idx[x0][y0] may be parsed.
  • the threshold value (lfnstLastScanPosTh) is an integer value, when lastScanPos is 1 or more, it may have the same meaning as when lastScanPos is greater than 0.
  • the threshold value is 1 has been described, but the present invention is not limited thereto.
  • whether to parse lfnst_idx[x0][y0] may be determined based on lastScanPos. Specifically, as described above, when the quadratic transform is applied, the last significant coefficient in the scan order may exist only in the first subblock of the transform block.
  • 20 is a diagram showing a residual_coding syntax structure according to another embodiment of the present invention.
  • FIG. 20 is a diagram illustrating a method of receiving a treeType variable in residual_coding additionally to FIG. 19 and setting a threshold value for lastScanPos according to the treeType.
  • lfnstLastScanPos may be set as in Equation 4 below.
  • lfnstLastScanPosTh means a threshold value for lastScanPos, and a value may be set according to treeType.
  • treeType is SINGLE_TREE
  • DUAL_TREE_LUMA DUAL_TREE_CHROMA
  • lfnstLastScanPosTh may be set to val1, val2, and val3, respectively.
  • lfnstLastScanPos may be updated to 1.
  • lfnstLastScanPos when the immediately preceding lfnstLastScanPos is 0 or lastScanPos is greater than or equal to lfnstScanPosTh, lfnstLastScanPos may be updated to 0.
  • Equation 4 if lastScanPos of all transform blocks included in the coding unit is less than the threshold value or all coefficients of all transform blocks are 0, lfnstLastScanPos may be determined as 1, and lfnst_idx[x0][ y0] Depending on the parsing condition, lfnst_idx[x0][y0] may be set to 0 without being parsed. This indicates that no quadratic transformation is applied to the current block.
  • lfnstLastScanPos may be determined to be 0, and i), ii), iii), iv), v), vii) described in FIG. 15 are If all are satisfied (if all are true), the decoder can parse lfnst_idx[x0][y0]. The decoder may parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine a transform kernel used for the second-order transform.
  • val1, val2, and val3 are preset integer values greater than or equal to 0, and both the encoder and the decoder can use the same value.
  • treeType is SINGLE_TREE
  • val1 which is the value of lfnstLastScanPosTh, may be expressed as the sum of val2 and val3.
  • 21 is a diagram illustrating a method of instructing a quadratic transformation at a coding unit level according to another embodiment of the present invention.
  • lfnst_idx[x0][y0] may be parsed using position information of a last significant coefficient in a scan order obtained from residual_coding.
  • lfnstLastScanPos a variable related to the position of the last significant coefficient in the scan order, may be initialized to 0.
  • the lfnstLastScanPos variable of FIG. 21 may be a value obtained by adding lastScanPos of transform blocks included in the coding unit. At this time, if lfnstLastScanPos is greater than the threshold value, and all of the conditions i), ii), iii), iv), v), and vii) described in FIG.
  • the decoder lfnst_idx[x0][y0 ] Can be parsed.
  • the decoder may parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine a transform kernel used for the second-order transform.
  • lfnstLastScanPos is less than or equal to the threshold value
  • lfnst_idx[x0][y0] may be set to 0 without being parsed. This indicates that the quadratic transformation is not applied.
  • the threshold value can be set according to the treeType.
  • the threshold values may be set to Th1, Th2, and Th3, respectively.
  • Th1, Th2, and Th3 are preset integer values greater than or equal to 0, and both the encoder and the decoder can use the same value.
  • the threshold value Th1 may be expressed as the sum of Th2 and Th3.
  • FIG. 22 is a diagram showing a residual_coding syntax structure according to another embodiment of the present invention.
  • FIG. 22 shows the residual_coding syntax structure according to FIG. 21 described above, and when the width and height of the transform block is 4 or more, and the transform skip is not applied to the transform block, lfnstLastScanPos may be set as in Equation 5 below. .
  • lfnstLastScanPos may be set as in Equation 5 below.
  • transform_skip_flag[x0][y0] it may mean that the transform skip is not applied to the current transform block.
  • lfnstLastScanPos is a value obtained by adding all of the lastScanPos of transform blocks included in the coding unit, and whether lfnst_idx[x0][y0] is parsed may be determined by comparing lfnstLastScanPos with a threshold value as described in FIG.
  • the coding unit may include a transform unit divided by a transform tree with the same size as the coding unit as a root node.
  • the transform unit may include a transform block for each color component.
  • lfnst_idx[x0][y0] may be parsed based on coefficient information. have.
  • the second-order transform may be indicated at the transform unit level.
  • each transform unit included in the coding unit may use a different lfnst_idx[x0][y0].
  • the encoder can find lfnst_idx[x0][y0] optimized for each transform unit, and can further improve encoding efficiency.
  • residuals for all transform blocks included in the four transform units in order for lfnst_idx[x0][y0] to be parsed Coding (residual coding) must be processed. That is, even if the decoder obtains the transform coefficient through residual coding for the first transform unit, the decoder does not acquire the lfnst_idx[x0][y0] value, so the decoder performs inverse transform for the first transform unit. Can not. This not only increases the buffer size of the decoder, but may cause excessive delay time in the decoder.
  • the first to third embodiments described in FIGS. 18 to 22 can be applied even when the second-order transform is indicated at the transform unit level.
  • the second-order transform is indicated at the coding unit level, based on the position of the last significant coefficient in the scan order of transform blocks included in the coding unit according to the first to third embodiments, lfnst_idx[ Whether to parse x0][y0] may be determined.
  • the second-order transform is indicated at the transform unit level, according to the first to third embodiments, based on the position of the last significant coefficient in the scan order of transform blocks included in the transform unit. Whether to parse lfnst_idx[x0][y0] may be determined.
  • FIG. 23 is a diagram illustrating a method of instructing a second-order transform at a transform unit level according to an embodiment of the present invention.
  • lfnst_idx[x0][y0] may be parsed using position information of a last significant coefficient in a scan order obtained from residual_coding.
  • lfnstLastScanPos which is a variable related to the position of the last significant coefficient in the scan order, may be initialized to 1. If the lfnstLastScanPos variable is 1, it indicates that the position (scan index) of the last significant coefficient in the scan order for all transform blocks included in the transform unit is less than the threshold value or that all transform coefficients in the block are 0. Can be. When the lfnstLastScanPos variable is 0, for one or more transform blocks included in the transform unit, one or more significant coefficients exist in the block, and the position of the last significant coefficient in the scan order (scan index) May indicate that is equal to or greater than a threshold value.
  • lfnstLastScanPos which is set based on the position of the last significant coefficient in the scan order of the transform block, is 0, and conditions i), ii), iii), iv) described later, When all of v) and vi) are satisfied (all are true), the decoder can parse lfnst_idx[x0][y0].
  • the first condition is related to the block size (size).
  • the decoder may parse the syntax element lfnst_idx[x0][y0].
  • the decoder may check the block size condition to which the quadratic transformation can be applied.
  • the variables SubWidthC and SubHeightC are set according to the color format, and may represent the ratio of the width and height of the chroma component to the width and height of the luma component of a picture, respectively. For example, since a 4:2:0 color format image has a structure including one chroma sample per 4 luma samples, both SubWidthC and SubHeightC may be set to 2. As another example, since a 4:4:4 color format image has a structure including one chroma sample corresponding to one luma sample, both SubWidthC and SubHeightC may be set to 1.
  • LfnstWidth which is the number of samples in the horizontal direction of the current block
  • lfnstHeight which is the number of samples in the vertical direction
  • the number of samples in the horizontal direction of the chroma transform block is equal to the value obtained by dividing tbWidth, the width of the luma transform block, by SubWidthC.
  • the number of samples in the vertical direction of the chroma transform block is equal to the value obtained by dividing tbHeight, which is the height of the luma transform block, by SubHeightC.
  • tbHeight which is the height of the luma transform block
  • SubHeightC the number of samples in the vertical direction of the chroma transform block.
  • the second condition relates to a flag value indicating whether the second transformation is activated or applicable, and when the value of the flag (sps_lfnst_enabled_flag) indicating whether the second transformation is activated or applicable is set to 1, the decoder is lfnst_idx [x0][y0] can be parsed.
  • the second-order transformation may be indicated in the higher level syntax RBSP.
  • a flag having a 1-bit size indicating whether to enable or apply secondary transformation may be included in at least one of SPS, PPS, VPS, tile group header, and slice header.
  • sps_lfnst_enabled_flag 1, it indicates that the syntax element lfnst_idx[x0][y0] exists in the conversion unit syntax.
  • sps_lfnst_enabled_flag is 0, it indicates that the syntax element lfnst_idx[x0][y0] does not exist in the conversion unit syntax.
  • the third condition relates to the prediction mode, and the quadratic transform can be applied only to the intra-predicted block. Therefore, when the current block is an intra-predicted block, the decoder can parse lfnst_idx[x0][y0].
  • the fourth condition relates to whether or not the ISP prediction method is applied.
  • the decoder can parse the syntax element lfnst_idx[x0][y0].
  • the second transform may not be applied to the divided transform units.
  • lfnst_idx[x0][y0] which is a syntax element related to the second-order transformation
  • the case where the transform tree for the current CU is divided into a plurality of transform units smaller than the CU size may include a case where ISP prediction is applied to the current coding unit.
  • the ISP prediction method may be a prediction method of dividing a transform tree into a plurality of transform units smaller than a CU size according to a preset partitioning method when intra prediction is applied to the current coding unit.
  • the ISP prediction mode may be indicated at the coding unit level, and the IntraSubPartitionsSplitType variable may be set based on this.
  • IntraSubPartitionsSplitType is ISP_NO_SPLIT, it indicates that ISP is not applied to the current block. Due to the characteristics of intra prediction in which prediction samples are generated at the level of a transform unit, when a transform tree is divided into a plurality of transform units, the accuracy of prediction may be higher than when the transform tree is not divided. Therefore, even if the second-order transform is not applied to a plurality of divided transform units, there is a high possibility that the energy of the residual signal is efficiently compacted.
  • the fifth condition relates to an intra prediction method. If Matrix based Intra Predicition (MIP) is not applied to the current coding unit prediction, the decoder may parse the lfnst_idx[x0][y0] syntax element.
  • MIP Matrix based Intra Predicition
  • MIP Matrix based Intra Prediction
  • Intra_mip_flag[x0][y0] 1
  • it may indicate that MIP is applied to prediction of the current coding unit, and prediction may be performed by multiplying reconstructed samples around the current block and a preset matrix.
  • MIP since a residual signal property different from general intra prediction that performs directional or non-directional prediction is applied, the second-order transform may not be applied to the transform block when MIP is applied.
  • the sixth condition is related to the significant coefficient present at a specific location.
  • the transform coefficient quantized by the decoder may always be 0 at a specific position. Therefore, when a non-zero quantization coefficient exists at a specific position, since the quadratic transformation has not been applied, lfnst_idx[x0][y0] can be parsed according to the number of significant coefficients at a specific position. . For example, if numZeroOutSigCoeff is not 0, it means that a significant coefficient exists at a specific location, and thus lfnst_idx[x0][y0] may be set to 0 without being parsed. On the other hand, if numZeroOutSigCoeff is 0, it means that there is no significant coefficient at a specific location, so lfnst_idx[x0][y0] can be parsed.
  • Equation 1 for determining lfnstLastScanPos described in FIG. 19 if lastScanPos of all transform blocks included in the transform unit is less than a threshold value or coefficients of all transform blocks are all 0, lfnstLastScanPos is determined as 1, and lfnst_idx[x0][ y0] is not parsed and may be set to 0. This indicates that no quadratic transformation is applied to the current block.
  • lfnstLastScanPos may be determined to be 0, and conditions i), ii), iii), iv), v), vi described in FIG. 23 ) Are all satisfied (all are true), the decoder can parse lfnst_idx[x0][y0]. The decoder parses lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine the transform kernel used for the second-order transform. .
  • the transform unit syntax structure described in FIG. 23 may be applied, and the residual_coding method described in FIG. 20 may be used.
  • Equation 4 for determining lfnstLastScanPos described in FIG. 20 if lastScanPos of all transform blocks included in the transform unit is less than a threshold value or coefficients of all transform blocks are all 0, lfnstLastScanPos may be determined as 1, and lfnst_idx[ x0][y0] may be set to 0 without being parsed. This indicates that no quadratic transformation is applied to the current block.
  • lfnstLastScanPos may be determined to be 0, and conditions i), ii), iii), iv), v), vi) described in FIG. 23 When all of these are satisfied (if all are true), the decoder can parse lfnst_idx[x0][y0]. The decoder can parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine a transform kernel used for the second-order transform. .
  • 24 is a diagram illustrating a method of instructing a quadratic transformation at a transformation unit level according to another embodiment of the present invention.
  • lfnst_idx[x0][y0] may be parsed using position information of a last significant coefficient in a scan order obtained from residual_coding.
  • lfnstLastScanPos which is a variable related to the position of the last significant coefficient in the scan order, may be initialized to 0.
  • the variable lfnstLastScanPos may be a value obtained by adding lastScanPos of transform blocks included in the transform unit.
  • the decoder lfnst_idx[x0][y0 ] Can be parsed.
  • the decoder may parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block, and if the second-order transform is applied, it may check/determine a transform kernel used for the second-order transform. On the other hand, when lfnstLastScanPos is less than or equal to the threshold value, lfnst_idx[x0][y0] may be set to 0 without being parsed. This indicates that the quadratic transformation is not applied.
  • the threshold value can be set according to the treeType.
  • the threshold values may be set to Th1, Th2, and Th3, respectively.
  • Th1, Th2, and Th3 are preset integer values greater than or equal to 0, and both the encoder and the decoder can use the same value.
  • the threshold value Th1 may be expressed as the sum of Th2 and Th3.
  • the residual_coding method described in FIG. 22 may be used.
  • the variable lfnstLastScanPos may be set to a value obtained by adding all of the lastScanPos of transform blocks included in the transform unit.
  • whether lfnst_idx[x0][y0] is parsed may be determined by comparing lfnstLastScanPos with a threshold value.
  • lfnst_idx[x0][y0] is signaled only in the first transform unit included in the coding unit, and the signaled lfnst_idx[x0][y0] can be shared with the remaining transform units. That is, lfnst_idx[x0][y0] may be parsed using the above-described first to third embodiments only when subTuIndex indicating the index of the transform unit is 0.
  • the corresponding transform units do not parse lfnst_idx[x0][y0], and may use the value of lfnst_idx[x0][y0] of the shared first transform unit.
  • a counter for counting a significant coefficient may be used, but whether or not the decoder parses lfnst_idx[x0][y0] is a significant coefficient existing in the upper-left sub-block of the transform block. Can be determined in consideration of only. This is to reduce the amount of computation.
  • the delay time of the decoder may be reduced compared to when indicated at the coding unit level, but another delay time may occur.
  • the quadratic transform is indicated at the transform unit level
  • the quadratic transform is indicated after coding of the luma transform coefficient, the Cb transform coefficient, and the Cr transform coefficient is all completed. Therefore, even if the coding (processing) of the luma transform coefficients is all completed, the inverse transform processing for the luma transform coefficients can be performed after the coding (processing) of the Cb transform coefficients and the Cr transform coefficients is completed. This leads to another delay time of the decoder.
  • the second-order transform is indicated at the transform unit level, but before the luma transform coefficient coding, lfnst_idx[x0][y0], a syntax element related to the quadratic transform.
  • the decoder can perform an inverse transform process on the luma transform coefficient immediately after the luma transform coefficient coding is completed without waiting for the Cb transform coefficient and the Cr transform coefficient coding.
  • the decoder can immediately proceed with an inverse transform process for the Cb transform coefficient without waiting for the Cr transform coefficient coding.
  • This second-order transformation indication method minimizes the delay time of the decoder and solves the pipeline problem.
  • 25 is a diagram showing a coding unit syntax according to an embodiment of the present invention.
  • the syntax related to the second transform is not parsed at the coding unit level, but will be parsed at the transform unit level divided by the transform_tree. I can.
  • 26 is a diagram illustrating a method of instructing quadratic transformation at a transformation unit level according to another embodiment of the present invention.
  • a method for indicating a second-order transform may be indicated at a transform unit level, and lfnst_idx[x0][y0], a syntax element related to a quadratic transform, is first parsed before luma and chroma transform coefficient coding (residual_coding). I can. For example, if lfnst_idx[x0][y0] is first parsed before obtaining the transform coefficient, as soon as the coefficient coding for each color component Y, Cb, and Cr is completed, the inverse transform for the Y, Cb, and Cr transform coefficients This can be handled.
  • the inverse transform for the luma (Y) transform coefficient may be performed.
  • the transform coefficient coding (residual_coding) for the Cb component can be performed, and the inverse transform for the Cr transform coefficient is performed as soon as the transform coefficient coding (residual_coding) for the Cr component is completed. Can be.
  • transform_unit() syntax structure tu_cbf_luma[x0][y0], tu_cbf_cb[x0][y0], tu_cbf_cr[x0][y0], transform_skip_flag[x0][y0], and the like may be parsed.
  • tu_cbf_cb[x0][y0] is 1, it may indicate that the current chroma Cb transform block includes one or more non-zero transform coefficients. If tu_cbf_cb[x0][y0] is 0, it may indicate that all transform coefficients of the current Cb transform block are 0. tu_cbf_cr[x0][y0] is an element indicating whether the current chroma Cr transform block includes one or more non-zero transform coefficients. If tu_cbf_cr[x0][y0] is 1, it may indicate that the current chroma Cr transform block includes one or more non-zero transform coefficients.
  • transform_skip_flag[x0][y0] is a syntax element related to the transform skip. If transform_skip_flag[x0][y0] is 1, it may indicate that inverse transform is not applied to the luma transform block. If transform_skip_flag[x0][y0] is 0, it may indicate that whether the inverse transform is applied to the luma transform block is determined by another syntax element.
  • the second order is not based on the number of non-zero significant coefficients, but based on the position of the last significant coefficient in the scan order.
  • Lfnst_idx[x0][y0] a syntax element related to transformation, may be parsed.
  • the lfnstLastScanPos variable may be initialized to 1 and set.
  • the variable lfnstLastScanPos may represent position information of a last significant coefficient in the scan order of a transform block included in the current transform unit, as described with reference to FIG. 23. Specifically, when lfnstLastScanPos is 1, the position (scan index) of the last significant coefficient in the scan order for all transform blocks included in the transform unit is less than the threshold value or all transform coefficients in the block are 0.
  • variable numZeroOutSigCoeff may be initialized to 0 and set.
  • the variable numZeroOutSigCoeff indicates whether a significant coefficient exists at a specific position, and whether or not a quadratic transformation is applied may be determined based on this. For example, when a quadratic transform is applied to a transform block, it is assumed that only a maximum of 16 significant coefficients are allowed. In transform blocks of 4x4 and 8x8 sizes, significant coefficients may exist in the index [0, 7] region in the scan order (maximum of 8 non-zero transform coefficients are allowed).
  • a significant coefficient may exist in the index [0, 15] region in the scan order (up to 16 non-zero transform coefficients are allowed). Therefore, if the position (scan index) of the last significant coefficient in the scan order exists outside the region where the above-described significant coefficient can exist, the decoder does not apply the second-order transform to the current transform block. It can be clearly recognized that it is not.
  • the decoder may process information related to a position of a last significant coefficient in a scan order before coefficient coding (residual_coding).
  • last_significant_pos which is a syntax structure related to the position of the last significant coefficient in the scan order of luma, may be processed.
  • transform_skip_flag[x0][y0] When the value of transform_skip_flag[x0][y0] is 1, it may indicate that the inverse transform is not applied to the current luma transform block. Accordingly, coefficient coding (residual_coding) may be performed without being based on position information of the last significant coefficient in the scan order.
  • Last_significant_pos a syntax structure related to location
  • the last_significant_pos syntax structure is (x0, y0), which is the upper-left coordinate of the transform block, the value obtained by the base 2 log operation of the width of the transform block, and the value obtained by the base 2 log operation and the transformation block height.
  • a variable indicating which color component the block is, cIdx, can be received as an input.
  • tu_joint_cbcr_residual[x0][y0] which is a syntax element indicating a
  • tu_joint_cbcr_residual[x0][y0] 1
  • coefficient coding for Cr residual_coding
  • the position (scan index) of the last significant coefficient in the scan order for each color component is obtained, and based on this, the lfnstLastScanPos and numZeroOutSigCoeff values are updated. Can be.
  • the decoder performs lfnst_idx[x0][ before coefficient coding (residual_coding). y0] can be parsed.
  • the first condition is related to the block size (size).
  • the decoder may parse the syntax element lfnst_idx[x0][y0].
  • the decoder may check the block size condition to which the quadratic transformation can be applied.
  • the variables SubWidthC and SubHeightC are set according to the color format, and may represent the ratio of the width and height of the chroma component to the width and height of the luma component of a picture, respectively. For example, since a 4:2:0 color format image has a structure including one chroma sample per 4 luma samples, both SubWidthC and SubHeightC may be set to 2. As another example, since a 4:4:4 color format image has a structure including one chroma sample corresponding to one luma sample, both SubWidthC and SubHeightC may be set to 1.
  • LfnstWidth which is the number of samples in the horizontal direction of the current block
  • lfnstHeight which is the number of samples in the vertical direction
  • the number of samples in the horizontal direction of the chroma transform block is equal to the value obtained by dividing tbWidth, the width of the luma transform block, by SubWidthC.
  • the number of samples in the vertical direction of the chroma transform block is equal to the value obtained by dividing tbHeight, which is the height of the luma transform block, by SubHeightC.
  • tbHeight which is the height of the luma transform block
  • SubHeightC the number of samples in the vertical direction of the chroma transform block.
  • the second condition relates to a flag value indicating whether the second transformation is activated or applicable, and when the value of the flag ( sps_lfnst_enabled_flag) indicating whether the second transformation is activated or applicable is set to 1, the decoder is lfnst_idx [x0][y0] can be parsed.
  • the second-order transformation may be indicated in the higher level syntax RBSP.
  • a flag having a 1-bit size indicating whether to enable or apply secondary transformation may be included in at least one of SPS, PPS, VPS, tile group header, and slice header. If sps_lfnst_enabled_flag is 1, it may indicate that the syntax element lfnst_idx[x0][y0] exists in the syntax of the conversion unit. When sps_lfnst_enabled_flag is 0, the syntax element lfnst_idx[x0][y0] does not exist in the syntax of the conversion unit. Can represent.
  • the third condition relates to the prediction mode, and the quadratic transform can be applied only to the intra-predicted block. Therefore, when the current block is an intra-predicted block, the decoder can parse lfnst_idx[x0][y0].
  • the fourth condition relates to whether the ISP prediction method is applied.
  • the decoder may parse the lfnst_idx[x0][y0] syntax element.
  • the second transform may not be applied to the divided transform units.
  • lfnst_idx[x0][y0] which is a syntax element related to the second-order transformation
  • the case where the transform tree for the current CU is divided into a plurality of transform units smaller than the CU size may include a case where ISP prediction is applied to the current coding unit.
  • the ISP prediction method may be a prediction method of dividing a transform tree into a plurality of transform units smaller than a CU size according to a preset partitioning method when intra prediction is applied to the current coding unit.
  • the ISP prediction mode may be indicated at the coding unit level, and the IntraSubPartitionsSplitType variable may be set based on this.
  • IntraSubPartitionsSplitType is ISP_NO_SPLIT, it indicates that ISP is not applied to the current block. Due to the characteristics of intra prediction in which prediction samples are generated at the level of a transform unit, when a transform tree is divided into a plurality of transform units, the accuracy of prediction may be higher than when the transform tree is not divided. Therefore, even if the second-order transform is not applied to a plurality of divided transform units, there is a high possibility that the energy of the residual signal is efficiently compressed.
  • the fifth condition relates to an intra prediction method. If Matrix based Intra Predicition (MIP) is not applied to the current coding unit prediction, the decoder may parse the lfnst_idx[x0][y0] syntax element.
  • MIP Matrix based Intra Predicition
  • MIP Matrix based Intra Prediction
  • Intra_mip_flag[x0][y0] 1
  • it may indicate that MIP is applied to prediction of the current coding unit, and prediction may be performed by multiplying reconstructed samples around the current block and a preset matrix.
  • MIP since the residual signal has a property different from that of general intra prediction that performs directional or non-directional prediction, when MIP is applied, a quadratic transform may not be applied to a transform block.
  • the sixth condition relates to the last significant coefficient in the scan order of the transform block.
  • the encoder does not apply the second-order transform to the transform block (lfnst_idx[x0][y0] is 0), and therefore, it is considered that the overhead of the encoder signaling lfnst_idx[x0][y0] is high. I can.
  • lfnst_idx[x0][y0] is only when the position (scan index) of the last significant coefficient in the scan order for at least one transform block included in the transform unit is equal to or greater than a preset threshold value. Can be parsed.
  • the threshold value may be an integer greater than or equal to 0.
  • the threshold value is 1
  • the fact that the position (scan index) of the last significant coefficient in the scan order is equal to or greater than the threshold value means that the significant coefficient is other than the upper left corner of the block (scan index 0, DC). It may mean that it exists at the location of.
  • the seventh condition relates to a significant coefficient present at a specific location.
  • the numZeroOutSigCoeff variable indicates whether a non-zero transform coefficient exists at a specific position.
  • the numZeroOutSigCoeff variable indicates whether a non-zero transform coefficient exists at a specific position.
  • significant coefficients may exist in the index [0, 7] region in the scan order (maximum of 8 non-zero transform coefficients are allowed).
  • a significant coefficient may exist in the index [0, 15] region in the scan order (up to 16 non-zero transform coefficients are allowed). Therefore, if the position (scan index) of the last significant coefficient in the scan order exists outside the region where the above-described significant coefficient can exist, the decoder does not apply the quadratic transformation to the current block. Can be recognized clearly. Therefore, when numZeroOutSigCoeff> 0, since the quadratic transformation is not applied to the current block, lfnst_idx[x0][y0] is not parsed and may be set to 0.
  • lfnst_idx[x0][y0] may be set to 0 without being parsed.
  • numZeroOutSigCoeff it means that there is no significant coefficient at a specific location, so lfnst_idx[x0][y0] can be parsed.
  • lfnst_idx[x0][y0] may be parsed, otherwise, lfnst_idx[x0][y0] may be set to 0 without being parsed.
  • FIG. 27 shows a syntax structure related to a position of a last significant coefficient in a scan order according to an embodiment of the present invention.
  • the last_significant_pos syntax structure means a syntax structure including position information of a last significant coefficient in a scan order for each color component Y, Cb, and Cr transform blocks.
  • the last_significant_pos syntax structure is (x0, y0), which is the upper-left coordinate of the transform block, log2TbWidth that takes a log of base 2 from the width of the transform block, log2TbHeight that takes a log of base 2 to the height of the transform block, and transform block.
  • CIdx representing the color component of can be received as an input. When cIdx is 0, it may represent a luma transform block, when cIdx is 1, it may represent a chroma Cb transform block, and when cIdx is 2, it may represent a chroma Cr transform block.
  • a syntax element related to position information of a last significant coefficient in a scan order may be parsed. Specifically, syntax elements related to x-coordinate values and y-coordinate values of a last significant coefficient in the scan order may be parsed. At this time, each coordinate value may be indicated by being divided into prefix information and suffix information.
  • the decoder may set the LastSignificantCoeffX variable, which is the x-coordinate of the last significant coefficient in the scan order, based on prefix information and suffix information for the x-coordinate.
  • the decoder may set the LastSignificantCoeffY variable, which is the y coordinate of the last significant coefficient in the scan order, based on prefix information and suffix information for the y coordinate. As shown in FIG. 27, the decoder may set lastScanPos, which is the scan index of the last significant coefficient in the scan order, based on LastSignificantCoeffX, LastSignificantCoeffY, and DiagScanOrder in the do ⁇ while() structure.
  • the decoder may update numZeroOutSigCoeff and lfnstLastScanPos, which are variables used in a parsing condition of lfnst_idx[x0][y0], which are syntax elements related to the second-order transformation, based on lastScanPos.
  • the numZeroOutSigCoeff variable indicates whether there is a non-zero transform coefficient at this location. For example, when a quadratic transform is applied to the current block, it is assumed that only a maximum of 16 significant coefficients are allowed. In transform blocks of 4x4 and 8x8 sizes, significant coefficients may exist in the index [0, 7] region in the scan order (maximum of 8 non-zero transform coefficients are allowed). Meanwhile, in a transform block having a size other than 4x4 and 8x8, a significant coefficient may exist in the index [0, 15] region in the scan order (up to 16 non-zero transform coefficients are allowed).
  • the decoder does not apply the quadratic transformation to the current block. Can be recognized clearly.
  • numZeroOutSigCoeff can be updated.
  • a non-zero transform coefficient may exist only in the index [0, 7] region in the scan order for a transform block having a size of 4x4 8x8.
  • numZeroOutSigCoeff can increase by 1. have.
  • a significant coefficient other than 0 may exist only in the index [0, 15] region in the scan order. Therefore, when lastScanPos is greater than 15 (lastScanPos>15), numZeroOutSigCoeff may increase by 1.
  • the initial value of lfnstLastScanPos may be set to 1.
  • cIdx may represent a variable indicating a color component of the current transform block, as described above.
  • Equation 6 when lfnstLastScanPos immediately before is 1 and lastScanPos is less than lfnstLastScanPosTh[cIdx], lfnstLastScanPos may be updated to 1. Meanwhile, when the immediately preceding lfnstLastScanPos is 0 or lastScanPos is equal to or greater than lfnstScanPosTh[cIdx], lfnstLastScanPos may be updated to 0.
  • lfnstLastScanPos may be determined as 1, and lfnst_idx[x0][y0] parsing condition of FIG. 26 Accordingly, lfnst_idx[x0][y0] may be set to 0 without being parsed. This indicates that no quadratic transformation is applied to the current block.
  • lfnstLastScanPos may be determined to be 0, and conditions i), ii), iii), iv), v) and vii) of FIG. 26 are If all are satisfied (if true), the decoder can parse lfnst_idx[x0][y0]. The decoder can parse lfnst_idx[x0][y0] to check whether or not the second-order transform is applied to the current block. If the second-order transform is applied to the current block, it can check/determine the transform kernel used for the second-order transform. I can.
  • LfnstLastScanPosTh[cIdx] in Equation 6 is a preset integer value of 0 or more, and both the encoder and the decoder may use the same value. Also, all color components may use the same threshold value. In this case, lfnstLastScanPos may be set as in Equation 7 below.
  • lfnstLastScanPosTh is a preset integer value greater than or equal to 0, and both the encoder and the decoder can use the same value.
  • lfnstLastScanPosTh may be 1. That is, when lastScanPos is 1 or more, lfnstLastScanPos may be updated to 0, and lfnst_idx[x0][y0] may be parsed.
  • the threshold value (lfnstLastScanPosTh) is an integer value, when lastScanPos is 1 or more, it may have the same meaning as when lastScanPos is greater than 0. In FIG. 27, a case where all color components have the same threshold value of 1 has been described, but the present invention is not limited thereto.
  • FIG. 28 is a diagram illustrating a residual_coding syntax structure according to an embodiment of the present invention.
  • position information of a last significant coefficient in a scan order may be indicated before coefficient coding (residual_coding).
  • the coefficient coding (residual_coding) syntax structure may not include a syntax structure related to position information of the last significant coefficient in the scan order.
  • the position information of the last significant coefficient in the scan order is the prefix for the x-coordinate of the last significant coefficient in the scan order, the suffix, and the y-coordinate. It may be a prefix or a suffix. Looking at the coefficient coding (residual_coding) syntax structure according to FIG.
  • coefficient coding (residual_coding) based on the x-coordinates and y-coordinates of the last significant coefficient in the scan order determined prior to the residual_coding, LastSignificantCoeffX and LastSignificantCoeffY ) Can be performed.
  • the second-order transform indication method according to the fourth embodiment may be a method that does not use a counter for a significant coefficient.
  • 29 is a flowchart illustrating a video signal processing method according to an embodiment of the present invention.
  • the video signal decoding apparatus may include a processor that performs the video signal processing method described in FIG. 29.
  • the processor may receive a bitstream including a syntax element related to a quadratic transformation of a coding unit.
  • the processor may check whether one or more preset conditions are satisfied, and when the one or more preset conditions are satisfied, may parse a syntax element related to the quadratic transformation of the coding unit (S2910, S2920). Meanwhile, if one or more preset conditions are not satisfied, the processor may not parse the syntax element related to the quadratic transformation of the coding unit (S2930). In this case, a value of the syntax element related to the second-order transformation may be set to 0.
  • the syntax element related to the quadratic transformation of the coding unit described in FIG. 29 is lfnst_idx[x0][y0], which is a syntax element indicating whether the second transformation of the transform block included in the current coding unit described with reference to FIGS. 15 to 28 is applied.
  • the processor may parse the syntax element related to the quadratic transformation of the coding unit through step S2920, and determine whether the quadratic transformation is applied to the transform block included in the coding unit based on the parsed syntax element. Yes (S2940).
  • the processor when the second-order transform is applied to the transform block, the processor performs a second-order inverse transform based on one or more coefficients of a first sub-block, which is one of one or more sub-blocks constituting the transform block.
  • One or more inverse transform coefficients for one subblock may be obtained (S2950).
  • the processor may obtain a residual sample for the transform block by performing a first-order inverse transform based on the one or more inverse transform coefficients obtained in step S2950 (S2960).
  • the second-order transform may be a low frequency non-separable transform (LFNST).
  • the transform block may be a block to which a first-order transform, which is separately performed as a vertical transform and a horizontal transform, is applied.
  • the first-order inverse transform may be an inverse transform of the first-order transform
  • the second-order inverse transform may mean an inverse transform of the second-order transform.
  • the syntax element related to the quadratic transformation of the coding unit may include information indicating whether the quadratic transformation is applied to the coding unit and information indicating a transform kernel used for the quadratic transformation.
  • the first subblock may be a first subblock according to a preset scan order, and in this case, the index of the first subblock may be 0.
  • a first condition among the one or more preset conditions may be a case in which an index value indicating a position of a first coefficient among the one or more coefficients of the first subblock is greater than a preset threshold value.
  • the first coefficient may be a last significant coefficient according to a preset scan order, and the significant coefficient may mean a non-zero coefficient.
  • the preset threshold value may be 0.
  • the preset scan order may be an up-right diagonal scan order described in FIGS. 13 and 14.
  • a second condition among the one or more preset conditions may be 4 pixels or more in a width and height of the transform block.
  • a third condition among the one or more preset conditions may be a case where a value of a transform skip flag included in the bitstream is not a specific value.
  • the transform skip flag may indicate that the first transform and the second transform are not applied to the transform block.
  • the fourth condition among the one or more preset conditions is that at least one coefficient among the one or more coefficients of the first subblock is not 0, and the at least one coefficient is a first position according to a preset scan order. It may be the case where it exists outside.
  • the first position according to the preset scan order means a position where the horizontal and vertical coordinate values are (0, 0) as described above, or a preset scan order (e.g., up-right diagonal ) Order) may mean the first position.
  • the coding unit may be composed of a plurality of coding blocks. In this case, if at least one of the transform blocks corresponding to each of the plurality of coding blocks satisfies the preset one or more conditions, the syntax element related to the quadratic transform may be parsed.
  • the processor A residual sample for the transform block may be obtained by performing a first-order inverse transform based on one or more coefficients of the block (S2970).
  • first-order inverse transform and second-order inverse transform may be an inverse transform for a first-order transform and a second-order transform, respectively.
  • the video signal processing method performed by the video signal decoding apparatus described with reference to FIG. 29 or a method similar thereto may be performed by the video signal encoding apparatus.
  • the video signal encoding apparatus may include a processor that encodes a video signal.
  • the processor may obtain a plurality of first-order transform coefficients for the block by performing a first-order transform on a residual sample of a block included in the coding unit.
  • a quadratic transform By performing a quadratic transform based on one or more coefficients of the plurality of first transform coefficients, one or more quadratic transform coefficients for a first subblock, which is one of subblocks constituting the block, may be obtained.
  • a bitstream may be obtained by encoding information on the one or more second order transform coefficients and a syntax element related to the second order transform of the coding unit.
  • the second-order transform may be a Low Frequency Non-Separable Transform (LFNST), and the first-order transform may be separately performed as a vertical transform and a horizontal transform.
  • LFNST Low Frequency Non-Separable Transform
  • the syntax element related to the quadratic transformation may be encoded when one or more preset conditions are satisfied.
  • the syntax element related to the quadratic transformation may include information indicating whether the quadratic transformation is applied to the coding unit and information indicating a transformation kernel used for the quadratic transformation.
  • the syntax element related to the quadratic transformation may be lfnst_idx[x0][y0], which is the syntax element described in FIGS. 15 to 28.
  • the first subblock may be a first subblock according to a preset scan order.
  • the index of the first subblock may be 0.
  • a first condition among the one or more preset conditions may be a case in which an index value indicating a position of a first coefficient among the one or more second-order transform coefficients is greater than a preset threshold value.
  • the first coefficient may be a last significant coefficient according to a preset scan order, and the significant coefficient may mean a non-zero coefficient.
  • the preset threshold value may be 0.
  • the preset scan order may be an up-right diagonal scan order described in FIGS. 13 and 14.
  • a second condition among the one or more preset conditions may be 4 pixels or more in a width and a height of the first transform block.
  • a third condition among the one or more preset conditions may be a case where a value of a transform skip flag included in the bitstream is not a specific value.
  • the transform skip flag may indicate that the first transform and the second transform are not applied to the block.
  • the fourth condition among the one or more preset conditions is that at least one coefficient among the one or more quadratic transformation coefficients is not 0, and the at least one coefficient is present except for a first position according to a preset scan order.
  • the first position according to the preset scan order means a position where the horizontal and vertical coordinate values are (0, 0) as described above, or a preset scan order (e.g., up-right diagonal ) Order) may mean the first position.
  • the coding unit may be composed of a plurality of coding blocks.
  • the syntax element related to the quadratic transformation may be encoded.
  • the video signal encoding apparatus may include a video signal decoding processor that performs the video signal processing method described with reference to FIG. 29.
  • the bitstream may include syntax elements related to the quadratic transformation of the coding unit described in FIGS. 15 to 29.
  • the bitstream may be stored in a non-transitory computer-readable medium.
  • the video signal encoding apparatus may not include a syntax element related to the second-order transformation in the bitstream or may set a syntax element related to the second-order transformation to 0.
  • the bitstream may be decoded by the video signal decoding apparatus described with reference to FIG. 29 or may be encoded by the video signal encoding apparatus described above.
  • the method of encoding such a bitstream includes, for example, performing a first-order transform on a residual sample of a block included in a coding unit to obtain a plurality of first-order transform coefficients for the block, and the plurality of first-order transforms.
  • It may be an encoding method including a process of encoding information on coefficients and a syntax element related to a quadratic transformation of the coding unit.
  • Acquiring a coefficient described herein may mean obtaining a pixel/block related to a coefficient, and obtaining a residual sample may mean obtaining a residual signal/pixel/block related to a residual sample.
  • embodiments of the present invention described above can be implemented through various means.
  • embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
  • the method according to embodiments of the present invention includes one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), and Programmable Logic Devices (PLDs). , Field Programmable Gate Arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
  • ASICs Application Specific Integrated Circuits
  • DSPs Digital Signal Processors
  • DSPDs Digital Signal Processing Devices
  • PLDs Programmable Logic Devices
  • FPGAs Field Programmable Gate Arrays
  • processors controllers
  • microcontrollers microcontrollers
  • microprocessors and the like.
  • the method according to the embodiments of the present invention may be implemented in the form of a module, procedure, or function that performs the functions or operations described above.
  • the software code can be stored in a memory and driven by a processor.
  • the memory may be located inside or outside the processor, and data may be exchanged with the processor through various known means.
  • Computer-readable media can be any available media that can be accessed by a computer, and includes both volatile and nonvolatile media, removable and non-removable media. Further, the computer-readable medium may include both computer storage media and communication media.
  • Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Communication media typically includes computer readable instructions, data structures, or other data in a modulated data signal, such as program modules, or other transmission mechanisms, and includes any information delivery media.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Systems (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

비디오 신호 복호화 장치는, 기 설정된 하나 이상의 조건들을 만족하는 경우 비디오 신호의 비트스트림으로부터 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱하고, 상기 파싱된 신택스 요소에 기초하여, 상기 코딩 유닛에 포함되는 변환 블록에 상기 2차 변환이 적용되는지 여부를 확인하고, 상기 변환 블록에 상기 2차 변환이 적용되는 경우, 상기 변환 블록을 구성하는 하나 이상의 서브블록들 중 하나인 제1 서브블록의 하나 이상의 계수들에 기초한 2차 역변환을 수행하여 상기 제1 서브블록에 대한 하나 이상의 역변환 계수들을 획득하고, 상기 하나 이상의 역변환 계수들에 기초한 1차 역변환을 수행하여 상기 변환 블록에 대한 잔차 샘플을 획득하는 프로세서를 포함하는 것을 특징으로 한다.

Description

2차 변환을 이용하는 비디오 신호 처리 방법 및 장치
본 발명은 비디오 신호의 처리 방법 및 장치에 관한 것으로, 보다 상세하게는 비디오 신호를 인코딩하거나 디코딩하는 비디오 신호 처리 방법 및 장치에 관한 것이다.
압축 부호화란 디지털화한 정보를 통신 회선을 통해 전송하거나, 저장 매체에 적합한 형태로 저장하기 위한 일련의 신호 처리 기술을 의미한다. 압축 부호화의 대상에는 음성, 영상, 문자 등의 대상이 존재하며, 특히 영상을 대상으로 압축 부호화를 수행하는 기술을 비디오 영상 압축이라고 일컫는다. 비디오 신호에 대한 압축 부호화는 공간적인 상관관계, 시간적인 상관관계, 확률적인 상관관계 등을 고려하여 잉여 정보를 제거함으로써 이루어진다. 그러나 최근의 다양한 미디어 및 데이터 전송 매체의 발전으로 인해, 더욱 고효율의 비디오 신호 처리 방법 및 장치가 요구되고 있다.
본 발명의 목적은 비디오 신호의 코딩 효율을 높이고자 함에 있다.
본 발명은 2차 변환을 통한 코딩 효율을 높이기 위한 목적을 가지고 있다.
본 명세서는 2차 변환을 이용하는 비디오 신호 처리 방법을 제공한다.
구체적으로, 비디오 신호 복호화 장치에 있어서, 프로세서를 포함하며, 상기 프로세서는, 기 설정된 하나 이상의 조건들을 만족하는 경우 비디오 신호의 비트스트림(bitstream)으로부터 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱(parsing) 하고, 상기 파싱된 신택스 요소에 기초하여, 상기 코딩 유닛에 포함되는 변환 블록에 상기 2차 변환이 적용되는지 여부를 확인하고, 상기 변환 블록에 상기 2차 변환이 적용되는 경우, 상기 변환 블록을 구성하는 하나 이상의 서브블록들 중 하나인 제1 서브블록의 하나 이상의 계수들에 기초한 2차 역변환을 수행하여, 상기 제1 서브블록에 대한 하나 이상의 역변환 계수들을 획득하고, 상기 하나 이상의 역변환 계수들에 기초한 1차 역변환을 수행하여, 상기 변환 블록에 대한 잔차 샘플을 획득하되, 상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고, 상기 변환 블록은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능한(separable) 1차 변환이 적용된 블록이고, 상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함하는 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고, 상기 유효 계수는 0이 아닌(non-zero) 계수인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 변환 블록의 너비(Width) 및 높이(Height)는 4픽셀 이상인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 임계 값은 0인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 스캔 순서는, 우상측 대각(up-right diagonal) 스캔 순서인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우이고, 상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 변환 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제4 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 적어도 하나의 계수는 0이 아니고, 상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 코딩 유닛은 복수의 코딩 블록들로 구성되고, 상기 복수의 코딩 블록 각각에 대응하는 변환 블록들 중 적어도 어느 하나라도 상기 기 설정된 하나 이상의 조건들을 만족하는 경우 상기 2차 변환과 관련된 신택스 요소는 파싱되는 것을 특징으로 한다.
또한 본 명세서에 있어서, 비디오 신호 부호화 장치에 있어서, 프로세서를 포함하며, 상기 프로세서는, 코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득하고, 상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득하고, 상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하여 비트스트림(bitstream)을 획득하되, 상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고, 상기 1차 변환은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능(separable)하고, 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소는 기 설정된 하나 이상의 조건들을 만족하는 경우 부호화되며, 및 상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 하나 이상의 2차 변환 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우 인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함하는 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고, 상기 유효 계수는 0이 아닌(non-zero) 계수인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 1차 변환 블록의 너비(Width) 및 높이(Height)는 4픽셀 이상인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 임계 값은 0인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 스캔 순서는, 우상측 대각(up-right diagonal) 스캔 순서인 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우이고, 상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것을 특징으로 한다.
또한 본 명세서에 있어서, 상기 기 설정된 하나 이상의 조건들 중 제4 조건은, 상기 하나 이상의 2차 변환 계수들 중 적어도 하나의 계수는 0이 아니고, 상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우인 것을 특징으로 한다.
또한 본 명세서에 있어서, 비트스트림(bitstream)을 저장하는 비-일시적인(non-transitory) 컴퓨터 판독 가능 매체(computer-readable medium)에 있어서, 상기 비트스트림은, 코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득하는 단계; 상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득하는 단계; 및 상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하는 단계; 를 포함하는 부호화 방법을 통해 부호화되고, 상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고, 상기 1차 변환은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능(separable)하고, 상기 2차 변환과 관련된 신택스 요소는 기 설정된 하나 이상의 조건들을 만족하는 경우부호화되며, 및 상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 하나 이상의 2차 변환 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우인 것을 특징으로 한다.
본 발명의 일 실시 예는 2차 변환을 이용하는 비디오 신호 처리 방법 및 이를 위한 장치를 제공한다.
도 1은 본 발명의 일 실시예에 따른 비디오 신호 인코딩 장치의 개략적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 비디오 신호 디코딩 장치의 개략적인 블록도이다.
도 3은 픽쳐 내에서 코딩 트리 유닛이 코딩 유닛들로 분할되는 실시예를 도시한다.
도 4는 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하는 방법의 일 실시예를 도시한다.
도 5 및 도 6은 본 발명의 실시예에 따른 인트라 예측 방법을 더욱 구체적으로 도시한다.
도 7은 인코더가 레지듀얼 신호를 변환하는 방법을 구체적으로 나타내는 도면이다.
도 8은 인코더 및 디코더가 변환 계수를 역변환하여 레지듀얼 신호를 획득하는 방법을 구체적으로 나타내는 도면이다.
도 9는 1차 변환에서 사용될 수 있는 복수의 변환 커널에 대한 기저 함수를 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 2차 변환을 수행하는 복호화기에서 잔차 신호를 복원하는 과정을 도시하는 블록도이다.
도 11은 본 발명의 일 실시예에 따른 2차 변환을 수행하는 복호화기에서 잔차 신호를 복원하는 과정을 블록 레벨에서 도시하는 도면이다.
도 12는 본 발명의 일 실시예에 따른 감소된 샘플 수를 이용하는 2차 변환을 적용하는 방법을 도시한 도면이다.
도 13은 본 발명의 일 실시예에 따른 우상측 대각(up-right diagonal) 스캔 순서의 결정 방법을 예시하는 도면이다.
도 14는 본 발명의 일 실시예에 따른 우상측 대각 스캔 순서를 블록 사이즈에 따라 나타낸 도면이다.
도 15는 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 도시한 도면이다.
도 16은 본 발명의 일 실시예에 따른 residual_coding 신택스 구조를 도시한 도면이다.
도 17은 본 발명의 일 실시예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 18은 본 발명의 일 실시예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 19는 본 발명의 일 실시예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 20은 본 발명의 또 다른 실시예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 21은 본 발명의 또 다른 실시예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 22는 본 발명의 또 다른 실시 예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 23는 본 발명의 실시 예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 24는 본 발명의 또 다른 실시예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 25는 본 발명의 실시예에 따른 코딩 유닛 신택스를 나타낸 도면이다.
도 26은 본 발명의 또 다른 실시예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 27은 본 발명의 실시 예에 따른 스캔 순서 상 마지막 유효 계수의 위치와 관련된 신택스 구조를 나타낸다.
도 28은 본 발명의 또 다른 실시 예에 따른 residual_coding 신택스 구조를 도시한 도면이다.
도 29는 본 발명의 실시 예에 따른 비디오 신호 처리 방법을 나타낸 순서도이다.
본 명세서에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도, 관례 또는 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한 특정 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 그 의미를 기재할 것이다. 따라서 본 명세서에서 사용되는 용어는, 단순한 용어의 명칭이 아닌 그 용어가 가진 실질적인 의미와 본 명세서의 전반에 걸친 내용을 토대로 해석되어야 함을 밝혀두고자 한다.
본 명세서에서 일부 용어들은 다음과 같이 해석될 수 있다. 코딩은 경우에 따라 인코딩 또는 디코딩으로 해석될 수 있다. 본 명세서에서 비디오 신호의 인코딩(부호화)을 수행하여 비디오 신호 비트스트림을 생성하는 장치는 인코딩 장치 혹은 인코더로 지칭되며, 비디오 신호 비트스트림의 디코딩(복호화)을 수행하여 비디오 신호를 복원하는 장치는 디코딩 장치 혹은 디코더로 지칭된다. 또한, 본 명세서에서 비디오 신호 처리 장치는 인코더 및 디코더를 모두 포함하는 개념의 용어로 사용된다. 정보(information)는 값(values), 파라미터(parameter), 계수(coefficients), 성분(elements) 등을 모두 포함하는 용어로서, 경우에 따라 의미는 달리 해석될 수 있으므로 본 발명은 이에 한정되지 아니한다. '유닛'은 영상 처리의 기본 단위 또는 픽쳐의 특정 위치를 지칭하는 의미로 사용되며, 휘도(luma) 성분 및 색차(chroma) 성분 중 적어도 하나를 포함하는 이미지 영역을 가리킨다. 또한, '블록'은 휘도 성분 및 색차 성분들(즉, Cb 및 Cr) 중 특정 성분을 포함하는 이미지 영역을 가리킨다. 다만, 실시예에 따라서 '유닛', '블록', '파티션' 및 '영역' 등의 용어는 서로 혼용하여 사용될 수 있다. 또한, 본 명세서에서 유닛은 코딩 유닛, 예측 유닛, 변환 유닛을 모두 포함하는 개념으로 사용될 수 있다. 픽쳐는 필드 혹은 프레임을 가리키며, 실시예에 따라 상기 용어들은 서로 혼용하여 사용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 비디오 신호 인코딩 장치(100)의 개략적인 블록도이다. 도 1을 참조하면, 본 발명의 인코딩 장치(100)는 변환부(110), 양자화부(115), 역양자화부(120), 역변환부(125), 필터링부(130), 예측부(150) 및 엔트로피 코딩부(160)를 포함한다.
변환부(110)는 입력 받은 비디오 신호와 예측부(150)에서 생성된 예측 신호의 차이인 레지듀얼 신호를 변환하여 변환 계수 값을 획득한다. 예를 들어, 이산 코사인 변환(Discrete Cosine Transform, DCT), 이산 사인 변환(Discrete Sine Transform, DST) 또는 웨이블릿 변환(Wavelet Transform) 등이 사용될 수 있다. 이산 코사인 변환 및 이산 사인 변환은 입력된 픽쳐 신호를 블록 형태로 나누어 변환을 수행하게 된다. 변환에 있어서 변환 영역 내의 값들의 분포와 특성에 따라서 코딩 효율이 달라질 수 있다. 양자화부(115)는 변환부(110)에서 출력된 변환 계수 값을 양자화한다.
코딩 효율을 높이기 위하여 픽쳐 신호를 그대로 코딩하는 것이 아니라, 예측부(150)를 통해 이미 코딩된 영역을 이용하여 픽쳐를 예측하고, 예측된 픽쳐에 원본 픽쳐와 예측 픽쳐 간의 레지듀얼 값을 더하여 복원 픽쳐를 획득하는 방법이 사용된다. 인코더와 디코더에서 미스매치가 발생되지 않도록 하기 위해, 인코더에서 예측을 수행할 때에는 디코더에서도 사용 가능한 정보를 사용해야 한다. 이를 위해, 인코더에서는 부호화한 현재 블록을 다시 복원하는 과정을 수행한다. 역양자화부(120)에서는 변환 계수 값을 역양자화하고, 역변환부(125)에서는 역양자화된 변환 계수값을 이용하여 레지듀얼 값을 복원한다. 한편, 필터링부(130)는 복원된 픽쳐의 품질 개선 및 부호화 효율 향상을 위한 필터링 연산을 수행한다. 예를 들어, 디블록킹 필터, 샘플 적응적 오프셋(Sample Adaptive Offset, SAO) 및 적응적 루프 필터 등이 포함될 수 있다. 필터링을 거친 픽쳐는 출력되거나 참조 픽쳐로 이용하기 위하여 복호 픽쳐 버퍼(Decoded Picture Buffer, DPB, 156)에 저장된다.
코딩 효율을 높이기 위하여 픽쳐 신호를 그대로 코딩하는 것이 아니라, 예측부(150)를 통해 이미 코딩된 영역을 이용하여 픽쳐를 예측하고, 예측된 픽쳐에 원 픽쳐와 예측 픽쳐 간의 레지듀얼 값을 더하여 복원 픽쳐를 획득하는 방법이 사용된다. 인트라 예측부(152)에서는 현재 픽쳐 내에서 인트라 예측을 수행하며, 인터 예측부(154)에서는 복호 픽쳐 버퍼(156)에 저장된 참조 픽쳐를 이용하여 현재 픽쳐를 예측한다. 인트라 예측부(152)는 현재 픽쳐 내의 복원된 영역들로부터 인트라 예측을 수행하여, 인트라 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인터 예측부(154)는 다시 모션 추정부(154a) 및 모션 보상부(154b)를 포함하여 구성될 수 있다. 모션 추정부(154a)에서는 복원된 특정 영역을 참조하여 현재 영역의 모션 벡터값을 획득한다. 모션 추정부(154a)에서는 참조 영역의 위치 정보(참조 프레임, 모션 벡터 등) 등을 엔트로피 코딩부(160)로 전달하여 비트스트림에 포함될 수 있도록 한다. 모션 추정부(154a)에서 전달된 모션 벡터값을 이용하여 모션 보상부(154b)에서는 인터 모션 보상을 수행한다.
예측부(150)는 인트라 예측부(152)와 인터 예측부(154)를 포함한다. 인트라 예측부(152)는 현재 픽쳐 내에서 인트라(intra) 예측을 수행하며, 인터 예측부(154)는 복호 픽쳐 버퍼(156)에 저장된 참조 픽쳐를 이용하여 현재 픽쳐를 예측하는 인터(inter) 예측을 수행한다. 인트라 예측부(152)는 현재 픽쳐 내의 복원된 샘플들로부터 인트라 예측을 수행하여, 인트라 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인트라 부호화 정보는 인트라 예측 모드, MPM(Most Probable Mode) 플래그, MPM 인덱스 중 적어도 하나를 포함할 수 있다. 인트라 부호화 정보는 참조 샘플에 관한 정보를 포함할 수 있다. 인터 예측부(154)는 모션 추정부(154a) 및 모션 보상부(154b)를 포함하여 구성될 수 있다. 모션 추정부(154a)는 복원된 참조 픽쳐의 특정 영역을 참조하여 현재 영역의 모션 벡터값을 획득한다. 모션 추정부(154a)는 참조 영역에 대한 모션 정보 세트(참조 픽쳐 인덱스, 모션 벡터 정보 등)를 엔트로피 코딩부(160)로 전달한다. 모션 보상부(154b)는 모션 추정부(154a)에서 전달된 모션 벡터값을 이용하여 모션 보상을 수행한다. 인터 예측부(154)는 참조 영역에 대한 모션 정보를 포함하는 인터 부호화 정보를 엔트로피 코딩부(160)에 전달한다.
추가적인 실시예에 따라, 예측부(150)는 인트라 블록 카피(block copy, BC) 예측부(미도시)를 포함할 수 있다. 인트라 BC 예측부는 현재 픽쳐 내의 복원된 샘플들로부터 인트라 BC 예측을 수행하여, 인트라 BC 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인트라 BC 예측부는 현재 픽쳐 내의 특정 영역을 참조하여 현재 영역의 예측에 이용되는 참조 영역을 나타내는 블록 벡터값을 획득한다. 인트라 BC 예측부는 획득된 블록 벡터값을 이용하여 인트라 BC 예측을 수행할 수 있다. 인트라 BC 예측부는 인트라 BC 부호화 정보를 엔트로피 코딩부(160)로 전달한다. 인트라 BC 부호화 정보는 블록 벡터 정보를 포함할 수 있다.
위와 같은 픽쳐 예측이 수행될 경우, 변환부(110)는 원본 픽쳐와 예측 픽쳐 간의 레지듀얼 값을 변환하여 변환 계수 값을 획득한다. 이때, 변환은 픽쳐 내에서 특정 블록 단위로 수행될 수 있으며, 특정 블록의 크기는 기 설정된 범위 내에서 가변할 수 있다. 양자화부(115)는 변환부(110)에서 생성된 변환 계수 값을 양자화하여 엔트로피 코딩부(160)로 전달한다.
엔트로피 코딩부(160)는 양자화된 변환 계수를 나타내는 정보, 인트라 부호화 정보, 및 인터 부호화 정보 등을 엔트로피 코딩하여 비디오 신호 비트스트림을 생성한다. 엔트로피 코딩부(160)에서는 가변 길이 코딩(Variable Length Coding, VLC) 방식과 산술 코딩(arithmetic coding) 방식 등이 사용될 수 있다. 가변 길이 코딩(VLC) 방식은 입력되는 심볼들을 연속적인 코드워드로 변환하는데, 코드워드의 길이는 가변적일 수 있다. 예를 들어, 자주 발생하는 심볼들을 짧은 코드워드로, 자주 발생하지 않은 심볼들은 긴 코드워드로 표현하는 것이다. 가변 길이 코딩 방식으로서 컨텍스트 기반 적응형 가변 길이 코딩(Context-based Adaptive Variable Length Coding, CAVLC) 방식이 사용될 수 있다. 산술 코딩은 연속적인 데이터 심볼들을 하나의 소수로 변환하는데, 산술 코딩은 각 심볼을 표현하기 위하여 필요한 최적의 소수 비트를 얻을 수 있다. 산술 코딩으로서 컨텍스트 기반 적응형 산술 부호화(Context-based Adaptive Binary Arithmetic Code, CABAC)가 이용될 수 있다. 예를 들어, 엔트로피 코딩부(160)는 양자화된 변환 계수를 나타내는 정보를 이진화할 수 있다. 또한, 엔트로피 코딩부(160)는 이진화된 정보를 산술 코딩하여 비트스트림을 생성할 수 있다.
상기 생성된 비트스트림은 NAL(Network Abstraction Layer) 유닛을 기본 단위로 캡슐화 된다. NAL 유닛은 부호화된 정수 개의 코딩 트리 유닛(coding tree unit)을 포함한다. 비디오 디코더에서 비트스트림을 복호화하기 위해서는 먼저 비트스트림을 NAL 유닛 단위로 분리한 후, 분리된 각각의 NAL 유닛을 복호화해야 한다. 한편, 비디오 신호 비트스트림의 복호화를 위해 필요한 정보들은 픽쳐 파라미터 세트(Picture Parameter Set, PPS), 시퀀스 파라미터 세트(Sequence Parameter Set, SPS), 비디오 파라미터 세트(Video Parameter Set, VPS) 등과 같은 상위 레벨 세트의 RBSP(Raw Byte Sequence Payload)를 통해 전송될 수 있다.
한편, 도 1의 블록도는 본 발명의 일 실시예에 따른 인코딩 장치(100)를 나타낸 것으로서, 분리하여 표시된 블록들은 인코딩 장치(100)의 엘리먼트들을 논리적으로 구별하여 도시한 것이다. 따라서 전술한 인코딩 장치(100)의 엘리먼트들은 디바이스의 설계에 따라 하나의 칩으로 또는 복수의 칩으로 장착될 수 있다. 일 실시예에 따르면, 전술한 인코딩 장치(100)의 각 엘리먼트의 동작은 프로세서(미도시)에 의해 수행될 수 있다.
도 2는 본 발명의 일 실시예에 따른 비디오 신호 디코딩 장치(200)의 개략적인 블록도이다. 도 2를 참조하면 본 발명의 디코딩 장치(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(225), 필터링부(230) 및 예측부(250)를 포함한다.
엔트로피 디코딩부(210)는 비디오 신호 비트스트림을 엔트로피 디코딩하여, 각 영역에 대한 변환 계수 정보, 인트라 부호화 정보, 인터 부호화 정보 등을 추출한다. 예를 들어, 엔트로피 디코딩부(210)는 비디오 신호 비트스트림으로부터 특정 영역의 변환 계수 정보에 대한 이진화 코드를 획득할 수 있다. 또한, 엔트로피 디코딩부(210)는 이진화 코드를 역 이진화하여 양자화된 변환 계수를 획득한다. 역양자화부(220)는 양자화된 변환 계수를 역양자화하고, 역변환부(225)는 역양자화된 변환 계수를 이용하여 레지듀얼 값을 복원한다. 비디오 신호 처리 장치(200)는 역변환부(225)에서 획득된 레지듀얼 값을 예측부(250)에서 획득된 예측값과 합산하여 원래의 화소값을 복원한다.
한편, 필터링부(230)는 픽쳐에 대한 필터링을 수행하여 화질을 향상시킨다. 여기에는 블록 왜곡 현상을 감소시키기 위한 디블록킹 필터 및/또는 픽쳐 전체의 왜곡 제거를 위한 적응적 루프 필터 등이 포함될 수 있다. 필터링을 거친 픽쳐는 출력되거나 다음 픽쳐에 대한 참조 픽쳐로 이용하기 위하여 복호 픽쳐 버퍼(DPB, 256)에 저장된다.
예측부(250)는 인트라 예측부(252) 및 인터 예측부(254)를 포함한다. 예측부(250)는 전술한 엔트로피 디코딩부(210)를 통해 복호화된 부호화 타입, 각 영역에 대한 변환 계수, 인트라/인터 부호화 정보 등을 활용하여 예측 픽쳐를 생성한다. 복호화가 수행되는 현재 블록을 복원하기 위해서, 현재 블록이 포함된 현재 픽쳐 또는 다른 픽쳐들의 복호화된 영역이 이용될 수 있다. 복원에 현재 픽쳐만을 이용하는, 즉 인트라 예측 또는 인트라 BC 예측을 수행하는 픽쳐(또는, 타일/슬라이스)를 인트라 픽쳐 또는 I 픽쳐(또는, 타일/슬라이스), 인트라 예측, 인터 예측 및 인트라 BC 예측을 모두 수행할 수 있는 픽쳐(또는, 타일/슬라이스)를 인터 픽쳐(또는, 타일/슬라이스)라고 한다. 인터 픽쳐(또는, 타일/슬라이스) 중 각 블록의 샘플값들을 예측하기 위하여 최대 하나의 모션 벡터 및 참조 픽쳐 인덱스를 이용하는 픽쳐(또는, 타일/슬라이스)를 예측 픽쳐(predictive picture) 또는 P 픽쳐(또는, 타일/슬라이스)라고 하며, 최대 두 개의 모션 벡터 및 참조 픽쳐 인덱스를 이용하는 픽쳐(또는, 타일/슬라이스)를 쌍예측 픽쳐(Bi-predictive picture) 또는 B 픽쳐(또는, 타일/슬라이스) 라고 한다. 다시 말해서, P 픽쳐(또는, 타일/슬라이스)는 각 블록을 예측하기 위해 최대 하나의 모션 정보 세트를 이용하고, B 픽쳐(또는, 타일/슬라이스)는 각 블록을 예측하기 위해 최대 두 개의 모션 정보 세트를 이용한다. 여기서, 모션 정보 세트는 하나 이상의 모션 벡터와 하나의 참조 픽쳐 인덱스를 포함한다.
인트라 예측부(252)는 인트라 부호화 정보 및 현재 픽쳐 내의 복원된 샘플들을 이용하여 예측 블록을 생성한다. 전술한 바와 같이, 인트라 부호화 정보는 인트라 예측 모드, MPM(Most Probable Mode) 플래그, MPM 인덱스 중 적어도 하나를 포함할 수 있다. 인트라 예측부(252)는 현재 블록의 좌측 및/또는 상측에 위치한 복원된 샘플들을 참조 샘플들로 이용하여 현재 블록의 샘플 값들을 예측한다. 본 개시에서, 복원된 샘플들, 참조 샘플들 및 현재 블록의 샘플들은 픽셀들을 나타낼 수 있다. 또한, 샘플 값(sample value)들은 픽셀 값들을 나타낼 수 있다.
일 실시예에 따르면, 참조 샘플들은 현재 블록의 주변 블록에 포함된 샘플들일 수 있다. 예를 들어, 참조 샘플들은 현재 블록의 좌측 경계에 인접한 샘플들 및/또는 상측 경계에 인접한 샘플들일 수 있다. 또한, 참조 샘플들은 현재 블록의 주변 블록의 샘플들 중 현재 블록의 좌측 경계로부터 기 설정된 거리 이내의 라인 상에 위치하는 샘플들 및/또는 현재 블록의 상측 경계로부터 기 설정된 거리 이내의 라인 상에 위치하는 샘플들일 수 있다. 이때, 현재 블록의 주변 블록은 현재 블록에 인접한 좌측(L) 블록, 상측(A) 블록, 하좌측(Below Left, BL) 블록, 상우측(Above Right, AR) 블록 또는 상좌측(Above Left, AL) 블록 중 적어도 하나를 포함할 수 있다.
인터 예측부(254)는 복호 픽쳐 버퍼(256)에 저장된 참조 픽쳐 및 인터 부호화 정보를 이용하여 예측 블록을 생성한다. 인터 부호화 정보는 참조 블록에 대한 현재 블록의 모션 정보 세트(참조 픽쳐 인덱스, 모션 벡터 정보 등)를 포함할 수 있다. 인터 예측에는 L0 예측, L1 예측 및 쌍예측(Bi-prediction)이 있을 수 있다. L0 예측은 L0 픽쳐 리스트에 포함된 1개의 참조 픽쳐를 이용한 예측이고, L1 예측은 L1 픽쳐 리스트에 포함된 1개의 참조 픽쳐를 이용한 예측을 의미한다. 이를 위해서는 1세트의 모션 정보(예를 들어, 모션 벡터 및 참조 픽쳐 인덱스)가 필요할 수 있다. 쌍예측 방식에서는 최대 2개의 참조 영역을 이용할 수 있는데, 이 2개의 참조 영역은 동일한 참조 픽쳐에 존재할 수도 있고, 서로 다른 픽쳐에 각각 존재할 수도 있다. 즉, 쌍예측 방식에서는 최대 2세트의 모션 정보(예를 들어, 모션 벡터 및 참조 픽쳐 인덱스)가 이용될 수 있는데, 2개의 모션 벡터가 동일한 참조 픽쳐 인덱스에 대응될 수도 있고 서로 다른 참조 픽쳐 인덱스에 대응될 수도 있다. 이때, 참조 픽쳐들은 시간적으로 현재 픽쳐 이전이나 이후 모두에 표시(또는 출력)될 수 있다. 일 실시예에 따라, 쌍예측 방식에서는 사용되는 2개의 참조 영역은 L0 픽쳐 리스트 및 L1 픽쳐 리스트 각각에서 선택된 영역일 수 있다.
인터 예측부(254)는 모션 벡터 및 참조 픽쳐 인덱스를 이용하여 현재 블록의 참조 블록을 획득할 수 있다. 상기 참조 블록은 참조 픽쳐 인덱스에 대응하는 참조 픽쳐 내에 존재한다. 또한, 모션 벡터에 의해서 특정된 블록의 샘플 값 또는 이의 보간(interpolation)된 값이 현재 블록의 예측자(predictor)로 이용될 수 있다. 서브펠(sub-pel) 단위의 픽셀 정확도를 갖는 모션 예측을 위하여 이를 테면, 휘도 신호에 대하여 8-탭 보간 필터가, 색차 신호에 대하여 4-탭 보간 필터가 사용될 수 있다. 다만, 서브펠 단위의 모션 예측을 위한 보간 필터는 이에 한정되지 않는다. 이와 같이 인터 예측부(254)는 이전에 복원된 픽쳐로부터 현재 유닛의 텍스쳐를 예측하는 모션 보상(motion compensation)을 수행한다. 이때, 인터 예측부는 모션 정보 세트를 이용할 수 있다.
추가적인 실시예에 따라, 예측부(250)는 인트라 BC 예측부(미도시)를 포함할 수 있다. 인트라 BC 예측부는 현재 픽쳐 내의 복원된 샘플들을 포함하는 특정 영역을 참조하여 현재 영역을 복원할 수 있다. 인트라 BC 예측부는 엔트로피 디코딩부(210)로부터 현재 영역에 대한 인트라 BC 부호화 정보를 획득한다. 인트라 BC 예측부는 현재 픽쳐 내의 특정 영역을 지시하는 현재 영역의 블록 벡터값을 획득한다. 인트라 BC 예측부는 획득된 블록 벡터값을 이용하여 인트라 BC 예측을 수행할 수 있다. 인트라 BC 부호화 정보는 블록 벡터 정보를 포함할 수 있다.
상기 인트라 예측부(252) 또는 인터 예측부(254)로부터 출력된 예측값, 및 역변환부(225)로부터 출력된 레지듀얼 값이 더해져서 복원된 비디오 픽쳐가 생성된다. 즉, 비디오 신호 디코딩 장치(200)는 예측부(250)에서 생성된 예측 블록과 역변환부(225)로부터 획득된 레지듀얼을 이용하여 현재 블록을 복원한다.
한편, 도 2의 블록도는 본 발명의 일 실시예에 따른 디코딩 장치(200)를 나타낸 것으로서, 분리하여 표시된 블록들은 디코딩 장치(200)의 엘리먼트들을 논리적으로 구별하여 도시한 것이다. 따라서 전술한 디코딩 장치(200)의 엘리먼트들은 디바이스의 설계에 따라 하나의 칩으로 또는 복수의 칩으로 장착될 수 있다. 일 실시예에 따르면, 전술한 디코딩 장치(200)의 각 엘리먼트의 동작은 프로세서(미도시)에 의해 수행될 수 있다.
도 3은 픽쳐 내에서 코딩 트리 유닛(Coding Tree Unit, CTU)이 코딩 유닛들(Coding Units, CUs)로 분할되는 실시예를 도시한다. 비디오 신호의 코딩 과정에서, 픽쳐는 코딩 트리 유닛(CTU)들의 시퀀스로 분할될 수 있다. 코딩 트리 유닛은 휘도(luma) 샘플들의 NXN 블록과, 이에 대응하는 색차(chroma) 샘플들의 2개의 블록들로 구성된다. 코딩 트리 유닛은 복수의 코딩 유닛들로 분할될 수 있다. 코딩 트리 유닛은 분할되지 않고 리프 노드가 될 수도 있다. 이 경우, 코딩 트리 유닛 자체가 코딩 유닛이 될 수 있다. 코딩 유닛은 상기에서 설명한 비디오 신호의 처리 과정, 즉 인트라/인터 예측, 변환, 양자화 및/또는 엔트로피 코딩 등의 과정에서 픽쳐를 처리하기 위한 기본 단위를 가리킨다. 하나의 픽쳐 내에서 코딩 유닛의 크기 및 모양은 일정하지 않을 수 있다. 코딩 유닛은 정사각형 혹은 직사각형의 모양을 가질 수 있다. 직사각형 코딩 유닛(혹은, 직사각형 블록)은 수직 코딩 유닛(혹은, 수직 블록)과 수평 코딩 유닛(혹은, 수평 블록)을 포함한다. 본 명세서에서, 수직 블록은 높이가 너비보다 큰 블록이며, 수평 블록은 너비가 높이보다 큰 블록이다. 또한, 본 명세서에서 정사각형이 아닌(non-square) 블록은 직사각형 블록을 가리킬 수 있지만, 본 발명은 이에 한정되지 않는다.
도 3을 참조하면, 코딩 트리 유닛은 먼저 쿼드 트리(Quad Tree, QT) 구조로 분할된다. 즉, 쿼드 트리 구조에서 2NX2N 크기를 가지는 하나의 노드는 NXN 크기를 가지는 네 개의 노드들로 분할될 수 있다. 본 명세서에서 쿼드 트리는 4진(quaternary) 트리로도 지칭될 수 있다. 쿼드 트리 분할은 재귀적으로 수행될 수 있으며, 모든 노드들이 동일한 깊이로 분할될 필요는 없다.
한편, 전술한 쿼드 트리의 리프 노드(leaf node)는 멀티-타입 트리(Multi-Type Tree, MTT) 구조로 더욱 분할될 수 있다. 본 발명의 실시예에 따르면, 멀티 타입 트리 구조에서는 하나의 노드가 수평 혹은 수직 분할의 2진(binary, 바이너리) 혹은 3진(ternary, 터너리) 트리 구조로 분할될 수 있다. 즉, 멀티-타입 트리 구조에는 수직 바이너리 분할, 수평 바이너리 분할, 수직 터너리 분할 및 수평 터너리 분할의 4가지 분할 구조가 존재한다. 본 발명의 실시예에 따르면, 상기 각 트리 구조에서 노드의 너비 및 높이는 모두 2의 거듭제곱 값을 가질 수 있다. 예를 들어, 바이너리 트리(Binary Tree, BT) 구조에서, 2NX2N 크기의 노드는 수직 바이너리 분할에 의해 2개의 NX2N 노드들로 분할되고, 수평 바이너리 분할에 의해 2개의 2NXN 노드들로 분할될 수 있다. 또한, 터너리 트리(Ternary Tree, TT) 구조에서, 2NX2N 크기의 노드는 수직 터너리 분할에 의해 (N/2)X2N, NX2N 및 (N/2)X2N의 노드들로 분할되고, 수평 터너리 분할에 의해 2NX(N/2), 2NXN 및 2NX(N/2)의 노드들로 분할될 수 있다. 이러한 멀티-타입 트리 분할은 재귀적으로 수행될 수 있다.
멀티-타입 트리의 리프 노드는 코딩 유닛이 될 수 있다. 코딩 유닛이 최대 변환 길이에 비해 크지 않은 경우, 해당 코딩 유닛은 더 이상의 분할 없이 예측 및/또는 변환의 단위로 사용될 수 있다. 일 실시예로서, 현재 코딩 유닛의 너비 또는 높이가 최대 변환 길이보다 큰 경우, 현재 코딩 유닛은 분할에 관한 명시적 시그널링 없이 복수의 변환 유닛으로 분할될 수 있다. 한편, 전술한 쿼드 트리 및 멀티-타입 트리에서 다음의 파라메터들 중 적어도 하나가 사전에 정의되거나 PPS, SPS, VPS 등과 같은 상위 레벨 세트의 RBSP를 통해 전송될 수 있다. 1) CTU 크기: 쿼드 트리의 루트 노드(root node) 크기, 2) 최소 QT 크기(MinQtSize): 허용된 최소 QT 리프 노드 크기, 3) 최대 BT 크기(MaxBtSize): 허용된 최대 BT 루트 노드 크기, 4) 최대 TT 크기(MaxTtSize): 허용된 최대 TT 루트 노드 크기, 5) 최대 MTT 깊이(MaxMttDepth): QT의 리프 노드로부터의 MTT 분할의 최대 허용 깊이, 6) 최소 BT 크기(MinBtSize): 허용된 최소 BT 리프 노드 크기, 7) 최소 TT 크기(MinTtSize): 허용된 최소 TT 리프 노드 크기.
도 4는 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하는 방법의 일 실시예를 도시한다. 전술한 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하기 위해 기 설정된 플래그들이 사용될 수 있다. 도 4를 참조하면, 노드의 분할 여부를 지시하는 플래그 'split_cu_flag', 쿼드 트리 노드의 분할 여부를 지시하는 플래그 'split_qt_flag', 멀티-타입 트리 노드의 분할 방향을 지시하는 플래그 'mtt_split_cu_vertical_flag' 또는 멀티-타입 트리 노드의 분할 모양을 지시하는 플래그 'mtt_split_cu_binary_flag' 중 적어도 하나가 사용될 수 있다.
본 발명의 실시예에 따르면, 현재 노드의 분할 여부를 지시하는 플래그인 'split_cu_flag'가 먼저 시그널링될 수 있다. 'split_cu_flag'의 값이 0인 경우, 현재 노드가 분할되지 않는 것을 나타내며, 현재 노드는 코딩 유닛이 된다. 현재 노드가 코팅 트리 유닛인 경우, 코딩 트리 유닛은 분할되지 않은 하나의 코딩 유닛을 포함한다. 현재 노드가 쿼드 트리 노드 'QT node'인 경우, 현재 노드는 쿼드 트리의 리프 노드 'QT leaf node'이며 코딩 유닛이 된다. 현재 노드가 멀티-타입 트리 노드 'MTT node'인 경우, 현재 노드는 멀티-타입 트리의 리프 노드 'MTT leaf node'이며 코딩 유닛이 된다.
'split_cu_flag'의 값이 1인 경우, 현재 노드는 'split_qt_flag'의 값에 따라 쿼드 트리 또는 멀티-타입 트리의 노드들로 분할될 수 있다. 코딩 트리 유닛은 쿼드 트리의 루트 노드이며, 쿼드 트리 구조로 우선 분할될 수 있다. 쿼드 트리 구조에서는 각각의 노드 'QT node' 별로 'split_qt_flag'가 시그널링된다. 'split_qt_flag'의 값이 1인 경우 해당 노드는 4개의 정사각형 노드들로 분할되며, 'qt_split_flag'의 값이 0인 경우 해당 노드는 쿼드 트리의 리프 노드 'QT leaf node'가 되며, 해당 노드는 멀티-타입 노드들로 분할된다. 본 발명의 실시예에 따르면, 현재 노드의 종류에 따라서 쿼드 트리 분할은 제한될 수 있다. 현재 노드가 코딩 트리 유닛(쿼트 트리의 루트 노드) 또는 쿼트 트리 노드인 경우에 쿼드 트리 분할이 허용될 수 있으며, 현재 노드가 멀티-타입 트리 노드인 경우 쿼트 트리 분할은 허용되지 않을 수 있다. 각각의 쿼드 트리 리프 노드 'QT leaf node'는 멀티-타입 트리 구조로 더 분할될 수 있다. 상술한 바와 같이, 'split_qt_flag'가 0인 경우 현재 노드는 멀티-타입 노드들로 분할될 수 있다. 분할 방향 및 분할 모양을 지시하기 위하여, 'mtt_split_cu_vertical_flag' 및 'mtt_split_cu_binary_flag'가 시그널링될 수 있다.'mtt_split_cu_vertical_flag'의 값이 1인 경우 노드 'MTT node'의 수직 분할이 지시되며, 'mtt_split_cu_vertical_flag'의 값이 0인 경우 노드 'MTT node'의 수평 분할이 지시된다. 또한, 'mtt_split_cu_binary_flag'의 값이 1인 경우 노드 'MTT node'는 2개의 직사각형 노드들로 분할되며, 'mtt_split_cu_binary_flag'의 값이 0인 경우 노드 'MTT node'는 3개의 직사각형 노드들로 분할된다.
코딩을 위한 픽쳐 예측(모션 보상)은 더 이상 나누어지지 않는 코딩 유닛(즉 코딩 유닛 트리의 리프 노드)을 대상으로 이루어진다. 이러한 예측을 수행하는 기본 단위를 이하에서는 예측 유닛(prediction unit) 또는 예측 블록(prediction block)이라고 한다.
이하, 본 명세서에서 사용되는 유닛이라는 용어는 예측을 수행하는 기본 단위인 상기 예측 유닛을 대체하는 용어로 사용될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니며, 더욱 광의적으로는 상기 코딩 유닛을 포함하는 개념으로 이해될 수 있다.
도 5 및 도 6은 본 발명의 실시예에 따른 인트라 예측 방법을 더욱 구체적으로 도시한다. 전술한 바와 같이, 인트라 예측부는 현재 블록의 좌측 및/또는 상측에 위치한 복원된 샘플들을 참조 샘플들로 이용하여 현재 블록의 샘플 값들을 예측한다.
먼저, 도 5는 인트라 예측 모드에서 현재 블록의 예측을 위해 사용되는 참조 샘플들의 일 실시예를 도시한다. 일 실시예에 따르면, 참조 샘플들은 현재 블록의 좌측 경계에 인접한 샘플들 및/또는 상측 경계에 인접한 샘플들일 수 있다. 도 5에 도시된 바와 같이, 현재 블록의 크기가 WXH이고 현재 블록에 인접한 단일 참조 라인(line)의 샘플들이 인트라 예측에 사용될 경우, 현재 블록의 좌측 및/또는 상측에 위치한 최대 2W+2H+1개의 주변 샘플들을 사용하여 참조 샘플들이 설정될 수 있다.
또한, 참조 샘플로 사용될 적어도 일부의 샘플이 아직 복원되지 않은 경우, 인트라 예측부는 참조 샘플 패딩 과정을 수행하여 참조 샘플을 획득할 수 있다. 또한, 인트라 예측부는 인트라 예측의 오차를 줄이기 위해 참조 샘플 필터링 과정을 수행할 수 있다. 즉, 주변 샘플들 및/또는 참조 샘플 패딩 과정에 의해 획득된 참조 샘플들에 필터링을 수행하여 필터링된 참조 샘플들을 획득할 수 있다. 인트라 예측부는 이와 같이 획득된 참조 샘플들을 이용하여 현재 블록의 샘플들을 예측한다. 인트라 예측부는 필터링되지 않은 참조 샘플들 또는 필터링된 참조 샘플들을 이용하여 현재 블록의 샘플들을 예측한다. 본 개시에서, 주변 샘플들은 적어도 하나의 참조 라인 상의 샘플들을 포함할 수 있다. 예를 들어, 주변 샘플들은 현재 블록의 경계에 인접한 라인 상의 인접 샘플들을 포함할 수 있다.
다음으로, 도 6은 인트라 예측에 사용되는 예측 모드들의 일 실시예를 도시한다. 인트라 예측을 위해, 인트라 예측 방향을 지시하는 인트라 예측 모드 정보가 시그널링될 수 있다. 인트라 예측 모드 정보는 인트라 예측 모드 세트를 구성하는 복수의 인트라 예측 모드들 중 어느 하나를 지시한다. 현재 블록이 인트라 예측 블록일 경우, 디코더는 비트스트림으로부터 현재 블록의 인트라 예측 모드 정보를 수신한다. 디코더의 인트라 예측부는 추출된 인트라 예측 모드 정보에 기초하여 현재 블록에 대한 인트라 예측을 수행한다.
본 발명의 실시예에 따르면, 인트라 예측 모드 세트는 인트라 예측에 사용되는 모든 인트라 예측 모드들(예, 총 67개의 인트라 예측 모드들)을 포함할 수 있다. 더욱 구체적으로, 인트라 예측 모드 세트는 평면 모드, DC 모드 및 복수의(예, 65개의) 각도 모드들(즉, 방향 모드들)을 포함할 수 있다. 각각의 인트라 예측 모드는 기 설정된 인덱스(즉, 인트라 예측 모드 인덱스)를 통해 지시될 수 있다. 예를 들어, 도 6에 도시된 바와 같이 인트라 예측 모드 인덱스 0은 평면(planar) 모드를 지시하고, 인트라 예측 모드 인덱스 1은 DC 모드를 지시한다. 또한, 인트라 예측 모드 인덱스 2 내지 66은 서로 다른 각도 모드들을 각각 지시할 수 있다. 각도 모드들은 기 설정된 각도 범위 이내의 서로 다른 각도들을 각각 지시한다. 예를 들어, 각도 모드는 시계 방향으로 45도에서 -135도 사이의 각도 범위(즉, 제1 각도 범위) 이내의 각도를 지시할 수 있다. 상기 각도 모드는 12시 방향을 기준으로 정의될 수 있다. 이때, 인트라 예측 모드 인덱스 2는 수평 대각(Horizontal Diagonal, HDIA) 모드를 지시하고, 인트라 예측 모드 인덱스 18은 수평(Horizontal, HOR) 모드를 지시하고, 인트라 예측 모드 인덱스 34는 대각(Diagonal, DIA) 모드를 지시하고, 인트라 예측 모드 인덱스 50은 수직(Vertical, VER) 모드를 지시하며, 인트라 예측 모드 인덱스 66은 수직 대각(Vertical Diagonal, VDIA) 모드를 지시한다.
한편, 기 설정된 각도 범위는 현재 블록의 모양에 따라 서로 다르게 설정될 수 있다. 예를 들어, 현재 블록이 직사각형 블록일 경우 시계 방향으로 45도를 초과하거나 -135도 미만 각도를 지시하는 광각 모드가 추가적으로 사용될 수 있다. 현재 블록이 수평 블록일 경우, 각도 모드는 시계 방향으로 (45+offset1)도에서 (-135+offset1)도 사이의 각도 범위(즉, 제2 각도 범위) 이내의 각도를 지시할 수 있다. 이때, 제1 각도 범위를 벗어나는 각도 모드 67 내지 76이 추가적으로 사용될 수 있다. 또한, 현재 블록이 수직 블록일 경우, 각도 모드는 시계 방향으로 (45-offset2)도에서 (-135-offset2)도 사이의 각도 범위(즉, 제3 각도 범위) 이내의 각도를 지시할 수 있다. 이때, 제1 각도 범위를 벗어나는 각도 모드 -10 내지 -1이 추가적으로 사용될 수 있다. 본 발명의 실시예에 따르면, offset1 및 offset2의 값은 직사각형 블록의 너비와 높이 간의 비율에 따라 서로 다르게 결정될 수 있다. 또한, offset1 및 offset2는 양수일 수 있다.
본 발명의 추가적인 실시예에 따르면, 인트라 예측 모드 세트를 구성하는 복수의 각도 모드들은 기본 각도 모드와 확장 각도 모드를 포함할 수 있다. 이때, 확장 각도 모드는 기본 각도 모드에 기초하여 결정될 수 있다.
일 실시예에 따르면, 기본 각도 모드는 기존 HEVC(High Efficiency Video Coding) 표준의 인트라 예측에서 사용되는 각도에 대응하는 모드이고, 확장 각도 모드는 차세대 비디오 코덱 표준의 인트라 예측에서 새롭게 추가되는 각도에 대응하는 모드일 수 있다. 더욱 구체적으로, 기본 각도 모드는 인트라 예측 모드 {2, 4, 6, …, 66} 중 어느 하나에 대응하는 각도 모드이고, 확장 각도 모드는 인트라 예측 모드 {3, 5, 7, …, 65} 중 어느 하나에 대응하는 각도 모드일 수 있다. 즉, 확장 각도 모드는 제1 각도 범위 내에서 기본 각도 모드들 사이의 각도 모드일 수 있다. 따라서, 확장 각도 모드가 지시하는 각도는 기본 각도 모드가 지시하는 각도에 기초하여 결정될 수 있다.
다른 실시예에 따르면, 기본 각도 모드는 기 설정된 제1 각도 범위 이내의 각도에 대응하는 모드이고, 확장 각도 모드는 상기 제1 각도 범위를 벗어나는 광각 모드일 수 있다. 즉, 기본 각도 모드는 인트라 예측 모드 {2, 3, 4, …, 66} 중 어느 하나에 대응하는 각도 모드이고, 확장 각도 모드는 인트라 예측 모드 {-10, -9, …, -1} 및 {67, 68, …, 76} 중 어느 하나에 대응하는 각도 모드일 수 있다. 확장 각도 모드가 지시하는 각도는 대응하는 기본 각도 모드가 지시하는 각도의 반대편 각도로 결정될 수 있다. 따라서, 확장 각도 모드가 지시하는 각도는 기본 각도 모드가 지시하는 각도에 기초하여 결정될 수 있다. 한편, 확장 각도 모드들의 개수는 이에 한정되지 않으며, 현재 블록의 크기 및/또는 모양에 따라 추가적인 확장 각도들이 정의될 수 있다. 예를 들어, 확장 각도 모드는 인트라 예측 모드 {-14, -13, …, -1} 및 {67, 68, …, 80} 중 어느 하나에 대응하는 각도 모드로 정의될 수도 있다. 한편, 인트라 예측 모드 세트에 포함되는 인트라 예측 모드들의 총 개수는 전술한 기본 각도 모드와 확장 각도 모드의 구성에 따라 가변할 수 있다.
상기 실시예들에서, 확장 각도 모드들 간의 간격은 대응하는 기본 각도 모드들 간의 간격에 기초하여 설정될 수 있다. 예를 들어, 확장 각도 모드들 {3, 5, 7, …, 65} 간의 간격은 대응하는 기본 각도 모드들 {2, 4, 6, …, 66} 간의 간격에 기초하여 결정될 수 있다. 또한, 확장 각도 모드들 {-10, -9, …, -1} 간의 간격은 대응하는 반대편의 기본 각도 모드들 {56, 57, …, 65} 간의 간격에 기초하여 결정되고, 확장 각도 모드들 {67, 68, …, 76} 간의 간격은 대응하는 반대편의 기본 각도 모드들 {3, 4, …, 12} 간의 간격에 기초하여 결정될 수 있다. 확장 각도 모드들 간의 각도 간격은 대응하는 기본 각도 모드들 간의 각도 간격과 동일하도록 설정될 수 있다. 또한, 인트라 예측 모드 세트에서 확장 각도 모드들의 개수는 기본 각도 모드들의 개수 이하로 설정될 수 있다.
본 발명의 실시예에 따르면, 확장 각도 모드는 기본 각도 모드를 기초로 시그널링될 수 있다. 예를 들어, 광각 모드(즉, 확장 각도 모드)는 제1 각도 범위 이내의 적어도 하나의 각도 모드(즉, 기본 각도 모드)를 대체할 수 있다. 대체되는 기본 각도 모드는 광각 모드의 반대편에 대응하는 각도 모드일 수 있다. 즉, 대체되는 기본 각도 모드는 광각 모드가 지시하는 각도의 반대 방향의 각도에 대응하거나 또는 상기 반대 방향의 각도로부터 기 설정된 오프셋 인덱스만큼 차이 나는 각도에 대응하는 각도 모드이다. 본 발명의 실시예에 따르면, 기 설정된 오프셋 인덱스는 1이다. 대체되는 기본 각도 모드에 대응하는 인트라 예측 모드 인덱스는 광각 모드에 다시 매핑되어 해당 광각 모드를 시그널링할 수 있다. 예를 들어, 광각 모드 {-10, -9, …, -1}은 인트라 예측 모드 인덱스 {57, 58, …, 66}에 의해 각각 시그널링될 수 있고, 광각 모드 {67, 68, …, 76}은 인트라 예측 모드 인덱스 {2, 3, …, 11}에 의해 각각 시그널링될 수 있다. 이와 같이 기본 각도 모드를 위한 인트라 예측 모드 인덱스가 확장 각도 모드를 시그널링하도록 함으로, 각 블록의 인트라 예측에 사용되는 각도 모드들의 구성이 서로 다르더라도 동일한 세트의 인트라 예측 모드 인덱스들이 인트라 예측 모드의 시그널링에 사용될 수 있다. 따라서, 인트라 예측 모드 구성의 변화에 따른 시그널링 오버헤드가 최소화될 수 있다.
한편, 확장 각도 모드의 사용 여부는 현재 블록의 모양 및 크기 중 적어도 하나에 기초하여 결정될 수 있다. 일 실시예에 따르면, 현재 블록의 크기가 기 설정된 크기보다 클 경우 확장 각도 모드가 현재 블록의 인트라 예측을 위해 사용되고, 그렇지 않을 경우 기본 각도 모드만 현재 블록의 인트라 예측을 위해 사용될 수 있다. 다른 실시예에 따르면, 현재 블록이 정사각형이 아닌 블록인 경우 확장 각도 모드가 현재 블록의 인트라 예측을 위해 사용되고, 현재 블록이 정사각형 블록인 경우 기본 각도 모드만 현재 블록의 인트라 예측을 위해 사용될 수 있다.
한편, 코딩 효율을 높이기 위하여 전술한 레지듀얼 신호를 그대로 코딩하는 것이 아니라, 레지듀얼 신호를 변환하여 획득된 변환 계수 값을 양자화하고, 양자화된 변환 계수를 코딩하는 방법이 사용될 수 있다. 전술한 바와 같이, 변환부는 레지듀얼 신호를 변환하여 변환 계수 값을 획득할 수 있다. 이때, 특정 블록의 레지듀얼 신호는 현재 블록의 전 영역에 분산되어 있을 수 있다. 이에 따라, 레지듀얼 신호에 대한 주파수 영역 변환을 통해 저주파 영역에 에너지를 집중시켜 코딩 효율을 향상시킬 수 있다. 이하에서는, 레지듀얼 신호가 변환 또는 역변환되는 방법에 대해 구체적으로 설명하도록 한다.
도 7은 인코더가 레지듀얼 신호를 변환하는 방법을 구체적으로 나타내는 도면이다. 전술한 바와 같이, 공간 영역의 레지듀얼 신호는 주파수 영역으로 변환될 수 있다. 인코더는 획득된 레지듀얼 신호를 변환하여 변환 계수를 획득할 수 있다. 먼저, 인코더는 현재 블록에 대한 레지듀얼 신호를 포함하는 적어도 하나의 레지듀얼 블록을 획득할 수 있다. 레지듀얼 블록은 현재 블록 또는 현재 블록으로부터 분할된 블록들 중 어느 하나일 수 있다. 본 개시에서, 레지듀얼 블록은 현재 블록의 레지듀얼 샘플들을 포함하는 레지듀얼 어레이(array) 또는 레지듀얼 매트릭스(matrix)로 지칭될 수 있다. 또한, 본 개시에서 레지듀얼 블록은 변환 유닛 또는 변환 블록의 크기와 동일한 크기의 블록을 나타낼 수 있다.
다음으로, 인코더는 변환 커널을 사용하여 레지듀얼 블록을 변환할 수 있다. 레지듀얼 블록에 대한 변환에 사용되는 변환 커널은 수직 변환 및 수평 변환의 분리 가능한 특성을 가지는 변환 커널일 수 있다. 이 경우, 레지듀얼 블록에 대한 변환은 수직 변환 및 수평 변환으로 분리되어 수행될 수 있다. 예를 들어, 인코더는 레지듀얼 블록의 수직 방향으로 변환 커널을 적용하여 수직 변환을 수행할 수 있다. 또한, 인코더는 레지듀얼 블록의 수평 방향으로 변환 커널을 적용하여 수평 변환을 수행할 수 있다. 본 개시에서, 변환 커널은 변환 매트릭스, 변환 어레이, 변환 함수, 변환과 같이 레지듀얼 신호의 변환에 사용되는 파라미터 세트를 지칭하는 용어로 사용될 수 있다. 일 실시예에 따라, 변환 커널은 복수의 사용 가능한 커널들 중 어느 하나일 수 있다. 또한, 수직 변환 및 수평 변환 각각에 대해 서로 다른 변환 타입에 기반한 변환 커널이 사용될 수도 있다.
인코더는 레지듀얼 블록으로부터 변환된 변환 블록을 양자화부로 전달하여 양자화할 수 있다. 이때, 변환 블록은 복수의 변환 계수들을 포함할 수 있다. 구체적으로, 변환 블록은 2차원 배열된 복수의 변환 계수들로 구성될 수 있다. 변환 블록의 크기는 레지듀얼 블록과 마찬가지로 현재 블록 또는 현재 블록으로부터 분할된 블록 중 어느 하나와 동일할 수 있다. 양자화부로 전달된 변환 계수들은 양자화된 값으로 표현될 수 있다.
또한, 인코더는 변환 계수가 양자화되기 전에 추가적인 변환을 수행할 수 있다. 도 7에 도시된 바와 같이, 전술한 변환 방법은 1차 변환(primary transform)으로 지칭되고, 추가적인 변환은 2차 변환(secondary transform)으로 지칭될 수 있다. 2차 변환은 레지듀얼 블록 별로 선택적일 수 있다. 일 실시예에 따라, 인코더는 1차 변환만으로 저주파 영역에 에너지를 집중시키기 어려운 영역에 대해 2차 변환을 수행하여 코딩 효율을 향상시킬 수 있다. 예를 들어, 레지듀얼 값들이 레지듀얼 블록의 수평 또는 수직 방향 이외의 방향에서 크게 나타나는 블록에 대해 2차 변환이 추가될 수 있다. 인트라 예측된 블록의 레지듀얼 값들은 인터 예측된 블록의 레지듀얼 값들에 비해 수평 또는 수직 방향 이외의 방향으로 변화할 확률이 높을 수 있다. 이에 따라, 인코더는 인트라 예측된 블록의 레지듀얼 신호에 대해 2차 변환을 추가적으로 수행할 수 있다. 또한, 인코더는 인터 예측된 블록의 레지듀얼 신호에 대해 2차 변환을 생략할 수 있다.
다른 예로, 현재 블록 또는 레지듀얼 블록의 크기에 따라, 2차 변환 수행 여부가 결정될 수 있다. 또한, 현재 블록 또는 레지듀얼 블록의 크기에 따라 크기가 서로 다른 변환 커널이 사용될 수 있다. 예를 들어, 너비 또는 높이 중 짧은 변의 길이가 제1 기 설정된 길이 보다 크거나 같은 블록에 대해서는 8X8 2차 변환이 적용될 수 있다. 또한, 너비 또는 높이 중 짧은 변의 길이가 제2 기 설정된 길이 보다 크거나 같고, 제1 기 설정된 길이 보다 작은 블록에 대해서는 4X4 2차 변환이 적용될 수 있다. 이때, 제1 기 설정된 길이는 제2 기 설정된 길이 보다 큰 값일 수 있으나, 본 개시가 이에 제한되는 것은 아니다. 또한, 2차 변환은 1차 변환과 달리 수직 변환 및 수평 변환으로 분리되어 수행되지 않을 수 있다. 이러한 2차 변환은 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)으로 지칭될 수 있다.
또한, 특정 영역의 비디오 신호의 경우, 급격한 밝기 변화로 인해 주파수 변환을 수행하여도 고주파 대역 에너지가 줄어들지 않을 수 있다. 이에 따라, 양자화에 의한 압축 성능이 저하될 수 있다. 또한, 레지듀얼 값이 드물게 존재하는 영역에 대해 변환을 수행하는 경우, 인코딩 시간 및 디코딩 시간이 불필요하게 증가할 수 있다. 이에 따라, 특정 영역의 레지듀얼 신호에 대한 변환은 생략될 수 있다. 특정 영역의 레지듀얼 신호에 대한 변환 수행 여부는 특정 영역의 변환과 관련된 신택스 요소에 의해 결정될 수 있다. 예를 들어, 상기 신택스 요소는 변환 스킵 정보(transform skip information)를 포함할 수 있다. 변환 스킵 정보는 변환 스킵 플래그(transform skip flag)일 수 있다. 레지듀얼 블록에 대한 변환 스킵 정보가 변환 스킵을 나타내는 경우, 해당 레지듀얼 블록에 대한 변환이 수행되지 않는다. 이 경우, 인코더는 해당 영역의 변환이 수행되지 않은 레지듀얼 신호를 곧바로 양자화할 수 있다. 도 7을 참조하여 설명된 인코더의 동작들은 도 1의 변환부를 통해 수행될 수 있다.
전술한 변환 관련 신택스 요소들은 비디오 신호 비트스트림으로부터 파싱된 정보일 수 있다. 디코더는 비디오 신호 비트스트림을 엔트로피 디코딩하여 변환 관련 신택스 요소들을 획득할 수 있다. 또한, 인코더는 변환 관련 신택스 요소들을 엔트로피 코딩하여 비디오 신호 비트스트림을 생성할 수 있다.
도 8은 인코더 및 디코더가 변환 계수를 역변환하여 레지듀얼 신호를 획득하는 방법을 구체적으로 나타내는 도면이다. 이하 설명의 편의를 위해, 인코더 및 디코더 각각의 역변환부를 통해 역변환 동작이 수행되는 것으로 설명한다. 역변환부는 역양자화된 변환 계수를 역변환하여 레지듀얼 신호를 획득할 수 있다. 먼저, 역변환부는 특정 영역의 변환 관련 신택스 요소로부터 해당 영역에 대한 역변환이 수행되는지 검출할 수 있다. 일 실시예에 따라, 특정 변환 블록에 대한 변환 관련 신택스 요소가 변환 스킵을 나타내는 경우, 해당 변환 블록에 대한 변환이 생략될 수 있다. 이 경우, 변환 블록에 대해 1차 역변환 및 2차 역변환이 모두 생략될 수 있다. 또한, 역양자화된 변환 계수는 레지듀얼 신호로 사용될 수 있다. 예를 들어, 디코더는 역양자화된 변환 계수를 레지듀얼 신호로 사용하여 현재 블록을 복원할 수 있다. 전술한 1차 역변환은 1차 변환에 대한 역변환을 나타내며, 역 1차 변환(inverse primary transform)으로 지칭될 수 있다. 2차 역변환은 2차 변환에 대한 역변환을 나타내며, 역 2차 변환(inverse secondary transform) 또는 inverse LFNST로 지칭될 수 있다. 본 발명에서 1차 (역)변환은 제1 (역)변환으로 지칭될 수 있으며, 2차 (역)변환은 제2 (역)변환으로 지칭될 수 있다.
다른 일 실시예에 따라, 특정 변환 블록에 대한 변환 관련 신택스 요소가 변환 스킵을 나타내지 않을 수 있다. 이 경우, 역변환부는 2차 변환에 대한 2차 역변환 수행 여부를 결정할 수 있다. 예를 들어, 변환 블록이 인트라 예측된 블록의 변환 블록인 경우, 변환 블록에 대한 2차 역변환이 수행될 수 있다. 또한, 변환 블록에 대응하는 인트라 예측 모드에 기초하여 해당 변환 블록에 사용되는 2차 변환 커널이 결정될 수 있다. 다른 예로, 변환 블록의 크기에 기초하여 2차 역변환 수행 여부가 결정될 수도 있다. 2차 역변환은 역양자화 과정 이후 1차 역변환이 수행되기 전에 수행될 수 있다.
역변환부는 역양자화된 변환 계수 또는 2차 역변환된 변환 계수에 대한 1차 역변환을 수행할 수 있다. 1차 역변환의 경우, 1차 변환과 마찬가지로 수직 변환 및 수평 변환으로 분리되어 수행될 수 있다. 예를 들어, 역변환부는 변환 블록에 대한 수직 역변환 및 수평 역변환을 수행하여 레지듀얼 블록을 획득할 수 있다. 역변환부는 변환 블록의 변환에 사용된 변환 커널에 기초하여 변환 블록을 역변환할 수 있다. 예를 들어, 인코더는 복수의 사용 가능한 변환 커널들 중 현재 변환 블록에 적용된 변환 커널을 지시하는 정보를 명시적 또는 묵시적으로 시그널링할 수 있다. 디코더는 시그널링된 변환 커널을 나타내는 정보를 이용하여 복수의 사용 가능한 변환 커널들 중 변환 블록의 역변환에 사용될 변환 커널을 선택할 수 있다. 역변환부는 변환 계수에 대한 역변환을 통해 획득된 레지듀얼 신호를 이용하여 현재 블록을 복원할 수 있다.
한편, 픽쳐의 레지듀얼 신호의 분포는 영역 별로 다를 수 있다. 예를 들어, 특정 영역 내의 레지듀얼 신호는 예측 방법에 따라 값의 분포가 달라질 수 있다. 복수의 서로 다른 변환 영역들에 대해 동일한 변환 커널을 사용하여 변환을 수행하는 경우, 변환 영역 내의 값들의 분포와 특성에 따라 변환 영역 별로 코딩 효율이 달라질 수 있다. 이에 따라, 복수의 사용 가능한 변환 커널 중 특정 변환 블록의 변환에 사용되는 변환 커널을 적응적으로 선택하는 경우 코딩 효율이 추가적으로 향상될 수 있다. 즉, 인코더 및 디코더는 비디오 신호의 변환에 있어서, 기본 변환 커널 이외의 변환 커널을 추가적으로 사용 가능하도록 설정할 수 있다. 변환 커널을 적응적으로 선택하는 방법은 적응적 다중 코어 변환(adaptive multiple core transform, AMT) 또는 다중 변환 선택(multiple transform selection, MTS)으로 지칭될 수 있다. 본 개시에서는 설명의 편의를 위해 변환 및 역변환을 통틀어 변환이라 지칭한다. 또한, 변환 커널 및 역변환 커널을 통틀어 변환 커널이라 지칭한다.
원본 신호와 화면간 예측 또는 화면내 예측을 통해 생성한 예측 신호의 차이 신호인 잔차(레지듀얼) 신호는 픽셀 도메인 전 영역에 에너지가 분산되어 있으므로, 잔차 신호의 픽셀 값 자체가 부호화될 경우, 압축 효율이 떨어지는 문제가 발생한다. 따라서 픽셀 도메인의 잔차 신호를 변환 부호화를 통해 주파수 도메인의 저주파 영역으로 에너지를 집중시키는 과정이 필요하다.
HEVC(high efficiency video coding) 표준에서는 신호가 픽셀 도메인에서 고르게 분포하는 경우(이웃하는 픽셀 값이 유사한 경우)에 효율적인 DCT-II(discrete cosine transform type-II)를 대부분 사용하고, 화면내 예측된 4x4 블록에만 DST-VII(discrete sine transform type-VII)을 한정적으로 사용하여 픽셀 도메인의 잔차 신호를 주파수 영역으로 변환하였다. DCT-II 변환의 경우, 화면간 예측을 통해 생성한 잔차 신호 (픽셀 도메인에서 에너지가 고르게 분포하는 경우)에 적합할 수 있다. 그러나, 화면내 예측을 통해 생성한 잔차 신호의 경우, 현재 부호화 유닛 주변의 복원된 참조 샘플을 사용하여 예측하는 화면내 예측의 특성 상, 참조 샘플과 멀어질수록 잔차 신호의 에너지가 증가하는 경향을 보일 수 있다. 따라서, 잔차 신호를 주파수 영역으로 변환시키기 위해 DCT-II 변환만이 사용되는 경우, 높은 부호화 효율이 달성될 수 없다.
AMT는 예측 방법에 따라 여러 개의 기 설정된 변환 커널 중 적응적으로 변환 커널을 선택하는 변환 기법이다. 어떤 예측 방법이 사용되었는지에 따라 잔차 신호의 픽셀 도메인에서의 패턴 (수평 방향으로 신호의 특성, 수직 방향으로 신호의 특성)이 달라지기 때문에, 단순히 DCT-II만이 잔차 신호의 변환을 위해 사용되었을 때보다 높은 부호화 효율을 기대할 수 있다. 본 발명에서, AMT는 그 명칭에 제한되지 않으며, MTS(multiple transform selection)으로 지칭될 수 있다.
도 9는 1차 변환에서 사용될 수 있는 복수의 변환 커널에 대한 기저 함수를 나타낸 도면이다.
구체적으로, 도 9는 AMT에서 사용하는 변환 커널의 기저 함수를 도시한 도면으로, AMT에 적용되는 DCT-II, DCT-V(discrete cosine transform type-V), DCT-VIII(discrete cosine transform type-VIII), DST-I(discrete sine transform type-I), DST-VII 커널의 수식을 나타낸 것이다.
DCT와 DST는 각각 코사인, 사인의 함수로 표현이 가능하며, 샘플 수 N에 대한 변환 커널의 기저 함수를 Ti(j)로 표현할 경우, 인덱스 i는 주파수 도메인에서의 인덱스를 나타내며, 인덱스 j는 기저 함수 내의 인덱스를 나타낸다. 즉, i가 작아질수록 저주파 기저 함수를 나타내며, i가 커질수록 고주파 기저 함수를 나타낸다. 기저 함수 Ti(j)는 2차원 행렬로 표현했을 때, i 번째 행의 j 번째 요소를 나타낼 수 있으며, 도 9에 도시한 변환 커널은 모두 분리 가능한 특성을 가지고 있으므로, 잔차 신호 X에 대하여 수평 방향과 수직 방향에 각각 변환을 수행할 수 있다. 즉, 잔차 신호 블록을 X라 하고, 변환 커널 행렬을 T라 했을 때, 잔차 신호 X에 대한 변환은 TXT'으로 나타낼 수 있다. 이때, T'는 변환 커널 행렬 T의 전치(transpose) 행렬을 의미한다.
도 9에 도시된 기저 함수에 의해 정의되는 변환 매트릭스의 값들은 정수 형태가 아닌 소수 형태일 수 있다. 소수 형태의 값들은 비디오 인코딩 장치 및 디코딩 장치에 하드웨어적으로 구현되기 어려울 수 있다. 따라서 소수 형태의 값들을 포함하는 원형(original) 변환 커널로부터 정수 근사화된 변환 커널이 비디오 신호의 인코딩 및 디코딩에 사용될 수 있다. 정수 형태의 값들을 포함하는 근사화된 변환 커널은 원형 변형 커널에 대한 스케일링 및 라운딩을 통해 생성될 수 있다. 근사화된 변환 커널이 포함하는 정수 값은 기 설정된 개수의 비트로 표현 가능한 범위 내의 값일 수 있다. 기 설정된 개수의 비트는 8-bit 또는 10-bit일 수 있다. 근사화에 따라 DCT와 DST의 정규 직교 (orthonormal) 성질은 유지되지 않을 수 있다. 그러나, 이에 따른 부호화 효율 손실이 크지 않으므로, 변환 커널을 정수 형태로 근사화 시키는 것이 하드웨어적 구현 측면에서 유리할 수 있다.
도 7 내지 도 8에서 전술한 1차 변환 및 역 1차 변환의 경우, 분리 가능한 변환 커널에 대하여 2차원 행렬로 표현하여 수직 방향과 수평 방향에 각각 변환을 수행하는 것이므로 2차원 행렬 곱 연산이 두 차례 수행되는 것으로 볼 수 있다. 이는 많은 연산량을 수반하므로 구현 관점에서 문제가 될 수 있다. 따라서 구현 관점에서 DCT-II와 같이 버터플라이 구조(butterfly structure) 또는 하프 버터플라이 구조(half butterfly structure)와 하프 매트릭스 곱셈기(half matrix multiplier)의 조합 구조를 사용하여 연산량을 줄일 수 있는지 또는 해당 변환 커널을 구현 복잡도가 낮은 변환 커널들로 분해가 가능한지 (복잡도가 낮은 행렬들의 곱으로 해당 커널을 표현할 수 있는지)가 중요한 이슈가 될 수 있다. 그리고 변환 커널의 요소(변환 커널의 행렬 요소)들은 연산을 위해 메모리에 저장되어 있어야하므로, 커널 행렬 저장을 위한 메모리 용량도 구현에 고려되어야 한다. 이러한 관점에서 보았을 때, DST-VII과 DCT-VIII의 구현 복잡도는 높은 편이므로 DST-VII, DCT-VIII과 유사한 특성을 보이면서 구현 복잡도가 낮은 변환은 DST-VII과 DCT-VIII을 대체할 수 있다.
DST-IV(discrete sine transform type-IV)와 DCT-IV(discrete cosine transform type-IV)는 각각 DST-VII, DCT-VIII을 대체할 수 있는 후보로 볼 수 있다. 샘플 수 2N에 대한 DCT-II 커널은 샘플 수 N에 대한 DCT-IV 커널을 포함하고 있고, 샘플 수 N에 대한 DST-IV 커널은 샘플 수 N에 대한 DCT-IV 커널로부터 간단한 연산인 부호 반전과 해당 기저 함수를 역순으로 정렬함으로써 구현할 수 있으므로, 샘플수 2N에 대한 DCT-II로부터 간단하게 샘플수 N에 대한 DST-IV와 DCT-IV를 유도할 수 있다.
원본 신호와 예측 신호의 차이인 잔차 신호는 예측 방법에 따라 신호의 에너지 분포가 변하는 특성을 보이므로, AMT 또는 MTS와 같이 예측 방법에 따라 변환 커널을 적응적으로 선택할 경우 부호화 효율을 향상시킬 수 있다. 또한 도 7 내지 도 8에서 전술한 바와 같이, 1차 변환 및 역 1차 변환(1차 변환에 상응하는 역변환) 이외에 추가적인 변환인 2차 변환 및 역 2차 변환(2차 변환에 상응하는 역변환)을 수행하여 부호화 효율을 향상시킬 수 있다. 이러한 2차 변환은 특히 잔차 신호 블록의 수평 또는 수직 방향이 아닌 방향으로 강한 에너지가 존재할 가능성이 높은 화면내 예측된 잔차 신호 블록에 대하여 에너지 압축(energy compaction)을 향상시킬 수 있다. 전술한 바와 같이, 이러한 2차 변환은 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)으로 지칭될 수 있다. 그리고, 상기 1차 변환은 코어 변환(core transform)으로 지칭될 수 있다.
도 10은 본 발명의 일 실시예에 따른 2차 변환을 수행하는 복호화기에서 잔차 신호를 복원하는 과정을 도시하는 블록도이다. 먼저, 엔트로피 코더는 비트스트림으로부터 잔차 신호와 관련된 syntax 요소를 파싱(parsing)하고 역이진화(de-binarization)를 통해 양자화 계수가 획득될 수 있다. 디코더는, 복원된 양자화 계수에 역양자화를 수행하여 변환 계수를 획득할 수 있으며, 변환 계수에 역 변환을 수행하여 잔차 신호 블록을 복원할 수 있다. 역변환은 변환 생략(transform skip, TS)이 적용되지 않는 블록에 적용될 수 있다. 역변환은 복호화기에서 2차 역변환, 1차 역변환 순으로 수행될 수 있다. 이때, 2차 역변환은 생략될 수도 있다. 화면간 예측된 블록에는 2차 역변환이 수행되지 않고, 생략될 수 있다. 또는 블록 크기 조건에 따라 2차 역변환이 생략될 수 있다. 복원된 잔차 신호는 양자화 오차가 포함된 것으로, 2차 변환은 잔차 신호의 에너지 분포를 변화시킴으로써 1차 변환만을 수행했을 때보다 양자화 오차를 줄일 수 있다.
도 11은 본 발명의 일 실시예에 따른 2차 변환을 수행하는 복호화기에서 잔차 신호를 복원하는 과정을 블록 레벨에서 도시하는 도면이다. 잔차 신호의 복원은 변환 유닛(transform unit, TU) 또는 TU 내의 서브-블록 단위로 수행될 수 있다. 도 11은 2차 변환이 적용되는 잔차 신호 블록의 복원 과정을 도시한 것으로, 역양자화된 변환 계수 블록에 대하여 2차 역변환이 먼저 수행될 수 있다. 디코더는, TU 내의 WxH (W: 너비, 수평 샘플 수, H: 높이, 수직 샘플 수)개의 모든 샘플들에 대하여 2차 역변환을 수행할 수도 있지만, 복잡도를 고려하여 가장 영향력이 높은 저 주파 영역인 좌-상단 W'xH' 크기의 서브-블록에 대해서만 2차 역변환을 수행할 수도 있다. 이때, W'은 W보다 작거나 같다. H'은 H보다 작거나 같다. 좌 상단 서브-블록 사이즈인 W'xH'은 TU 크기에 따라 다르게 설정될 수 있다. 예를 들어, min(W, H)=4인 경우, W'와 H'는 모두 4로 설정될 수 있다. min(W, H)>=8인 경우, W'와 H'는 모두 8로 설정될 수 있다. min(x, y)는 x가 y보다 작거나 같은 경우 x를 반환하고, x가 y보다 큰 경우 y를 반환하는 연산을 나타낸다. 디코더는, 2차 역변환을 수행한 후, TU 내의 좌-상단 W'xH' 크기의 서브-블록 변환 계수를 획득할 수 있고, 전체 WxH 크기의 변환 계수 블록에 대하여 1차 역변환을 수행하여 잔차 신호 블록을 복원할 수 있다.
2차 변환의 활성화 또는 적용 가능 여부는 시퀀스 파라미터 세트(sequence parameter set, SPS), 픽쳐 파라미터 세트(picture parameter set, PPS), 픽쳐 헤더, 슬라이스 헤더, 타일 그룹 헤더 등의 상위 레벨 신택스(High Level Syntax, HLS) RBSP 중의 적어도 어느 하나에 1-bit 플래그 형태로 포함되어 지시될 수 있다. 추가적으로, 2차 변환이 적용 가능한 경우, HLS RBSP 중의 적어도 어느 하나에 1-bit 플래그 형태로 2차 변환에서 고려하는 좌 상단 서브-블록의 사이즈가 지시될 수도 있다. 예를 들어, 4x4, 8x8 크기의 서브-블록을 고려하는 2차 변환에 8x8 크기의 서브-블록이 사용될 수 있는지는 HLS RBSP 중의 적어도 어느 하나에 1-bit 플래그로 지시될 수 있다.
2차 변환의 활성화 또는 적용 가능 여부가 상위 레벨(예: HLS)에서 지시되는 경우, 2차 변환이 적용되는지 여부는, 부호화 유닛(coding unit, CU) 레벨에서 1-bit 플래그로 지시될 수 있다. 또한 현재 블록에 2차 변환이 적용되는 경우, 부호화 유닛 레벨에서 2차 변환에 사용되는 변환 커널을 나타내는 인덱스가 지시될 수 있다. 디코더는 예측 모드에 따라 기 설정된 변환 커널 세트 내에서 해당 인덱스가 지시하는 변환 커널을 사용하여 2차 변환이 적용되는 블록에 2차 역변환을 수행할 수 있다. 변환 커널을 나타내는 인덱스는 절삭형 단항(truncated unary) 또는 고정 길이 이진화 방법을 사용하여 이진화될 수 있다. CU 레벨에서 2차 변환이 적용되는지 여부를 나타내는 1-bit 플래그와 2차 변환에 사용되는 변환 커널을 지시하는 인덱스는 하나의 신택스 요소를 사용하여 지시될 수도 있으며, 본 명세서에서는 이를 lfnst_idx[x0][y0] 또는 lfnst_idx로 지칭하나, 본 발명이 이러한 명칭에 제한되지 않는다. 일 실시예로서, lfnst_idx[x0][y0]의 첫 번째 비트는 CU 레벨에서 2차 변환의 적용 여부를 나타낼 수 있다. 그리고, 나머지 비트는 2차 변환에 사용된 변환 커널을 지시하는 인덱스를 나타낼 수 있다. 즉, lfnst_idx[x0][y0]는 2차 변환(LFNST)의 적용 여부 및 2차 변환이 적용되는 경우에 사용되는 변환 커널을 지시하는 인덱스를 나타낼 수 있다. 이러한 lfnst_idx[x0][y0]는 컨텍스트(context)에 따라 적응적으로 부호화하는 CABAC(context-based adeptive binary arithmetic coding), CAVLC (context-based adaptive variable length coding) 등의 엔트로피 코더를 통해 부호화될 수 있다. 현재 CU에 대하여 CU 크기보다 작은 다수의 TU로 분할되는 경우, 2차 변환은 적용되지 않을 수 있고, 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]는 시그널링 없이 0으로 설정될 수 있다. 예를 들어, lfnst_idx[x0][y0]가 0인 경우, 2차 변환이 적용되지 않는 것을 나타낼 수 있다. 반면, lfnst_idx[x0][y0]가 0보다 큰 경우, 2차 변환이 적용되는 것을 나타낼 수 있으며, lfnst_idx[x0][y0]에 기초하여 2차 변환에 사용된 변환 커널이 선택될 수 있다.
전술한 바와 같이, 코딩 트리 유닛, 쿼드 트리의 리프 노드, 멀티-타입 트리의 리프 노드는 코딩 유닛이 될 수 있다. 코딩 유닛이 최대 변환 길이에 비해 크지 않은 경우, 해당 코딩 유닛은 더 이상의 분할 없이 예측 및/또는 변환의 단위로 사용될 수 있다. 일 실시예로서, 현재 코딩 유닛의 너비 또는 높이가 최대 변환 길이보다 큰 경우, 현재 코딩 유닛은 분할에 관한 명시적 시그널링 없이 복수의 변환 유닛으로 분할될 수 있다. 코딩 유닛의 크기가 최대 변환 크기보다 큰 경우 시그널링 없이 복수 개의 변환 블록으로 분할될 수 있다. 이 경우 2차 변환을 적용하게 되면 성능 저하 및 복잡도가 증가할 수 있기 때문에, 2차 변환이 적용되는 최대 코딩 블록(또는 코딩 블록의 최대 크기)은 제한적일 수 있다. 최대 코딩 블록의 크기는 최대 변환 크기와 같을 수 있다. 또는 최대 코딩 블록의 크기는 기 설정된 코딩 블록의 크기로 정의될 수 있다. 일 실시예로서, 기 설정된 값은 64, 32, 16일 수 있으나, 본 발명이 이에 한정되지 않는다. 이때, 기 설정된 값(또는 최대 변환 크기)과 비교되는 값은 긴 변의 길이 또는 총 샘플의 개수로 정의될 수 있다.
한편, 1차 변환에서 사용되는 DCT-II, DST-VII, DCT-VIII 기저 함수에 기초한 변환 커널은 분리 가능한(separable) 특성을 가진다. 따라서, NxN 크기의 잔차 블록 내 샘플들에 대하여 수직/수평 방향으로의 두 번의 변환이 수행될 수 있으며, 변환 커널의 사이즈는 NxN일 수 있다. 반면, 2차 변환의 경우, 변환 커널이 분리 불가능한(non-separable) 특성을 가진다. 따라서 2차 변환에서 고려되는 샘플 수가 nxn인 경우, 한번의 변환이 수행될 수 있다. 이때, 변환 커널의 사이즈는 (n^2)x(n^2)일 수 있다. 예를 들어, 좌-상단 4x4 계수 블록에 2차 변환을 수행하는 경우, 16x16 크기의 변환 커널이 적용될 수 있다. 그리고, 좌-상단 8x8 계수 블록에 2차 변환을 수행하는 경우, 64x64 크기의 변환 커널이 적용될 수 있다. 64x64 크기의 변환 커널은 많은 양의 곱셈 연산을 수반하므로, 인코더와 디코더에 큰 부담이 될 수 있다. 따라서, 2차 변환에서 고려되는 샘플 수가 줄어드는 경우, 연산량과 변환 커널 저장에 필요한 메모리를 줄일 수 있다.
도 12는 본 발명의 일 실시예에 따른 감소된 샘플 수를 이용하는 2차 변환을 적용하는 방법을 도시한 도면이다. 본 발명의 실시예에 따르면, 2차 변환은 2차 변환 커널 행렬과 1차 변환된 계수 벡터의 곱으로 표현될 수 있으며, 1차 변환된 계수를 또 다른 공간으로 매핑하는 것으로 해석할 수 있다. 이때, 2차 변환되는 계수의 개수를 줄일 경우, 즉, 2차 변환 커널을 구성하는 기저 벡터의 수를 줄일 경우, 2차 변환에서 필요한 연산량과 변환 커널 저장에 필요한 메모리 용량을 줄일 수 있다. 예를 들어, 좌-상단 8x8 계수 블록에 2차 변환을 수행할 때, 2차 변환되는 계수의 개수를 16개로 줄이는 경우, 16(행)x64(열) 크기(또는 16(행)x48(열) 크기)의 2차 변환 커널이 적용될 수 있다. 인코더의 변환부는 변환 커널 매트릭스를 구성하는 각각의 행 벡터와 1차 변환된 계수 벡터와의 내적(inner product)을 통해 2차 변환된 계수 벡터를 획득할 수 있다. 인코더 및 디코더의 역변환부는 변환 커널 매트릭스를 구성하는 각각의 열 벡터와 2차 변환된 계수 벡터와의 내적을 통해 1차 변환된 계수 벡터를 획득할 수 있다.
도 12를 참조하면, 인코더는 먼저 잔차 신호 블록에 대하여 1차 변환(forward primary transform)을 수행하여 1차 변환된 계수 블록을 얻을 수 있다. 1차 변환된 계수 블록의 사이즈를 MxN이라 하였을 때, min(M, N)의 값이 4인 인트라 예측된 블록에 대하여, 1차 변환된 계수 블록의 좌-상단 4x4 샘플들에 4x4 2차 변환(forward secondary transform)이 수행될 수 있다. min(M, N)의 값이 8 이상인 인트라 예측된 블록에 대해서는, 1차 변환된 계수 블록의 좌-상단 8x8 샘플들에 8x8 2차 변환이 수행될 수 있다. 8x8 2차 변환의 경우, 많은 연산량과 메모리를 수반하므로, 8x8 샘플들 중의 일부만이 활용될 수도 있다. 일 실시예에서, 부호화 효율 향상을 위하여, min(M, N)의 값이 4이고, M 또는 N이 8보다 큰 직사각형 블록에 대하여 (예를 들어, 4x16, 16x4 크기의 직사각형 블록), 1차 변환된 계수 블록 내 두 개의 좌-상단 4x4 서브 블록에 각각 4x4 2차 변환이 수행될 수도 있다.
2차 변환은 2차 변환 커널 행렬과 입력 벡터의 곱으로 계산될 수 있으므로, 먼저 인코더는 1차 변환된 계수 블록의 좌-상단 서브 블록 내의 계수들을 벡터 형태로 구성할 수 있다. 벡터로 구성하는 방법은 인트라 예측 모드에 의존적일 수 있다. 예를 들어, 인트라 예측 모드가 앞서 도 6에서 도시한 인트라 예측 모드 중에서, 34번 각도 모드 이하인 경우, 인코더는 1차 변환된 계수 블록의 좌-상단 서브 블록을 수평 방향으로 스캔하여 계수들을 벡터로 구성할 수 있다. 1차 변환된 계수 블록의 좌-상단 nxn 블록의 i번째 행, j번째 열의 원소를 x(I, j)라고 표현할 경우, 벡터화된 계수는 [x(0, 0), x(0, 1), ..., x(0, n-1), x(1, 0), x(1, 1), …, x(1, n-1), ..., x(n-1, 0), x(n-1, 1), ..., x(n-1, n-1)]로 표현할 수 있다. 반면, 인트라 예측 모드가 34번 각도 모드보다 큰 경우, 1차 변환된 계수 블록의 좌-상단 서브 블록을 수직 방향으로 스캔하여 계수들을 벡터로 구성할 수 있다. 벡터화된 계수는 [x(0, 0), x(1, 0), ..., x(n-1, 0), x(0, 1), x(1, 1), ..., x(n-1, 1), ..., x(0, n-1), x(1, n-1), ..., x(n-1, n-1)]로 표현될 수 있다. 연산량을 줄이기 위하여, 8x8 2차 변환에서 8x8 샘플들 중의 일부만을 활용하는 경우, 상기 기술한 벡터 구성 방법에서 i>3이고 j>3인 계수 x_ij는 포함되지 않을 수도 있다. 이 경우, 4x4 2차 변환에서는 16개의 1차 변환된 계수가 2차 변환의 입력이 될 수 있다. 8x8 2차 변환에서는 48개의 1차 변환된 계수가 2차 변환의 입력이 될 수 있다.
인코더는 벡터화된 1차 변환 계수 블록의 좌-상단 서브 블록 샘플들과 2차 변환 커널 매트릭스와의 곱을 통해 2차 변환된 계수들을 획득할 수 있다. 2차 변환에 적용되는 2차 변환 커널은 변환 유닛 또는 변환 블록의 사이즈, 인트라 모드 및 변환 커널을 지시하는 신택스 요소에 따라 결정될 수 있다. 전술한 바와 같이, 2차 변환되는 계수의 개수가 줄어들면, 연산량과 변환 커널 저장에 필요한 메모리가 줄어들 수 있다. 따라서, 현재 변환 블록의 사이즈에 따라 2차 변환되는 계수의 개수는 결정될 수 있다. 예를 들어, 인코더는 4x4 블록의 경우, 길이가 16인 벡터와 8(행)x16(열) 변환 커널 매트릭스의 곱을 통해 길이가 8인 계수 벡터를 획득할 수 있다. 8(행)x16(열) 변환 커널 매트릭스는 16(행)x16(열) 변환 커널 매트릭스를 구성하는 첫 번째 기저 벡터부터 여덟 번째 기저 벡터에 기초하여 획득될 수 있다. 인코더는 4xN 또는 Mx4 블록(N과 M은 8 이상)의 경우, 길이가 16인 벡터와 16(행)x16(열) 변환 커널 매트릭스의 곱을 통해 길이가 16인 계수 벡터를 획득할 수 있다. 인코더는 8x8 블록의 경우, 길이가 48인 벡터와 8(행)x48(열) 변환 커널 매트릭스의 곱을 통해 길이가 8인 계수 벡터를 획득할 수 있다. 8(행)x48(열) 변환 커널 매트릭스는 16(행)x48(열) 변환 커널 매트릭스를 구성하는 첫 번째 기저 벡터부터 여덟 번째 기저 벡터에 기초하여 획득될 수 있다. 인코더는 8x8을 제외한 MxN 블록(M과 N은 8 이상)의 경우, 길이가 48인 벡터와 16(행)x48(열) 변환 커널 매트릭스의 곱을 통해 길이가 16인 계수 벡터를 획득할 수 있다.
본 발명의 일 실시예에 따르면, 2차 변환된 계수들은 벡터 형태이므로, 2차원 형태의 데이터로 표현될 수 있다. 기 설정된 스캔 순서에 따라 2차 변환된 계수들은 좌-상단 계수 서브-블록으로 구성될 수 있다. 일 실시예에서, 기 설정된 스캔 순서는 우상측 대각(up-right diagonal) 스캔 순서일 수 있다. 본 발명은 이에 국한되지 않으며, 우상측 대각 스캔 순서는 후술하는 도 13, 도 14에서 기술하는 방법에 기초하여 결정될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 2차 변환된 계수들을 포함하는 전체 변환 유닛 크기의 변환 계수들은 양자화(quantization) 이후, 비트스트림에 포함되어 전송될 수 있다. 비트스트림은 2차 변환과 관련된 신택스 요소를 포함할 수 있다. 구체적으로, 비트스트림은 현재 블록에 2차 변환이 적용되는지 여부에 관한 정보 및 상기 현재 블록에 적용되는 변환 커널을 지시하는 정보를 포함할 수 있다.
디코더는 먼저 비트스트림으로부터 양자화된 변환 계수들을 파싱할 수 있고, 역-양자화(de-quantization)를 통해 변환 계수들을 획득할 수 있다. 역-양자화는 스케일링(scaling)으로 지칭될 수 있다. 디코더는 2차 변환과 관련된 신택스 요소에 기반하여 현재 블록에 2차 역변환이 수행될지를 결정할 수 있다. 현재 변환 유닛 또는 변환 블록에 2차 역변환이 적용되는 경우, 변환 유닛 또는 변환 블록의 사이즈에 따라 8개 또는 16개의 변환 계수가 2차 역변환의 입력이 될 수 있다. 2차 역변환의 입력이 되는 계수의 개수는 인코더의 2차 변환에서 출력되는 계수의 개수와 일치할 수 있다. 예를 들어, 변환 유닛 또는 변환 블록의 사이즈가 4x4 또는 8x8인 경우, 8개의 변환 계수가 2차 역변환의 입력이 될 수 있으며, 그렇지 않은 경우, 16개의 변환 계수가 2차 역변환의 입력이 될 수 있다. 변환 유닛의 크기가 MxN일 때, min(M, N)의 값이 4인 인트라 예측된 블록에 대하여 변환 계수 블록의 좌-상단 4x4 서브 블록의 16개 또는 8개의 계수에 4x4 2차 역변환이 수행될 수 있다. min(M, N)이 8 이상인 인트라 예측된 블록에 대해서는 변환 계수 블록의 좌-상단 4x4 서브 블록의 16개 또는 8개의 계수에 8x8 2차 역변환이 수행될 수 있다. 일 실시예에서, 부호화 효율 향상을 위하여 min(M,N)이 4이고, M 또는 N이 8보다 큰 경우 (예를 들어, 4x16, 16x4 크기의 직사각형 블록), 변환 계수 블록 내 두 개의 좌-상단 4x4 서브 블록에 각각 4x4 2차 역변환이 수행될 수도 있다.
본 발명의 일 실시예에 따르면, 2차 역변환은 2차 역변환 커널 행렬과 입력 벡터의 곱으로 계산이 될 수 있으므로, 디코더는 먼저 입력이 되는 역-양자화된 변환 계수 블록을 기 설정된 스캔 순서에 따라 벡터 형태로 구성할 수 있다. 일 실시예에서, 기 설정된 스캔 순서는 우상측 대각(up-right diagonal) 스캔 순서일 수 있으며, 본 발명은 이에 국한되지 않으며, 우상측 대각 스캔 순서는 후술하는 도 13, 도 14에서 기술하는 방법에 기초하여 결정될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 디코더는 벡터화된 변환 계수와 2차 역변환 커널 매트릭스의 곱을 통해 1차 변환된 계수를 획득할 수 있다. 이때, 2차 역변환 커널은 변환 유닛 또는 변환 블록의 사이즈, 인트라 모드 및 변환 커널을 지시하는 신택스 요소에 따라 결정될 수 있다. 2차 역변환 커널 행렬은 2차 변환 커널 행렬의 전치 행렬일 수 있다. 구현의 복잡도를 고려하여 커널 행렬의 원소는 10-bit 또는 8-bit 정확도로 표현되는 정수일 수 있다. 현재 변환 블록의 사이즈에 기초하여 2차 역변환의 출력이 되는 벡터의 길이가 결정될 수 있다. 예를 들어, 4x4 블록의 경우, 길이가 8인 벡터와 8(행)x16(열) 변환 커널 매트릭스의 곱을 통해 길이가 16인 계수 벡터가 획득될 수 있다. 8(행)x16(열) 변환 커널 매트릭스는 16(행)x16(열) 변환 커널 매트릭스를 구성하는 첫 번째 기저 벡터부터 여덟 번째 기저 벡터에 기초하여 획득될 수 있다. 4xN 또는 MxN 블록(N과 M은 8 이상)의 경우, 길이가 16인 벡터와 16(행)x16(열) 변환 커널 매트릭스의 곱을 통해 길이가 16인 계수 벡터가 획득될 수 있다. 8x8 블록의 경우, 길이가 8인 벡터와 8(행)x48(열) 변환 커널 매트릭스의 곱을 통해 길이가 48인 계수 벡터를 획득할 수 있다. 8(행)x48(열) 변환 커널 매트릭스는 16(행)x48(열) 변환 커널 매트릭스를 구성하는 첫 번째 기저 벡터부터 여덟 번째 기저 벡터에 기초하여 획득될 수 있다. 8x8을 제외한 MxN 블록(M과 N은 8 이상)의 경우, 길이가 16인 벡터와 16(행)x48(열) 변환 커널 매트릭스의 곱을 통해 길이가 48인 계수 벡터를 획득할 수 있다.
일 실시예에서, 2차 역변환을 통해 획득한 1차 변환 계수는 벡터 형태이므로, 디코더는 이를 다시 2차원 형태의 데이터로 표현할 수 있으며, 이는 인트라 모드에 의존적일 수 있다. 이때 인코더에서 적용한 인트라 모드에 기반하는 매핑 관계가 동일하게 적용될 수 있다. 전술한 바와 같이, 인트라 예측 모드가 34번 각도 모드 이하인 경우, 디코더는 2차 역변환된 계수 벡터를 수평 방향으로 스캔하여 2차원 형태의 변환 계수 어레이를 획득할 수 있다. 디코더는 인트라 예측 모드가 34번 각도 모드보다 큰 경우, 2차 역변환된 계수 벡터를 수직 방향으로 스캔하여 2차원 형태의 변환 계수 어레이를 획득할 수 있다. 디코더는 2차 역변환을 수행하여 획득한 변환 계수를 포함하는 전체 변환 유닛 또는 변환 블록 사이즈의 변환 계수 블록에 대하여 1차 역변환을 수행하여 잔차 신호를 획득할 수 있다.
도 12에서는 도시하지 않았으나, 변환 또는 역변환 이후 변환 커널로 인해 증가하는 스케일을 보정해 주기 위하여, 변환 또는 역변환을 적용함에 있어 비트 쉬프트 연산을 이용한 스케일링 과정이 포함될 수도 있다.
도 13은 본 발명의 일 실시예에 따른 우상측 대각(up-right diagonal) 스캔 순서의 결정 방법을 예시하는 도면이다. 본 발명의 실시예에 따르면, 인코딩 또는 디코딩 시에 스캔 순서를 초기화하는 과정이 수행될 수 있다. 블록 사이즈에 따라 스캔 순서 정보를 포함하는 배열의 초기화가 수행될 수 있다. 구체적으로, log2BlockWidth, log2BlockHeight의 조합에 대하여 1<<log2BlockWidth, 1<<log2BlockHeight을 입력으로 하는 도 13에 도시된 우상측 대각 스캔 순서 배열 초기화 과정이 호출(또는 수행)될 수 있다. 우상측 대각 스캔 순서 배열 초기화 과정의 출력은 DiagScanOrder[log2BlockWidth][log2BlockHeight]에 할당될 수 있다. 여기서, log2BlockWidth 및 log2BlockHeight는 각각 블록의 너비 및 높이에 대하여 밑이 2이 로그를 취한 값을 나타내는 변수이며, [0, 4] 범위의 값일 수 있다.
도 13에 도시된 우상측 대각 스캔 순서 배열 초기화 과정을 통해, 인코더/디코더는 입력 받은 블록의 너비인 blkWidth, 블록의 높이인 blkHeight에 대하여 배열 diagScan[sPos][sComp]를 출력할 수 있다. 배열의 인덱스인 sPos는 스캔 포지션(스캔 인덱스)을 나타낼 수 있으며, [0, blkWidth*blkHeight-1] 범위의 값일 수 있다. 배열의 인덱스인 sComp가 0인 경우, sPos는 수평 컴포넌트(x)를 나타낼 수 있으며, sComp가 1인 경우, sPos는 수직 컴포넌트(y)를 나타낼 수 있다. 도 13에 도시된 알고리즘은 우상측 대각 스캔 순서에 의하여 스캔 포지션 sPos일 때의 2차원 좌표 상의 x 좌표 값, y좌표 값이 각각 diagScan[sPos][0], diagScan[sPos][1]에 할당되는 것으로 해석할 수 있다. 즉, DiagScanOrder[log2BlockWidth][log2BlockHeight][sPos][sComp] 배열(또는 어레이)에 저장된 값은 블록의 너비와 높이가 각각 1<<log2BlockWidth, 1<<log2BlockHeight인 블록의 우상측 대각 스캔 순서에서 sPos 스캔 위치(스캔 인덱스)일 때의 sComp에 해당하는 좌표 값을 의미할 수 있다.
도 14는 본 발명의 일 실시예에 따른 우상측 대각 스캔 순서를 블록 사이즈에 따라 나타낸 도면이다. 도 14(a)를 참조하면, log2BlockWidth와 log2BlockHeight가 모두 2인 경우, 4x4 크기의 블록을 의미할 수 있다. 도 14(b)를 참조하면, log2BlockWidth와 log2BlockHeight가 모두 3인 경우, 8x8 크기의 블록을 의미할 수 있다. 도 14에서, 회색 음영 영역에 표시된 숫자는 스캔 위치(스캔 인덱스) sPos를 나타낸다. sPos 위치에서의 x 좌표 값, y 좌표 값이 각각 DiagScanOrder[log2BlockWidth][log2BlockHeight][sPos][0], DiagScanOrder[log2BlockWidth][log2BlockHeight][sPos][1]에 할당될 수 있다.
인코더/디코더는 상기 기술한 스캔 순서에 기반하여 변환 계수 정보를 코딩할 수 있다. 본 발명에서는 우상측 스캔 방법이 사용되는 경우에 기반하는 실시예를 위주로 기술하나, 본 발명이 이에 제한되는 것은 아니며, 이외에 공지된 다른 스캔 방법에 대해서도 적용될 수 있다.
이하에서는, 2차 변환과 관련된 디코딩 과정을 상세히 기술한다. 설명의 편의를 위해 2차 변환과 관련된 과정을 디코더를 위주로 설명하나, 이하에서 설명하는 실시예는 실질적으로 동일한 방법으로 인코더에 적용될 수 있다.
도 15는 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 도시한 도면이다. 2차 변환은 코딩 유닛 레벨에서 지시될 수 있으며, 2차 변환과 관련된 신택스 요소가 coding_unit 신택스 구조에 포함될 수 있다. coding_unit 신택스 구조는 코딩 유닛과 관련된 신택스 요소를 포함할 수 있다. 이때, 픽쳐의 좌-상단 루마 샘플을 기준으로 현재 블록의 좌-상단 루마 샘플 좌표인 (x0, y0), 블록의 너비인 cbWidth, 블록의 높이인 cbHeight 및 부호화 트리의 종류를 나타내는 변수인 treeType이 coding_unit 신택스 구조의 입력일 수 있다. 루마와 크로마 간에는 상관관계가 존재하기 때문에, 루마와 크로마를 동일한 부호화 구조로 부호화하게 되면, 효율적인 영상 압축이 가능하다. 또는, 부호화 효율을 향상시키기 위하여, 루마와 크로마는 서로 다른 부호화 구조로 부호화될 수도 있다. 변수 treeType이 SINGLE_TREE인 경우, 루마와 크로마가 동일한 부호화 트리 구조로 부호화되었음을 의미할 수 있으며, 코딩 유닛은 루마 코딩 블록과 컬러 포맷에 따라 크로마 코딩 블록을 포함할 수 있다. treeType이 DUAL_TREE_LUMA인 경우, 루마와 크로마가 서로 다른 부호화 트리로 부호화되었음을 의미하여, 현재 처리되는 트리가 루마에 대한 트리임을 나타낼 수 있다. 이때, 코딩 유닛은 루마 코딩 블록만을 포함할 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, 루마와 크로마가 서로 다른 부호화 트리로 부호화되었음을 의미하며, 현재 처리되는 트리가 크로마에 대한 트리임을 나타낼 수 있다. 이때, 코딩 유닛은 컬러 포맷에 따라 크로마 코딩 블록을 포함할 수 있다.
coding_unit 신택스 구조에서는, 현재 코딩 유닛에 대한 예측 방법이 지시될 수 있으며, 변수 CuPredMode[x0][y0]는 현재 블록에 대한 예측 방법을 나타낼 수 있다. CuPredMode[x0][y0]가 MODE_INTRA인 경우, 현재 블록에 인트라 예측 방법이 적용되었음을 나타낼 수 있으며, MODE_INTER인 경우, 현재 블록에 인터 예측 방법이 적용되었음을 나타낼 수 있다. 또한, CuPredMode[x0][y0]가 MODE_IBC인 경우, 현재 픽쳐의 복원이 완료된 영역으로부터 참조 블록을 생성하여 예측을 수행하는 IBC (Intra Block Copy) 예측이 현재 블록에 적용되었음을 나타낼 수 있다. 변수 CuPredMode[x0][y0]의 값에 따라, 예측 방법과 관련된 신택스 요소의 처리가 수행될 수 있다. 예를 들어, 변수 CuPredMode[x0][y0]이 인트라 예측을 나타내는 경우, 디코더는 인트라 예측 모드, 참조 라인 인덱스, ISP (Intra Sub-Partitions) 예측 관련 정보를 포함하는 신택스 요소를 파싱하거나, 기 설정된 방법에 따라 인트라 예측 모드와 관련 변수를 설정할 수 있다.
예측 방법과 관련된 신택스 요소의 처리 이후, 잔차 신호와 관련된 신택스 요소의 처리가 수행될 수 있다. transform_tree() 신택스 구조는 변환 트리(transform tree)에 대한 신택스 구조로써, 변환 트리(transform tree)는 코딩 유닛과 동일한 사이즈를 루트 노드로 하여, 루트 노드보다 작은 사이즈의 노드들로 분할될 수 있으며, 변환 트리(transform tree)의 리프 노드는 변환 유닛이 될 수 있다. transform_tree 신택스 구조는 변환 트리(transform tree)의 분할과 관련된 정보를 포함할 수 있다.
인트라 예측 방법 중의 하나로써 PCM(Pulse Code Modulation) 예측이 있을수 있다. PCM 예측이 현재 코딩 유닛의 예측에 사용되는 경우, 변환과 양자화가 수행되지 않으므로, transform_tree 신택스 구조는 존재하지 않을 수 있다. 즉, transform_tree 신택스 구조는 존재하지 않으므로, 디코더는 transform_tree 신택스 구조에 대한 동작을 수행하지 않을 수 있다. PCM 예측은 현재 코딩 유닛에 인트라 예측이라 지시되는 경우, pcm_flag[x0][y0]로 지시될 수 있다. 즉, pcm_flag[x0][y0]가 1인 경우, transform_tree 신택스 구조에 대한 디코더의 동작은 수행되지 않을 수 있다. 한편, 현재 코딩 유닛에 대하여 transform_tree 신택스 구조가 존재하는지 여부는 1-bit 플래그로 지시될 수 있으며, 이를 본 명세서에서는 cu_cbf로 지칭하나 이에 한정되는 것은 아니다. 디코더는 cu_cbf를 파싱하거나, cu_cbf가 파싱되지 않는 경우, 기 설정된 방법에 따라 cu_cbf를 설정할 수 있다. cu_cbf가 1인 경우 디코더는 transform_tree 신택스 구조에 대한 동작을 수행할 수 있다. 현재 코딩 유닛의 예측에 인터 예측 또는, IBC 예측이 사용되는 경우, 현재 코딩 유닛의 예측에 머지 예측도 사용될 수 있다. 머지 예측이 사용되는지 여부는 merge_flag[x0][y0]로 지시될 수 있다. 현재 블록에 머지 예측이 사용되는 것으로 지시되는 경우 (merge_flag[x0][y0]==1), cu_cbf는 파싱되지 않고, 기 설정된 방법에 따라 cu_cbf의 값이 결정될 수 있다. 기 설정된 방법은 스킵 모드를 지시하는 cu_skip_flag[x0][y0]에 기반하는 방법일 수 있다. 예를 들어, cu_skip_flag[x0][y0]가 1인 경우, cu_cbf는 0으로 추론(infer)되고, 그렇지 않은 경우, cu_cbf는 1로 추론될 수 있다. cu_cbf가 1인 경우, transform_tree 신택스 구조의 처리가 수행될 수 있으며, 0이 아닌 양자화 계수(significant coefficient)의 개수를 측정하기 위한 카운터 값은 0으로 초기화될 수 있다.
numSigCoeff 변수는 현재 코딩 유닛의 변환 유닛 내에 존재하는 0이 아닌 양자화 계수(significant coefficient)의 개수를 나타내는 변수를 의미하는 것으로, numSigCoeff의 값에 따라 2차 변환과 관련된 신택스 요소의 처리가 달라질 수 있다.
numZeroOutSigCoeff 변수는 현재 코딩 유닛이 포함하는 변환 유닛 내의 특정 위치 상에 존재하는 0이 아닌 양자화 계수(significant coefficient)의 개수를 나타내는 변수를 의미하는 것으로, numZeroOutSigCoeff의 값에 따라 2차 변환과 관련된 신택스 요소의 처리가 달라질 수 있다.
transform_tree에서 변환 트리(transform tree)가 분할될 수 있으며, 변환 트리(transform tree)의 리프 노드는 변환 유닛일 수 있다. transform_tree는 리프 노드인 변환 유닛과 관련된 신택스 구조인 transform_unit 신택스 구조를 포함할 수 있다. transform_unit은 변환 유닛과 관련된 신택스 요소를 처리할 수 있으며, 해당 변환 유닛이 0이 아닌 변환 계수를 하나 이상 포함하는 경우, residual_coding 신택스 구조를 포함할 수 있다. residual_coding 신택스 구조는 양자화된 변환 계수와 관련된 신택스 구조 및 이와 관련된 처리를 포함할 수 있다. 현재 처리되는 트리의 타입에 따라 변환 유닛을 구성하는 변환 블록은 달라질 수 있다. treeType이 SINGLE_TREE인 경우, 현재 변환 유닛은 루마 변환 블록 및 컬러 포맷에 따라 크로마 변환 블록들을 포함할 수 있다. treeType이 DUAL_TREE_LUMA인 경우, 현재 변환 유닛은 루마 변환 블록을 포함할 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, 현재 변환 유닛은 크로마 변환 블록들을 포함할 수 있다. transform_unit 신택스 구조는 treeType에 따라 현재 변환 유닛이 포함하는 변환 블록들에 대하여 해당 변환 블록이 0이 아닌 계수를 하나 이상 포함하는지를 지시하는 정보인 CBF(coded block flag) 정보를 포함할 수 있다. 상기 CBF 정보는 컬러 성분 별로 지시되는 정보일 수 있다. 예를 들어, 현재 변환 유닛의 루마 변환 블록에 대한 CBF의 값이 루마 변환 블록이 0이 아닌 계수를 하나 이상 포함하지 않음을 나타내는 경우, 루마 변환 블록의 계수는 모두 0이므로, 루마 변환 블록에 대한 residual_coding 신택스 구조는 처리되지 않을 수 있다. 또 다른 예로, 현재 변환 유닛의 크로마 Cb 변환 블록에 대한 CBF의 값이 크로마 Cb 변환 블록이 0이 아닌 계수를 하나 이상 포함하는 것을 나타내는 경우, 현재 변환 유닛의 Cb 변환 블록에 대한 residual_coding 신택스 구조는 존재할 수 있다.
현재 블록에 2차 변환이 적용되는지 여부는, CU 레벨에서 지시될 수 있다. 2차 변환이 적용되는 경우, 추가적으로 2차 변환에 사용되는 변환 커널을 지시하는 인덱스가 지시될 수도 있다. 도 11에서 설명한 바와 같이, lfnst_idx[x0][y0] 신택스 요소를 사용하여 현재 블록에 2차 변환이 적용되는지 여부가 지시될 수 있다. lfnst_idx[x0][y0]의 첫 번째 비트는 현재 코딩 유닛에 2차 변환이 적용되는지를 나타낼 수 있다. lfnst_idx[x0][y0]의 첫 번째 비트가 0이면, 즉, lfnst_idx[x0][y0]가 0인 경우, 현재 블록에 2차 변환이 적용되지 않았음을 나타낼 수 있다. 반면에, lfnst_idx[x0][y0]의 첫 번째 비트가 1이면, 즉, lfnst_idx[x0][y0]가 0보다 큰 경우(lfnst_idx[x0][y0] > 0), 현재 블록에 2차 변환이 적용되는 것을 나타낸다. 이때, 2차 변환에 사용된 변환 커널을 지시하기 위해 추가적인 비트가 사용될 수 있고, 추가적인 비트를 통해 2차 변환 커널을 지시하는 인덱스가 시그널링될 수 있다.
lfnst_idx[x0][y0] 신택스 요소는 후술하는 조건들이 만족되는 경우 파싱될 수 있다. 반면 후술하는 조건들이 만족되지 않는 경우, lfnst_idx[x0][y0]는 현재 코딩 유닛에 존재하지 않고, lfnst_idx[x0][y0]는 0으로 설정될 수 있다.
다시 말하면, 후술하는 lfnst_idx[x0][y0] 신택스 요소 파싱 조건을 포함하는 제1 실시예 내지 제4 실시예에서 설명하는 조건들이 만족되면 인코더는, 현재 코딩 유닛에 대한 lfnst_idx[x0][y0] 신택스 요소를 포함하는 비트스트림을 생성할 수 있다. 반면 후술하는 조건들이 만족되지 않으면 인코더가 생성하는 비트스트림에는 현재 코딩 유닛에 대한 lfnst_idx[x0][y0] 신택스 요소가 포함되지 않고, lfnst_idx[x0][y0]는 0으로 설정될 수 있다. 이러한 비트스트림을 수신한 디코더는, 후술하는 조건들에 기초하여 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
lfnst_idx[x0][y0] 신택스 요소 파싱 조건
i) Min(lfnstWidth, lfnstHeight)>=4
먼저 첫 번째 조건은, 블록 크기(사이즈)와 관련된 것으로, 블록의 너비 및 높이가 각각 4픽셀 이상일 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 디코더는 2차 변환을 적용할 수 있는 블록 사이즈 조건을 검사할 수 있다. 변수 SubWidthC, SubHeightC는 컬러 포맷에 따라 설정되는 것으로, 각각 픽쳐의 루마 성분의 너비, 높이 대비 크로마 성분의 너비, 높이의 비를 나타낼 수 있다. 예를 들어, 4:2:0 컬러 포맷 영상은, 루마 샘플 4개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 2로 설정될 수 있다. 다른 예로, 4:4:4 컬러 포맷 영상은, 루마 샘플 1개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 1로 설정될 수 있다. 현재 블록의 수평 방향 샘플 수인 lfnstWidth, 수직 방향 샘플 수인 lfnstHeight는 SubWidthC, SubHeightC에 기초하여 설정될 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, 코딩 유닛은 크로마 성분만을 포함하므로, 크로마 코딩 블록의 수평 방향 샘플 수는 루마 코딩 블록의 너비인 cbWidth를 SubWidthC로 나눈 값과 같다. 마찬가지로, 크로마 코딩 블록의 수직 방향 샘플 수는 루마 코딩 블록의 높이인 cbHeight를 SubHeightC로 나눈 값과 같다. treeType이 SINGLE_TREE이거나 DUAL_TREE_LUMA인 경우, 코딩 유닛은 루마 성분을 포함하므로 lnfnstWidth, lfnstHeight은 각각 cbWidth, cbHeight로 설정될 수 있다. 2차 변환이 적용될 수 있는 블록의 최소 조건은 4x4이므로, Min(lfnstWidth, lfnstHeight)>=4를 만족할 경우, lfnst_idx[x0][y0]는 파싱될 수 있다.
ii) sps_lfnst_enabled_flag==1
두 번째 조건은, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그 값에 관한 것으로, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그(sps_lfnst_enabled_flag) 값이 1로 설정되었을 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 2차 변환은 상위 레벨 신택스 RBSP에서 지시될 수 있다. SPS, PPS, VPS, 타일 그룹 헤더, 슬라이스 헤더 중의 적어도 하나에 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 1-bit 크기를 가지는 플래그가 포함될 수 있다. sps_lfnst_enabled_flag가 1일 경우, lfnst_idx[x0][y0] 신택스 요소가 코딩 유닛 신택스 내에 존재하는 것을 나타낸다. sps_lfnst_enabled_flag가 0일 경우, lfnst_idx[x0][y0] 신택스 요소가 코딩 유닛 신택스 내에 존재하지 않는 것을 나타낸다.
iii) CuPredMode[x0][y0]==MODE_INTRA
세 번째 조건은, 예측 모드에 관한 것으로, 2차 변환은 인트라 예측된 블록에만 적용될 수 있다. 따라서, 현재 블록이 인트라 예측된 블록인 경우, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
iv) IntraSubPartitionsSplitType==ISP_NO_SPLIT
네 번째 조건은, ISP 예측 방법이 적용되는지 여부와 관련된 것으로, 현재 블록에 ISP가 적용되지 않을 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 도 11을 참고하여 설명한 바와 같이, 현재 CU에 대하여 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우, 분할된 변환 유닛에는 2차 변환이 적용되지 않을 수 있다. 이때, 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 현재 CU에 대하여 변환 트리(transform tree)가 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우는, ISP 예측이 현재 코딩 유닛에 적용되는 경우를 포함할 수 있다. ISP 예측 방법은 현재 코딩 유닛에 인트라 예측이 적용되는 경우, 기 설정된 분할 방법에 따라 변환 트리(transform tree)를 CU 크기보다 작은 다수의 변환 유닛으로 분할하는 예측 방법일 수 있다. 코딩 유닛 레벨에서 ISP 예측 모드가 지시될 수 있고, 이에 기반하여 변수 IntraSubPartitionsSplitType가 설정될 수 있다. 이때, IntraSubPartitionsSplitType이 ISP_NO_SPLIT인 경우, 현재 블록에 ISP가 적용되지 않음을 나타낸다. 2차 변환은 코딩 유닛 레벨에서 지시되지만, 실제 2차 변환은 변환 유닛 레벨에서 적용될 수 있다. 따라서, 변환 트리(transform tree)가 다수의 변환 유닛으로 분할되었을 때, 분할된 모든 변환 유닛에 동일한 2차 변환 커널이 적용되는 것은 비효율적일 수 있다. 또한, 변환 유닛 레벨에서 예측 샘플을 생성하는 인트라 예측의 특성 상, 변환 트리(transform tree)를 분할하여 다수의 변환 유닛으로 분할하였을 때가 분할하지 않았을 때보다 예측의 정확도가 높아질 수 있다. 따라서 변환 트리(transform tree)가 다수의 변환 유닛으로 분할되면 분할된 다수의 변환 유닛에 2차 변환이 적용되지 않더라도, 잔차 신호의 에너지가 효율적으로 압축(compaction)될 가능성이 높다. 또한, 현재 CU의 사이즈가 루마 최대 변환 블록 사이즈 (MaxTbSizeY)보다 큰 경우 (즉, cbWidth>MaxTbSizeY||cbHeight>MaxTbSizeY), 변환 트리(transform tree)는 CU 사이즈보다 작은 다수의 변환 유닛으로 분할될 수 있다. 도 15에는 도시하지 않았으나, 이 현재 CU의 사이즈가 루마 최대 변환 블록 사이즈 (MaxTbSizeY)보다 큰 경우에도 2차 변환은 적용되지 않을 수 있다. 따라서, 네 번째 조건은, IntraSubPartitionsSplitType==ISP_NO_SPLIT&&cbWidth<=MaxTbSizeY&&cbHeight<=MaxTbSizeY로 표현될 수도 있다. 이때, MaxTbSizeY는 2의 지수승 형태로 표현되는 자연수일 수 있다. MaxTbSizeY는 SPS, PPS, 슬라이스 헤더, 타일 그룹 헤더 등의 상위 레벨 신택스 RBSP에 포함되어 지시되거나, 인코더와 디코더가 기 설정된 동일한 값을 사용할 수도 있다. 예를 들어, 기 설정된 값은 64(2^6)일 수 있다.
v) !intra_mip_flag[x0][y0]
다섯 번째 조건은, 인트라 예측 방법에 관한 것으로, 현재 코딩 유닛 예측에 MIP(Matrix based Intra Predicition)가 적용되지 않는 경우, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 인트라 예측의 한 방법으로 MIP가 사용될 수 있고, MIP의 적용 여부는 코딩 유닛 레벨에서 intra_mip_flag[x0][y0]로 지시될 수 있다. Intra_mip_flag[x0][y0]가 1인 경우, MIP가 현재 코딩 유닛의 예측에 적용됨을 나타낼 수 있고, 현재 블록 주변의 복원된 샘플들과 기 설정된 행렬의 곱으로 예측이 수행될 수 있다. MIP가 적용되면, 방향성 또는 무방향성 예측을 수행하는 일반적인 인트라 예측과는 다른 잔차 신호의 성질을 보이므로, MIP가 적용될 때에는 변환 블록에 2차 변환은 적용되지 않을 수 있다.
vi) numSigCoeff>((treeType==SINGLE_TREE)?2:1)
여섯 번째 조건은, treeType 및 계수와 관련된 것이다.
구체적으로, treeType이 SINGLE_TREE인 경우, 변수 numSigCoeff의 값이 2보다 클 때, 현재 블록에 2차 변환이 적용될 수 있고, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
treeType이 DUAL_TREE_LUMA 또는 DUAL_TREE_CHROMA인 경우, 변수 numSigCoeff의 값이 1보다 클 때, 현재 블록에 2차 변환이 적용될 수 있고, lfnst_idx[x0][y0]는 파싱될 수 있다. 이때, numSigCoeff는 현재 코딩 유닛 내에 존재하는 유효 계수(significant coefficient)의 개수를 나타내는 변수를 의미한다. numSigCoeff가 임계 값보다 작을 때에는, 현재 블록에 2차 변환이 적용되더라도 효율적인 부호화가 이루어지지 않을 수 있다. 유효 계수(significant coefficient)의 개수가 적은 경우, 계수 코딩(coefficient coding)에 필요한 비트 대비 lfnst_idx[x0][y0]를 시그널링하는 오버헤드가 상대적으로 크기 때문일 수 있다. 이때 유효 계수(significant coefficient)는, 0이 아닌(non-zero) 계수를 의미할 수 있다. 이하 본 명세서에서 기술하는 유효 계수(significant coefficient)는, 상술한 바와 같이 0이 아닌(non-zero) 계수를 의미할 수 있다.
vii) numZeroOutSigCoeff==0
일곱 번째 조건은, 특정 위치에 존재하는 유효 계수(significant coefficeient)와 관련된 것이다.
구체적으로, 현재 블록에 2차 변환이 적용되는 경우, 디코더에서 양자화된 변환 계수는 특정 위치에서 항상 0일 수 있다. 따라서, 특정 위치에서 0이 아닌 (양자화) 계수가 존재하는 경우, 현재 블록에 2차 변환이 적용되지 않은 것이므로 특정 위치에서의 유효 계수(significant coefficient)의 개수에 따라 lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다. 예를 들어, numZeroOutSigCoeff가 0이 아니면 특정 위치에 유효 계수(significant coefficient)가 존재하는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 반면에, numZeroOutSigCoeff가 0이면, 특정 위치에 유효 계수(significant coefficient)가 존재하지 않는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱될 수 있다.
도 16은 본 발명의 일 실시예에 따른 residual_coding 신택스 구조를 도시한 도면이다.
residual_coding 신택스 구조는 양자화 계수와 관련된 신택스 구조이고, x0, y0, log2TbWidth, log2TbHeight를 입력으로 받을 수 있다. 이때, x0, y0는 변환 블록의 좌-상단 좌표인 (x0, y0)를 의미하고, log2TbWidth는 변환 블록의 너비에 밑이 2인 로그를 취한 값이고, log2TbHeight는 변환 블록의 높이에 밑이 2인 로그를 취한 값을 의미할 수 있다. 변환 블록 내의 계수는 서브 블록 단위로 코딩될 수 있으며, 각각의 서브 블록 내의 계수 값은 sig_coeff_flag를 포함하는 여러 신택스 요소에 기초하여 결정될 수 있다. 이때, 서브 블록 단위의 계수는 계수 그룹(Coefficient Group, CG)이라 표현될 수도 있다. sig_coeff_flag[xC][yC]는 현재 변환 블록 내의 (xC, yC) 위치의 계수 값이 0인지 아닌지를 나타낼 수 있다. sig_coeff_flag[xC][yC]가 1일 경우, 해당 위치의 계수 값이 0이 아닌 값임을 나타낼 수 있고, sig_coeff_flag[xC][yC]가 0일 경우, 해당 위치의 계수 값이 0임을 나타내는 것일 수 있다. residual_coding에서는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x 좌표 값, y 좌표 값이 지시될 수 있다. 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x 좌표 값, y 좌표 값에 기초하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)를 포함하는 서브 블록의 인덱스 (lastSubBlock)가 결정될 수 있다. 상기 서브 블록의 인덱스 또한 스캔 순서에 기초하여 인덱싱될 수 있다. 상기 스캔 순서는 도 13에서 설명한 우상측 대각(up-right diagonal) 스캔 순서일 수 있다. 서브 블록 단위의 계수 코딩에서 계수의 위치(좌표 값)를 나타내는 인덱스 xC, yC는 서브 블록의 좌-상단 좌표 (xS<<log2SbW, yS<<log2SbH), 우상측 대각 스캔 순서(DiagScanOrder)에 기반하여 결정될 수 있다. 이때, xS, yS는 각각 수평 방향으로의 인덱스, 수직 방향으로의 인덱스를 나타낸다. log2SbW, log2SbH는 각각 서브 블록의 너비와 높이에 밑이 2인 로그를 취한 값일 수 있다.
sig_coeff_flag[xC][yC]의 값이 1이고, (즉, (xC, yC) 위치의 계수가 0이 아닌 경우), 현재 블록에 변환 스킵이 적용되지 않는 경우 (즉, !transform_skip_flag[x0][y0]), numSigCoeff가 카운팅(counting)될 수 있다. 변환 스킵이 적용될 때는, 2차 변환이 적용되지 않을 수 있으므로, lfnst_idx[x0][y0]의 파싱에 활용되는 numSigCoeff는 변환 스킵이 적용되지 않는 블록의 유효 계수의 개수를 카운팅(counting)할 수 있다.
또한, 도 15에서 설명한 바와 같이, 변환 블록에 2차 변환이 적용되면 변환 블록 내의 특정 영역에서는 유효 계수가 존재하지 않을 수 있다. 따라서 특정 영역 내에 존재하는 유효 계수의 개수(numZeroOutSigCoeff)를 numZeroOutSigCoeff 카운터(counter)가 카운팅(counting)하여, numZeroOutSigCoeff가 0이 아닌 경우에는 lfnst_idx[x0][y0]는 파싱되지 않을 수 있다. 구체적으로, 변환 블록에 2차 변환이 적용되었을 때, 유효 계수가 존재할 수 없는 영역은 변환 블록의 사이즈에 따라 결정될 수 있다.
예를 들어, 2차 변환이 적용되기 위해서는, 변환 블록의 사이즈가 4x4인 경우 (즉, log2TbWidth==2&&log2TbHeight==2), 변환 블록 내에서 스캔 순서 상 인덱스 [0, 7] 영역과 [8, 15] 영역을 구분하여, [0, 7] 영역에는 유효 계수가 존재할 수 있고, [8, 15] 영역에서는 유효 계수가 존재할 수 없다. 상기 4x4 변환 블록은 하나의 서브 블록을 포함할 수 있다. 따라서 변환 블록의 사이즈가 4x4인 경우, 스캔 위치가 8 이상이고 서브 블록의 인덱스가 0인 경우 (즉, n>=8&&i==0), 유효 계수의 개수가 카운팅(counting)될 수 있다. 이때, 스캔 순서는 우상측 대각(up-right diagonal) 스캔 순서일 수 있다.
또 다른 예로, 2차 변환이 적용되기 위해서는, 변환 블록의 사이즈가 8x8인 경우 (즉, log2TbWidth==3&&log2TbHeight==3), 변환 블록 내에서 첫 번째 서브 블록 내에만 유효 계수가 존재할 수 있고, 나머지 서브 블록들(예를 들어, 두 번째, 세 번째 서브블록)에는 유효 계수가 존재할 수 없다. 상기 첫 번째 서브 블록 내에서도 스캔 순서 상 인덱스 [0, 7] 영역에서는 유효 계수가 존재할 수 있으나, 인덱스 [8, 15] 영역에서는 유효 계수가 존재할 수 없다. 따라서 변환 블록의 사이즈가 8x8인 경우, 첫 번째 서브 블록에서 스캔 위치가 8 이상이거나 (즉, n>=8&&i==0) 스캔 위치가 첫 번째 서브블록을 제외한 나머지 서브 블록에 존재하는 경우 (예를 들어, 두 번째, 세 번째 서브 블록에 존재, i==1||i==2), 유효 계수의 개수가 카운팅(counting)될 수 있다.
마지막으로, 변환 블록의 사이즈가 8x8보다 큰 경우, 변환 블록 내에서 첫 번째 서브 블록 내에서만 유효 계수가 존재할 수 있고, 나머지 서브 블록들(예를 들어, 두 번째, 세 번째 서브 블록)에서는 유효 계수가 존재할 수 없다. 따라서, 서브 블록이 두 번째 또는 세 번째인 경우 (즉, i==1||i==2), 유효 계수의 개수가 카운팅(counting)될 수 있다. numZeroOutSigCoeff 카운터(counter)는 numSigCoeff 카운터(counter)와 마찬가지로, sig_coeff_flag[xC][yC]가 1이고, transform_skip_flag[x0][y0]가 0인 경우에만 유효 계수의 개수를 카운팅(counting)할 수 있다. 이때, 서브 블록은 도 13에서 설명한 우상측 대각 스캔 순서에 따라 인덱싱이 될 수 있다.
다시 말하면, 유효 계수(significant coefficient)가 존재할 수 없는 영역(특정 영역)에 0이 아닌 계수가 존재하게 되면 2차 변환이 수행되지 않은 것을 나타내므로, 특정 영역에 0이 아닌 계수가 존재하는지 여부를 확인하기 위해 유효 계수(significant coefficient)가 카운팅 되는 것이다.
도 17은 본 발명의 일 실시예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 15 및 도 16에서 설명한 것처럼, 2차 변환이 적용되는지 여부는 코딩 유닛 레벨에서 lfnst_idx[x0][y0] 신택스 요소로 지시될 수 있고, lfnst_idx[x0][y0]가 파싱되기 위해서는 두 개의 유효 계수 카운터(significant coefficient counter, 즉, numSigCoeff 카운터, numZeroOutSigCoeff 카운터)가 필요할 수 있다. 특히, numSigCoeff의 경우, numSigCoeff 카운터가 코딩 유닛 전체 영역 내에 존재하는 유효 계수(significant coefficient)의 개수를 카운팅(counting)해야하므로, 계수 코딩의 처리율(throughput)이 저하될 수 있다. 따라서 카운터(counter)의 개수를 줄이거나, 카운터(counter)를 사용하지 않는 방법이 필요하다.
도 17에서 나타내는 2차 변환 지시 방법은 numSigCoeff와 무관하게 lfnst_idx[x0][y0]를 파싱할 수 있는 방법이다. 다시 말하면, 도 15에서 기술한 조건 중, i), ii), iii), iv), v), vii)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 또한, numSigCoeff의 값은 참조되지 않으므로 도 16에서 기술한 numSigCoeff 카운터(counter)의 동작은 수행되지 않을 수 있다.
이하 본 명세서에서는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보에 기반하여, 2차 변환을 지시하는 방법에 대해 설명한다. 유효 계수(significant coefficient)의 개수가 적을 때와 마찬가지로, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 작은 경우, 2차 변환으로 인한 부호화 효율성이 낮을 수 있다. 따라서, 카운터(counter)를 사용하지 않고, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보에 기초하여 2차 변환을 효율적으로 지시할 필요가 있다.
(제1 실시예)
도 18은 본 발명의 실시 예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 18은 numSigCoeff 카운터(counter) 대신, residual_coding에서 획득하는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 이용하여 lfnst_idx[x0][y0]를 파싱하는 방법을 나타낸 도면이다.
도 18에 따르면 numSigCoeff 카운터(counter)는 사용되지 않으므로, numSigCoeff 값은 초기화될 필요가 없고, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 변수인 lfnstLastScanPos가 1로 초기화될 수 있다. lfnstLastScanPos 값이 1일 경우, 스캔 순서 상 마지막 유효 계수(significant coefficient)의 위치(스캔 인덱스)가 임계 값보다 작거나 블록 내의 변환 계수가 모두 0임을 나타낸다. 반대로, lfnstLastScanPos 값이 0일 경우, 블록 내에 유효 계수가 하나 이상 존재하며, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값 이상임을 나타낸다. 따라서, lfnstLastScanPos 값이 1이면 lfnst_idx[x0][y0]는 파싱되지 않고 lfnstLastScanPos 값이 0이면 lfnst_idx[x0][y0]는 파싱될 수 있다. 더하여, lfnst_idx[x0][y0]는 lfnstLastScanPos 값이 0이고, 도 15에서 설명한 조건 i), ii), iii), iv), v), vii)이 모두 만족되는 경우(모두 참인 경우) 파싱될 수도 있다.
다시 말하면, 현재 블록 내에 유효 계수 (significant coefficient)가 하나 이상 존재하며, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값 이상일 때, lfnst_idx[x0][y0]는 파싱될 수 있다. 이때, 후술하는 바와 같이 임계 값은 0 이상의 정수 일 수 있다. 예를 들어, 임계 값이 1이라고 가정하면, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값 이상이라는 것은, 유효 계수가 블록의 좌상단 이외의 위치에 존재한다는 의미일 수 있다. 즉, 유효 계수(significant coefficient)가 현재 블록에 존재하지 않거나 현재 블록의 좌상단에만 존재하는 경우를 제외한 나머지 경우, 즉, 현재 블록의 좌상단을 제외한 위치에 유효 계수(significant coefficient)가 존재하는 경우에만 lfnst_idx[x0][y0]는 파싱될 수 있다. 현재 블록의 좌상단을 제외한 위치에 유효 계수(significant coefficient)가 존재한다는 의미는, 'LfnstDConly ==0'으로 표현될 수도 있다. 본 명세서에서 설명하는, 블록의 좌상단은, 수평, 수직 좌표의 값이 (0, 0)임을 의미하는 것일 수 있고, 기 설정된 스캔 순서(예: 우상측 대각(up-right diagonal) 순서)에 따른 첫 번째 위치를 의미할 수 있고, 또는 DC로 지칭될 수도 있다.
도 19는 본 발명의 실시예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 19는 상술한 도 18에 따른 residual_coding 신택스 구조를 나타낸 것으로, residual_coding에서는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x 좌표, y 좌표와 관련된 신택스 요소가 파싱되어, LastSignificantCoeffX, LastSignificantCoeffY 변수가 설정될 수 있다. LastSignificantCoeffX는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x 좌표를 나타내며, LastSignificantCoeffY는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 y 좌표를 나타낸다. LastSignificantCoeffX, LastSignificantCoeffY에 기반하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 스캔 인덱스인 lastScanPos 변수와 마지막 유효 계수(last significant coefficient)를 포함하는 서브 블록의 인덱스(lastSubBlock)는 결정될 수 있다. 이때, 도 16에서 설명한 바와 같이, 현재 블록에 2차 변환이 적용되는 경우에는 첫 번째 서브블록에만 유효 계수가 존재할 수 있다. 다시 말하면 유효 계수가 첫 번째 서브블록에만 존재하는 경우에 2차 변환이 적용될 수 있는 것이다.
예를 들어, 도 14(a)의 4x4 크기의 블록에서 LastSignificantCoeffX가 2이고 LastSignificantCoeffY가 3인 경우 lastScanPos는 13으로 결정될 수 있다. 4x4 크기의 블록은 하나의 서브 블록으로 구성될 수 있으므로 마지막 유효 계수(last significant coefficient)를 포함하는 서브블록의 인덱스(lastSubBlock)는 0으로 결정될 수 있다. 또 다른 예로, 도 14(b)의 8x8 크기의 블록은, 4x4 크기의 서브블록들로 나누어질 수 있다. 구체적으로, 도14(b)에서 x좌표 0 내지 3 및 y좌표 0 내지 3에 해당하는 4x4 블록은 첫 번째 서브블록으로, x좌표 0 내지 3 및 y좌표 4 내지 7에 해당하는 4x4 블록은 두 번째 서브블록으로, x좌표 4 내지 7 및 y좌표 0 내지 3에 해당하는 4x4 블록은 세 번째 서브블록으로, x좌표 4 내지 7 및 y좌표 4 내지 7에 해당하는 4x4 블록은 네 번째 서브블록으로 설정될 수 있다. 이때 첫 번째 서브블록은 인덱스 0, 두 번째 서브블록은 인덱스 1, 세 번째 서브블록은 인덱스 2, 네 번째 서브블록은 인덱스 3으로 인덱싱될 수 있다. 서브 블록은 도 13에서 설명한 우상측 대각 스캔 순서에 따라 인덱싱이 될 수 있다. 이때, LastSignificantCoeffX가 2이고 LastSignificantCoeffY가 3인 경우 lastScanPos는 13으로 결정될 수 있다. lastScanPos는 13이므로, lastScanPos 13을 포함하는 서브블록은 첫번째 서브블록(즉, 서브블록 인덱스 0)이므로 마지막 유효 계수(last significant coefficient)를 포함하는 서브 블록의 인덱스(lastSubBlock)는 0으로 결정될 수 있다.
상술한 lastScanPos에 기반하여, lfnstLastScanPos가 결정될 수 있다. 구체적으로, 변환 블록의 너비 및 높이가 4 이상이고, 변환 블록에 변환 스킵이 적용되지 않을 때, lfnstLastScanPos는 아래 수학식 1과 같이 설정될 수 있다. 다시 말하면 log2TbWidth>=2이고, log2TbHeight>=2이고, transform_skip_flag[x0][y0]가 0인 경우, lfnstLastScanPos는 아래 수학식 1과 같이 설정될 수 있다. 이때, transform_skip_flag[x0][y0]가 0이면 현재 변환 블록에 변환 스킵이 적용되지 않는 경우를 의미할 수 있다. 구체적으로, 본 명세서에서 설명하는 플래그 transform_skip_flag[x0][y0]는, 변환 블록에 1차 변환 및 2차 변환이 적용되는지 여부를 지시하는 것일 수 있다. 예를 들어, 상기 transform_skip_flag[x0][y0] 값이 1이면 변환 블록에 1차 변환 및 2차 변환이 적용되지 않음을 나타내고(즉, 변환 스킵이 적용됨), 상기 transform_skip_flag[x0][y0] 값이 0이면 변환 블록에 1차 변환 및 2차 변환이 적용될 수 있음을 나타낼 수 있다(즉, 변환 스킵이 적용되지 않음).
Figure PCTKR2020008301-appb-img-000001
상술한 바와 같이 lfnstLastScanPos의 초기화 값은 1로 설정될 수 있다.
수학식 1에서 cIdx는 현재 변환 블록의 컬러 성분을 의미하는 변수를 나타낼 수 있다. 예를 들어, cIdx가 0인 경우 residual_coding에서 처리되는 변환 블록이 루마 Y 성분임을 나타낼 수 있다. cIdx가 1인 경우 residual_coding에서 처리되는 변환 블록이 크로마 Cb 성분임을 나타낼 수 있고, cIdx가 2인 경우 처리되는 변환 블록이 크로마 Cr 성분임을 나타낼 수 있다. lastScanPos에 대한 임계 값인 lfnstLastScanPosTh[cIdx]는 컬러 성분에 따라 다른 값으로 설정될 수 있다.
수학식 1에 따르면, 직전 lfnstLastScanPos가 1이고 lastScanPos가 lfnstLastScanPosTh[cIdx]보다 작은 경우, lfnstLastScanPos는 1로 업데이트될 수 있다. 한편, 직전 lfnstLastScanPos가 0이거나, lastScanPos가 lfnstScanPosTh[cIdx] 이상인 경우, lfnstLastScanPos는 0으로 업데이트될 수 있다. 다시 말하면 코딩 유닛이 포함하는 모든 변환 블록의 lastScanPos가 임계 값보다 작거나 모든 변환 블록의 계수가 모두 0인 경우, lfnstLastScanPos는 1로 결정될 수 있고, 도 18의 lfnst_idx[x0][y0] 파싱 조건에 따라, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정된다는 것은 현재 블록에 2차 변환이 적용되지 않음을 나타낸다. 반면 코딩 유닛이 포함하는 변환 블록들 중 어느 하나라도 lastScanPos가 임계 값 이상일 경우, lfnstLastScanPos는 0으로 결정될 수 있고, 도 15에서 설명한 조건 i), ii), iii), iv), v), vii)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다.
수학식 1의 lfnstLastScanPosTh[cIdx]는 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. 또한, 모든 컬러 성분에 대해 동일한 임계 값이 사용될 수도 있다. 이 경우, lfnstLastScanPos는 아래 수학식 2와 같이 설정될 수 있다. 본 명세서에서 설명하는 코딩 유닛은 복수의 코딩 블록들로 구성될 수 있고, 각각의 코딩 블록들에 대응하는 변환 블록이 존재할 수 있다. 변환 블록은, 휘도, 색차 성분을 가지는 변환 블록일 수 있다. 구체적으로, Y 변환 블록, Cb 변환 블록, Cr 변환 블록일 수 있다. 이때, 본 명세서에서 설명하는 lfnst_idx[x0[y0]를 파싱할 것인지 여부는 상기 각각의 코딩 블록들에 대응하는 변환 블록마다 판단될 수 있다. 즉, Y 변환 블록, Cb 변환 블록, Cr 변환 블록 중 어느 하나의 변환 블록이라도 본 명세서에서 설명하는 조건들을 만족하는 경우, lfnst_idx[x0][y0]는 파싱될 수 있다.
Figure PCTKR2020008301-appb-img-000002
lfnstLastScanPosTh는 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. 예를 들어, lfnstLastScanPosTh는 1일 수 있다. 즉, lastScanPos가 1 이상인 경우, lfnstLastScanPos는 0으로 업데이트 될 수 있고, lfnst_idx[x0][y0]는 파싱될 수 있다. 이때, 임계 값(lfnstLastScanPosTh)은 정수 값이므로, lastScanPos가 1 이상인 경우는 lastScanPos가 0보다 큰 경우와 동일한 의미일 수 있다. 본 발명의 하나의 예시로, 임계 값이 1인 경우에 대해서 설명하였으나, 본 발명이 이에 한정되는 것은 아니다.
다시 말하면, lastScanPos에 기초하여 lfnst_idx[x0][y0]를 파싱 여부가 결정될 수 있다. 구체적으로, 상술한 바와 같이 2차 변환이 적용되는 경우, 스캔 순서 상 마지막 유효 계수(last significant coefficient)는 변환 블록의 첫번째 서브블록에만 존재할 수 있다. 따라서, 스캔 순서 상 마지막 유효 계수(last significant coefficient)를 포함하는(lastScanPos가 나타내는 인덱스가 위치하는) 서브 블록의 인덱스(lastSubBlock)는 0이고, 변환 블록의 너비가 4 이상이고 (log2TbWidth>=2), 변환 블록의 높이가 4 이상이고 (log2TbHeight>=2), transform_skip_flag[x0][y0]가 0이고(변환 스킵이 적용되지 않고), lastScanPos가 0보다 큰 경우(lastScanPos가 1 이상인 경우) lfnst_idx[x0][y0]는 파싱될 수 있다. 이를 수학식으로 나타내면 아래 수학식 3과 같이 표현할 수 있다.
Figure PCTKR2020008301-appb-img-000003
한편, 상술한 제1 실시예에서는 numSigCoeff 카운터(counter)를 lfnst_idx[x0][y0] 파싱에 이용하지 않으므로, 유효 계수(significant coefficient)의 개수 (numSigCoeff)는 카운팅(counting)되지 않을 수 있다.
(제2 실시예)
도 20은 본 발명의 또 다른 실시예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 20은, residual_coding은 도 19에 추가적으로 treeType 변수를 입력받고, treeType에 따라 lastScanPos에 대한 임계 값을 설정하는 방법을 나타낸 도면이다.
변환 블록의 너비 및 높이가 4 이상이고, 변환 블록에 변환 스킵이 적용되지 않을 때, lfnstLastScanPos는 아래 수학식 4와 같이 설정될 수 있다. 다시 말하면 log2TbWidth>=2이고, log2TbHeight>=2이고, transform_skip_flag[x0][y0]가 0인 경우, lfnstLastScanPos는 아래 수학식 4와 같이 설정될 수 있다. 이때, transform_skip_flag[x0][y0]가 0이면 현재 변환 블록에 변환 스킵이 적용되지 않는 경우를 의미할 수 있다.
Figure PCTKR2020008301-appb-img-000004
수학식 4에서 lfnstLastScanPosTh는 lastScanPos에 대한 임계 값을 의미하고, treeType에 따라 값이 설정될 수 있다. treeType이 SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA인 경우, lfnstLastScanPosTh는 각각 val1, val2, val3으로 설정될 수 있다. 직전 lfnstLastScanPos가 1이고 lastScanPos가 lfnstLastScanPosTh보다 작은 경우, lfnstLastScanPos는 1로 업데이트될 수 있다. 한편 직전 lfnstLastScanPos가 0이거나, lastScanPos가 lfnstScanPosTh 이상인 경우, lfnstLastScanPos는 0으로 업데이트될 수 있다.
수학식 4는 결과적으로, 코딩 유닛이 포함하는 모든 변환 블록의 lastScanPos가 임계 값보다 작거나 모든 변환 블록의 계수가 모두 0인 경우, lfnstLastScanPos는 1로 결정될 수 있고, 도 18의 lfnst_idx[x0][y0] 파싱 조건에 따라, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 현재 블록에 2차 변환이 적용되지 않음을 나타낸다. 한편 코딩 유닛이 포함하는 변환 블록들 중 어느 하나라도 lastScanPos가 임계 값 이상일 경우, lfnstLastScanPos는 0으로 결정될 수 있고, 도 15에서 설명한 i), ii), iii), iv), v), vii)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다.
val1, val2, val3은 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. treeType이 SINGLE_TREE인 경우, 루마, 크로마 성분을 모두 포함하므로, lfnstLastScanPosTh의 값인 val1은 val2와 val3의 합으로 표현될 수도 있다.
제2 실시예에서는 numSigCoeff 카운터(counter)를 lfnst_idx[x0][y0] 파싱에 이용하지 않으므로, 유효 계수(significant coefficient)의 개수 (numSigCoeff)는 카운팅(counting)되지 않을 수 있다.
(제3 실시예)
도 21은 본 발명의 또 다른 실시예에 따른 코딩 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 21에 따르면, numSigCoeff 카운터(counter) 대신, residual_coding에서 획득되는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 활용하여 lfnst_idx[x0][y0]가 파싱될 수 있다.
numSigCoeff 카운터(counter)가 사용되지 않으므로, numSigCoeff는 초기화될 필요가 없고, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 변수인 lfnstLastScanPos는 0으로 초기화될 수 있다. 도 21의 lfnstLastScanPos 변수는 코딩 유닛이 포함하는 변환 블록들의 lastScanPos를 더한 값일 수 있다. 이때, lfnstLastScanPos가 임계 값보다 크고, 도 15에서 설명한 조건 i), ii), iii), iv), v), vii)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다. 반면, lfnstLastScanPos가 임계 값 이하인 경우, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 2차 변환이 적용되지 않음을 나타낸다.
임계 값은 treeType에 따라 설정될 수 있다. treeType이 SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA인 경우, 임계 값은 각각 Th1, Th2, Th3로 설정될 수 있다. Th1, Th2, Th3은 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. treeType이 SINGLE_TREE인 경우, 루마, 크로마 성분을 모두 포함하므로, 임계 값인 Th1은 Th2와 Th3의 합으로 표현될 수도 있다.
도 22는 본 발명의 또 다른 실시예에 따른 residual_coding 신택스 구조를 나타낸 도면이다.
도 22는 상술한 도 21에 따른 residual_coding 신택스 구조를 나타낸 것으로, 변환 블록의 너비 및 높이가 4 이상이고, 변환 블록에 변환 스킵이 적용되지 않을 때, lfnstLastScanPos는 아래 수학식 5와 같이 설정될 수 있다. 다시 말하면 log2TbWidth>=2이고, log2TbHeight>=2이고, transform_skip_flag[x0][y0]가 0인 경우, lfnstLastScanPos는 아래 수학식 5와 같이 설정될 수 있다. 이때, transform_skip_flag[x0][y0]가 0이면 현재 변환 블록에 변환 스킵이 적용되지 않는 경우를 의미할 수 있다.
Figure PCTKR2020008301-appb-img-000005
위 수학식 5에서 lfnstLastScanPos는 코딩 유닛이 포함하는 변환 블록들의 lastScanPos를 모두 더한 값으로, 도 21에서 설명한 바와 같이 lfnstLastScanPos와 임계 값을 비교하여 lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다.
제3 실시예에서는 numSigCoeff 카운터(counter)를 lfnst_idx[x0][y0] 파싱에 이용하지 않으므로, 유효 계수(significant coefficient)의 개수(numSigCoeff)는 카운팅(counting)되지 않을 수 있다.
한편, 코딩 유닛은 코딩 유닛과 동일한 사이즈를 루트 노드로 하여 변환 트리(transform tree)에 의해 분할되는 변환 유닛을 포함할 수 있다. 이때, 변환 유닛은 각각의 컬러 성분에 대한 변환 블록을 포함할 수 있다. 2차 변환이 코딩 유닛 레벨에서 지시되는 경우, 코딩 유닛이 포함하는 모든 변환 블록에 대하여 레지듀얼 코딩(residual coding)이 수행된 후, 계수 정보에 기반하여 lfnst_idx[x0][y0]가 파싱될 수 있다. 다른 실시예로 2차 변환은 변환 유닛 레벨에서 지시될 수도 있다. 2차 변환이 변환 유닛 레벨에서 지시되는 경우, 코딩 유닛이 포함하는 각각의 변환 유닛은 각기 다른 lfnst_idx[x0][y0]를 사용할 수 있다. 따라서, 인코더는 각각의 변환 유닛에 최적화된 lfnst_idx[x0][y0]를 찾을 수 있고 부호화 효율을 더욱 향상시킬 수 있다. 또한, 2차 변환이 코딩 유닛 레벨에서 지시되고, 코딩 유닛이 4개의 변환 유닛을 포함하는 경우, lfnst_idx[x0][y0]가 파싱되기 위해서는 4개의 변환 유닛이 포함하는 모든 변환 블록에 대한 레지듀얼 코딩(residual coding)이 처리되어야 한다. 즉, 디코더가 첫 번째 변환 유닛에 대해 레지듀얼 코딩(residual coding)을 통한 변환 계수를 획득하더라도, lfnst_idx[x0][y0] 값을 획득하지 못했기 때문에, 디코더는 첫 번째 변환 유닛에 대한 역변환을 수행할 수 없다. 이는 디코더의 버퍼 사이즈를 증가시킬 뿐만 아니라, 디코더에서 과도한 지연 시간을 초래할 수 있다.
도 18 내지 도 22에서 기술한 제1 실시예 내지 제3 실시예는, 2차 변환이 변환 유닛 레벨에서 지시되는 경우에도 적용될 수 있다. 2차 변환이 코딩 유닛 레벨에서 지시되는 경우, 제1 실시예 내지 제3 실시예에 따라 코딩 유닛이 포함하는 변환 블록들의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치에 기반하여, lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다. 또한, 2차 변환이 변환 유닛 레벨에서 지시되는 경우, 제1 실시예 내지 제3 실시예에 따라, 변환 유닛이 포함하는 변환 블록들의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치에 기반하여 lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다.
이하 본 명세서에서는, 2차 변환이 변환 유닛 레벨에서 지시되는 구체적인 방법에 대해 설명한다.
도 23은 본 발명의 실시예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 23에 따르면, numSigCoeff 카운터(counter)대신, residual_coding에서 획득되는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 이용하여 lfnst_idx[x0][y0]는 파싱될 수 있다.
먼저, residual_coding 수행 전에 스캔 순서 상의 마지막 유효 계수 위치와 관련된 변수인 lfnstLastScanPos는 1로 초기화될 수 있다. lfnstLastScanPos 변수가 1일 경우, 변환 유닛이 포함하는 모든 변환 블록들에 대하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값보다 작거나 블록 내의 변환 계수가 모두 0임을 나타내는 것일 수 있다. lfnstLastScanPos 변수가 0일 경우, 변환 유닛이 포함하는 하나 이상의 변환 블록들에 대하여 블록 내에 유효 계수(significant coefficient)가 하나 이상 존재하며, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값 이상임을 나타내는 것일 수 있다. 상술한 제1 실시예에 따르면, 변환 블록의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치에 기반하여 설정되는 lfnstLastScanPos가 0이고, 후술하는 조건 i), ii), iii), iv), v), vi)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다.
lfnst_idx[x0][y0] 신택스 요소 파싱 조건
i) Min(lfnstWidth, lfnstHeight)>=4
먼저 첫 번째 조건은, 블록 크기(사이즈)와 관련된 것으로, 블록의 너비 및 높이가 각각 4픽셀 이상일 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 디코더는 2차 변환을 적용할 수 있는 블록 사이즈 조건을 검사할 수 있다. 변수 SubWidthC, SubHeightC는 컬러 포맷에 따라 설정되는 것으로, 각각 픽쳐의 루마 성분의 너비, 높이 대비 크로마 성분의 너비, 높이의 비를 나타낼 수 있다. 예를 들어, 4:2:0 컬러 포맷 영상은, 루마 샘플 4개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 2로 설정될 수 있다. 다른 예로, 4:4:4 컬러 포맷 영상은, 루마 샘플 1개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 1로 설정될 수 있다. 현재 블록의 수평 방향 샘플 수인 lfnstWidth, 수직 방향 샘플 수인 lfnstHeight는 SubWidthC, SubHeightC에 기반하여 설정될 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, 변환 유닛은 크로마 성분만을 포함하므로, 크로마 변환 블록의 수평 방향 샘플 수는 루마 변환 블록의 너비인 tbWidth를 SubWidthC로 나눈 값과 같다. 마찬가지로, 크로마 변환 블록의 수직 방향 샘플 수는 루마 변환 블록의 높이인 tbHeight를 SubHeightC로 나눈 값과 같다. treeType이 SINGLE_TREE이거나 DUAL_TREE_LUMA인 경우, 변환 유닛은 루마 성분을 포함하므로 lnfnstWidth, lfnstHeight은 각각 tbWidth, tbHeight로 설정될 수 있다. 2차 변환이 적용될 수 있는 블록의 최소 조건은 4x4이므로, Min(lfnstWidth, lfnstHeight)>=4를 만족할 경우, lfnst_idx[x0][y0]는 파싱될 수 있다.
ii) sps_lfnst_enabled_flag==1
두 번째 조건은, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그 값에 관한 것으로, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그(sps_lfnst_enabled_flag) 값이 1로 설정되었을 때, 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다.
구체적으로, 2차 변환은 상위 레벨 신택스 RBSP에서 지시될 수 있다. SPS, PPS, VPS, 타일 그룹 헤더, 슬라이스 헤더 중의 적어도 하나에 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 1-bit 크기를 가지는 플래그가 포함될 수 있다. sps_lfnst_enabled_flag가 1일 경우, 변환 유닛 신택스 내에 lfnst_idx[x0][y0] 신택스 요소가 존재함을 나타낸다. sps_lfnst_enabled_flag가 0일 경우, 변환 유닛 신택스 내에 lfnst_idx[x0][y0] 신택스 요소가 존재하지 않는 것을 나타낸다.
iii) CuPredMode[x0][y0]==MODE_INTRA
세 번째 조건은, 예측 모드에 관한 것으로, 2차 변환은 인트라 예측된 블록에만 적용될 수 있다. 따라서, 현재 블록이 인트라 예측된 블록인 경우, 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다.
iv) IntraSubPartitionsSplitType==ISP_NO_SPLIT
네 번째 조건은, ISP 예측 방법이 적용되는지 여부와 관련된 것으로, 현재 블록에 ISP가 적용되지 않을 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 도 11을 참고하여 설명한 바와 같이, 현재 CU에 대하여 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우, 분할된 변환 유닛에는 2차 변환이 적용되지 않을 수 있다. 이때, 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 현재 CU에 대하여 변환 트리(transform tree)가 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우는 ISP 예측이 현재 코딩 유닛에 적용되는 경우를 포함할 수 있다. ISP 예측 방법은 현재 코딩 유닛에 인트라 예측이 적용되는 경우, 기 설정된 분할 방법에 따라 변환 트리(transform tree)를 CU 크기보다 작은 다수의 변환 유닛으로 분할하는 예측 방법일 수 있다. 코딩 유닛 레벨에서 ISP 예측 모드가 지시될 수 있고, 이에 기반하여 IntraSubPartitionsSplitType 변수가 설정될 수 있다. 이때, IntraSubPartitionsSplitType이 ISP_NO_SPLIT인 경우, 현재 블록에 ISP가 적용되지 않음을 나타낸다. 변환 유닛 레벨에서 예측 샘플을 생성하는 인트라 예측의 특성 상, 변환 트리(transform tree)를 분할하여 다수의 변환 유닛으로 분할하였을 때가 분할하지 않았을 때보다 예측의 정확도가 높아질 수 있다. 따라서 분할된 다수의 변환 유닛에 2차 변환이 적용되지 않더라도, 잔차 신호의 에너지가 효율적으로 압축(compaction)될 가능성이 높다.
v) !intra_mip_flag[x0][y0]
다섯 번째 조건은, 인트라 예측 방법에 관한 것으로, 현재 코딩 유닛 예측에 MIP(Matrix based Intra Predicition)가 적용되지 않는 경우, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 인트라 예측의 한 방법으로 MIP (Matrix based Intra Prediction)가 사용될 수 있고, MIP의 적용 여부는 코딩 유닛 레벨에서 intra_mip_flag[x0][y0]로 지시될 수 있다. Intra_mip_flag[x0][y0]가 1인 경우, MIP가 현재 코딩 유닛의 예측에 적용됨을 나타낼 수 있고, 현재 블록 주변의 복원된 샘플들과 기 설정된 행렬의 곱으로 예측이 수행될 수 있다. MIP가 적용되면, 방향성 또는 무방향성 예측을 수행하는 일반적인 인트라 예측과는 다른 잔차 신호의 성질을 보이므로, MIP가 적용될 때에는 변환 블록에 2차 변환은 적용되지 않을 수 있다.
vi) numZeroOutSigCoeff==0
여섯 번째 조건은, 특정 위치에 존재하는 유효 계수(significant coefficient)와 관련된 것이다.
구체적으로, 현재 블록에 2차 변환이 적용되는 경우, 디코더에서 양자화된 변환 계수는 특정 위치에서 항상 0일 수 있다. 따라서, 특정 위치에서 0이 아닌 양자화 계수가 존재하는 경우, 2차 변환이 적용되지 않은 것이므로, 특정 위치에서의 유효 계수(significant coefficient)의 개수에 따라 lfnst_idx[x0][y0]는 파싱될 수 있다. 예를 들어, numZeroOutSigCoeff가 0이 아니면, 특정 위치에 유효 계수(significant coefficient)가 존재하는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 반면에, numZeroOutSigCoeff가 0이면, 특정 위치에 유효 계수(significant coefficient)가 존재하지 않는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱될 수 있다.
상술한 제1 실시예에 기초하여 현재 블록에 2차 변환이 적용되는지 여부가 변환 유닛 레벨에서 지시되는 경우, 도 19에서 설명한 residual_coding 방법을 따를 수 있다. 도 19에서 설명한 lfnstLastScanPos를 결정하는 수학식 1에 따라 변환 유닛이 포함하는 모든 변환 블록들의 lastScanPos가 임계 값보다 작거나 모든 변환 블록의 계수가 모두 0이면 lfnstLastScanPos는 1로 결정되고, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 현재 블록에 2차 변환이 적용되지 않음을 나타낸다. 반면, 변환 유닛이 포함하는 변환 블록들 중 어느 하나라도 lastScanPos가 임계 값 이상일 경우, lfnstLastScanPos는 0으로 결정될 수 있고, 도 23에서 설명한 조건 i), ii), iii), iv), v), vi)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여, 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다.
상술한 제2 실시예에 기초하여 2차 변환이 적용되는지 여부가 변환 유닛 레벨에서 지시되는 경우, 도 23에서 기술하는 변환 유닛 신택스 구조가 적용될 수 있으며, 도 20에서 설명한 residual_coding 방법이 사용될 수 있다. 도 20에서 설명한 lfnstLastScanPos를 결정하는 수학식 4에 따라 변환 유닛이 포함하는 모든 변환 블록들의 lastScanPos가 임계 값보다 작거나 모든 변환 블록의 계수가 모두 0인 경우, lfnstLastScanPos는 1로 결정될 수 있고, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 현재 블록에 2차 변환이 적용되지 않음을 나타낸다. 한편, 변환 유닛이 포함하는 변환 블록들 중 하나라도 lastScanPos가 임계 값 이상일 경우, lfnstLastScanPos는 0으로 결정될 수 있고, 도 23에서 설명한 조건 i), ii), iii), iv), v), vi)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는, lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다.
도 24는 본 발명의 또 다른 실시예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
상술한 제3 실시예에 따르면, numSigCoeff 카운터(counter) 대신, residual_coding에서 획득하는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 활용하여 lfnst_idx[x0][y0]가 파싱될 수 있다.
residual_coding 수행 전에 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 변수인 lfnstLastScanPos은 0으로 초기화될 수 있다. 변수 lfnstLastScanPos는 변환 유닛이 포함하는 변환 블록들의 lastScanPos를 더한 값일 수 있다. 이때, lfnstLastScanPos가 임계 값보다 크고, 도 23에서 설명한 조건 i), ii), iii), iv), v), vi)이 모두 만족되는 경우(모두 참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다. 반면, lfnstLastScanPos가 임계 값 이하인 경우, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 2차 변환이 적용되지 않음을 나타낸다.
임계 값은 treeType에 따라 설정될 수 있다. treeType이 SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA인 경우, 임계 값은 각각 Th1, Th2, Th3로 설정될 수 있다. Th1, Th2, Th3은 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. treeType이 SINGLE_TREE인 경우, 루마, 크로마 성분을 모두 포함하므로, 임계 값인 Th1은 Th2와 Th3의 합으로 표현될 수도 있다.
상술한 제3 실시예에 기초하여 2차 변환이 적용되는지 여부가 변환 유닛 레벨에서 지시되는 경우, 도 22에서 설명한 residual_coding 방법이 사용될 수 있다. 도 22에서 설명한 lfnstLastScanPos를 결정하는 수학식 5에 따라 변수 lfnstLastScanPos는 변환 유닛이 포함하는 변환 블록들의 lastScanPos를 모두 더한 값으로 설정될 수 있다. 그리고, lfnstLastScanPos와 임계 값을 비교하여 lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다.
한편, 변환 유닛 레벨에서 2차 변환이 지시되는 경우, 코딩 유닛이 포함하는 변환 유닛들 간에는 상관 관계가 높을 수 있다. 이는 예측의 방법이 코딩 유닛 레벨에서 결정되기 때문이다. 따라서, 코딩 유닛이 포함하는 첫 번째 변환 유닛에서만 lfnst_idx[x0][y0]가 시그널링되고, 시그널링된 lfnst_idx[x0][y0]는 나머지 변환 유닛들과 공유될 수 있다. 즉, 변환 유닛의 인덱스를 나타내는 subTuIndex가 0인 경우에만 상술한 제1 실시예 내지 제3 실시예를 사용하여 lfnst_idx[x0][y0]가 파싱될 수도 있다. subTuIndex가 0보다 큰 경우에 이에 해당하는 변환 유닛들은 lfnst_idx[x0][y0]를 파싱하지 않고, 공유되는 첫 번째 변환 유닛의 lfnst_idx[x0][y0]의 값을 이용할 수 있다.
한편, 유효 계수(significant coefficient)를 카운팅하기 위한 카운터가 사용될 수 있지만, 디코더가 lfnst_idx[x0][y0]를 파싱할 것인지 여부는 변환 블록의 좌-상단 서브 블록 내에 존재하는 유효 계수(significant coefficient)만을 고려하여 결정될 수 있다. 이는 연산량을 감소시키기 위함이다.
한편, 2차 변환이 변환 유닛 레벨에서 지시되는 경우, 코딩 유닛 레벨에서 지시되는 경우보다 디코더의 지연 시간은 감소될 수 있지만, 또 다른 지연 시간이 발생할 수 있다. 예를 들어, 2차 변환이 변환 유닛 레벨에서 지시되더라도, 루마 변환 계수, Cb 변환 계수, Cr 변환 계수의 코딩이 모두 완료된 후에 2차 변환이 지시된다. 따라서, 루마 변환 계수의 코딩(처리)이 모두 완료되더라도, Cb 변환 계수 및 Cr 변환 계수의 코딩(처리)가 완료된 후에 루마 변환 계수에 대한 역변환 처리가 이루어질 수 있다. 이는 디코더의 또 다른 지연 시간을 초래한다.
이하 본 명세서에서는, 디코더의 지연 시간을 최소화할 수 있는 2차 변환 지시방법에 대해 설명한다.
(제4 실시예)
디코더의 지연 시간을 최소화할 수 있는 2차 변환 지시 방법의 일 예로, 2차 변환은 변환 유닛 레벨에서 지시되지만, 루마 변환 계수 코딩 이전에 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]를 파싱하는 방법이 있을 수 있다. 따라서, 디코더는, Cb 변환 계수 및 Cr 변환 계수 코딩을 기다리지 않고, 루마 변환 계수 코딩이 완료 후, 즉시 루마 변환 계수에 대한 역변환 프로세스를 진행할 수 있다. 마찬가지로, 디코더는 Cb 변환 계수 코딩이 완료된 후, Cr 변환 계수 코딩을 기다리지 않고 즉시 Cb 변환 계수에 대한 역변환 프로세스를 진행할 수 있다. 이러한 2차 변환 지시 방법은 디코더의 지연 시간을 최소화하며, 파이프라인 문제를 해결할 수 있다.
도 25는 본 발명의 실시예에 따른 코딩 유닛 신택스를 나타낸 도면이다.
도 25를 살펴보면, 2차 변환은 변환 유닛 레벨에서 지시되므로, 2차 변환과 관련된 신택스인 lfnst_idx[x0][y0]는 코딩 유닛 레벨에서 파싱되지 않고, transform_tree에 의해 분할되는 변환 유닛 레벨에서 파싱될 수 있다.
도 26은 본 발명의 또 다른 실시예에 따른 변환 유닛 레벨에서 2차 변환을 지시하는 방법을 나타낸 도면이다.
도 26을 살펴보면, 2차 변환 지시 방법은 변환 유닛 레벨에서 지시될 수 있으며, 루마 및 크로마 변환 계수 코딩(residual_coding) 이전에 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]가 먼저 파싱될 수 있다. 예를 들어, lfnst_idx[x0][y0]가 변환 계수 획득 이전에 먼저 파싱되는 경우, 각각의 컬러 성분 Y, Cb, Cr에 대한 계수 코딩이 완료되는 즉시, Y, Cb, Cr 변환 계수에 대한 역변환이 처리될 수 있다. 예를 들어, Y 성분에 대한 변환 계수 코딩이 완료되는 즉시 루마(Y) 변환 계수에 대한 역변환이 수행될 수 있다. 마찬가지로, Cb 성분에 대한 변환 계수 코딩(residual_coding)이 완료되는 즉시 Cb 변환 계수에 대한 역변환이 수행될 수 있으며, Cr 성분에 대한 변환 계수 코딩(residual_coding)이 완료되는 즉시 Cr 변환 계수에 대한 역변환이 수행될 수 있다.
lfnst_idx[x0][y0]가 Y, Cb, Cr에 대한 변환 계수 코딩(residual_coding) 이후에 파싱 되는 경우, Y에 대한 변환 계수 코딩(residual_coding)이 완료되더라도, Cb, Cr에 대한 변환 계수 코딩(residual_coding)이 완료/처리되지 않으면, Y 변환 계수에 대한 역변환은 수행/처리될 수 없다. 따라서, Y에 대한 변환 계수 코딩(residual_coding)이 완료되더라도, 다른 성분(Cb, Cr) 변환 계수 코딩(residual_coding)이 완료될 때까지 디코더는, Y 변환 계수에 대한 역변환을 수행할 수 없어, 불필요한 지연 시간이 발생한다는 문제가 있었다. 그러나, 상술한 바와 같이, lfnst_idx[x0][y0]가 변환 계수 코딩(residual_coding) 이전에 먼저 파싱된다면, 컬러 성분(Y, Cb, Cr)에 각각에 대한 변환 계수 코딩(residual_coding)이 완료된 직후, 컬러 성분 각각의 변환 계수에 대한 역변환이 수행될 수 있으므로, 디코더의 지연 시간이 최소화되는 효과가 있다.
transform_unit() 신택스 구조에서는, tu_cbf_luma[x0][y0], tu_cbf_cb[x0][y0], tu_cbf_cr[x0][y0], transform_skip_flag[x0][y0] 등이 파싱될 수 있다.
구체적으로, tu_cbf_luma[x0][y0]는 현재 루마 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는지 여부를 나타내는 요소이다. tu_cbf_luma[x0][y0]가 1이면, 현재 루마 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는 것을 나타낼 수 있다. tu_cbf_luma[x0][y0]가 0이면, 현재 루마 변환 블록의 변환 계수가 모두 0임을 나타낼 수 있다. tu_cbf_cb[x0][y0]는 현재 크로마 Cb 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는지를 나타내는 요소이다. tu_cbf_cb[x0][y0]가 1이면, 현재 크로마 Cb 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는 것을 나타낼 수 있다. tu_cbf_cb[x0][y0]가 0이면, 현재 Cb 변환 블록의 변환 계수가 모두 0임을 나타낼 수 있다. tu_cbf_cr[x0][y0]는 현재 크로마 Cr 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는지를 나타내는 요소이다. tu_cbf_cr[x0][y0]가 1이면, 현재 크로마 Cr 변환 블록이 0이 아닌 변환 계수를 하나 이상 포함하는 것을 나타낼 수 있다. tu_cbf_cr[x0][y0]이 0이면, 현재 크로마 Cr 변환 블록의 변환 계수가 모두 0임을 나타낼 수 있다. transform_skip_flag[x0][y0]는 변환 스킵과 관련된 신택스 요소이다. transform_skip_flag[x0][y0]가 1이면, 루마 변환 블록에 역변환이 적용되지 않음을 나타낼 수 있다. transform_skip_flag[x0][y0]가 0이면, 루마 변환 블록에 역변환이 적용되는지 여부는 다른 신택스 요소에 의해 결정되는 것임을 나타낼 수 있다.
도 26에 따른, 2차 변환 지시 방법의 일 실시예로 0이 아닌 변환 계수(significant coefficient)의 개수에 기반하는 것이 아닌, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치에 기반하여 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]가 파싱될 수 있다.
먼저, lfnstLastScanPos 변수는 1로 초기화되어 설정될 수 있다. 변수 lfnstLastScanPos는, 도 23에서 설명한 바와 같이, 현재 변환 유닛이 포함하는 변환 블록의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 나타낼 수 있다. 구체적으로, lfnstLastScanPos가 1일 경우, 변환 유닛이 포함하는 모든 변환 블록들에 대하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값보다 작거나 블록 내의 변환 계수가 모두 0임을 나타낼 수 있다. lfnstLastScanPos가 0일 경우, 변환 유닛이 포함하는 하나 이상의 변환 블록들에 대하여 블록 내에 유효 계수(significant coefficient)가 하나 이상 존재하며, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 (스캔 인덱스)가 임계 값 이상임을 나타낸다.
다음으로, 변수 numZeroOutSigCoeff는 0으로 초기화되어 설정될 수 있다. 변환 블록에 2차 변환이 적용되는 경우, 스캔 순서 상의 특정 위치에서는 유효 계수(significant coefficient)가 존재할 수 없다. 따라서, 변수 numZeroOutSigCoeff는 특정 위치에 유효 계수(significant coefficient)가 존재하는지를 나타내고, 이에 기초하여 2차 변환이 적용되는지 여부가 확인될 수 있다. 예를 들어, 변환 블록에 2차 변환이 적용될 때, 최대 16개의 유효 계수(significant coefficient)만이 허용된다고 가정한다. 4x4, 8x8 크기의 변환 블록에는 스캔 순서 상 인덱스 [0, 7] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 8개의 0이 아닌 변환 계수를 허용). 한편, 4x4, 8x8 이외의 크기를 가지는 변환 블록에는 스캔 순서 상 인덱스 [0, 15] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 16개의 0이 아닌 변환 계수를 허용). 따라서, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 상술한 유효 계수(significant coefficient)가 존재할 수 있는 영역 이외에 존재한다면, 디코더는, 현재 변환 블록에 2차 변환이 적용되지 않음을 자명하게 인식할 수 있다.
스캔 순서 상 마지막 유효 계수 (last significant coefficient)의 위치(스캔 인덱스)에 기반하여, 계수 코딩(residual_coding) 이전에 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]의 파싱 여부가 결정될 수 있다. 따라서, 디코더는 계수 코딩(residual_coding) 이전에 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 정보를 처리할 수 있다.
구체적으로, 현재 루마 변환 블록이 유효 계수(significant coefficient)를 하나 이상 포함하고(tu_cbf_luma[x0][y0] == 1), 현재 루마 변환 블록에 변환 스킵이 적용되지 않는 경우(transform_skip_flag[x0][y0] == 0 ), 루마의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 신택스 구조인 last_significant_pos가 처리될 수 있다.
tu_cbf_luma[x0][y0] 값이 0인 경우(tu_cbf_luma[x0][y0] == 0), 해당 변환 블록의 모든 계수가 0임을 나타내므로, 이는 계수 코딩(residual_coding)이 수행되지 않음을 나타낸다. 따라서, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보에 대한 처리는 수행될 필요가 없다.
transform_skip_flag[x0][y0] 값이 1인 경우, 현재 루마 변환 블록에 역변환이 적용되지 않음을 나타낼 수 있다. 따라서, 계수 코딩(residual_coding)은 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보에 기반하지 않고 수행될 수 있다.
현재 크로마 Cb 변환 블록이 유효 계수(significant coefficient)를 하나 이상 포함하는 경우(tu_cbf_cb[x0][y0] == 1), 크로마 Cb 변환 블록의 스캔 순서 상 0이 아닌 마지막 계수(last significant coefficient)의 위치와 관련된 신택스 구조인 last_significant_pos가 처리될 수 있다. last_significant_pos 신택스 구조는 변환 블록의 좌-상단 좌표인 (x0, y0)와, 변환 블록의 너비에 밑이 2인 log 연산을 취한 값, 변환 블록의 높이에 밑이 2인 log 연산을 취한 값 및 변환 블록이 어떤 컬러 성분인지를 나타내는 변수인 cIdx를 입력으로 받을 수 있다. 예를 들어, cIdx가 0인 경우, 루마 Y 변환 블록을 나타낼 수 있으며, cIdx가 1인 경우 크로마 Cb 변환 블록, cIdx가 2인 경우 크로마 Cr 변환 블록을 나타낼 수 있다. tu_cbf_cb[x0][y0] 값이 0인 경우(tu_cbf_cb[x0][y0] == 0), 해당 변환 블록의 모든 계수가 0임을 나타낸다. 이는 계수 코딩(residual_coding)이 수행되지 않음을 의미하므로, 스캔 순서 상 0이 아닌 마지막 계수(last significant coefficient)의 위치 정보에 대한 처리는 수행될 필요가 없다.
한편, 현재 크로마 Cr 변환 블록이 유효 계수(significant coefficient)를 하나 이상 포함하는 경우 (tu_cbf_cr[x0][y0] == 1), last_significant_pos 처리 이전에 크로마 Cb와 Cr을 하나의 잔차 신호로 표현하는지 여부를 지시하는 신택스 요소인 tu_joint_cbcr_residual[x0][y0]가 파싱될 수 있다. 예를 들어, tu_joint_cbcr_residual[x0][y0]가 1인 경우, Cr에 대한 계수 코딩(residual_coding)은 처리되지 않고, Cr에 대한 잔차 신호는, Cb의 복원된 잔차 신호로부터 유도될 수 있다. 반면, tu_joint_cbcr_residual[x0][y0]가 0인 경우, tu_cbf_cr[x0][y0]의 값에 따라 Cr에 대한 계수 코딩(residual_coding)이 수행될 수 있다. 현재 크로마 Cr 변환 블록이 유효 계수(significant coefficient)를 하나 이상 포함하는 경우(tu_cbf_cr[x0][y0] == 1), 크로마 Cr의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 신택스 구조인 last_significant_pos가 처리될 수 있다. tu_cbf_cr[x0][y0] 값이 0인 경우(tu_cbf_cr[x0][y0] == 0), 크로마 Cr 변환 블록의 모든 계수가 0임을 나타낸다. 이는 계수 코딩(residual_coding)이 수행되지 않는다는 것을 의미하므로, 스캔 순서 상 0이 아닌 마지막 계수(last significant coefficient)의 위치 정보에 대한 처리는 수행될 필요가 없다.
각각의 컬러 성분에 대한 last_significant_pos의 처리가 수행됨에 따라, 각각의 컬러 성분에 대한 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 (스캔 인덱스)를 획득되고, 이에 기반하여 lfnstLastScanPos 및 numZeroOutSigCoeff 값은 업데이트 될 수 있다.
그리고, 후술하는 조건 i), ii), iii), iv), v), vi), vii)이 모두 만족되는 경우(모두 참인 경우), 디코더는 계수 코딩(residual_coding) 이전에 lfnst_idx[x0][y0]를 파싱할 수 있다.
계수 코딩(residual_coding) 이전 lfnst_idx[x0][y0] 신택스 요소 파싱 조건
i) Min(lfnstWidth, lfnstHeight)>=4
먼저 첫 번째 조건은, 블록 크기(사이즈)와 관련된 것으로, 블록의 너비 및 높이가 각각 4픽셀 이상일 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 디코더는 2차 변환을 적용할 수 있는 블록 사이즈 조건을 검사할 수 있다. 변수 SubWidthC, SubHeightC는 컬러 포맷에 따라 설정되는 것으로, 각각 픽쳐의 루마 성분의 너비, 높이 대비 크로마 성분의 너비, 높이의 비를 나타낼 수 있다. 예를 들어, 4:2:0 컬러 포맷 영상은, 루마 샘플 4개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 2로 설정될 수 있다. 다른 예로, 4:4:4 컬러 포맷 영상은, 루마 샘플 1개 당 이에 상응하는 크로마 샘플 1개를 포함하는 구조이므로 SubWidthC와 SubHeightC는 모두 1로 설정될 수 있다. 현재 블록의 수평 방향 샘플 수인 lfnstWidth, 수직 방향 샘플 수인 lfnstHeight는 SubWidthC, SubHeightC에 기반하여 설정될 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, 변환 유닛은 크로마 성분만을 포함하므로, 크로마 변환 블록의 수평 방향 샘플 수는 루마 변환 블록의 너비인 tbWidth를 SubWidthC로 나눈 값과 같다. 마찬가지로, 크로마 변환 블록의 수직 방향 샘플 수는 루마 변환 블록의 높이인 tbHeight를 SubHeightC로 나눈 값과 같다. treeType이 SINGLE_TREE이거나 DUAL_TREE_LUMA인 경우, 변환 유닛은 루마 성분을 포함하므로 lnfnstWidth, lfnstHeight은 각각 tbWidth, tbHeight로 설정될 수 있다. 2차 변환이 적용될 수 있는 블록의 최소 조건은 4x4이므로, Min(lfnstWidth, lfnstHeight)>=4를 만족할 경우, lfnst_idx[x0][y0]는 파싱될 수 있다.
ii) sps_lfnst_enabled_flag==1
두 번째 조건은, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그 값에 관한 것으로, 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 플래그( sps_lfnst_enabled_flag) 값이 1로 설정되었을 때, 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다.
구체적으로, 2차 변환은 상위 레벨 신택스 RBSP에서 지시될 수 있다. SPS, PPS, VPS, 타일 그룹 헤더, 슬라이스 헤더 중의 적어도 하나에 2차 변환의 활성화 또는 적용 가능 여부를 지시하는 1-bit 크기를 가지는 플래그가 포함될 수 있다. sps_lfnst_enabled_flag가 1일 경우, 변환 유닛 신택스 내에 lfnst_idx[x0][y0] 신택스 요소가 존재함을 나타낼 수 있고, sps_lfnst_enabled_flag가 0일 경우, 변환 유닛 신택스 내에 lfnst_idx[x0][y0] 신택스 요소가 존재하지 않음을 나타낼 수 있다.
iii) CuPredMode[x0][y0]==MODE_INTRA
세 번째 조건은, 예측 모드에 관한 것으로, 2차 변환은 인트라 예측된 블록에만 적용될 수 있다. 따라서, 현재 블록이 인트라 예측된 블록인 경우, 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다.
iv) IntraSubPartitionsSplitType==ISP_NO_SPLIT
네번째 조건은, ISP 예측 방법이 적용되는지 여부와 관련된 것으로, 현재 블록에 ISP가 적용되지 않을 때, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 도 11을 참고하여 설명한 바와 같이, 현재 CU에 대하여 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우, 분할된 변환 유닛에는 2차 변환이 적용되지 않을 수 있다. 이때, 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 현재 CU에 대하여 변환 트리(transform tree)가 CU 크기보다 작은 다수의 변환 유닛으로 분할되는 경우는 ISP 예측이 현재 코딩 유닛에 적용되는 경우를 포함할 수 있다. ISP 예측 방법은 현재 코딩 유닛에 인트라 예측이 적용되는 경우, 기 설정된 분할 방법에 따라 변환 트리(transform tree)를 CU 크기보다 작은 다수의 변환 유닛으로 분할하는 예측 방법일 수 있다. 코딩 유닛 레벨에서 ISP 예측 모드가 지시될 수 있고, 이에 기반하여 IntraSubPartitionsSplitType 변수가 설정될 수 있다. IntraSubPartitionsSplitType이 ISP_NO_SPLIT인 경우, 현재 블록에 ISP가 적용되지 않음을 나타낸다. 변환 유닛 레벨에서 예측 샘플을 생성하는 인트라 예측의 특성 상, 변환 트리(transform tree)를 분할하여 다수의 변환 유닛으로 분할하였을 때가 분할하지 않았을 때보다 예측의 정확도가 높아질 수 있다. 따라서, 분할된 다수의 변환 유닛에 2차 변환이 적용되지 않더라도, 잔차 신호의 에너지가 효율적으로 압축(compaction)될 가능성이 높다.
v) !intra_mip_flag[x0][y0]
다섯 번째 조건은, 인트라 예측 방법에 관한 것으로, 현재 코딩 유닛 예측에 MIP(Matrix based Intra Predicition)가 적용되지 않는 경우, 디코더는 lfnst_idx[x0][y0] 신택스 요소를 파싱할 수 있다.
구체적으로, 인트라 예측의 한 방법으로 MIP (Matrix based Intra Prediction)가 사용될 수 있고, MIP의 적용 여부는 코딩 유닛 레벨에서 intra_mip_flag[x0][y0]로 지시될 수 있다. Intra_mip_flag[x0][y0]가 1인 경우, MIP가 현재 코딩 유닛의 예측에 적용됨을 나타낼 수 있고, 현재 블록 주변의 복원된 샘플들과 기 설정된 행렬의 곱으로 예측이 수행될 수 있다. MIP가 적용되면, 방향성 또는 무방향성 예측을 수행하는 일반적인 인트라 예측과는 다른 잔차 신호의 성질을 보이므로, MIP가 적용될 때에는 변환 블록에 2차 변환이 적용되지 않을 수 있다.
vi) lfnstLastScanPos == 0
여섯 번째 조건은, 변환 블록의 스캔 순서 상 마지막 유효 계수(last significant coefficient)와 관련된 것이다.
구체적으로, 현재 변환 유닛이 포함하는 변환 블록의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보 (스캔 인덱스)가 기 설정된 임계 값보다 작은 경우, 2차 변환으로 얻을 수 있는 부호화 효율 이득이 적을 가능성이 높다. 따라서 이러한 경우에는 인코더는 변환 블록에 2차 변환을 적용하지 않을 가능성이 높고(lfnst_idx[x0][y0]는 0), 따라서 인코더가 lfnst_idx[x0][y0]를 시그널링하는 것은 오버헤드가 크다고 볼 수 있다. 따라서, 변환 유닛이 포함하는 변환 블록 중 적어도 하나의 변환 블록에 대하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 기 설정된 임계 값 이상인 경우에만 lfnst_idx[x0][y0]는 파싱될 수 있다.
다시 말하면, 상술한 바와 같이 임계 값은 0 이상의 정수 일 수 있다. 예를 들어, 임계 값이 1이라고 가정하면, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 임계 값 이상이라는 것은, 유효 계수가 블록의 좌상단(스캔 인덱스 0, DC)이외의 위치에 존재한다는 의미일 수 있다. 이때, 변환 블록의 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치가 임계 값 이상이라는 것은, 'lfnstLastScanPos == 0'으로 표현될 수도 있다.
vii) numZeroOutSigCoeff == 0
일곱 번째 조건은, 특정 위치에 존재하는 유효 계수(significant coefficient)와 관련된 것이다.
구체적으로, 현재 블록에 2차 변환이 적용되는 경우, 스캔 위치 상 특정 위치에서는 유효 계수(significant coefficient)가 존재할 수 없다. 즉, numZeroOutSigCoeff 변수는 특정 위치에 0이 아닌 변환 계수가 존재하는지 여부를 나타낸다. 예를 들어, 현재 블록에 2차 변환이 적용될 때, 최대 16개의 유효 계수(significant coefficient)만이 허용된다고 가정한다. 4x4, 8x8 크기의 변환 블록에는 스캔 순서 상 인덱스 [0, 7] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 8개의 0이 아닌 변환 계수를 허용). 한편, 4x4, 8x8 이외의 크기를 가지는 변환 블록에는 스캔 순서 상 인덱스 [0, 15] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 16개의 0이 아닌 변환 계수를 허용). 따라서, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 상술한 유효 계수(significant coefficient)가 존재할 수 있는 영역 이외에 존재한다면, 디코더는, 현재 블록에 2차 변환이 적용되지 않음을 자명하게 인식할 수 있다. 따라서, numZeroOutSigCoeff > 0인 경우, 현재 블록에 2차 변환이 적용되지 않는 것이므로, lfnst_idx[x0][y0]는 파싱되지 않고, 0으로 설정될 수 있다.
다시 말하면, numZeroOutSigCoeff가 0이 아니면, 특정 위치에 유효 계수(significant coefficient)가 존재하는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 반면에, numZeroOutSigCoeff가 0이면, 특정 위치에 유효 계수(significant coefficient)가 존재하지 않는 것을 의미하므로, lfnst_idx[x0][y0]는 파싱될 수 있다.
상술한 조건 i) 내지 vii)이 모두 참인 경우, lfnst_idx[x0][y0]는 파싱될 수 있고, 그렇지 않은 경우에는 lfnst_idx[x0][y0]를 파싱되지 않고 0으로 설정될 수 있다.
도 27은 본 발명의 실시 예에 따른 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치와 관련된 신택스 구조를 나타낸다.
도 27을 살펴보면, last_significant_pos 신택스 구조는 각각의 컬러 성분 Y, Cb, Cr 변환 블록에 대한 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보를 포함하는 신택스 구조를 의미한다. 그리고, last_significant_pos 신택스 구조는 변환 블록의 좌-상단 좌표인 (x0, y0), 변환 블록의 너비에 밑이 2인 log를 취한 log2TbWidth, 변환 블록의 높이에 밑이 2인 log를 취한 log2TbHeight 및 변환 블록의 컬러 성분을 나타내는 cIdx를 입력으로 받을 수 있다. cIdx가 0인 경우, 루마 변환 블록을, cIdx가 1인 경우 크로마 Cb 변환 블록을, cIdx가 2인 경우 크로마 Cr 변환 블록을 나타낼 수 있다.
last_significant_pos 신택스 구조에서는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보와 관련된 신택스 요소가 파싱될 수 있다. 구체적으로, 스캔 순서 상 마지막 유효 계수 (last significant coefficient)의 x좌표 값, y좌표 값과 관련된 신택스 요소가 파싱될 수 있다. 이때, 각각의 좌표 값은 프리픽스(prefix) 정보와 서픽스(suffix) 정보로 분할되어 지시될 수 있다. 디코더는 x좌표에 대한 프리픽스(prefix) 정보와 서픽스(suffix) 정보에 기반하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x좌표인 LastSignificantCoeffX 변수를 설정할 수 있다. 마찬가지로, 디코더는 y좌표에 대한 프리픽스(prefix) 정보와 서픽스(suffix) 정보에 기반하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 y좌표인 LastSignificantCoeffY 변수를 설정할 수 있다. 디코더는 도 27에 나타난 바와 같이, do{ } while() 구조에서 LastSignificantCoeffX, LastSignificantCoeffY, DiagScanOrder에 기반하여 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 스캔 인덱스인 lastScanPos를 설정할 수 있다. 또한, 디코더는 lastScanPos에 기반하여, 2차 변환과 관련된 신택스 요소인 lfnst_idx[x0][y0] 파싱 조건에 활용되는 변수인 numZeroOutSigCoeff와 lfnstLastScanPos를 업데이트할 수 있다.
현재 블록에 2차 변환이 적용되는 경우, 스캔 위치 상 특정 위치에서는 유효 계수가 존재할 수 없다. numZeroOutSigCoeff 변수는 이러한 위치에서 0이 아닌 변환 계수가 존재하는지를 나타낸다. 예를 들어, 현재 블록에 2차 변환이 적용될 때, 최대 16개의 유효 계수(significant coefficient)만이 허용된다고 가정한다. 4x4, 8x8 크기의 변환 블록에는 스캔 순서 상 인덱스 [0, 7] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 8개의 0이 아닌 변환 계수를 허용). 한편, 4x4, 8x8 이외의 크기를 가지는 변환 블록에는 스캔 순서 상 인덱스 [0, 15] 영역에 유효 계수(significant coefficient)가 존재할 수 있다(최대 16개의 0이 아닌 변환 계수를 허용). 따라서, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치(스캔 인덱스)가 상술한 유효 계수(significant coefficient)가 존재할 수 있는 영역 이외에 존재한다면, 디코더는, 현재 블록에 2차 변환이 적용되지 않음을 자명하게 인식할 수 있다. 2차 변환이 적용될 수 있는 블록의 최소 사이즈는 4x4이고, 변환 스킵이 적용되는 경우(transform_skip_flag[x0][y0]==1)에는 2차 변환이 적용되지 않을 수 있다. 따라서, 변환 블록의 너비가 4 이상이고(log2TbWidth>=2), 변환 블록의 높이가 4이상이며(log2TbHeight>=2) 변환 스킵이 적용되지 않는 (transform_skip_flag[x0][y0]==0) 변환 블록에 대하여 numZeroOutSigCoeff는 업데이트 될 수 있다. 2차 변환이 적용되는 경우, 4x4 8x8 크기의 변환 블록에 대해서는 스캔 순서 상 인덱스 [0, 7] 영역에서만 0이 아닌 변환 계수 (significant coefficient)가 존재할 수 있다. 따라서, 변환 블록이 4x4 또는 8x8이고, ((log2TbWidth==2||log2TbHeight==3)&&(log2TbWidth==log2TbHeight)), lastScanPos가 7보다 큰 경우(lastScanPos>7), numZeroOutSigCoeff는 1 증가할 수 있다. 2차 변환이 적용될 수 있는 4x4, 8x8 사이즈를 제외한 블록에 대해서는 스캔 순서 상 인덱스 [0, 15] 영역에서만 0이 아닌 변환 계수(significant coefficient)가 존재할 수 있다. 따라서, lastScanPos가 15보다 큰 경우(lastScanPos>15), numZeroOutSigCoeff는 1 증가할 수 있다.
디코더는 lastScanPos에 기반하여, lfnstLastScanPos를 결정할 수 있다. 구체적으로, 변환 블록의 너비 및 높이가 4 이상이고, 변환 블록에 변환 스킵이 적용되지 않을 때, lfnstLastScanPos는 아래 수학식 6과 같이 설정될 수 있다. 다시 말하면 log2TbWidth>=2이고, log2TbHeight>=2이고, transform_skip_flag[x0][y0]가 0인 경우, lfnstLastScanPos는 아래 수학식 1과 같이 설정될 수 있다. 이때, transform_skip_flag[x0][y0]가 0이면 현재 변환 블록에 변환 스킵이 적용되지 않는 경우를 의미할 수 있다.
Figure PCTKR2020008301-appb-img-000006
상술한 바와 같이 lfnstLastScanPos의 초기화 값은 1로 설정될 수 있다.
수학식 6에서 cIdx는 상술한 바와 같이, 현재 변환 블록의 컬러 성분을 의미하는 변수를 나타낼 수 있다.
수학식 6에 따르면, 직전 lfnstLastScanPos가 1이고 lastScanPos가 lfnstLastScanPosTh[cIdx]보다 작은 경우, lfnstLastScanPos는 1로 업데이트될 수 있다. 한편, 직전 lfnstLastScanPos가 0이거나, lastScanPos가 lfnstScanPosTh[cIdx] 이상인 경우, lfnstLastScanPos는 0으로 업데이트될 수 있다.
다시 말하면, 변환 유닛이 포함하는 모든 변환 블록의 lastScanPos가 임계 값보다 작거나 모든 변환 블록의 계수가 모두 0인 경우, lfnstLastScanPos는 1로 결정될 수 있고, 도 26의 lfnst_idx[x0][y0] 파싱 조건에 따라, lfnst_idx[x0][y0]는 파싱되지 않고 0으로 설정될 수 있다. 이는 현재 블록에 2차 변환이 적용되지 않음을 나타낸다. 반면 변환 유닛이 포함하는 변환 블록들 중 어느 하나라도 lastScanPos가 임계 값 이상일 경우, lfnstLastScanPos는 0으로 결정될 수 있고, 도 26의 조건 i), ii), iii), iv), v), vii)이 모두 만족되는 경우(참인 경우), 디코더는 lfnst_idx[x0][y0]를 파싱할 수 있다. 디코더는 lfnst_idx[x0][y0]를 파싱하여 현재 블록에 2차 변환이 적용되는지 여부를 확인할 수 있고, 현재 블록에 2차 변환이 적용되는 경우, 2차 변환에 사용되는 변환 커널을 확인/결정할 수 있다.
수학식 6의 lfnstLastScanPosTh[cIdx]는 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. 또한, 모든 컬러 성분이 동일한 임계 값을 사용할 수도 있다. 이 경우, lfnstLastScanPos는 아래 수학식 7과 같이 설정될 수 있다.
Figure PCTKR2020008301-appb-img-000007
lfnstLastScanPosTh는 기 설정된 0 이상의 정수 값으로 인코더와 디코더가 모두 동일한 값을 사용할 수 있다. 예를 들어, lfnstLastScanPosTh는 1일 수 있다. 즉, lastScanPos가 1 이상인 경우, lfnstLastScanPos는 0으로 업데이트 될 수 있고, lfnst_idx[x0][y0]는 파싱될 수 있다. 이 때, 임계 값(lfnstLastScanPosTh)는 정수 값이므로, lastScanPos가 1 이상인 경우는 lastScanPos가 0보다 큰 경우와 동일한 의미일 수 있다. 도 27에서는 모든 컬러 성분이 동일한 임계 값인 1인 경우에 대해서 설명하였으나, 본 발명이 이에 한정되는 것은 아니다.
도 28은 본 발명의 실시 예에 따른 residual_coding 신택스 구조를 도시한 도면이다.
도 28을 살펴보면, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보는 계수 코딩(residual_coding) 이전에 지시될 수 있다. 따라서, 계수 코딩(residual_coding) 신택스 구조는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보와 관련된 신택스 구조를 포함하지 않을 수 있다. 예를 들어, 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 위치 정보는 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x좌표에 대한 프리픽스(prefix), 서픽스(suffix), y좌표에 대한 프리픽스(prefix), 서픽스(suffix)일 수 있다. 도 28에 따른 계수 코딩(residual_coding) 신택스 구조를 살펴보면, 계수 코딩(residual_coding) 이전에 결정된 스캔 순서 상 마지막 유효 계수(last significant coefficient)의 x좌표, y좌표인 LastSignificantCoeffX, LastSignificantCoeffY에 기반하여 계수 코딩(residual_coding)이 수행될 수 있다.
제4 실시예에 따른 2차 변환 지시 방법은 numSigCoeff 카운터를 사용하지 않는다. 따라서, (xC, yC) 위치의 계수가 유효 계수(significant coefficient)이더라도 (sig_coeff_flag[xC][yC]==1), numSigCoeff는 업데이트되지 않을 수 있다. 다시 말하면, 제4 실시예에 따른 2차 변환 지시 방법은, 유효 계수(significant coefficient)에 대한 카운터를 사용하지 않는 방법일 수 있다. 또한 제4 실시예에 따른 2차 변환 지시 방법에 의하면 lastScanPos에 기반하여 numZeroOutSigCoeff 변수가 설정될 수 있으므로, 계수 코딩(residual_coding)에서 sig_coeff_flag에 기반하는 카운터는 사용되지 않을 수 있다.
도 29는 본 발명의 실시 예에 따른 비디오 신호 처리 방법을 나타낸 순서도이다.
이하에서는 도 15 내지 도 28을 통해 설명한 실시예들에 기초한 비디오 신호 처리 방법 및 장치에 대해 설명한다.
비디오 신호 복호화 장치는, 도 29에서 설명하는 비디오 신호 처리 방법을 수행하는 프로세서를 포함할 수 있다.
먼저, 상기 프로세서는 코딩 유닛의 2차 변환과 관련된 신택스 요소가 포함된 비트스트림을 수신할 수 있다.
상기 프로세서는, 기 설정된 하나 이상의 조건들이 만족되는지 여부를 확인하여, 상기 기 설정된 하나 이상의 조건들이 만족되는 경우, 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱(parsing)할 수 있다(S2910, S2920). 한편, 프로세서는, 기 설정된 하나 이상의 조건들이 만족되지 못하는 경우, 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱하지 않을 수 있다(S2930). 이때, 2차 변환과 관련된 신택스 요소의 값은 0으로 설정될 수 있다.
도 29에서 설명하는 코딩 유닛의 2차 변환과 관련된 신택스 요소는 도 15 내지 도 28에서 설명한 현재 코딩 유닛에 포함되는 변환 블록 2차 변환이 적용되는지 여부를 나타내는 신택스 요소인 lfnst_idx[x0][y0]일 수 있다.
상기 프로세서는 S2920단계를 통해 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱하고, 상기 파싱된 신택스 요소에 기초하여, 상기 코딩 유닛에 포함되는 변환 블록에 상기 2차 변환이 적용되는지 여부를 확인할 수 있다(S2940).
이때, 상기 변환 블록에 상기 2차 변환이 적용된 경우, 프로세서는 상기 변환 블록을 구성하는 하나 이상의 서브블록들 중 하나인 제1 서브블록의 하나 이상의 계수들에 기초한 2차 역변환을 수행하여, 상기 제1 서브블록에 대한 하나 이상의 역변환 계수들을 획득할 수 있다(S2950).
그리고, 상기 프로세서는 S2950단계에서 획득한 상기 하나 이상의 역변환 계수들에 기초한 1차 역변환을 수행하여, 상기 변환 블록에 대한 잔차 샘플을 획득할 수 있다(S2960).
상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)일 수 있다. 그리고 상기 변환 블록은 수직 변환 및 수평 변환으로 각각 분리되어 수행되는 1차 변환이 적용된 블록일 수 있다. 이때, 상기 1차 역변환은 상기 1차 변환에 대한 역변환이고, 상기 2차 역변환은 상기 2차 변환에 대한 역변환을 의미하는 것일 수 있다.
상기 코딩 유닛의 2차 변환과 관련된 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함할 수 있다.
상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록일 수 있고, 이때, 상기 제1 서브블록의 인덱스는 0일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우일 수 있다. 이때, 상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고, 상기 유효 계수는 0이 아닌(non-zero) 계수를 의미하는 것일 수 있다. 상기 기 설정된 임계 값은 0일 수 있다. 상기 기 설정된 스캔 순서는, 도 13, 14에서 설명한 우상측 대각 스캔 순서(up-right diagonal)일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 변환 블록의 너비(Width) 및 높이(Height)가 4픽셀 이상일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우일 수 있다. 이때, 상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 변환 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제4 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 적어도 하나의 계수는 0이 아니고, 상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우일 수 있다. 이때, 상기 기 설정된 스캔 순서에 따른 첫 번째 위치는 상술한 바와 같이 수평, 수직 좌표의 값이 (0, 0)인 위치를 의미하거나, 기 설정된 스캔 순서(예: 우상측 대각(up-right diagonal) 순서)에 따른 첫 번째 위치를 의미하는 것일 수 있다.
또한, 상기 코딩 유닛은 복수의 코딩 블록들로 구성될 수 있다. 이때, 상기 복수의 코딩 블록 각각에 대응하는 변환 블록들 중 적어도 어느 하나라도 상기 기 설정된 하나 이상의 조건들을 만족하는 경우 상기 2차 변환과 관련된 신택스 요소는 파싱될 수 있다.
한편, 2차 변환과 관련된 신택스 요소가 파싱되지 않거나 0으로 설정된 경우(S2930) 또는 S2940 단계에서 상기 코딩 유닛에 포함되는 변환 블록에 상기 2차 변환이 적용되지 않는 것으로 확인된 경우 프로세서는, 상기 변환 블록의 하나 이상 계수들에 기초한 1차 역변환을 수행하여 상기 변환 블록에 대한 잔차 샘플을 획득할 수 있다(S2970).
이때, 상술한 1차 역변환, 2차 역변환은 각각 1차 변환, 2차 변환에 대한 역변환일 수 있다.
도 29에서 설명한 비디오 신호 복호화 장치에서 수행되는 비디오 신호 처리 방법 또는 이와 유사한 방법이 비디오 신호 부호화 장치에서 수행될 수 있다.
비디오 신호 부호화 장치는, 비디오 신호를 부호화하는 프로세서를 포함할 수 있다.
이때, 상기 프로세서는, 코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득할 수 있다. 상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득할 수 있다. 상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하여 비트스트림(bitstream)을 획득할 수 있다.
상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고, 상기 1차 변환은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능할 수 있다.
또한, 상기 2차 변환과 관련된 신택스 요소는 기 설정된 하나 이상의 조건들을 만족하는 경우 부호화될 수 있다. 상기 2차 변환과 관련된 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함할 수 있다. 이때, 상기 2차 변환과 관련된 신택스 요소는 도 15 내지 도 28에서 설명한 신택스 요소인 lfnst_idx[x0][y0]일 수 있다.
상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록일 수 있다. 이때, 상기 제1 서브블록의 인덱스는 0일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 하나 이상의 2차 변환 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우일 수 있다. 이때, 상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고, 상기 유효 계수는 0이 아닌(non-zero) 계수를 의미하는 것일 수 있다. 상기 기 설정된 임계 값은 0일 수 있다. 상기 기 설정된 스캔 순서는, 도 13, 14에서 설명한 우상측 대각 스캔 순서(up-right diagonal)일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 1차 변환 블록의 너비(Width) 및 높이(Height)는 4픽셀 이상일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우일 수 있다. 이때, 상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것일 수 있다.
상기 기 설정된 하나 이상의 조건들 중 제4 조건은, 상기 하나 이상의 2차 변환 계수들 중 적어도 하나의 계수는 0이 아니고, 상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우일 수 있다. 이때, 상기 기 설정된 스캔 순서에 따른 첫 번째 위치는 상술한 바와 같이 수평, 수직 좌표의 값이 (0, 0)인 위치를 의미하거나, 기 설정된 스캔 순서(예: 우상측 대각(up-right diagonal) 순서)에 따른 첫 번째 위치를 의미하는 것일 수 있다.
또한, 상기 코딩 유닛은 복수의 코딩 블록들로 구성될 수 있다. 이때, 상기 복수의 코딩 블록 각각에 대응하는 코딩 유닛에 포함되는 (변환) 블록들 중 적어도 어느 하나라도 상기 기 설정된 하나 이상의 조건들을 만족하는 경우 상기 2차 변환과 관련된 신택스 요소는 부호화 될 수 있다.
또한, 비디오 신호 부호화 장치는 도 29에서 설명한 비디오 신호 처리 방법을 수행하는 비디오 신호 복호화 프로세서를 포함할 수 있다.
상술한 바와 같이, 비트스트림에는 도 15 내지 도 29에서 설명한 코딩 유닛의 2차 변환과 관련된 신택스 요소가 포함될 수 있다. 이때, 상기 비트스트림은 비-일시적인(non-transitory) 컴퓨터 판독 가능 매체(computer-readable medium)에 저장될 수 있다. 한편, 비디오 신호 부호화 장치는 상술한 기 설정된 하나 이상의 조건들이 만족되지 못하는 경우, 2차 변환과 관련된 신택스 요소를 상기 비트스트림에 포함하지 않거나, 2차 변환과 관련된 신택스 요소를 0으로 설정할 수 있다. 비트스트림은, 도 29를 통해 설명한 비디오 신호 복호화 장치에 의해 복호화 되거나, 상술한 비디오 신호 부호화 장치에 의해 부호화 될 수 있다.
이러한 비트스트림을 부호화하는 방법은, 예를 들어, 코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득하고, 상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득하고, 및 상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하는 과정을 포함하는 부호화 방법일 수 있다.
본 명세서에서 설명하는 계수를 획득한다는 것은, 계수와 관련된 픽셀/블록을 획득한다는 의미일 수 있고, 잔차 샘플을 획득한다는 것은, 잔차 샘플과 관련된 잔차 신호/픽셀/블록을 획득한다는 의미일 수 있다.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 프로세서의 내부 또는 외부에 위치할 수 있으며, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고받을 수 있다.
일부 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조 또는 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아는 것으로 해석해야 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 비디오 신호 복호화 장치에 있어서,
    프로세서를 포함하며,
    상기 프로세서는,
    기 설정된 하나 이상의 조건들을 만족하는 경우 비디오 신호의 비트스트림(bitstream)으로부터 코딩 유닛의 2차 변환과 관련된 신택스 요소를 파싱(parsing) 하고,
    상기 파싱된 신택스 요소에 기초하여, 상기 코딩 유닛에 포함되는 변환 블록에 상기 2차 변환이 적용되는지 여부를 확인하고,
    상기 변환 블록에 상기 2차 변환이 적용되는 경우, 상기 변환 블록을 구성하는 하나 이상의 서브블록들 중 하나인 제1 서브블록의 하나 이상의 계수들에 기초한 2차 역변환을 수행하여, 상기 제1 서브블록에 대한 하나 이상의 역변환 계수들을 획득하고,
    상기 하나 이상의 역변환 계수들에 기초한 1차 역변환을 수행하여, 상기 변환 블록에 대한 잔차 샘플을 획득하되,
    상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고,
    상기 변환 블록은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능한(separable) 1차 변환이 적용된 블록이고,
    상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우인 것을 특징으로 하는 비디오 신호 복호화 장치.
  2. 제 1항에 있어서,
    상기 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함하는 것을 특징으로 하는 비디오 신호 복호화 장치.
  3. 제 1항에 있어서,
    상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고,
    상기 유효 계수는 0이 아닌(non-zero) 계수인 것을 특징으로 하는 비디오 신호 복호화 장치.
  4. 제 1항에 있어서,
    상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록인 것을 특징으로 하는 비디오 신호 복호화 장치.
  5. 제 1항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 변환 블록의 너비(Width) 및 높이(Height)는 4픽셀 이상인 것을 특징으로 하는 비디오 신호 복호화 장치.
  6. 제 1항에 있어서,
    상기 기 설정된 임계 값은 0인 것을 특징으로 하는 비디오 신호 복호화 장치.
  7. 제 3항에 있어서,
    상기 기 설정된 스캔 순서는, 우상측 대각(up-right diagonal) 스캔 순서인 것을 특징으로 하는 비디오 신호 복호화 장치.
  8. 제 1항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우이고,
    상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 변환 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것을 특징으로 하는 비디오 신호 복호화 장치.
  9. 제 1항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제4 조건은, 상기 제1 서브블록의 상기 하나 이상의 계수들 중 적어도 하나의 계수는 0이 아니고,
    상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우인 것을 특징으로 하는 비디오 신호 복호화 장치.
  10. 제 1항에 있어서,
    상기 코딩 유닛은 복수의 코딩 블록들로 구성되고,
    상기 복수의 코딩 블록 각각에 대응하는 변환 블록들 중 적어도 어느 하나라도 상기 기 설정된 하나 이상의 조건들을 만족하는 경우 상기 2차 변환과 관련된 신택스 요소는 파싱되는 것을 특징으로 하는 비디오 신호 복호화 장치.
  11. 비디오 신호 부호화 장치에 있어서,
    프로세서를 포함하며,
    상기 프로세서는,
    코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득하고,
    상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득하고,
    상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하여 비트스트림(bitstream)을 획득하되,
    상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고,
    상기 1차 변환은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능(separable)하고,
    상기 코딩 유닛의 2차 변환과 관련된 신택스 요소는 기 설정된 하나 이상의 조건들을 만족하는 경우 부호화되며, 및
    상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 하나 이상의 2차 변환 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우 인 것을 특징으로 하는 비디오 신호 부호화 장치.
  12. 제 11항에 있어서,
    상기 신택스 요소는, 상기 코딩 유닛에 상기 2차 변환이 적용되는지 여부를 지시하는 정보 및 상기 2차 변환에 사용되는 변환 커널을 지시하는 정보를 포함하는 것을 특징으로 하는 비디오 신호 부호화 장치.
  13. 제 11항에 있어서,
    상기 제1 계수는 기 설정된 스캔 순서에 따른 마지막 유효 계수(last significant coefficient)이고,
    상기 유효 계수는 0이 아닌(non-zero) 계수인 것을 특징으로 하는 비디오 신호 부호화 장치.
  14. 제 11항에 있어서,
    상기 제1 서브블록은 기 설정된 스캔 순서에 따른 첫 번째 서브블록인 것을 특징으로 하는 비디오 신호 부호화 장치.
  15. 제 11항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제2 조건은, 상기 1차 변환 블록의 너비(Width) 및 높이(Height)는 4픽셀 이상인 것을 특징으로 하는 비디오 신호 부호화 장치.
  16. 제 11항에 있어서,
    상기 기 설정된 임계 값은 0인 것을 특징으로 하는 비디오 신호 부호화 장치.
  17. 제 13항에 있어서,
    상기 기 설정된 스캔 순서는, 우상측 대각(up-right diagonal) 스캔 순서인 것을 특징으로 하는 비디오 신호 부호화 장치.
  18. 제 11항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제3 조건은, 상기 비트스트림에 포함된 변환 스킵 플래그(flag) 값이 특정 값이 아닌 경우이고,
    상기 변환 스킵 플래그 값이 상기 특정 값을 가지는 경우, 상기 변환 스킵 플래그는 상기 블록에 상기 1차 변환 및 상기 2차 변환이 적용되지 않음을 지시하는 것을 특징으로 하는 비디오 신호 부호화 장치.
  19. 제 11항에 있어서,
    상기 기 설정된 하나 이상의 조건들 중 제4 조건은,
    상기 하나 이상의 2차 변환 계수들 중 적어도 하나의 계수는 0이 아니고,
    상기 적어도 하나의 계수는 기 설정된 스캔 순서에 따른 첫 번째 위치를 제외한 곳에 존재하는 경우인 것을 특징으로 하는 비디오 신호 부호화 장치.
  20. 비트스트림(bitstream)을 저장하는 비-일시적인(non-transitory) 컴퓨터 판독 가능 매체(computer-readable medium)에 있어서,
    상기 비트스트림은,
    코딩 유닛에 포함되는 블록의 잔차 샘플에 대한 1차 변환을 수행하여 상기 블록에 대한 복수 개의 1차 변환 계수들을 획득하는 단계;
    상기 복수 개의 1차 변환 계수들 중 하나 이상의 계수들에 기초한 2차 변환을 수행하여, 상기 블록을 구성하는 서브블록들 중 하나인 제1 서브블록에 대한 하나 이상의 2차 변환 계수들을 획득하는 단계; 및
    상기 하나 이상의 2차 변환 계수들에 대한 정보 및 상기 코딩 유닛의 2차 변환과 관련된 신택스 요소를 부호화하는 단계; 를 포함하는 부호화 방법을 통해 부호화되고,
    상기 2차 변환은, 저대역 비-분리 변환(Low Frequency Non-Separable Transform, LFNST)이고,
    상기 1차 변환은 수직 변환 및 수평 변환으로 각각 분리되어 수행 가능(separable)하고,
    상기 2차 변환과 관련된 신택스 요소는 기 설정된 하나 이상의 조건들을 만족하는 경우부호화되며, 및
    상기 기 설정된 하나 이상의 조건들 중 제1 조건은, 상기 하나 이상의 2차 변환 계수들 중 제1 계수의 위치를 나타내는 인덱스 값이 기 설정된 임계 값보다 큰 경우인 것을 특징으로 하는 컴퓨터 판독 가능 매체.
PCT/KR2020/008301 2019-06-25 2020-06-25 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치 WO2020262995A1 (ko)

Priority Applications (19)

Application Number Priority Date Filing Date Title
CN202211664714.3A CN115941976A (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
CN202080002631.0A CN112438050B (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
CN202211654911.7A CN115967811A (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
KR1020237019410A KR20230088845A (ko) 2019-06-25 2020-06-25 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치
EP24160181.4A EP4354863A3 (en) 2019-06-25 2020-06-25 Video signal processing method and apparatus using secondary transform
CN202211654904.7A CN115941975A (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
KR1020227024898A KR102544252B1 (ko) 2019-06-25 2020-06-25 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치
CN202211654921.0A CN116016947A (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
EP20797644.0A EP3790275A4 (en) 2019-06-25 2020-06-25 VIDEO SIGNAL PROCESSING METHOD AND APPARATUS USING SECONDARY TRANSFORMATION
CN202211654918.9A CN116055745A (zh) 2019-06-25 2020-06-25 使用二次变换的视频信号处理方法及装置
JP2020562152A JP7091479B2 (ja) 2019-06-25 2020-06-25 2次変換を利用するビデオ信号処理方法及び装置
KR1020207032652A KR102423840B1 (ko) 2019-06-25 2020-06-25 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치
US17/088,110 US11330302B2 (en) 2019-06-25 2020-11-03 Video signal processing method and apparatus using secondary transform
US17/716,956 US11736729B2 (en) 2019-06-25 2022-04-08 Video signal processing method and apparatus using secondary transform
JP2022096604A JP7351973B2 (ja) 2019-06-25 2022-06-15 2次変換を利用するビデオ信号処理方法及び装置
US18/341,936 US20230345048A1 (en) 2019-06-25 2023-06-27 Video signal processing method and apparatus using secondary transform
US18/341,966 US20230336782A1 (en) 2019-06-25 2023-06-27 Video signal processing method and apparatus using secondary transform
US18/341,983 US20230345049A1 (en) 2019-06-25 2023-06-27 Video signal processing method and apparatus using secondary transform
JP2023149119A JP2023161005A (ja) 2019-06-25 2023-09-14 2次変換を利用するビデオ信号処理方法及び装置

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR10-2019-0075438 2019-06-25
KR20190075438 2019-06-25
KR10-2019-0080390 2019-07-03
KR20190080390 2019-07-03
KR10-2019-0081763 2019-07-07
KR20190081763 2019-07-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/088,110 Continuation US11330302B2 (en) 2019-06-25 2020-11-03 Video signal processing method and apparatus using secondary transform

Publications (1)

Publication Number Publication Date
WO2020262995A1 true WO2020262995A1 (ko) 2020-12-30

Family

ID=74059779

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/008301 WO2020262995A1 (ko) 2019-06-25 2020-06-25 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치

Country Status (6)

Country Link
US (5) US11330302B2 (ko)
EP (2) EP3790275A4 (ko)
JP (3) JP7091479B2 (ko)
KR (3) KR20230088845A (ko)
CN (6) CN115941976A (ko)
WO (1) WO2020262995A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240064337A1 (en) * 2019-10-04 2024-02-22 Lg Electronics Inc. Transform-based image coding method, and device therefor

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017191782A1 (en) * 2016-05-04 2017-11-09 Sharp Kabushiki Kaisha Systems and methods for coding transform data
US11172211B2 (en) * 2019-04-04 2021-11-09 Tencent America LLC Method and apparatus for video coding
WO2021010680A1 (ko) * 2019-07-12 2021-01-21 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
CN117640934A (zh) * 2019-07-12 2024-03-01 Lg电子株式会社 图像编码方法、图像解码方法以及发送方法
US11425376B2 (en) * 2019-08-23 2022-08-23 Apple Inc. Image signal encoding/decoding method and apparatus therefor
US11943478B2 (en) * 2019-09-19 2024-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Allowing a matrix based intra prediction block to have multiple transform blocks
US11184617B2 (en) * 2019-09-19 2021-11-23 Qualcomm Incorporated Transform unit design for video coding
CN118714309A (zh) * 2019-09-19 2024-09-27 数码士有限公司 使用缩放处理的视频信号处理方法及装置
KR20220061245A (ko) * 2019-09-20 2022-05-12 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩 장치, 방법 및 컴퓨터 프로그램
CN117560508A (zh) * 2019-09-21 2024-02-13 Lg电子株式会社 图像编码/解码设备以及发送数据的设备
EP4035360A1 (en) * 2019-09-24 2022-08-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Efficient implementation of matrix-based intra-prediction
US12114015B2 (en) * 2019-12-12 2024-10-08 Hfi Innovation Inc. Methods and apparatus for restricted secondary transform and signaling thereof in image coding
US11457229B2 (en) * 2019-12-23 2022-09-27 Qualcomm Incorporated LFNST signaling for chroma based on chroma transform skip
US12095997B2 (en) * 2020-01-10 2024-09-17 Lg Electronics Inc. Transform-based image coding method and device for same
US11582491B2 (en) * 2020-03-27 2023-02-14 Qualcomm Incorporated Low-frequency non-separable transform processing in video coding
US20210321137A1 (en) * 2020-03-30 2021-10-14 Qualcomm Incorporated Low-frequency non-separable transform index signaling in video coding
US20230142928A1 (en) * 2020-04-02 2023-05-11 Lg Electronics Inc. Transform-based image coding method and device therefor
US20220150518A1 (en) * 2020-11-11 2022-05-12 Tencent America LLC Method and apparatus for video coding
US11792431B2 (en) * 2021-04-07 2023-10-17 Tencent America LLC Orthogonal transform generation with subspace constraint
US20240205456A1 (en) * 2021-04-12 2024-06-20 Lg Electronics Inc. Image coding method and apparatus therefor
US11863775B2 (en) * 2021-07-21 2024-01-02 Tencent America LLC Cross-component transform coefficient level reconstruction
US11991360B2 (en) * 2021-08-30 2024-05-21 Tencent America LLC Method and apparatus for secondary transform with adaptive kernel options

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180048739A (ko) * 2015-09-30 2018-05-10 엘지전자 주식회사 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치
WO2018174402A1 (ko) * 2017-03-21 2018-09-27 엘지전자 주식회사 영상 코딩 시스템에서 변환 방법 및 그 장치
KR20190003950A (ko) * 2016-05-03 2019-01-10 퀄컴 인코포레이티드 2차 변환 인덱스 이진화

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491922B2 (en) * 2015-09-29 2019-11-26 Qualcomm Incorporated Non-separable secondary transform for video coding
WO2017191782A1 (en) * 2016-05-04 2017-11-09 Sharp Kabushiki Kaisha Systems and methods for coding transform data
JP7198268B2 (ja) 2017-07-31 2022-12-28 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート 画像復号化方法、画像符号化方法及びコンピュータ可読記録媒体
US10567801B2 (en) * 2018-03-07 2020-02-18 Tencent America LLC Method and apparatus for video coding with primary and secondary transforms
CN115379216A (zh) * 2018-06-03 2022-11-22 Lg电子株式会社 视频信号的解码、编码和发送设备及存储视频信号的介质
CN116055719A (zh) * 2018-09-05 2023-05-02 Lg电子株式会社 对图像信号进行编码/解码的设备及发送图像信号的设备
US11172211B2 (en) * 2019-04-04 2021-11-09 Tencent America LLC Method and apparatus for video coding
US11218728B2 (en) * 2019-06-04 2022-01-04 Tencent America LLC Method and apparatus for video coding
US11695960B2 (en) * 2019-06-14 2023-07-04 Qualcomm Incorporated Transform and last significant coefficient position signaling for low-frequency non-separable transform in video coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180048739A (ko) * 2015-09-30 2018-05-10 엘지전자 주식회사 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치
KR20190003950A (ko) * 2016-05-03 2019-01-10 퀄컴 인코포레이티드 2차 변환 인덱스 이진화
WO2018174402A1 (ko) * 2017-03-21 2018-09-27 엘지전자 주식회사 영상 코딩 시스템에서 변환 방법 및 그 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KOO, Moonmo et al. CE6: Reduced Secondary Transform (RST) (CE6-3.1). JVET-N0193. Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH. 27 March 2019. See pages 2-3. *
NASER, Karam et al. CE6-Related: NSST with 8 Coefficients Computation. JVET-N0509-v3. Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH. 22 March 2019. See pages 1-2. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240064337A1 (en) * 2019-10-04 2024-02-22 Lg Electronics Inc. Transform-based image coding method, and device therefor

Also Published As

Publication number Publication date
KR20230088845A (ko) 2023-06-20
KR102423840B1 (ko) 2022-07-22
CN115967811A (zh) 2023-04-14
EP4354863A2 (en) 2024-04-17
CN112438050B (zh) 2023-01-17
KR20210002106A (ko) 2021-01-06
US20210076070A1 (en) 2021-03-11
CN116055745A (zh) 2023-05-02
JP7351973B2 (ja) 2023-09-27
US11330302B2 (en) 2022-05-10
CN115941976A (zh) 2023-04-07
KR102544252B1 (ko) 2023-06-16
JP7091479B2 (ja) 2022-06-27
JP2022113848A (ja) 2022-08-04
US11736729B2 (en) 2023-08-22
CN116016947A (zh) 2023-04-25
JP2021531669A (ja) 2021-11-18
CN112438050A (zh) 2021-03-02
US20230345049A1 (en) 2023-10-26
EP3790275A4 (en) 2022-03-16
US20230345048A1 (en) 2023-10-26
EP4354863A3 (en) 2024-04-24
CN115941975A (zh) 2023-04-07
EP3790275A1 (en) 2021-03-10
US20230336782A1 (en) 2023-10-19
KR20220103833A (ko) 2022-07-22
US20220239948A1 (en) 2022-07-28
JP2023161005A (ja) 2023-11-02

Similar Documents

Publication Publication Date Title
WO2020262995A1 (ko) 2차 변환을 이용하는 비디오 신호 처리 방법 및 장치
WO2020145805A1 (ko) 다중 변환 커널을 사용하는 비디오 신호 처리 방법 및 장치
WO2020149648A1 (ko) 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치
WO2020076143A1 (ko) 다중 가정 예측을 사용하는 비디오 신호 처리 방법 및 장치
WO2020218861A1 (ko) 다중 변환 커널을 사용하는 비디오 신호 처리 방법 및 장치
WO2020180102A1 (ko) 영상 코딩 시스템에서 컨텍스트 코딩된 사인 플래그를 사용하는 영상 디코딩 방법 및 그 장치
WO2021054797A1 (ko) 스케일링 프로세스를 사용하는 비디오 신호 처리 방법 및 장치
WO2020149608A1 (ko) 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치
WO2020171592A1 (ko) 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치
WO2020171681A1 (ko) 인트라 예측 기반 비디오 신호 처리 방법 및 장치
WO2018124333A1 (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2021107641A1 (ko) 적응적 컬러 공간 변환을 이용하는 비디오 신호 처리 방법 및 장치
WO2015137785A1 (ko) 샘플값 보상을 위한 영상 부호화 방법과 그 장치, 및 샘플값 보상을 위한 영상 복호화 방법과 그 장치
WO2021086055A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2016190627A1 (ko) 비디오 신호 처리 방법 및 장치
WO2021172912A1 (ko) 사인 데이터 하이딩 관련 영상 디코딩 방법 및 그 장치
WO2020145795A1 (ko) 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치
WO2020213976A1 (ko) Bdpcm을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2021060905A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2021025530A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2021201549A1 (ko) 레지듀얼 코딩에 대한 영상 디코딩 방법 및 그 장치
WO2024091002A1 (ko) 비디오 신호 처리 방법 및 이를 위한 장치
WO2021137556A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2021096174A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2021054787A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2020562152

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 20207032652

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020797644

Country of ref document: EP

Effective date: 20201106

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20797644

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE