WO2020185036A1 - 비디오 신호를 처리하기 위한 방법 및 장치 - Google Patents

비디오 신호를 처리하기 위한 방법 및 장치 Download PDF

Info

Publication number
WO2020185036A1
WO2020185036A1 PCT/KR2020/003539 KR2020003539W WO2020185036A1 WO 2020185036 A1 WO2020185036 A1 WO 2020185036A1 KR 2020003539 W KR2020003539 W KR 2020003539W WO 2020185036 A1 WO2020185036 A1 WO 2020185036A1
Authority
WO
WIPO (PCT)
Prior art keywords
block size
maximum
block
current block
transform block
Prior art date
Application number
PCT/KR2020/003539
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
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Publication of WO2020185036A1 publication Critical patent/WO2020185036A1/ko

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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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

  • Embodiments of the present specification relate to a video/video compression coding system, and more particularly, to a method and apparatus for performing transformation in an encoding/decoding process of 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.
  • Media such as video, image, and audio may be subject to compression encoding.
  • a technique for performing compression encoding on an image is referred to as video image compression.
  • Next-generation video content will be characterized by high spatial resolution, high frame rate, and high dimensionality of scene representation. In order to process such content, it will bring a tremendous increase in terms of memory storage, memory access rate, and processing power.
  • a prediction signal is generated through prediction of a video signal, and a transform is applied to a residual signal generated by subtracting the prediction signal from an original video signal.
  • Various transformation techniques are being discussed in order to reduce computational complexity and processing time while improving compression efficiency for transformation.
  • An embodiment of the present specification provides a method and apparatus for determining a block size to which a transform can be applied efficiently and applying a transform.
  • Embodiments of the present specification provide a method and apparatus for processing a video signal.
  • a method of decoding a video signal includes obtaining information on a maximum transformed block size indicating a maximum transformed block size value from the video signal, and a width of a current block based on the maximum transformed block size information. Or checking whether a height is greater than the maximum transformed block size value, and based on the width or height of the current block being greater than the maximum transformed block size value, dividing the current block in a horizontal direction or a vertical direction And generating a residual sample by applying an inverse transform to a transform block divided from the current block, wherein the maximum transform block size information indicates one of predefined maximum transform block size candidate values. .
  • the step of determining whether the maximum transform block size value is greater than the value of the maximum transform block size comprises determining whether an ISP (intra sub-partition) intra prediction is applied to the current block, and the ISP intra prediction is performed. If not applied, it may include the step of checking whether it is greater than the maximum transform block size value.
  • ISP intra sub-partition
  • the dividing of the current block comprises: if the width of the current block is larger than the maximum transformed block size value, dividing the current block into two blocks based on a half of the width. And, when the height of the current block is greater than the maximum transform block size value, dividing the current block into two blocks based on a half of the height.
  • the maximum transform block size information may be included in a sequence parameter set (SPS), a picture parameter set (PPS), or a tile group header of the video signal.
  • SPS sequence parameter set
  • PPS picture parameter set
  • tile group header of the video signal.
  • the predefined maximum transform block size candidate values may include 32 and 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a logarithm of a base of 2 with respect to the maximum transform block size value.
  • the decoding method of the video signal includes the steps of checking a maximum SBT block size to which a sub-block transform (SBT) can be applied, and the width and height of the current block are both greater than the maximum SBT block size value. It may further include parsing an SBT flag indicating whether SBT is applied to the current block, based on less than or equal to, wherein the maximum SBT block size is determined based on the maximum transform block size information. I can.
  • SBT sub-block transform
  • the decoding method of the video signal includes checking a maximum CIIP block size to which a combined inter and intra prediction (CIIP) can be applied, and the width and height of the current block are both the maximum CIIP block size values. It may further include parsing a CIIP flag indicating whether or not CIIP is applied to the current block based on less than or equal to.
  • CIIP combined inter and intra prediction
  • a video signal encoding method includes determining a maximum transform block size value, encoding maximum transform block size information indicating the maximum transform block size value, and the maximum transform block size. Checking whether the width or height of the current block is greater than the maximum transformed block size value based on information, and based on the width or height of the current block being greater than the maximum transformed block size value, the current block Dividing in a horizontal direction or a vertical direction, and generating a transform coefficient by applying a transform to a transform block divided from the current block, wherein the maximum transform block size information is a predefined maximum transform block size. One of the candidate values is indicated.
  • a video signal decoding apparatus includes a memory for storing the video signal, and a processor coupled to the memory and for processing the video signal.
  • the processor obtains maximum transform block size information indicating a maximum transform block size value from the video signal, and whether the width or height of the current block is greater than the maximum transform block size value based on the maximum transform block size information.
  • a video signal encoding apparatus includes a memory for storing the video signal, and a processor coupled to the memory and for processing the video signal.
  • the processor determines a maximum transform block size value, encodes maximum transform block size information indicating the maximum transform block size value, and the width or height of the current block is the maximum transform based on the maximum transform block size information. It checks whether it is greater than a block size value, and based on the width or height of the current block being greater than the maximum transform block size value, the current block is divided in a horizontal direction or a vertical direction, and the current block is divided from the current block. It is set to generate a transform coefficient by applying a transform to a transform block, and the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • FIG. 1 shows an example of an image coding system according to an embodiment of the present specification.
  • FIG. 2 shows an example of a schematic block diagram of an encoding apparatus in which encoding of a video signal is performed according to an embodiment of the present specification.
  • FIG. 3 shows an example of a schematic block diagram of a decoding apparatus for decoding an image signal according to an embodiment of the present specification.
  • FIG. 4 shows an example of a content streaming system according to an embodiment of the present specification.
  • FIG 5 shows an example of a video signal processing apparatus according to an embodiment of the present specification.
  • FIG. 6 illustrates an example of a picture division structure according to an embodiment of the present specification.
  • FIG. 7A to 7D illustrate an example of a block division structure according to an embodiment of the present specification.
  • FIG 8 shows an example of a case in which the ternary tree (TT) and the binary tree (BT) are divided according to an embodiment of the present specification.
  • FIG. 9 is a block diagram for entropy encoding according to an embodiment of the present specification.
  • 10A and 10B illustrate an entropy encoding method and related components according to an embodiment of the present specification.
  • 11A and 11B illustrate an entropy decoding method and related components according to an embodiment of the present specification.
  • FIG. 12 is an example of a flowchart for encoding a picture constituting a video signal according to an embodiment of the present specification.
  • FIG. 13 is an example of a flowchart for decoding a picture constituting a video signal according to an embodiment of the present specification.
  • FIG. 14 illustrates an example of a hierarchical structure for a coded image according to an embodiment of the present specification.
  • FIG. 15A and 15B illustrate an example of block division according to an intra sub-partition (ISP) according to an embodiment of the present specification.
  • ISP intra sub-partition
  • FIG. 16 illustrates an example of a video signal encoding procedure according to an embodiment of the present specification.
  • FIG 17 shows an example of a video signal decoding procedure according to an embodiment of the present specification.
  • a video signal or a video signal includes data necessary for encoding/decoding as well as data (eg, sample values) for representing the video or image.
  • a'processing unit' means a unit in which an encoding/decoding process such as prediction, transformation, and/or quantization is performed.
  • the processing unit may be interpreted as including a unit for a luma component and a unit for a chroma component.
  • the processing unit may correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), or a transform unit (TU).
  • CTU coding tree unit
  • CU coding unit
  • PU prediction unit
  • TU transform unit
  • the processing unit may be interpreted as a unit for a luminance component or a unit for a color difference component.
  • the processing unit corresponds to a coding tree block (CTB), a coding block (CB), a prediction block (PB), or a transform block (TB) for a luminance component. can do.
  • the processing unit may correspond to CTB, CB, PB, or TB for the color difference component.
  • the present invention is not limited thereto, and the processing unit may be interpreted as including a unit for a luminance component and a unit for a color difference component.
  • the processing unit is not necessarily limited to a square block, and may be configured in a polygonal shape having three or more vertices.
  • a pixel or a pixel is collectively referred to as a sample.
  • using a sample may mean using a pixel value or a pixel value.
  • the image coding system may include a source device 10 and a reception device 20.
  • the source device 10 may transmit the encoded video/video information or data in a file or streaming format to the receiving device 20 through a digital storage medium or a network.
  • the source device 10 may include a video source 11, an encoding device 12, and a transmitter 13.
  • the receiving device 20 may include a receiver 21, a decoding device 22 and a renderer 23.
  • the encoding device 12 may be referred to as a video/image encoding device, and the decoding device 22 may be referred to as a video/image decoding device.
  • the transmitter 13 may be included in the encoding device 12.
  • the receiver 21 may be included in the decoding device 22.
  • the renderer 23 may include a display unit, and the display unit may be configured as a separate device or an external component.
  • the video source 11 may acquire a video/image through a process of capturing, synthesizing, or generating a video/image.
  • the video source 11 may include a video/image capturing device and/or a video/image generating device.
  • the video/image capturing device may include, for example, one or more cameras, and a video/image archive including previously captured video/images.
  • Video/image generating devices may include, for example, computers, tablets, and smartphones, and may (electronically) generate video/images.
  • a virtual video/image may be generated through a computer, and in this case, a video/image capturing process may be substituted as a process of generating related data.
  • the encoding device 12 may encode an input video/video.
  • the encoding apparatus 12 may perform a series of procedures such as prediction, transformation, and quantization for compression and coding efficiency.
  • the encoded data (encoded video/video information) may be output in the form of a bitstream.
  • the transmitter 13 may transmit the encoded video/video information or data output in the form of a bitstream to the receiver 21 of the receiving device 20 through a digital storage medium or a network in a file or streaming form.
  • Digital storage media include USB (universal serial bus), SD card (secure digital card), CD (compact disc), DVD (digital versatile disc), Blu-ray disc, HDD (hard disk drive), SSD (solid state drive) may include a variety of storage media.
  • the transmitter 13 may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast/communication network.
  • the receiver 21 may extract the bitstream and transmit it to the decoding device 22.
  • the decoding device 22 may decode the video/video by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device 12.
  • the renderer 23 may render the decoded video/image.
  • the rendered video/image may be displayed through the display unit.
  • FIG. 2 shows an example of a schematic block diagram of an encoding apparatus in which encoding of a video signal is performed according to an embodiment of the present specification.
  • the encoding device 100 of FIG. 2 may correspond to the encoding device 12 of FIG. 1.
  • the encoding apparatus 100 includes an image partitioning module 110, a subtraction module 115, a transform module 120, and a quantization module. (130), a de-quantization module (140), an inverse-transform module (150), an addition module (155), a filtering module (160), a memory A (memory) 170, an inter prediction module 180, an intra prediction module 185, and an entropy encoding module 190 may be included.
  • the inter prediction unit 180 and the intra prediction unit 185 may be collectively referred to as a prediction unit. That is, the prediction unit may include an inter prediction unit 180 and an intra prediction unit 185.
  • the transform unit 120, the quantization unit 130, the inverse quantization unit 140, and the inverse transform unit 150 may be included in a residual processing unit.
  • the residual processing unit may further include a subtraction unit 115.
  • the above-described image segmentation unit 110, subtraction unit 115, transform unit 120, quantization unit 130, inverse quantization unit 140, inverse transform unit 150, addition unit 155, filtering unit 160 ), the inter prediction unit 180, the intra prediction unit 185, and the entropy encoding unit 190 may be configured by one hardware component (eg, an encoder or a processor) according to an embodiment.
  • the memory 170 may include a decoded picture buffer (DPB) 175 and may be configured by a digital storage medium.
  • DPB decoded picture buffer
  • the image segmentation unit 110 may divide an input image (or picture, frame) input to the encoding apparatus 100 into one or more processing units.
  • the processing unit may be referred to as a coding unit (CU).
  • the coding unit may be recursively partitioned from a coding tree unit (CTU) or a largest coding unit (LCU) according to a quad-tree binary-tree (QTBT) structure.
  • CTU coding tree unit
  • LCU largest coding unit
  • QTBT quad-tree binary-tree
  • one coding unit may be divided into a plurality of coding units of a deeper depth based on a quad tree structure and/or a binary tree structure.
  • a quad tree structure may be applied first and a binary tree structure may be applied later.
  • the binary tree structure may be applied first.
  • a coding procedure according to an embodiment of the present specification may be performed based on a final coding unit that is no longer divided.
  • the maximum coding unit may be directly used as the final coding unit based on coding efficiency according to image characteristics.
  • the coding unit is recursively divided into coding units of a lower depth, so that a coding unit having an optimal size may be used as a final coding unit.
  • the coding procedure may include procedures such as prediction, transformation, and restoration described below.
  • the processing unit may further include a prediction unit (PU) or a transform unit (TU).
  • the prediction unit and the transform unit may be divided from the above-described coding units, respectively.
  • the prediction unit may be a unit of sample prediction
  • the transform unit may be a unit for inducing a transform coefficient or a unit for inducing a residual signal from the transform coefficient.
  • the term "unit” used in this document may be used interchangeably with terms such as "block” or "area” in some cases.
  • the MxN block may represent a set of samples or transform coefficients consisting of M columns and N rows.
  • a sample may generally represent a pixel or a value of a pixel, may represent a pixel/pixel value of a luminance component, or a pixel/pixel value of a saturation component.
  • a sample may be used as a term corresponding to one picture (or image) as a pixel or pel.
  • the encoding apparatus 100 subtracts a prediction signal (predicted block, prediction sample array) output from the inter prediction unit 180 or the intra prediction unit 185 from the input video signal (original block, original sample array)
  • a signal residual signal, residual block, residual sample array
  • the generated residual signal is transmitted to the conversion unit 120.
  • a unit that subtracts the prediction signal (prediction block, prediction sample array) from the input image signal (original block, original sample array) in the encoding apparatus 100 may be referred to as a subtraction unit 115.
  • the prediction unit may perform prediction on a block to be processed (hereinafter, referred to as a current block) and generate a predicted block including prediction samples for the current block.
  • the prediction module may determine whether intra prediction or inter prediction is applied on a per CU basis.
  • the prediction unit may generate information about prediction, such as prediction mode information, as described later in the description of each prediction mode, and may transmit information about prediction to the entropy encoding unit 190.
  • Information about prediction is encoded by the entropy encoding unit 190 and may be output in the form of a bitstream.
  • the intra prediction unit 185 may predict the current block by referring to samples in the current picture.
  • the referenced samples may be located in the vicinity of the current block or may be located away from each other according to the prediction mode.
  • prediction modes may include a plurality of non-directional modes and a plurality of directional modes.
  • the non-directional mode may include, for example, a DC mode and a planar mode (Planar mode).
  • the directional mode may include, for example, 33 directional prediction modes or 65 directional prediction modes according to a detailed degree of the prediction direction. However, this is an example, and more or less directional prediction modes may be used depending on the setting.
  • the intra prediction unit 185 may determine a prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
  • the inter prediction unit 180 may derive a predicted block for the current block based on a reference block (reference sample array) specified by a motion vector on the reference picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the inter prediction unit 180 may predict motion information in units of blocks, subblocks, or samples based on the correlation between motion information between neighboring blocks and the current block have.
  • the motion information may include a motion vector and a reference picture index.
  • the motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information.
  • the neighboring block may include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in the reference picture.
  • the reference picture including the reference block and the reference picture including the temporal neighboring block may be the same or different.
  • the temporal neighboring block may be referred to as a collocated reference block or a colCU (colCU), and a reference picture including the temporal neighboring block may be referred to as a collocated picture (colPic).
  • the inter prediction unit 180 constructs a motion information candidate list based on motion information of neighboring blocks, and indicates which candidate is used to derive a motion vector and/or a reference picture index of the current block. Can generate information. Inter prediction may be performed based on various prediction modes. For example, when a skip mode and a merge mode are used, the inter prediction unit 180 may use motion information of a neighboring block as motion information of a current block.
  • a residual signal is not transmitted.
  • MVP motion vector prediction
  • MVD motion vector difference
  • the prediction unit may generate a prediction signal (prediction sample) based on various prediction methods described later. For example, the prediction unit may not only apply intra prediction or inter prediction to predict one block, but also apply intra prediction and inter prediction together (simultaneously). This may be referred to as CIIP (combined inter and intra prediction). Also, the prediction unit may perform intra block copy (IBC) to predict a block. IBC may be used for content (eg, game) video/video coding, such as, for example, screen content coding (SCC). Also, IBC may be referred to as CPR (current picture referencing). IBC basically performs prediction in the current picture, but can be performed similarly to inter prediction in that it derives a reference block in the current picture. That is, the IBC may use at least one of the inter prediction techniques described in this document.
  • IBC intra block copy
  • the prediction signal generated by the prediction unit may be used to generate a reconstructed signal or may be used to generate a residual signal.
  • the transform unit 120 may generate transform coefficients by applying a transform technique to the residual signal.
  • the transformation technique uses at least one of DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), KLT (Karhunen-Loeve Transform), GBT (Graph-Based Transform), or CNT (Conditionally Non-linear Transform).
  • DCT Discrete Cosine Transform
  • DST Discrete Sine Transform
  • KLT Kerhunen-Loeve Transform
  • GBT Graph-Based Transform
  • CNT Conditionally Non-linear Transform
  • GBT refers to transformation obtained from a graph representing relationship information between pixels.
  • CNT refers to a transformation obtained based on the prediction signal and generating a prediction signal using all previously reconstructed pixels.
  • the conversion process may be applied to a pixel block having the
  • the quantization unit 130 quantizes the transform coefficients and transmits the quantized transform coefficients to the entropy encoding unit 190.
  • the entropy encoding unit 190 may encode a quantized signal (information on quantized transform coefficients) and output it as a bitstream. Information about the quantized transform coefficients may be referred to as residual information.
  • the quantization unit 130 may rearrange the quantized transform coefficients in a block form into a one-dimensional vector form based on a coefficient scan order, and quantize the quantized transform coefficients based on the characteristics of the quantized transform coefficients in a one-dimensional vector form. It is also possible to generate information about transform coefficients.
  • the entropy encoding unit 190 may perform various encoding techniques such as exponential Golomb, context-adaptive variable length coding (CAVLC), and context-adaptive binary arithmetic coding (CABAC).
  • the entropy encoding unit 190 may encode information necessary for video/image restoration (eg, values of syntax elements) in addition to quantized transform coefficients together or separately.
  • the encoded information (eg, video/video information) may be transmitted or stored in a bitstream format in units of network abstraction layer (NAL) units.
  • the video/video information may further include information on various parameter sets, such as adaptation parameter set (APS), picture parameter set (PPS), sequence parameter set (SPS), or video parameter set (VPS).
  • Signaled/transmitted information and/or syntax elements described later in this document may be encoded through the above-described encoding procedure and included in the bitstream.
  • the bitstream may be transmitted over a network or may be stored in a digital storage medium.
  • the network may include a broadcasting network and/or a communication network
  • the digital storage medium may include a storage medium such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • a transmission unit (not shown) for transmitting and/or a storage unit (not shown) for storing may be configured as internal/external elements of the encoding apparatus 100, or the transmission unit It may be a component of the entropy encoding unit 190.
  • the quantized transform coefficients output from the quantization unit 130 may be used to generate a reconstructed signal.
  • a residual signal may be restored by applying inverse quantization and inverse transform through the inverse quantization unit 140 and the inverse transform unit 150 in the loop for the quantized transform coefficients.
  • the addition unit 155 adds the reconstructed residual signal to the prediction signal output from the inter prediction unit 180 or the intra prediction unit 185 to obtain a reconstructed signal (a reconstructed picture, a reconstructed block, and a reconstructed sample array). Can be generated.
  • the predicted block may be used as a reconstructed block.
  • the addition unit 155 may be referred to as a restoration unit or a restoration block generation unit.
  • the generated reconstructed signal may be used for intra prediction of the next processing target block in the current picture, and may be used for inter prediction of the next picture through filtering as described later.
  • the filtering unit 160 may improve subjective/objective image quality by applying filtering to the reconstructed signal.
  • the filtering unit 160 may apply various filtering methods to the reconstructed picture to generate a modified reconstructed picture, and may transmit the modified reconstructed picture to the DPB 175 of the memory 170.
  • Various filtering methods may include, for example, deblocking filtering, sample adaptive offset (SAO), adaptive loop filter (ALF), and bilateral filter.
  • the filtering unit 160 may generate filtering information and transmit the filtering information to the entropy encoding unit 190 as described later in the description of each filtering method.
  • the filtering information may be output in the form of a bitstream through entropy encoding in the entropy encoding unit 190.
  • the modified reconstructed picture transmitted to the DPB 175 may be used as a reference picture in the inter prediction unit 180.
  • the encoding apparatus 100 may avoid prediction mismatch between the encoding apparatus 100 and the decoding apparatus 200 by using the modified reconstructed picture, and may improve encoding efficiency.
  • the DPB 175 may store the modified reconstructed picture for use as a reference picture in the inter prediction unit 180.
  • the stored motion information may be transmitted to the inter prediction unit 180 for use as motion information of a spatial neighboring block or motion information of a temporal neighboring block.
  • the memory 170 may store reconstructed samples of reconstructed blocks in the current picture, and transfer information on the reconstructed samples to the intra prediction unit 185.
  • FIG. 3 shows an example of a schematic block diagram of a decoding apparatus for decoding an image signal according to an embodiment of the present specification.
  • the decoding device 200 of FIG. 3 may correspond to the decoding device 22 of FIG. 1.
  • the decoding apparatus 200 includes an entropy decoding module 210, a de-quantization module 220, an inverse transform module 230, and an adder. (addition module) 235, filtering module 240, memory 250, inter prediction module 260, and intra prediction module 265 may be included. have.
  • the inter prediction unit 260 and the intra prediction unit 265 may be collectively referred to as a prediction module. That is, the prediction unit may include an inter prediction unit 180 and an intra prediction unit 185.
  • the inverse quantization unit 220 and the inverse transform unit 230 may be collectively referred to as a residual processing module. That is, the residual processing unit may include an inverse quantization unit 220 and an inverse transform unit 230.
  • the entropy decoding unit 210, the inverse quantization unit 220, the inverse transform unit 230, the addition unit 235, the filtering unit 240, the inter prediction unit 260, and the intra prediction unit 265 are implemented. It may be configured by one hardware component (eg, a decoder or a processor) according to an example. Also, the memory 250 may include the DPB 255, and may be configured by one hardware component (eg, a memory or a digital storage medium) according to an embodiment.
  • the decoding apparatus 200 may reconstruct an image in response to a process in which the video/image information is processed by the encoding apparatus 100 of FIG. 2.
  • the decoding apparatus 200 may perform decoding using a processing unit applied by the encoding apparatus 100.
  • the processing unit may be, for example, a coding unit, and the coding unit may be divided from a coding tree unit or a maximum coding unit according to a quad tree structure and/or a binary tree structure.
  • the reconstructed image signal decoded and output through the decoding device 200 may be reproduced through the playback device.
  • the decoding apparatus 200 may receive a signal output from the encoding apparatus 100 of FIG. 2 in the form of a bitstream, and the received signal may be decoded through the entropy decoding unit 210.
  • the entropy decoding unit 210 may parse the bitstream to derive information (eg, video/video information) necessary for image restoration (or picture restoration).
  • the video/video information may further include information on various parameter sets, such as adaptation parameter set (APS), picture parameter set (PPS), sequence parameter set (SPS), or video parameter set (VPS).
  • APS adaptation parameter set
  • PPS picture parameter set
  • SPS sequence parameter set
  • VPS video parameter set
  • the decoding apparatus may decode a picture based on information on a parameter set.
  • Signaled/received information and/or syntax elements described later in this document may be decoded through a decoding procedure and obtained from a bitstream.
  • the entropy decoding unit 210 acquires information in the bitstream using a coding technique such as exponential Golomb coding, CAVLC, or CABAC, and a value of a syntax element required for image restoration, and a quantized value of a transform coefficient for a residual. Can be printed.
  • a bin corresponding to each syntax element is received in a bitstream, and information about the syntax element to be decoded and decoding information of a block to be decoded and a neighbor or a symbol/bin decoded in a previous step
  • the symbol corresponding to the value of each syntax element is determined by determining the context model using the information of, and performing arithmetic decoding of the bin by predicting the probability of occurrence of the bin according to the determined context model.
  • the CABAC entropy decoding method may update the context model using information of the decoded symbol/bin for the context model of the next symbol/bin after the context model is determined.
  • the entropy decoding unit 210 Among the information decoded by the entropy decoding unit 210, information on prediction is provided to the prediction unit (inter prediction unit 260 and intra prediction unit 265), and the register on which entropy decoding is performed by the entropy decoding unit 210 Dual values, that is, quantized transform coefficients and related parameter information may be input to the inverse quantization unit 220. In addition, information about filtering among information decoded by the entropy decoding unit 210 may be provided to the filtering unit 240. Meanwhile, a receiving unit (not shown) for receiving a signal output from the encoding device 100 may be further configured as an inner/outer element of the decoding device 200, or the receiving unit may be a component of the entropy decoding unit 210. May be.
  • the decoding apparatus 200 may be referred to as a video/video/picture decoding apparatus.
  • the decoding apparatus 200 may be divided into an information decoder (video/video/picture information decoder) and a sample decoder (video/video/picture sample decoder).
  • the information decoder may include an entropy decoding unit 210, and the sample decoder is an inverse quantization unit 220, an inverse transform unit 230, an addition unit 235, a filtering unit 240, a memory 250, and an inter prediction. It may include at least one of the unit 260 and the intra prediction unit 265.
  • the inverse quantization unit 220 may output transform coefficients through inverse quantization of the quantized transform coefficients.
  • the inverse quantization unit 220 may rearrange the quantized transform coefficients into a two-dimensional block shape. In this case, the reordering may be performed based on the coefficient scan order performed by the encoding apparatus 100.
  • the inverse quantization unit 220 may perform inverse quantization on quantized transform coefficients by using a quantization parameter (eg, quantization step size information) and obtain transform coefficients.
  • a quantization parameter eg, quantization step size information
  • the inverse transform unit 230 inversely transforms the transform coefficients to obtain a residual signal (residual block, residual sample array).
  • the prediction unit may perform prediction on the current block and generate a predicted block including prediction samples for the current block.
  • the prediction unit may determine whether intra prediction or inter prediction is applied to the current block based on information on prediction output from the entropy decoding unit 210, and may determine a specific intra/inter prediction mode.
  • the prediction unit may generate a prediction signal (prediction sample) based on various prediction methods described later. For example, the prediction unit may not only apply intra prediction or inter prediction to predict one block, but also apply intra prediction and inter prediction together (simultaneously). This may be referred to as CIIP (combined inter and intra prediction). Also, the prediction unit may perform intra block copy (IBC) to predict a block. IBC may be used for content (eg, game) video/video coding, such as, for example, screen content coding (SCC). Also, IBC may be referred to as CPR (current picture referencing). IBC basically performs prediction in the current picture, but can be performed similarly to inter prediction in that it derives a reference block in the current picture. That is, the IBC may use at least one of the inter prediction techniques described in this document.
  • IBC intra block copy
  • the intra prediction unit 265 may predict the current block by referring to samples in the current picture.
  • the referenced samples may be located near the current block or may be spaced apart according to the prediction mode.
  • prediction modes may include a plurality of non-directional modes and a plurality of directional modes.
  • the intra prediction unit 265 may determine a prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
  • the inter prediction unit 260 may derive a predicted block for the current block based on a reference block (reference sample array) specified by a motion vector on the reference picture.
  • motion information may be predicted in units of blocks, subblocks, or samples based on correlation between motion information between neighboring blocks and current blocks.
  • the motion information may include a motion vector and a reference picture index.
  • the motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction) information.
  • the neighboring block may include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in the reference picture.
  • the inter prediction unit 260 may construct a motion information candidate list based on neighboring blocks, and derive a motion vector and/or a reference picture index of the current block based on the received candidate selection information.
  • Inter prediction may be performed based on various prediction modes, and information on prediction may include information indicating a mode of inter prediction for a current block.
  • the addition unit 235 is reconstructed by adding the obtained residual signal to the prediction signal (predicted block, prediction sample array) output from the prediction unit (including the inter prediction unit 260 and/or the intra prediction unit 265). Signals (restored pictures, reconstructed blocks, reconstructed sample arrays) can be generated. When there is no residual for a block to be processed, such as when the skip mode is applied, the predicted block may be used as a reconstructed block.
  • the addition unit 235 may be referred to as a restoration unit or a restoration block generation unit.
  • the generated reconstructed signal may be used for intra prediction of the next processing target block in the current picture, and may be used for inter prediction of the next picture through filtering as described later.
  • the filtering unit 240 may improve subjective/objective image quality by applying filtering to the reconstructed signal. For example, the filtering unit 240 may apply various filtering methods to the reconstructed picture to generate a modified reconstructed picture, and may transmit the modified reconstructed picture to the DPB 255 of the memory 250. .
  • Various filtering methods may include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, and bilateral filter.
  • the modified reconstructed picture delivered to the DPB 255 of the memory 250 may be used as a reference picture by the inter prediction unit 260.
  • the memory 250 may store motion information of a block from which motion information in a current picture is derived (or decoded) and/or motion information of blocks in a picture that have already been reconstructed.
  • the stored motion information may be transmitted to the inter prediction unit 260 to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block.
  • the memory 250 may store reconstructed samples of reconstructed blocks in the current picture, and may be transmitted to the intra prediction unit 265.
  • embodiments described in the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the encoding apparatus 100 are respectively the filtering unit 240 and the inter prediction unit 260 of the decoding apparatus.
  • the intra prediction unit 265 may be applied to be the same or correspond to each other.
  • FIG. 4 shows an example of a content streaming system according to an embodiment of the present specification.
  • Content streaming systems to which the embodiments of the present specification are applied are largely an encoding server 410, a streaming server 420, a web server 430, and a media storage 440. ), a user equipment 450, and a multimedia input device 460.
  • the encoding server 410 generates a bitstream by compressing content input from a multimedia input device 460 such as a smartphone, a camera, or a camcorder into digital data, and transmits the generated bitstream to the streaming server 420.
  • a multimedia input device 460 such as a smartphone, a camera, or a camcorder
  • the encoding server 410 may be omitted.
  • the bitstream may be generated by an encoding method or a bitstream generation method to which an embodiment of the present specification is applied, and the streaming server 420 may temporarily store the bitstream while transmitting or receiving the bitstream.
  • the streaming server 420 transmits multimedia data to the user device 450 based on a user request through the web server 430, and the web server 430 serves as an intermediary that informs the user of what kind of service exists.
  • the web server 430 transmits information on the requested service to the streaming server 420, and the streaming server 420 transmits multimedia data to the user.
  • the content streaming system may include a separate control server, and in this case, the control server serves to control commands/responses between devices in the content streaming system.
  • the streaming server 420 may receive content from the media storage 440 and/or the encoding server 410. For example, when receiving content from the encoding server 410, the streaming server 420 may receive the content in real time. In this case, in order to provide a smooth streaming service, the streaming server 420 may store the bitstream for a predetermined time.
  • the user device 450 includes, for example, a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a personal digital assistants (PDA), a portable multimedia player (PMP), a navigation system, and a slate PC ( slate PC), tablet PC, ultrabook, wearable device, e.g., smartwatch, smart glass, head mounted display (HMD)), It can include digital TV, desktop computer, and digital signage.
  • PDA personal digital assistants
  • PMP portable multimedia player
  • HMD head mounted display
  • Each server in the content streaming system may be operated as a distributed server, and in this case, data received from each server may be distributedly processed.
  • FIG. 5 shows an example of a video signal processing apparatus according to an embodiment of the present specification.
  • the video signal processing apparatus of FIG. 5 may correspond to the encoding apparatus 100 of FIG. 1 or the decoding apparatus 200 of FIG. 2.
  • the video signal processing apparatus 500 for processing a video signal includes a memory 520 for storing a video signal, and a processor 510 for processing a video signal while being combined with the memory 520.
  • the processor 510 may be configured with at least one processing circuit for processing a video signal, and may process a video signal by executing instructions for encoding/decoding a video signal. That is, the processor 510 may encode original video data or decode an encoded video signal by executing encoding/decoding methods described below.
  • the processor 510 may be composed of one or more processors corresponding to each of the modules of FIG. 2 or 3.
  • the memory 520 may correspond to the memory 170 of FIG. 2 or the memory 250 of FIG. 3.
  • the video/image coding method according to the present specification may be performed based on a split structure described later. Specifically, procedures such as prediction, residual processing (e.g., (inverse) transformation, (inverse) quantization), syntax element coding, and filtering, which will be described later, are derived based on the partitioning structure (coding tree unit), CU (and/ Alternatively, it may be performed based on TU, PU).
  • the block division procedure may be performed by the video division unit 110 of the encoding apparatus 100 described above, and division-related information is (encoded) processed by the entropy encoding unit 190 and transferred to the decoding apparatus 200 in the form of a bitstream. Can be delivered.
  • the entropy decoding unit 210 of the decoding apparatus 200 derives the block division structure of the current block based on the division-related information obtained from the bitstream, and based on this, a series of procedures (e.g., prediction, registration) for decoding an image. Dual processing, block/picture restoration, and in-loop filtering) can be performed.
  • an image processing unit may have a hierarchical structure.
  • One picture may be divided into one or more tiles or tile groups.
  • One tile group may include one or more tiles.
  • One tile may contain more than one CTU.
  • the CTU can be divided into one or more CUs.
  • a tile is a rectangular region of CTUs within a particular tile column and a particular tile row in a picture.
  • the tile group may include an integer number of tiles according to a tile raster scan in a picture.
  • the tile group header may convey information/parameters applicable to the corresponding tile group.
  • the tile group may have one type of tile groups including an intra (I) tile group, a predictive (P) tile group, and a bi-predictive (B) tile group.
  • inter prediction is not used and only intra prediction can be used.
  • a coded original sample value may be signaled without prediction.
  • Intra prediction or inter prediction may be used for blocks in a P tile group, and when inter prediction is used, only uni prediction may be used.
  • intra prediction or inter prediction may be used for blocks in the B tile group, and when inter prediction is used, not only unidirectional prediction but also bi prediction may be used.
  • FIG. 6 illustrates an example of a picture division structure according to an embodiment of the present specification.
  • a picture having 216 (18 by 12) luminance CTUs is divided into 12 tiles and 3 tile groups.
  • the encoder determines the size of a tile/tile group and a maximum and minimum coding unit according to a characteristic (e.g., resolution) of a video image or in consideration of coding efficiency or parallel processing, and provides information about this or information for inducing it. It can be included in the bitstream.
  • a characteristic e.g., resolution
  • the decoder may obtain information indicating whether the tile/tile group of the current picture and the CTU in the tile are divided into a plurality of coding units. Coding efficiency can be increased if such information is not always acquired (decoded) by the decoder, but is acquired (decoded) only under certain conditions.
  • the tile group header may include information/parameters commonly applicable to the tile group.
  • APS APS syntax
  • PPS PPS syntax
  • SPS SPS syntax
  • VPS VPS syntax
  • the high-level syntax of the present specification may include at least one of APS syntax, PPS syntax, SPS syntax, and VPS syntax.
  • information on the division and configuration of a tile/tile group may be configured in an encoder through a higher level syntax and then transmitted to a decoder in the form of a bitstream.
  • FIG. 7A to 7D illustrate an example of a block division structure according to an embodiment of the present specification.
  • 7A is a QT (quadtree, QT)
  • FIG. 7b is a binary tree (BT)
  • FIG. 7c is a ternary tree (TT)
  • FIG. 7d shows an example of block division structures by an asymmetric tree (AT). do.
  • one block may be divided based on a QT division scheme.
  • one subblock divided by the QT division method may be further divided recursively according to the QT division method.
  • a leaf block that is no longer divided by the QT division method may be divided by at least one of BT, TT, or AT.
  • BT can have two types of division, such as horizontal BT (2NxN, 2NxN) and vertical BT (Nx2N, Nx2N).
  • TT may have two types of division, such as horizontal TT (2Nx1/2N, 2NxN, 2Nx1/2N) and vertical TT (1/2Nx2N, Nx2N, 1/2Nx2N).
  • AT is horizontal-up AT (2Nx1/2N, 2Nx3/2N), horizontal-down AT (2Nx3/2N, 2Nx1/2N), vertical-left AT ( It can have four types of division: 1/2Nx2N, 3/2Nx2N), and vertical-right AT (3/2Nx2N, 1/2Nx2N).
  • Each BT, TT, AT can be further divided recursively using BT, TT, AT.
  • Block A may be divided into four sub-blocks (A0, A1, A2, A3) by QT.
  • Sub-block A1 may be divided into four sub-blocks (B0, B1, B2, B3) by QT again.
  • Block B3 that is no longer divided by QT may be divided by vertical BT (C0, C1) or horizontal BT (D0, D1). Like block C0, each sub-block may be further divided recursively in the form of horizontal BT (E0, E1) or vertical BT (F0, F1).
  • Block B3 which is no longer divided by QT may be divided into vertical TT (C0, C1, C2) or horizontal TT (D0, D1, D2). Like block C1, each sub-block may be further divided recursively in the form of horizontal TT (E0, E1, E2) or vertical TT (F0, F1, F2).
  • Block B3 which is no longer divided by QT, can be divided into vertical ATs (C0, C1) or horizontal ATs (D0, D1). Like block C1, each sub-block can be further divided recursively in the form of a horizontal AT (E0, E1) or a vertical TT (F0, F1).
  • BT, TT, and AT division can be applied together in one block.
  • a sub-block divided by BT may be divided by TT or AT.
  • sub-blocks divided by TT may be divided by BT or AT.
  • Sub-blocks divided by AT may be divided by BT or TT.
  • each sub-block may be divided by vertical BT.
  • each sub-block may be divided by horizontal BT. In this case, the order of division is different, but the shape of the final division is the same.
  • the order of searching for the block may be variously defined. In general, search is performed from left to right and from top to bottom, and searching for a block means the order of determining whether to divide additional blocks of each divided sub-block, or if the block is no longer divided, each sub It may mean an encoding order of a block, or a search order when a subblock refers to information of another neighboring block.
  • VPDUs virtual pipeline data units
  • VPDUs may be defined as non-overlapping units within one picture.
  • successive VPDUs can be processed simultaneously by multiple pipeline stages.
  • the VPDU size is roughly proportional to the buffer size in most pipeline stages. Therefore, keeping the VDPU size small is important when considering the buffer size from a hardware perspective.
  • the VPDU size can be set equal to the maximum TB size.
  • the VPDU size may be 64x64 (64x64 luminance samples) size.
  • the VPDU size may be changed (increased or decreased) in consideration of the TT and/or BT partition described above.
  • an MxN block may represent a block including samples consisting of M columns and N rows.
  • FIG. 8 shows an example of a case in which the ternary tree (TT) and the binary tree (BT) are divided according to an embodiment of the present specification.
  • TT ternary tree
  • BT binary tree
  • at least one of the following restrictions may be applied as illustrated in FIG. 8.
  • -TT split is not allowed for a CU with either width or height, or both width and height equal to the width or height, or for a CU with both width and height equal to 128. 128).
  • vertical BT is not allowed
  • the encoding apparatus 100 may derive a residual block (residual samples) based on a block (prediction samples) predicted through intra/inter/IBC prediction, and the derived residual samples By applying transform and quantization to, quantized transform coefficients can be derived. Information on the quantized transform coefficients (residual information) may be included in the residual coding syntax, encoded, and then output in the form of a bitstream.
  • the decoding apparatus 200 may obtain information (residual information) about quantized transform coefficients from a bitstream, and decode the residual information to derive quantized transform coefficients.
  • the decoding apparatus 200 may derive residual samples through inverse quantization/inverse transformation based on the quantized transform coefficients.
  • At least one of quantization/inverse quantization and/or transform/inverse transformation may be omitted.
  • the transform coefficient may be called a coefficient or a residual coefficient, or may still be called a transform coefficient for uniformity of expression. Whether or not transform/inverse transform is omitted may be signaled based on a transform skip flag (transform_skip_flag).
  • Transformation/inverse transformation may be performed based on transformation kernel(s).
  • a multiple transform selection (MTS) scheme may be applied.
  • some of a plurality of transform kernel sets may be selected and applied to the current block.
  • the transformation kernel can be referred to in various terms such as transformation matrix and transformation type.
  • the transform kernel set may represent a combination of a vertical transform kernel (vertical transform kernel) and a horizontal transform kernel (horizontal transform kernel).
  • MTS index information (or tu_mts_idx syntax element) may be generated/encoded by the encoding device 100 and signaled to the decoding device 200 to indicate one of the transform kernel sets.
  • a transform kernel set according to the value of MTS index information may be derived as shown in Table 1 below. Table 1 shows the horizontal conversion type (trTypeHor) and the vertical conversion type (trTypeVer) according to the MTS index (tu_mts_idx).
  • trTypeHor and trTypeVer are indexes indicating the transformation kernel, 0 is DCT-2 (Discrete Cosine Transform type 2), 1 is DST-7 (Discrete Sine Transform type 7), 2 may respectively correspond to DCT-8 (Discrete Cosine Transform type 8).
  • the transform kernel set may be determined based on, for example, cu_sbt_horizontal_flag and cu_sbt_pos_flag. If cu_sbt_horizontal_flag is 1, the current coding unit is horizontally divided into two transform units. If cu_sbt_horizontal_flag is 0, the current coding unit is vertically divided into two transform units. If cu_sbt_pos_flag is 1, tu_cbf_luma, tu_cbf_cb, and tu_cbf_cr of the first transform unit in the current coding unit do not exist in the bitstream.
  • cu_sbt_horizontal_flag is 1, the current coding unit is horizontally divided into two transform units. If cu_sbt_horizontal_flag is 0, the current coding unit is vertically divided into two transform units. If cu_sbt_pos_flag is 1, tu_cbf_luma, tu_cbf_cb, and tu
  • tu_cbf_luma, tu_cbf_cb and tu_cbf_cr of the second transform unit in the current coding unit do not exist in the bitstream.
  • Table 2 below shows trTypeHor and trTypeVer according to cu_sbt_horizontal_flag and cu_sbt_pos_flag.
  • SBT refers to a method of applying a transform to one subblock after dividing the current block into subblocks having a size of 1/2 or 1/4 in a horizontal or vertical direction.
  • the transform kernel set may be determined based on the intra prediction mode for the current block as shown in Table 3 below.
  • trTypeHor may indicate a horizontal direction conversion kernel
  • trTypeVer may indicate a vertical direction conversion kernel
  • a trTypeHor/trTypeVer value of 0 may indicate DCT-2
  • a trTypeHor/trTypeVer value of 1 may indicate DST7
  • a trTypeHor/trTypeVer value of 2 may indicate DCT-8.
  • this is an example, and different values may be mapped to different DCT/DSTs by appointment.
  • Table 4 below exemplarily shows the basis functions for DCT-2, DCT-8, and DST-7 described above.
  • a secondary transform may be selectively applied to a block to which a primary transform is applied based on the encoder.
  • a quadratic transform may be applied to a block to which DCT-2 is applied as a primary transform, and a quadratic transform may be omitted to a block to which DCT-7 or DCT-8 is applied as the first transform.
  • the secondary transform may be a non-separable transform.
  • the quadratic transformation can be applied only to a low frequency region (a specific region on the upper left) within a block in consideration of complexity.
  • the transform kernel for the quadratic transformation may be indicated by the quadratic transformation index in the quadratic transformation kernel set selected based on the intra prediction mode.
  • Transformation/inverse transformation may be performed in units of CU or TU. That is, the transform/inverse transform may be applied to residual samples in a CU or residual samples in a TU.
  • the CU size and the TU size may be the same, or a plurality of TUs may exist in the CU region.
  • the CU size may generally indicate the luminance component (sample) CB size.
  • the TU size may generally indicate a luminance component (sample) TB size.
  • the color difference component (sample) CB or TB size is the luminance component (sample) CB or TB depending on the component ratio according to the color format (chroma format, e.g. 4:4:4, 4:2:2, 4:2:0, etc.) It can be derived based on size.
  • the TU size can be derived based on maxTbSize. For example, when the CU size is larger than maxTbSize, a plurality of TUs (TB) of maxTbSize may be derived from the CU, and transformation/inverse transformation may be performed in units of TU (TB). For example, when the length (width or height) of one side of the CU is greater than maxTbSize, a plurality of TUs (TB) can be derived for the corresponding direction (that is, if the length in the corresponding direction is L, then L/maxTbSize TU (TB) can be derived).
  • maxTbSize For all directions of the CU (i.e., vertical and horizontal), it can be divided in the same way through comparison with the maxTbSize value (i.e., if the horizontal length is M and the vertical length is L, the total (M / maxTbSize) x (N / maxTbSize) may be divided into TUs (TB)), and transformation/inverse transformation may be performed in units of TU (TB).
  • maxTbSize may be considered to determine whether to apply various intra prediction types, such as an ISP.
  • the information on maxTbSize may be determined in advance, or may be generated and encoded in an encoding device and signaled to a decoding device.
  • FIG. 9 is a block diagram for entropy encoding according to an embodiment of the present specification.
  • the block diagram of FIG. 9 corresponds to an example of the entropy encoding unit 190 of FIG. 2.
  • some or all of the video/video information may be entropy-encoded by the entropy encoding unit 190, and as described in FIG. 3, some or all of the video/video information is an entropy decoding unit ( 210) can be entropy decoded.
  • the video/video information may be encoded/decoded in units of syntax elements.
  • that information is encoded/decoded may include encoding/decoding by the method described in this paragraph.
  • CABAC 9 shows a block diagram of CABAC for encoding one syntax element.
  • the encoding process of CABAC first converts the input signal into a binary value through binarization when the input signal is a syntax element rather than a binary value. If the input signal is already binary, it is bypassed without going through binarization.
  • each binary number 0 or 1 constituting the binary value is called a bin.
  • the binary string (empty string) after binarization is 110, each of 1, 1, and 0 is referred to as one bin.
  • the bin(s) for one syntax element may represent a value of a corresponding syntax element.
  • the binarized bins are input into a regular coding engine or a bypass coding engine.
  • the regular coding engine allocates a context model that reflects a probability value to the corresponding bin, and codes the corresponding bin based on the allocated context model.
  • the regular coding engine may update the probability model for the corresponding bin after performing coding for each bin. Bins coded in this way are called context-coded bins.
  • the bypass coding engine omits the procedure of estimating the probability for the input bin and the procedure of updating the probability model applied to the corresponding bin after coding. Instead of allocating context, a uniform probability distribution (eg, 50:50) is applied to code the input bins to improve coding speed. Bins coded in this way are called bypass bins.
  • the context model may be allocated and updated for each context-coded (normally coded) bin, and the context model may be indicated based on ctxIdx or ctxInc.
  • ctxIdx may be derived based on ctxInc.
  • a context index (ctxIdx) indicating a context model for each of the regularly coded bins may be derived as a sum of a context index increment (ctxInc) and a context index offset (ctxIdxOffset).
  • ctxInc may be derived differently for each bin.
  • ctxIdxOffset may be represented by the lowest value of ctxIdx.
  • ctxIdx may be referred to as an initial value (initValue) of ctxIdx.
  • ctxIdxOffset is a value generally used to distinguish context models for other syntax elements, and a context model for one syntax element may be identified/derived based on ctxInc.
  • Entropy decoding performs the same process as entropy encoding in reverse order.
  • 10A and 10B illustrate an entropy encoding method and related components according to an embodiment of the present specification.
  • the encoding apparatus 100 performs an entropy coding procedure for image/video information.
  • the image/video information may include partitioning related information, prediction related information (eg, inter/intra prediction classification information, intra prediction mode information, inter prediction mode information), residual information, and in-loop filtering related information, or It can contain various syntax elements for.
  • Entropy coding may be performed in units of syntax elements. Steps S1010 to S1020 of FIG. 10A may be performed by the entropy encoding unit 190 of the encoding apparatus 100 of FIG. 2 described above.
  • the encoding device 100 performs binarization on the target syntax element (S1010).
  • binarization may be based on various binarization methods such as a Truncated Rice binarization process and a fixed-length binarization process, and a binarization method for the target syntax element may be predefined.
  • the binarization procedure may be performed by the binarization unit 192 in the entropy encoding unit 190.
  • the encoding device 100 performs entropy encoding on the target syntax element (S1020).
  • the encoding apparatus 100 may encode an empty string of a target syntax element based on an entropy coding technique such as CABAC or CAVLC based on normal coding (context based) or bypass coding, and the output may be included in a bitstream.
  • the entropy encoding procedure may be performed by the entropy encoding processing unit 193 in the entropy encoding unit 190.
  • the bitstream can be delivered to a decoding device through a (digital) storage medium or a network.
  • 11A and 11B illustrate an entropy decoding method and related components according to an embodiment of the present specification.
  • the decoding apparatus 200 may decode encoded image/video information.
  • the image/video information may include partitioning related information, prediction related information (eg, inter/intra prediction classification information, intra prediction mode information, inter prediction mode information), residual information, and in-loop filtering related information, or It can contain various syntax elements related to it.
  • Entropy coding may be performed in units of syntax elements. Steps S1110 to S1120 may be performed by the entropy decoding unit 210 of the decoding apparatus 200 of FIG. 3 described above.
  • the decoding apparatus 200 performs binarization on the target syntax element (S1110). Binarization can be based on various binarization methods such as the Truncated Rice binarization process and the Fixed-length binarization process, and the binarization method for the target syntax element can be predefined.
  • the decoding apparatus 200 may derive available empty strings (empty string candidates) for available values of a target syntax element through a binarization procedure.
  • the binarization procedure may be performed by the binarization unit 212 in the entropy decoding unit 210.
  • the decoding apparatus 200 performs entropy decoding on the target syntax element (S1220).
  • the decoding apparatus 200 sequentially decodes and parses each bin for the target syntax element from the input bit(s) in the bitstream, and compares the derived bin string with the available bin strings for the corresponding syntax element. If the derived empty string is the same as one of the available empty strings, a value corresponding to the corresponding empty string is derived as a value of the corresponding syntax element. If not, the next bin in the bitstream is further parsed and the above-described procedure is again performed. Through this process, the information can be signaled using variable length bits without using a start bit or an end bit for specific information (specific syntax element) in the bitstream. Through this, relatively fewer bits can be allocated to a low value, and overall coding efficiency can be improved.
  • the decoding apparatus 200 may decode each bin in the bin string from the bitstream based on an entropy coding technique such as CABAC or CAVLC based on context or bypass.
  • the bitstream may include various information for video/video decoding.
  • the bitstream can be delivered to a decoding device through a (digital) storage medium or a network.
  • pictures constituting the video/video may be encoded/decoded according to a series of decoding orders.
  • a picture order corresponding to an output order of a decoded picture may be set differently from a decoding order, and based on this, not only forward prediction but also backward prediction may be performed during inter prediction.
  • step S1210 may be performed by the prediction units 180 and 185 of the encoding apparatus 100 described in FIG. 2, and step S1220 may be performed by the residual processing units 115, 120, and 130. , S1230 may be performed by the entropy encoding unit 190.
  • Step S1210 may include an inter/intra prediction procedure described in this document
  • step S1220 may include a residual processing procedure described in this document
  • step S1230 includes an information encoding procedure described in this document. can do.
  • the picture encoding procedure is not only a procedure of encoding information for picture restoration (eg, prediction information, residual information, partitioning information) schematically as described in FIG. 2 to output in a bitstream form,
  • a procedure for generating a reconstructed picture for the current picture and a procedure for applying in-loop filtering to the reconstructed picture (optional) may be included.
  • the encoding apparatus 100 may derive (modified) residual samples from the quantized transform coefficients through the inverse quantization unit 140 and the inverse transform unit 150, and predictive samples corresponding to the output of step S1210 and ( A reconstructed picture may be generated based on the modified) residual samples.
  • the reconstructed picture generated in this way may be the same as the reconstructed picture generated by the decoding apparatus 200 described above.
  • a modified reconstructed picture can be generated through an in-loop filtering procedure for the reconstructed picture, which can be stored in the memory 170 (DPB 175), and, as in the case of the decoding device 200, a subsequent picture It can be used as a reference picture in an inter prediction procedure upon encoding of. As described above, in some cases, some or all of the in-loop filtering procedure may be omitted.
  • (in-loop) filtering-related information may be encoded by the entropy encoding unit 190 and output in the form of a bitstream, and the decoding apparatus 200
  • the in-loop filtering procedure may be performed in the same manner as the encoding apparatus 100.
  • noise generated during image/video coding such as blocking artifacts and ringing artifacts may be reduced, and subjective/objective visual quality may be improved.
  • the encoding device 100 and the decoding device 200 can derive the same prediction result, so that the reliability of picture coding is This can be improved and the amount of data transmitted for picture coding can be reduced.
  • Step S1310 may be performed by the entropy decoding unit 210 of the decoding apparatus 200 of FIG. 3, step S1320 may be performed by the prediction units 260 and 265, and step S1330 may be performed by the residual processing unit ( 220, 230), step S1340 may be performed by the addition unit 235, step S1350 may be performed by the filtering unit 240.
  • Step S1310 may include the information decoding procedure described in this document
  • step S1320 may include the inter/intra prediction procedure described in this document
  • step S1330 includes the residual processing procedure described in this document.
  • step S1340 may include the block/picture restoration procedure described in this document
  • step S1350 may include the in-loop filtering procedure described in this document.
  • the picture decoding procedure is a procedure for obtaining image/video information (through decoding) from a bitstream (S1310), a picture restoration procedure (S1320 to S1340), and a reconstructed picture, as described in FIG. It may include an in-loop filtering procedure (S1350) for.
  • the picture restoration procedure is based on prediction samples and residual samples obtained through the process of inter/intra prediction (S1320) and residual processing (S1330, inverse quantization and inverse transformation of a quantized code or coefficient) described in this document. Can be done.
  • a modified reconstructed picture may be generated through an in-loop filtering procedure for a reconstructed picture generated through a picture restoration procedure, and the modified reconstructed picture may be output as a decoded picture, and the decoding apparatus 200 It is stored in the DPB 255 of and can be used as a reference picture in inter prediction train when decoding a picture later.
  • the in-loop filtering procedure may be omitted, and in this case, the reconstructed picture may be output as a decoded picture, stored in the DPB 255 of the decoding device 200, and referenced in the inter prediction train when decoding a subsequent picture. Can be used as a picture.
  • the in-loop filtering procedure S1350 may include a deblocking filtering procedure, a sample adaptive offset (SAO) procedure, an adaptive loop filter (ALF) procedure, and/or a bi-lateral filter procedure as described above. And some or all of them may be omitted.
  • one or some of the deblocking filtering procedure, the SAO procedure, the ALF procedure, and the bilateral filter procedure may be sequentially applied, or all may be sequentially applied.
  • the SAO procedure may be performed.
  • the ALF procedure may be performed. This may be similarly performed in the encoding device 100.
  • a reconstructed block may be generated based on intra prediction/inter prediction for each block, and a reconstructed picture including the reconstructed blocks may be generated.
  • the current picture/slice/tile group is an I picture/slice/tile group
  • blocks included in the current picture/slice/tile group may be reconstructed based only on intra prediction.
  • inter prediction may be applied to some blocks in the current picture/slice/tile group
  • intra prediction may be applied to the remaining some blocks.
  • the color component of a picture may include a luminance component and a chrominance component, and the methods and embodiments proposed in this document may be applied to the luminance component and the chrominance component unless explicitly limited in this document.
  • FIG. 14 illustrates an example of a hierarchical structure for a coded image according to an embodiment of the present specification.
  • the coded image is a video coding layer (VCL) that deals with the decoding process of the image and itself, a subsystem that transmits and stores encoded information, and a network abstraction (NAL) that exists between the VCL and the subsystem and is responsible for network adaptation. layer).
  • VCL video coding layer
  • NAL network abstraction
  • VCL data including video data (tile group data) compressed in the VCL is generated, or a parameter set including information such as PPS (picture parameter set), SPS (sequence parameter set), VPS (video parameter set), or An additionally required SEI (supplemental enhancement information) message may be generated in the process of decoding an image.
  • PPS picture parameter set
  • SPS sequence parameter set
  • VPS video parameter set
  • SEI Supplemental Enhancement information
  • NAL unit data may be added to a raw byte sequence payload (RBSP) generated in VCL to generate a NAL unit.
  • RBSP may refer to tile group data, parameter set, and SEI message generated in the VCL.
  • NAL unit type information specified according to RBSP data included in the corresponding NAL unit may be included.
  • the NAL unit may be divided into a VCL NAL unit and a Non-VCL NAL unit according to the RBSP generated from the VCL.
  • the VCL NAL unit may mean a NAL unit that includes information about an image (tile group data), and the Non-VCL NAL unit is an NAL that includes information (parameter set or SEI message) necessary for decoding an image. It can mean a unit.
  • VCL NAL unit and Non-VCL NAL unit may be transmitted through a network with header information added according to the data standard of the sub-system.
  • the NAL unit may be converted into a data format of a predetermined standard such as an H.266/VVC file format, a real-time transport protocol (RTP), and a transport stream (TS) and then transmitted through various networks.
  • a predetermined standard such as an H.266/VVC file format, a real-time transport protocol (RTP), and a transport stream (TS)
  • the NAL unit type may be specified according to the RBSP data structure included in the corresponding NAL unit, and information on the NAL unit type may be stored in the NAL unit header and signaled.
  • the NAL unit may be largely classified into a VCL NAL unit type and a Non-VCL NAL unit type according to whether or not information on an image (tile group data) is included.
  • the VCL NAL unit type may be classified according to the nature and type of a picture included in the VCL NAL unit, and the non-VCL NAL unit type may be classified according to the type of the parameter set.
  • NAL unit type specified according to the type of a parameter set included in the Non-VCL NAL unit type.
  • NAL unit A type for a NAL unit including APS
  • VPS Video Parameter Set
  • NAL unit a type for a NAL unit including SPS
  • NAL unit A type for a NAL unit including PPS
  • NAL unit types have syntax information for the NAL unit type, and the syntax information may be stored in the NAL unit header and signaled.
  • syntax information may be nal_unit_type, and NAL unit types may be specified by nal_unit_type values.
  • the tile group header may include information/parameters commonly applicable to the tile group.
  • APS APS syntax
  • PPS PPS syntax
  • SPS SPS syntax
  • VPS VPS syntax
  • the higher-level syntax may include at least one of APS syntax, PPS syntax, SPS syntax, and VPS syntax.
  • the image/video information encoded by the encoding device 100 by the decoding device 200 and signaled in the form of a bitstream includes intra-picture partitioning-related information, intra/inter prediction information, residual information, and in-loop filtering information.
  • information included in the APS, information included in the PPS, information included in the SPS, and/or the information included in the VPS may be included.
  • ISP Intra Sub-Partition
  • a block to be currently coded is regarded as one coding unit, and coding is performed without splitting.
  • the ISP method performs intra prediction coding by dividing a block to be currently coded in a horizontal direction or a vertical direction. In this case, a reconstructed block is generated by performing encoding/decoding in units of divided blocks, and the reconstructed block is used as a reference block of the next divided block.
  • blocks are divided as shown in Table 8 below based on the block size.
  • 15A and 15B illustrate an example of block division according to an ISP according to an embodiment of the present specification.
  • the ISP method generates the most probable mode (MPM) according to each division method (horizontal division and vertical division) in order to reduce the coding complexity, and selects an appropriate prediction mode among prediction modes in the generated MPM list from the viewpoint of rate-distortion optimization (RDO).
  • the optimal mode is determined by comparing at.
  • MRL multi-reference line
  • the ISP may not be used. That is, ISP intra prediction can be applied only when the 0th reference line is used (that is, when intra_luma_ref_idx is 0).
  • PDPC position dependent prediction combination
  • the ISP intra prediction method first encodes/decodes information indicating whether the ISP is applied (e.g., intra_subparitions_mode_flag) in block units, and if the ISP is applied to the current block, information about whether it is horizontal or vertical (intra_subpartitions_split_flag) is encoded. /Decoded. Table 6 below shows an example of the syntax structure reflecting the ISP.
  • the intra prediction mode for the current block is equally applied to each subpartition (subblocks), and the intra prediction performance can be improved by deriving neighboring reference samples in units of subpartitions. That is, when ISP intra prediction is applied, a residual sample processing procedure is performed in units of sub-partitions.
  • intra prediction samples are derived for each subpartition, and reconstructed samples are obtained by adding a residual signal (residual samples) for the corresponding subpartition to this.
  • the residual signal (residual samples) may be derived through an inverse quantization/inverse transform procedure based on residual information (quantized transform coefficient information or residual coding syntax) in the above-described bitstream.
  • prediction samples for the first subpartition are derived and residual samples are derived, and reconstructed samples for the first subpartition may be derived based on this.
  • some of the reconstructed samples in the first subpartition eg, left or upper peripheral reference samples of the second subpartition
  • peripheral reference samples for the second subpartition are peripheral reference samples for the second subpartition.
  • prediction samples for the second subpartition and residual samples may be derived, and reconstructed samples for the second subpartition may be derived based on this.
  • the sub-partition according to the ISP application may also be referred to as a sub-block.
  • CIIP can be applied to the current CU.
  • a CU is coded in merge mode
  • the CU contains at least 64 luminance samples (the product of the CU width and the CU height is greater than or equal to 64)
  • an additional flag indicates whether the CIIP mode is applied to the current CU. May be signaled to indicate.
  • the CIIP mode may also be referred to as a multi-hypothesis mode or an inter/intra multiple hypothesis mode.
  • Up to four intra prediction modes including DC, PLANAR, HORIZONTAL, and VERTICAL modes can be used to predict the luminance component in the CIIP mode. If the CU shape is very wide (for example, if the width is more than twice the height), the HORIZONTAL mode is not allowed. If the CU shape is very narrow (ie, the height is more than twice the width), the VERTICAL mode is not allowed. For these cases, three intra prediction modes are allowed.
  • the CIIP mode uses three most probable modes (MPMs) for intra prediction.
  • the CIIP MPM candidate list is formed as follows.
  • intraModeA and intraModeB The prediction modes of block A and block B are named intraModeA and intraModeB, respectively, and are derived as follows.
  • Block X is unavailable, ii) Block X is not predicted using CIIP mode, or iii) Block B is located outside the current CTU, intraModeX is set to DC
  • intraModeX is DC or PLANAR
  • intraModeX is DC or PLANAR
  • intra prediction mode of block X is "vertical-like" directional mode (greater than 34).
  • intraModeX is set to VERTICAL
  • intraModeX is set to HORIZONTAL if the intra-prediction mode of block X is a "horizontal-like" directional mode (mode less than or equal to 34).
  • 3 MPMs are set in the order of ⁇ intraModeA, PLANAR, DC ⁇
  • the first two MPMs are set in the order of ⁇ intraModeA, intraModeB ⁇
  • the MPM flag is inferred as 1 without signaling. Otherwise, an MPM flag for indicating whether the CIIP intra prediction mode is one of the CIIP MPM candidate modes is signaled.
  • the MPM flag is 1, an MPM index indicating which of the MPM candidate modes is used in CIIP intra prediction is additionally signaled. Otherwise, if the MPM flag is 0, the intra prediction mode in the MPM candidate list is set to a "missing" mode. For example, if the PLANAR mode is not in the MPM candidate list, PLANAR becomes the missing mode, and the intra prediction mode is set to PLANAR. Since 4 possible intra prediction modes are allowed in CIIP, the MPM candidate list contains only 3 intra prediction candidates. For color difference components, the DM mode is always applied without additional signaling. That is, the same prediction mode as the luminance component is used for the color difference components. The intra prediction mode of the CU coded with CIIP will be stored and used for intra mode coding of the next neighboring CUs.
  • the inter prediction signal P inter in the CIIP mode is derived using the same inter prediction process applied to the general merge mode, and the intra prediction signal P intra is derived using the CIIP intra prediction according to the intra prediction process. Then, the intra and inter prediction signals are combined using a weighted average, where the weight value depends on the intra prediction mode and where the sample is located in the coding block as follows.
  • the same weight is applied to the intra prediction and inter prediction signals.
  • the weights are determined based on the intra prediction mode (horizontal mode or vertical mode in this case) and the sample position in the block.
  • the horizontal prediction mode will be described as an example (weights for the vertical mode are similar, but can be derived in an orthogonal direction).
  • Set the width of the block to W and the height of the block to H.
  • the coding block is initially divided into 4 co-regional parts, each dimension is (W/4)xH. Starting from the part closest to the intra prediction reference samples and ending the part farthest from the intra prediction samples, the weight wt for each of the four regions is set to 6, 5, 3, and 2.
  • the final CIIP prediction signal may be derived as in Equation 1 below.
  • Equation 1 P CIIP is a CIIP prediction sample value, P inter is an inter prediction sample value, P intra is an intra prediction sample value, and wt is a weight.
  • the embodiments described below describe examples of transform block (TB) size signaling and applications in various fields.
  • the minimum and maximum TB sizes (MinTbSizeY and MaxTbSizeY) for the luminance component are set to 4 and 64. This means that the minimum block size for the luminance component to which the transformation including the first and second transformation can be applied is 4x4, and the maximum block size for the luminance component to which the transformation including the first and second transformation can be applied is 64x64. .
  • log2_min_luma_transform_block_size_minus2 may have a value of 0 or 1
  • log2_max_luma_transform_block_size_minus2 may have a value of 2, 3, or 4. That is, the minimum transform block size information or the maximum transform block size information may indicate one of two or three candidate values.
  • the value of log2_max_luma_transform_block_size_minus2 may be set to be greater than log2_min_luma_transform_block_size_minus2.
  • Tables 8 to 10 below show examples in which the minimum and maximum TB sizes are signaled in the SPS, PPS, and tile group headers, respectively.
  • log2_min_luma_transform_block_size_minus2 plus 2 represents a value obtained by taking a logarithm of the base 2 to the minimum luminance TB size.
  • the variable MinTbLog2SizeY is set to log2_min_luma_transform_block_size_minus2 + 2.
  • a coded video sequence (CVS) cannot include data in which MinTbLog2SizeY is greater than MinCbLog2SizeY.
  • log2_max_luma_transform_block_size_minus2 plus 2 represents a value obtained by taking a logarithm of the base 2 to the maximum luminance TB size.
  • the variable MaxTbLog2SizeY is set to log2_max_luma_transform_block_size_minus2 + 2.
  • CVS may include data in which MaxTbLog2SizeY is greater than Min(CtbLog2SizeY, 6 ).
  • Min(A, B) is a function that outputs a smaller value among A and B
  • Max(A, B) is a function that outputs a larger value among A and B.
  • the minimum and maximum luminance TB sizes are derived as follows.
  • " ⁇ " denotes a left shift operation. That is, MinTbSizeY is set to 2 MinTbLog2SizeY , and MaxTbSizeY is set to 2 MaxTbLog2SizeY .
  • MinTbSizeY 1 ⁇ MinTbLog2SizeY
  • MaxTbSizeY 1 ⁇ MaxTbLog2SizeY
  • the maximum transform block size information may indicate one of predefined maximum transform block size candidate values.
  • the maximum transform block size information may indicate one of 32 or 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a value obtained by taking a logarithm of a base of 2 with respect to the maximum transform block size value, such as log2_max_luma_transform_block_size_minus2.
  • the maximum transform block size information is signaled from the SPS, PPS, or tile group header of the video signal, so that the decoder can obtain (decode) the maximum transform block size information.
  • log2_min_luma_transform_block_size_minus2 may have a value of 0 or 1
  • log2_diff_max_min_luma_transform_block_size may have a value of 2 or 3.
  • Tables 11 to 13 below show an example in which information on a minimum TB size and information on a difference between a minimum TB size and a maximum TB size are signaled in the SPS, PPS, and tile group headers, respectively.
  • log2_min_luma_transform_block_size_minus2 plus 2 represents the minimum luminance TB size.
  • MinTbLog2SizeY is set to log2_min_luma_transform_block_size_minus2 + 2.
  • CVS cannot contain data with MinTbLog2SizeY greater than MinCbLog2SizeY.
  • log2_diff_max_min_luma_transform_block_size represents the difference between the maximum luminance TB size and the minimum luminance TB size.
  • the variable MaxTbLog2SizeY is set to log2_min_luma_transform_block_size_minus2 + 2 + log2_diff_max_min_luma_transform_block_size.
  • CVS may include data in which MaxTbLog2SizeY is greater than Min(CtbLog2SizeY, 6 ).
  • the minimum and maximum luminance TB sizes are derived as follows.
  • MinTbSizeY 1 ⁇ MinTbLog2SizeY
  • MaxTbSizeY 1 ⁇ MaxTbLog2SizeY
  • sps_mts_enabled_flag is 1
  • sps_explicit_mts_intra_enabled_flag is present in the sequence parameter set RBSP syntax
  • sps_explicit_mts_inter_enabled_flag is present in the sequence parameter set RBSP syntax. If sps_mts_enabled_flag is 0, sps_explicit_mts_intra_enabled_flag does not exist in the sequence parameter set RBSP syntax, and sps_explicit_mts_inter_enabled_flag does not exist in the sequence parameter set RBSP syntax.
  • sps_explicit_mts_intra_enabled_flag 1 tu_mts_idx may exist in the transform unit syntax for intra coding units. If sps_explicit_mts_intra_enabled_flag is 0, tu_mts_idx does not exist in the transform unit syntax for intra coding units. If sps_explicit_mts_intra_enabled_flag does not exist, the value of sps_explicit_mts_intra_enabled_flag is deduced as 0.
  • sps_explicit_mts_inter_enabled_flag 1 tu_mts_idx may exist in the transform unit syntax for inter coding units. If sps_explicit_mts_inter_enabled_flag is 0, tu_mts_idx does not exist in the transform unit syntax for inter coding units. If sps_explicit_mts_inter_enabled_flag does not exist, the value of sps_explicit_mts_inter_enabled_flag is deduced as 0.
  • MaxExplicitMtsSize represents the maximum explicit MTS size. If sps_mts_enabled_flag is 1, MaxExplictMtsSize is set to min(32, MaxTbSizeY), which means that the maximum explicit MTS size cannot exceed the maximum TU size.
  • the transformation process for the scaled transform coefficients according to the present embodiment may be as follows.
  • variable implicitMtsEnabled is derived as follows.
  • implicitMtsEnabled is set to 0.
  • the variable implicitMtsEnabled is a variable indicating that the transform combination for transform/inverse transform is not indicated by a specific syntax element (eg, MTS index) indicating the transform combination and is implicitly determined.
  • MTS index a specific syntax element
  • the horizontal/vertical transformation combination for the block to which SBT is applied is determined by cu_sbt_horizontal_flag and cu_sbt_pos_flag as shown in Table 2, or the horizontal/vertical transformation combination of the block to which intra prediction is applied is Table 3 As described above, it may be determined according to the intra prediction mode and the size (width, height) of the block.
  • implicitMtsEnabled is 0, the horizontal/vertical transformation combination for transformation/inverse transformation is indicated by the MTS index as shown in Table 1.
  • Table 17 below is an example of a case where the transform skip enable flag and the maximum transform skip size are signaled in the PPS.
  • transform_skip_enabled_flag If transform_skip_enabled_flag is 1, transform_skip_flag may exist in the transform unit syntax. If transform_skip_enabled_flag is 0, transform_skip_enabled_flag does not exist in the transform unit syntax.
  • log2_transform_skip_max_size_minus2 represents the maximum block size to which the transform skip can be applied, and may be in the range of 0 to 3.
  • log2_transform_skip_max_size_minus2 If log2_transform_skip_max_size_minus2 does not exist, the value of log2_transform_skip_max_size_minus2 is deduced as 0.
  • MaxTsSize is set to 1 ⁇ (log2_transform_skip_max_size_minus2 + 2).
  • MaxTsSize is min(32, MaxTbSizeY), it means that the maximum transform skip size cannot exceed the maximum TU size.
  • MaxSbtSize maximum SBT size information
  • Table 18 shows an example in which MaxSbtSize is signaled through SPS.
  • sps_sbt_enabled_flag 0
  • subblock transformation for inter-predicted CUs is disabled. If sps_sbt_enabled_flag is 1, subblock transformation for inter-predicted CUs can be used.
  • MaxSbtSize can be defined as follows. In this document, "(Condition)? A: B" is a function that outputs A when the condition is '1 (true)' and outputs B when the condition is '0 (false)'.
  • MaxSbtSize sps_sbt_max_size_64_flag? 64: 32
  • MaxSbtSize equal to min(MaxSbtSize, MaxTbSizeY) means that the maximum SBT size cannot exceed the maximum TU size.
  • Table 19 shows the relationship between CIIP and MaxTbSizeY.
  • both the width and height of the CIIP block must be less than or equal to MaxTbSizeY.
  • Table 20 below shows an example in which the maximum CTU size is signaled through SPS.
  • log2_ctu_size_minus2 plus 2 represents the luminance coding tree block size of each CTU.
  • CtbLog2SizeY can be set as follows.
  • log2_min_luma_coding_block_size_minus2 plus 2 represents the minimum luminance coding block size.
  • Table 21 below is an example of a transform tree syntax structure in which the size (MaxSbSizeY) to which the VPDU can be applied is reflected.
  • MaxSbSizeY represents the size of the virtual pipeline unit.
  • the value of MaxSbSizeY may be 128, 64, or 32, and may vary according to hardware circuit size implementation. If high performance capable of handling large-sized pipelines is applied, the value of MaxSbSizeY may be 128. If low performance is applied, a smaller value can be used for an effective virtual pipeline.
  • the decoder checks whether the ISP intra prediction is applied to the current block, and if ISP intra prediction is not applied to the current block, the decoder checks whether the width or height of the current block is greater than the maximum size. If the width or height of the current block is larger than the maximum size, the decoder divides the current block horizontally or vertically. Here, if the width of the current block is greater than the maximum size, the decoder divides the current block into two blocks (in the vertical direction) based on 1/2 of the width, and if the height of the current block is greater than the maximum size, the height is 1 Divides the current block into two blocks (in the horizontal direction) based on the /2 point.
  • the encoded information (eg, encoded video/video information) derived by the encoding apparatus 100 based on the above-described embodiments of the present specification may be output in a bitstream form.
  • the encoded information may be transmitted or stored in a bitstream form in units of network abstraction layer (NAL) units.
  • NAL network abstraction layer
  • the bitstream may be transmitted over a network or may be stored in a non-transitory digital storage medium.
  • the bitstream is not directly transmitted from the encoding device 100 to the decoding device 200, but may be provided with a streaming/download service through an external server (eg, a content streaming server).
  • the network may include a broadcasting network and/or a communication network
  • the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • FIG. 16 illustrates an example of a video signal encoding procedure according to an embodiment of the present specification. The operations of FIG. 16 may be performed by the encoding device 100 or the video signal processing device 500.
  • the encoder determines a maximum transform block size value.
  • the encoder may determine the maximum transform block size in consideration of compression efficiency and coding complexity. For example, the encoder may determine the maximum transform block size in units of sequences, pictures, or tile groups. In addition, the encoder may determine an optimal maximum transform block size among specific candidate values (eg, 32 or 64).
  • the encoder encodes maximum transform block size information indicating the maximum transform block size value.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the maximum transform block size information may indicate one of 32 or 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a value obtained by taking a logarithm of a base of 2 with respect to the maximum transform block size value, such as log2_max_luma_transform_block_size_minus2.
  • the encoder may encode the maximum transform block size information by including it in the SPS, PPS, or tile group header of the video signal, as shown in Tables 8 to 10 or 11 to 13.
  • step S1630 the encoder checks whether the width or height of the current block is greater than the maximum transform block size value based on the maximum transform block size information.
  • the encoder determines whether or not ISP (intra sub-partition) intra prediction is applied to the current block, and if ISP intra prediction is not applied, whether it is greater than the maximum transform block size value. You can check whether or not.
  • step S1640 the encoder divides the current block horizontally or vertically based on the fact that the width or height of the current block is greater than the maximum transform block size value.
  • the encoder divides the current block into two blocks based on 1/2 of the width when the width of the current block is greater than the maximum transform block size value, and the height of the current block is If it is larger than the maximum transform block size value, the current block may be divided into two blocks based on a half of the height.
  • the encoder generates a transform coefficient by applying a transform to a transform block divided from the current block.
  • the encoder may generate (derive) an array of transform coefficients transformed into the frequency domain by applying a transform to the residual samples included in the transform block.
  • the encoder determines the maximum SBT block size to which the SBT can be applied, and based on both the width and the height of the current block being less than or equal to the maximum SBT block size value, the encoder applies the SBT to the current block. It is possible to determine whether to do so, and encode the SBT flag indicating whether to apply the SBT.
  • the encoder may encode information for indicating the division direction, division size, and conversion location after determining the division direction, division size, and conversion position of the block.
  • the maximum SBT block size may be set equal to the maximum transform block size value.
  • the maximum SBT block size may be determined based on the maximum transform block size information.
  • the encoder determines the maximum CIIP block size to which CIIP can be applied, and based on the fact that the width and height of the current block are both less than or equal to the maximum CIIP block size value, the encoder configures the CIIP for the current block. It is possible to determine whether to apply or not, and encode a CIIP flag indicating whether to apply CIIP.
  • the encoder may be configured to derive a final prediction sample through weighted summation of an inter prediction sample and an intra prediction sample.
  • FIG. 17 shows an example of a video signal decoding procedure according to an embodiment of the present specification. The operations of FIG. 17 may be performed by the decoding apparatus 200 or the video signal processing apparatus 500.
  • the decoder obtains maximum transform block size information indicating the maximum transform block size value from the video signal.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the maximum transform block size information may indicate one of 32 or 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a value obtained by taking a logarithm of a base of 2 with respect to the maximum transform block size value, such as log2_max_luma_transform_block_size_minus2.
  • the decoder may obtain (decode) the maximum transform block size information from the SPS, PPS, or tile group header of the video signal, as shown in Tables 8 to 10 or Tables 11 to 13.
  • step S1720 the decoder checks whether the width or height of the current block is greater than the maximum transform block size value based on the maximum transform block size information.
  • the decoder determines whether or not ISP (intra sub-partition) intra prediction is applied to the current block, and if ISP intra prediction is not applied, whether it is greater than the maximum transform block size value. You can check whether or not.
  • step S1730 the decoder divides the current block horizontally or vertically based on the fact that the width or height of the current block is greater than the maximum transform block size value.
  • the decoder divides the current block into two blocks based on a half of the width, and the height of the current block If it is larger than the maximum transform block size value, the current block may be divided into two blocks based on a half of the height.
  • the decoder In step S1740, the decoder generates a residual sample by applying an inverse transform to a transform block divided from the current block. For example, the decoder may generate (derive) an array of residual samples by applying an inverse transform to transform coefficients within a block.
  • the decoder checks the maximum SBT block size to which SBT can be applied, and whether SBT is applied to the current block based on the fact that both width and height of the current block are less than or equal to the maximum SBT block size value. Can parse the SBT flag indicating When SBT is applied to the current block as a result of checking the SBT flag, the decoder may additionally apply an inverse transform to a partial region divided in the current block based on information indicating the division direction, division size, and transformation position of the block.
  • the maximum SBT block size may be set equal to the maximum transform block size value.
  • the maximum SBT block size may be determined based on the maximum transform block size information.
  • the decoder checks the maximum CIIP block size to which CIIP can be applied, and whether CIIP is applied to the current block based on both the width and height of the current block being less than or equal to the maximum CIIP block size value.
  • the CIIP flag indicating whether or not can be parsed. If CIIP is applied to the current block as a result of checking the CIIP flag, the decoder may derive a final prediction sample through weighted summation of the inter prediction sample and the intra prediction sample.
  • the video signal processing apparatus 500 includes a memory 520 for storing a video signal, and a processor 510 coupled to the memory 520. can do.
  • the processor 510 determines a maximum transform block size value, encodes maximum transform block size information indicating the maximum transform block size value, and performs current based on the maximum transform block size information. It is checked whether the width or height of the block is greater than the maximum transformed block size value, and based on the width or height of the current block being greater than the maximum transformed block size value, the current block is moved in a horizontal or vertical direction. It is set to generate a transform coefficient by dividing and applying a transform to a transform block divided from the current block.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the processor 510 determines whether or not intra sub-partition (ISP) intra prediction is applied to the current block, and if the ISP intra prediction is not applied, the processor 510 is larger than the maximum transform block size value. Is set to check whether or not.
  • ISP intra sub-partition
  • the processor 510 divides the current block into two blocks based on a half of the width when the width of the current block is greater than the maximum transform block size value, and the current block When the height of is greater than the maximum transform block size value, it is set to divide the current block into two blocks based on a half of the height.
  • the maximum transform block size information may be included in a sequence parameter set (SPS), a picture parameter set (PPS), or a tile group header of the video signal.
  • SPS sequence parameter set
  • PPS picture parameter set
  • tile group header of the video signal.
  • the predefined maximum transform block size candidate values may include 32 and 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a logarithm of a base of 2 with respect to the maximum transform block size value.
  • the processor 510 determines a maximum SBT block size to which SBT can be applied, and based on that both width and height of the current block are less than or equal to the maximum SBT block size value, the current block is It may be set to determine whether to apply the SBT to the current block, and to encode the SBT flag indicating whether to apply the SBT to the current block.
  • the maximum SBT block size may be set equal to the maximum transform block size value.
  • the maximum SBT block size may be determined based on the maximum transform block size information.
  • the processor 510 determines a maximum CIIP block size to which CIIP can be applied, and based on that both width and height of the current block are less than or equal to the maximum CIIP block size value, the current block is It may be configured to determine whether to apply CIIP to the current block, and to encode a CIIP flag indicating whether to apply the CIIP to the current block.
  • the processor 510 obtains maximum transform block size information indicating a maximum transform block size value from the video signal, and the width or height of the current block is determined based on the maximum transform block size information. It is checked whether the current block is greater than the maximum transformed block size value, and based on the width or height of the current block being greater than the maximum transformed block size value, the current block is divided in a horizontal direction or a vertical direction, and the current block It is set to generate residual samples by applying an inverse transform to the transform block divided from.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the processor 510 determines whether or not intra sub-partition (ISP) intra prediction is applied to the current block. If the ISP intra prediction is not applied, the processor 510 is larger than the maximum transform block size value. You can check whether or not.
  • ISP intra sub-partition
  • the processor 510 divides the current block into two blocks based on a half of the width when the width of the current block is greater than the maximum transform block size value, and the current block If the height of is greater than the maximum transform block size value, the current block may be divided into two blocks based on a half of the height.
  • the maximum transform block size information may be included in a sequence parameter set (SPS), a picture parameter set (PPS), or a tile group header of the video signal.
  • SPS sequence parameter set
  • PPS picture parameter set
  • tile group header of the video signal.
  • the predefined maximum transform block size candidate values may include 32 and 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a logarithm of a base of 2 with respect to the maximum transform block size value.
  • the processor 510 checks the maximum SBT block size to which SBT can be applied, and based on the fact that the width and height of the current block are both less than or equal to the maximum SBT block size value, the current It may be set to parse the SBT flag indicating whether SBT is applied to the block.
  • the maximum SBT block size may be set equal to the maximum transform block size value.
  • the maximum SBT block size may be determined based on the maximum transform block size information.
  • the processor 510 checks the maximum CIIP block size to which CIIP can be applied, and based on that the width and height of the current block are both less than or equal to the maximum CIIP block size value, the current It may be set to parse a CIIP flag indicating whether CIIP is applied to the block.
  • the processing method to which the present specification is applied may be produced in the form of a program executed by a computer, and may be stored in a computer-readable recording medium.
  • Multimedia data having a data structure according to the present specification may also be stored in a computer-readable recording medium.
  • the computer-readable recording medium includes all kinds of storage devices and distributed storage devices in which computer-readable data is stored.
  • the computer-readable recording medium includes, for example, Blu-ray disk (BD), universal serial bus (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, magnetic tape, floppy disk, and optical It may include a data storage device.
  • the computer-readable recording medium includes media implemented in the form of a carrier wave (for example, transmission through the Internet).
  • the bitstream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
  • an embodiment of the present specification may be implemented as a computer program product using a program code, and the program code may be executed in a computer according to the embodiment of the present specification.
  • the program code may be stored on a carrier readable by a computer.
  • a non-transitory computer-readable medium stores one or more instructions executed by one or more processors.
  • the one or more instructions determine a maximum transform block size value, encode maximum transform block size information indicating the maximum transform block size value, and the width or height of the current block based on the maximum transform block size information. Is greater than the maximum transformed block size value, and based on the width or height of the current block being greater than the maximum transformed block size value, the current block is divided in a horizontal direction or a vertical direction, and the current
  • the video signal processing apparatus 500 (encoding apparatus 100) is controlled to generate a transform coefficient by applying a transform to a transform block divided from the block.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the one or more instructions determine whether or not intra sub-partition (ISP) intra prediction is applied to the current block, and if the ISP intra prediction is not applied, the maximum transform block size value is The video signal processing device 500 (encoding device 100) is controlled to check whether it is large.
  • ISP intra sub-partition
  • the one or more instructions divide the current block into two blocks based on a half of the width when the width of the current block is greater than the maximum transform block size value, and the current block When the height of the block is greater than the maximum transformed block size value, the video signal processing apparatus 500 (encoding apparatus 100) is controlled to divide the current block into two blocks based on a 1/2 point of the height. .
  • the maximum transform block size information may be included in a sequence parameter set (SPS), a picture parameter set (PPS), or a tile group header of the video signal.
  • SPS sequence parameter set
  • PPS picture parameter set
  • tile group header of the video signal.
  • the predefined maximum transform block size candidate values may include 32 and 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a logarithm of a base of 2 with respect to the maximum transform block size value.
  • the one or more instructions determine the maximum SBT block size to which the SBT can be applied, and based on both the width and the height of the current block being less than or equal to the maximum SBT block size value, the encoder is currently It is possible to determine whether to apply SBT to a block, and encode an SBT flag indicating whether to apply the SBT.
  • the encoder determines the division direction, division size, and transformation position of the block, and then the video signal processing apparatus 500 (encoding apparatus 500) to encode information for indicating the division direction, division size, and transformation position. 100)) can be controlled.
  • the maximum SBT block size may be determined based on the maximum transform block size information.
  • the one or more instructions determine the maximum CIIP block size to which CIIP can be applied, and based on the fact that the width and height of the current block are both less than or equal to the maximum CIIP block size value, the encoder It is possible to determine whether to apply CIIP to the current block, and encode a CIIP flag indicating whether to apply CIIP.
  • the encoder may control the video signal processing apparatus 500 (encoding apparatus 100) to derive a final prediction sample through weighted summation of the inter prediction sample and the intra prediction sample.
  • the one or more commands obtain maximum transform block size information indicating a maximum transform block size value from the video signal, and the width or height of the current block is the maximum transform based on the maximum transform block size information. It checks whether it is greater than a block size value, and based on the width or height of the current block being greater than the maximum transform block size value, the current block is divided in a horizontal direction or a vertical direction, and the current block is divided from the current block.
  • the video signal processing apparatus 500 (decoding apparatus 200) is controlled to generate a residual sample by applying an inverse transform to the transform block.
  • the maximum transform block size information indicates one of predefined maximum transform block size candidate values.
  • the one or more instructions determine whether or not intra sub-partition (ISP) intra prediction is applied to the current block, and if the ISP intra prediction is not applied, the maximum transform block size value is The video signal processing device 500 (decoding device 200) is controlled to check whether it is large.
  • ISP intra sub-partition
  • the one or more instructions divide the current block into two blocks based on a half of the width when the width of the current block is greater than the maximum transform block size value, and the current block When the height of the block is greater than the maximum transformed block size value, the video signal processing apparatus 500 (decoding apparatus 200) is controlled to divide the current block into two blocks based on a 1/2 point of the height. .
  • the maximum transform block size information may be included in a sequence parameter set (SPS), a picture parameter set (PPS), or a tile group header of the video signal.
  • SPS sequence parameter set
  • PPS picture parameter set
  • tile group header of the video signal.
  • the predefined maximum transform block size candidate values may include 32 and 64.
  • the maximum transform block size information may be coded as a value obtained by subtracting a specific value from a logarithm of a base of 2 with respect to the maximum transform block size value.
  • the one or more instructions determine the maximum SBT block size to which the SBT can be applied, and based on both the width and the height of the current block being less than or equal to the maximum SBT block size value, the current block is
  • the video signal processing apparatus 500 decoding apparatus 200
  • the one or more instructions determine the maximum CIIP block size to which CIIP can be applied, and based on the fact that the width and height of the current block are both less than or equal to the maximum CIIP block size value, the current block
  • the video signal processing apparatus 500 (decoding apparatus 200) may be controlled to parse a CIIP flag indicating whether CIIP is applied to or not.
  • the decoder and encoder to which the present specification is applied include a multimedia broadcasting transmission/reception device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video chat device, a real-time communication device such as video communication, a mobile streaming device, Storage media, camcorders, video-on-demand (VoD) service providers, OTT video (Over the top video) devices, Internet streaming service providers, three-dimensional (3D) video devices, video telephony video devices, and medical video devices. And can be used to process video signals or data signals.
  • an OTT video (Over the top video) device may include a game console, a Blu-ray player, an Internet-connected TV, a home theater system, a smartphone, a tablet PC, and a digital video recorder (DVR).
  • an embodiment of the present specification may be implemented by various means, for example, hardware, firmware, software, or a combination thereof.
  • an embodiment of the present specification includes one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), and FPGAs ( field programmable gate arrays), processors, controllers, microcontrollers, microprocessors, etc.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • an embodiment of the present specification may be implemented in the form of a module, procedure, function, etc. that perform 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 may exchange data with the processor through various known means.

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)

Abstract

본 명세서의 실시예들은 비디오 신호를 처리하기 위한 방법 및 장치를 제공한다. 본 명세서의 실시예에 따른 비디오 신호의 디코딩 방법은, 상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하는 단계와, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계와, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하는 단계와, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하는 단계를 포함하고, 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다. 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 시그널링하고, 최대 변환 블록 사이즈에 따라 분할된 블록에 대해 변환을 수행함으로써, 변환을 위한 코딩 복잡도의 유연성(flexibility)과 확장성(scalability)을 확보할 수 있다.

Description

비디오 신호를 처리하기 위한 방법 및 장치
본 명세서의 실시예는 비디오/영상 압축 코딩 시스템에 관한 것으로서, 보다 구체적으로 비디오 신호의 인코딩/디코딩 과정에서 변환을 수행하기 위한 방법 및 장치에 관한 것이다.
압축 부호화는 디지털화된 정보를 통신 회선을 통해 전송하거나, 저장 매체에 적합한 형태로 저장하기 위한 일련의 신호 처리 기술을 의미한다. 영상, 이미지, 음성 등의 미디어가 압축 부호화의 대상이 될 수 있으며, 특히 영상을 대상으로 압축 부호화를 수행하는 기술을 비디오 영상 압축이라고 일컫는다.
차세대 비디오 컨텐츠는 고해상도(high spatial resolution), 고 프레임 율(high frame rate) 및 영상 표현의 고차원화(high dimensionality of scene representation)라는 특징을 갖게 될 것이다. 그러한 컨텐츠를 처리하기 위해서는 메모리 저장(memory storage), 메모리 액세스율(memory access rate) 및 처리 전력(processing power) 측면에서 엄청난 증가를 가져올 것이다.
일반적인 비디오 압축 코딩 시스템에서, 비디오 신호에 대한 예측을 통해 예측 신호가 생성되고, 원본 비디오 신호에서 예측 신호를 감산함으로써 생성된 레지듀얼 신호에 대하여 변환이 적용된다. 변환을 위한 압축 효율을 향상시키면서 연산 복잡도 및 처리 시간을 감소시키기 위하여 다양한 변환 기법들이 논의되고 있다.
본 명세서의 실시예는 효율적으로 변환이 적용될 수 있는 블록 사이즈를 결정하고 변환을 적용하기 위한 방법 및 장치를 제공한다.
본 명세서의 실시예에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 명세서의 실시예가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서의 실시예들은 비디오 신호를 처리하기 위한 방법 및 장치를 제공한다. 본 명세서의 실시예에 따른 비디오 신호의 디코딩 방법은, 상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하는 단계와, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계와, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하는 단계와, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하는 단계를 포함하고, 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
일 실시예에서, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계는, 상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하는 단계와, 상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계를 포함할 수 있다.
일 실시예에서, 상기 현재 블록을 분할하는 단계는, 상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계와, 상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계를 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함될 수 있다.
일 실시예에서, 상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 상기 비디오 신호의 디코딩 방법은, SBT(sub-block transform)가 적용될 수 있는 최대 SBT 블록 사이즈를 확인하는 단계와, 상기 현재 블록의 너비와 높이가 모두 상기 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 SBT가 적용되는지 여부를 지시하는 SBT 플래그를 파싱하는 단계를 더 포함할 수 있으며, 여기서 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 상기 비디오 신호의 디코딩 방법은, CIIP(combined inter and intra prediction)가 적용될 수 있는 최대 CIIP 블록 사이즈를 확인하는 단계와, 상기 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 CIIP가 적용되는지 여부를 지시하는 CIIP 플래그를 파싱하는 단계를 더 포함할 수 있다.
본 명세서의 실시예에 따른 비디오 신호의 인코딩 방법은, 최대 변환 블록 사이즈 값을 결정하는 단계와, 상기 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩하는 단계와, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계와, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하는 단계와, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성하는 단계를 포함하고, 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
본 명세서의 실시예에 따른 비디오 신호의 디코딩 장치는, 상기 비디오 신호를 저장하는 메모리와, 상기 메모리와 결합되고, 상기 비디오 신호를 처리하는 프로세서를 포함한다. 상기 프로세서는, 상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하도록 설정되고, 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
본 명세서의 실시예에 따른 비디오 신호의 인코딩 장치는, 상기 비디오 신호를 저장하는 메모리와, 상기 메모리와 결합되고, 상기 비디오 신호를 처리하는 프로세서를 포함한다. 상기 프로세서는, 최대 변환 블록 사이즈 값을 결정하고, 상기 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성하도록 설정되며, 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
본 명세서의 실시예에 따르면, 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 시그널링하고, 최대 변환 블록 사이즈에 따라 분할된 블록에 대해 변환을 수행함으로써, 변환을 위한 코딩 복잡도의 유연성(flexibility)과 확장성(scalability)을 확보할 수 있다.
본 명세서의 실시예에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 명세서의 실시예가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 명세서에 대한 실시예를 제공하고, 상세한 설명과 함께 본 명세서의 기술적 특징을 설명한다.
도 1은 본 명세서의 실시예에 따른 영상 코딩 시스템의 예를 도시한다.
도 2는 본 명세서의 실시예에 따른 비디오 신호의 인코딩이 수행되는 인코딩 장치의 개략적인 블록도의 예를 도시한다.
도 3은 본 명세서의 실시예에 따른 영상 신호의 디코딩이 수행되는 디코딩 장치의 개략적인 블록도의 예를 도시한다.
도 4는 본 명세서의 실시예에 따른 컨텐츠 스트리밍 시스템의 예를 도시한다.
도 5는 본 명세서의 실시예에 따른 비디오 신호 처리 장치의 예를 도시한다.
도 6은 본 명세서의 실시예에 따른 픽처의 분할 구조의 예를 도시한다.
도 7a 내지 도 7d는 본 명세서의 실시예에 따른 블록 분할 구조의 예를 도시한다.
도 8은 본 명세서의 실시예에 따른 TT(ternary tree) 및 BT(binary tree) 분할이 제한되는 경우의 예를 도시한다.
도 9는 본 명세서의 실시예에 따른 엔트로피 인코딩을 위한 블록도이다.
도 10a 및 도 10b는 본 명세서의 실시예에 따른 엔트로피 인코딩 방법 및 관련 컴포넌트를 도시한다.
도 11a 및 도 11b는 본 명세서의 실시예에 따른 엔트로피 디코딩 방법 및 관련 컴포넌트를 도시한다.
도 12는 본 명세서의 실시예에 따른 비디오 신호를 구성하는 픽처의 인코딩을 위한 흐름도의 예이다.
도 13은 본 명세서의 실시예에 따른 비디오 신호를 구성하는 픽처의 디코딩을 위한 흐름도의 예이다.
도 14는 본 명세서의 실시예에 따른 코딩된 영상에 대한 계층 구조의 예를 도시한다.
도 15a 및 도 15b는 본 명세서의 실시예에 따른 인트라 서브파티션(intra sub-partition, ISP)에 따른 블록 분할의 예를 도시한다.
도 16은 본 명세서의 실시예에 따른 비디오 신호의 인코딩 절차의 예를 도시한다.
도 17은 본 명세서의 실시예에 따른 비디오 신호의 디코딩 절차의 예를 도시한다.
이하, 본 명세서의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 명세서의 예시적인 실시형태를 설명하고자 하는 것이며, 본 명세서가 실시될 수 있는 유일한 실시형태를 나타내고자 하는 것이 아니다. 이하의 상세한 설명은 본 명세서의 완전한 이해를 제공하기 위해서 구체적 세부사항을 포함한다. 그러나, 당업자는 본 명세서의 실시예가 이러한 구체적 세부사항 없이도 실시될 수 있음을 안다.
몇몇 경우, 본 명세서의 개념이 모호해지는 것을 피하기 위하여 공지의 구조 및 장치는 생략되거나, 각 구조 및 장치의 핵심기능을 중심으로 한 블록도 형식으로 도시될 수 있다.
아울러, 본 명세서에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미를 명확히 기재하므로, 본 명세서의 설명에서 사용된 용어의 명칭만으로 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.
이하의 설명에서 사용되는 특정 용어들은 본 명세서의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 명세서의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다. 예를 들어, 신호, 데이터, 샘플, 픽처, 프레임, 블록 등의 경우 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다. 본 문서에서 비디오 신호 또는 영상 신호는 비디오 또는 영상을 표현하기 위한 데이터(예: 샘플 값) 뿐만 아니라 인코딩/디코딩에 필요한 데이터를 포함한다.
이하 본 명세서에서 '처리 유닛'은 예측, 변환 및/또는 양자화 등과 같은 인코딩/디코딩의 처리 과정이 수행되는 단위를 의미한다. 또한, 처리 유닛은 휘도(luma) 성분에 대한 단위와 색차(chroma) 성분에 대한 단위를 포함하는 의미로 해석될 수 있다. 예를 들어, 처리 유닛은 코딩 트리 유닛(coding tree unit, CTU), 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU) 또는 변환 유닛(transform unit, TU)에 해당할 수 있다.
또한, 처리 유닛은 휘도 성분에 대한 단위 또는 색차 성분에 대한 단위로 해석될 수 있다. 예를 들어, 처리 유닛은 휘도 성분에 대한 코딩 트리 블록(coding tree block, CTB), 코딩 블록(coding block, CB), 예측 블록(prediction block, PB) 또는 변환 블록(transform block, TB)에 해당할 수 있다. 또는, 처리 유닛은 색차 성분에 대한 CTB, CB, PB, 또는 TB에 해당할 수 있다. 또한, 이에 한정되는 것은 아니며 처리 유닛은 휘도 성분에 대한 단위와 색차 성분에 대한 단위를 포함하는 의미로 해석될 수도 있다.
또한, 처리 유닛은 반드시 정사각형의 블록으로 한정되는 것은 아니며, 3개 이상의 꼭지점을 가지는 다각형 형태로 구성될 수도 있다. 이하 본 명세서에서 픽셀 또는 화소 등을 샘플로 통칭한다. 그리고, 샘플을 이용한다는 것은 픽셀 값 또는 화소 값 등을 이용한다는 것을 의미할 수 있다.
도 1은 본 명세서의 실시예에 따른 영상 코딩 시스템의 예를 도시한다. 영상 코딩 시스템은 소스 디바이스(10) 및 수신 디바이스(20)를 포함할 수 있다. 소스 디바이스(10)는 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스(20)로 전달할 수 있다.
소스 디바이스(10)는 비디오 소스(11), 인코딩 장치(12), 송신기(13)를 포함할 수 있다. 수신 디바이스(20)는 수신기(21), 디코딩 장치(22) 및 렌더러(23)를 포함할 수 있다. 인코딩 장치(12)는 비디오/영상 인코딩 장치로 지칭될 수 있고, 디코딩 장치(22)는 비디오/영상 디코딩 장치로 지칭될 수 있다. 송신기(13)는 인코딩 장치(12)에 포함될 수 있다. 수신기(21)는 디코딩 장치(22)에 포함될 수 있다. 렌더러(23)는 디스플레이부를 포함할 수도 있고, 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다.
비디오 소스(11)는 비디오/영상의 캡쳐, 합성 또는 생성 과정을 통하여 비디오/영상을 획득할 수 있다. 비디오 소스(11)는 비디오/영상 캡쳐 디바이스 및/또는 비디오/영상 생성 디바이스를 포함할 수 있다. 비디오/영상 캡쳐 디바이스는 예를 들어, 하나 이상의 카메라, 이전에 캡쳐된 비디오/영상을 포함하는 비디오/영상 아카이브를 포함할 수 있다. 비디오/영상 생성 디바이스는 예를 들어 컴퓨터, 태블릿(tablet) 및 스마트폰을 포함할 수 있으며 (전자적으로) 비디오/영상을 생성할 수 있다. 예를 들어, 컴퓨터를 통하여 가상의 비디오/영상이 생성될 수 있으며, 이 경우 관련 데이터가 생성되는 과정으로 비디오/영상 캡쳐 과정이 갈음될 수 있다.
인코딩 장치(12)는 입력 비디오/영상을 인코딩할 수 있다. 인코딩 장치(12)는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화와 같은 일련의 절차를 수행할 수 있다. 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다.
송신기(13)는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스(20)의 수신기(21)로 전달할 수 있다. 디지털 저장 매체는 USB(universal serial bus), SD 카드(secure digital card), CD(compact disc), DVD(digital versatile disc), 블루레이 디스크(blu-ray disc), HDD(hard disk drive), SSD(solid state drive)와 같은 다양한 저장 매체를 포함할 수 있다. 송신기(13)는 미리 정해진 파일 포맷을 통해 미디어 파일을 생성하기 위한 엘레먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신기(21)는 비트스트림을 추출하여 디코딩 장치(22)로 전달할 수 있다.
디코딩 장치(22)는 인코딩 장치(12)의 동작에 대응하는 역양자화, 역변환, 예측과 같은 일련의 절차를 수행함으로써 비디오/영상을 디코딩할 수 있다.
렌더러(23)는 디코딩된 비디오/영상을 렌더링할 수 있다. 렌더링된 비디오/영상은 디스플레이부를 통하여 디스플레이 될 수 있다.
도 2는 본 명세서의 실시예에 따른 비디오 신호의 인코딩이 수행되는 인코딩 장치의 개략적인 블록도의 예를 도시한다. 도 2의 인코딩 장치(100)는 도 1의 인코딩 장치(12)에 대응할 수 있다.
도 2를 참조하면, 인코딩 장치(100)는 영상 분할부(image partitioning module)(110), 감산부(subtraction module)(115), 변환부(transform module)(120), 양자화부(quantization module)(130), 역양자화부(de-quantization module)(140), 역변환부(inverse-transform module)(150), 가산부(addition module)(155), 필터링부(filtering module)(160), 메모리(memory)(170), 인터 예측부(inter prediction module)(180), 인트라 예측부(intra prediction module)(185), 및 엔트로피 인코딩부(entropy encoding module)(190)를 포함할 수 있다. 인터 예측부(180) 및 인트라 예측부(185)를 합쳐서 예측부라고 불릴 수 있다. 즉, 예측부는 인터 예측부(180) 및 인트라 예측부(185)를 포함할 수 있다. 변환부(120), 양자화부(130), 역양자화부(140), 역변환부(150)는 레지듀얼(residual) 처리부에 포함될 수 있다. 레지듀얼 처리부는 감산부(115)를 더 포함할 수도 있다. 상술한 영상 분할부(110), 감산부(115), 변환부(120), 양자화부(130), 역양자화부(140), 역변환부(150), 가산부(155), 필터링부(160), 인터 예측부(180), 인트라 예측부(185) 및 엔트로피 인코딩부(190)는 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어 인코더 또는 프로세서)에 의하여 구성될 수 있다. 또한 메모리(170)는 DPB(decoded picture buffer)(175)를 포함할 수 있고, 디지털 저장 매체에 의하여 구성될 수도 있다.
영상 분할부(110)는 인코딩 장치(100)에 입력된 입력 영상(또는, 픽처, 프레임)를 하나 이상의 처리 유닛(processing unit)으로 분할할 수 있다. 예를 들어, 처리 유닛은 코딩 유닛(CU)으로 지칭될 수 있다. 이 경우 코딩 유닛은 코딩 트리 유닛(coding tree unit, CTU) 또는 최대 코딩 유닛(largest coding unit, LCU)으로부터 QTBT (Quad-tree binary-tree) 구조에 따라 재귀적으로(recursively) 분할될 수 있다. 예를 들어, 하나의 코딩 유닛은 쿼드 트리 구조 및/또는 바이너리 트리 구조를 기반으로 하위(deeper) 뎁스의 복수의 코딩 유닛들로 분할될 수 있다. 이 경우 예를 들어 쿼드 트리 구조가 먼저 적용되고 바이너리 트리 구조가 나중에 적용될 수 있다. 또는 바이너리 트리 구조가 먼저 적용될 수도 있다. 더 이상 분할되지 않는 최종 코딩 유닛을 기반으로 본 명세서의 실시예에 따른 코딩 절차가 수행될 수 있다. 이 경우 영상 특성에 따른 코딩 효율에 기반하여 최대 코딩 유닛이 바로 최종 코딩 유닛으로 사용될 수 있다. 또한, 필요에 따라 코딩 유닛은 재귀적으로 보다 하위 뎁스의 코딩 유닛들로 분할됨으로써 최적의 사이즈를 갖는 코딩 유닛이 최종 코딩 유닛으로 사용될 수 있다. 여기서 코딩 절차라 함은 후술되는 예측, 변환, 및 복원과 같은 절차를 포함할 수 있다. 다른 예로, 처리 유닛은 예측 유닛(PU) 또는 변환 유닛(TU)을 더 포함할 수 있다. 이 경우 예측 유닛 및 변환 유닛은 각각 상술한 코딩 유닛으로부터 분할될 수 있다. 예측 유닛은 샘플 예측의 단위일 수 있고, 변환 유닛은 변환 계수를 유도하는 단위 또는 변환 계수로부터 레지듀얼 신호(residual signal)를 유도하는 단위일 수 있다.
본 문서에서 사용되는 용어 '유닛(unit)'은 경우에 따라서 '블록(block)' 또는 '영역(area)'과 같은 용어와 혼용될 수 있다. 본 문서에서, MxN 블록은 M개의 열과 N개의 행으로 이루어진 샘플들 또는 변환 계수(transform coefficient)들의 집합을 나타낼 수 있다. 샘플은 일반적으로 픽셀 또는 픽셀의 값을 나타낼 수 있으며, 휘도(luma) 성분의 픽셀/픽셀값을 나타낼 수도 있고, 채도(chroma) 성분의 픽셀/픽셀 값을 나타낼 수도 있다. 샘플은 하나의 픽처(또는 영상)을 픽셀(pixel) 또는 펠(pel)에 대응하는 용어로서 사용될 수 있다.
인코딩 장치(100)는 입력 영상 신호(원본 블록, 원본 샘플 어레이)에서 인터 예측부 (180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(예측된 블록, 예측 샘플 어레이)를 감산함으로써 레지듀얼 신호(residual signal, 잔여 블록, 잔여 샘플 어레이)를 생성할 수 있다. 생성된 레지듀얼 신호는 변환부(120)로 전송된다. 이 경우 도시된 바와 같이 인코딩 장치(100) 내에서 입력 영상 신호(원본 블록, 원본 샘플 어레이)에서 예측 신호(예측 블록, 예측 샘플 어레이)를 감산하는 유닛은 감산부(115)로 지칭될 수 있다. 예측부는 처리 대상 블록(이하, 현재 블록이라 함)에 대한 예측을 수행하고, 현재 블록에 대한 예측 샘플들을 포함하는 예측된 블록(predicted block)을 생성할 수 있다. 예측부(prediction module)는 CU 단위로 인트라 예측이 적용되는지 또는 인터 예측이 적용되는지 결정할 수 있다. 예측부는 각 예측모드에 대한 설명에서 후술하는 바와 같이 예측 모드 정보와 같이 예측에 관한 정보를 생성하고, 예측에 관한 정보를 엔트로피 인코딩부(190)로 전달할 수 있다. 예측에 관한 정보는 엔트로피 인코딩부(190)에서 인코딩되고, 비트스트림 형태로 출력될 수 있다.
인트라 예측부(185)는 현재 픽처 내의 샘플들을 참조하여 현재 블록을 예측할 수 있다. 참조되는 샘플들은 예측 모드에 따라 현재 블록의 주변(neighbor)에 위치할 수 있고, 또는 떨어져서 위치할 수도 있다. 인트라 예측에서 예측 모드들은 복수의 비방향성 모드와 복수의 방향성 모드를 포함할 수 있다. 비방향성 모드는 예를 들어 DC 모드 및 플래너 모드(Planar 모드)를 포함할 수 있다. 방향성 모드는 예측 방향의 세밀한 정도에 따라 예를 들어 33개의 방향성 예측 모드 또는 65개의 방향성 예측 모드를 포함할 수 있다. 다만, 이는 예시로서 설정에 따라 그 이상 또는 그 이하의 개수의 방향성 예측 모드들이 사용될 수 있다. 인트라 예측부(185)는 주변 블록에 적용된 예측 모드를 이용하여, 현재 블록에 적용되는 예측 모드를 결정할 수도 있다.
인터 예측부(180)는 참조 픽처 상에서 움직임 벡터에 의해 특정되는 참조 블록(참조 샘플 어레이)을 기반으로, 현재 블록에 대한 예측된 블록을 유도할 수 있다. 이때, 인터 예측 모드에서 전송되는 움직임 정보의 양을 감소시키기 위해 인터 예측부(180)는 주변 블록과 현재 블록 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 블록, 서브블록, 또는 샘플 단위로 예측할 수 있다. 움직임 정보는 움직임 벡터 및 참조 픽처 인덱스를 포함할 수 있다. 움직임 정보는 인터 예측 방향(L0 예측, L1 예측, Bi 예측 등) 정보를 더 포함할 수 있다. 인터 예측의 경우, 주변 블록은 현재 픽처 내에 존재하는 공간적 주변 블록(spatial neighboring block)과 참조 픽처에 존재하는 시간적 주변 블록(temporal neighboring block)을 포함할 수 있다. 참조 블록을 포함하는 참조 픽처와 시간적 주변 블록을 포함하는 참조 픽처는 동일할 수도 있고, 다를 수도 있다. 시간적 주변 블록은 동일 위치 참조 블록(collocated reference block), 동일 위치 CU(colCU)로 지칭될 수 있으며, 시간적 주변 블록을 포함하는 참조 픽처는 동일 위치 픽처(collocated picture, colPic)로 지칭될 수 있다. 예를 들어, 인터 예측부(180)는 주변 블록들의 움직임 정보에 기반하여 움직임 정보 후보 리스트를 구성하고, 현재 블록의 움직임 벡터 및/또는 참조 픽처 인덱스를 도출하기 위하여 어떤 후보가 사용되는지를 지시하는 정보를 생성할 수 있다. 다양한 예측 모드에 기반하여 인터 예측이 수행될 수 있으며, 예를 들어 스킵 모드와 머지 모드가 사용되는 경우, 인터 예측부(180)는 주변 블록의 움직임 정보를 현재 블록의 움직임 정보로서 이용할 수 있다. 스킵 모드의 경우, 머지 모드와 달리 레지듀얼 신호가 전송되지 않는다. 움직임 벡터 예측(motion vector prediction, MVP) 모드의 경우, 주변 블록의 움직임 벡터를 움직임 벡터 예측자(motion vector predictor)로 이용하고, 움직임 벡터 차분(motion vector difference, MVD)을 시그널링함으로써 현재 블록의 움직임 벡터를 지시할 수 있다.
예측부는 후술되는 다양한 예측 방법을 기반으로 예측 신호(예측 샘플)를 생성할 수 있다. 예를 들어, 예측부는 하나의 블록에 대한 예측을 위하여 인트라 예측 또는 인터 예측을 적용할 수 있을 뿐만 아니라, 인트라 예측과 인터 예측을 함께(동시에) 적용할 수 있다. 이는 CIIP(combined inter and intra prediction)으로 지칭될 수 있다. 또한, 예측부는 블록에 대한 예측을 위하여 IBC(intra block copy)를 수행할 수도 있다. IBC는, 예를 들어, SCC(screen content coding)와 같이 컨텐츠(예: 게임) 영상/동영상 코딩을 위하여 사용될 수 있다. 또한, IBC는 CPR(current picture referencing)로 지칭될 수도 있다. IBC는 기본적으로 현재 픽처 내에서 예측을 수행하나 현재 픽처 내에서 참조 블록을 도출하는 점에서 인터 예측과 유사하게 수행될 수 있다. 즉, IBC는 본 문서에서 설명되는 인터 예측 기법들 중 적어도 하나를 이용할 수 있다.
예측부(인터 예측부(180) 및/또는 인트라 예측부(185)를 포함)에 의해 생성된 예측 신호는 복원 신호를 생성하기 위해 이용되거나 레지듀얼 신호를 생성하기 위해 이용될 수 있다. 변환부(120)는 레지듀얼 신호에 변환 기법을 적용하여 변환 계수들(transform coefficients)을 생성할 수 있다. 예를 들어, 변환 기법은 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform), KLT(Karhunen-Loeve Transform), GBT(Graph-Based Transform), 또는 CNT(Conditionally Non-linear Transform) 중 적어도 하나를 포함할 수 있다. 여기서, GBT는 픽셀 간의 관계 정보를 나타내는 그래프로부터 획득되는 변환을 의미한다. CNT는 이전에 복원된 모든 픽셀(all previously reconstructed pixel)를 이용하여 예측 신호를 생성하고, 예측 신호에 기반하여 획득되는 변환을 의미한다. 또한, 변환 과정은 정사각형의 동일한 크기를 갖는 픽셀 블록에 적용될 수도 있고, 정사각형이 아니거나 가변적인 크기를 갖는 블록에도 적용될 수 있다.
양자화부(130)는 변환 계수들을 양자화하고, 양자화된 변환 계수들을 엔트로피 인코딩부(190)로 전송한다. 엔트로피 인코딩부(190)는 양자화된 신호(양자화된 변환 계수들에 관한 정보)를 인코딩함으로써 비트스트림으로 출력할 수 있다. 양자화된 변환 계수들에 관한 정보는 레지듀얼 정보로 지칭될 수 있다. 양자화부(130)는 계수 스캔 순서(scan order)에 기반하여 블록 형태의 양자화된 변환 계수들을 1차원 벡터 형태로 재정렬할 수 있고, 1차원 벡터 형태의 양자화된 변환 계수들의 특성에 기반하여 양자화된 변환 계수들에 관한 정보를 생성할 수도 있다. 엔트로피 인코딩부(190)는, 예를 들어, 지수 골롬(exponential Golomb), CAVLC(context-adaptive variable length coding), CABAC(context-adaptive binary arithmetic coding)과 같은 다양한 인코딩 기법을 수행할 수 있다. 엔트로피 인코딩부(190)는 양자화된 변환 계수들 외 비디오/이미지 복원에 필요한 정보들(예를 들어, 신택스 요소들(syntax elements)의 값)을 함께 또는 별도로 인코딩할 수도 있다. 인코딩된 정보(예: 비디오/영상 정보)는 비트스트림 형태로 NAL(network abstraction layer) 유닛 단위로 전송 또는 저장될 수 있다. 비디오/영상 정보는 APS(adaptation parameter set), PPS(picture parameter set), SPS(sequence parameter set), 또는 VPS(video parameter set)와 같은 다양한 파라미터 세트에 관한 정보를 더 포함할 수 있다. 본 문서에서 후술되는 시그널링/전송되는 정보 및/또는 신택스 요소들은 상술한 인코딩 절차를 통하여 인코딩되어 비트스트림에 포함될 수 있다. 비트스트림은 네트워크를 통하여 전송될 수 있고, 또는 디지털 저장매체에 저장될 수 있다. 여기서 네트워크는 방송망 및/또는 통신망을 포함할 수 있고, 디지털 저장매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD와 같은 저장매체를 포함할 수 있다. 엔트로피 인코딩부(190)로부터 출력된 신호는 전송하는 전송부(미도시) 및/또는 저장하는 저장부(미도시)가 인코딩 장치(100)의 내/외부 엘레먼트로서 구성될 수 있고, 또는 전송부는 엔트로피 인코딩부(190)의 구성요소일 수도 있다.
양자화부(130)로부터 출력된 양자화된 변환 계수들은 복원 신호를 생성하기 위해 이용될 수 있다. 예를 들어, 양자화된 변환 계수들에 대한 루프 내의 역양자화부(140) 및 역변환부(150)를 통해 역양자화 및 역변환을 적용함으로써 레지듀얼 신호가 복원될 수 있다. 가산부(155)는 복원된 레지듀얼 신호를 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호에 더함으로써 복원(reconstructed) 신호(복원 픽처, 복원 블록, 복원 샘플 어레이)를 생성할 수 있다. 스킵 모드가 적용된 경우와 같이 처리 대상 블록에 대한 레지듀얼 신호가 없는 경우, 예측된 블록이 복원 블록으로 사용될 수 있다. 가산부(155)는 복원부 또는 복원 블록 생성부라고 불릴 수 있다. 생성된 복원 신호는 현재 픽처 내 다음 처리 대상 블록의 인트라 예측을 위하여 사용될 수 있고, 후술하는 바와 같이 필터링을 거쳐서 다음 픽처의 인터 예측을 위하여 사용될 수도 있다.
필터링부(160)는 복원 신호에 필터링을 적용함으로써 주관적/객관적 화질을 향상시킬 수 있다. 예를 들어, 필터링부(160)는 복원 픽처에 다양한 필터링 방법을 적용하여 수정된(modified) 복원 픽처를 생성할 수 있고, 수정된 복원 픽처를 메모리(170)의 DPB(175)에 전송할 수 있다. 다양한 필터링 방법은 예를 들어, 디블록킹 필터링, 샘플 적응적 오프셋(sample adaptive offset, SAO), 적응적 루프 필터(adaptive loop filter, ALF), 양방향 필터(bilateral filter)를 포함할 수 있다. 필터링부(160)는 각 필터링 방법에 대한 설명에서 후술하는 바와 같이 필터링에 관한 정보를 생성하고, 필터링에 관한 정보를 엔트로피 인코딩부(190)로 전달할 수 있다. 필터링에 관한 정보는 엔트로피 인코딩부(190)에서의 엔트로피 인코딩을 통해 비트스트림 형태로 출력될 수 있다.
DPB(175)에 전송된 수정된 복원 픽처는 인터 예측부(180)에서 참조 픽처로 사용될 수 있다. 인터 예측이 적용되는 경우, 인코딩 장치(100)는 수정된 복원 픽처를 사용하여 인코딩 장치(100)와 디코딩 장치(200)에서의 예측 미스매치를 피할 수 있고, 부호화 효율도 향상시킬 수 있다. DPB(175)는 수정된 복원 픽처를 인터 예측부(180)에서의 참조 픽처로 사용하기 위해 저장할 수 있다. 저장된 움직임 정보는 공간적 주변 블록의 움직임 정보 또는 시간적 주변 블록의 움직임 정보로 사용하기 위하여 인터 예측부(180)에 전달될 수 있다. 메모리(170)는 현재 픽처 내 복원된 블록들의 복원된 샘플들을 저장할 수 있고, 복원된 샘플들에 대한 정보를 인트라 예측부(185)에 전달할 수 있다.
도 3은 본 명세서의 실시예에 따른 영상 신호의 디코딩이 수행되는 디코딩 장치의 개략적인 블록도의 예를 도시한다. 도 3의 디코딩 장치(200)는 도 1의 디코딩 장치(22)에 대응할 수 있다.
도 3을 참조하면, 디코딩 장치(200)는 엔트로피 디코딩부(entropy decoding module)(210), 역양자화부(de-quantization module)(220), 역변환부(inverse transform module)(230), 가산부(addition module)(235), 필터링부(filtering module)(240), 메모리(250), 인터 예측부(inter prediction module)(260) 및 인트라 예측부(intra prediction module)(265)를 포함할 수 있다. 인터 예측부(260) 및 인트라 예측부(265)는 예측부(prediction module)로 통칭될 수 있다. 즉, 예측부는 인터 예측부(180) 및 인트라 예측부(185)를 포함할 수 있다. 역양자화부(220)와 역변환부(230)는 레지듀얼 처리부(residual processing module)로 통칭될 수 있다. 즉, 레지듀얼 처리부는 역양자화부(220)와 역변환부(230)를 포함할 수 있다. 상술한 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 가산부(235), 필터링부(240), 인터 예측부(260), 및 인트라 예측부(265)는 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어 디코더 또는 프로세서)에 의하여 구성될 수 있다. 또한 메모리(250)는 DPB(255)를 포함할 수도 있고, 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어 메모리 또는 디지털 저장 매체)에 의하여 구성될 수 있다.
비디오/이미지 정보를 포함하는 비트스트림이 입력되면, 디코딩 장치(200)는 도 2의 인코딩 장치(100)에서 비디오/이미지 정보가 처리된 프로세스에 대응하여 영상을 복원할 수 있다. 예를 들어, 디코딩 장치(200)는 인코딩 장치(100)에서 적용된 처리 유닛을 이용하여 디코딩을 수행할 수 있다. 따라서 디코딩시 처리 유닛은 예를 들어 코딩 유닛일 수 있고, 코딩 유닛은 코딩 트리 유닛 또는 최대 코딩 유닛으로부터 쿼드 트리 구조 및/또는 바이너리 트리 구조를 따라서 분할될 수 있다. 그리고, 디코딩 장치(200)를 통해 디코딩 및 출력된 복원 영상 신호는 재생 장치를 통해 재생될 수 있다.
디코딩 장치(200)는 도 2의 인코딩 장치(100)로부터 출력된 신호를 비트스트림 형태로 수신할 수 있고, 수신된 신호는 엔트로피 디코딩부(210)를 통해 디코딩될 수 있다. 예를 들어, 엔트로피 디코딩부(210)는 비트스트림을 파싱하여 영상 복원(또는 픽처 복원)에 필요한 정보(예: 비디오/영상 정보)를 도출할 수 있다. 비디오/영상 정보는 APS(adaptation parameter set), PPS(picture parameter set), SPS(sequence parameter set), 또는 VPS(video parameter set)와 같은 다양한 파라미터 세트에 관한 정보를 더 포함할 수 있다. 디코딩 장치는 파라미터 세트에 관한 정보를 기반으로 픽처를 디코딩할 수 있다. 본 문서에서 후술되는 시그널링/수신되는 정보 및/또는 신택스 요소들은 디코딩 절차를 통하여 디코딩되어 비트스트림으로부터 획득될 수 있다. 예컨대, 엔트로피 디코딩부(210)는 지수 골롬 부호화, CAVLC 또는 CABAC과 같은 코딩 기법을 사용하여 비트스트림 내 정보를 획득하고, 영상 복원에 필요한 신택스 엘레먼트의 값, 레지듀얼에 관한 변환 계수의 양자화된 값을 출력할 수 있다. 보다 상세하게, CABAC 엔트로피 디코딩 방법은, 비트스트림에서 각 구문 요소에 해당하는 빈(bin)을 수신하고, 디코딩 대상 구문 요소 정보와 주변 및 디코딩 대상 블록의 디코딩 정보 혹은 이전 단계에서 디코딩된 심볼/빈의 정보를 이용하여 문맥(context) 모델을 결정하고, 결정된 문맥 모델에 따라 빈(bin)의 발생 확률을 예측하여 빈의 산술 디코딩(arithmetic decoding)를 수행함으로써 각 구문 요소의 값에 해당하는 심볼을 생성할 수 있다. 이때, CABAC 엔트로피 디코딩 방법은 문맥 모델 결정 후 다음 심볼/빈의 문맥 모델을 위해 디코딩된 심볼/빈의 정보를 이용하여 문맥 모델을 업데이트할 수 있다. 엔트로피 디코딩부(210)에서 디코딩된 정보 중 예측에 관한 정보는 예측부(인터 예측부(260) 및 인트라 예측부(265))로 제공되고, 엔트로피 디코딩부(210)에서 엔트로피 디코딩이 수행된 레지듀얼 값, 즉 양자화된 변환 계수들 및 관련 파라미터 정보는 역양자화부(220)로 입력될 수 있다. 또한, 엔트로피 디코딩부(210)에서 디코딩된 정보 중 필터링에 관한 정보는 필터링부(240)로 제공될 수 있다. 한편, 인코딩 장치(100)로부터 출력된 신호를 수신하는 수신부(미도시)가 디코딩 장치(200)의 내/외부 엘레먼트로서 더 구성될 수 있고, 또는 수신부는 엔트로피 디코딩부(210)의 구성요소일 수도 있다. 한편, 본 명세서에 따른 디코딩 장치(200)는 비디오/영상/픽처 디코딩 장치로 지칭될 수 있다. 디코딩 장치(200)는 정보 디코더(비디오/영상/픽처 정보 디코더) 및 샘플 디코더(비디오/영상/픽처 샘플 디코더)로 구분될 수도 있다. 정보 디코더는 엔트로피 디코딩부(210)를 포함할 수 있고, 샘플 디코더는 역양자화부(220), 역변환부(230), 가산부(235), 필터링부(240), 메모리(250), 인터 예측부(260), 및 인트라 예측부(265) 중 적어도 하나를 포함할 수 있다.
역양자화부(220)는 양자화된 변환 계수들의 역양자화를 통해 변환 계수들을 출력할 수 있다. 역양자화부(220)는 양자화된 변환 계수들을 2차원의 블록 형태로 재정렬할 수 있다. 이 경우 인코딩 장치(100)에서 수행된 계수 스캔 순서에 기반하여 재정렬이 수행될 수 있다. 역양자화부(220)는 양자화 파라미터(예: 양자화 스텝 사이즈 정보)를 이용하여 양자화된 변환 계수들에 대한 역양자화를 수행하고, 변환 계수들(transform coefficient)을 획득할 수 있다.
역변환부(230)는 변환 계수들을 역변환하여 레지듀얼 신호(레지듀얼 블록, 레지듀얼 샘플 어레이)를 획득한다.
예측부는 현재 블록에 대한 예측을 수행하고, 현재 블록에 대한 예측 샘플들을 포함하는 예측된 블록(predicted block)을 생성할 수 있다. 예측부는 엔트로피 디코딩부(210)로부터 출력된 예측에 관한 정보에 기반하여 현재 블록에 인트라 예측이 적용되는지 또는 인터 예측이 적용되는지 결정할 수 있고, 구체적인 인트라/인터 예측 모드를 결정할 수 있다.
예측부는 후술되는 다양한 예측 방법을 기반으로 예측 신호(예측 샘플)를 생성할 수 있다. 예를 들어, 예측부는 하나의 블록에 대한 예측을 위하여 인트라 예측 또는 인터 예측을 적용할 수 있을 뿐만 아니라, 인트라 예측과 인터 예측을 함께(동시에) 적용할 수 있다. 이는 CIIP(combined inter and intra prediction)로 지칭될 수 있다. 또한, 예측부는 블록에 대한 예측을 위하여 IBC(intra block copy)를 수행할 수도 있다. IBC는, 예를 들어, SCC(screen content coding)와 같이 컨텐츠(예: 게임) 영상/동영상 코딩을 위하여 사용될 수 있다. 또한, IBC는 CPR(current picture referencing)로 지칭될 수도 있다. IBC는 기본적으로 현재 픽처 내에서 예측을 수행하나 현재 픽처 내에서 참조 블록을 도출하는 점에서 인터 예측과 유사하게 수행될 수 있다. 즉, IBC는 본 문서에서 설명되는 인터 예측 기법들 중 적어도 하나를 이용할 수 있다.
인트라 예측부(265)는 현재 픽처 내의 샘플들을 참조하여 현재 블록을 예측할 수 있다. 참조되는 샘플들은 예측 모드에 따라 현재 블록의 주변(neighbor)에 위치할 수 있고, 또는 이격되어 위치할 수도 있다. 인트라 예측에서 예측 모드들은 복수의 비방향성 모드와 복수의 방향성 모드를 포함할 수 있다. 인트라 예측부(265)는 주변 블록에 적용된 예측 모드를 이용하여, 현재 블록에 적용되는 예측 모드를 결정할 수도 있다.
인터 예측부(260)는 참조 픽처 상에서 움직임 벡터에 의해 특정되는 참조 블록(참조 샘플 어레이)을 기반으로, 현재 블록에 대한 예측된 블록을 유도할 수 있다. 이때, 인터 예측 모드에서 전송되는 움직임 정보의 양을 줄이기 위해 주변 블록과 현재 블록 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 블록, 서브블록, 또는 샘플 단위로 예측할 수 있다. 움직임 정보는 움직임 벡터 및 참조 픽처 인덱스를 포함할 수 있다. 움직임 정보는 인터 예측 방향(L0 예측, L1 예측, Bi 예측) 정보를 더 포함할 수 있다. 인터 예측의 경우, 주변 블록은 현재 픽처 내에 존재하는 공간적 주변 블록(spatial neighboring block)과 참조 픽처에 존재하는 시간적 주변 블록(temporal neighboring block)을 포함할 수 있다. 예를 들어, 인터 예측부(260)는 주변 블록들을 기반으로 움직임 정보 후보 리스트를 구성하고, 수신된 후보 선택 정보를 기반으로 현재 블록의 움직임 벡터 및/또는 참조 픽처 인덱스를 도출할 수 있다. 다양한 예측 모드를 기반으로 인터 예측이 수행될 수 있으며, 예측에 관한 정보는 현재 블록에 대한 인터 예측의 모드를 지시하는 정보를 포함할 수 있다.
가산부(235)는 획득된 레지듀얼 신호를 예측부(인터 예측부(260) 및/또는 인트라 예측부(265) 포함)로부터 출력된 예측 신호(예측된 블록, 예측 샘플 어레이)에 더함으로써 복원 신호(복원 픽처, 복원 블록, 복원 샘플 어레이)를 생성할 수 있다. 스킵 모드가 적용된 경우와 같이 처리 대상 블록에 대한 레지듀얼이 없는 경우, 예측된 블록이 복원 블록으로 사용될 수 있다.
가산부(235)는 복원부 또는 복원 블록 생성부로 지칭될 수 있다. 생성된 복원 신호는 현재 픽처 내 다음 처리 대상 블록의 인트라 예측을 위하여 사용될 수 있고, 후술하는 바와 같이 필터링을 거쳐서 다음 픽처의 인터 예측을 위하여 사용될 수도 있다.
필터링부(240)는 복원 신호에 필터링을 적용함으로써 주관적/객관적 화질을 향상시킬 수 있다. 예를 들어, 필터링부(240)는 복원 픽처에 다양한 필터링 방법을 적용하여 수정된(modified) 복원 픽처를 생성할 수 있고, 수정된 복원 픽처를 메모리(250)의 DPB(255)에 전송할 수 있다. 다양한 필터링 방법은, 예를 들어, 디블록킹 필터링, 샘플 적응적 오프셋(sample adaptive offset), 적응적 루프 필터(adaptive loop filter), 양방향 필터(bilateral filter)를 포함할 수 있다.
메모리(250)의 DPB(255)에 전달된 수정된 복원 픽처는 인터 예측부(260)에 의해 참조 픽처로 사용될 수 있다. 메모리(250)는 현재 픽처 내 움직임 정보가 도출된(또는 디코딩된) 블록의 움직임 정보 및/또는 이미 복원된 픽처 내 블록들의 움직임 정보를 저장할 수 있다. 저장된 움직임 정보는 공간적 주변 블록의 움직임 정보 또는 시간적 주변 블록의 움직임 정보로 활용하기 위하여 인터 예측부(260)에 전달할 수 있다. 메모리(250)는 현재 픽처 내 복원된 블록들의 복원 샘플들을 저장할 수 있고, 인트라 예측부(265)에 전달할 수 있다.
본 명세서에서, 인코딩 장치(100)의 필터링부(160), 인터 예측부(180) 및 인트라 예측부(185)에서 설명된 실시예들은 각각 디코딩 장치의 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)에도 동일 또는 대응되도록 적용될 수 있다.
도 4는 본 명세서의 실시예에 따른 컨텐츠 스트리밍 시스템의 예를 도시한다. 본 명세서의 실시예가 적용되는 컨텐츠 스트리밍 시스템은 크게 인코딩 서버(encoding server)(410), 스트리밍 서버(streaming server)(420), 웹 서버(web server)(430), 미디어 저장소(media storage)(440), 사용자 장치(user equipment)(450), 및 멀티미디어 입력 장치(multimedia input device)(460)를 포함할 수 있다.
인코딩 서버(410)는 스마트폰, 카메라, 캠코더와 같은 멀티미디어 입력 장치(460)로부터 입력된 컨텐츠를 디지털 데이터로 압축하여 비트스트림을 생성하고, 생성된 비트스트림을 스트리밍 서버(420)로 전송한다. 다른 예로, 스마트폰, 카메라, 캠코더와 같은 멀티미디어 입력 장치(460)가 비트스트림을 직접 생성하는 경우, 인코딩 서버(410)는 생략될 수 있다.
비트스트림은 본 명세서의 실시예가 적용되는 인코딩 방법 또는 비트스트림 생성 방법에 의해 생성될 수 있고, 스트리밍 서버(420)는 비트스트림을 전송 또는 수신하는 과정에서 일시적으로 비트스트림을 저장할 수 있다.
스트리밍 서버(420)는 웹 서버(430)를 통한 사용자 요청에 기초하여 멀티미디어 데이터를 사용자 장치(450)에 전송하고, 웹 서버(430)는 사용자에게 어떠한 서비스가 있는지를 알려주는 매개체 역할을 한다. 사용자가 웹 서버(430)에 원하는 서비스를 요청하면, 웹 서버(430)는 요청된 서비스에 대한 정보를 스트리밍 서버(420)에 전달하고, 스트리밍 서버(420)는 사용자에게 멀티미디어 데이터를 전송한다. 이때, 컨텐츠 스트리밍 시스템은 별도의 제어 서버를 포함할 수 있고, 이 경우 제어 서버는 컨텐츠 스트리밍 시스템 내 각 장치 간 명령/응답을 제어하는 역할을 한다.
스트리밍 서버(420)는 미디어 저장소(440) 및/또는 인코딩 서버(410)로부터 컨텐츠를 수신할 수 있다. 예를 들어, 인코딩 서버(410)로부터 컨텐츠를 수신하는 경우, 스트리밍 서버(420)는 컨텐츠를 실시간으로 수신할 수 있다. 이 경우, 원활한 스트리밍 서비스를 제공하기 위하여 스트리밍 서버(420)는 비트스트림을 일정 시간동안 저장할 수 있다.
사용자 장치(450)는, 예를 들어, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(personal digital assistants), PMP(portable multimedia player), 네비게이션, 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)), 디지털 TV, 데스크탑 컴퓨터, 디지털 사이니지를 포함할 수 있다.
컨텐츠 스트리밍 시스템 내 각 서버들은 분산 서버로 운영될 수 있으며, 이 경우 각 서버에서 수신하는 데이터는 분산 처리될 수 있다.
도 5는 본 명세서의 실시예에 따른 비디오 신호 처리 장치의 예를 도시한다. 도 5의 비디오 신호 처리 장치는 도 1의 인코딩 장치(100) 또는 도 2의 디코딩 장치(200)에 해당할 수 있다.
비디오 신호를 처리하는 비디오 신호 처리 장치(500)는, 비디오 신호를 저장하는 메모리(520)와, 메모리(520)와 결합되면서 비디오 신호를 처리하는 프로세서(510)를 포함한다. 본 명세서의 실시예에 따른 프로세서(510)는 비디오 신호의 처리를 위한 적어도 하나의 프로세싱 회로로 구성될 수 있으며, 비디오 신호의 인코딩/디코딩을 위한 명령어들을 실행함으로써 비디오 신호를 처리할 수 있다. 즉, 프로세서(510)는 이하 설명되는 인코딩/디코딩 방법들을 실행함으로써 원본 비디오 데이터를 인코딩하거나 인코딩된 비디오 신호를 디코딩할 수 있다. 프로세서(510)는, 도 2 또는 도 3의 각 모듈들에 대응하는 하나 또는 그 이상의 프로세서들로 구성될 수 있다. 메모리(520)는 도 2의 메모리(170) 또는 도 3의 메모리(250)에 해당할 수 있다.
분할 구조(Partitioning structure)
본 명세서에 따른 비디오/영상 코딩 방법은 후술되는 분할 구조에 기반하여 수행될 수 있다. 구체적으로 후술되는 예측, 레지듀얼 처리(예: (역)변환, (역)양자화), 신택스 요소 코딩, 필터링과 같은 절차는 분할 구조에 기반하여 도출된 CTU(coding tree unit), CU(및/또는 TU, PU)에 기반하여 수행될 수 있다. 블록 분할 절차는 상술한 인코딩 장치(100)의 영상 분할부(110)에서 수행될 수 있으며, 분할 관련 정보는 엔트로피 인코딩부(190)에서 (인코딩) 처리되어 비트스트림 형태로 디코딩 장치(200)로 전달될 수 있다. 디코딩 장치(200)의 엔트로피 디코딩부(210)는 비트스트림으로부터 획득된 분할 관련 정보를 기반으로 현재 블록의 블록 분할 구조를 도출하고, 이를 기반으로 영상 디코딩을 위한 일련의 절차(예: 예측, 레지듀얼 처리, 블록/픽처 복원, 인루프 필터링)를 수행할 수 있다.
본 명세서의 실시예에 따른 비디오/이미지의 코딩에 있어서, 영상 처리 단위는 계층적 구조를 가질 수 있다. 하나의 픽처는 하나 이상의 타일 또는 타일 그룹으로 구분될 수 있다. 하나의 타일 그룹은 하나 이상의 타일을 포함할 수 있다. 하나의 타일은 하나 이상의 CTU를 포함할 수 있다. CTU는 하나 이상의 CU로 분할될 수 있다. 타일은 픽처 내에서 특정 타일 행 및 특정 타일 열 내의 CTU들을 포함하는 사각 영역이다(a rectangular region of CTUs within a particular tile column and a particular tile row in a picture). 타일 그룹은 픽처 내의 타일 래스터 스캔에 따른 정수개의 타일들을 포함할 수 있다. 타일 그룹 헤더는 해당 타일 그룹에 적용될 수 있는 정보/파라미터를 전달할 수 있다. 인코딩 장치(100)/디코딩 장치(200)가 멀티 코어 프로세서를 갖는 경우, 타일 또는 타일 그룹에 대한 인코딩/디코딩 절차는 병렬 처리될 수 있다. 여기서 타일 그룹은 intra (I) tile group, predictive (P) tile group, 및 bi-predictive (B) tile group을 포함하는 타일 그룹들 중 하나의 타입을 가질 수 있다. I 타일 그룹 내의 블록들에 대한 예측을 위하여 인터 예측이 사용되지 않고 인트라 예측만이 사용될 수 있다. 물론 I 타일 그룹에 대해서도 예측 없이 코딩된 원본 샘플 값이 시그널링될 수 있다. P 타일 그룹 내의 블록들에 대하여 인트라 예측 또는 인터 예측이 사용될 수 있으며, 인터 예측이 사용되는 경우 단방향(uni) 예측만이 사용될 수 있다. 한편, B 타일 그룹 내의 블록들에 대하여 인트라 예측 또는 인터 예측이 사용될 수 있으며, 인터 예측이 사용되는 경우 단방향 예측뿐만 아니라 쌍(bi) 예측도 사용될 수 있다.
도 6은 본 명세서의 실시예에 따른 픽처의 분할 구조의 예를 도시한다. 도 6에서, 216개(18 by 12)의 휘도 CTU들을 갖는 픽처가 12개의 타일들과 3개의 타일 그룹들로 분할된다.
인코더는 비디오 영상의 특성(예를 들어, 해상도)에 따라 또는 코딩의 효율 또는 병렬 처리를 고려하여 타일/타일 그룹, 최대 및 최소 코딩 유닛 크기를 결정하고, 이에 대한 정보 또는 이를 유도하기 위한 정보를 비트스트림에 포함시킬 수 있다.
디코더는 현재 픽처의 타일/타일 그룹, 타일 내 CTU가 다수의 코딩 유닛들로 분할되었는지 여부를 나타내는 정보를 획득할 수 있다. 이러한 정보가 디코더에 의해 항상 획득(디코딩)되는 것이 아니라 특정 조건 하에서만 획득(디코딩)되도록하면 코딩 효율이 증대될 수 있다.
타일 그룹 헤더(타일 그룹 헤더 신택스)는 타일 그룹에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. APS(APS 신택스) 또는 PPS(PPS 신택스)는 하나 이상의 픽처에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. SPS(SPS 신택스)는 하나 이상의 시퀀스에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. VPS(VPS 신택스)는 비디오 전반에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. 본 명세서의 상위 레벨 신택스는 APS 신택스, PPS 신택스, SPS 신택스, VPS 신택스 중 적어도 하나를 포함할 수 있다.
또한, 예를 들어 타일/타일 그룹의 분할 및 구성에 관한 정보는 상위 레벨 신택스를 통하여 인코더에서 구성된 후 비트스트림 형태로 디코더로 전송될 수 있다.
도 7a 내지 도 7d는 본 명세서의 실시예에 따른 블록 분할 구조의 예를 도시한다. 도 7a는 QT(quadtree, QT), 도 7b는 BT(binary tree, BT), 도 7c는 TT(ternary tree, TT) 도 7d는 AT(asymmetric Tree, AT)에 의한 블록 분할 구조들의 예를 도시한다.
비디오 코딩 시스템에서, 하나의 블록은 QT 분할 방식에 기반으로 분할될 수 있다. 또한, QT 분할 방식에 의해서 분할된 하나의 서브 블록(subblock)은 QT 분할 방식에 따라 재귀적으로 더 분할될 수 있다. 더 이상 QT 분할 방식에 의해 분할되지 않는 리프 블록(leaf block)은 BT, TT, 또는 AT 중 적어도 하나의 방식에 의해서 분할될 수 있다. BT는 수평 BT (2NxN, 2NxN)과 수직 BT (Nx2N, Nx2N)와 같은 두 가지 형태의 분할을 가질 수 있다. TT는 수평 TT (2Nx1/2N, 2NxN, 2Nx1/2N)와 수직 TT (1/2Nx2N, Nx2N, 1/2Nx2N)와 같은 두 가지 형태의 분할을 가질 수 있다. AT는 수평-상향(horizontal-up) AT (2Nx1/2N, 2Nx3/2N), 수평-하향(horizontal-down) AT (2Nx3/2N, 2Nx1/2N), 수직-좌측(vertical-left) AT (1/2Nx2N, 3/2Nx2N), 수직-우측(vertical-right) AT (3/2Nx2N, 1/2Nx2N)의 네 가지 형태의 분할을 가질 수 있다. 각각의 BT, TT, AT는 BT, TT, AT를 사용하여 재귀적으로 더 분할될 수 있다.
도 7a는 QT 분할의 예를 도시한다. 블록 A는 QT에 의해서 4개의 서브 블록 (A0, A1, A2, A3)으로 분할될 수 있다. 서브 블록 A1은 다시 QT에 의해서 4개의 서브 블록 (B0, B1, B2, B3)로 분할될 수 있다.
도 7b는 BT 분할의 예를 도시한다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 수직 BT (C0, C1) 또는 수평 BT (D0, D1)에 의해 분할될 수 있다. 블록 C0와 같이 각각의 서브 블록은 수평 BT (E0, E1) 또는 수직 BT (F0, F1)의 형태와 같이 재귀적으로 더 분할될 수 있다.
도 7c는 TT 분할의 예를 도시한다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 수직 TT (C0, C1, C2) 또는 수평 TT (D0, D1, D2)으로 분할될 수 있다. 블록 C1와 같이 각각의 서브 블록은 수평 TT (E0, E1, E2) 또는 수직 TT (F0, F1, F2)의 형태와 같이 재귀적으로 더 분할될 수 있다.
도 7d는 AT 분할의 예를 도시한다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 수직 AT (C0, C1) 또는 수평 AT (D0, D1)로 분할 될 수 있다. 블록 C1와 같이 각각의 서브 블록은 수평 AT (E0, E1) 또는 수직 TT (F0, F1)의 형태와 같이 재귀적으로 더 분할 될 수 있다.
한편, BT, TT, AT 분할은 하나의 블록에 함께 적용될 수 있다. 예를 들어, BT에 의해 분할된 서브 블록은 TT 또는 AT에 의해 분할될 수 있다. 또한, TT에 의해 분할된 서브 블록은 BT 또는 AT에 의해 분할될 수 있다. AT에 의해 분할된 서브 블록은 BT 또는 TT에 의해 분할될 수 있다. 예를 들어, 수평 BT 분할 이후, 각각의 서브 블록이 수직 BT에 의해 분할될 수 있다. 또한, 수직 BT 분할 이후, 각각의 서브 블록이 수평 BT에 의해 분할될 수도 있다. 이 경우 분할 순서는 다르지만 최종적으로 분할되는 모양은 동일하다.
또한, 블록이 분할되면 블록을 탐색하는 순서가 다양하게 정의될 수 있다. 일반적으로, 좌측에서 우측으로, 상단에서 하단으로 탐색이 수행되며, 블록을 탐색한다는 것은 각 분할된 서브 블록의 추가적인 블록 분할 여부를 결정하는 순서를 의미하거나, 블록이 더 이상 분할되지 않을 경우 각 서브 블록의 부호화 순서를 의미하거나, 또는 서브 블록에서 다른 이웃 블록의 정보를 참조할 때의 탐색 순서를 의미할 수 있다.
또한, 픽처 내 파이프라인 처리를 위하여 VPDUs(virtual pipeline data units)가 정의될 수 있다. VPDUs는 하나의 픽처 내에서 비-중첩 유닛들(non-overlapping units)로 정의될 수 있다. 하드웨어 디코더에서, 다중 파이프라인 스테이지들에 의하여 연속적인(successive) VPDUs가 동시에 처리될 수 있다. VPDU 사이즈는 대부분의 파이프라인 스테이지들(most pipeline stages)에서 버퍼 사이즈에 대략적으로 비례한다(roughly proportional). 따라서, VDPU 사이즈를 작게 유지하는 것은 하드웨어 관점에서 버퍼 사이즈를 고려할 때 중요하다. 대부분의 하드웨어 디코더에서, VPDU 사이즈는 최대 TB 사이즈와 같도록 설정될 수 있다. 예를 들어, VPDU 사이즈는 64x64(64x64 휘도 샘플들) 사이즈일 수 있다. 다만 이는 예시이며 상술한 TT 및/또는 BT 파티션을 고려하여 VPDU 사이즈는 변경(증가 또는 감소)될 수 있다. 본 문서에서, MxN 블록은 M개의 열과 N개의 행으로 이루어진 샘플들을 포함하는 블록을 나타낼 수 있다.
도 8은 본 명세서의 실시예에 따른 TT(ternary tree) 및 BT(binary tree) 분할이 제한되는 경우의 예를 도시한다. VPDU 사이즈를 64x64 휘도 샘플들 사이즈로 유지하기 위하여, 도 8에 도시된 것과 같이 아래와 같은 제한들 중 적어도 하나가 적용될 수 있다.
- 너비(width) 또는 높이(height), 또는 너비와 높이 모두가 128인 CU에 대한 TT 분할은 허용되지 않는다(TT split is not allowed for a CU with either width or height, or both width and height equal to 128).
- 128xN(N <= 64)(즉, 너비가 128이고 높이가 128보다 작은) CU에 대한 수평 BT는 허용되지 않는다(For a 128xN CU with N <= 64 (i.e. width equal to 128 and height smaller than 128), horizontal BT is not allowed).
- Nx128(N <= 64)(즉, 높이가 128이고 너비가 128보다 작은) CU에 대한 수직 BT는 허용되지 않는다(For an Nx128 CU with N <= 64 (i.e. height equal to 128 and width smaller than 128), vertical BT is not allowed).
변환/역변환
상술한 바와 같이 인코딩 장치(100)는 인트라/인터/IBC 예측을 통하여 예측된 블록(예측 샘플들)을 기반으로 레지듀얼 블록(레지듀얼 샘플들)을 도출할 수 있고, 도출된 레지듀얼 샘플들에 변환 및 양자화를 적용하여 양자화된 변환 계수들을 도출할 수 있다. 양자화된 변환 계수들에 대한 정보(레지듀얼 정보)는 레지듀얼 코딩 신택스에 포함되어 인코딩된 후 비트스트림 형태로 출력될 수 있다. 디코딩 장치(200)는 비트스트림으로부터 양자화된 변환 계수들에 대한 정보(레지듀얼 정보)를 획득하고, 레지듀얼 정보를 디코딩하여 양자화된 변환 계수들을 도출할 수 있다. 디코딩 장치(200)는 양자화된 변환 계수들을 기반으로 역양자화/역변환을 거쳐서 레지듀얼 샘플들을 도출할 수 있다. 양자화/역양자화 및/또는 변환/역변환 중 적어도 하나는 생략될 수 있다. 변환/역변환이 생략되는 경우, 변환 계수는 계수 또는 레지듀얼 계수 라고 불릴 수도 있고, 또는 표현의 통일성을 위하여 변환 계수라고 여전히 불릴 수도 있다. 변환/역변환의 생략 여부는 변환 스킵 플래그(transform_skip_flag)를 기반으로 시그널링될 수 있다.
변환/역변환은 변환 커널(들)을 기반으로 수행될 수 있다. 예를 들어 본 문서에 따르면 MTS(multiple transform selection) 스킴(scheme)이 적용될 수 있다. 이 경우 다수의 변환 커널 세트들 중 일부가 선택되어 현재 블록에 적용될 수 있다. 변환 커널은 변환 매트릭스, 변환 타입 등 다양한 용어로 불릴 수 있다. 예를 들어, 변환 커널 세트는 수직 방향 변환 커널(수직 변환 커널) 및 수평 방향 변환 커널(수평 변환 커널)의 조합을 나타낼 수 있다.
예를 들어, MTS 인덱스 정보(or tu_mts_idx 신택스 요소)가 변환 커널 세트들 중 하나를 지시하기 위하여 인코딩 장치(100)에서 생성/인코딩되어 디코딩 장치(200)로 시그널링될 수 있다. 예를 들어 MTS 인덱스 정보의 값에 따른 변환 커널 세트는 아래의 표 1과 같이 도출될 수 있다. 표 1은 MTS 인덱스(tu_mts_idx)에 따른 수평 변환 타입(trTypeHor)과 수직 변환 타입(trTypeVer)을 나타낸다.
Figure PCTKR2020003539-appb-T000001
표 1에서, trTypeHor와 trTypeVer에 입력되는 0, 1, 2는 변환 커널을 지시하는 인덱스로서, 0은 DCT-2(Discrete Cosine Transform type 2), 1은 DST-7(Discrete Sine Transform type 7), 2는 DCT-8(Discrete Cosine Transform type 8)에 각각 대응할 수 있다.
또한, SBT(sub-block transform)가 적용되는 경우, 변환 커널 세트는, 예를 들어, cu_sbt_horizontal_flag 및 cu_sbt_pos_flag를 기반으로 결정될 수도 있다. cu_sbt_horizontal_flag가 1이면 현재 코딩 유닛은 수평으로 2개 변환 유닛들로 분할된다. cu_sbt_horizontal_flag가 0이면 현재 코딩 유닛은 수직으로 2개의 변환 유닛들로 분할된다. cu_sbt_pos_flag가 1이면 현재 코딩 유닛에서 첫번째 변환 유닛의 tu_cbf_luma, tu_cbf_cb, 및 tu_cbf_cr가 비트스트림에 존재하지 않는다. cu_sbt_pos_flag가 0이면 현재 코딩 유닛에서의 두 번째 변환 유닛의 tu_cbf_luma, tu_cbf_cb and tu_cbf_cr가 비트스트림에 존재하지 않는다. 이하의 표 2는 cu_sbt_horizontal_flag 및 cu_sbt_pos_flag에 따른 trTypeHor 및 trTypeVer를 나타낸다. SBT는 현재 블록을 수평 또는 수직 방향으로 1/2 또는 1/4 사이즈를 갖는 서브블록들로 분할한 이후 하나의 서브블록에 대하여 변환을 적용하는 방법을 의미한다.
Figure PCTKR2020003539-appb-T000002
또한, 변환 커널 세트는, 아래의 표 3과 같이 현재 블록에 대한 인트라 예측 모드를 기반으로 결정될 수도 있다.
Figure PCTKR2020003539-appb-T000003
표 1 내지 표 3에서, trTypeHor는 수평 방향 변환 커널을 나타낼 수 있고, trTypeVer는 수직 방향 변환 커널을 나타낼 수 있다. 여기서 trTypeHor/trTypeVer 값 0은 DCT-2를 나타낼 수 있고, trTypeHor/trTypeVer 값 1은 DST7을 나타낼 수 있고, trTypeHor/trTypeVer 값 2는 DCT-8을 나타낼 수 있다. 다만 이는 예시로서, 약속에 의하여 다른 값이 다른 DCT/DST에 매핑될 수도 있다.
다음 표 4는 상술한 DCT-2, DCT-8, DST-7에 대한 기저 함수들(basis functions)을 예시적으로 나타낸다.
Figure PCTKR2020003539-appb-T000004
뿐만 아니라, 인코더를 기준으로 일차 변환(primary transform)이 적용된 블록에 대하여 이차 변환(secondary transform)이 선택적으로 적용될 수 있다. 예를 들어, 일차 변환으로서 DCT-2가 적용된 블록에 대하여 이차 변환이 적용되고, 일차 변환으로서 DCT-7 또는 DCT-8이 적용된 블록에 대하여는 이차 변환이 생략될 수 있다. 수평 방향 및 수직 방향으로 분리하여 적용되는 일차 변환과 달리, 이차 변환은 비분리 변환(non-separable transform)일 수 있다. 이차 변환은 복잡도를 고려하여 블록내 저주파수 영역(좌상측 특정 영역)에만 적용될 수 있다. 이차 변환을 위한 변환 커널은, 인트라 예측 모드에 기반하여 선택된 이차 변환 커널 집합 내에서 이차 변환 인덱스에 의해 지시될 수 있다.
변환/역변환은 CU 또는 TU 단위로 수행될 수 있다. 즉, 변환/역변환은 CU 내의 레지듀얼 샘플들 또는 TU 내의 레지듀얼 샘플들에 대하여 적용될 수 있다. CU 사이즈와 TU 사이즈가 같을 수 있고, 또는 CU 영역 내에 복수의 TU가 존재할 수도 있다. 한편, CU 사이즈라 함은 일반적으로 휘도 성분(샘플) CB 사이즈를 나타낼 수 있다. TU 사이즈라 함은 일반적으로 휘도 성분(샘플) TB 사이즈를 나타낼 수 있다. 색차 성분(샘플) CB 또는 TB 사이즈는 컬러 포맷(크로마 포맷, 예: 4:4:4, 4:2:2, 4:2:0 등)에 따른 성분비에 따라 휘도 성분(샘플) CB 또는 TB 사이즈를 기반으로 도출될 수 있다.
TU 사이즈는 maxTbSize를 기반으로 도출될 수 있다. 예를 들어, CU 사이즈가 maxTbSize보다 큰 경우, CU로부터 maxTbSize의 복수의 TU(TB)들이 도출되고, TU(TB) 단위로 변환/역변환이 수행될 수 있다. 예를 들어, CU의 한 변의 길이(너비 또는 높이)가 maxTbSize 보다 큰 경우, 해당 방향에 대해 복수의 TU(TB)들이 도출될 수 있다(즉, 해당 방향에서의 길이를 L이라 하면 L/maxTbSize 개의 TU(TB)들이 도출될 수 있다). CU의 모든 방향에 대해(즉, 수직 및 수평 방향에 대하여) maxTbSize 값과의 비교를 통하여 동일한 방식으로 분할될 수 있으며(즉, 수평 방향 길이가 M이고 수직 방향 길이가 L이라고 하면 총 (M / maxTbSize) x (N / maxTbSize) 개의 TU(TB)들로 분할될 수 있으며), TU(TB) 단위로 변환/역변환이 수행될 수 있다. maxTbSize는 ISP와 같이 다양한 인트라 예측 타입의 적용 여부 판단 등에 고려될 수 있다. maxTbSize에 대한 정보는 미리 결정될 수도 있고, 또는 인코딩 장치에서 생성 및 인코딩되어 디코딩 장치로 시그널링될 수 있다.
도 9는 본 명세서의 실시예에 따른 엔트로피 인코딩을 위한 블록도이다. 도 9의 블록도는 도 2의 엔트로피 인코딩부(190)의 일 예에 해당한다.
도 2에서 설명된 바와 같이 비디오/영상 정보의 일부 또는 전부는 엔트로피 인코딩부(190)에 의하여 엔트로피 인코딩될 수 있고, 도 3에서 설명된 것과 같이 비디오/영상 정보의 일부 또는 전부는 엔트로피 디코딩부(210)에 의하여 엔트로피 디코딩될 수 있다. 이 경우 상기 비디오/영상 정보는 신택스 요소 단위로 인코딩/디코딩될 수 있다. 본 문서에서 정보가 인코딩/디코딩된다 함은 본 단락에서 설명되는 방법에 의하여 인코딩/디코딩되는 것을 포함할 수 있다.
도 9는 하나의 신택스 요소를 인코딩하기 위한 CABAC의 블록도를 보여준다. CABAC의 인코딩 과정은 먼저 입력 신호가 이진 값이 아닌 신택스 요소인 경우에 이진화(binarization)를 통해 입력 신호를 이진 값으로 변환한다. 입력 신호가 이미 이진 값인 경우에는 이진화를 거치지 않고 바이패스 된다. 여기서, 이진 값을 구성하는 각각의 이진수 0 또는 1을 빈(bin)이라고 한다. 예를 들어, 이진화된 후의 이진 스트링(빈 스트링)이 110인 경우, 1, 1, 0 각각을 하나의 빈이라고 한다. 하나의 구문요소에 대한 상기 빈(들)은 해당 신택스 요소의 값을 나타낼 수 있다.
이진화된 빈들은 정규(regular) 코딩 엔진 또는 바이패스 코딩 엔진으로 입력된다. 정규 코딩 엔진은 해당 빈에 대해 확률 값을 반영하는 문맥(context) 모델을 할당하고, 할당된 문맥 모델에 기반하여 해당 빈을 코딩한다. 정규 코딩 엔진은 각 빈에 대한 코딩을 수행한 뒤에 해당 빈에 대한 확률 모델을 갱신할 수 있다. 이렇게 코딩되는 빈들을 문맥 코딩된 빈(context-coded bin)이라 한다. 바이패스 코딩 엔진은 입력된 빈에 대해 확률을 추정하는 절차와 코딩 후에 해당 빈에 적용했던 확률 모델을 갱신하는 절차를 생략한다. 문맥을 할당하는 대신 균일한 확률 분포(예: 50:50)를 적용해 입력되는 빈을 코딩함으로써 코딩 속도를 향상시킨다. 이렇게 코딩되는 빈들을 바이패스 빈(bypass bin)이라 한다. 문맥 모델은 문맥 코딩(정규 코딩)되는 빈 별로 할당 및 업데이트될 수 있으며, 문맥 모델은 ctxIdx 또는 ctxInc를 기반으로 지시될 수 있다. ctxIdx는 ctxInc를 기반으로 도출될 수 있다. 구체적으로 예를 들어, 정규 코딩되는 빈들 각각에 대한 문맥 모델을 가리키는 컨텍스트 인덱스(ctxIdx)는 context index increment (ctxInc) 및 context index offset (ctxIdxOffset)의 합으로 도출될 수 있다. 여기서 ctxInc는 각 빈 별로 다르게 도출될 수 있다. ctxIdxOffset는 ctxIdx의 최소값(the lowest value)으로 나타내어질 수 있다. ctxIdx의 최소값은 ctxIdx의 초기값(initValue)으로 지칭될 수 있다. ctxIdxOffset은 일반적으로 다른 신택스 요소에 대한 문맥 모델들과의 구분을 위하여 이용되는 값으로, 하나의 신택스 요소에 대한 문맥 모델은 ctxInc를 기반으로 구분/도출될 수 있다.
엔트로피 인코딩 절차에서 정규 코딩 엔진을 통해 인코딩을 수행할 것인지, 바이패스 코딩 엔진을 통해 인코딩을 수행할 것인지가 결정되고, 코딩 경로가 스위칭될 수 있다. 엔트로피 디코딩은 엔트로피 인코딩과 동일한 과정을 역순으로 수행한다.
도 10a 및 도 10b는 본 명세서의 실시예에 따른 엔트로피 인코딩 방법 및 관련 컴포넌트를 도시한다.
도 10b를 참조하면, 인코딩 장치(100)(엔트로피 인코딩부(190))는 영상/비디오 정보에 관한 엔트로피 코딩 절차를 수행한다. 영상/비디오 정보는 파티셔닝 관련 정보, 예측 관련 정보(예: 인터/인트라 예측 구분 정보, 인트라 예측 모드 정보, 인터 예측 모드 정보), 레지듀얼 정보, 인루프 필터링 관련 정보를 포함할 수 있고, 또는 그에 관한 다양한 신택스 요소들을 포함할 수 있다. 엔트로피 코딩은 신택스 요소 단위로 수행될 수 있다. 도 10a의 S1010 내지 S1020 단계는 상술한 도 2의 인코딩 장치(100)의 엔트로피 인코딩부(190)에 의하여 수행될 수 있다.
인코딩 장치(100)는 대상 신택스 요소에 대한 이진화를 수행한다(S1010). 여기서 이진화는 Truncated Rice binarization process, Fixed-length binarization process와 같은 다양한 이진화 방법에 기반할 수 있으며, 대상 신택스 요소에 대한 이진화 방법은 미리 정의될 수 있다. 이진화 절차는 엔트로피 인코딩부(190) 내의 이진화부(192)에 의하여 수행될 수 있다.
인코딩 장치(100)는 대상 신택스 요소에 대한 엔트로피 인코딩을 수행한다(S1020). 인코딩 장치(100)는 CABAC 또는 CAVLC과 같은 엔트로피 코딩 기법을 기반으로 대상 신택스 요소의 빈 스트링을 정규 코딩 기반(컨텍스트 기반) 또는 바이패스 코딩 기반 인코딩할 수 있으며, 그 출력은 비트스트림에 포함될 수 있다. 엔트로피 인코딩 절차는 엔트로피 인코딩부(190) 내의 엔트로피 인코딩 처리부(193)에 의하여 수행될 수 있다. 비트스트림은 (디지털) 저장매체 또는 네트워크를 통하여 디코딩 장치로 전달될 수 있음을 전술한 바와 같다.
도 11a 및 도 11b는 본 명세서의 실시예에 따른 엔트로피 디코딩 방법 및 관련 컴포넌트를 도시한다.
도 11b를 참조하면, 디코딩 장치(200)(엔트로피 디코딩부(210))는 인코딩된 영상/비디오 정보를 디코딩할 수 있다. 상기 영상/비디오 정보는 파티셔닝 관련 정보, 예측 관련 정보(예: 인터/인트라 예측 구분 정보, 인트라 예측 모드 정보, 인터 예측 모드 정보), 레지듀얼 정보, 인루프 필터링 관련 정보를 포함할 수 있고, 또는 그에 관한 다양한 신택스 요소들을 포함할 수 있다. 엔트로피 코딩은 신택스 요소 단위로 수행될 수 있다. S1110 단계 내지 S1120 단계는 상술한 도 3의 디코딩 장치(200)의 엔트로피 디코딩부(210)에 의하여 수행될 수 있다.
디코딩 장치(200)는 대상 신택스 요소에 대한 이진화를 수행한다(S1110). 이진화는 Truncated Rice binarization process, Fixed-length binarization process와 같은 다양한 이진화 방법에 기반할 수 있으며, 대상 신택스 요소에 대한 이진화 방법은 미리 정의될 수 있다. 디코딩 장치(200)는 이진화 절차를 통하여 대상 신택스 요소의 가용 값들에 대한 가용 빈 스트링들(빈 스트링 후보들)을 도출할 수 있다. 이진화 절차는 엔트로피 디코딩부(210) 내의 이진화부(212)에 의하여 수행될 수 있다.
디코딩 장치(200)는 대상 신택스 요소에 대한 엔트로피 디코딩을 수행한다(S1220). 디코딩 장치(200)는 비트스트림 내 입력 비트(들)로부터 대상 신택스 요소에 대한 각 빈들을 순차적으로 디코딩 및 파싱하면서, 도출된 빈 스트링을 해당 신택스 요소에 대한 가용 빈 스트링들과 비교한다. 만약 도출된 빈 스트링이 상기 가용 빈 스트링들 중 하나와 같으면, 해당 빈 스트링에 대응하는 값이 해당 신택스 요소의 값으로 도출된다. 만약, 그렇지 않으면, 비트스트림 내 다음 빈을 더 파싱 후 상술한 절차를 다시 수행한다. 이러한 과정을 통하여 비트스트림 내에 특정 정보(특정 신택스 요소)에 대한 시작 비트나 끝 비트를 사용하지 않고도 가변 길이 비트를 이용하여 해당 정보를 시그널링할 수 있다. 이를 통하여 낮은 값에 대하여는 상대적으로 더 적은 비트를 할당할 수 있으며, 전반적인 코딩 효율을 높일 수 있다.
디코딩 장치(200)는 CABAC 또는 CAVLC과 같은 엔트로피 코딩 기법을 기반으로 비트스트림으로부터 빈 스트링 내 각 빈들을 컨텍스트 기반하거나 또는 바이패스 기반하여 디코딩할 수 있다. 비트스트림은 상술한 바와 같이 영상/비디오 디코딩을 위한 다양한 정보를 포함할 수 있다. 비트스트림은 (디지털) 저장매체 또는 네트워크를 통하여 디코딩 장치로 전달될 수 있음을 전술한 바와 같다.
영상/비디오 코딩 절차
영상/비디오 코딩에 있어서, 영상/비디오를 구성하는 픽처는 일련의 디코딩 순서(decoding order)에 따라 인코딩/디코딩될 수 있다. 디코딩된 픽처의 출력 순서(output order)에 해당하는 픽처 순서(picture order)는 디코딩 순서와 다르게 설정될 수 있으며, 이를 기반으로 인터 예측시 순방향 예측뿐만 아니라 역방향 예측 또한 수행될 수 있다.
도 12는 본 명세서의 실시예에 따른 비디오 신호를 구성하는 픽처의 인코딩을 위한 흐름도의 예이다. 도 12에서 S1210 단계는 도 2에서 설명된 인코딩 장치(100)의 예측부(180, 185)에 의해 수행될 수 있고, S1220 단계는 레지듀얼 처리부(115, 120, 130)에 의해 수행될 수 있고, S1230 단계는 엔트로피 인코딩부(190)에 의해 수행될 수 있다. S1210 단계는 본 문서에서 설명되는 인터/인트라 예측 절차를 포함할 수 있고, S1220 단계는 본 문서에서 설명되는 레지듀얼 처리 절차를 포함할 수 있고, S1230 단계는 본 문서에서 설명되는 정보 인코딩 절차를 포함할 수 있다.
도 12를 참조하면, 픽처 인코딩 절차는 도 2에서 설명된 것과 같이 개략적으로 픽처 복원을 위한 정보(예: 예측 정보, 레지듀얼 정보, 파티셔닝 정보)를 인코딩함으로써 비트스트림 형태로 출력하는 절차뿐만 아니라, 현재 픽처에 대한 복원 픽처를 생성하는 절차 및 복원 픽처에 인루프 필터링을 적용하는 절차(optional)를 포함할 수 있다. 인코딩 장치(100)는 역양자화부(140) 및 역변환부(150)를 통해 양자화된 변환 계수로부터 (수정된) 레지듀얼 샘플들을 도출할 수 있으며, S1210 단계의 출력에 해당하는 예측 샘플들과 (수정된) 레지듀얼 샘플들에 기반하여 복원 픽처를 생성할 수 있다. 이렇게 생성된 복원 픽처는 상술한 디코딩 장치(200)에서 생성된 복원 픽처와 동일할 수 있다. 복원 픽처에 대한 인루프 필터링 절차를 통하여 수정된 복원 픽처가 생성될 수 있으며, 이는 메모리(170)(DPB(175))에 저장될 수 있으며, 디코딩 장치(200)에서의 경우와 마찬가지로, 이후 픽처의 인코딩시 인터 예측 절차에서 참조 픽처로 사용될 수 있다. 상술한 바와 같이 경우에 따라 인루프 필터링 절차의 일부 또는 전부는 생략될 수 있다. 인루프 필터링 절차가 수행되는 경우, (인루프) 필터링 관련 정보(파라미터)가 엔트로피 인코딩부(190)에서 인코딩되어 비트스트림 형태로 출력될 수 있고, 디코딩 장치(200)는 필터링 관련 정보를 기반으로 인코딩 장치(100)와 동일한 방법으로 인루프 필터링 절차를 수행할 수 있다.
이러한 인루프 필터링 절차를 통하여 블로킹 아티팩트(artifact) 및 링잉(ringing) 아티팩트와 같은 영상/동영상 코딩시 발생하는 노이즈가 감소될 수 있으며, 주관적/객관적 비주얼 퀄리티가 개선될 수 있다. 또한, 인코딩 장치(100)와 디코딩 장치(200)가 모두 인루프 필터링 절차를 수행함으로써, 인코딩 장치(100)와 디코딩 장치(200)는 동일한 예측 결과를 도출할 수 있으며, 그리하여 픽처 코딩의 신뢰성이 향상되고, 픽처 코딩을 위하여 전송되는 데이터 량이 감소될 수 있다.
도 13은 본 명세서의 실시예에 따른 비디오 신호를 구성하는 픽처의 디코딩을 위한 흐름도의 예이다. S1310 단계는 도 3의 디코딩 장치(200)에서의 엔트로피 디코딩부(210)에 의해 수행될 수 있고, S1320 단계는 예측부(260, 265)에 의해 수행될 수 있고, S1330 단계는 레지듀얼 처리부(220, 230)에 의해 수행될 수 있고, S1340 단계는 가산부(235)에 의해 수행될 수 있고, S1350 단계는 필터링부(240)에 의해 수행될 수 있다. S1310 단계는 본 문서에서 설명된 정보 디코딩 절차를 포함할 수 있고, S1320 단계는 본 문서에서 설명된 인터/인트라 예측 절차를 포함할 수 있고, S1330 단계는 본 문서에서 설명된 레지듀얼 처리 절차를 포함할 수 있고, S1340 단계는 본 문서에서 설명된 블록/픽처 복원 절차를 포함할 수 있고, S1350 단계는 본 문서에서 설명된 인루프 필터링 절차를 포함할 수 있다.
도 13을 참조하면, 픽처 디코딩 절차는 도 2에서 설명된 것과 같이 개략적으로 비트스트림으로부터 (디코딩을 통한) 영상/비디오 정보 획득 절차(S1310), 픽처 복원 절차(S1320 내지 S1340), 및 복원된 픽처에 대한 인루프 필터링 절차(S1350)를 포함할 수 있다. 픽처 복원 절차는 본 문서에서 설명된 인터/인트라 예측(S1320) 및 레지듀얼 처리(S1330, 양자화된 변호나 계수에 대한 역양자화, 역변환) 과정을 거쳐서 획득된 예측 샘플들 및 레지듀얼 샘플들을 기반으로 수행될 수 있다. 픽처 복원 절차를 통하여 생성된 복원 픽처에 대한 인루프 필터링 절차를 통하여 수정된(modified) 복원 픽처가 생성될 수 있으며, 수정된 복원 픽처가 디코딩된 픽처로서 출력될 수 있고, 또한 디코딩 장치(200)의 DPB(255)에 저장되어 이후 픽처의 디코딩시 인터 예측 철차에서 참조 픽처로 사용될 수 있다. 경우에 따라서 인루프 필터링 절차는 생략될 수 있으며, 이 경우 복원 픽처가 디코딩된 픽처로서 출력될 수 있고, 디코딩 장치(200)의 DPB(255)에 저장되어 이후 픽처의 디코딩시 인터 예측 철차에서 참조 픽처로 사용될 수 있다. 인루프 필터링 절차(S1350)는 상술한 바와 같이 디블로킹 필터링 절차, SAO(sample adaptive offset) 절차, ALF(adaptive loop filter) 절차, 및/또는 바이래터럴 필터(bi-lateral filter) 절차를 포함할 수 있고, 그 일부 또는 전부가 생략될 수 있다. 또한, 디블로킹 필터링 절차, SAO 절차, ALF 절차, 및 바이래터럴 필터 절차들 중 하나 또는 일부가 순차적으로 적용될 수 있고, 또는 모두가 순차적으로 적용될 수 있다. 예를 들어, 복원 픽처에 대하여 디블로킹 필터링 절차가 적용된 후 SAO 절차가 수행될 수 있다. 또한, 예를 들어, 복원 픽처에 대하여 디블로킹 필터링 절차가 적용된 후 ALF 절차가 수행될 수 있다. 이는 인코딩 장치(100)에서도 마찬가지로 수행될 수 있다.
상술한 바와 같이 디코딩 장치(200)뿐만 아니라 인코딩 장치(100)에서도 픽처 복원 절차가 수행될 수 있다. 각 블록 단위로 인트라 예측/인터 예측에 기반하여 복원 블록이 생성될 수 있으며, 복원 블록들을 포함하는 복원 픽처가 생성될 수 있다. 현재 픽처/슬라이스/타일 그룹이 I 픽처/슬라이스/타일 그룹인 경우 현재 픽처/슬라이스/타일 그룹에 포함되는 블록들은 인트라 예측만을 기반으로 복원될 수 있다. 이 경우 현재 픽처/슬라이스/타일 그룹 내 일부 블록들에 대하여 인터 예측이 적용되고, 나머지 일부 블록들에 대하여 인트라 예측이 적용될 수 있다. 픽처의 컬러 성분은 휘도 성분 및 색차 성분을 포함할 수 있으며, 본 문서에서 명시적으로 제한하지 않으면 본 문서에서 제안되는 방법들 및 실시예들은 휘도 성분 및 색차 성분에 적용될 수 있다.
코딩 계층 및 구조의 예
도 14는 본 명세서의 실시예에 따른 코딩된 영상에 대한 계층 구조의 예를 도시한다.
코딩된 영상은 영상의 디코딩 처리 및 그 자체를 다루는 VCL(video coding layer), 부호화된 정보를 전송하고 저장하는 하위 시스템, 그리고 VCL과 하위 시스템 사이에 존재하며 네트워크 적응 기능을 담당하는 NAL(network abstraction layer)로 구분될 수 있다.
VCL에서 압축된 영상 데이터(타일 그룹 데이터)를 포함하는 VCL 데이터가 생성되거나, 또는 PPS(picture parameter set), SPS(sequence parameter set), VPS(video parameter set)과 같은 정보를 포함하는 파라미터 세트 또는 영상의 디코딩 과정에서 부가적으로 필요한 SEI(supplemental enhancement information) 메시지가 생성될 수 있다.
NAL에서 VCL에서 생성된 RBSP(raw byte sequence payload)에 헤더 정보(NAL 유닛 데이터)가 부가되어 NAL 유닛이 생성될 수 있다. 이때, RBSP는 VCL에서 생성된 타일 그룹 데이터, 파라미터 세트, SEI 메시지를 지칭할 수 있다. NAL 유닛 헤더에서 해당 NAL 유닛에 포함되는 RBSP 데이터에 따라 특정되는 NAL 유닛 타입 정보를 포함할 수 있다.
도 14에서 도시된 것과 같이, NAL 유닛은 VCL에서 생성된 RBSP에 따라 VCL NAL 유닛과 Non-VCL NAL 유닛으로 구분될 수 있다. VCL NAL 유닛은 영상에 대한 정보(타일 그룹 데이터)를 포함하고 있는 NAL 유닛을 의미할 수 있고, Non-VCL NAL 유닛은 영상을 디코딩하기 위하여 필요한 정보(파라미터 세트 또는 SEI 메시지)를 포함하고 있는 NAL 유닛을 의미할 수 있다.
상술한 VCL NAL 유닛, Non-VCL NAL 유닛은 하위 시스템의 데이터 규격에 따라 헤더 정보가 부가된 상태로 네트워크를 통해 전송될 수 있다. 예를 들어, NAL 유닛은 H.266/VVC 파일 포맷, RTP(real-time transport protocol), TS(transport stream)과 같은 소정 규격의 데이터 형태로 변환된 이후 다양한 네트워크를 통해 전송될 수 있다.
상술한 바와 같이, NAL 유닛은 해당 NAL 유닛에 포함되는 RBSP 데이터 구조에 따라 NAL 유닛 타입이 특정될 수 있으며, 이러한 NAL 유닛 타입에 대한 정보는 NAL 유닛 헤더에 저장되어 시그널링될 수 있다.
예를 들어, NAL 유닛은 영상에 대한 정보(타일 그룹 데이터)를 포함하는지 여부에 따라 크게 VCL NAL 유닛 타입과 Non-VCL NAL 유닛 타입으로 분류될 수 있다. VCL NAL 유닛 타입은 VCL NAL 유닛이 포함하는 픽처의 성질 및 종류에 따라 분류될 수 있으며, Non-VCL NAL 유닛 타입은 파라미터 세트의 종류에 따라 분류될 수 있다.
아래는 Non-VCL NAL 유닛 타입이 포함하는 파라미터 세트의 종류에 따라 특정된 NAL 유닛 타입의 일 예이다.
- APS(Adaptation Parameter Set) NAL unit: APS를 포함하는 NAL 유닛에 대한 타입
- VPS(Video Parameter Set) NAL unit: VPS를 포함하는 NAL 유닛에 대한 타입
- SPS(Sequence Parameter Set) NAL unit: SPS를 포함하는 NAL 유닛에 대한 타입
- PPS(Picture Parameter Set) NAL unit: PPS를 포함하는 NAL 유닛에 대한 타입
상술한 NAL 유닛 타입들은 NAL 유닛 타입을 위한 신택스 정보를 가지며, 신택스 정보는 NAL 유닛 헤더에 저장되어 시그널링될 수 있다. 예를 들어, 신택스 정보는 nal_unit_type일 수 있으며, NAL 유닛 타입들은 nal_unit_type 값에 의해 특정될 수 있다.
타일 그룹 헤더(타일 그룹 헤더 신택스)는 타일 그룹에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. APS(APS 신택스) 또는 PPS(PPS 신택스)는 하나 이상의 픽처에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. SPS(SPS 신택스)는 하나 이상의 시퀀스에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. VPS(VPS 신택스)는 비디오 전반에 공통적으로 적용될 수 있는 정보/파라미터를 포함할 수 있다. 본 명세서에서 상위 레벨 신택스라 함은 APS 신택스, PPS 신택스, SPS 신택스, VPS 신택스 중 적어도 하나를 포함할 수 있다.
본 명세서에서 인코딩 장치(100)에서 디코딩 장치(200)로 인코딩되어 비트스트림 형태로 시그널링되는 영상/비디오 정보는 픽처 내 파티셔닝 관련 정보, 인트라/인터 예측 정보, 레지듀얼 정보, 인루프 필터링 정보를 포함할 뿐만 아니라, APS에 포함된 정보, PPS에 포함된 정보, SPS에 포함된 정보, 및/또는 VPS에 포함된 정보를 포함할 수 있다.
ISP (Intra Sub-Partition) 코딩 모드
종래의 인트라 예측은 현재 코딩하고자 하는 블록을 하나의 부호화 단위로 간주하여 분할 없이 부호화를 수행하였다. 그러나, ISP 방법은 현재 코딩하고자 하는 블록을 수평 방향 또는 수직 방향으로 분할하여 인트라 예측 부호화를 수행한다. 이 때, 분할된 블록 단위로 부호화/복호화를 수행함으로써 복원된 블록이 생성되고, 복원된 블록은 다음 분할된 블록의 참조 블록으로 사용된다. ISP에 따르면 블록 크기에 기반하여 아래의 표 8과 같이 블록이 분할된다.
Figure PCTKR2020003539-appb-T000005
도 15a 및 도 15b는 본 명세서의 실시예에 따른 ISP에 따른 블록 분할의 예를 도시한다.
ISP 방법은 부호화 복잡도를 감소시키기 위하여 각 분할 방법(수평 분할과 수직 분할)에 따라 MPM(most probable mode)을 생성하고 생성된 MPM 리스트 내 예측 모드 중 적합한 예측 모드를 RDO(rate-distortion optimization) 관점에서 비교함으로써 최적의 모드를 결정한다. 또한, 현재 블록으로부터 일정 샘플 거리 이상 이격된 라인에 위치한 샘플이 사용되는 MRL(multi-reference line) 인트라 예측이 사용되는 경우 ISP가 사용되지 않을 수 있다. 즉, 0번째 참조 라인이 사용되는 경우(즉, intra_luma_ref_idx가 0인 경우)에만 ISP 인트라 예측이 적용될 수 있다. 또한, ISP 방법이 사용되는 경우 PDPC(position dependent prediction combination)가 사용될 수 없다.
ISP 인트라 예측 방법은 먼저 ISP의 적용 여부를 나타내는 정보(예: intra_subparitions_mode_flag)를 블록 단위로 인코딩/디코딩되고, 만약 현재 블록에 ISP가 적용되면 다시 수평 분할인지 수직 분할인지에 대한 정보(intra_subpartitions_split_flag)가 인코딩/디코딩된다. 아래의 표 6은 ISP가 반영된 신택스 구조의 예를 나타낸다.
Figure PCTKR2020003539-appb-T000006
ISP 인트라 예측이 적용되는 경우, 현재 블록에 대한 인트라 예측 모드가 각 서브파티션들(서브블록들)에 동일하게 적용되며, 서브파티션 단위로 주변 참조 샘플들을 도출함으로써 인트라 예측 성능을 향상시킬 수 있다. 즉, ISP 인트라 예측이 적용되는 경우 서브파티션 단위로 레지듀얼 샘플 처리 절차가 수행된다. 다시 말해, 각 서브파티션에 대하여 인트라 예측 샘플들이 도출되고, 여기에 해당 서브파티션에 대한 레지듀얼 신호(레지듀얼 샘플들)가 더해짐으로써 복원 샘플들이 획득된다. 레지듀얼 신호(레지듀얼 샘플들)은 상술한 비트스트림 내 레지듀얼 정보(양자화된 변환 계수 정보 또는 레지듀얼 코딩 신택스)를 기반으로 역양자화/역변환 절차를 통하여 도출될 수 있다. 즉, 제1 서브파티션에 대한 예측 샘플들의 도출, 레지듀얼 샘플들의 도출이 수행되고, 이를 기반으로 제1 서브파티션에 대한 복원된 샘플들이 도출될 수 있다. 이 경우 제2 서브파티션에 대한 예측 샘플들 도출시, 제1 서브파티션 내의 복원 샘플들 중 일부(예: 제2 서브파티션의 좌측 또는 상측 주변 참조 샘플들)가 제2 서브파티션에 대한 주변 참조 샘플들로 이용될 수 있다. 마찬가지로, 제2 서브파티션에 대한 예측 샘플들의 도출, 레지듀얼 샘플들의 도출이 수행되고, 이를 기반으로 제2 서브파티션에 대한 복원된 샘플들이 도출될 수 있다. 이 경우 제3 서브파티션에 대한 예측 샘플들 도출시 제2 서브파티션 내 복원 샘플들 중 일부(예: 제3 서브파티션의 좌측 또는 상측 주변 참조 샘플들)가 제3 서브파티션에 대한 주변 참조 샘플들로서 사용될 수 있다. 본 문서에서 ISP가 적용됨에 따른 서브파티션은 서브블록으로도 지칭될 수 있다.
CIIP (combined inter and intra prediction)
CIIP는 현재 CU에 적용될 수 있다. 예를 들어, CU가 머지 모드로 코딩될 때, CU가 적어도 64개의 휘도 샘플들을 포함하면(CU 너비와 CU 높이의 곱이 64보다 크거나 같으면) 추가적인 플래그가 CIIP 모드가 현재 CU에 적용되는지 여부를 지시하기 위하여 시그널링될 수 있다. CIIP 모드는 다중 가설(multi-hypothesis) 모드 또는 인터/인트라 다중 가설 모드로 지칭될 수도 있다.
인트라 예측 모드 도출 (intra prediction mode derivation)
DC, PLANAR, HORIZONTAL, 및 VERTICAL 모드들을 포함하는 최대 4개의 인트라 예측 모드들이 CIIP 모드에서 휘도 성분을 예측하기 위해 사용될 수 있다. CU 모양이 매우 넓으면(wide)(예를 들어, 너비가 높이보다 2배 이상 크면), HORIZONTAL 모드는 허용되지 않는다. CU 모양이 매우 좁으면(narrow)(즉, 높이가 너비보다 2배 이상 크면), VERTICAL 모드는 허용되지 않는다. 이 경우들에 대하여, 3개의 인트라 예측 모드들이 허용된다.
CIIP 모드는 인트라 예측을 위하여 3개의 MPM(most probable mode)를 사용한다. CIIP MPM 후보 리스트는 아래와 같이 형성된다.
- 좌측 및 상측 이웃 블록들이 각각 A와 B로 설정됨
- 블록 A와 블록 B의 예측 모드들이 각각 intraModeA와 intraModeB로 명명되며, 이하와 같이 도출됨
· X를 A 또는 B로 둠
· 만약 i) 블록 X가 사용 불가능하거나, ii) 블록 X가 CIIP 모드를 사용하여 예측되지 않거나, 또는 iii) 블록 B가 현재 CTU 외부에 위치하면, intraModeX는 DC로 설정됨
· 그렇지 않으면, i) 블록 X의 인트라 예측 모드가 DC 또는 PLANAR이면, intraModeX는 DC 또는 PLANAR로, ii) 블록 X의 인트라 예측 모드가 "수직에 가까운(vertical-like)" 방향성 모드(34보다 큰 모드)이면 intraModeX는 VERTICAL로, 또는 iii) 블록 X의 인트라 예측 모드가 "수평에 가까운(horizontal-like)" 방향성 모드(34보다 작거나 같은 모드)이면 intraModeX는 HORIZONTAL로 설정됨
- intraModeA와 intraModeB가 동일하면,
· intraModeA가 PLANAR 또는 DC이면, 3개의 MPM들은 {PLANAR, DC, VERTICAL} 순서로 설정됨
· 그렇지 않으면, 3개의 MPM들은 {intraModeA, PLANAR, DC} 순서로 설정됨
- 그렇지 않으면(intraModeA와 intraModeB가 동일하지 않으면),
· 첫번째 2개의 MPM 들은 {intraModeA, intraModeB} 순서로 설정됨
· PLANAR, DC, VERTICAL의 고유성(uniqueness)(중복성)이 그 순서대로 첫번째 2개의 MPM 후보들에 대하여 확인되며, 고유의(중복되지 않는) 모드가 발견되면 3번째 MPM으로서 추가됨
만약 CU 모양이 매우 넓거나 매우 좁으면, MPM 플래그는 시그널링 없이 1로 추론된다. 그렇지 않으면, CIIP 인트라 예측 모드가 CIIP MPM 후보 모드들 중 하나인지 여부를 지시하기 위한 MPM 플래그가 시그널링된다.
만약 MPM 플래그가 1이면, MPM 후보 모드들 중에서 어느 것이 CIIP 인트라 예측에서 사용되는지를 지시하기 위한 MPM 인덱스가 추가적으로 시그널링된다. 그렇지 않으면, MPM 플래그가 0이면, MPM 후보 리스트에서 인트라 예측 모드는 "미싱(missing)" 모드로 설정된다. 예를 들어, 만약 PLANAR 모드가 MPM 후보 리스트에서 없으면, PLANAR가 미싱 모드가 되고, 인트라 예측 모드는 PLANAR로 설정된다. CIIP에서 4개의 가능한 인트라 예측 모드가 허용되므로, MPM 후보 리스트는 오직 3개의 인트라 예측 후보들 만을 포함한다. 색차 성분들에 대하여, 추가적인 시그널링 없이 항상 DM 모드가 적용된다. 즉, 휘도 성분과 동일한 예측 모드가 색차 성분들에 사용된다. CIIP로 코딩된 CU의 인트라 예측 모드는 이후의 주변 CU들의 인트라 모드 코딩을 위하여 저장되고 사용될 것이다.
인터와 인트라 예측 신호들의 결합 (Combining the inter and intra prediction signals)
CIIP 모드에서의 인터 예측 신호 Pinter는 일반적인 머지 모드에 적용된 동일한 인터 예측 프로세스를 사용하여 유도되고, 인트라 예측 신호 Pintra는 인트라 예측 프로세스에 따른 CIIP 인트라 예측을 사용하여 유도된다. 그러면, 인트라 및 인터 예측 신호들은 가중 평균을 사용하여 결합되며, 여기서 가중치 값은 아래와 같이 인트라 예측 모드와 코딩 블록에서 샘플이 위치한 곳에 의존한다.
- 인트라 예측 모드가 DC 또는 플래너 모드이거나, 블록 너비 또는 높이가 4보다 작으면, 동일한 가중치가 인트라 예측과 인터 예측 신호들에 적용된다.
- 그렇지 않으면, 가중치들은 인트라 예측 모드(이 경우 수평 모드 또는 수직 모드)와 블록 내 샘플 위치에 기반하여 결정된다. 수평 예측 모드를 예로서 설명한다(수직 모드에 대한 가중치들이 유사하나 직교 방향에서 유도될 수 있음). 블록의 너비를 W, 블록의 높이를 H로 둔다. 코딩 블록은 처음에 4개의 동일-영역 파트들로 분할되고, 각각의 차원은 (W/4)xH이다. 인트라 예측 참조 샘플들과 가장 가까운 파트에서 시작하여 인트라 예측 샘플들로부터 가장 먼 파트를 끝으로, 4개 영역들 각각에 대한 가중치 wt는 6, 5, 3, 2로 설정된다. 최종 CIIP 예측 신호는 아래의 수학식 1과 같이 유도될 수 있다.
Figure PCTKR2020003539-appb-M000001
수학식 1에서, PCIIP는 CIIP 예측 샘플 값, Pinter는 인터 예측 샘플 값, Pintra는 인트라 예측 샘플 값, wt는 가중치를 나타낸다.
실시예
이하 설명되는 실시예는 변환 블록(TB) 사이즈 시그널링 및 다양한 분야에서의 활용들의 예를 설명한다. 일 실시예에서, 표 7과 같이 휘도 성분에 대한 최소 및 최대 TB 사이즈 (MinTbSizeY 및 MaxTbSizeY)는 4 및 64로 설정된다. 이는 일차 변환 및 이차 변환을 포함하는 변환이 적용될 수 있는 휘도 성분에 대한 최소 블록 사이즈는 4x4이고, 일차 변환 및 이차 변환을 포함하는 변환이 적용될 수 있는 휘도 성분에 대한 최대 블록 사이즈는 64x64임을 의미한다.
Figure PCTKR2020003539-appb-T000007
비디오 코덱 시스템의 유연성(flexibility)과 확장성(scalability)을 위하여, 최대 및 최소 TB 사이즈의 설정 가능한 값(configurable value)을 갖는 것이 바람직하다. 변환 사이즈가 크면 더 많은 연산이 요구되고, 이는 더 큰 인코딩/디코딩 시간으로 이어진다. 온라인 비디오 스트리밍 환경에서, 때때로 끊김 없는(seamless) 스트리밍을 사용자에게 제공하는 것이 필수적이다. 이러한 경우에서, 더 작은 변환 블록 사이즈가 선호된다.
실시예 1
비디오 코덱 시스템의 유연성과 확장성을 위하여, 최소 및 최대 TB 사이즈가 아래의 표 8 내지 표 10과 같이 시퀀스 파라미터 셋(SPS), 픽처 파라미터 셋(PPS), 또는 타일 그룹 헤더(tile group header)와 같은 하이 레벨 신택스(high level syntax)에서 시그널링될 수 있다. log2_min_luma_transform_block_size_minus2는 0 또는 1의 값을 가질 수 있고, log2_max_luma_transform_block_size_minus2는 2, 3, 또는 4의 값을 가질 수 있다. 즉, 최소 변환 블록 사이즈 정보 또는 최대 변환 블록 사이즈 정보는 2개 또는 3개의 후보 값들 중 하나를 지시할 수 있다. log2_max_luma_transform_block_size_minus2의 값은 log2_min_luma_transform_block_size_minus2 보다 크도록 설정될 수 있다. 이하의 표 8 내지 표 10은 각각 SPS, PPS, 타일 그룹 헤더에서 최소 및 최대 TB 사이즈가 시그널링되는 경우의 예를 나타낸다.
Figure PCTKR2020003539-appb-T000008
Figure PCTKR2020003539-appb-T000009
Figure PCTKR2020003539-appb-T000010
표 8 내지 표 10에서, log2_min_luma_transform_block_size_minus2 플러스 2는 최소 휘도 TB 사이즈에 밑이 2인 로그를 취한 값을 나타낸다. 변수 MinTbLog2SizeY는 log2_min_luma_transform_block_size_minus2 + 2로 설정된다. CVS(coded video sequence)는 MinTbLog2SizeY가 MinCbLog2SizeY 보다 큰 데이터를 포함할 수 없다.
log2_max_luma_transform_block_size_minus2 플러스 2는 최대 휘도 TB 사이즈에 밑이 2인 로그를 취한 값을 나타낸다. 변수 MaxTbLog2SizeY는 log2_max_luma_transform_block_size_minus2 + 2로 설정된다. CVS는 MaxTbLog2SizeY가 Min( CtbLog2SizeY, 6 ) 보다 큰 데이터를 포함할 수 있다. 본 문서에서, Min(A, B)는 A와 B 중에서 더 작은 값을 출력하는 함수이고, Max(A, B)는 A와 B 중에서 더 큰 값을 출력하는 함수이다.
최소 및 최대 휘도 TB 사이즈는 아래와 같이 유도된다. 여기서 "<<"는 좌측 시프트 연산을 나타낸다. 즉, MinTbSizeY는 2MinTbLog2SizeY로 설정되고, MaxTbSizeY는 2MaxTbLog2SizeY로 설정된다.
MinTbSizeY = 1 << MinTbLog2SizeY
MaxTbSizeY = 1 << MaxTbLog2SizeY
상술한 바와 같이, 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시할 수 있다. 일 실시예에서, 최대 변환 블록 사이즈 정보는 32 또는 64 중에서 하나를 지시할 수 있다. 예를 들어, 최대 변환 블록 사이즈 정보는 log2_max_luma_transform_block_size_minus2와 같이 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
표 8 내지 10과 같이, 비디오 신호의 SPS, PPS, 또는 타일 그룹 헤더로부터 최대 변환 블록 사이즈 정보가 시그널링됨으로써, 디코더는 최대 변환 블록 사이즈 정보를 획득(디코딩)할 수 있다.
실시예 2
비디오 코덱 시스템의 유연성과 확장성을 위하여, 최소 및 최대 TB 사이즈가 아래의 표 11 내지 표 13과 같이 시퀀스 파라미터 셋(SPS), 픽처 파라미터 셋(PPS), 또는 타일 그룹 헤더(tile group header)와 같은 하이 레벨 신택스(high level syntax)에서 시그널링될 수 있다. log2_min_luma_transform_block_size_minus2는 0 또는 1의 값을 가질 수 있고, log2_diff_max_min_luma_transform_block_size는 2 또는 3의 값을 가질 수 있다. 이하의 표 11 내지 표 13은 각각 SPS, PPS, 타일 그룹 헤더에서 최소 TB 사이즈 정보 및 최소 TB 사이즈와 최대 TB 사이즈의 차이 값 정보가 시그널링되는 경우의 예를 나타낸다.
Figure PCTKR2020003539-appb-T000011
Figure PCTKR2020003539-appb-T000012
Figure PCTKR2020003539-appb-T000013
log2_min_luma_transform_block_size_minus2 플러스 2는 최소 휘도 TB 사이즈를 나타낸다. 변수 MinTbLog2SizeY는 log2_min_luma_transform_block_size_minus2 + 2로 설정된다. CVS는 MinTbLog2SizeY가 MinCbLog2SizeY 보다 큰 데이터를 포함할 수 없다.
log2_diff_max_min_luma_transform_block_size는 최대 휘도 TB 사이즈와 최소 휘도 TB 사이즈 사이의 차이를 나타낸다. 변수 MaxTbLog2SizeY는 log2_min_luma_transform_block_size_minus2 + 2 + log2_diff_max_min_luma_transform_block_size로 설정된다. CVS는 MaxTbLog2SizeY가 Min( CtbLog2SizeY, 6 ) 보다 큰 데이터를 포함할 수 있다.
최소 및 최대 휘도 TB 사이즈는 아래와 같이 유도된다.
MinTbSizeY = 1 << MinTbLog2SizeY
MaxTbSizeY = 1 << MaxTbLog2SizeY
실시예 3: MaxTbSizeY 및 MaxExplicitMtsSize
MTS가 SPS에서 사용 가능할 때, 표 14와 같이 인트라 블록 및 인터 블록에 대한 명시적 MTS가 사용 가능한지 여부를 지시하는 정보가 각각 시그널링될 수 있다.
Figure PCTKR2020003539-appb-T000014
sps_mts_enabled_flag가 1이면, sps_explicit_mts_intra_enabled_flag가 시퀀스 파라미터 셋 RBSP 신택스에 존재하고, sps_explicit_mts_inter_enabled_flag가 시퀀스 파라미터 셋 RBSP 신택스에 존재한다. sps_mts_enabled_flag가 0이면, sps_explicit_mts_intra_enabled_flag가 시퀀스 파라미터 셋 RBSP 신택스에 존재하지 않고, sps_explicit_mts_inter_enabled_flag가 시퀀스 파라미터 셋 RBSP 신택스에 존재하지 않는다.
sps_explicit_mts_intra_enabled_flag가 1이면, tu_mts_idx가 인트라 코딩 유닛들에 대한 변환 유닛 신택스에 존재할 수 있다. sps_explicit_mts_intra_enabled_flag가 0이면, tu_mts_idx는 인트라 코딩 유닛들에 대한 변환 유닛 신택스에 존재하지 않는다. sps_explicit_mts_intra_enabled_flag가 존재하지 않으면, sps_explicit_mts_intra_enabled_flag의 값은 0으로 추론된다.
sps_explicit_mts_inter_enabled_flag가 1이면, tu_mts_idx가 인터 코딩 유닛들에 대한 변환 유닛 신택스에 존재할 수 있다. sps_explicit_mts_inter_enabled_flag가 0이면, tu_mts_idx는 인터 코딩 유닛들에 대한 변환 유닛 신택스에 존재하지 않는다. sps_explicit_mts_inter_enabled_flag가 존재하지 않으면, sps_explicit_mts_inter_enabled_flag의 값은 0으로 추론된다.
MaxExplicitMtsSize는 최대 명시적 MTS 사이즈를 나타낸다. sps_mts_enabled_flag가 1이면, MaxExplictMtsSize은 min( 32, MaxTbSizeY )로 설정되는데, 이는 최대 명시적 MTS 사이즈는 최대 TU 사이즈를 초과할 수 없음을 의미한다.
MaxExplictMtsSize를 사용한 두 가지 방법들이 표 15와 표 16과 같이 표현될 수 있다.
Figure PCTKR2020003539-appb-T000015
Figure PCTKR2020003539-appb-T000016
본 실시예에 따른 스케일된 변환 계수들에 대한 변환 프로세스는 다음과 같을 수 있다.
본 프로세스의 입력은 다음과 같다.
- 현재 픽처의 좌상측 휘도 샘플에 대한 현재 휘도 변환 블록의 좌상측 샘플을 나타내는 휘도 위치 ( xTbY, yTbY )
- 현재 변환 블록의 너비를 나타내는 변수 nTbW
- 현재 변환 블록의 높이를 나타내는 변수 nTbH
- 현재 블록의 컬러 성분을 나타내는 변수 cIdx
- x = 0..nTbW - 1, y = 0..nTbH - 1에 대한 스케일된 변환 계수들의 (nTbW)x(nTbH) 어레이 d[ x ][ y ]
본 프로세서의 출력은 x = 0..nTbW - 1, y = 0..nTbH - 1에 대한 레지듀얼 샘플들의 (nTbW)x(nTbH) 어레이 r[ x ][ y ]이다.
변수 implicitMtsEnabled는 아래와 같이 유도된다.
- 만약 sps_mts_enabled_flag가 1이고 아래 조건들 중 하나가 참(true)이면, implicitMtsEnabled은 1로 설정된다.
-- IntraSubPartitionsSplitType이 ISP_NO_SPLIT 아님
-- cu_sbt_flag가 1이고 Max( nTbW, nTbH )가 MaxExplicitMtsSize 보다 작거나 같음
-- sps_explicit_mts_intra_enabled_flag 및 sps_explicit_mts_inter_enabled_flag가 모드 0이고 CuPredMode[ xTbY ][ yTbY ]가 MODE_INTRA임
- 그렇지 않으면, implicitMtsEnabled는 0으로 설정된다.
변수 implicitMtsEnabled는 변환/역변환을 위한 변환 조합이 변환 조합을 지시하는 특정 신택스 요소(예: MTS 인덱스)에 의해 지시되지 않고, 암묵적으로 결정됨을 나타내는 변수이다. 예를 들어, implicitMtsEnabled가 1일 때, SBT가 적용된 블록에 대한 수평/수직 변환 조합은, 표 2와 같이 cu_sbt_horizontal_flag 및 cu_sbt_pos_flag에 의해 결정되고, 또는 인트라 예측이 적용된 블록의 수평/수직 변환 조합은 표 3과 같이 인트라 예측 모드 및 블록의 사이즈(너비, 높이)에 따라 결정될 수 있다. implicitMtsEnabled가 0이면 변환/역변환을 위한 수평/수직 변환 조합은 표 1과 같이 MTS 인덱스에 의해 지시된다.
실시예 4
아래의 표 17은 변환 스킵 가능 플래그 및 최대 변환 스킵 사이즈가 PPS에서 시그널링되는 경우의 예이다.
Figure PCTKR2020003539-appb-T000017
transform_skip_enabled_flag가 1이면, transform_skip_flag는 변환 유닛 신택스에서 존재할 수 있다. transform_skip_enabled_flag가 0이면, transform_skip_enabled_flag는 변환 유닛 신택스에 존재하지 않는다.
log2_transform_skip_max_size_minus2는 변환 스킵이 적용될 수 있는 최대 블록 사이즈를 나타내며, 0 내지 3의 범위에 있을 수 있다.
log2_transform_skip_max_size_minus2가 존재하지 않으면, log2_transform_skip_max_size_minus2의 값은 0으로 추론된다.
MaxTsSize는 1 << (log2_transform_skip_max_size_minus2 + 2)로 설정된다. MaxTsSize가 min( 32, MaxTbSizeY )임은 최대 변환 스킵 사이즈는 최대 TU 사이즈를 초과할 수 없음을 의미한다.
실시예 5
SBT가 사용될 수 있는 경우, 최대 SBT 사이즈 정보(MaxSbtSize)가 SPS를 통하여 최대 사용 가능한 SBT 사이즈를 지시하기 위하여 시그널링될 수 있다. 아래의 표 18은 MaxSbtSize가 SPS를 통해 시그널링되는 경우의 예를 나타낸다.
Figure PCTKR2020003539-appb-T000018
sps_sbt_enabled_flag가 0이면 인터-예측된 CU들에 대한 서브블록 변환이 사용 불가능하다. sps_sbt_enabled_flag가 1이면 인터-예측된 CU들에 대한 서브블록 변환이 사용 가능한다.
sps_sbt_max_size_64_flag가 0이면 서브블록 변환이 허용되는 최대 CU 너비 및 높이가 32이다. sps_sbt_max_size_64_flag가 1이면 서브블록 변환이 허용되는 최대 CU 너비 및 높이가 64이다. MaxSbtSize는 아래와 같이 정의될 수 있다. 본 문서에서 "(Condition) ? A : B"는 조건(Condition)이 '1(true)'이면 A를 출력하고, 조건(Condition)이 '0(false)'이면 B를 출력하는 함수이다.
MaxSbtSize = sps_sbt_max_size_64_flag ? 64 : 32
MaxSbtSize가 min(MaxSbtSize, MaxTbSizeY )와 같음은 최대 SBT 사이즈가 최대 TU 사이즈를 초과할 수 없음을 의미한다.
실시예 6
아래의 표 19는 CIIP와 MaxTbSizeY와의 관계를 나타낸다.
Figure PCTKR2020003539-appb-T000019
CIIP는 인트라 예측을 사용하므로, CIIP 블록의 너비와 높이는 모두 MaxTbSizeY 보다 작거나 같아야 한다.
실시예 7
아래의 표 20은 최대 CTU 사이즈가 SPS를 통해 시그널링되는 경우의 예를 나타낸다.
Figure PCTKR2020003539-appb-T000020
log2_ctu_size_minus2 플러스 2는 각 CTU의 휘도 코딩 트리 블록 사이즈를 나타낸다. CtbLog2SizeY는 아래와 같이 설정될 수 있다.
CtbLog2SizeY = log2_ctu_size_minus2 + 2
log2_min_luma_coding_block_size_minus2 플러스 2는 최소 휘도 코딩 블록 사이즈를 나타낸다.
실시예 8
아래의 표 21은 VPDU가 적용될 수 있는 사이즈(MaxSbSizeY)가 반영된 변환 트리 신택스 구조의 예이다.
Figure PCTKR2020003539-appb-T000021
MaxSbSizeY는 가상 파이프라인 유닛의 사이즈를 나타낸다. MaxSbSizeY의 값은 128, 64, 또는 32 일 수 있으며, 하드웨어 회로 사이즈 구현에 따라 달라질 수 있다. 큰 사이즈의 파이프라인을 처리할 수 있는 고성능이 적용되면, MaxSbSizeY의 값은 128일 수 있다. 저 성능이 적용되면, 효과적인 가상 파이프라인을 위하여 더 작은 값이 사용될 수 있다.
표 21을 참고하면, 디코더는 현재 블록이 ISP 인트라 예측이 적용되는지 여부를 확인하고, 현재 블록에 ISP 인트라 예측이 적용되지 않으면 현재 블록의 너비 또는 높이가 최대 사이즈보다 큰 지 여부를 확인한다. 현재 블록의 너비 또는 높이가 최대 사이즈보다 크면, 디코더는 현재 블록을 수평 방향 또는 수직 방향으로 분할한다. 여기서, 디코더는, 현재 블록의 너비가 최대 사이즈 보다 크면 너비의 1/2 지점을 기준으로 (수직 방향으로) 현재 블록을 2개의 블록으로 분할하고, 현재 블록의 높이가 최대 사이즈 보다 크면 높이의 1/2 지점을 기준으로 (수평 방향으로) 현재 블록을 2개의 블록으로 분할한다.
비트스트림
상술한 본 명세서의 실시예들을 기반으로 인코딩 장치(100)에 의하여 도출된 인코딩된 정보(예: 인코딩된 비디오/영상 정보)는 비트스트림 형태로 출력될 수 있다. 인코딩된 정보는 비트스트림 형태로 NAL(network abstraction layer) 유닛 단위로 전송 또는 저장될 수 있다. 비트스트림은 네트워크를 통하여 전송될 수 있고, 또는 비 일시적(non-transitory) 디지털 저장매체에 저장될 수 있다. 또한, 상술한 바와 같이 비트스트림은 인코딩 장치(100)에서 디코딩 장치(200)로 바로 전송되지 않고, 외부 서버(예: 컨텐츠 스트리밍 서버)를 통하여 스트리밍/다운로드 서비스될 수도 있다. 여기서 네트워크는 방송망 및/또는 통신망 등을 포함할 수 있고, 디지털 저장매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장매체를 포함할 수 있다.
도 16은 본 명세서의 실시예에 따른 비디오 신호의 인코딩 절차의 예를 도시한다. 도 16의 동작들은 인코딩 장치(100) 또는 비디오 신호 처리 장치(500)에 의해 수행될 수 있다.
S1610 단계에서, 인코더는 최대 변환 블록 사이즈 값을 결정한다. 인코더는 압축 효율과 코딩 복잡도를 고려하여 최대 변환 블록 사이즈를 결정할 수 있다. 예를 들어, 인코더는 시퀀스, 픽처, 또는 타일 그룹 단위로 최대 변환 블록 사이즈를 결정할 수 있다. 또한, 인코더는 특정 후보 값들(예: 32 또는 64) 중에서 최적의 최대 변환 블록 사이즈를 결정할 수 있다.
S1620 단계에서, 인코더는 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩한다. 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다. 일 실시예에서, 최대 변환 블록 사이즈 정보는 32 또는 64 중에서 하나를 지시할 수 있다. 예를 들어, 최대 변환 블록 사이즈 정보는 log2_max_luma_transform_block_size_minus2와 같이 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 인코더는 최대 변환 블록 사이즈 정보를, 표 8 내지 10 또는 표 11 내지 13과 같이, 비디오 신호의 SPS, PPS, 또는 타일 그룹 헤더에 포함시켜 인코딩할 수 있다.
S1630 단계에서, 인코더는 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인한다.
일 실시예에서, 인코더는, 표 21과 같이, 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, ISP 인트라 예측이 적용되지 않으면 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인할 수 있다.
S1640 단계에서, 인코더는 현재 블록의 너비 또는 높이가 최대 변환 블록 사이즈 값보다 큰 것에 기반하여 현재 블록을 수평 방향 또는 수직 방향으로 분할한다.
일 실시예에서, 인코더는, 표 21과 같이, 현재 블록의 너비가 최대 변환 블록 사이즈 값 보다 크면 현재 블록을 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 현재 블록의 높이가 최대 변환 블록 사이즈 값 보다 크면 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할할 수 있다.
S1650 단계에서, 인코더는 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성한다. 예를 들어, 인코더는 변환 블록에 포함된 레지듀얼 샘플에 대하여 변환을 적용함으로써 주파수 영역으로 변환된 변환 계수들의 어레이를 생성(도출)할 수 있다.
일 실시예에서, 인코더는 SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 인코더는 현재 블록에 대하여 SBT를 적용할 지 여부를 결정하고, SBT의 적용 여부를 나타내는 SBT 플래그를 인코딩 할 수 있다. 현재 블록에 SBT가 적용되면, 인코더는 블록의 분할 방향, 분할 사이즈, 변환 위치를 결정한 후 분할 방향, 분할 사이즈, 변환 위치를 지시하기 위한 정보를 인코딩할 수 있다. 여기서 최대 SBT 블록 사이즈는 최대 변환 블록 사이즈 값과 동일하게 설정될 수 있다. 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 인코더는 CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 인코더는 현재 블록에 대하여 CIIP를 적용할 지 여부를 결정하고, CIIP의 적용 여부를 나타내는 CIIP 플래그를 인코딩 할 수 있다. 현재 블록에 CIIP가 적용되면, 인코더는 인터 예측 샘플과 인트라 예측 샘플과의 가중합을 통해 최종 예측 샘플을 도출하도록 설정될 수 있다.
도 17은 본 명세서의 실시예에 따른 비디오 신호의 디코딩 절차의 예를 도시한다. 도 17의 동작들은 디코딩 장치(200) 또는 비디오 신호 처리 장치(500)에 의해 수행될 수 있다.
S1710 단계에서, 디코더는 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득한다. 여기서, 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다. 일 실시예에서, 최대 변환 블록 사이즈 정보는 32 또는 64 중에서 하나를 지시할 수 있다. 예를 들어, 최대 변환 블록 사이즈 정보는 log2_max_luma_transform_block_size_minus2와 같이 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 디코더는, 표 8 내지 10 또는 표 11 내지 13과 같이, 비디오 신호의 SPS, PPS, 또는 타일 그룹 헤더로부터 최대 변환 블록 사이즈 정보를 획득(디코딩)할 수 있다.
S1720 단계에서, 디코더는 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인한다.
일 실시예에서, 디코더는, 표 21과 같이, 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, ISP 인트라 예측이 적용되지 않으면 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인할 수 있다.
S1730 단계에서, 디코더는 현재 블록의 너비 또는 높이가 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 현재 블록을 수평 방향 또는 수직 방향으로 분할한다.
일 실시예에서, 디코더는, 표 21과 같이, 현재 블록의 너비가 최대 변환 블록 사이즈 값 보다 크면 현재 블록을 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 현재 블록의 높이가 최대 변환 블록 사이즈 값 보다 크면 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할할 수 있다.
S1740 단계에서, 디코더는 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성한다. 예를 들어, 디코더는 블록 내 변환 계수들에 대하여 역변환을 적용함으로써 레지듀얼 샘플들의 어레이를 생성(도출)할 수 있다.
일 실시예에서, 디코더는 SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 확인하고, 현재 블록의 너비와 높이가 모두 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 현재 블록에 대하여 SBT가 적용되는지 여부를 지시하는 SBT 플래그를 파싱할 수 있다. SBT 플래그를 확인한 결과 현재 블록에 SBT가 적용되면, 디코더는 추가적으로 블록의 분할 방향, 분할 사이즈, 변환 위치를 나타내는 정보에 기반하여 현재 블록 내 분할된 일부 영역에 대하여 역변환을 적용할 수 있다. 여기서 최대 SBT 블록 사이즈는 최대 변환 블록 사이즈 값과 동일하게 설정될 수 있다. 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 디코더는 CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 확인하고, 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 현재 블록에 대하여 CIIP가 적용되는지 여부를 지시하는 CIIP 플래그를 파싱할 수 있다. CIIP 플래그를 확인한 결과 현재 블록에 CIIP가 적용되면, 디코더는 인터 예측 샘플과 인트라 예측 샘플과의 가중합을 통해 최종 예측 샘플을 도출할 수 있다.
도 5를 참조하여 설명한 것과 같이, 본 명세서의 실시예에 따른 비디오 신호 처리 장치(500)는, 비디오 신호를 저장하는 메모리(520)와, 상기 메모리(520)와 결합된 프로세서(510)를 포함할 수 있다.
비디오 신호의 인코딩을 위하여, 상기 프로세서(510)는 최대 변환 블록 사이즈 값을 결정하고, 상기 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성하도록 설정된다. 여기서 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
일 실시예에서, 상기 프로세서(510)는 상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, 상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하도록 설정된다.
일 실시예에서, 상기 프로세서(510)는 상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하도록 설정된다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함도리 수 있다.
일 실시예에서, 상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 프로세서(510)는 SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 결정하고, 상기 현재 블록의 너비와 높이가 모두 상기 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 SBT를 적용할 지 여부를 결정하고, 현재 블록에 SBT를 적용할 지 여부를 지시하는 SBT 플래그를 인코딩하도록 설정될 수 있다. 여기서 최대 SBT 블록 사이즈는 최대 변환 블록 사이즈 값과 동일하게 설정될 수 있다. 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 프로세서(510)는 CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 결정하고, 상기 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 CIIP를 적용할 지 여부를 결정하고, 현재 블록에 CIIP를 적용할 지 여부를 지시하는 CIIP 플래그를 인코딩하도록 설정될 수 있다.
비디오 신호의 디코딩을 위하여, 상기 프로세서(510)는 상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하도록 설정된다. 여기서 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
일 실시예에서, 상기 프로세서(510)는 상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, 상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인할 수 있다.
일 실시예에서, 상기 프로세서(510)는 상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함도리 수 있다.
일 실시예에서, 상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 상기 프로세서(510)는, SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 확인하고, 상기 현재 블록의 너비와 높이가 모두 상기 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 SBT가 적용되는지 여부를 지시하는 SBT 플래그를 파싱하도록 설정될 수 있다. 여기서 최대 SBT 블록 사이즈는 최대 변환 블록 사이즈 값과 동일하게 설정될 수 있다. 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 상기 프로세서(510)는, CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 확인하고, 상기 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 CIIP가 적용되는지 여부를 지시하는 CIIP 플래그를 파싱하도록 설정될 수 있다.
또한, 본 명세서가 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 명세서에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치 및 분산 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.
또한, 본 명세서의 실시예는 프로그램 코드에 의한 컴퓨터 프로그램 제품으로 구현될 수 있고, 상기 프로그램 코드는 본 명세서의 실시예에 의해 컴퓨터에서 수행될 수 있다. 상기 프로그램 코드는 컴퓨터에 의해 판독가능한 캐리어 상에 저장될 수 있다.
본 명세서의 실시예에 따른 비-일시적 컴퓨터-판독 가능한 매체(non-transitory computer-readable medium)는 하나 또는 그 이상의 프로세서들에 의해 실행되는 하나 또는 그 이상의 명령어들을 저장한다. 상기 하나 또는 그 이상의 명령어들은, 최대 변환 블록 사이즈 값을 결정하고, 상기 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성하도록 비디오 신호 처리 장치(500)(인코딩 장치(100))를 제어한다. 여기서 상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은 상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, 상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하도록 비디오 신호 처리 장치(500)(인코딩 장치(100))를 제어한다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은 상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하도록 비디오 신호 처리 장치(500)(인코딩 장치(100))를 제어한다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함도리 수 있다.
일 실시예에서, 상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은, SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 인코더는 현재 블록에 대하여 SBT를 적용할 지 여부를 결정하고, SBT의 적용 여부를 나타내는 SBT 플래그를 인코딩 할 수 있다. 현재 블록에 SBT가 적용되면, 인코더는 블록의 분할 방향, 분할 사이즈, 변환 위치를 결정한 후 분할 방향, 분할 사이즈, 변환 위치를 지시하기 위한 정보를 인코딩하도록 비디오 신호 처리 장치(500)(인코딩 장치(100))를 제어할 수 있다. 상기 최대 SBT 블록 사이즈는 상기 최대 변환 블록 사이즈 정보에 기반하여 결정될 수 있다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은, CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 인코더는 현재 블록에 대하여 CIIP를 적용할 지 여부를 결정하고, CIIP의 적용 여부를 나타내는 CIIP 플래그를 인코딩 할 수 있다. 현재 블록에 CIIP가 적용되면, 인코더는 인터 예측 샘플과 인트라 예측 샘플과의 가중합을 통해 최종 예측 샘플을 도출하도록 비디오 신호 처리 장치(500)(인코딩 장치(100))를 제어할 수 있다.
또한, 상기 하나 또는 그 이상의 명령어들은, 상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하고, 상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고, 상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고, 상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하도록 비디오 신호 처리 장치(500)(디코딩 장치(200))를 제어한다. 여기서 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시한다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은 상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하고, 상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하도록 비디오 신호 처리 장치(500)( 디코딩 장치(200))를 제어한다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은 상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하고, 상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하도록 비디오 신호 처리 장치(500)(디코딩 장치(200))를 제어한다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함도리 수 있다.
일 실시예에서, 상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함할 수 있다.
일 실시예에서, 상기 최대 변환 블록 사이즈 정보는, 상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩될 수 있다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은, SBT가 적용될 수 있는 최대 SBT 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 현재 블록에 대하여 SBT가 적용되는지 여부를 지시하는 SBT 플래그를 파싱하도록 비디오 신호 처리 장치(500)(디코딩 장치(200)를 제어할 수 있다.
일 실시예에서, 상기 하나 또는 그 이상의 명령어들은, CIIP가 적용될 수 있는 최대 CIIP 블록 사이즈를 결정하고, 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 현재 블록에 대하여 CIIP가 적용되는지 여부를 지시하는 CIIP 플래그를 파싱하도록 비디오 신호 처리 장치(500)(디코딩 장치(200)를 제어할 수 있다.
또한, 본 명세서가 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, OTT 비디오(Over the top video) 장치, 인터넷 스트리밍 서비스 제공 장치, 3차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 또는 데이터 신호를 처리하기 위해 사용될 수 있다. 예를 들어, OTT 비디오(Over the top video) 장치로는 게임 콘솔, 블루레이 플레이어, 인터넷 접속 TV, 홈시어터 시스템, 스마트폰, 태블릿 PC, DVR(Digital Video Recorder) 등을 포함할 수 있다.
이상에서 설명된 실시예들은 본 명세서의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 명세서의 실시예를 구성하는 것도 가능하다. 본 명세서의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 명세서에 따른 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(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 (15)

  1. 비디오 신호를 디코딩하기 위한 방법에 있어서,
    상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하는 단계와,
    상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계와,
    상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하는 단계와,
    상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하는 단계를 포함하고,
    상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계는,
    상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하는 단계와,
    상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 현재 블록을 분할하는 단계는,
    상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계와,
    상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 최대 변환 블록 사이즈 정보는,
    상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함되는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 최대 변환 블록 사이즈 정보는,
    상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩되는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    SBT(sub-block transform)가 적용될 수 있는 최대 SBT 블록 사이즈를 확인하는 단계와,
    상기 현재 블록의 너비와 높이가 모두 상기 최대 SBT 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 SBT가 적용되는지 여부를 지시하는 SBT 플래그를 파싱하는 단계를 더 포함하고,
    상기 최대 SBT 블록 사이즈는, 상기 최대 변환 블록 사이즈 정보에 기반하여 결정되는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    CIIP(combined inter and intra prediction)가 적용될 수 있는 최대 CIIP 블록 사이즈를 결정하는 확인하는 단계와,
    상기 현재 블록의 너비와 높이가 모두 상기 최대 CIIP 블록 사이즈 값보다 작거나 같은 것에 기반하여, 상기 현재 블록에 대하여 CIIP가 적용되는지 여부를 지시하는 CIIP 플래그를 파싱하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 비디오 신호를 인코딩하기 위한 방법에 있어서,
    최대 변환 블록 사이즈 값을 결정하는 단계와,
    상기 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 인코딩하는 단계와,
    상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계와,
    상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하는 단계와,
    상기 현재 블록으로부터 분할된 변환 블록에 대하여 변환을 적용함으로써 변환 계수를 생성하는 단계를 포함하고,
    상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계는,
    상기 현재 블록에 대하여 ISP(intra sub-partition) 인트라 예측이 적용되는지 여부를 결정하는 단계와,
    상기 ISP 인트라 예측이 적용되지 않으면, 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제9항에 있어서,
    상기 현재 블록을 분할하는 단계는,
    상기 현재 블록의 너비가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 너비의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계와,
    상기 현재 블록의 높이가 상기 최대 변환 블록 사이즈 값 보다 크면 상기 현재 블록을 상기 높이의 1/2 지점을 기준으로 2개의 블록들로 분할하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제9항에 있어서,
    상기 최대 변환 블록 사이즈 정보는,
    상기 비디오 신호의 SPS(sequence parameter set), PPS(picture parameter set), 또는 타일 그룹 헤더(tile group header)에 포함되는 것을 특징으로 하는 방법.
  13. 제9항에 있어서,
    상기 기 정의된 최대 변환 블록 사이즈 후보 값들은 32 및 64을 포함하는 것을 특징으로 하는 방법.
  14. 제9항에 있어서,
    상기 최대 변환 블록 사이즈 정보는,
    상기 최대 변환 블록 사이즈 값에 대하여 밑(base)이 2인 로그를 취한 값에서 특정 값을 뺀 값으로 코딩되는 것을 특징으로 하는 방법.
  15. 비디오 신호를 디코딩하기 위한 장치에 있어서,
    상기 비디오 신호를 저장하는 메모리와,
    상기 메모리와 결합되고, 상기 비디오 신호를 처리하는 프로세서를 포함하고,
    상기 프로세서는,
    상기 비디오 신호로부터 최대 변환 블록 사이즈 값을 지시하는 최대 변환 블록 사이즈 정보를 획득하고,
    상기 최대 변환 블록 사이즈 정보에 기반하여 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 지 여부를 확인하고,
    상기 현재 블록의 너비 또는 높이가 상기 최대 변환 블록 사이즈 값보다 큰 것에 기반하여, 상기 현재 블록을 수평 방향 또는 수직 방향으로 분할하고,
    상기 현재 블록으로부터 분할된 변환 블록에 대하여 역변환을 적용함으로써 레지듀얼 샘플을 생성하도록 설정되고,
    상기 최대 변환 블록 사이즈 정보는 기 정의된 최대 변환 블록 사이즈 후보 값들 중에서 하나를 지시하는 것을 특징으로 하는 장치.
PCT/KR2020/003539 2019-03-13 2020-03-13 비디오 신호를 처리하기 위한 방법 및 장치 WO2020185036A1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962817571P 2019-03-13 2019-03-13
US62/817,571 2019-03-13
US201962822805P 2019-03-23 2019-03-23
US62/822,805 2019-03-23

Publications (1)

Publication Number Publication Date
WO2020185036A1 true WO2020185036A1 (ko) 2020-09-17

Family

ID=72427134

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/003539 WO2020185036A1 (ko) 2019-03-13 2020-03-13 비디오 신호를 처리하기 위한 방법 및 장치

Country Status (1)

Country Link
WO (1) WO2020185036A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220321915A1 (en) * 2019-06-25 2022-10-06 Electronics And Telecommunications Research Institute Image encoding/decoding method and apparatus

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180019510A (ko) * 2015-03-31 2018-02-26 리얼네트웍스 인코포레이티드 비디오 코딩시 오차 변환 및 역 변환 시스템들 및 방법들
KR20180081839A (ko) * 2010-01-12 2018-07-17 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
US10148948B1 (en) * 2013-01-17 2018-12-04 Google Llc Selection of transform size in video coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180081839A (ko) * 2010-01-12 2018-07-17 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
US10148948B1 (en) * 2013-01-17 2018-12-04 Google Llc Selection of transform size in video coding
KR20180019510A (ko) * 2015-03-31 2018-02-26 리얼네트웍스 인코포레이티드 비디오 코딩시 오차 변환 및 역 변환 시스템들 및 방법들

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BROSS, BENJAMIN ET AL.: "Versatile Video Coding (Draft 4)", JOINT VIDEO EXPERTS TEAM (JVET) OF [TU-T SG 16 WP 3 AND [SO/IEC JTC 1/SC 29/WG 11. 13TH MEETING, vol. 28, no. JVET-M1001-v6, 9 March 2019 (2019-03-09), Marrakech, MA, pages 1 - 284, XP030254445 *
XU, WEIWEI ET AL.: "CE10: Simplification on Combined Inter-Intra Prediction with Size Restriction", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11. 13TH MEETING, no. JVET-M0293, 2 January 2019 (2019-01-02), Marrakech, MA, pages 1 - 3, XP030200268 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220321915A1 (en) * 2019-06-25 2022-10-06 Electronics And Telecommunications Research Institute Image encoding/decoding method and apparatus

Similar Documents

Publication Publication Date Title
WO2020009556A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2020046091A1 (ko) 다중 변환 선택에 기반한 영상 코딩 방법 및 그 장치
WO2020213946A1 (ko) 변환 인덱스를 이용하는 영상 코딩
WO2020213944A1 (ko) 영상 코딩에서 매트릭스 기반의 인트라 예측을 위한 변환
WO2019203610A1 (ko) 영상의 처리 방법 및 이를 위한 장치
WO2019194514A1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2020231140A1 (ko) 적응적 루프 필터 기반 비디오 또는 영상 코딩
WO2020204413A1 (ko) 복원 픽처를 수정하는 비디오 또는 영상 코딩
WO2020180129A1 (ko) 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
WO2019235822A1 (ko) 어파인 움직임 예측을 이용하여 비디오 신호를 처리하는 방법 및 장치
WO2020213945A1 (ko) 인트라 예측 기반 영상 코딩에서의 변환
WO2020171660A1 (ko) 인트라 예측을 위한 비디오 신호의 처리 방법 및 장치
WO2020184952A1 (ko) 비디오 신호에서 인터 예측을 위한 움직임 벡터 차분 정보를 처리하기 위한 비디오 신호의 처리 방법 및 장치
WO2020171673A1 (ko) 인트라 예측을 위한 비디오 신호의 처리 방법 및 장치
WO2019216714A1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2020180143A1 (ko) 루마 맵핑 및 크로마 스케일링 기반 비디오 또는 영상 코딩
WO2020204419A1 (ko) 적응적 루프 필터 기반 비디오 또는 영상 코딩
WO2020213867A1 (ko) 스케일링 리스트 데이터의 시그널링 기반 비디오 또는 영상 코딩
WO2021040487A1 (ko) 영상 코딩 시스템에서 레지듀얼 데이터 코딩에 대한 영상 디코딩 방법 및 그 장치
WO2019194463A1 (ko) 영상의 처리 방법 및 이를 위한 장치
WO2021054807A1 (ko) 참조 샘플 필터링을 이용하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2021040410A1 (ko) 레지듀얼 코딩에 대한 영상 디코딩 방법 및 그 장치
WO2020180122A1 (ko) 조건적으로 파싱되는 alf 모델 및 리셰이핑 모델 기반 비디오 또는 영상 코딩
WO2021162494A1 (ko) 필터 가용 정보를 선택적으로 시그널링 하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2021182816A1 (ko) 직사각형 슬라이스의 크기 정보를 선택적으로 부호화 하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법

Legal Events

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

Ref document number: 20771163

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20771163

Country of ref document: EP

Kind code of ref document: A1