WO2021107648A1 - 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 - Google Patents

영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 Download PDF

Info

Publication number
WO2021107648A1
WO2021107648A1 PCT/KR2020/016991 KR2020016991W WO2021107648A1 WO 2021107648 A1 WO2021107648 A1 WO 2021107648A1 KR 2020016991 W KR2020016991 W KR 2020016991W WO 2021107648 A1 WO2021107648 A1 WO 2021107648A1
Authority
WO
WIPO (PCT)
Prior art keywords
transform
block
current block
inverse
mode
Prior art date
Application number
PCT/KR2020/016991
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 한국전자통신연구원
Priority to CN202080074073.9A priority Critical patent/CN114600455A/zh
Priority to US17/773,747 priority patent/US20230007290A1/en
Priority to EP20893847.2A priority patent/EP4068783A4/en
Publication of WO2021107648A1 publication Critical patent/WO2021107648A1/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/103Selection of coding mode or of prediction mode
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/186Methods 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 colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/62Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding by frequency transforming in three dimensions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Definitions

  • the present disclosure relates to a method and apparatus for encoding/decoding an image, and more particularly, to a method and apparatus for encoding/decoding an image using a transform.
  • HD High Definition
  • UHD Ultra High Definition
  • Interprediction technology that predicts pixel values included in the current picture from pictures before or after the current picture with image compression technology
  • intra prediction technology that predicts pixel values included in the current picture using pixel information in the current picture
  • Various techniques exist such as transformation and quantization techniques for compressing the energy of the residual signal, entropy coding techniques that assign short codes to values with high frequency of occurrence and entropy coding techniques that assign long codes to values with low frequency of occurrence.
  • Image data can be effectively compressed and transmitted or stored.
  • an image encoding/decoding method and apparatus for determining at least one of a reduced quadratic transform/inverse transform matrix set, a reduced quadratic transform/inverse transform matrix, and whether to perform a reduced quadratic transform/inverse transform.
  • obtaining a transform skip mode flag indicating whether transform/inverse transform is skipped in a current block and when transform/inverse transform is omitted in the current block according to the transform skip mode flag, 2 in the current block determining that the difference transform/inverse transform is omitted, and, according to the transform skip mode flag, if the transform/inverse transform is not skipped in the current block, obtaining a transform matrix index for the quadratic transform/inverse transform of the current block, and , determining whether a quadratic transform/inverse transform is omitted in the current block according to the transform matrix index.
  • the obtaining of the transform skip mode flag may include obtaining a transform skip mode flag for a luminance component, a transform skip mode flag for a Cb component, and a transform skip mode flag for a Cr component.
  • the determining that the second-order transform/inverse transform is omitted in the current block may include, when the tree structure of the current block is a single tree type, a transform skip mode flag for the luminance component is set for the luminance component. indicates that the transform skip mode is applied, the transform skip mode flag for the Cb component indicates that the transform skip mode is applied for the Cb component, and the transform skip mode flag for the Cr component indicates that the transform skip mode is applied for the Cr component If indicated, it may be determined that the quadratic transform/inverse transform is omitted in the current block.
  • the determining that the secondary transformation/inverse transformation is omitted in the current block may include, when the tree structure of the current block is a double-tree luminance type, a transform skip mode flag for the luminance component is set to the luminance component. When it indicates that the transform skip mode is applied to the current block, it may be determined that the secondary transform/inverse transform is omitted for the current block.
  • the determining that the secondary transform/inverse transform is omitted in the current block may include, when the tree structure of the current block is a double tree color difference type, a transform skip mode flag for the Cb component is set to the Cb component. indicates that the transform skip mode is applied to , and the transform skip mode flag for the Cr component indicates that the transform skip mode is applied to the Cr component, it may be determined that the secondary transform/inverse transform is omitted for the current block.
  • the video decoding method includes determining a quadratic transform matrix of the current block according to the transform matrix index when a quadratic transform/inverse transform is applied to the current block, and the quadratic transform The method may further include applying a quadratic transform/inverse transform to the current block according to the matrix.
  • the determining of the quadratic transformation matrix of the current block includes:
  • the secondary transformation matrix of the current block may be determined according to at least one of the transformation matrix index, the transformation matrix set index of the current block, and the size of the current block.
  • the video decoding method includes: obtaining information on whether to use an intra-screen residual signal DPCM method with respect to the current block; and information on whether to use the intra-screen residual signal DPCM method in the current block and determining that transform/inverse transform is omitted in the current block when it indicates that the residual signal DPCM method is used, and the step of obtaining the transform skip mode flag includes: whether the in-screen residual signal DPCM method is used information is When it indicates that the intra-screen residual signal DPCM method is not used in the current block, the transform skip mode flag may be acquired.
  • the transformation matrix index for the quadratic transformation / inverse transformation of the current block is,
  • the current block is predicted according to the intra prediction mode instead of the matrix-based intra prediction mode, it may be obtained.
  • the determining whether the quadratic transform/inverse transform is omitted in the current block according to the transform matrix index may include: among the transform matrix index, the size of the current block, and the transform skip mode flag. It may be determined whether the quadratic transform/inverse transform is omitted in the current block according to at least one.
  • encoding a transform skip mode flag indicating whether transform/inverse transform is omitted in a current block and when transform/inverse transform is omitted in the current block according to the transform skip mode flag, 2 to the current block determining that the quadratic transform/inverse transform is omitted, and if the transform/inverse transform is not omitted in the current block, determining whether the quadratic transform/inverse transform is omitted in the current block, and performing the quadratic transform/inverse transform in the current block
  • a video encoding method including encoding a transform matrix index for the quadratic transform/inverse transform of the current block according to whether the inverse transform is omitted.
  • the encoding of the transform skip mode flag comprises:
  • a video encoding method characterized by encoding a transform skip mode flag for a luminance component, a transform skip mode flag for a Cb component, and a transform skip mode flag for a Cr component.
  • the determining that the second-order transform/inverse transform is omitted in the current block may include, when the tree structure of the current block is a single tree type, a transform skip mode flag for the luminance component is set for the luminance component. indicates that the transform/inverse transform is omitted, the transform skip mode flag for the Cb component indicates that the transform/inverse transform is omitted for the Cb component, and the transform skip mode flag for the Cr component indicates that the transform/inverse transform is omitted for the Cr component If indicated, it may be determined that the quadratic transform/inverse transform is omitted in the current block.
  • the determining that the quadratic transform/inverse transform is not applied to the current block may include, when the tree structure of the current block is a double-tree luminance type, the transform skip mode flag for the luminance component is luminance. When it indicates that the transform/inverse transform is omitted for the component, it may be determined that the quadratic transform/inverse transform is omitted in the current block.
  • the determining that the second-order transform/inverse transform is not applied to the current block may include, when the tree structure of the current block is a double-tree color difference type, the transform skip mode flag for the Cb component is Cb.
  • the transform skip mode flag for the Cr component indicates that the transform/inverse transform is omitted for the Cr component, it may be determined that the second-order transform/inverse transform is omitted for the current block.
  • the encoding of the transform matrix index may include determining a quadratic transformation matrix of the current block when a quadratic transform/inverse transform is applied to the current block, and a quadratic transform in the current block. Depending on whether /inverse transform is applied, the transform matrix index may be coded.
  • the determining of the secondary transformation matrix of the current block may include determining the secondary transformation matrix of the current block according to at least one of the transformation matrix index, the transformation matrix set index of the current block, and the size of the current block.
  • the transformation matrix can be determined.
  • the video encoding method includes encoding information on whether to use the intra-picture residual signal DPCM method with respect to the current block, and information on whether the intra-picture residual signal DPCM method is used in the current block is included in the current block. Determining that transform/inverse transform is omitted for the current block when indicating that the residual signal DPCM method is used, wherein the encoding of the transform skip mode flag includes: whether the intra-picture residual signal DPCM method is used information is When it indicates that the intra-screen residual signal DPCM method is not used in the current block, the transform skip mode flag may be encoded.
  • the encoding of the transformation matrix index for the quadratic transformation/inverse transformation of the current block may include, when the current block is predicted according to an intra prediction mode instead of a matrix-based intra prediction mode, the transform A matrix index can be coded.
  • the video encoding method includes a transform skip mode flag indicating whether transform/inverse transform is omitted in a current block encoding, when transform/inverse transform is omitted in the current block according to the transform skip mode flag, determining that a quadratic transform/inverse transform is omitted in the current block, and transform/inverse transform is performed in the current block If not omitted, it is determined whether the quadratic transform/inverse transform is omitted in the current block, and according to whether the quadratic transform/inverse transform is omitted in the current block, transform related to the quadratic transform/inverse transform of the current block.
  • a computer-readable recording medium comprising the step of encoding the matrix index.
  • the present disclosure provides a reduced second-order transformation/inverse transformation matrix set based on at least one of a one-dimensional transformation type, a two-dimensional transformation combination, and whether transformation is used based on an intra prediction mode, a prediction mode, a color component, a size, a shape, etc.
  • FIG. 1 is a block diagram illustrating a configuration of an encoding apparatus to which the present disclosure is applied according to an embodiment.
  • FIG. 2 is a block diagram illustrating a configuration of a decoding apparatus to which the present disclosure is applied according to an embodiment.
  • FIG. 3 is a diagram schematically illustrating a split structure of an image when encoding and decoding an image.
  • FIG. 4 is a diagram for explaining an embodiment of an intra prediction process.
  • 5 is a diagram for explaining an embodiment of an inter prediction process.
  • FIG. 6 is a diagram for explaining a process of transformation and quantization.
  • FIG. 7 is a diagram for describing reference samples usable for intra prediction.
  • FIG. 8 is a diagram for explaining an embodiment of a decoding method using the SDST method according to the present disclosure.
  • FIG. 9 is a diagram for explaining an embodiment of an encoding method using the SDST method according to the present disclosure.
  • 10 to 12 are diagrams for explaining embodiments of the first sub-block division mode according to the present disclosure.
  • FIG. 13 is a diagram for explaining an embodiment of a second sub-block division mode according to the present disclosure.
  • FIG. 14 is a diagram for describing an embodiment of a diagonal scan.
  • 15 is a diagram for explaining an embodiment of a horizontal scan.
  • 16 is a diagram for describing an embodiment of a vertical scan.
  • 17 is a diagram for describing an embodiment of a block-based diagonal scan.
  • 18 is a diagram for describing an embodiment of a block-based horizontal scan.
  • 19 is a diagram for describing an embodiment of a block-based vertical scan.
  • 20 is a diagram for explaining various embodiments of a scan based on the shape of a block.
  • 21 is a diagram for explaining an intra prediction mode.
  • 22 to 26 are examples of encoding/decoding methods and apparatuses using transforms according to an embodiment of the present disclosure, and examples of an encoding process or decoding process for implementing a recording medium storing a bitstream; to be.
  • FIG. 27 shows an embodiment in which a quadratic transform and/or a quadratic inverse transform is performed in an encoder/decoder.
  • FIG. 30 to 32 illustrate a plurality of embodiments in which a transformation matrix is derived according to a block size, a transformation matrix set index, and a transformation matrix index.
  • 33 to 36 show a syntax structure of a bitstream applied to an encoding/decoding method and apparatus using a transform and a recording medium storing the bitstream according to an embodiment of the present disclosure.
  • 37 to 54 provide various embodiments of a signaling condition of a transformation matrix index.
  • 55 illustrates a syntax structure of a bitstream applied to a method and apparatus for encoding/decoding using transform and a recording medium storing the bitstream according to an embodiment of the present disclosure.
  • FIG. 56 illustrates a video decoding method according to an embodiment.
  • 57 illustrates a video encoding method according to an embodiment.
  • obtaining a transform skip mode flag indicating whether transform/inverse transform is skipped in a current block and when transform/inverse transform is omitted in the current block according to the transform skip mode flag, 2 in the current block determining that the difference transform/inverse transform is omitted, and, according to the transform skip mode flag, if the transform/inverse transform is not skipped in the current block, obtaining a transform matrix index for the quadratic transform/inverse transform of the current block, and , determining whether a quadratic transform/inverse transform is omitted in the current block according to the transform matrix index.
  • first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another.
  • a first component may be referred to as a second component, and similarly, a second component may also be referred to as a first component. and/or includes a combination of a plurality of related listed items or any of a plurality of related listed items.
  • each component shown in the embodiment of the present disclosure are independently illustrated to represent different characteristic functions, and it does not mean that each component is formed of separate hardware or one software component. That is, each component is listed as each component for convenience of description, and at least two components of each component are combined to form one component, or one component can be divided into a plurality of components to perform a function, and each of these components Integrated embodiments and separate embodiments of the components are also included in the scope of the present disclosure without departing from the essence of the present disclosure.
  • Some components of the present disclosure are not essential components for performing an essential function in the present disclosure, but may be optional components for merely improving performance.
  • the present disclosure may be implemented by including only essential components to implement the essence of the present disclosure except for components used for performance improvement, and a structure including only essential components excluding optional components used for performance improvement Also included in the scope of the present disclosure.
  • an image may mean a single picture constituting a video, or may indicate a video itself.
  • "encoding and/or decoding of an image” may mean “encoding and/or decoding of a video”, and may mean “encoding and/or decoding of one image among images constituting a video”.
  • moving image and “video” may be used interchangeably and may be used interchangeably.
  • the target image may be an encoding target image to be encoded and/or a decoding target image to be decoded.
  • the target image may be an input image input to the encoding apparatus or may be an input image input to the decoding apparatus.
  • the target image may have the same meaning as the current image.
  • image image
  • picture image
  • frame image
  • screen image
  • the target block may be an encoding target block to be encoded and/or a decoding target block to be decoded.
  • the target block may be a current block that is a target of current encoding and/or decoding.
  • target block and current block may be used interchangeably and may be used interchangeably.
  • block and “unit” may be used with the same meaning, and may be used interchangeably. Or “block” may indicate a specific unit.
  • region and “segment” may be used interchangeably.
  • a specific signal may be a signal representing a specific block.
  • the original signal may be a signal representing the target block.
  • a prediction signal may be a signal indicating a prediction block.
  • the residual signal may be a signal indicating a residual block.
  • a residual block may mean a residual block.
  • each of the specified information, data, flags, indexes and elements, attributes, etc. may have a value.
  • the value “0” of information, data, flags, indexes and elements, attributes, etc. may represent logical false or a first predefined value. In other words, the value "0", false, logical false and the first predefined value may be used interchangeably.
  • the value “1” of information, data, flags, indexes and elements, attributes, etc. may represent logical true or a second predefined value. In other words, the value "1", true, logical true and the second predefined value may be used interchangeably.
  • an index may have the same meaning as an index.
  • i When a variable such as i or j is used to indicate a row, column, or index, the value of i may be an integer of 0 or more, or an integer of 1 or more. That is, in embodiments, rows, columns and indexes, etc. may be counted from 0, and may be counted from 1.
  • Encoder refers to a device that performs encoding. That is, it may mean an encoding device.
  • Decoder refers to a device that performs decoding. That is, it may mean a decoding device.
  • M and N may mean positive integer values, and a block may mean a sample array in a two-dimensional form.
  • a block may mean a unit.
  • the current block may mean an encoding object block to be encoded during encoding and a decoding object block to be a decoding object during decoding. Also, the current block may be at least one of a coding block, a prediction block, a residual block, and a transform block.
  • Sample A basic unit that composes a block. It may be expressed as a value ranging from 0 to 2Bd - 1 according to the bit depth (Bd).
  • a sample may be used synonymously with a pixel or a pixel. That is, a sample, a pixel, and a pixel may have the same meaning.
  • Unit It may mean a unit of image encoding and decoding.
  • a unit may be a region obtained by dividing one image.
  • the unit may mean a divided unit when encoding or decoding an image by dividing it into subdivided units. That is, one image may be divided into a plurality of units.
  • a process predefined for each unit may be performed.
  • One unit may be further divided into sub-units having a smaller size compared to the unit.
  • the unit is a block, a macroblock, a coding tree unit, a coding tree block, a coding unit, a coding unit, a coding block, and a prediction.
  • a unit may mean a unit (Prediction Unit), a prediction block (Prediction Block), a residual unit (Residual Unit), a residual block (Residual Block), a transform unit (Transform Unit), a transform block (Transform Block), and the like.
  • a unit may mean including a luminance (Luma) component block, a chroma component block corresponding thereto, and syntax elements for each block in order to be distinguished from the block.
  • the unit may have various sizes and shapes, and in particular, the shape of the unit may include not only a square, but also a geometric figure that can be expressed in two dimensions, such as a rectangle, a trapezoid, a triangle, and a pentagon.
  • the unit information may include at least one of a unit type indicating a coding unit, a prediction unit, a residual unit, a transform unit, etc., a size of a unit, a depth of a unit, an order of encoding and decoding of the unit, and the like.
  • Coding Tree Unit Consists of two chrominance component (Cb, Cr) coding tree blocks related to one luminance component (Y) coding tree block. Also, it may mean including the blocks and syntax elements for each block.
  • Each coding tree unit uses one or more split methods such as a quad tree, a binary tree, and a ternary tree to configure subunits such as a coding unit, a prediction unit, and a transform unit. can be divided.
  • split methods such as a quad tree, a binary tree, and a ternary tree to configure subunits such as a coding unit, a prediction unit, and a transform unit. can be divided.
  • the quad tree may mean a quarternary tree.
  • the predetermined range may be defined as at least one of a maximum size and a minimum size of a coding block that can be split only by a quadtree.
  • Information indicating the maximum/minimum size of a coding block that is allowed to split in a quadtree format may be signaled through a bitstream, and the information is provided in units of at least one of a sequence, a picture parameter, a tile group, or a slice (segment). may be signaled.
  • the maximum/minimum size of the coding block may be a fixed size preset in the encoder/decoder.
  • the size of the coding block corresponds to 256x256 to 64x64, it may be possible to split only into a quadtree.
  • the size of the coding block is larger than the size of the maximum transform block, splitting may be possible only in a quadtree.
  • the divided block may be at least one of a coding block and a transform block.
  • the information (eg, split_flag) indicating the division of the coding block may be a flag indicating whether the quadtree is divided.
  • Coding tree block may be used as a term to refer to any one of a Y coding tree block, a Cb coding tree block, and a Cr coding tree block.
  • Neighbor block may mean a block adjacent to the current block.
  • a block adjacent to the current block may mean a block bordering the current block or a block located within a predetermined distance from the current block.
  • the neighboring block may mean a block adjacent to the vertex of the current block.
  • the block adjacent to the vertex of the current block may be a block vertically adjacent to a neighboring block horizontally adjacent to the current block or a block horizontally adjacent to a vertical neighbor block vertically adjacent to the current block.
  • the neighboring block may mean a reconstructed neighboring block.
  • Reconstructed Neighbor Block It may mean a neighboring block that has already been encoded or decoded spatially/temporally around the current block.
  • the restored neighboring block may mean a restored neighboring unit.
  • the reconstructed spatial neighboring block may be a block in the current picture and a block already reconstructed through encoding and/or decoding.
  • the reconstructed temporal neighboring block may be a reconstructed block or a neighboring block at a position corresponding to the current block of the current picture in the reference image.
  • Unit Depth It may mean the degree to which the unit is divided.
  • the highest node (Root Node) may correspond to the first undivided unit.
  • the highest node may be referred to as a root node.
  • the highest node may have a minimum depth value. In this case, the highest node may have a depth of level 0.
  • a node with a depth of level 1 may represent a unit created as the original unit is split once.
  • a node with a depth of level 2 may represent a unit generated as the original unit is split twice.
  • a node having a depth of level n may represent a unit generated as the original unit is divided n times.
  • a leaf node may be the lowest node, and may be a node that cannot be further divided.
  • the depth of the leaf node may be the maximum level.
  • the predefined value of the maximum level may be three.
  • the root node can be said to have the shallowest depth, and the leaf node can be said to have the deepest depth.
  • the level at which the unit is present may mean the unit depth.
  • Bitstream may mean a string of bits including encoded image information.
  • Parameter Set Corresponds to header information among structures in the bitstream. At least one of a video parameter set, a sequence parameter set, a picture parameter set, and an adaptation parameter set may be included in the parameter set.
  • the parameter set may include tile group, slice header, and tile header information.
  • the tile group may mean a group including several tiles, and may have the same meaning as a slice.
  • the adaptation parameter set may refer to a parameter set that can be shared by referring to different pictures, subpictures, slices, tile groups, tiles, or bricks. Also, in a subpicture, slice, tile group, tile, or brick within a picture, different adaptation parameter sets may be referred to and information in the adaptation parameter set may be used.
  • adaptation parameter sets may refer to different adaptation parameter sets using identifiers of different adaptation parameter sets in a subpicture, slice, tile group, tile, or brick within a picture.
  • adaptation parameter sets may refer to different adaptation parameter sets using identifiers of different adaptation parameter sets in a slice, a tile group, a tile, or a brick in a subpicture.
  • adaptation parameter sets may refer to different adaptation parameter sets by using identifiers of different adaptation parameter sets in a tile in a slice or in a brick.
  • adaptation parameter sets may refer to different adaptation parameter sets using identifiers of different adaptation parameter sets in a brick within a tile.
  • the adaptation parameter set corresponding to the corresponding adaptation parameter set identifier may be used in the subpicture.
  • the adaptation parameter set corresponding to the corresponding adaptation parameter set identifier may be used in the tile.
  • the adaptation parameter set corresponding to the corresponding adaptation parameter set identifier can be used in the brick.
  • the picture may be divided into one or more tile rows and one or more tile columns.
  • the subpicture may be divided into one or more tile rows and one or more tile columns within the picture.
  • the subpicture is an area having a rectangular/square shape within the picture, and may include one or more CTUs. Also, at least one tile/brick/slice may be included in one subpicture.
  • the tile is an area having a rectangular/square shape in a picture, and may include one or more CTUs. Also, a tile may be divided into one or more bricks.
  • the brick may mean one or more CTU rows in a tile.
  • a tile may be divided into one or more bricks, and each brick may have at least one or more CTU rows.
  • a tile that is not divided into two or more may also mean a brick.
  • the slice may include one or more tiles in a picture, and may include one or more bricks in a tile.
  • Parsing may mean determining a value of a syntax element by entropy-decoding a bitstream, or may mean entropy decoding itself.
  • Symbol may mean at least one of a syntax element of an encoding/decoding target unit, a coding parameter, and a value of a transform coefficient. Also, the symbol may mean an object of entropy encoding or a result of entropy decoding.
  • Prediction Mode This may be information indicating a mode in which encoding/decoding is performed by intra prediction or a mode in which encoding/decoding is performed by inter prediction.
  • Prediction unit may refer to a basic unit for performing prediction, such as inter prediction, intra prediction, inter screen compensation, intra screen compensation, and motion compensation.
  • One prediction unit may be divided into a plurality of partitions having a smaller size or a plurality of sub-prediction units.
  • a plurality of partitions may also be a basic unit in performing prediction or compensation.
  • a partition generated by division of a prediction unit may also be a prediction unit.
  • Prediction unit partition may refer to a form in which a prediction unit is divided.
  • Reference picture list may refer to a list including one or more reference pictures used for inter prediction or motion compensation.
  • the type of the reference image list may include LC (List Combined), L0 (List 0), L1 (List 1), L2 (List 2), L3 (List 3), etc. Lists may be used.
  • Inter Prediction Indicator It may mean an inter prediction direction (unidirectional prediction, bidirectional prediction, etc.) of the current block. Alternatively, it may mean the number of reference images used when generating a prediction block of the current block. Alternatively, it may mean the number of prediction blocks used when inter prediction or motion compensation is performed on the current block.
  • Prediction list utilization flag Indicates whether a prediction block is generated by using at least one reference picture in a specific reference picture list.
  • An inter prediction indicator may be derived using the prediction list usage flag, and conversely, a prediction list usage flag may be derived using the inter prediction indicator. For example, when the prediction list utilization flag indicates a first value of 0, it may indicate that a prediction block is not generated by using a reference image in the corresponding reference picture list, and when indicating a second value of 1, the reference It may indicate that a prediction block can be generated using the image list.
  • Reference picture index may mean an index indicating a specific reference picture in the reference picture list.
  • Reference picture It may mean a picture referenced by a specific block for inter prediction or motion compensation.
  • the reference image may be an image including a reference block referenced by the current block for inter prediction or motion compensation.
  • reference picture and reference image may be used with the same meaning, and may be used interchangeably.
  • Motion vector may be a two-dimensional vector used for inter prediction or motion compensation.
  • the motion vector may mean an offset between an encoding/decoding object block and a reference block.
  • (mvX, mvY) may represent a motion vector.
  • mvX may represent a horizontal component
  • mvY may represent a vertical component.
  • the search range may be a two-dimensional area in which a motion vector is searched during inter prediction.
  • the size of the search area may be MxN.
  • M and N may each be a positive integer.
  • Motion Vector Candidate When a motion vector is predicted, it may mean a block that becomes a prediction candidate or a motion vector of the block. Also, the motion vector candidate may be included in the motion vector candidate list.
  • Motion Vector Candidate List may refer to a list constructed using one or more motion vector candidates.
  • Motion Vector Candidate Index may refer to an indicator indicating a motion vector candidate in the motion vector candidate list. It may be an index of a motion vector predictor.
  • Motion information at least among motion vector, reference image index, inter prediction indicator as well as prediction list utilization flag, reference image list information, reference image, motion vector candidate, motion vector candidate index, merge candidate, merge index, etc. It may mean information including one.
  • Merge Candidate List may refer to a list constructed using one or more merge candidates.
  • Merge Candidate It may mean a spatial merge candidate, a temporal merge candidate, a combined merge candidate, a combination bi-prediction merge candidate, a zero merge candidate, and the like.
  • the merge candidate may include motion information such as an inter prediction indicator, a reference image index for each list, a motion vector, a prediction list use flag, and an inter prediction indicator.
  • Merge Index may refer to an indicator indicating a merge candidate in the merge candidate list.
  • the merge index may indicate a block from which a merge candidate is derived from among blocks reconstructed to be adjacent to the current block spatially/temporally.
  • the merge index may indicate at least one of motion information of the merge candidate.
  • Transform unit may refer to a basic unit for performing residual signal encoding/decoding, such as transform, inverse transform, quantization, inverse quantization, and transform coefficient encoding/decoding.
  • One transform unit may be divided into a plurality of sub-transform units having smaller sizes.
  • the transform/inverse transform may include at least one of a first-order transform/inverse transform and a second-order transform/inverse transform.
  • Scaling may refer to a process of multiplying a quantized level by a factor.
  • a transform coefficient may be generated as a result of scaling to the quantized level.
  • Scaling may also be referred to as dequantization.
  • Quantization parameter may refer to a value used when generating a quantized level using a transform coefficient in quantization. Alternatively, it may mean a value used to generate transform coefficients by scaling a quantized level in inverse quantization.
  • the quantization parameter may be a value mapped to a quantization step size.
  • Residual quantization parameter may mean a difference value between a predicted quantization parameter and a quantization parameter of an encoding/decoding target unit.
  • Scan may refer to a method of arranging the order of coefficients in units, blocks, or matrices. For example, sorting a two-dimensional array into a one-dimensional array is called a scan. Alternatively, arranging the one-dimensional array in the form of a two-dimensional array may also be referred to as scan or inverse scan.
  • Transform coefficient may mean a coefficient value generated after the encoder performs transformation. Alternatively, it may mean a coefficient value generated after the decoder performs at least one of entropy decoding and inverse quantization. A quantized level obtained by applying quantization to a transform coefficient or a residual signal or a quantized transform coefficient level may also be included in the meaning of the transform coefficient.
  • Quantized level may mean a value generated by performing quantization on a transform coefficient or a residual signal in an encoder. Alternatively, it may mean a value subject to inverse quantization before performing inverse quantization in the decoder. Similarly, a quantized transform coefficient level that is a result of transform and quantization may also be included in the meaning of a quantized level.
  • Non-zero transform coefficient may mean a transform coefficient whose value is not 0, or a transform coefficient level whose value is not 0, or a quantized level.
  • Quantization matrix may refer to a matrix used in a quantization or inverse quantization process to improve subjective or objective image quality of an image.
  • the quantization matrix may also be referred to as a scaling list.
  • Quantization matrix coefficient may mean each element in a quantization matrix.
  • the quantization matrix coefficient may also be referred to as a matrix coefficient.
  • Default matrix may mean a predetermined quantization matrix predefined in the encoder and the decoder.
  • Non-default matrix It may mean a quantization matrix that is not predefined in an encoder and a decoder and is signaled by a user.
  • Statistical value Statistical values for at least one variable, encoding parameter, constant, etc. having specific operable values are the average, sum, weighted average, weighted sum, minimum, maximum, mode, and median values of the specific values. , may be at least one of an interpolation value.
  • FIG. 1 is a block diagram illustrating a configuration of an encoding apparatus to which the present disclosure is applied according to an embodiment.
  • the encoding apparatus 100 may be an encoder, a video encoding apparatus, or an image encoding apparatus.
  • a video may include one or more images.
  • the encoding apparatus 100 may sequentially encode one or more images.
  • the encoding apparatus 100 includes a motion prediction unit 111 , a motion compensation unit 112 , an intra prediction unit 120 , a switch 115 , a subtractor 125 , a transform unit 130 , and a quantization unit. It may include a unit 140 , an entropy encoder 150 , an inverse quantizer 160 , an inverse transform unit 170 , an adder 175 , a filter unit 180 , and a reference picture buffer 190 .
  • the encoding apparatus 100 may encode an input image in an intra mode and/or an inter mode. Also, the encoding apparatus 100 may generate a bitstream including encoded information through encoding of an input image, and may output the generated bitstream. The generated bitstream may be stored in a computer-readable recording medium, or may be streamed through a wired/wireless transmission medium.
  • the switch 115 When the intra mode is used as the prediction mode, the switch 115 may be switched to the intra mode, and when the inter mode is used as the prediction mode, the switch 115 may be switched to the inter mode.
  • the intra mode may mean an intra prediction mode
  • the inter mode may mean an inter prediction mode.
  • the encoding apparatus 100 may generate a prediction block for the input block of the input image.
  • the encoding apparatus 100 may encode the residual block using a residual between the input block and the prediction block.
  • the input image may be referred to as a current image that is a current encoding target.
  • the input block may be referred to as a current block that is a current encoding target or an encoding object block.
  • the intra prediction unit 120 may use a sample of a block already encoded/decoded around the current block as a reference sample.
  • the intra prediction unit 120 may perform spatial prediction on the current block by using the reference sample, and may generate prediction samples for the input block through spatial prediction.
  • intra prediction may mean intra prediction.
  • the motion prediction unit 111 may search for a region that best matches the input block from the reference image in the motion prediction process, and may derive a motion vector using the searched region. .
  • a search area may be used as the area.
  • the reference image may be stored in the reference picture buffer 190 .
  • it when encoding/decoding of the reference image is processed, it may be stored in the reference picture buffer 190 .
  • the motion compensator 112 may generate a prediction block for the current block by performing motion compensation using a motion vector.
  • inter prediction may mean inter prediction or motion compensation.
  • the motion predictor 111 and the motion compensator 112 may generate a prediction block by applying an interpolation filter to a partial region in the reference image when the value of the motion vector does not have an integer value.
  • the motion prediction and motion compensation methods of the prediction unit included in the corresponding coding unit based on the coding unit are Skip Mode, Merge Mode, and Enhanced Motion Vector Prediction ( It may be determined whether the method is an Advanced Motion Vector Prediction (AMVP) mode or a current picture reference mode, and inter-screen prediction or motion compensation may be performed according to each mode.
  • AMVP Advanced Motion Vector Prediction
  • the subtractor 125 may generate a residual block using the difference between the input block and the prediction block.
  • the residual block may be referred to as a residual signal.
  • the residual signal may mean a difference between the original signal and the predicted signal.
  • the residual signal may be a signal generated by transforming, quantizing, or transforming and quantizing a difference between the original signal and the predicted signal.
  • the residual block may be a residual signal in block units.
  • the transform unit 130 may generate a transform coefficient by performing a transform on the residual block, and may output the generated transform coefficient.
  • the transform coefficient may be a coefficient value generated by performing transform on the residual block.
  • the transform unit 130 may skip transform on the residual block.
  • a quantized level may be generated by applying quantization to the transform coefficients or the residual signal.
  • a quantized level may also be referred to as a transform coefficient.
  • the quantization unit 140 may generate a quantized level by quantizing a transform coefficient or a residual signal according to a quantization parameter, and may output the generated quantized level. In this case, the quantization unit 140 may quantize the transform coefficients using a quantization matrix.
  • the entropy encoding unit 150 may generate a bitstream by performing entropy encoding according to a probability distribution on the values calculated by the quantization unit 140 or coding parameter values calculated in the encoding process. and can output a bitstream.
  • the entropy encoding unit 150 may perform entropy encoding on information about a sample of an image and information for decoding an image. For example, information for decoding an image may include a syntax element or the like.
  • the entropy encoder 150 may use an encoding method such as exponential Golomb, Context-Adaptive Variable Length Coding (CAVLC), or Context-Adaptive Binary Arithmetic Coding (CABAC) for entropy encoding.
  • CAVLC Context-Adaptive Variable Length Coding
  • CABAC Context-Adaptive Binary Arithmetic Coding
  • the entropy encoding unit 150 may perform entropy encoding using a Variable Length Coding/Code (VLC) table.
  • VLC Variable Length Coding/Code
  • the entropy encoder 150 derives a binarization method of a target symbol and a probability model of a target symbol/bin, and then derives a binarization method, a probability model, and a context model. can also be used to perform arithmetic encoding.
  • the entropy encoder 150 may change a two-dimensional block form coefficient into a one-dimensional vector form through a transform coefficient scanning method in order to encode a transform coefficient level (a quantized level).
  • Coding parameters such as syntax elements, may include information (flags, indexes, etc.) that is encoded in the encoder and signaled to the decoder, as well as information derived from the encoding process or decoding process. It can mean the information you need when you need it.
  • signaling the flag or index may mean entropy-encoding the flag or index and including the flag or index in the bitstream, and the decoder extracts the flag or index from the bitstream. It may mean entropy decoding.
  • the encoded current image may be used as a reference image for another image to be processed later. Accordingly, the encoding apparatus 100 may reconstruct or decode the encoded current image, and store the restored or decoded image as a reference image in the reference picture buffer 190 .
  • the quantized level may be dequantized by the dequantization unit 160 .
  • An inverse transform may be performed in the inverse transform unit 170 .
  • the inverse quantized and/or inverse transformed coefficients may be summed with the prediction block through the adder 175.
  • a reconstructed block may be generated by summing the inverse quantized and/or inverse transformed coefficients and the prediction block.
  • the inverse quantized and/or inverse transformed coefficient means a coefficient on which at least one of inverse quantization and inverse transform is performed, and may mean a reconstructed residual block.
  • the reconstruction block may pass through the filter unit 180 .
  • the filter unit 180 applies at least one of a deblocking filter, a sample adaptive offset (SAO), an adaptive loop filter (ALF), etc. to a reconstructed sample, a reconstructed block or a reconstructed image. can be applied.
  • the filter unit 180 may be referred to as an in-loop filter.
  • the deblocking filter may remove block distortion occurring at the boundary between blocks.
  • it may be determined whether to apply the deblocking filter to the current block based on samples included in several columns or rows included in the block.
  • different filters can be applied according to the required deblocking filtering strength.
  • An appropriate offset value may be added to the sample value in order to compensate for the encoding error using the sample adaptive offset.
  • the sample adaptive offset may correct an offset from the original image in units of samples with respect to the image on which the deblocking has been performed.
  • a method of dividing a sample included in an image into a certain number of regions, determining a region to be offset, and applying the offset to the region, or a method of applying the offset in consideration of edge information of each sample may be used.
  • the adaptive loop filter may perform filtering based on a value obtained by comparing the reconstructed image and the original image. After dividing a sample included in an image into a predetermined group, a filter to be applied to the corresponding group may be determined, and filtering may be performed differentially for each group. Information related to whether to apply the adaptive loop filter may be signaled for each coding unit (CU), and the shape and filter coefficients of the adaptive loop filter to be applied may vary according to each block.
  • CU coding unit
  • the reconstructed block or reconstructed image that has passed through the filter unit 180 may be stored in the reference picture buffer 190 .
  • the reconstructed block passing through the filter unit 180 may be a part of the reference image.
  • the reference image may be a reconstructed image composed of reconstructed blocks that have passed through the filter unit 180 .
  • the stored reference image may then be used for inter-screen prediction or motion compensation.
  • FIG. 2 is a block diagram illustrating a configuration of a decoding apparatus to which the present disclosure is applied according to an embodiment.
  • the decoding apparatus 200 may be a decoder, a video decoding apparatus, or an image decoding apparatus.
  • the decoding apparatus 200 includes an entropy decoding unit 210 , an inverse quantization unit 220 , an inverse transform unit 230 , an intra prediction unit 240 , a motion compensator 250 , and an adder 255 .
  • a filter unit 260 and a reference picture buffer 270 may be included.
  • the decoding apparatus 200 may receive the bitstream output from the encoding apparatus 100 .
  • the decoding apparatus 200 may receive a bitstream stored in a computer-readable recording medium or a bitstream streamed through a wired/wireless transmission medium.
  • the decoding apparatus 200 may perform decoding on the bitstream in an intra mode or an inter mode. Also, the decoding apparatus 200 may generate a reconstructed image or a decoded image through decoding, and may output the reconstructed image or the decoded image.
  • the switch When the prediction mode used for decoding is the intra mode, the switch may be switched to the intra mode.
  • the prediction mode used for decoding is the inter mode, the switch may be switched to the inter mode.
  • the decoding apparatus 200 may obtain a reconstructed residual block by decoding the input bitstream, and may generate a prediction block. When the reconstructed residual block and the prediction block are obtained, the decoding apparatus 200 may generate a reconstructed block to be decoded by adding the reconstructed residual block and the prediction block.
  • the decoding object block may be referred to as a current block.
  • the entropy decoding unit 210 may generate symbols by performing entropy decoding according to a probability distribution on the bitstream.
  • the generated symbols may include symbols in the form of quantized levels.
  • the entropy decoding method may be a reverse process of the entropy encoding method described above.
  • the entropy decoding unit 210 may change a one-dimensional vector form coefficient into a two-dimensional block form through a transform coefficient scanning method in order to decode a transform coefficient level (a quantized level).
  • the quantized level may be inverse quantized by the inverse quantizer 220 and inversely transformed by the inverse transform unit 230 .
  • the quantized level may be generated as a reconstructed residual block as a result of performing inverse quantization and/or inverse transformation.
  • the inverse quantizer 220 may apply a quantization matrix to the quantized level.
  • the intra prediction unit 240 may generate a prediction block by performing spatial prediction using sample values of an already decoded block around the decoding object block on the current block.
  • the motion compensator 250 may generate a prediction block by performing motion compensation on the current block using a motion vector and a reference image stored in the reference picture buffer 270 .
  • the motion compensator 250 may generate a prediction block by applying an interpolation filter to a partial region in the reference image.
  • the adder 255 may generate a reconstructed block by adding the reconstructed residual block and the prediction block.
  • the filter unit 260 may apply at least one of a deblocking filter, a sample adaptive offset, and an adaptive loop filter to the reconstructed block or the reconstructed image.
  • the filter unit 260 may output a reconstructed image.
  • the reconstructed block or reconstructed image may be stored in the reference picture buffer 270 and used for inter prediction.
  • the reconstructed block passing through the filter unit 260 may be a part of the reference image.
  • the reference image may be a reconstructed image composed of reconstructed blocks that have passed through the filter unit 260 .
  • the stored reference image may then be used for inter-screen prediction or motion compensation.
  • FIG. 3 is a diagram schematically illustrating a split structure of an image when encoding and decoding an image. 3 schematically shows an embodiment in which one unit is divided into a plurality of sub-units.
  • a coding unit may be used in encoding and decoding.
  • An encoding unit may be used as a basic unit of image encoding/decoding. Also, when encoding/decoding an image, an encoding unit may be used as a unit for dividing an intra prediction mode and an inter prediction mode.
  • the encoding unit may be a basic unit used for a process of prediction, transformation, quantization, inverse transformation, inverse quantization, or encoding/decoding of transform coefficients.
  • an image 300 is sequentially divided in units of a Largest Coding Unit (LCU), and a division structure is determined in units of LCUs.
  • LCU may be used in the same meaning as a Coding Tree Unit (CTU).
  • the division of a unit may mean division of a block corresponding to the unit.
  • the block division information may include information about the depth of the unit.
  • the depth information may indicate the number and/or degree to which a unit is divided.
  • One unit may be hierarchically divided into a plurality of sub-units with depth information based on a tree structure. In other words, a unit and a sub-unit generated by division of the unit may correspond to a node and a child node of the node, respectively.
  • Each divided sub-unit may have depth information.
  • the depth information may be information indicating the size of a CU, and may be stored for each CU. Since the unit depth indicates the number and/or degree to which the unit is divided, the division information of the sub-unit may include information about the size of the sub-unit.
  • the split structure may mean a distribution of coding units (CUs) within the CTU 310 .
  • CUs coding units
  • Such a distribution may be determined according to whether one CU is divided into a plurality of CUs (a positive integer of 2 or more including 2, 4, 8, 16, etc.).
  • the horizontal size and vertical size of the CU created by division are half the horizontal size and half the vertical size of the CU before division, respectively, or a size smaller than the horizontal size and vertical size of the CU before division according to the number of divisions.
  • a CU may be recursively divided into a plurality of CUs.
  • the recursive division at least one of a horizontal size and a vertical size of the divided CU may be reduced compared to at least one of a horizontal size and a vertical size of the CU before division.
  • the division of a CU may be made recursively up to a predefined depth or a predefined size.
  • the depth of the CTU may be 0, and the depth of a Smallest Coding Unit (SCU) may be a predefined maximum depth.
  • the CTU may be a coding unit having the largest coding unit size as described above, and the SCU may be a coding unit having the smallest coding unit size.
  • the division starts from the CTU 310, and the depth of the CU increases by 1 whenever the horizontal size and/or the vertical size of the CU is reduced by the division.
  • an undivided CU may have a size of 2Nx2N.
  • a CU having a size of 2Nx2N may be divided into four CUs having a size of NxN. The size of N can be halved for each increase in depth by 1.
  • information on whether a CU is split may be expressed through split information of the CU.
  • the division information may be 1-bit information. All CUs except for the SCU may include partition information. For example, if the value of the partitioning information is a first value, the CU may not be partitioned, and if the value of the partitioning information is a second value, the CU may be partitioned.
  • a CTU having a depth of 0 may be a 64x64 block. 0 may be the minimum depth.
  • An SCU of depth 3 may be an 8x8 block. 3 may be the maximum depth.
  • a CU of a 32x32 block and a 16x16 block may be expressed as depth 1 and depth 2, respectively.
  • the horizontal and vertical sizes of the divided 4 coding units may have half sizes compared to the horizontal and vertical sizes of the coding units before splitting. have.
  • each of the divided 4 coding units may have a size of 16x16.
  • quad-tree quad-tree partition
  • the horizontal or vertical size of the two split coding units may have a half size compared to the horizontal or vertical size of the coding unit before splitting.
  • each of the two split coding units may have a size of 16x32.
  • the two split coding units may each have a size of 8x16.
  • the coding unit when one coding unit is split into three coding units, it is possible to divide the coding unit into three coding units by dividing the horizontal or vertical size of the coding unit at a ratio of 1:2:1 before being split.
  • the three split coding units when a 16x32 coding unit is horizontally split into three coding units, the three split coding units may have sizes of 16x8, 16x16, and 16x8, respectively, from the top.
  • the three split coding units when a 32x32 coding unit is vertically split into three coding units, the three split coding units may have sizes of 8x32, 16x32, and 8x32, respectively, from the left.
  • the coding unit is divided (ternary-tree partition) in the form of a ternary-tree.
  • the CTU 320 of FIG. 3 is an example of a CTU to which quad-tree partitioning, binary tree partitioning, and 3-parting-tree partitioning are all applied.
  • quadtree splitting may be preferentially applied to the CTU.
  • a coding unit that can no longer be divided into a quadtree may correspond to a leaf node of the quadtree.
  • a coding unit corresponding to a leaf node of a quadtree may be a root node of a binary tree and/or a three-part tree. That is, the coding unit corresponding to the leaf node of the quadtree may be split into a binary tree, split into three trees, or be no longer split.
  • the division of the coding unit corresponding to each node of the quadtree may be signaled using quad division information.
  • Quad division information having a first value (eg, '1') may indicate that the corresponding coding unit is divided into a quadtree.
  • the quad partition information having a second value (eg, '0') may indicate that the corresponding coding unit is not divided into a quadtree.
  • the quad division information may be a flag having a predetermined length (eg, 1 bit).
  • a coding unit corresponding to a leaf node of a quadtree may be split into a binary tree or a split tree into three.
  • a coding unit generated by binary tree splitting or split tree splitting may be split again into binary tree or split tree, or may not be split anymore.
  • Partitioning in the case where there is no priority between binary tree partitioning and 3-parting tree partitioning may be referred to as a multi-type tree partitioning. That is, a coding unit corresponding to a leaf node of a quadtree may be a root node of a multi-type tree.
  • the division of the coding unit corresponding to each node of the complex tree may be signaled using at least one of information on whether the complex tree is split, split direction information, and split tree information.
  • information on whether to split, split direction information, and split tree information may be sequentially signaled.
  • Information on whether the complex tree having the first value (eg, '1') is split may indicate that the corresponding coding unit is split into the complex tree.
  • Information on whether the complex tree having the second value (eg, '0') is split may indicate that the corresponding coding unit is not split into the complex tree.
  • the corresponding coding unit may further include split direction information.
  • the division direction information may indicate a division direction of the composite tree division.
  • the division direction information having the first value (eg, '1') may indicate that the corresponding coding unit is divided in the vertical direction.
  • the split direction information having the second value (eg, '0') may indicate that the corresponding coding unit is split in the horizontal direction.
  • the corresponding coding unit may further include split tree information.
  • the split tree information may indicate a tree used for splitting the complex tree.
  • the split tree information having a first value (eg, '1') may indicate that the corresponding coding unit is split into a binary tree.
  • the split tree information having a second value (eg, '0') may indicate that the corresponding coding unit is split into three split trees.
  • the division information, division tree information, and division direction information may each be flags having a predetermined length (eg, 1 bit).
  • At least one of quad partition information, information on whether the complex tree is split or not, split direction information, and split tree information may be entropy-encoded/decoded.
  • information of a neighboring encoding unit adjacent to the current encoding unit may be used.
  • context information for entropy encoding/decoding of information of the current encoding unit may be derived based on the information of the neighboring encoding unit.
  • the information on the neighboring coding unit may include at least one of quad split information of the corresponding coding unit, information on whether the complex tree is split, split direction information, and split tree information.
  • the binary tree splitting may be performed preferentially among the binary tree splitting and the three splitting tree splitting. That is, binary tree splitting may be applied first, and a coding unit corresponding to a leaf node of the binary tree may be set as a root node of the three-part tree. In this case, quadtree splitting and binary tree splitting may not be performed on the coding unit corresponding to the node of the split tree.
  • a coding unit that is no longer split by quadtree splitting, binary tree splitting, and/or three split tree splitting may be a unit of encoding, prediction, and/or transformation. That is, the coding unit may not be split further for prediction and/or transformation. Accordingly, a splitting structure, splitting information, and the like for splitting a coding unit into a prediction unit and/or a transform unit may not exist in the bitstream.
  • the corresponding coding unit may be recursively split until it becomes equal to or smaller than the size of the maximum transform block.
  • the coding unit may be divided into four 32x32 blocks for transformation.
  • the coding unit may be divided into two 32x32 blocks for transformation.
  • whether the encoding unit for transformation is divided is not separately signaled, and may be determined by comparing the width or length of the encoding unit and the width or length of the largest transform block. For example, when the width of the coding unit is greater than the width of the largest transform block, the coding unit may be vertically bisected. Also, when the length of the coding unit is greater than the length of the maximum transform block, the coding unit may be horizontally bisected.
  • Information about the maximum and/or minimum size of the encoding unit and information about the maximum and/or minimum size of the transform block may be signaled or determined at a higher level of the encoding unit.
  • the higher level may be, for example, a sequence level, a picture level, a tile level, a tile group level, a slice level, and the like.
  • the minimum size of the coding unit may be determined to be 4x4.
  • the maximum size of the transform block may be determined to be 64x64.
  • the minimum size of the transform block may be determined to be 4x4.
  • Information on the minimum size (quad tree minimum size) of the coding unit corresponding to the leaf node of the quadtree and/or the maximum depth from the root node to the leaf node of the complex tree (composite tree maximum depth) is encoded It may be signaled or determined at a higher level of the unit.
  • the higher level may be, for example, a sequence level, a picture level, a slice level, a tile group level, a tile level, and the like.
  • the information on the minimum size of the quadtree and/or the information on the maximum depth of the complex tree may be signaled or determined for each of an intra-picture slice and an inter-picture slice.
  • Difference information between the size of the CTU and the maximum size of the transform block may be signaled or determined at a higher level of the coding unit.
  • the higher level may be, for example, a sequence level, a picture level, a slice level, a tile group level, a tile level, and the like.
  • Information on the maximum size (the maximum size of the binary tree) of the encoding unit corresponding to each node of the binary tree may be determined based on the size of the encoding tree unit and the difference information.
  • the maximum size (maximum size of the split tree) of the coding unit corresponding to each node of the split tree may have a different value according to the type of the slice. For example, in the case of an in-screen slice, the maximum size of the split tree may be 32x32.
  • the maximum size of the three-part tree may be 128x128.
  • the minimum size of the coding unit corresponding to each node of the binary tree (minimum size of the binary tree) and/or the minimum size of the coding unit corresponding to each node of the split tree (minimum size of the split tree) is the minimum size of the coding block. size can be set.
  • the maximum size of the binary tree and/or the maximum size of the split tree may be signaled or determined at the slice level.
  • the minimum size of the binary tree and/or the minimum size of the split tree may be signaled or determined at the slice level.
  • quad partition information information on whether the complex tree is split or not, split tree information and/or split direction information, etc. may or may not exist in the bitstream.
  • the coding unit does not include quad partition information, and the corresponding quad partition information may be inferred as the second value.
  • the coding unit when the size (horizontal and vertical) of the coding unit corresponding to the node of the complex tree is greater than the maximum binary tree size (horizontal and vertical) and/or the maximum size of the split tree (horizontal and vertical), the coding unit is The binary tree may not be split and/or the three split tree may not be split. Accordingly, information on whether the complex tree is split is not signaled and may be inferred as a second value.
  • the size (horizontal and vertical) of the coding unit corresponding to the node of the complex tree is the same as the minimum binary tree size (horizontal and vertical), or the size (horizontal and vertical) of the coding unit is the minimum size (horizontal and horizontal) of the split tree. and vertical), the coding unit may not be split into binary tree and/or split into three. Accordingly, information on whether the complex tree is split is not signaled and may be inferred as a second value. This is because, when the coding unit is split into a binary tree and/or a split tree is split, a coding unit smaller than the minimum size of the binary tree and/or the minimum size of the split tree is generated.
  • the binary tree splitting or the three split tree splitting may be limited based on the size of the virtual pipeline data unit (hereinafter, the pipeline buffer size). For example, when a coding unit is divided into sub coding units that are not suitable for the size of a pipeline buffer by binary tree splitting or split tree splitting, the binary tree splitting or splitting tree splitting may be limited.
  • the pipeline buffer size may be the size of the largest transform block (eg, 64X64). For example, when the pipeline buffer size is 64X64, the partitioning below may be limited.
  • N and/or M is 128) coding unit
  • the coding unit may not be split into a binary tree and/or a split tree. Accordingly, information on whether the complex tree is split is not signaled and may be inferred as a second value.
  • the complex type Information on whether the tree is split may be signaled. Otherwise, the coding unit may not be split into binary tree and/or split into three. Accordingly, information on whether the complex tree is split is not signaled and may be inferred as a second value.
  • Split direction information may be signaled. Otherwise, the division direction information is not signaled and may be inferred as a value indicating a direction in which division is possible.
  • Split tree information may be signaled. Otherwise, the split tree information is not signaled and may be inferred as a value indicating a tree that can be split.
  • FIG. 4 is a diagram for explaining an embodiment of an intra prediction process.
  • Arrows outward from the center of FIG. 4 may indicate prediction directions of intra prediction modes.
  • Intra-picture encoding and/or decoding may be performed using reference samples of blocks adjacent to the current block.
  • the neighboring block may be a reconstructed neighboring block.
  • intra-picture encoding and/or decoding may be performed using a value of a reference sample included in a reconstructed neighboring block or an encoding parameter.
  • the prediction block may mean a block generated as a result of performing intra prediction.
  • the prediction block may correspond to at least one of a CU, a PU, and a TU.
  • the unit of the prediction block may be the size of at least one of CU, PU, and TU.
  • the prediction block may be a square-shaped block having a size such as 2x2, 4x4, 16x16, 32x32 or 64x64, or a rectangular block having a size such as 2x8, 4x8, 2x16, 4x16 and 8x16.
  • the intra prediction may be performed according to the intra prediction mode for the current block.
  • the number of intra prediction modes that the current block can have may be a predefined fixed value, or a value determined differently according to the properties of the prediction block.
  • the properties of the prediction block may include the size of the prediction block and the shape of the prediction block.
  • the number of intra prediction modes may be fixed to N regardless of the size of the block.
  • the number of prediction modes in the screen may be 3, 5, 9, 17, 34, 35, 36, 65, or 67.
  • the number of intra prediction modes may be different according to a size of a block and/or a type of a color component.
  • the number of prediction modes in the screen may be different depending on whether the color component is a luma signal or a chroma signal.
  • the number of intra prediction modes may increase.
  • the number of intra prediction modes of the luminance component block may be greater than the number of intra prediction modes of the chrominance component block.
  • the intra prediction mode may be a non-directional mode or a directional mode.
  • the non-directional mode may be a DC mode or a planar mode
  • the angular mode may be a prediction mode having a specific direction or angle.
  • the prediction mode in the screen may be expressed as at least one of a mode number, a mode value, a mode number, a mode angle, and a mode direction.
  • the number of intra prediction modes may be one or more M including the non-directional and directional modes. Whether samples included in a reconstructed neighboring block for intra prediction of the current block are available as reference samples of the current block. A step of checking may be performed.
  • FIG. 7 is a diagram for describing reference samples usable for intra prediction.
  • reference sample lines 0 to 3 may be used for intra prediction of the current block.
  • samples of segment A and segment F may be padded with the closest samples of segment B and segment E, respectively, instead of fetching from reconstructed neighboring blocks.
  • Index information indicating a reference sample line to be used for intra prediction of the current block may be signaled.
  • reference sample line indicators 0, 1, and 2 may be signaled as index information indicating reference sample lines 0, 1, and 2 .
  • the index information may not be signaled.
  • filtering may not be performed on a prediction block, which will be described later.
  • a filter may be applied to at least one of a reference sample and a prediction sample based on at least one of an intra prediction mode and a size of a current block.
  • the planner mode when generating the prediction block of the current block, according to the position of the prediction target sample in the prediction block, the weighted sum of the top and left reference samples of the current sample and the top right and bottom left reference samples of the current block are used.
  • a sample value of a prediction target sample may be generated.
  • the average value of the upper and left reference samples of the current block may be used.
  • a prediction block may be generated using the upper, left, upper right, and/or lower left reference samples of the current block. Interpolation in real units may be performed to generate a predicted sample value.
  • a prediction block for the current block of the second color component may be generated based on the corresponding reconstruction block of the first color component.
  • the first color component may be a luminance component
  • the second color component may be a chrominance component.
  • a parameter of a linear model between the first color component and the second color component may be derived based on the template.
  • the template may include upper and/or left peripheral samples of the current block and upper and/or left peripheral samples of the reconstructed block of the first color component corresponding thereto.
  • the parameters of the linear model include a sample value of a first color component having a maximum value among samples in the template, a sample value of a corresponding second color component, and a sample value of the first color component having a minimum value among samples in the template. and the corresponding sample value of the second color component.
  • the prediction block for the current block may be generated by applying the corresponding reconstruction block to the linear model.
  • sub-sampling may be performed on neighboring samples of the reconstructed block of the first color component and the corresponding reconstructed block.
  • one sample of the second color component corresponds to four samples of the first color component
  • one corresponding sample may be calculated by subsampling the four samples of the first color component.
  • the parameter derivation of the linear model and intra prediction between color components may be performed based on sub-sampled corresponding samples. Whether to perform intra prediction between color components and/or the range of a template may be signaled as an intra prediction mode.
  • the current block may be divided into 2 or 4 sub-blocks in the horizontal or vertical direction.
  • the divided sub-blocks may be sequentially reconstructed. That is, the sub-prediction block may be generated by performing intra prediction on the sub-block. In addition, inverse quantization and/or inverse transform may be performed on the sub-block to generate a sub-residual block.
  • a reconstructed sub-block may be generated by adding the sub-prediction block to the sub-residual block.
  • the reconstructed sub-block may be used as a reference sample for intra prediction of a lower-order sub-block.
  • a sub-block may be a block including a predetermined number (eg, 16) or more samples.
  • the current block when the current block is an 8x4 block or a 4x8 block, the current block may be divided into two sub-blocks. Also, when the current block is a 4x4 block, the current block cannot be divided into sub-blocks. When the current block has other sizes, the current block may be divided into 4 sub-blocks. Information on whether to perform the sub-block-based intra prediction and/or the division direction (horizontal or vertical) may be signaled.
  • the sub-block-based intra prediction may be limited to be performed only when the reference sample line 0 is used. When the sub-block-based intra prediction is performed, filtering on a prediction block, which will be described later, may not be performed.
  • a final prediction block may be generated by performing filtering on the predicted prediction block within the picture.
  • the filtering may be performed by applying a predetermined weight to the filtering target sample, the left reference sample, the upper reference sample, and/or the upper left reference sample.
  • the weight and/or reference sample (range, position, etc.) used for the filtering may be determined based on at least one of a block size, an intra prediction mode, and a position in a prediction block of a sample to be filtered.
  • the filtering may be performed only in the case of a predetermined intra prediction mode (eg, DC, planar, vertical, horizontal, diagonal, and/or adjacent diagonal mode).
  • the adjacent diagonal mode may be a mode in which k is added to or subtracted from the diagonal mode. For example, k may be a positive integer of 8 or less.
  • the intra prediction mode of the current block may be entropy encoded/decoded by predicting from the intra prediction mode of a block existing around the current block. If the intra prediction modes of the current block and the neighboring blocks are the same, information that the intra prediction modes of the current block and the neighboring blocks are the same may be signaled using predetermined flag information. Also, among the intra prediction modes of a plurality of neighboring blocks, indicator information on the same intra prediction mode as the intra prediction mode of the current block may be signaled. When the intra prediction mode of the current block and the neighboring block are different, entropy encoding/decoding is performed based on the intra prediction mode of the neighboring block to entropy encoding/decoding the intra prediction mode information of the current block.
  • 5 is a diagram for explaining an embodiment of an inter prediction process.
  • the rectangle shown in FIG. 5 may represent an image. Also, an arrow in FIG. 5 may indicate a prediction direction.
  • Each picture may be classified into an I picture (intra picture), a P picture (predictive picture), a B picture (bi-predictive picture), etc. according to the encoding type.
  • I-pictures may be encoded/decoded through intra prediction without inter prediction.
  • a P picture may be encoded/decoded through inter prediction using only a reference picture existing in a unidirectional (eg, forward or backward) direction.
  • a B picture may be encoded/decoded through inter prediction using reference pictures existing in both directions (eg, forward and backward).
  • encoding/decoding may be performed through inter prediction using reference pictures existing in both directions or inter prediction using reference pictures existing in one of the forward and reverse directions.
  • the bidirectional may be forward and reverse.
  • the encoder may perform inter prediction or motion compensation
  • the decoder may perform motion compensation corresponding thereto.
  • Inter prediction or motion compensation may be performed using a reference image and motion information.
  • Motion information on the current block may be derived during inter prediction by each of the encoding apparatus 100 and the decoding apparatus 200 .
  • the motion information may be derived using motion information of a reconstructed neighboring block, motion information of a collocated block, and/or a block adjacent to the collocated block.
  • the collocated block may be a block corresponding to the spatial position of the current block in an already reconstructed collocated picture (col picture).
  • the collocated picture may be one picture from among at least one reference picture included in the reference picture list.
  • a method of deriving motion information may vary according to a prediction mode of the current block.
  • a prediction mode of the current block For example, as prediction modes applied for inter prediction, AMVP mode, merge mode, skip mode, merge mode with motion vector difference, sub-block merge mode, geometric division mode, inter-intra joint prediction mode, affine inter There may be mods and the like.
  • the merge mode may be referred to as a motion merge mode.
  • a motion vector candidate list may be generated.
  • a motion vector candidate may be derived using the generated motion vector candidate list.
  • Motion information of the current block may be determined based on the derived motion vector candidate.
  • a motion vector of a collocated block or a motion vector of a block adjacent to the collocated block may be referred to as a temporal motion vector candidate
  • a motion vector of a reconstructed neighboring block may be referred to as a spatial motion vector candidate.
  • the encoding apparatus 100 may calculate a motion vector difference (MVD) between a motion vector of a current block and a motion vector candidate, and may entropy-encode the MVD. Also, the encoding apparatus 100 may generate a bitstream by entropy-encoding the motion vector candidate index.
  • the motion vector candidate index may indicate an optimal motion vector candidate selected from among motion vector candidates included in the motion vector candidate list.
  • the decoding apparatus 200 entropy-decodes the motion vector candidate index from the bitstream, and uses the entropy-decoded motion vector candidate index to select the motion vector candidate of the decoding object block from among the motion vector candidates included in the motion vector candidate list. . Also, the decoding apparatus 200 may derive the motion vector of the decoding object block through the sum of the entropy-decoded MVD and the motion vector candidate.
  • the encoding apparatus 100 may entropy-encode the calculated resolution information of the MVD.
  • the decoding apparatus 200 may adjust the resolution of the entropy-decoded MVD by using the MVD resolution information.
  • the encoding apparatus 100 may calculate a motion vector difference (MVD) between the motion vector of the current block and the motion vector candidate based on the affine model, and may entropy-encode the MVD.
  • the decoding apparatus 200 may derive the affine control motion vector of the decoding object block through the sum of the entropy-decoded MVD and the affine control motion vector candidate to derive the motion vector in units of sub-blocks.
  • the bitstream may include a reference picture index indicating a reference picture.
  • the reference image index may be entropy-encoded and signaled from the encoding apparatus 100 to the decoding apparatus 200 through a bitstream.
  • the decoding apparatus 200 may generate a prediction block for the decoding object block based on the derived motion vector and reference image index information.
  • the merge mode may refer to merging of motions for a plurality of blocks.
  • the merge mode may refer to a mode in which motion information of the current block is derived from motion information of a neighboring block.
  • a merge candidate list may be generated using motion information of a reconstructed neighboring block and/or motion information of a collocated block.
  • the motion information may include at least one of 1) a motion vector, 2) a reference image index, and 3) an inter prediction indicator.
  • the prediction indicator may be unidirectional (L0 prediction, L1 prediction) or bidirectional.
  • the merge candidate list may indicate a list in which motion information is stored.
  • the motion information stored in the merge candidate list includes motion information (a spatial merge candidate) of a neighboring block adjacent to the current block and motion information (a temporal merge candidate) of a block corresponding to the current block in a reference image. temporal merge candidate), new motion information generated by a combination of motion information already present in the merge candidate list, and motion information of a block encoded/decoded before the current block (history-based merge candidate) and a zero merge candidate.
  • the encoding apparatus 100 may entropy-encode at least one of a merge flag and a merge index to generate a bitstream, and then signal it to the decoding apparatus 200 .
  • the merge flag may be information indicating whether to perform the merge mode for each block
  • the merge index may be information about which block among neighboring blocks adjacent to the current block to be merged with.
  • neighboring blocks of the current block may include at least one of a left neighboring block, an upper neighboring block, and a temporal neighboring block of the current block.
  • the encoding apparatus 100 may entropy-encode correction information for correcting a motion vector from among the motion information of the merge candidate and signal it to the decoding apparatus 200 .
  • the decoding apparatus 200 may correct the motion vector of the merge candidate selected by the merge index based on the correction information.
  • the correction information may include at least one of correction information, correction direction information, and correction size information.
  • a prediction mode in which a motion vector of a merge candidate is corrected based on the signaled correction information may be referred to as a merge mode having a motion vector difference.
  • the skip mode may be a mode in which motion information of a neighboring block is applied to the current block as it is.
  • the encoding apparatus 100 entropy-encodes information on which block of motion information to use as the motion information of the current block, and may signal it to the decoding apparatus 200 through a bitstream.
  • the encoding apparatus 100 may not signal a syntax element related to at least one of the motion vector difference information, the encoding block flag, and the transform coefficient level (quantized level) to the decoding apparatus 200 .
  • the subblock merge mode may refer to a mode in which motion information is derived in units of subblocks of a coding block (CU).
  • motion information subblock based temporal merge candidate
  • a subblock merge candidate list may be generated using an affine control point motion vector merge candidate.
  • each motion information is derived by dividing the current block in a predetermined direction, each prediction sample is derived using each of the derived motion information, and each prediction sample is derived. It may mean a mode in which a prediction sample of the current block is derived by weighted summing .
  • the inter-intra joint prediction mode may refer to a mode in which a prediction sample of a current block is derived by weighted summing a prediction sample generated by inter prediction and a prediction sample generated by intra prediction.
  • the decoding apparatus 200 may self-correct the derived motion information.
  • the decoding apparatus 200 may derive the motion information having the minimum SAD as the corrected motion information by searching for a predefined area based on the reference block indicated by the derived motion information.
  • the decoding apparatus 200 may compensate for a prediction sample derived through inter prediction using an optical flow.
  • FIG. 6 is a diagram for explaining a process of transformation and quantization.
  • a quantized level may be generated by performing a transformation and/or quantization process on the residual signal.
  • the residual signal may be generated as a difference between the original block and the prediction block (intra prediction block or inter prediction block).
  • the prediction block may be a block generated by intra prediction or inter prediction.
  • the transformation may include at least one of a primary transformation and a secondary transformation. When a first transform is performed on the residual signal, a transform coefficient may be generated, and a second transform may be generated by performing a second transform on the transform coefficient.
  • a primary transform may be performed using at least one of a plurality of pre-defined transform methods.
  • the plurality of pre-defined transform methods may include a discrete cosine transform (DCT), a discrete sine transform (DST), or a Karhunen-Loeve transform (KLT)-based transform.
  • Secondary transformation may be performed on transform coefficients generated after primary transformation is performed.
  • a transform method applied at the time of the primary transform and/or the secondary transform may be determined according to at least one of encoding parameters of the current block and/or neighboring blocks. Alternatively, conversion information indicating a conversion method may be signaled.
  • DCT-based transform may include, for example, DCT2, DCT-8, and the like.
  • the DST-based transform may include, for example, DST-7.
  • a quantized level may be generated by performing quantization on a result of performing the primary transformation and/or the secondary transformation or on the residual signal.
  • the quantized level may be scanned according to at least one of an upper right diagonal scan, a vertical scan, and a horizontal scan based on at least one of an intra prediction mode or a block size/shape. For example, by scanning the coefficients of the block using up-right diagonal scanning, it can be changed into a one-dimensional vector form.
  • a vertical scan that scans a two-dimensional block shape coefficient in a column direction and a horizontal scan that scans a two-dimensional block shape coefficient in a row direction may be used instead of the upper right diagonal scan.
  • the scanned quantized level may be entropy-encoded and included in the bitstream.
  • the decoder may entropy-decode the bitstream to generate a quantized level.
  • the quantized level may be inversely scanned and arranged in a two-dimensional block form. In this case, at least one of an upper right diagonal scan, a vertical scan, and a horizontal scan may be performed as a reverse scanning method.
  • Inverse quantization can be performed on the quantized level, the second inverse transform can be performed depending on whether the second inverse transform is performed, and the first inverse transform is performed on the result of the second inverse transform according to whether the first inverse transform is performed and restored A residual signal may be generated.
  • Inverse mapping of a dynamic range may be performed before in-loop filtering on a luminance component reconstructed through intra prediction or inter prediction.
  • the dynamic range may be divided into 16 equal pieces, and a mapping function for each piece may be signaled.
  • the mapping function may be signaled at a slice level or a tile group level.
  • An inverse mapping function for performing the inverse mapping may be derived based on the mapping function.
  • In-loop filtering, storage of reference pictures, and motion compensation are performed in an inversely mapped region, and a prediction block generated through inter prediction is converted to a mapped region by mapping using the mapping function, and then a reconstructed block is generated. can be used for However, since intra prediction is performed in a mapped region, a prediction block generated by intra prediction may be used to generate a reconstructed block without mapping/inverse mapping.
  • the residual block may be converted into an inversely mapped region by scaling the chrominance component of the mapped region. Whether the scaling is available may be signaled at a slice level or a tile group level.
  • the scaling can be applied only when the mapping for the luma component is available and the division of the luminance component and the division of the chrominance component follow the same tree structure.
  • the scaling may be performed based on an average of sample values of a luminance prediction block corresponding to the chrominance block. In this case, when the current block uses inter prediction, the luminance prediction block may mean a mapped luminance prediction block.
  • a value necessary for the scaling may be derived by referring to a lookup table using the index of the piece to which the average of the sample values of the luminance prediction block belongs. Finally, by scaling the residual block using the derived value, the residual block may be converted into a demapped region. Thereafter, reconstruction of the chrominance component block, intra prediction, inter prediction, in-loop filtering, and storage of the reference picture may be performed in the demapped area.
  • Information indicating whether mapping/inverse mapping of the luminance component and the chrominance component is available may be signaled through a sequence parameter set.
  • the prediction block of the current block may be generated based on a block vector indicating displacement between the current block and the reference block in the current picture.
  • a prediction mode for generating a prediction block by referring to the current picture may be called an intra block copy (IBC) mode.
  • the IBC mode may include a skip mode, a merge mode, an AMVP mode, and the like.
  • a merge candidate list is configured, and a merge index is signaled to specify one merge candidate.
  • the block vector of the specified merge candidate may be used as the block vector of the current block.
  • the merge candidate list may include at least one such as a spatial candidate, a history-based candidate, a candidate based on an average of two candidates, or a zero merge candidate.
  • a residual block vector may be signaled.
  • the prediction block vector may be derived from a left neighboring block and an upper neighboring block of the current block. An index regarding which neighboring block to use may be signaled.
  • the prediction block of the IBC mode is included in the current CTU or the left CTU, and may be limited to a block within a previously reconstructed area.
  • the value of the block vector may be limited so that the prediction block of the current block is located in three 64x64 block regions that precede the 64x64 block to which the current block belongs in the encoding/decoding order.
  • the value of the block vector in this way, it is possible to reduce memory consumption and device complexity according to the IBC mode implementation.
  • the encoding of the existing video coding largely consists of an intra/inter prediction step of predicting an original block that is a part of the current original image, a predicted prediction block and an original block.
  • the transform and quantization step of the residual block which is the difference between
  • the entropy coding step which is a probability-based lossless compression method for the coefficients of the transform and quantized block
  • the original A bitstream which is a compressed form of an image, is formed, and it is transmitted to a decoder or stored in a recording medium.
  • Shuffling and Discrete Sine Transform (hereinafter, “SDST”), which will be described later in this specification, is intended to improve compression efficiency by increasing transform efficiency.
  • the SDST method according to the present disclosure is a discrete sine transform instead of Discrete Cosine Transform type-2 (hereinafter, “DCT-II” or “DCT-2”), which is a transform kernel widely used in video coding.
  • DCT-II Discrete Cosine Transform type-2
  • DST-7 Discrete Sine Transform type-7
  • the conversion method of the present disclosure it is possible to obtain high objective video quality even with a relatively low bit amount compared to the conventional video coding method.
  • DST-7 may be applied to data of a residual block.
  • DST-7 application to the residual block may be performed based on a prediction mode corresponding to the residual block. For example, it may be applied to a residual block encoded in an inter mode (inter-picture mode).
  • DST-7 may be applied after rearranging or shuffling data of the residual block.
  • shuffling refers to rearrangement of image data, and may be referred to as residual signal rearrangement or flipping in an equivalent meaning.
  • the residual block may have the same meaning as a residual, a residual block, a residual signal, a residual signal, residual data, or residual data.
  • the residual block is a reconstructed residual, a reconstructed residual block, a reconstructed residual signal, a reconstructed residual signal, reconstructed residual data, or reconstructed residual data in which the residual block is a form reconstructed by an encoder and a decoder.
  • the residual block is a form reconstructed by an encoder and a decoder.
  • SDST may use DST-7 as a conversion kernel.
  • the transformation kernel of SDST is not limited to DST-7, Discrete Sine Transform type-1 (DST-1), Discrete Sine Transform type-2 (Discrete Sine Transform type-2, DST-2), Discrete Sine Transform type-3 (DST-3), ... , Discrete Sine Transform type-n (DST-n), Discrete Cosine Transform type-1 (DCT-1), Discrete Cosine Transform type-2 (Discrete Cosine Transform type) -2, DCT-2), Discrete Cosine Transform type-3 (DCT-3), ... , at least one of several types of DST and DCT such as Discrete Cosine Transform type-n (DCT-n) may be used.
  • DCT-n Discrete Cosine Transform type-n
  • Equation 1 may represent a method of performing one-dimensional DCT-2 according to an embodiment of the present disclosure.
  • N may represent a size of a block
  • k may represent a position of a frequency component
  • x n may represent a value of an n-th coefficient in the spatial domain.
  • DCT-2 of the two-dimensional domain may be possible by performing horizontal transform and vertical transform on the residual block using Equation 1 above.
  • the DCT-2 conversion kernel may be defined by Equation 2 below.
  • X k may represent a basis vector according to a position in the frequency domain
  • N may represent the size of the frequency domain.
  • FIG. 7 is a diagram illustrating a basis vector in the frequency domain of DCT-2 according to the present disclosure. 7 shows the frequency characteristics of DCT-2 in the frequency domain.
  • a value calculated through the X 0 basis vector of DCT-2 may mean a DC component.
  • DCT-2 may be used in a transform process for a residual block having a size of 4x4, 8x8, 16x16, or 32x32.
  • DCT-2 may be selectively used based on at least one of a size of a residual block, a color component (eg, a luminance component, a chrominance component) of the residual block, or a prediction mode corresponding to the residual block.
  • a color component eg, a luminance component, a chrominance component
  • DCT-2 may not be used.
  • the horizontal length of the intra-mode coded residual block falls within a predetermined range (eg, 4 pixels or more and 16 pixels or less) and the horizontal length is not greater than the vertical length, the first transform kernel is can be used Otherwise, the second transform kernel may be used for horizontal transform.
  • the first transform kernel may be used for vertical transformation.
  • the second transform kernel may be used for vertical transform.
  • the first transform kernel and the second transform kernel may be different. That is, the horizontal transformation and vertical transformation methods of the block encoded in the intra mode may be implicitly determined based on the shape of the block under a predetermined condition.
  • the first transform kernel may be DST-7
  • the second transform kernel may be DCT-2.
  • the prediction mode may mean inter prediction or intra prediction.
  • the prediction mode may mean an intra prediction mode or an intra prediction direction in the case of intra prediction.
  • Transformation through the DCT-2 transform kernel may show high compression efficiency for a block having a small change between neighboring pixels, such as a background of an image.
  • it may not be suitable as a transformation kernel for a region having a complex pattern such as a texture image. This is because, when a block having a low correlation between neighboring pixels is transformed through DCT-2, many transform coefficients may be generated in the high frequency component of the frequency domain. If the transform coefficients are frequently generated in the high-frequency region, the compression efficiency of the image may be reduced. In order to improve the compression efficiency, a coefficient having a large value is generated near the low frequency component, and the value of the coefficient should be as close to 0 as possible in the high frequency component.
  • Equation 3 may represent a method of performing one-dimensional DST-7 according to an embodiment of the present disclosure.
  • N may mean a size of a block
  • k may mean a position of a frequency component
  • x n may mean a value of an n-th coefficient in the spatial domain.
  • DST-7 of the two-dimensional domain may be possible by performing horizontal transform and vertical transform on the residual block using Equation 3 above.
  • the DST-7 conversion kernel may be defined by Equation 4 below.
  • X k may represent a K-th basis vector of DST-7
  • i may represent a position in the frequency domain
  • N may represent a size of the frequency domain.
  • DST-7 may be used in a transform process for a residual block having a size of at least one of 2x2, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, and the like.
  • DST-7 may be applied to a rectangular block instead of a square block.
  • DST-7 may be applied to at least one of vertical transformation and horizontal transformation of rectangular blocks having different horizontal sizes and vertical sizes, such as 8x4, 16x8, 32x4, and 64x16.
  • DCT-2 may be applied to horizontal transformation and vertical transformation of a square block.
  • DST-7 may be applied to horizontal transformation and vertical transformation of a square block.
  • DST-7 indicates at least one of the size of the residual block, the color component (eg, luminance component, chrominance component) of the residual block, the prediction mode corresponding to the residual block, the intra prediction mode (direction), and the shape of the residual block. It can be selectively used based on one. For example, when a 4x4 size residual block is encoded in the intra mode and a component of the residual block is a luminance component, DST-7 may be used.
  • the prediction mode may mean inter prediction or intra prediction.
  • the prediction mode may mean an intra prediction mode or an intra prediction direction. For example, selection of a conversion method based on a block shape may not be available for a color difference component.
  • the intra prediction mode is inter-color component prediction
  • selection of a transformation method based on a block shape may not be available.
  • a conversion method for a color difference component may be specified by information signaled through a bitstream.
  • the transformation method for the current block is determined by the intra prediction mode and/or the block size (horizontal and/or vertical size). ) can be determined based on For example, when the intra prediction mode is non-directional (DC or Planar), when the horizontal length (vertical length) is included in a predetermined range, the first transformation kernel is used for horizontal transformation (vertical transformation), Otherwise, a second transform kernel may be used.
  • the first transform kernel and the second transform kernel may be different.
  • the first transform kernel may be DST-7, and the second transform kernel may be DCT-2.
  • the predetermined range may be, for example, 4 to 16 pixels.
  • the same kernel eg, a second transform kernel
  • different transform kernels may be used for prediction modes adjacent to each other. For example, if the second transformation kernel and the first transformation kernel are used for horizontal transformation and vertical transformation of mode 27, respectively, the first transformation kernel and the second transformation kernel for horizontal transformation and vertical transformation of mode 26 and mode 28 adjacent to mode 27, respectively 2 transformation kernels are available.
  • SDST which is one of the conversion methods using DST-7 as a conversion kernel
  • a block may mean any one of CU, PU, and TU.
  • SDST may be performed in two steps.
  • the first step is a step of shuffling the residual signal in the PU of the CU predicted in the inter mode (inter-picture mode) or intra mode (in-picture mode).
  • the second step is to apply DST-7 to the residual signal in the shuffled block.
  • a residual signal arranged in a current block may be scanned according to a first direction and rearranged according to a second direction. That is, shuffling may be performed by scanning the residual signals arranged in the current block in the first direction and rearranging them in the second direction.
  • the residual signal may mean a signal representing a difference signal between the original signal and the prediction signal. That is, the residual signal may mean a signal before at least one of transform and quantization is performed. Alternatively, the residual signal may mean a signal shape in which at least one of transform and quantization is performed. Also, the residual signal may mean a reconstructed residual signal. That is, the residual signal may mean a signal on which at least one of inverse transform and inverse quantization is performed. Also, the residual signal may mean a signal before at least one of inverse transform and inverse quantization is performed.
  • the first direction is a raster scan order, an up-right diagonal scan order, a horizontal scan order, and a vertical scan order. order) may be any one.
  • the first direction may be defined as at least one of (1) to (10) below.
  • Diagonal scan Starting from one vertex in the block, scan diagonally in the direction of upper left, upper right, lower left or lower right.
  • the second direction (or rearrangement direction) at least one of the scan directions of (1) to (10) may be selectively used.
  • the first direction and the second direction may be the same or different from each other.
  • a scan and rearrangement process for the residual signal may be performed in units of current blocks.
  • the rearrangement may mean arranging the residual signal scanned in the first direction in the block in the second direction in a block having the same size.
  • the size of the block scanned in the first direction and the size of the block rearranged in the second direction may be different from each other.
  • the scan and rearrangement are expressed as being separately performed in the first direction and the second direction, respectively, the scanning and rearrangement may be performed as one process with respect to the first direction. For example, a residual signal within a block may be scanned from the top row to the bottom row, but scanned from right to left in one row and stored (rearranged) in the block.
  • the scan and rearrangement process for the residual signal may be performed in units of predetermined sub-blocks in the current block.
  • the sub-block may be the same as or smaller than the current block.
  • the subblock may be a block divided into a quadtree, a binary tree, or the like from the current block.
  • the subblock unit may have a fixed size and/or shape (eg, 4x4, 4x8, 8x8, ... NxM, where N and M are positive integers).
  • the size and/or shape of the sub-block unit may be variably derived.
  • the size and/or shape of the sub-block unit may be determined depending on the size, shape, and/or prediction mode (inter, intra) of the current block.
  • a scan direction and/or a rearrangement direction may be adaptively determined according to the position of the subblock.
  • different scan directions and/or rearrangement directions may be used for each subblock, and all or some of the subblocks belonging to the current block may use the same scan direction and/or rearrangement direction.
  • a residual block having the same size as the block may be decoded, or a sub-residual block corresponding to a part of the block may be decoded. Information for this may be signaled for the block, and the information may be, for example, a flag.
  • information on the transform kernel may be determined by decoding information included in the bitstream.
  • a transform kernel for the sub-residual block may be determined based on information specifying a type and/or a position within the block of the sub-residual block.
  • information about the type of the sub-residual block and/or the position within the block may be included in a bitstream and signaled.
  • the determination of the transform kernel based on the type of the sub-residual block and/or the position within the block may not be performed.
  • a predetermined transform kernel eg, DCT-2
  • the width or height of the block is greater than 32
  • the determination of the transform kernel based on the type of the sub-residual block and/or the position within the block may not be performed.
  • a predetermined transform kernel eg, DCT-2
  • a predetermined transform kernel eg, DCT-2
  • a predetermined transform kernel may be applied to a 64x8 block, or information on the transform kernel may be explicitly signaled.
  • the information on the type of the sub-residual block may be partition information of the corresponding block.
  • the division information of the block may be, for example, division direction information indicating either horizontal division or vertical division.
  • the partition information of the block may include partition ratio information.
  • the split ratio may include 1:1, 1:3 and/or 3:1.
  • the split direction information and split ratio information may be signaled as separate syntax elements or may be signaled as one syntax element.
  • the information about the position of the sub-residual block may indicate the position within the block. For example, when the division of a block is vertical division, the information about the position may indicate one of the left and the right. In addition, when the division of a block is horizontal division, the information about the position may indicate one of the upper and lower ends.
  • the transform kernel of the sub-residual block may be determined based on the type information and/or location information.
  • the transform kernel may be independently determined for a horizontal transform and a vertical transform.
  • the transform kernel may be determined based on the division direction.
  • the first transform kernel may be applied to the vertical transformation
  • the first transformation kernel may be applied to the horizontal transformation.
  • the first transform kernel or the second transform kernel may be applied to the horizontal transform in the case of vertical division and the vertical transform in the case of the horizontal division.
  • the second transform kernel may be applied to the horizontal transform of the left position
  • the first transform kernel may be applied to the horizontal transform of the right position.
  • the second transform kernel may be applied to the vertical transformation of the upper position and the first transformation kernel may be applied to the vertical transformation of the lower position.
  • the first transform kernel and the second transform kernel may be DST-7 and DCT-8, respectively.
  • the first transform kernel and the second transform kernel may be DST-7 and DCT-2, respectively.
  • the present invention is not limited thereto, and any two different transform kernels among the various transform kernels mentioned herein may be used as the first and second transform kernels, respectively.
  • the block may mean a CU or a TU.
  • the sub-residual block may mean a sub-TU.
  • the corresponding transform mode information may be entropy-encoded/decoded in a bypass mode. Also, even in a transform skip mode or at least one of a residual differential PCM (RDPCM) mode and a lossless mode, entropy encoding/decoding of transform mode information may be omitted and may not be signaled.
  • a transform skip mode or at least one of a residual differential PCM (RDPCM) mode and a lossless mode
  • entropy encoding/decoding of transform mode information may be omitted and may not be signaled.
  • entropy encoding/decoding of transform mode information may be omitted and may not be signaled.
  • the coding block flag is 0, since the inverse transform process is omitted in the decoder, even if transform mode information does not exist in the decoder, the corresponding block can be restored.
  • the conversion mode information is not limited to indicating the conversion mode through a flag, and may be implemented in the form of a pre-defined table and index.
  • available conversion modes for each index may be defined.
  • the conversion of DCT-2 or SDST may be performed separately in a horizontal direction and a vertical direction.
  • the same transform mode may be used for the horizontal direction and the vertical direction, or different transform modes may be used.
  • transformation mode information regarding whether DCT-2, SDST, or DST-7 is used for each of the horizontal and vertical directions may be entropy-encoded/decoded, respectively.
  • the transform mode information may be signaled, for example, as an index, and the transform kernel indicated by the same index may be the same for an intra-picture predicted block and an inter-picture predicted block.
  • the transform mode information may be entropy-encoded/decoded in at least one of CU, PU, TU, and block units.
  • the transformation mode information may be signaled according to a luminance component or a chrominance component.
  • the transform mode information may be signaled according to the Y component, the Cb component, or the Cr component.
  • the transform mode information when transform mode information on whether DCT-2 or SDST is performed on the Y component is signaled, at least one of the Cb component and the Cr component is signaled in the Y component without separate transform mode information signaling
  • the transform mode information that is used can be used as the transform mode of the corresponding block.
  • the transform mode information may be entropy-encoded/decoded using an arithmetic encoding method using a context model. If the transformation mode information is implemented in the form of a pre-defined table and index, entropy encoding/decoding may be performed using an arithmetic encoding method using a context model for all or some bins among several bins.
  • the transform mode information may be selectively entropy-encoded/decoded according to the block size. For example, when the size of the current block is 64x64 or more, the transform mode information is not entropy-encoded/decoded, and when the size of the current block is 32x32 or less, the transform mode information can be entropy-encoded/decoded.
  • one of DCT-2, DST-7, and SDST methods may be performed without entropy encoding/decoding of transform mode information.
  • the transform mode information may not be entropy-encoded/decoded regardless of the non-zero transform coefficient or the position in the quantized level block.
  • entropy encoding/decoding of transform mode information may not be performed only when the non-zero transform coefficient or quantized level exists in the upper left position in the block.
  • L may be a positive integer including 0, for example, may be 1.
  • J is a positive integer.
  • transform mode information is limited depending on the transform mode of the collocated block, or the binarization method of transform information may vary in a way that the transform mode of the collocated block is expressed with fewer bits. have.
  • the above-described SDST may be limitedly used based on at least one of a prediction mode, an intra prediction mode, an inter prediction mode, a TU depth (depth), a size, and a shape of the current block.
  • SDST may be used when the current block is encoded in the inter mode.
  • a minimum/maximum depth allowed for SDST may be defined.
  • SDST may be used when the depth of the current block is equal to or greater than the minimum depth, or SDST may be used when the depth of the current block is equal to or less than the maximum depth.
  • the minimum/maximum depth may be a fixed value or may be variably determined based on information indicating the minimum/maximum depth.
  • Information indicating the minimum/maximum depth may be signaled from the encoder or derived from the decoder based on properties (eg, size, depth and/or shape) of the current/neighboring block.
  • a minimum/maximum size for which SDST is allowed may be defined.
  • SDST may be used when the size of the current block is equal to or greater than the minimum size, or SDST may be used when the size of the current block is equal to or smaller than the maximum size.
  • the minimum/maximum size may be a fixed value or may be variably determined based on information indicating the minimum/maximum size.
  • Information indicating the minimum/maximum size may be signaled from the encoder or derived from the decoder based on attributes (eg, size, depth and/or shape) of the current/neighboring block. For example, if the current block is 4x4, DCT-2 may be used as a transform method, and transform mode information regarding whether DCT-2 or SDST is used may not be entropy-encoded/decoded.
  • a block type in which SDST is allowed may be defined. In this case, when the shape of the current block is that of a defined block, SDST may be used. Alternatively, a block type in which SDST is not allowed may be defined. In this case, SDST may not be used when the shape of the current block is that of a defined block.
  • the type of block in which SDST is allowed or not allowed may be fixed, and information about this may be signaled from an encoder. Alternatively, it may be derived at the decoder based on attributes (eg, size, depth and/or shape) of the current/neighboring block.
  • the type of block in which SDST is allowed or not allowed may mean, for example, M, N, and/or a ratio of M to N in an MxN block.
  • DCT-2 or DST-7 may be used as a transform method, and transform mode information regarding which transform method is used may be entropy-encoded/decoded. If DST-7 is used as a transform method, a process of rearranging the residual signal may be performed. In addition, when the depth of the TU is 1 or more, DCT-2 or SDST may be used as a transform method, and transform mode information regarding which transform method is used may be entropy-encoded/decoded.
  • a transformation method may be selectively used according to a split form of a CU and a PU or a form of a current block.
  • DCT-2 may be used when the CU and PU split form or the current block form is 2Nx2N, and DCT-2 or SDST may be selectively used for the remaining split and block forms.
  • DCT-2 may be used, and DCT-2 or SDST may be selectively used for the remaining split form and block form.
  • DCT-2 when the CU and PU split form or the current block form is nRx2N, nLx2N, 2NxnU, or 2NxnD, DCT-2 is used, and DCT-2 or SDST can be selectively used for the remaining split form and block form.
  • scanning and inverse scanning of transform coefficients may be performed in units of divided blocks.
  • scanning and inverse scanning of transform coefficients may be performed in units of undivided current blocks.
  • the transform/inverse transform using the SDST or DST-7 may be performed according to at least one or more of the intra prediction mode (direction) of the current block, the size of the current block, and the components of the current block (whether it is a luminance component or a chrominance component).
  • DST-1 may be used instead of DST-7 during conversion/inverse conversion using SDST or DST-7.
  • DCT-4 may be used instead of DST-7 during conversion/inverse conversion using SDST or DST-7.
  • the rearrangement method used in the rearrangement of the residual signal of SDST or DST-7 may be applied to the transformation/inverse transformation using DCT-2. That is, even when DCT-2 is used, it is possible to rearrange the residual signal or rotate the residual signal using a predetermined angle.
  • SDST of the present disclosure aims to improve image compression efficiency by changing a transformation, shuffling, rearrangement, and/or flipping method.
  • DST-7 performance through shuffling of the residual signal can show high compression efficiency because it effectively reflects the residual signal distribution characteristic in the PU.
  • the rearrangement method described below may be applied to at least one or more of the above-described SDST method-related embodiments.
  • the residual signal rearrangement process may be implemented using horizontal flipping and vertical flipping methods.
  • the residual signal rearrangement method may be implemented through flipping as shown in (1) to (4) below.
  • a rearrangement described later may mean flipping.
  • r'(x,y) is the residual signal after rearrangement
  • r(x,y) is the residual signal before rearrangement
  • w and h denote the width and height of the block, respectively
  • x and y denote the position of the residual signal in the block.
  • the reverse rearrangement method of the rearrangement method using flipping may be performed in the same manner as the rearrangement method. That is, the residual signal rearranged using horizontal flipping may be restored to the original residual signal arrangement by performing horizontal flipping once again.
  • the rearrangement method performed by the encoder and the inverse rearrangement method performed by the decoder may be the same flipping method.
  • a residual block before flipping can be obtained.
  • a residual block before flipping can be obtained.
  • a residual block before flipping can be obtained.
  • the flipping-based residual signal shuffling/rearrangement method may be used without dividing the current block. That is, in the SDST method, it has been described that the current block (such as TU) is divided into sub-blocks and DST-7 is used for each sub-block, but when using the flipping-based residual signal shuffling/rearrangement method DST-7 transformation can be performed after flipping all or part of the current block without dividing the current block into subblocks. In addition, when the flipping-based residual signal shuffling/rearrangement method is used, the current block is not divided into subblocks, but DST-7 inverse transform is performed, and then all or part of the current block may be flipped.
  • a maximum size (MxN) and/or a minimum size (OxP) of a block capable of performing flipping-based residual signal shuffling/rearrangement may be defined.
  • the size may include at least one of a width (M or O) that is a horizontal size and a height (N or P) that is a vertical size.
  • M, N, O, and P may be positive integers.
  • the maximum size of the block and/or the minimum size of the block may be predefined values in the encoder/decoder or information signaled from the encoder to the decoder.
  • the SDST flag which is conversion mode information indicating whether flipping and DST-7 are used as the conversion mode, may not be signaled.
  • one-dimensional vertical transformation may be performed using DST-7 after vertical flipping, or one-dimensional vertical transformation may be performed using DST-7 without flipping.
  • the SDST flag which is transformation mode information indicating whether flipping is used as the transformation mode, may be signaled only for vertical one-dimensional transformation.
  • the horizontal one-dimensional transformation is performed after the horizontal flipping method.
  • One-dimensional horizontal transformation may be performed using DST-7, or one-dimensional horizontal transformation may be performed using DST-7 without flipping, and vertical one-dimensional transformation may be performed only with DCT-2.
  • the SDST flag which is transform mode information indicating whether flipping is used as the transform mode, may be signaled only for horizontal one-dimensional transform.
  • the SDST flag which is conversion mode information indicating whether to use flipping and DST-7 conversion as the conversion mode, may not be signaled.
  • DCT-2 transform or DST-7 transform can be used.
  • the SDST flag which is transformation mode information indicating whether flipping and DST-7 are used as the transformation mode
  • the SDST flag which is transformation mode information indicating whether flipping and DST-7 is used as the transformation mode
  • the SDST flag which is transformation mode information indicating whether flipping and DST-7 is used as the transformation mode
  • the maximum size for which the flipping method can be performed is 32x32 and the minimum size is 4x4, only the flipping method is not used for a 64x64 block, and DCT-2 or DST-7 transform may be used.
  • a square block of MxN size may be divided into four blocks into a quadtree, and a shuffling/rearrangement method may be performed on each subblock using flipping, and then DST-7 transformation may be performed.
  • the flipping method may be explicitly signaled for each subblock.
  • the flipping method may be signaled as a 2-bit fixed length code and may be signaled as a truncated unary code.
  • a binarization method based on the occurrence probability of the flipping method according to each divided block may be used.
  • M and N may be positive integers, for example, 64x64.
  • Entropy encoding/decoding may be performed on information (sdst_flag or sdst flag) using a flipping-based residual signal shuffling/rearrangement method using transform mode information. That is, the decoder may perform the same method as the method performed by the encoder through signaling of the transform mode information. For example, when the flag bit indicating the transform mode information has a first value, the flipping-based residual signal shuffling/rearrangement method and DST-7 may be used as the transform/inverse transform method, and the flag bit is the second If it has a value, other transform/inverse transform methods can be used. In this case, the transform mode information may be entropy-encoded/decoded for each block.
  • another transform/inverse transform method may be a DCT-2 transform/inverse transform method.
  • a transform skip mode a residual differential PCM (RDPCM) mode
  • a lossless mode entropy encoding/decoding of the transform mode information may be omitted and may not be signaled.
  • the transform mode information is entropy using at least one of a depth of a current block, a size of a current block, a shape of a current block, transform mode information of a neighboring block, a coding block flag of the current block, and whether a transform skip mode is used in the current block. It can be encoded/decoded. For example, when the encoding block flag of the current block is 0, entropy encoding/decoding of transform mode information may be omitted and may not be signaled.
  • the transform mode information may be prediction-encoded/decoded from transform mode information of a block reconstructed around the current block during entropy encoding/decoding.
  • the transform mode information may be signaled based on at least one of the encoding parameters of the current block and the neighboring block.
  • At least one of the four flipping methods is a flag or index (flipping_idx) using the flipping method information. It may be entropy encoded/decoded in the form. That is, the decoder can perform the same flipping method as the flipping method performed by the encoder by signaling the flipping method information.
  • the conversion mode information may include flipping method information.
  • entropy encoding/decoding of the flipping method information may be omitted and may not be signaled.
  • the flipping method information uses at least one of the depth of the current block, the size of the current block, the shape of the current block, the flipping method information of the neighboring block, the coding block flag of the current block, and whether the transform skip mode of the current block is used.
  • entropy encoding/decoding may be performed. For example, when the coding block flag of the current block is 0, entropy encoding/decoding of the flipping method information may be omitted and may not be signaled.
  • the flipping method information may be prediction-encoded/decoded from the flipping method information of a block reconstructed around the current block during entropy encoding/decoding.
  • the flipping method information may be signaled based on at least one of encoding parameters of the current block and the neighboring block.
  • the encoder determines some of the residual signal rearrangement methods mentioned in the above description regarding the shuffling step as the optimal rearrangement method, and information on the determined rearrangement method (flip method information) can be signaled to the decoder. have. For example, if four rearrangement methods are used, the encoder may signal the residual signal rearrangement method information to the decoder by 2 bits.
  • a rearrangement method with a high probability of occurrence can be encoded using fewer bits, and a rearrangement method with a low probability of occurrence can be encoded using a relatively large number of bits.
  • a truncated unary code eg, (0, 10, 110, 111) or (1, 01, 001, 000) may be signaled by using the four rearrangement methods in the order of the highest occurrence probability.
  • the occurrence probability of the rearrangement method may change according to encoding parameters such as the prediction mode of the current CU, the intra prediction mode (direction) of the PU, and the motion vector of the neighboring blocks, information on the rearrangement method according to the encoding parameters
  • An encoding method of (flip method information) may be used differently. For example, since the probability of occurrence of the rearrangement method may be different depending on the prediction mode of intra-prediction, a small number of bits are allocated to a rearrangement method with a high probability of occurrence for each intra mode, and a high probability of occurrence is assigned to a rearrangement method with a low probability of occurrence. Bits may be allocated or, in some cases, a rearrangement method with a very low probability of occurrence may not be used, and bits may not be allocated.
  • Prediction mode of the current block (inter mode or intra mode), intra prediction mode (including directional mode and non-directional mode), inter prediction mode, block size, block shape (square or non-square), luminance/color difference signal,
  • a rearrangement set including at least one of residual signal rearrangement methods may be configured according to at least one of transform mode information and the like. The rearrangement may mean flipping. Also, a rearrangement set including at least one of residual signal rearrangement methods may be configured based on at least one of encoding parameters of the current block and the neighboring block.
  • At least one of the following rearrangement sets is selected according to at least one of the prediction mode of the current block, the intra prediction mode, the inter prediction mode, the block size, the block shape, the presence of a luminance/chrominance signal, and the transformation mode information.
  • at least one of the rearrangement sets may be selected based on at least one of the encoding parameters of the current block and the neighboring block.
  • the rearrangement sets are 'no flipping', 'horizontal flipping', 'vertical flipping' and 'horizontal and vertical flipping' )' may include at least one of '. Examples of rearrangement sets are shown below.
  • At least one of residual signal rearrangement methods based on the rearrangement set may be used to rearrange the current block.
  • the residual signal in the rearrangement set according to at least one of the prediction mode of the current block, the intra prediction mode, the inter prediction mode, the block size, the block shape, the presence of a luminance/chrominance signal, the transformation mode information, the flipping method information, etc. At least one of the rearrangement methods may be selected. In addition, at least one of the residual signal rearrangement methods from the rearrangement set may be selected based on at least one of the encoding parameters of the current block and the neighboring block.
  • At least one rearrangement set may be configured according to the prediction mode of the current block. For example, when the prediction mode of the current block is intra prediction, a plurality of rearrangement sets may be configured, and when the prediction mode of the current block is inter prediction, one rearrangement set may be configured.
  • At least one rearrangement set may be configured according to whether the current block has a luminance/chrominance signal. For example, when the current block is a chrominance signal, one rearrangement set may be configured, and when the current block is a luminance signal, a plurality of rearrangement sets may be configured.
  • an index for a residual signal rearrangement method may be entropy encoded/decoded based on the rearrangement set.
  • the index may be entropy-encoded/decoded into a variable-length code or a fixed-length code.
  • binarization and debinarization of an index for a residual signal rearrangement method may be performed based on the rearrangement set.
  • the index may be binarized and inversely binarized into a variable length code or a fixed length code.
  • the rearrangement set may have the form of a table in the encoder and the decoder, and may be calculated through an equation.
  • the rearrangement set may be configured to be symmetric.
  • the table for the rearrangement set may be configured to have symmetry.
  • the table may be configured to have symmetry with respect to the intra prediction mode.
  • the rearrangement set may be configured according to at least one of whether the intra prediction mode is included in a specific range and whether the intra prediction mode is an even number or an odd number.
  • the tables below show examples of methods for encoding/decoding a residual signal rearrangement method according to the prediction mode of the current block and the intra prediction mode (direction) of the current block.
  • the use of at least one of the residual signal rearrangement methods may be indicated using the flipping method information.
  • Prediction mode In-Screen Prediction Direction (In-Screen Prediction Mode) Residual signal rearrangement method (One) (2) (3) (4) on screen Horizontal or near-horizontal mode 0 - One - on screen Vertical or near-vertical mode 0 One - - on screen 45 degree diagonal or close to 45 degree diagonal * - - - on screen Even 0 10 11 - on screen odd number 0 - 10 11 on screen otherwise 0 110 10 111 between screens N/A 00 01 10 11
  • (1) to (4) of the residual signal rearrangement method column of Table 1 are an index for a scanning/rearrangement order for the previously described residual signal rearrangement, an index for a predetermined angle value, or an index for a predetermined flipping method.
  • a residual signal rearrangement method such as an index may be specified.
  • the * mark in the residual signal rearrangement method column of Table 1 means that the corresponding rearrangement method is used implicitly without signaling, and the - mark means that the corresponding rearrangement method is not used in this case.
  • the implicit use of the rearrangement method may mean that the rearrangement method is used using transform mode information (sdst_flag or sdst flag) without entropy encoding/decoding of the index for the residual signal rearrangement method.
  • the residual signal rearrangement methods (1) to (4) include (1) no flipping, (2) horizontal flipping, and (3) vertical flipping. and (4) horizontal and vertical flipping, respectively. Also, 0, 1, 10, 11, 110, 111, etc. may be a result of binarization/inverse binarization used for entropy encoding/decoding of the residual signal rearrangement method. A fixed length code, a truncated unary code, or a unary code may be used as the binarization/inverse binarization method. As shown in Table 1, the current block corresponds to at least one of each prediction mode and each intra prediction mode (direction). In this case, at least one rearrangement method may be used in the encoder and the decoder.
  • the 45 degree diagonal direction may mean a direction from the current block toward the upper-left position or a direction from the upper-left position of the current block toward the current block.
  • At least one rearrangement method may be used in the encoder and the decoder.
  • the current block corresponds to at least one of each prediction mode and each intra prediction mode (direction)
  • at least one rearrangement method may be used in the encoder and the decoder.
  • the residual signal rearrangement method may mean a type of transformation.
  • both the horizontal transformation and the vertical transformation may refer to the first transformation kernel.
  • the horizontal transformation and the vertical transformation may mean a second transformation kernel and a first transformation kernel, respectively.
  • the horizontal transformation and the vertical transformation may mean a first transformation kernel and a second transformation kernel, respectively.
  • the horizontal transformation and the vertical transformation may mean a second transformation kernel and a second transformation kernel, respectively.
  • the first transform kernel may be DST-7
  • the second transform kernel may be DCT-8.
  • the intra prediction mode is the planar mode or the DC mode
  • 4 types of reconstruction are performed using truncated unary codes based on the frequency of occurrence.
  • Information on the arrangement method flip method information
  • the probability of occurrence of the rearrangement methods (1) to (4) can be seen equally, and a fixed length of 2 bits Entropy encoding/decoding of information on a rearrangement method is possible with code.
  • Arithmetic encoding/decoding may be used for the code.
  • entropy encoding/decoding may be performed for the code in a bypass mode without using arithmetic coding using a context model.
  • Transform/inverse transform is performed by selecting one of two methods: transforming/inverse transforming to DST-7 or transforming/inverse transforming to DCT-2 without flipping the region or CTU in the picture, the entire picture, or the current block in the picture group.
  • 1-bit flag information (transform mode information) indicating whether to use DST-7 or DCT-2 in units of current blocks may be entropy-encoded/decoded.
  • This method can be used when the energy of the residual signal increases as the distance from the reference sample increases, or to reduce computational complexity during encoding and decoding.
  • Information on the region in which this method is used may be signaled in a CTU unit or a slice unit or a PPS unit, an SPS unit, or another unit indicating a specific region, and a 1-bit flag may be signaled in an on/off format.
  • Transformation/inverse transformation can be performed by selecting one of five methods: DST-7 transformation/inverse transformation after performing DST-7 transformation, or DST-7 transformation/inverse transformation after performing horizontal and vertical flipping.
  • Information on which transformation to select from among the five methods may be implicitly selected using neighboring information of the current block, or may be explicitly selected through index (transformation mode information or flipping method information) signaling. .
  • Index signaling is 0 for DCT-2, 10 for DST-7 without flipping, 110 for DST-7 after horizontal flipping, 1110 for DST-7 after vertical flipping, and DST- after horizontal and vertical flipping. 7 may be signaled as a truncated unary code such as 1111. Also, the binarization of DCT-2 and DST-7 may be exchanged and signaled according to the size of the current block and surrounding information. In addition, the first binary number among the binary numbers may be signaled in units of CUs, and the remaining binary numbers may be signaled in units of TUs or PUs. In addition, information may be signaled with a fixed length code by distinguishing the first binary number and the second and third binary numbers among the binary numbers.
  • DCT-2 is 0, DST-7 without flipping is 000, DST-7 is 001 after horizontal flipping, DST-7 is 010 after vertical flipping, and DST after horizontal and vertical flips.
  • -7 may be signaled with transformation mode information or flipping method information.
  • transformation mode information or flipping method information may be signaled as 0 for DCT-2, 10 for DST-7 without flipping, and 11 for DST-7 after vertical flipping.
  • FIG. 8 is a diagram for explaining an embodiment of a decoding method using the SDST method according to the present disclosure.
  • a transform mode of the current block may be first determined ( 801 ), and residual data of the current block may be inversely transformed according to the transform mode of the current block ( 802 ).
  • the inverse-transformed residual data of the current block may be rearranged according to the transform mode of the current block ( 803 ).
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT).
  • SDST Shuffling Discrete Sine Transform
  • SDCT Shuffling Discrete Cosine Transform
  • DST Discrete Sine Transform
  • DCT Discrete Cosine Transform
  • the SDST mode may indicate a mode in which inverse transform is performed in the DST-7 transform mode and rearrangement of inverse transformed residual data is performed.
  • the SDCT mode may indicate a mode in which inverse transform is performed in DCT-2 transform mode and rearrangement of inverse transformed residual data is performed.
  • the DST mode may indicate a mode in which inverse transform is performed in the DST-7 transform mode and rearrangement of inverse transformed residual data is not performed.
  • the DCT mode may indicate a mode in which inverse transform is performed in the DCT-2 transform mode and rearrangement of inverse transformed residual data is not performed.
  • the step of rearranging the residual data may be performed.
  • DST-7 transform mode is performed in the DST-7 transform mode with respect to the above-described SDST and DST modes
  • other DST-based transform modes such as DST-1 and DST-2 may be used.
  • determining the transform mode of the current block ( 801 ) may include obtaining transform mode information of the current block from a bitstream and determining the transform mode of the current block based on the transform mode information. .
  • the determining of the transform mode of the current block ( 801 ) may be determined based on at least one of a prediction mode of the current block, depth information of the current block, a size of the current block, and a shape of the current block.
  • the transform mode of the current block may be determined as any one of SDST and SDCT.
  • the step of rearranging the inverse-transformed residual data of the current block ( 803 ) includes scanning the residual data arranged in the inverse-transformed current block in a first direction order and the residual data scanned in the first direction in a second direction. and rearranging in the inverse-transformed current block in order.
  • the first direction order is a raster scan order, an up-right diagonal scan order, a horizontal scan order, and a vertical scan order. It can be any one.
  • the first direction order may be defined as follows.
  • any one of the above-described directions may be selectively used.
  • the first direction and the second direction may be the same or different from each other.
  • step 803 of rearranging the inverse-transformed residual data of the current block the rearrangement may be performed in units of sub-blocks within the current block.
  • the residual data may be rearranged based on the position of the sub-block in the current block.
  • step 803 of rearranging the inverse-transformed residual data of the current block the inverse-transformed residual data arranged in the current block may be rearranged by rotating it at a predetermined angle.
  • the residual data arranged in the inverse-transformed current block may be rearranged by flipping it according to a flipping method.
  • the step 801 of determining the transformation mode of the current block may include obtaining flipping method information from a bitstream and determining a flipping method of the current block based on the flipping method information. have.
  • FIG. 9 is a diagram for explaining an embodiment of an encoding method using the SDST method according to the present disclosure.
  • a transformation mode of the current block may be determined ( 901 ).
  • the residual data of the current block may be rearranged according to the transform mode of the current block ( 902 ).
  • the rearranged residual data of the current block may be transformed according to the transformation mode of the current block ( S903 ).
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT). Since the SDST, SDCT, DST, and DCT modes have been described in FIG. 8, redundant descriptions are to be avoided.
  • SDST Shuffling Discrete Sine Transform
  • SDCT Shuffling Discrete Cosine Transform
  • DST Discrete Sine Transform
  • DCT Discrete Cosine Transform
  • the steps of rearranging residual data may be performed.
  • the determining of the transform mode of the current block ( 901 ) may be determined based on at least one of a prediction mode of the current block, depth information of the current block, a size of the current block, and a shape of the current block.
  • the transform mode of the current block may be determined to be any one of SDST and SDCT.
  • rearranging the residual data of the current block includes scanning residual data arranged in the current block in a first direction order and residual data scanned in the first direction according to a second direction order. It may include rearranging in the current block.
  • the rearrangement may be performed in units of sub-blocks within the current block.
  • the step of rearranging the residual data of the current block ( 902 ) may rearrange the residual data based on the position of the sub-block in the current block.
  • the residual data arranged in the current block may be rearranged by rotating it at a predetermined angle.
  • the residual data arranged in the current block may be rearranged by flipping it according to a flipping method.
  • the image decoder using the SDST method according to the present disclosure determines the transform mode of the current block, inversely transforms the residual data of the current block according to the transform mode of the current block, and inversely transforms the residual data of the current block according to the transform mode of the current block.
  • An inverse transform unit for rearranging the residual data may be included.
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT).
  • the image decoder using the SDST method according to the present disclosure determines the transform mode of the current block, rearranges the residual data of the current block according to the transform mode of the current block, and the rearranged current block according to the transform mode of the current block It may include an inverse transform unit for inverse transforming the residual data of .
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT).
  • the video encoder using the SDST method according to the present disclosure determines the transform mode of the current block, rearranges the residual data of the current block according to the transform mode of the current block, and rearranges the current block according to the transform mode of the current block and a transform unit that transforms the residual data of .
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT).
  • the image encoder using the SDST method according to the present disclosure determines the transform mode of the current block, transforms the residual data of the current block according to the transform mode of the current block, and the residual data of the transformed current block according to the transform mode of the current block It may include a conversion unit that rearranges the data.
  • the transform mode may include at least one of Shuffling Discrete Sine Transform (SDST), Shuffling Discrete Cosine Transform (SDCT), Discrete Sine Transform (DST), and Discrete Cosine Transform (DCT).
  • the bitstream generated by the encoding method using the SDST method according to the present disclosure is determined by determining a transform mode of a current block, rearranging residual data of the current block according to the transform mode of the current block, and transforming mode of the current block transforming the residual data of the current block rearranged according to may include at least one of
  • the transform used in this specification may be selected from a set of N predefined transform candidates for each block.
  • N may be a positive integer.
  • Each of the transform candidates may specify a first-order horizontal transform, a first-order vertical transform, and a quadratic transform (which may be the same as the identity transform).
  • the list of transform candidates may vary according to a block size and a prediction mode.
  • the selected transform may be signaled as follows. If the coding block flag is 1, a flag designating whether the first transform of the candidate list is used may be transmitted. If the flag specifying whether the first transform in the candidate list is used is 0, the following may apply: If the number of non-zero transform coefficient levels is greater than the threshold, a transform index indicating the transform candidate used may be transmitted. ; Otherwise the second transformation of the list may be used.
  • NSST which is a secondary transform
  • DCT-2 is used as a primary transform as a primary transform
  • horizontal transformation or vertical transformation can select DST-7 without signaling when horizontal or vertical is independently less than or equal to 4.
  • DST-7 may be used instead of DCT-2 for one-dimensional horizontal transformation.
  • DST-7 may be used instead of DCT-2 for one-dimensional vertical transformation.
  • DCT-2 can be used when the prediction mode in the screen is the LM (linear model) chroma mode.
  • K and L are positive integers, and may be, for example, 4 .
  • K and L may have the same or different values.
  • the residual block may be an intra-mode coded block.
  • the residual block may be a color difference block.
  • transform/inverse transform may be performed using a transform kernel or transform matrix on which flipping has been performed.
  • the flipping transform/inverse transform kernel or transform/inverse transform matrix may be a kernel or matrix predefined in the encoder/decoder after flipping is performed.
  • the flipping may be at least one of no flipping, horizontal flipping, vertical flipping, horizontal flipping, and vertical flipping.
  • information on whether to use the flipping transform/inverse transform may be signaled.
  • information on whether to use the flipped transform/inverse transform may be signaled for each of the horizontal transform/inverse transform and the vertical transform/inverse transform.
  • the transform/inverse transform may be performed by flipping the transform kernel or transform matrix during the encoding/decoding process.
  • the transform/inverse transform since the transform/inverse transform is performed by flipping the transform/inverse transform matrix, the same effect as performing flipping on the residual signal can be obtained.
  • the flipping may be at least one of no flipping, horizontal flipping, vertical flipping, horizontal flipping, and vertical flipping.
  • information on whether flipping is performed on the transform/inverse transform matrix may be signaled.
  • information on whether flipping is performed on the transform/inverse transform matrix may be signaled for each of a horizontal transform/inverse transform and a vertical transform/inverse transform.
  • the flipping method for the non-directional mode is before/after transform/inverse transform for the current block. Flipping can be performed.
  • the flipping method for the main directional mode is before transformation/inverse transformation of the current block. After /, flipping can be performed.
  • the main directional mode may be at least one of a vertical mode, a horizontal mode, and a diagonal mode.
  • all transform coefficients existing in the regions M/2 to M and N/2 to N may be set to a value of 0 when transforming or after transforming.
  • M and N are positive integers, and may be, for example, 64x64.
  • a right shift operation may be performed on the transform coefficients generated after the transform is performed by K. Also, a right shift operation by K may be performed on the temporary transform coefficients generated after performing the horizontal transform. Also, a right shift operation may be performed on the temporary transform coefficients generated after performing the vertical transformation by K.
  • K is a positive integer.
  • a right shift operation may be performed on the reconstructed residual signal generated after performing the inverse transform by K. Also, a right shift operation may be performed on the temporary transform coefficients generated after performing the transverse inverse transform by K. In addition, a right shift operation may be performed on the temporary transform coefficients generated after performing the vertical inverse transform by K.
  • K is a positive integer.
  • At least one of the flipping methods may be performed on at least one of signals generated before performing horizontal transformation/inverse transformation, after performing horizontal transformation/inverse transformation, before performing vertical transformation/inverse transformation, and after performing vertical transformation/inverse transformation have.
  • information on the flipping method used in the horizontal transformation/inverse transformation or vertical transformation/inverse transformation may be signaled.
  • DCT-4 may be used instead of DST-7.
  • 2 N size DCT-2 conversion / the inverse transform matrix of 2 N-1 size because DCT-4 used to extract a transformation / inverse transformation matrix, DCT-4 instead of the DCT-2 transformation / inverse transformation matrix only in the encoder / decoder of Since it can be stored, the memory requirement of the encoder/decoder can be reduced.
  • the DCT-4 transform/inverse transform logic of size 2N-1 can be utilized from the DCT-2 transform/inverse transform logic of size 2N, the chip area required to implement the encoder/decoder is reduced. can decrease.
  • the example is not applied only to the DCT-2 and the DCT-4, and a transformation matrix or transformation logic shared with each other in at least one of the types of DST transform/inverse transform and at least one of the types of DCT transform/inverse transform
  • the above example may be applied. That is, it is possible to extract and use another transform/inverse transform matrix or logic from one transform/inverse transform matrix or logic.
  • another transform/inverse transform matrix or logic may be extracted and used from one transform/inverse transform matrix or logic.
  • another transform/inverse transform matrix may be extracted from one transform/inverse transform matrix in at least one of a matrix unit, a basis vector unit, and a matrix coefficient unit.
  • transform/inverse transform when the current block is smaller than the MxN size, other transform/inverse transform may be used for transform/inverse transform of the current block instead of a specific transform/inverse transform. Also, when the current block is larger than the MxN size, other transform/inverse transform may be used for transform/inverse transform of the current block instead of a specific transform/inverse transform.
  • M and N are positive integers.
  • the specific transform/inverse transform and other transform/inverse transform may be transform/inverse transform predefined in the encoder/decoder.
  • At least one of the conversions of DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7, etc. used in this specification is DCT-4, DCT-8, DCT-2, DST
  • At least one of transforms calculated based on transforms such as -4, DST-1, and DST-7 may be replaced and used.
  • the calculated transform may be a transform calculated by changing coefficient values in a transform matrix such as DCT-4, DCT-8, DCT-2, DST-4, DST-1, and DST-7.
  • coefficient values in the transformation matrix such as DCT-4, DCT-8, DCT-2, DST-4, DST-1, and DST-7 may have integer values.
  • the transform of DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7, etc. may be an integer transform.
  • the calculated coefficient values in the transformation matrix may have integer values. That is, the calculated transformation may be an integer transformation.
  • the calculated transform performs a left shift operation by N on coefficient values in transform matrices such as DCT-4, DCT-8, DCT-2, DST-4, DST-1, and DST-7. one result, where N may be a positive integer.
  • the DCT-Q and DST-W transformations may include the DCT-Q and DST-W transformations and the DCT-Q and DST-W inverse transformations.
  • Q and W may have a positive value of 1 or more, for example, 1 to 9 may be used as the same meaning as I to IX.
  • DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7, etc. used in this specification is not limited only to the corresponding conversion, DCT-Q and DST-W conversion
  • At least one of the DCT-4, DCT-8, DCT-2, DST-4, DST-1, and DST-7 conversions may be used instead of the DCT-4, DCT-8, DCT-2, and DST-4 conversions.
  • Q and W may have a positive value of 1 or more, for example, 1 to 9 may be used as the same meaning as I to IX.
  • the transform as used herein may be performed in a square transform form in the case of a square block, and may be performed in a non-square transform form in the case of a non-square block, comprising at least one of a square block and a non-square block
  • transformation may be performed on the corresponding region in the form of a square transformation
  • non-square region including at least one square block and a non-square block
  • the transformation may be performed on the region in a non-square transformation form.
  • the information on the rearrangement method may be flipping method information.
  • transform as used herein may mean at least one of transform and inverse transform.
  • the encoder may perform transform on the residual block to generate transform coefficients, quantize the transform coefficients to generate quantized coefficient levels, and entropy-encode the quantized coefficient levels.
  • the decoder may entropy-decode the quantized coefficient level, inversely quantize the quantized coefficient level to generate a transform coefficient, and inversely transform the transform coefficient to generate a reconstructed residual block.
  • Transformation type information on which transform is used as the transform and inverse transform may be explicitly entropy-encoded/decoded. Also, the transform type information on which transform is used for the transform and the inverse transform may be implicitly determined based on at least one of the coding parameters without entropy coding/decoding.
  • the following shows an embodiment of an image encoding/decoding method and apparatus for performing at least one of transform and inverse transform in the present disclosure, and a recording medium storing a bitstream.
  • At least one of prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed by dividing a block into N sub-blocks using at least one or more of the following embodiments. .
  • the following mode may be referred to as a first sub-block partitioning mode (eg, ISP mode, Intra Sub-Partitions mode).
  • the block may mean at least one of a coding block, a prediction block, and a transform block.
  • the block may be a transform block.
  • the divided subblock may mean at least one of a coding block, a prediction block, and a transform block.
  • the divided subblock may be a transform block.
  • the block or the divided sub-block may be at least one of an intra-screen block, an inter-screen block, and an intra block copy block.
  • the block and sub-block may be blocks within the screen.
  • the block or the divided subblock may be at least one of an intra prediction block, an inter prediction block, and an intra block copy prediction block.
  • the sub-block may be an intra prediction block.
  • the block or the divided sub-block may be at least one of a luminance signal block and a chrominance signal block.
  • the block and sub-block may be a luminance signal block.
  • the block before division may be a coding block, and the divided subblock may be at least one of a prediction block and a transform block. That is, prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding of transform coefficients may be performed with the divided subblock size.
  • the block before division may be at least one of a coding block and a prediction block
  • the divided subblock may be a transform block. That is, prediction is performed with the block size before division, but transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding of transform coefficients may be performed with the divided subblock size.
  • the size (the horizontal size, the vertical size, or a combination of the horizontal size and the vertical size), and the shape (rectangle, square, etc.) of the block Whether to split into subblocks may be determined.
  • the current block when the current block is a 64x64 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 32x32 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 32x16 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 16x32 block, the current block may be divided into a plurality of sub-blocks.
  • the current block when the current block is a 4x4 block, the current block may not be divided into a plurality of subblocks.
  • the current block when the current block is a 2x4 block, the current block may not be divided into a plurality of subblocks.
  • the current block when the area of the current block is 32 or more, the current block may be divided into a plurality of sub-blocks.
  • the current block when the area of the current block is less than 32, the current block may not be divided into a plurality of sub-blocks.
  • the current block may be divided into a plurality of sub-blocks.
  • the current block may not be divided into a plurality of sub-blocks.
  • the block When the block is divided, the block may be divided into a plurality of sub-blocks in at least one of a vertical direction and a horizontal direction.
  • the current block may be divided into two sub-blocks in the vertical direction.
  • the current block may be divided into two sub-blocks in the horizontal direction.
  • the current block may be divided into four sub-blocks in the horizontal direction.
  • the current block may be divided into four sub-blocks in a vertical direction.
  • N When a block is divided into N sub-blocks, N may be a positive integer, for example, 2 or 4. In addition, N may be determined using at least one of an area, a size, a shape, and a division direction of the block.
  • the current block when it is a 4x8 or 8x4 block, it may be divided into two subblocks in a horizontal direction or two subblocks in a vertical direction.
  • the current block when it is a 16x8 or 16x16 block, it may be divided into 4 subblocks in a vertical direction or 4 subblocks in a horizontal direction.
  • the current block when the current block is an 8x32 or 32x32 block, it may be divided into 4 subblocks in the horizontal direction or 4 subblocks in the vertical direction.
  • the current block when the current block is a 16x4, 32x4, or 64x4 block, it may be divided into four sub-blocks in the vertical direction. Also, when the current block is a 16x4, 32x4, or 64x4 block, it may be divided into two subblocks in the horizontal direction.
  • the current block when the current block is a 4x16, 4x32, or 4x64 block, it may be divided into four sub-blocks in the horizontal direction. Also, when the current block is a 4x16, 4x32, or 4x64 block, it can be divided into two sub-blocks in the vertical direction.
  • the current block when the current block is Jx4, it may be divided into two sub-blocks in the horizontal direction.
  • J may be a positive integer.
  • the current block when the current block is 4xK, it may be divided into two sub-blocks in the vertical direction.
  • J may be a positive integer.
  • the current block when the current block is JxK (K>4), it may be divided into four sub-blocks in the horizontal direction.
  • J may be a positive integer.
  • the current block when the current block is JxK (J>4), it may be divided into four sub-blocks in the vertical direction.
  • J may be a positive integer.
  • the current block when the current block is JxK (K>4), it may be divided into four sub-blocks in the vertical direction.
  • J may be a positive integer.
  • the area of the current block when the area of the current block is 64, it may be divided into four sub-blocks in a horizontal direction or a vertical direction.
  • the current block when the current block is 16x4 and the shape of the current block is a rectangle, it may be divided into four sub-blocks in the vertical direction.
  • the current block when the current block is 1024 and the shape of the current block is a square, it may be divided into four sub-blocks in a horizontal or vertical direction.
  • the sub-block may have at least one of a minimum area, a minimum horizontal size, and a minimum vertical size.
  • the sub-block may have S as a minimum area.
  • S may be a positive integer, for example 16.
  • the sub-block may have J as a minimum horizontal size.
  • J may be a positive integer, for example 4 may be.
  • the sub-block may have K as a minimum vertical size.
  • K may be a positive integer, for example 4 may be.
  • Each of the divided subblocks may generate a reconstructed block by adding a residual block (or a reconstructed residual block) and a prediction block.
  • at least one of the reconstructed samples in each reconstructed subblock may be used as a reference sample for intra prediction of a subblock to be encoded/decoded later.
  • An encoding/decoding order of each subblock divided in a block may be determined according to at least one of the division directions.
  • the encoding/decoding order of each of the horizontally divided subblocks may be determined from the top direction to the bottom direction.
  • the encoding/decoding order of each of the vertically partitioned subblocks may be determined from a left direction to a right direction.
  • Each of the divided sub-blocks may share and use an intra prediction mode.
  • the intra prediction mode information for each subblock may be entropy-encoded/decoded only once in a block before splitting.
  • Each of the divided sub-blocks can be used by sharing the in-screen block copy mode.
  • the intra-screen block copy mode information for each sub-block may be entropy-encoded/decoded only once in the block before division.
  • subblock partitioning mode information In order to indicate a subblock partitioning mode in which the block is divided into N subblocks and at least one of prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding is performed, among subblock partitioning mode information and partitioning direction information At least one may be entropy encoded/decoded.
  • the sub-block division mode information may be used to indicate the sub-block division mode.
  • the subblock division mode (second value)
  • at least one of prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed by dividing a block into subblocks.
  • the subblock division mode is not used (a first value)
  • at least one of prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed without dividing the block into subblocks.
  • the first value may be 0, and the second value may be 1.
  • the division direction information may be used to indicate whether the sub-block division mode is to divide in a vertical direction or divide in a horizontal direction.
  • the division direction information is the first value
  • the block may be divided into sub-blocks in the horizontal direction, and the first value may be 0.
  • the division direction information is the second value
  • the block may be divided into sub-blocks in the vertical direction, and the second value may be 1.
  • the sub-block division mode information and the division direction information may not be entropy-encoded/decoded.
  • the sub-block division mode information may be inferred that the current block is not divided into sub-blocks.
  • the current block does not use the closest reference sample line (the first reference sample line) as the reference sample line, it may mean that the second or more reference sample lines are used as reference sample lines restored around the current block. .
  • At least one of the sub-block division mode information and the division direction information may be entropy-encoded/decoded.
  • At least one of the area, size, shape, and division direction of a coefficient group used for entropy encoding/decoding of transform coefficients may be determined based on at least one of the area, size, shape, and division direction of the subblock. have.
  • the area of the coefficient group may be determined to be 16.
  • the area of the coefficient group may be determined as 16.
  • the size of the coefficient group may be determined to be 1x16 or 16x1.
  • the size of the coefficient group may be determined to be 2x8 or 8x2.
  • the size of the coefficient group may be determined to be 4x4.
  • the horizontal size of the coefficient group may be determined to be 2.
  • the horizontal size of the coefficient group may be determined to be 4.
  • the vertical size of the coefficient group may be determined to be 2.
  • the vertical size of the coefficient group may be determined to be 4.
  • the shape of the coefficient group may be determined to be a rectangle.
  • the shape of the coefficient group may be determined as a square.
  • the size of the coefficient group may be determined as at least one of 4x4 and 8x2.
  • the size of the coefficient group may be determined as at least one of 4x4 and 2x8.
  • the size of the coefficient group may be determined as at least one of 4x4 and 8x2.
  • the size of the coefficient group may be determined as at least one of 4x4 and 2x8.
  • the size of the coefficient group may be determined to be 4x4.
  • the size of the coefficient group may be determined to be 4x4.
  • the size of the coefficient group may be determined to be 8x2.
  • the size of the coefficient group may be determined to be 2x8.
  • Each of the divided subblocks may entropy-encode/decode a coded block flag indicating whether at least one transform coefficient having a non-zero value exists in units of subblocks.
  • the coding block flag may indicate that at least one transform coefficient having a non-zero value exists.
  • the coding block flag of m - 1 subblocks from the front among the subblocks indicates that a non-zero transform coefficient does not exist
  • the mth It may be inferred that the coding block flag of the subblock has at least one transform coefficient having a non-zero value.
  • the coding block flag when the coding block flag is entropy-encoded/decoded in units of sub-blocks, the coding block flag may not be entropy-encoded/decoded in units of blocks before division.
  • the coding block flag when the coding block flag is entropy-encoded/decoded in units of blocks before division, the coding block flags may not be entropy-encoded/decoded in units of sub-blocks.
  • the size of the subblock for intra prediction and the size of the subblock for transformation may be different from each other. That is, subblock division for intra prediction and subblock division for transformation may be different from each other.
  • the predefined size may be 4xN or 8xN (N>4).
  • the sub-block division may mean vertical division.
  • the current block may be vertically divided into 4xN sub-blocks, and the transformation is performed.
  • the current block may be vertically divided into 1xN sub-blocks.
  • one-dimensional transformation/inverse transformation may be performed in order to perform transformation of 1xN size. That is, the one-dimensional transform/inverse transform may be performed based on at least one of a partition mode of the current block and a size of the current block.
  • the current block when the current block is in the first subblock division mode and the size of the current block is 8xN (N>4), for intra prediction, the current block may be vertically divided into 4xN subblocks, and transform For this purpose, the current block may be vertically divided into subblocks of 2xN size.
  • 2D transform/inverse transform may be performed to perform 2xN transform. That is, the two-dimensional transform/inverse transform may be performed based on at least one of the partition mode of the current block and the size of the current block.
  • N may mean a positive integer, and may be a positive integer smaller than 64 or 128.
  • the size of the current block may mean at least one of the size of the coding block of the current block, the size of the prediction block, and the size of the transform block.
  • the current block may be divided into two sub-blocks in the horizontal direction and may be divided into two sub-blocks in the vertical direction.
  • the current block may be divided into two subblocks in a horizontal direction and may be divided into two subblocks in a vertical direction.
  • the current block may be divided into four sub-blocks in the horizontal direction and into four sub-blocks in the vertical direction.
  • At least one of transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed by dividing a block into N sub-blocks using at least one or more of the following embodiments.
  • the following mode may be referred to as a second sub-block division mode (eg, SBT mode, Sub-Block Transform mode).
  • the block may mean at least one of a coding block, a prediction block, and a transform block.
  • the block may be a transform block.
  • the divided subblock may mean at least one of a coding block, a prediction block, and a transform block.
  • the divided subblock may be a transform block.
  • the block or the divided sub-block may be at least one of an intra-screen block, an inter-screen block, and an intra block copy block.
  • the block and sub-block may be inter-screen blocks.
  • the block or the divided subblock may be at least one of an intra prediction block, an inter prediction block, and an intra block copy prediction block.
  • the block may be an inter prediction block.
  • the block or the divided sub-block may be at least one of a luminance signal block and a chrominance signal block.
  • the block and sub-block may be a luminance signal block.
  • the block before division may be a coding block, and the divided subblock may be at least one of a prediction block and a transform block. That is, prediction, transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding of transform coefficients may be performed with the divided subblock size.
  • the block before division may be at least one of a coding block and a prediction block
  • the divided subblock may be a transform block. That is, prediction is performed with the block size before division, but transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding of transform coefficients may be performed with the divided subblock size.
  • the size (the horizontal size, the vertical size, or a combination of the horizontal size and the vertical size), and the shape (rectangle, square, etc.) of the block Whether to split into subblocks may be determined.
  • the current block when the current block is a 64x64 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 32x32 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 32x16 block, the current block may be divided into a plurality of subblocks.
  • the current block when the current block is a 16x32 block, the current block may be divided into a plurality of sub-blocks.
  • the current block when the current block is a 4x4 block, the current block may not be divided into a plurality of subblocks.
  • the current block when the current block is a 2x4 block, the current block may not be divided into a plurality of subblocks.
  • the current block when at least one of a horizontal size and a vertical size of the current block is greater than the maximum size of the transform block, the current block may not be divided into a plurality of subblocks. That is, when at least one of a horizontal size and a vertical size of the current block is smaller than or equal to the maximum size of the transform block, the second subblock division mode may be applied to the current block.
  • the current block when at least one of a horizontal size and a vertical size of the current block is greater than the maximum size of the transform block, the current block may not be divided into a plurality of subblocks. That is, when both the horizontal size and the vertical size of the current block are less than or equal to the maximum size of the transform block, the second subblock division mode may be applied to the current block.
  • the maximum size of the transform block may be determined based on the transform block maximum size information signaled in a higher level unit. For example, the maximum size of the transform block may be determined as either 64 or 32 based on the transform block maximum size information.
  • the current block when the area of the current block is 32 or more, the current block may be divided into a plurality of sub-blocks.
  • the current block when the area of the current block is less than 32, the current block may not be divided into a plurality of sub-blocks.
  • the current block may be divided into a plurality of sub-blocks.
  • the current block may not be divided into a plurality of sub-blocks.
  • the current block may be divided into a plurality of sub-blocks.
  • the current block may be divided into a plurality of sub-blocks.
  • the current block may not be divided into a plurality of sub-blocks.
  • the transform block of the current block may not be divided into a plurality of subblocks.
  • the GPM may be a prediction mode for performing prediction by dividing the prediction block of the current block into two subblocks.
  • the prediction block of the current block may be divided into two subblocks.
  • information on a splitting direction for splitting the prediction block of the current block into two subblocks may be entropy-encoded/decoded.
  • Prediction samples for the two subblocks may be generated by performing inter prediction on each of the two subblocks. Then, the prediction sample of the current block may be derived by weighting the prediction samples for the two generated subblocks.
  • the transform block of the current block may not be divided into at least two subblocks.
  • the transform block of the current block may be divided into at least two subblocks.
  • the block When the block is divided, the block may be divided into a plurality of sub-blocks in at least one of a vertical direction and a horizontal direction.
  • the current block may be divided into two sub-blocks in the vertical direction.
  • the current block may be divided into two sub-blocks in the horizontal direction.
  • N When a block is divided into N subblocks, N may be a positive integer, for example 2, and so on. In addition, N may be determined using at least one of an area, a size, a shape, and a division direction of the block.
  • the current block when it is a 4x8 or 8x4 block, it may be divided into two subblocks in a horizontal direction or two subblocks in a vertical direction.
  • the current block when it is a 16x8 or 16x16 block, it may be divided into two subblocks in a vertical direction or two subblocks in a horizontal direction.
  • the current block when it is an 8x32 or 32x32 block, it may be divided into two subblocks in a horizontal direction or two subblocks in a vertical direction.
  • the current block when the current block is Jx8, it may be divided into two sub-blocks in the horizontal direction.
  • J may be a positive integer.
  • the current block is 8xK, it may be divided into two sub-blocks in the vertical direction.
  • J may be a positive integer.
  • the current block when the current block is JxK (K>8), it may be divided into two sub-blocks in the horizontal direction.
  • J may be a positive integer.
  • the vertical size of the divided subblocks may have a ratio of 1:3 or 3:1.
  • the current block when the current block is J(J>8)xK, it may be divided into two sub-blocks in the vertical direction.
  • J may be a positive integer.
  • the horizontal size of the divided subblocks may have a ratio of 1:3 or 3:1.
  • the area of the current block when the area of the current block is 64, it may be divided into two sub-blocks in a horizontal direction or a vertical direction.
  • the current block when the current block is 16x4 and the shape of the current block is a rectangle, the current block may be divided into two sub-blocks in the vertical direction.
  • the current block when the current block is 1024 and the shape of the current block is a square, it may be divided into two sub-blocks in a horizontal direction or a vertical direction.
  • the sub-block may have at least one of a minimum area, a minimum horizontal size, and a minimum vertical size.
  • the sub-block may have S as a minimum area.
  • S may be a positive integer, for example 16.
  • the sub-block may have J as a minimum horizontal size.
  • J may be a positive integer, for example 4 may be.
  • the sub-block may have K as a minimum vertical size.
  • K may be a positive integer, for example 4 may be.
  • subblock partitioning mode information In order to indicate a subblock partitioning mode in which at least one of transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding is performed by dividing the block into N subblocks, subblock partitioning mode information, partitioning direction information, and subblocks At least one of location information and subblock size information may be entropy-encoded/decoded.
  • the sub-block division mode information may be used to indicate the sub-block division mode.
  • the subblock division mode (second value)
  • at least one of transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed by dividing a block into subblocks.
  • the subblock division mode is not used (a first value)
  • at least one of transform/inverse transform, quantization/inverse quantization, and entropy encoding/decoding may be performed without dividing the block into subblocks.
  • the first value may be 0, and the second value may be 1.
  • the division direction information may be used to indicate whether the sub-block division mode is to divide in a vertical direction or divide in a horizontal direction.
  • the division direction information is the first value
  • the block may be divided into sub-blocks in the vertical direction, and the first value may be 0.
  • the division direction information is the second value
  • the block may be divided into sub-blocks in the horizontal direction, and the second value may be 1.
  • the subblock position information may be used to indicate which subblock residual signal is encoded/decoded among the divided subblocks.
  • the subblock position information is the first value
  • the residual signal of the first subblock may be encoded/decoded, and the first value may be 0.
  • the subblock position information is the second value
  • the residual signal of the second subblock may be encoded/decoded, and the second value may be 1.
  • the subblock position information is the first value
  • at least one of the coding block flag for the luminance signal and the coding block flag for the chrominance signal for the first subblock may be entropy-encoded/decoded.
  • At least one of a coding block flag for a luminance signal and a coding block flag for a chrominance signal for the second subblock may be entropy-encoded/decoded.
  • the subblock size information may be used to indicate whether the horizontal size or vertical size of the divided subblock is 1 ⁇ 2 or 1 ⁇ 4 of the horizontal size or vertical size of the block.
  • the residual signal indicated by the subblock position information may indicate that the horizontal size or vertical size of a subblock to be encoded/decoded is 1 ⁇ 2 of the horizontal size or vertical size of the block, A value of 1 may be 0.
  • the residual signal indicated by the sub-block position information may indicate that the horizontal size or vertical size of the sub-block to be encoded/decoded is 1 ⁇ 4 of the horizontal size or vertical size of the block, , the second value may be 1.
  • entropy encoding/decoding of the subblock size information may not be performed.
  • Each of the divided subblocks may generate a reconstructed block by adding a residual block (or a reconstructed residual block) and a prediction block.
  • An encoding/decoding order of each subblock divided in a block may be determined according to at least one of the division directions.
  • the encoding/decoding order of each of the horizontally divided subblocks may be determined from the top direction to the bottom direction.
  • the encoding/decoding order of each of the vertically partitioned subblocks may be determined from a left direction to a right direction.
  • Each of the divided subblocks may entropy-encode/decode a coded block flag indicating whether at least one transform coefficient having a non-zero value exists in units of subblocks.
  • the coding block flag may indicate that at least one transform coefficient having a non-zero value exists.
  • the coding block flag when the coding block flag is entropy-encoded/decoded in units of sub-blocks, the coding block flag may not be entropy-encoded/decoded in units of blocks before division.
  • the coding block flag when the coding block flag is entropy-encoded/decoded in units of blocks before division, the coding block flags may not be entropy-encoded/decoded in units of sub-blocks.
  • the residual signal can be entropy-encoded/decoded only for the subblock indicated by the subblock location information.
  • the residual signal may always exist in the subblock indicated by the subblock position information, it can be inferred that at least one transform coefficient having a non-zero value for the coding block flag exists.
  • a residual signal may not always exist in a subblock not indicated by the subblock location information, it can be inferred that at least one transform coefficient having a non-zero value of the coding block flag does not exist.
  • At least one of the area, size, shape, and division direction of a coefficient group used for entropy encoding/decoding of transform coefficients may be determined based on at least one of the area, size, shape, and division direction of the subblock. have.
  • the area of the coefficient group may be determined to be 16.
  • the area of the coefficient group may be determined as 16.
  • the size of the coefficient group may be determined to be 1x16 or 16x1.
  • the size of the coefficient group may be determined to be 2x8 or 8x2.
  • the size of the coefficient group may be determined to be 4x4.
  • the horizontal size of the coefficient group may be determined to be 2.
  • the horizontal size of the coefficient group may be determined to be 4.
  • the vertical size of the coefficient group may be determined to be 2.
  • the vertical size of the coefficient group may be determined to be 4.
  • the shape of the coefficient group may be determined to be a rectangle.
  • the shape of the coefficient group may be determined as a square.
  • the size of the coefficient group may be determined as at least one of 4x4 and 8x2.
  • the size of the coefficient group may be determined as at least one of 4x4 and 2x8.
  • the size of the coefficient group may be determined as at least one of 4x4 and 8x2.
  • the size of the coefficient group may be determined as at least one of 4x4 and 2x8.
  • the size of the coefficient group may be determined to be 4x4.
  • the size of the coefficient group may be determined to be 4x4.
  • the size of the coefficient group may be determined to be 8x2.
  • the size of the coefficient group may be determined to be 2x8.
  • an area of a coefficient group used for entropy encoding/decoding of transform coefficients may be determined as a predefined value.
  • the predefined value may be 4 or 16.
  • the area or size of the transform coefficient group may be determined based on the size of the current block regardless of the color component of the current block.
  • the size of the current block may include at least one of a horizontal size and a vertical size of the current block.
  • the size of the coefficient group may be determined to be 2x2.
  • the size of the coefficient group may be determined to be 2x2.
  • the current block may be divided into two sub-blocks (1 ⁇ 2 or 1 ⁇ 4 of the vertical size) in the horizontal direction, and two sub-blocks ( It can be divided into 1 ⁇ 2 or 1 ⁇ 4 of the horizontal size.
  • a gray shade may mean a block in which a residual signal is encoded/decoded among sub-blocks, and the corresponding block may be indicated using sub-block position information.
  • the information on whether to use the sub-block division mode may mean at least one of the first sub-block division mode and the second sub-block division mode.
  • At this time, at least one of the parameter set and the header is a video parameter set, a decoding parameter set, a sequence parameter set, an adaptation parameter set, a picture parameter set ( It may be at least one of a picture parameter set, a picture header, a slice header, a tile group header, a tile header, and the like.
  • information on whether to use the sub-block division mode may be entropy-encoded/decoded in a video parameter set.
  • information on whether to use the sub-block division mode may be entropy-encoded/decoded from the sequence parameter set.
  • information on whether to use the sub-block division mode may be entropy-encoded/decoded in a sequence parameter set.
  • information on whether to use the subblock splitting mode may be entropy-encoded/decoded in an adaptation parameter set or an adaptive header.
  • information on whether to use the sub-block division mode may be entropy-encoded/decoded in a picture parameter set or a picture header.
  • information on whether to use the subblock splitting mode may be entropy-encoded/decoded in a slice header.
  • information on whether to use the subblock splitting mode may be entropy-encoded/decoded in the tile group header.
  • information on whether the subblock division mode is used may be entropy encoded/decoded in the tile header.
  • a transform/inverse transform type for each block or subblock may be determined using at least one or more of the following embodiments.
  • the matrix-based intra-picture prediction may mean matrix-based intra-picture prediction.
  • a one-dimensional transformation type indicating at least one of a transformation type and a vertical transformation type may be determined.
  • two-dimensional (2D) indicating a combination of a horizontal transformation type and a vertical transformation type based on at least one of an intra prediction mode, a prediction mode, a color component, a size, a shape, and sub-block division related information for a block or sub-block A combination of transformations can be determined.
  • a one-dimensional transform type a two-dimensional transform combination, and whether to use a transform determined according to at least one of intra-picture prediction mode, prediction mode, color component, size, shape, and sub-block division related information for a block or sub-block.
  • the block based on at least one of intra prediction mode, prediction mode, color component, size, shape, sub-block division related information, secondary transformation performance information, and matrix-based intra prediction performance information for a block or sub-block, the block Alternatively, when at least one of the one-dimensional transformation type, the two-dimensional transformation combination, and whether to use the transformation is determined to be used for the subblock, the information on the one-dimensional transformation type, the information on the two-dimensional transformation combination, and the information on whether the transformation is used is entropy It may not be encoded/decoded.
  • At least one of a type of one-dimensional transform used for a block or sub-block, a combination of two-dimensional transforms, and whether to use a transform may be implicitly determined according to a preset rule in the encoder/decoder.
  • the preset rule may be set based on an encoding parameter in the encoder/decoder.
  • the matrix-based intra prediction may refer to an intra prediction mode in which a prediction block is generated by performing at least one of a boundary averaging process, a matrix vector multiplication process, and a linear interpolation process.
  • the transform may mean at least one of transform and inverse transform.
  • a block may mean each sub-block divided in the block.
  • the primary transform is performed on the residual block and among DCT-J and DST-K-based integer transforms such as DCT-2, DCT-8, DST-7, DCT-4, and DST-4 to generate transform coefficients.
  • DCT-J and DST-K-based integer transforms such as DCT-2, DCT-8, DST-7, DCT-4, and DST-4 to generate transform coefficients.
  • DCT-2, DCT-8, DST-7, DCT-4, and DST-4 can mean at least one.
  • J and K may be positive integers.
  • the first-order transformation may be performed using a transformation matrix extracted from at least one transformation matrix among DCT-J and DST-K-based integer transformations such as DCT-2, DCT-8, DST-7, DCT-4, and DST-4.
  • the first-order transformation may be performed using the extracted transformation matrix.
  • at least one of the coefficients in the extracted transformation matrix is at least one transformation matrix of DCT-J and DST-K based integer transformations such as DCT-2, DCT-8, DST-7, DCT-4, and DST-4. may be equal to at least one of my coefficients.
  • the extracted transformation matrix may be included in a transformation matrix to be extracted.
  • the extracted transformation matrix may be obtained by performing at least one of flipping and sign change from specific coefficients in a transformation matrix to be extracted.
  • DCT-J and DST-K-based integer transforms such as DCT-8, DST-7, DCT-4, and DST-4 may be extracted from the transform matrix of DCT-2 and used for the primary transform.
  • At least one of DCT-J, DST-K-based integer transforms such as DCT-2, DCT-8, DST-7, DCT-4, DST-4, etc. is DCT-2, DCT-8, DST-7, At least one of DCT-J and DST-K-based integer transforms such as DCT-4 and DST-4 may have different coefficients in a transform matrix.
  • a DCT-8-based integer transformation matrix may be derived by performing at least one of horizontal flipping and a sign change on at least one of DST-7 transformation matrix coefficients on the DST-7-based integer transformation matrix.
  • vertical flipping may be used instead of horizontal flipping.
  • a DST-7-based integer transform matrix may be derived.
  • vertical flipping may be used instead of horizontal flipping.
  • a DCT-4 based integer transform matrix may be derived by performing at least one of horizontal flipping and a sign change on at least one of the DST-4 transform matrix coefficients on the DST-4 based integer transform matrix.
  • vertical flipping may be used instead of horizontal flipping.
  • a DST-4 based integer transform matrix may be derived.
  • vertical flipping may be used instead of horizontal flipping.
  • the quadratic transform may refer to at least one of transforms that rotate at least one of transform coefficients based on an angle.
  • the secondary transformation may be performed after performing the primary transformation.
  • Secondary transformation may be performed on a coefficient of a low-frequency region in an upper left corner on a transform coefficient on which the primary transformation is performed in the encoder.
  • the size of the low-frequency region to which the second-order transform is applied may be determined based on the size of the transform block.
  • a second-order inverse transform may be performed before the first-order inverse transform is performed in the decoder.
  • the quadratic transform may mean including all inverse quadratic transforms.
  • the quadratic transform uses a non-separable transform kernel rather than a separable transform kernel (or type) in the horizontal and vertical directions, it may be called a Low Frequency Non-Separable Transform (LFNST).
  • LFNST Low Frequency Non-Separable Transform
  • the secondary transformation may be performed only for intra prediction encoding/decoding, and the secondary transformation kernel may be determined based on the intra prediction mode. Specifically, a transform set including a plurality of transform kernels may be determined based on the intra prediction mode. In addition, a transform kernel to be applied to the secondary transform may be determined from the transform set determined based on the index information.
  • the transform set may include four types of transform sets.
  • a transform set for the chrominance block may be determined based on the intra prediction mode of the luminance block corresponding to the chrominance block.
  • a transform set for the chrominance block may be determined as a PLANAR mode.
  • a transform set for the chrominance block may be determined as a DC mode.
  • a transform set for the chrominance block may be determined as a PLANAR mode.
  • a transform set for the chrominance block may be determined as a DC mode.
  • a quadratic transform kernel in the transform set may be determined using the secondary transform index information.
  • the quadratic transform kernel may mean a quadratic transform matrix.
  • Whether the transform is used may mean whether at least one of a primary transform and a secondary transform is used for the residual block. Whether to use a transform may include at least one of whether to use a primary transform and whether to use a secondary transform. Whether transform is used may mean whether transform skip mode is performed. Also, transform_skip_flag may mean a transform skip mode flag.
  • transform_skip_flag which is information on whether to use at least one of the primary transform and the secondary transform, is a first value (eg, 0)
  • transform_skip_flag which is information on whether to use at least one of the primary transform and the secondary transform
  • a second value eg, 1
  • the one-dimensional transformation type may mean a type (type) for the primary transformation, and may mean a horizontal transformation type trTypeHor or a vertical transformation type trTypeVer for at least one of the DCT-J and DST-K-based integer transformation types.
  • J and K may be positive integers.
  • a first transform to an N-th transform may be used as a type of one-dimensional transform.
  • N may be a positive integer of 2 or more.
  • the first transform may mean a DCT-2 based integer transform.
  • trTypeHor which is a transformation type for horizontal transformation
  • trTypeVer which is a transformation type for vertical transformation
  • Q and R may be at least one of a negative integer, 0, and a positive integer.
  • Q and R may be 0 and 0, respectively.
  • trTypeHor when trTypeHor is the first value, it may mean an integer horizontal transformation based on DCT-2.
  • trTypeVer when trTypeVer is the first value, it may mean an integer vertical transformation based on DCT-2.
  • the first value may be 0.
  • the second transform may mean at least one of DCT-J and DST-K-based integer transforms such as DCT-8, DST-7, DCT-4, and DST-4 that are not DCT-2 transforms.
  • J and K may be positive integers. That is, the second transform may mean at least one of transforms other than the first transform.
  • trTypeHor which is a transformation type for horizontal transformation
  • trTypeVer which is a transformation type for vertical transformation
  • T and U may be at least one of a negative integer, 0, and a positive integer.
  • T and U may each have a value of 1 or more and a value of 1 or more.
  • T and U may be greater than Q and R, respectively.
  • trTypeHor when trTypeHor is the second value, it may mean transverse integer conversion based on DST-7.
  • trTypeHor when trTypeHor is a third value, it may mean an integer horizontal transformation based on DCT-8.
  • trTypeVer when trTypeVer is the second value, it may mean integer vertical conversion based on DST-7.
  • trTypeVer when trTypeVer is the third value, it may mean an integer vertical transformation based on DCT-8.
  • the second value may be 1. Also, the third value may be 2.
  • DST-4 may be used instead of DST-7.
  • DCT-4 may be used instead of DCT-8.
  • the first transform may be a DCT-2 based integer transform.
  • the second transform may be a DST-7 based integer transform.
  • the third transform may be a DCT-8-based integer transform.
  • the second transformation may mean at least one of the second transformation and the third transformation.
  • the first transform may be a DCT-2 based integer transform.
  • the second transform may be a DST-4 based integer transform.
  • the third transform may be a DCT-4 based integer transform.
  • the second transformation may mean at least one of the second transformation and the third transformation.
  • the first transform is a DCT-2 based integer transform
  • the second transform to the Nth transform are DCT-J, such as DCT-8, DST-7, DCT-4, DST-4, which are non-DCT-2 transforms; It may mean at least one of DST-K-based integer transforms.
  • N may be a positive integer of 3 or more.
  • the first transform may be a DCT-2 based integer transform.
  • the second transform may be a DST-7-based integer transform extracted from a DCT-2 based integer transform matrix.
  • the third transform may be a DCT-8-based integer transform extracted from a DCT-2 based integer transform matrix.
  • the second transformation may mean at least one of the second transformation and the third transformation.
  • the first transform may be a DCT-2 based integer transform.
  • the second transform may be a DST-4 based integer transform extracted from a DCT-2 based integer transform matrix.
  • the third transform may be a DCT-4 based integer transform extracted from a DCT-2 based integer transform matrix.
  • the second transformation may mean at least one of the second transformation and the third transformation.
  • the first transform is a DCT-2 based integer transform
  • the second transform to the Nth transform are DCT-8, DST-7, DCT-4, DST-4, etc.
  • DCT- extracted from a DCT-2 based integer transform matrix It may mean at least one of J and DST-K based integer conversion.
  • N may be a positive integer of 3 or more.
  • the second transform may mean at least one of the second transform to the Nth transform.
  • At least one of DCT-J and DST-K-based integer transforms such as DCT-8, DST-7, DCT-4, and DST-4 may be used instead of the DCT-2 transform.
  • a two-dimensional transformation combination may mean a combination of primary transformations, and may mean a combination of a horizontal transformation type trTypeHor and a vertical transformation type trTypeVer for at least one of the DCT-J and DST-K-based integer transformation types. have.
  • the 2D transform combination may mean mts_idx, which is a multiple transform selection index.
  • the multiple transformation selection index may mean a multiple transformation selection index.
  • mts_idx when the first transformation is used for horizontal transformation and vertical transformation, mts_idx, which is a multiple transformation selection index, may have a value of P.
  • P may be at least one of a negative integer, 0, and a positive integer.
  • P may be 0.
  • trTypeHor and trTypeVer may have values of 0 and 0, respectively.
  • trTypeHor when mts_idx is 0, trTypeHor and trTypeVer may have values of 0 and 0, respectively.
  • trTypeHor when trTypeHor is the first value, it may mean an integer horizontal transformation based on DCT-2.
  • trTypeVer when trTypeVer is the first value, it may mean an integer vertical transformation based on DCT-2. The first value may be 0.
  • the multiple transform selection index mts_idx may have a value of S or more.
  • S may be at least one of a negative integer, 0, and a positive integer.
  • S may be 1.
  • S may be greater than P.
  • trTypeHor and trTypeVer may have a second value and a second value, respectively.
  • trTypeHor and trTypeVer may have a third value and a second value, respectively.
  • trTypeHor and trTypeVer may have a second value and a third value, respectively.
  • trTypeHor and trTypeVer may have a third value and a third value, respectively.
  • trTypeHor when trTypeHor is the second value, it may mean transverse integer conversion based on DST-7.
  • trTypeHor when trTypeHor is a third value, it may mean an integer horizontal transformation based on DCT-8.
  • trTypeVer when trTypeVer is the second value, it may mean integer vertical conversion based on DST-7.
  • trTypeVer when trTypeVer is the third value, it may mean an integer vertical transformation based on DCT-8.
  • the second value may be 1. Also, the third value may be 2.
  • DST-4 may be used instead of DST-7.
  • DCT-4 may be used instead of DCT-8.
  • a horizontal transform and a vertical transform may be DCT-2 based integer transforms, respectively.
  • the horizontal transform and the vertical transform may be integer transforms based on DST-7 and DST-7, respectively.
  • the horizontal transform and the vertical transform may be DCT-8 and DST-7 based integer transforms, respectively.
  • the horizontal transform and the vertical transform may be integer transforms based on DST-7 and DCT-8, respectively.
  • the horizontal transform and the vertical transform may be DCT-8 and DCT-8 based integer transforms, respectively.
  • the second transform may mean at least one of a second transform, a third transform, a fourth transform, and a fifth transform.
  • a horizontal transform and a vertical transform may each be a DCT-2 based integer transform.
  • the horizontal transform and the vertical transform may be integer transforms based on DST-4 and DST-4, respectively.
  • the horizontal transform and the vertical transform may be DCT-4 and DST-4 based integer transforms, respectively.
  • a horizontal transform and a vertical transform may be integer transforms based on DST-4 and DCT-4, respectively.
  • the horizontal transform and the vertical transform may be DCT-4 and DCT-4 based integer transforms, respectively.
  • the second transform may mean at least one of a second transform, a third transform, a fourth transform, and a fifth transform.
  • the horizontal transformation and the vertical transformation are DCT-2 based integer transformations, respectively
  • the second transformation to the N-th transformation are transformations in which the horizontal transformation and the vertical transformation are not DCT-2, respectively, DCT-8, DST- 7, DCT-4, DST-4, etc.
  • N may be a positive integer of 3 or more.
  • a horizontal transform and a vertical transform may be DCT-2 based integer transforms, respectively.
  • the second transform may be DST-7 and DST-7-based integer transforms in which the horizontal transform and the vertical transform are extracted from a DCT-2 based integer transform matrix, respectively.
  • the third transform may be DST-7-based integer transforms extracted from DCT-8 and DCT-2 based integer transform matrices in which horizontal transform and vertical transform are extracted from a DCT-2 based integer transform matrix, respectively.
  • the fourth transform may be DCT-8-based integer transforms extracted from the DST-7 and DCT-2 based integer transform matrices in which the horizontal transform and the vertical transform are extracted from the DCT-2 based integer transform matrix, respectively.
  • the fifth transform may be DCT-8 and DCT-8-based integer transforms in which the horizontal transform and the vertical transform are extracted from a DCT-2 based integer transform matrix, respectively.
  • the second transform may mean at least one of a second transform, a third transform, a fourth transform, and a fifth transform.
  • a horizontal transform and a vertical transform may each be a DCT-2 based integer transform.
  • the second transform may be DST-4 and DST-4 based integer transforms in which the horizontal transform and the vertical transform are extracted from a DCT-2 based integer transform matrix, respectively.
  • the third transform may be DST-4 based integer transforms extracted from DCT-4 and DCT-2 based integer transform matrices in which the horizontal transform and vertical transform are respectively extracted from a DCT-2 based integer transform matrix.
  • the fourth transform may be DCT-4 based integer transforms extracted from DST-4 and DCT-2 based integer transform matrices in which the horizontal transform and vertical transform are respectively extracted from a DCT-2 based integer transform matrix.
  • the fifth transform may be DCT-4 and DCT-4 based integer transforms in which the horizontal transform and the vertical transform are extracted from a DCT-2 based integer transform matrix, respectively.
  • the second transform may mean at least one of a second transform, a third transform, a fourth transform, and a fifth transform.
  • the horizontal transform and the vertical transform are DCT-2 based integer transforms, respectively, and the second to Nth transforms are DCT-8 in which the horizontal transform and the vertical transform are respectively extracted from the DCT-2 based integer transform matrix, It may mean at least one of DCT-J, DST-K-based integer conversion, such as DST-7, DCT-4, and DST-4.
  • N may be a positive integer of 3 or more.
  • the second transform may mean at least one of the second transform to the Nth transform.
  • At least one of DCT-J and DST-K-based integer transforms such as DCT-8, DST-7, DCT-4, and DST-4 may be used instead of the DCT-2 transform.
  • the prediction mode may mean a prediction mode of a block, and may mean which prediction mode is encoded/decoded among an intra prediction mode, an inter prediction mode, or an intra block copy (IBC) mode.
  • IBC intra block copy
  • the specific mode when a specific mode generates a prediction block by performing both intra prediction and inter prediction, the specific mode may mean an inter prediction mode.
  • the specific mode when a specific mode uses a current image as a reference image and a vector is used for prediction, the specific mode may mean an intra-screen block copy prediction mode.
  • the intra-picture block copy prediction mode may mean an IBC mode.
  • the IBC mode sets a reference region within the current image/slice/tile/tile group/CTU, indicates a position within the reference region with a block vector, and uses the region indicated by the block vector. It may mean a prediction mode.
  • the color component may mean a color component of a block, and may mean a luminance (Y, Luma) or color difference (Chroma) component.
  • the color difference component may mean at least one of a Cb component and a Cr component. That is, it may mean at least one of a Y component, a Cb component, and a Cr component.
  • it may mean at least one of an R component, a G component, and a B component.
  • encoding/decoding when encoding/decoding is performed by decomposing an image into several components, it may mean each of the decomposed components.
  • the subblock division related information may refer to information for indicating that a block is divided into a plurality of subblocks.
  • the subblock division related information may include at least one of subblock division mode information and division direction information.
  • the sub-block division related information may include at least one of sub-block division mode information, division direction information, sub-block location information, and sub-block size information.
  • the size may mean at least one of a block size, a subblock size, and a transform size.
  • the size may mean at least one of a horizontal size, a vertical size, a combination of a horizontal size, and a vertical size.
  • the transform size may mean a transform size used for a corresponding block.
  • the transform size may be less than or equal to the corresponding block size.
  • M and N may be positive integers and may have the same or different values.
  • M may have a size of S*N.
  • N may have a size of S*M.
  • S may be a positive integer.
  • M may mean a horizontal size and N may mean a vertical size.
  • a 32x32 size transformation may be performed on the upper left region within the block, and in this case, a 32x32 size quantization matrix may be used.
  • a 32x32 size transformation may be performed on the upper left region within the block, and in this case, a 32x32 size quantization matrix may be used.
  • a 16x32 size transformation may be performed on the upper left region within the block, and in this case, a 16x32 size quantization matrix may be used.
  • a 32x32 size transformation may be performed on the block, and in this case, a 32x32 size quantization matrix may be used.
  • the form may refer to at least one of a block form, a subblock form, and a transform form.
  • the shape may be a square shape or a non-square shape.
  • the square shape may mean a square shape.
  • the non-square shape may mean a rectangular shape.
  • the transform type may mean a transform type used in a corresponding block.
  • the transformation may have a non-square shape.
  • the transformation shape may be a square.
  • the shape of the transformation may be the same as or different from that of the corresponding block.
  • the shape of the quantization matrix may mean the shape of a quantization matrix used for a corresponding block.
  • the shape of the quantization matrix may be non-square.
  • the shape of the quantization matrix may be a square.
  • the shape of the quantization matrix may be the same as or different from that of the corresponding block.
  • the shape of the quantization matrix may be the same as or different from the shape of the transform.
  • a 32x32 square transform may be performed on the upper left region of the block, and in this case, a 32x32 square quantization matrix may be used.
  • a 16x16 square transform may be performed on the block, and in this case, a 16x16 square quantization matrix may be used.
  • a 16x4 non-square transform may be performed on the block, and in this case, a 16x4 quantization matrix may be used.
  • a 2x8 size transformation may be performed on the block, and in this case, a 2x8 size quantization matrix may be used.
  • a one-dimensional transform type used for a block or sub-block a two-dimensional transform combination, and whether to use a transform is determined.
  • a one-dimensional transformation type for at least one of a horizontal transformation and a vertical transformation used for a block or sub-block may be determined.
  • the first transformation may mean that trTypeHor or trTypeVer is the first value.
  • the first value may be 0.
  • X may be a positive integer, and may be 2 or 4, for example.
  • the horizontal transformation type or vertical transformation type may be determined as the first transformation indicating DCT-2 based integer transformation.
  • Y may be a positive integer, for example 16, 32, or 64.
  • the horizontal transformation type or vertical transformation type may be determined as the second transformation indicating the DST-7-based integer transformation.
  • the second transformation may mean that trTypeHor or trTypeVer is the second value.
  • the second value may be 1.
  • X may be a positive integer, and may be 2 or 4, for example.
  • Y may be a positive integer, for example 16, 32, or 64.
  • horizontal transformation or vertical transformation may not be performed.
  • Z may be a positive integer including 0, and may be 1, for example.
  • all subblocks divided in the block may be transformed using the same horizontal transformation type or the same vertical transformation type.
  • the one-dimensional transform type for at least one of a horizontal transform and a vertical transform used for a block or sub-block may be determined. That is, a transformation type for at least one of a horizontal transformation and a vertical transformation used for a subblock may be determined regardless of an intra prediction mode.
  • the conversion type may be selected as one of at least two conversion types.
  • a transformation type for at least one of horizontal transformation and vertical transformation may be determined based on the horizontal size or vertical size of the current block regardless of the intra prediction mode.
  • the subblock division mode may be a first subblock division mode (ISP mode) or a second subblock division mode (SBT mode).
  • At least one of a horizontal transformation type (trTypeHor) and a vertical transformation type (trTypeVer) for a block or subblock may be determined.
  • a transformation type for at least one of a horizontal transformation and a vertical transformation may be determined based on Table 4 irrespective of the intra prediction mode.
  • a one-dimensional transformation type may be determined based on the same standard for horizontal transformation and vertical transformation according to the horizontal size of the block and the vertical size of the block.
  • Conditions for determining horizontal transformation and vertical transformation may be the same regardless of the horizontal size of the block or the vertical size of the block. That is, the condition for determining the horizontal transformation and the condition for determining the vertical transformation may be the same.
  • the condition may mean comparing the horizontal size or vertical size of the current block with a specific positive integer.
  • logic for a condition for determining horizontal transformation and vertical transformation may be shared with each other, implementation complexity of the encoder/decoder may be reduced.
  • a transformation type for at least one of a horizontal transformation and a vertical transformation used in the subblock may be determined without performing comparison between the horizontal size and the vertical size of the current block to reduce computational complexity.
  • Table 4 determines the transformation type for at least one of the horizontal transformation and the vertical transformation used in the sub-block without performing a comparison between the horizontal and vertical sizes of the current block, thereby reducing the computational complexity.
  • a two-dimensional transform combination of a block or subblock may be determined by entropy encoding/decoding of mts_idx, which is a multiple transform selection index.
  • the encoder and the decoder may determine the horizontal transformation type (trTypeHor) and the vertical transformation type (trTypeVer) by using a preset two-dimensional transformation combination table.
  • the two-dimensional transformation combination may mean each item in the two-dimensional transformation combination table.
  • the multiple transform selection index, mts_idx may be entropy-encoded/decoded when a block is not divided into sub-blocks.
  • the multiple transformation selection index, mts_idx may be determined based on lfnst_idx, secondary transformation performance information. That is, the multiple transform selection index, mts_idx, may be entropy-encoded/decoded based on lfnst_idx, which is secondary transform performance information.
  • the multiple transform selection index mts_idx may be inferred as a first value (eg, 0). That is, when the multiple transform selection index mts_idx is not entropy-encoded/decoded, the multiple transform selection index mts_idx may be inferred as a first value (eg, 0).
  • whether to signal the multiple transform selection index mts_idx may be determined according to at least one of intra prediction explicit multiple transform selection permission information (sps_explicit_mts_intra_enabled_flag) and inter prediction explicit multiple transform selection permission information (sps_explicit_mts_inter_enabled_flag) have.
  • intra prediction explicit multiple transform selection permission information indicates that multiple transforms are allowed for the intra prediction block
  • the multiple transform selection index for the current block may be signaled have.
  • the intra prediction explicit multiple transform selection permission information indicates that multiple transforms are not allowed for the intra prediction block, the multiple transform selection index for the current block may not be signaled.
  • a multiple transform selection index for the current block may be signaled.
  • the inter prediction explicit multiple transform selection permission information indicates that multiple transforms are not allowed for the inter prediction block
  • the multiple transform selection index for the current block may not be signaled.
  • whether to signal the multiple transform selection index may be determined according to the intra prediction explicit multiple transform selection permission information and/or the inter prediction explicit multiple transform selection permission information.
  • the multiple transform selection index for the current block may not be signaled regardless of the intra prediction explicit multiple transform selection allow information and the inter prediction explicit multiple transform selection allow information. have.
  • the secondary transform/inverse transform may not be performed on the current block.
  • a secondary transform/inverse transform may be performed on the current block.
  • At least one of a horizontal transformation type (trTypeHor) and a vertical transformation type (trTypeVer) for a block or subblock may be determined.
  • a two-dimensional transformation combination table may be preset, and a two-dimensional transformation combination indicated by a multiple transformation selection index may be determined.
  • a one-dimensional transform type used for a block or sub-block a two-dimensional transform combination, and whether to use a transform is determined.
  • a one-dimensional transformation type for at least one of a horizontal transformation and a vertical transformation used for a block or sub-block may be determined.
  • the first transformation may mean that trTypeHor or trTypeVer is the first value.
  • the first value may be 0.
  • X may be a positive integer, and may be 2 or 4, for example.
  • the horizontal transformation type or vertical transformation type may be determined as the first transformation indicating DCT-2 based integer transformation.
  • Y may be a positive integer, for example 16, 32, or 64.
  • the horizontal transformation type or the vertical transformation type may be determined according to the following conditions.
  • the horizontal transformation type may be determined as a third transformation indicating DCT-8-based integer transformation
  • the vertical transformation type is It may be determined as the second transform indicating the DST-7-based integer transform.
  • the horizontal transformation type may be determined as the second transformation indicating the DST-7-based integer transformation
  • the vertical transformation type is It may be determined as the second transform indicating the DST-7-based integer transform.
  • the horizontal transformation type may be determined as the second transformation indicating the DST-7-based integer transformation
  • the vertical transformation type is It may be determined as a third transform indicating DCT-8-based integer transform.
  • the horizontal transformation type may be determined as the second transformation indicating the DST-7-based integer transformation
  • the vertical transformation type is It may be determined as the second transform indicating the DST-7-based integer transform.
  • the second transformation may mean that trTypeHor or trTypeVer is the second value.
  • the second value may be 1.
  • the third transformation may mean that trTypeHor or trTypeVer is a third value.
  • the third value may be 2.
  • X may be a positive integer, and may be 2 or 4, for example.
  • Y may be a positive integer, for example 16, 32, or 64.
  • horizontal transformation or vertical transformation may not be performed.
  • Z may be a positive integer including 0, and may be 1, for example.
  • At least one of a horizontal transformation type (trTypeHor) and a vertical transformation type (trTypeVer) for a block or subblock may be determined.
  • the first transformation may mean that trTypeHor or trTypeVer is the first value.
  • the first value may be 0.
  • X may be a positive integer, for example 2, 4, or 8.
  • the horizontal transformation type or vertical transformation type may be determined as the first transformation indicating DCT-2 based integer transformation.
  • Y may be a positive integer, for example, 8, 16, 32, or 64.
  • the horizontal transformation type or vertical transformation type may be determined as the second transformation indicating the DST-7-based integer transformation.
  • the second transformation may mean that trTypeHor or trTypeVer is the second value.
  • the second value may be 1.
  • X may be a positive integer, for example 2, 4, or 8.
  • Y may be a positive integer, for example, 8, 16, 32, or 64.
  • horizontal transformation or vertical transformation may not be performed.
  • Z may be a positive integer including 0, and may be 1, for example.
  • all subblocks divided in the block may be transformed using the same horizontal transformation type or the same vertical transformation type.
  • the one-dimensional transform type for at least one of a horizontal transform and a vertical transform used for a block or sub-block may be determined.
  • At least one of a horizontal transformation type (trTypeHor) and a vertical transformation type (trTypeVer) for a block or subblock may be determined.
  • a one-dimensional transform type used for a block or sub-block a two-dimensional transform combination, and whether to use a transform is determined.
  • a one-dimensional transformation type for at least one of a horizontal transformation and a vertical transformation used for a block or sub-block may be determined.
  • the first transformation may mean that trTypeHor or trTypeVer is the first value.
  • the first value may be 0.
  • X may be a positive integer, for example 2, 4, or 8.
  • the horizontal transformation type or vertical transformation type may be determined as the first transformation indicating DCT-2 based integer transformation.
  • Y may be a positive integer, for example, 8, 16, 32, or 64.
  • the horizontal transformation type or vertical transformation type may be determined as the second transformation indicating the DST-7-based integer transformation.
  • the second transformation may mean that trTypeHor or trTypeVer is the second value.
  • the second value may be 1.
  • X may be a positive integer, for example 2, 4, or 8.
  • Y may be a positive integer, for example, 8, 16, 32, or 64.
  • horizontal transformation or vertical transformation may not be performed.
  • Z may be a positive integer including 0, and may be 1, for example.
  • all subblocks divided in the block may be transformed using the same horizontal transformation type or the same vertical transformation type.
  • the one-dimensional transform type for at least one of a horizontal transform and a vertical transform used for a block or sub-block may be determined.
  • At least one of a horizontal transformation type (trTypeHor) and a vertical transformation type (trTypeVer) for a block or subblock may be determined.
  • a one-dimensional transform type used for a block or sub-block a two-dimensional transform combination, and whether to use a transform is determined.
  • a one-dimensional transformation type for at least one of a horizontal transformation and a vertical transformation used in a block or sub-block may be determined.
  • the prediction mode of a block or sub-block is an intra prediction mode or an intra block copy prediction mode
  • one-dimensional transformation of at least one of a horizontal transformation and a vertical transformation used for a block or sub-block based on at least one of the above embodiments You can decide the type of transformation.
  • transform/inverse transform type determination methods for a block or subblock may be performed, and at least one of the following scan methods may be performed after transforming or before performing inverse transform.
  • the encoder/decoder may perform at least one of the following scan methods on the quantized coefficient level or the quantized level on which at least one of the transform and quantization has been performed.
  • the quantized coefficient level may mean a result generated by performing transformation and quantization on the residual block. Also, the quantized level may mean a result generated by performing quantization on the residual block.
  • the quantized coefficient level and the quantized level may have the same meaning as each other, and may have the same meaning as the transform coefficient. That is, the quantized coefficient level, the quantized level, and the transform coefficient may mean a target when the residual block is entropy-encoded/decoded.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels by using a diagonal scan. Also, using a diagonal scan, a one-dimensional array of reconstructed coefficient levels can be aligned with quantized coefficient levels in a two-dimensional residual block.
  • the scan direction When the scan direction is from the lower left to the upper right, it may be referred to as an up-right diagonal scan. Also, when the scan direction is from the upper right to the lower left, it may be referred to as a down-left diagonal scan.
  • FIG. 14 shows the upper right scan among the diagonal scans.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels using a horizontal scan.
  • a horizontal scan can be used to align a one-dimensional array of reconstructed coefficient levels with quantized coefficient levels in a two-dimensional residual block.
  • the horizontal scan may be a method of preferentially scanning coefficients corresponding to the first row.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels using a vertical scan.
  • a vertical scan can be used to align a one-dimensional array of reconstructed coefficient levels with quantized coefficient levels in a two-dimensional residual block.
  • the vertical scan may be a method of preferentially scanning coefficients corresponding to the first column.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels by using a block-based diagonal scan.
  • a block-based diagonal scan using a block-based diagonal scan, a one-dimensional array of reconstructed coefficient levels can be aligned with quantized coefficient levels in a two-dimensional residual block.
  • the block size may be MxN.
  • at least one of M and N may be a positive integer and may be 4.
  • the block size may be the same size as a coefficient group used for transform coefficient encoding/decoding.
  • FIG. 17 shows a block-based upper right scan among block-based diagonal scans.
  • the block may mean a sub-block that is a sub-block divided in a specific block size. If the block-based scan is used, even between subblocks within a specific block size, subblocks may be scanned using the same scan method as the scan method within the block.
  • an 8x8 block is divided into 4x4 subblocks, and then the 4x4 subblocks are scanned using a diagonal scan, and coefficients in the subblocks are You can also scan using a diagonal scan.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels using block-based horizontal scan.
  • a one-dimensional array of reconstructed coefficient levels can be aligned with quantized coefficient levels in a two-dimensional residual block.
  • the block size may be 4x4, and may be a method of preferentially scanning blocks corresponding to the first row.
  • the block size may be MxN.
  • at least one of M and N may be a positive integer and may be 4.
  • the block size may be the same size as a coefficient group used for encoding/decoding transform coefficients.
  • the block-based horizontal scan may be a method of preferentially scanning blocks corresponding to the first row.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels using a block-based vertical scan.
  • a one-dimensional array of reconstructed coefficient levels can be aligned with quantized coefficient levels in a two-dimensional residual block.
  • the block size may be MxN.
  • at least one of M and N may be a positive integer and may be 4.
  • the block size may be the same size as a coefficient group used for encoding/decoding transform coefficients.
  • the block-based vertical scan may be a method of preferentially scanning blocks corresponding to the first column.
  • the scan corresponding to (a) can be used for a residual block of JxK size for the JxK block, and the scan corresponding to (b) is at least 8x8/16x16/32x32/64x64, etc. It can be used for a residual block of size MxN or larger for one block, or it can be used for a residual block of size MxN.
  • the J, K, M, and N may be positive integers. Also, J and K may be less than M and N, respectively. Also, JxK may be 4x4, and MxN may be 8x8.
  • the scanning method corresponding to the size of 8x8 can also be applied to the scanning method corresponding to the size larger than 8x8, and has a square shape.
  • the scan method can be applied not only to the residual block of , but also to the non-square residual block.
  • the encoder may perform a scan on the quantized coefficient levels in the residual block in order to align the quantized coefficient levels in the square/non-square-shaped two-dimensional residual block into a one-dimensional coefficient level array. Also, the decoder may perform a scan on the coefficient level in order to align the one-dimensional reconstructed coefficient level array to the quantized coefficient levels in the square/non-square-shaped two-dimensional residual block.
  • At least one of the quantized coefficient levels may be scanned.
  • quantized coefficient levels in a two-dimensional residual block may be arranged into a one-dimensional array of coefficient levels using a diagonal scan.
  • a one-dimensional array of reconstructed coefficient levels can be aligned with quantized coefficient levels in a two-dimensional residual block using a diagonal scan.
  • the direction of the diagonal scan may be from the lower left to the upper right, and may be from the upper right to the lower left, as in the example of FIG. 20 (a).
  • the scan direction is from the lower left to the upper right, it may be referred to as a diagonal scan. Also, when the scan direction is from the upper right to the lower left, it may be called a diagonal scan at the lower left.
  • Fig. 20 (a) shows an example of the upper right scan among the diagonal scans.
  • quantized coefficient levels in a two-dimensional residual block may be arranged in a one-dimensional array of coefficient levels using a vertical scan.
  • a one-dimensional array of reconstructed coefficient levels can be aligned with the quantized coefficient levels in a two-dimensional residual block using a vertical scan.
  • the vertical scan may be a method of preferentially scanning coefficients corresponding to the first column.

Abstract

본 개시에서, 현재 블록에 변환 스킵 모드가 적용되는지 여부를 나타내는 변환 스킵 모드 플래그를 획득하는 단계, 변환 스킵 모드 플래그에 따라, 현재 블록에 변환 스킵 모드가 적용될 경우, 현재 블록에 2차 변환/역변환이 적용되지 않음을 결정하는 단계, 및 변환 스킵 모드 플래그에 따라, 현재 블록에 변환 스킵 모드가 적용되지 않을 경우, 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 획득하고, 변환 행렬 색인에 따라, 현재 블록에 2차 변환/역변환이 적용되는지 여부를 결정하는 단계를 포함하는 비디오 복호화 방법이 제공된다.

Description

영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
본 개시는 영상의 부호화/복호화 방법 및 장치에 관한 것으로, 보다 상세하게는 변환을 이용하여 영상을 부호화/복호화하는 방법 및 장치에 관한 것이다.
최근 HD(High Definition) 영상 및 UHD(Ultra High Definition) 영상과 같은 고해상도, 고품질의 영상에 대한 수요가 다양한 응용 분야에서 증가하고 있다. 영상 데이터가 고해상도, 고품질이 될수록 기존의 영상 데이터에 비해 상대적으로 데이터량이 증가하기 때문에 기존의 유무선 광대역 회선과 같은 매체를 이용하여 영상 데이터를 전송하거나 기존의 저장 매체를 이용해 저장하는 경우, 전송 비용과 저장 비용이 증가하게 된다. 영상 데이터가 고해상도, 고품질화 됨에 따라 발생하는 이러한 문제들을 해결하기 위해서는 더 높은 해상도 및 화질을 갖는 영상에 대한 고효율 영상 부호화(encoding)/복호화(decoding) 기술이 요구된다.
영상 압축 기술로 현재 픽처의 이전 또는 이후 픽처로부터 현재 픽처에 포함된 화소값을 예측하는 화면 간 예측 기술, 현재 픽처 내의 화소 정보를 이용하여 현재 픽처에 포함된 화소값을 예측하는 화면 내 예측 기술, 잔차 신호의 에너지를 압축하기 위한 변환 및 양자화 기술, 출현 빈도가 높은 값에 짧은 부호를 할당하고 출현 빈도가 낮은 값에 긴 부호를 할당하는 엔트로피 부호화 기술 등 다양한 기술이 존재하고 이러한 영상 압축 기술을 이용해 영상 데이터를 효과적으로 압축하여 전송 또는 저장할 수 있다.
종래의 변환/역변환 방법에서는 하나의 변환/역변환 종류를 사용하거나, 다양한 변환/역변환 종류에 대해서 시그널링하는데 필요한 오버헤드로 인해 영상의 객관적인 화질 및 주관적인 화질에서 한계가 있다.
본 개시에서는 영상의 객관적인 화질 및 주관적인 화질 향상을 위해서, 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태 등에 기반하여 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 기반으로 감소된 2차 변환/역변환 행렬 세트, 감소된 2차 변환/역변환 행렬, 감소된 2차 변환/역변환 수행 여부 중 적어도 하나를 결정하는 영상 부호화/복호화 방법 및 장치를 제공한다.
본 개시에서, 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 획득하는 단계, 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계, 및 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 획득하고, 상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 단계를 포함하는 비디오 복호화 방법이 제공된다.
일 실시 예에 따르면, 상기 변환 스킵 모드 플래그를 획득하는 단계는, 휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그를 획득할 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는, 상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는, 상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는, 상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 비디오 복호화 방법은, 상기 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 변환 행렬 색인에 따라, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계, 및 상기 2차 변환 행렬에 따라, 상기 현재 블록에 2차 변환/역변환을 적용하는 단계를 더 포함할 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계는
상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라 상기 현재 블록의 2차 변환 행렬을 결정할 수 있다.
일 실시 예에 따르면, 상기 비디오 복호화 방법은, 상기 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보를 획득하는 단계, 및 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환/역변환이 생략됨을 결정하는 단계를 포함하고, 상기 변환 스킵 모드 플래그를 획득하는 단계는, 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 변환 스킵 모드 플래그를 획득할 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인은,
상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 획득될 수 있다.
일 실시 예에 따르면, 상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 단계는, 상기 변환 행렬 색인, 상기 현재 블록의 크기, 및 상기 변환 스킵 모드 플래그 중 적어도 하나에 따라 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정할 수 있다.
본 개시에서, 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 부호화하는 단계, 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계, 및 상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하고, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부에 따라, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계를 포함하는 비디오 부호화 방법이 제공된다.
일 실시 예에 따르면, 상기 변환 스킵 모드 플래그를 부호화하는 단계는,
휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그를 부호화하는 것을 특징으로 하는 비디오 부호화 방법.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는, 상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음을 결정하는 단계는, 상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음을 결정하는 단계는, 상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정할 수 있다.
일 실시 예에 따르면, 상기 변환 행렬 색인을 부호화하는 단계는, 상기 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계, 및 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부에 따라, 상기 변환 행렬 색인을 부호화할 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계는 상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라 상기 현재 블록의 2차 변환 행렬을 결정할 수 있다.
일 실시 예에 따르면, 상기 비디오 부호화 방법은, 상기 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보를 부호화하는 단계, 및 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환/역변환이 생략됨을 결정하는 단계를 포함하고, 상기 변환 스킵 모드 플래그를 부호화하는 단계는, 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 변환 스킵 모드 플래그를 부호화할 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계는, 상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 상기 변환 행렬 색인이 부호화할 수 있다.
본 개시에서, 비디오 부호화 방법에 의하여 비디오를 부호화함으로써 생성된 비트스트림이 저장된 컴퓨터로 판독가능한 기록매체에 있어서, 상기 비디오 부호화 방법은, 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 부호화하는 단계, 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계, 및 상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하고, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부에 따라, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 판독가능한 기록매체가 제공된다.
본 개시는 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태 등에 기반하여 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 기반으로 감소된 2차 변환/역변환 행렬 세트, 감소된 2차 변환/역변환 행렬, 감소된 2차 변환/역변환 수행 여부 중 적어도 하나를 결정하는 영상 부호화/복호화 방법 및 장치를 제공하여, 영상의 객관적인 화질 및 주관적인 화질 향상시킬 수 있다.
도 1은 본 개시가 적용되는 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 2는 본 개시가 적용되는 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 3은 영상을 부호화 및 복호화할 때의 영상의 분할 구조를 개략적으로 나타내는 도면이다.
도 4는 화면 내 예측 과정의 실시예를 설명하기 위한 도면이다.
도 5는 화면 간 예측 과정의 실시예를 설명하기 위한 도면이다.
도 6은 변환 및 양자화의 과정을 설명하기 위한 도면이다.
도 7은 화면 내 예측에 이용가능한 참조 샘플들을 설명하기 위한 도면이다.
도 8은 본 개시에 따른 SDST 방법을 이용한 복호화 방법의 일 실시예를 설명하기 위한 도면이다.
도 9는 본 개시에 따른 SDST 방법을 이용한 부호화 방법의 일 실시예를 설명하기 위한 도면이다.
도 10 내지 도 12는 본 개시에 따른 제1 부블록 분할 모드의 실시예들을 설명하기 위한 도면이다.
도 13은 본 개시에 따른 제2 부블록 분할 모드의 실시예를 설명하기 위한 도면이다.
도 14는 대각 스캔의 일 실시예를 설명하기 위한 도면이다.
도 15는 수평 스캔의 일 실시예를 설명하기 위한 도면이다.
도 16은 수직 스캔의 일 실시예를 설명하기 위한 도면이다.
도 17은 블록 기반 대각 스캔의 일 실시예를 설명하기 위한 도면이다.
도 18은 블록 기반 수평 스캔의 일 실시예를 설명하기 위한 도면이다.
도 19는 블록 기반 수직 스캔의 일 실시예를 설명하기 위한 도면이다.
도 20은 블록의 형태에 기초한 스캔의 다양한 실시예를 설명하기 위한 도면이다.
도 21은 화면 내 예측 모드를 설명하기 위한 도면이다.
도 22 내지 도 26은 본 개시의 일 실시예에 따른 변환을 이용한 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체를 구현하기 위한 부호화 과정(encoding process) 혹은 복호화 과정(decoding process)의 예이다.
도 27는 부호화기/복호화기에서 2차 변환 및/또는 2차 역변환이 수행되는 일 실시 예를 나타낸다.
도 28는 2차 변환 행렬의 일 실시 예를 나타낸다.
도 29는 감소된 2차 변환/역변환 과정을 나타낸다.
도 30 내지 도 32는 블록의 크기, 변환 행렬 세트 색인 및 변환 행렬 색인에 따라 변환 행렬을 유도하는 복수의 실시 예들을 나타낸다.
도 33 내지 도 36는 본 개시의 일 실시예에 따른 변환을 이용한 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체에 적용되는 비트스트림의 신택스 구조를 나타낸다.
도 37 내지 도 54는 변환 행렬 색인의 시그널링 조건에 대한 다양한 실시 예들을 제공한다.
도 55는 본 개시의 일 실시예에 따른 변환을 이용한 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체에 적용되는 비트스트림의 신택스 구조를 나타낸다.
도 56은 일 실시 예에 따른 비디오 복호화 방법을 도시한다.
도 57은 일 실시 예에 따른 비디오 부호화 방법을 도시한다.
본 개시에서, 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 획득하는 단계, 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계, 및 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 획득하고, 상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 단계를 포함하는 비디오 복호화 방법이 제공된다.
본 개시는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다. 후술하는 예시적 실시예들에 대한 상세한 설명은, 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 실시예를 실시할 수 있기에 충분하도록 상세히 설명된다. 다양한 실시예들은 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 개시의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 실시예의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 예시적 실시예들의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다.
본 개시에서 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 개시의 어떤 구성 요소가 다른 구성 요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있으나, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다거나 "직접 접속되어"있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 개시의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 개시의 본질에서 벗어나지 않는 한 본 개시의 권리범위에 포함된다.
본 개시에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 개시에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 즉, 본 개시에서 특정 구성을 “포함”한다고 기술하는 내용은 해당 구성 이외의 구성을 배제하는 것이 아니며, 추가적인 구성이 본 개시의 실시 또는 본 개시의 기술적 사상의 범위에 포함될 수 있음을 의미한다.
본 개시의 일부의 구성 요소는 본 개시에서 본질적인 기능을 수행하는 필수적인 구성 요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성 요소일 수 있다. 본 개시는 단지 성능 향상을 위해 사용되는 구성 요소를 제외한 본 개시의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 단지 성능 향상을 위해 사용되는 선택적 구성 요소를 제외한 필수 구성 요소만을 포함한 구조도 본 개시의 권리범위에 포함된다.
이하, 도면을 참조하여 본 개시의 실시 형태에 대하여 구체적으로 설명한다. 본 명세서의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하고, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
이하에서 영상은 동영상(video)을 구성하는 하나의 픽처(picture)를 의미할 수 있으며, 동영상 자체를 나타낼 수도 있다. 예를 들면, "영상의 부호화 및/또는 복호화"는 "동영상의 부호화 및/또는 복호화"를 의미할 수 있으며, "동영상을 구성하는 영상들 중 하나의 영상의 부호화 및/또는 복호화"를 의미할 수도 있다.
이하에서, 용어들 "동영상" 및 "비디오"는 동일한 의미로 사용될 수 있으며, 서로 교체되어 사용될 수 있다.
이하에서, 대상 영상은 부호화의 대상인 부호화 대상 영상 및/또는 복호화의 대상인 복호화 대상 영상일 수 있다. 또한, 대상 영상은 부호화 장치로 입력된 입력 영상일 수 있고, 복호화 장치로 입력된 입력 영상일 수 있다. 여기서, 대상 영상은 현재 영상과 동일한 의미를 가질 수 있다.
이하에서, 용어들 "영상", "픽처", "프레임(frame)" 및 "스크린(screen)"은 동일한 의미로 사용될 수 있으며, 서로 교체되어 사용될 수 있다.
이하에서, 대상 블록은 부호화의 대상인 부호화 대상 블록 및/또는 복호화의 대상인 복호화 대상 블록일 수 있다. 또한, 대상 블록은 현재 부호화 및/또는 복호화의 대상인 현재 블록일 수 있다. 예를 들면, 용어들 "대상 블록" 및 "현재 블록"은 동일한 의미로 사용될 수 있으며, 서로 교체되어 사용될 수 있다.
이하에서, 용어들 "블록" 및 "유닛"은 동일한 의미로 사용될 수 있으며, 서로 교체되어 사용될 수 있다. 또는 "블록"은 특정한 유닛을 나타낼 수 있다.
이하에서, 용어들 "영역(region)" 및 "세그먼트(segment)"는 서로 교체되어 사용될 수 있다.
이하에서, 특정한 신호는 특정한 블록을 나타내는 신호일 수 있다. 예를 들면, 원(original) 신호는 대상 블록을 나타내는 신호일 수 있다. 예측(prediction) 신호는 예측 블록을 나타내는 신호일 수 있다. 잔여(residual) 신호는 잔여 블록(residual block)을 나타내는 신호일 수 있다. 본 명세서에서 잔여 블록은 잔차 블록을 의미할 수 있다.
실시예들에서, 특정된 정보, 데이터, 플래그(flag), 색인(index) 및 요소(element), 속성(attribute) 등의 각각은 값을 가질 수 있다. 정보, 데이터, 플래그, 색인 및 요소, 속성 등의 값 "0"은 논리 거짓(logical false) 또는 제1 기정의된(predefined) 값을 나타낼 수 있다. 말하자면, 값 "0", 거짓, 논리 거짓 및 제1 기정의된 값은 서로 대체되어 사용될 수 있다. 정보, 데이터, 플래그, 색인 및 요소, 속성 등의 값 "1"은 논리 참(logical true) 또는 제2 기정의된 값을 나타낼 수 있다. 말하자면, 값 "1", 참, 논리 참 및 제2 기정의된 값은 서로 대체되어 사용될 수 있다. 본 명세서에서 색인은 인덱스와 동일한 의미일 수 있다.
행, 열 또는 색인(index)을 나타내기 위해 i 또는 j 등의 변수가 사용될 때, i의 값은 0 이상의 정수일 수 있으며, 1 이상의 정수일 수도 있다. 말하자면, 실시예들에서 행, 열 및 색인 등은 0에서부터 카운트될 수 있으며, 1에서부터 카운트될 수 있다.
용어 설명
부호화기(Encoder): 부호화(Encoding)를 수행하는 장치를 의미한다. 즉, 부호화 장치를 의미할 수 있다.
복호화기(Decoder): 복호화(Decoding)를 수행하는 장치를 의미한다. 즉, 복호화 장치를 의미할 수 있다.
블록(Block): 샘플(Sample)의 MxN 배열이다. 여기서 M과 N은 양의 정수 값을 의미할 수 있으며, 블록은 흔히 2차원 형태의 샘플 배열을 의미할 수 있다. 블록은 유닛을 의미할 수 있다. 현재 블록은 부호화 시 부호화의 대상이 되는 부호화 대상 블록, 복호화 시 복호화의 대상이 되는 복호화 대상 블록을 의미할 수 있다. 또한, 현재 블록은 부호화 블록, 예측 블록, 잔여 블록, 변환 블록 중 적어도 하나일 수 있다.
샘플(Sample): 블록을 구성하는 기본 단위이다. 비트 깊이 (bit depth, Bd)에 따라 0부터 2Bd - 1까지의 값으로 표현될 수 있다. 본 개시에서 샘플은 화소 또는 픽셀과 같은 의미로 사용될 수 있다. 즉, 샘플, 화소, 픽셀은 서로 같은 의미를 가질 수 있다.
유닛(Unit): 영상 부호화 및 복호화의 단위를 의미할 수 있다. 영상의 부호화 및 복호화에 있어서, 유닛은 하나의 영상을 분할한 영역일 수 있다. 또한, 유닛은 하나의 영상을 세분화된 유닛으로 분할하여 부호화 혹은 복호화 할 때 그 분할된 단위를 의미할 수 있다. 즉, 하나의 영상은 복수의 유닛들로 분할될 수 있다. 영상의 부호화 및 복호화에 있어서, 유닛 별로 기정의된 처리가 수행될 수 있다. 하나의 유닛은 유닛에 비해 더 작은 크기를 갖는 하위 유닛으로 더 분할될 수 있다. 기능에 따라서, 유닛은 블록(Block), 매크로블록(Macroblock), 부호화 트리 유닛(Coding Tree Unit), 부호화 트리 블록(Coding Tree Block), 부호화 유닛(Coding Unit), 부호화 블록(Coding Block), 예측 유닛(Prediction Unit), 예측 블록(Prediction Block), 잔여 유닛(Residual Unit), 잔여 블록(Residual Block), 변환 유닛(Transform Unit), 변환 블록(Transform Block) 등을 의미할 수 있다. 또한, 유닛은 블록과 구분하여 지칭하기 위해 휘도(Luma) 성분 블록과 그에 대응하는 색차(Chroma) 성분 블록 그리고 각 블록에 대한 구문요소를 포함한 것을 의미할 수 있다. 유닛은 다양한 크기와 형태를 가질 수 있으며, 특히 유닛의 형태는 정사각형뿐만 아니라 직사각형, 사다리꼴, 삼각형, 오각형 등 2차원으로 표현될 수 있는 기하학적 도형을 포함할 수 있다. 또한, 유닛 정보는 부호화 유닛, 예측 유닛, 잔여 유닛, 변환 유닛 등을 가리키는 유닛의 타입, 유닛의 크기, 유닛의 깊이, 유닛의 부호화 및 복호화 순서 등 중 적어도 하나 이상을 포함할 수 있다.
부호화 트리 유닛(Coding Tree Unit): 하나의 휘도 성분(Y) 부호화 트리 블록과 관련된 두 색차 성분(Cb, Cr) 부호화 트리 블록들로 구성된다. 또한, 상기 블록들과 각 블록에 대한 구문요소를 포함한 것을 의미할 수도 있다. 각 부호화 트리 유닛은 부호화 유닛, 예측 유닛, 변환 유닛 등의 하위 유닛을 구성하기 위하여 쿼드트리(quad tree), 이진트리(binary tree), 3분할트리(ternary tree) 등 하나 이상의 분할 방식을 이용하여 분할될 수 있다. 입력 영상의 분할처럼 영상의 복/부호화 과정에서 처리 단위가 되는 샘플 블록을 지칭하기 위한 용어로 사용될 수 있다. 여기서, 쿼드트리는 4분할트리(quarternary tree)를 의미할 수 있다.
부호화 블록의 크기가 소정의 범위 내에 속하는 경우에는 쿼드트리로만 분할이 가능할 수 있다. 여기서, 소정의 범위는 쿼드트리만으로 분할이 가능한 부호화 블록의 최대 크기 및 최소 크기 중 적어도 하나로 정의될 수 있다. 쿼드트리 형태의 분할이 허용되는 부호화 블록의 최대/최소 크기를 나타내는 정보는 비트스트림을 통해 시그널링될 수 있고, 해당 정보는 시퀀스, 픽처 파라미터, 타일 그룹, 또는 슬라이스(세그먼트) 중 적어도 하나의 단위로 시그널링될 수 있다. 또는, 부호화 블록의 최대/최소 크기는 부호화기/복호화기에 기-설정된 고정된 크기일 수도 있다. 예를 들어, 부호화 블록의 크기가 256x256 내지 64x64 에 해당하는 경우에는 쿼드트리로만 분할이 가능할 수 있다. 또는 부호화 블록의 크기가 최대 변환 블록의 크기 보다 큰 경우에는 쿼드트리로만 분할이 가능할 수 있다. 이때, 상기 분할되는 블록은 부호화 블록 또는 변환 블록 중 적어도 하나일 수 있다. 이러한 경우에 부호화 블록의 분할을 나타내는 정보(예컨대, split_flag)는 쿼드트리 분할 여부를 나타내는 플래그일 수 있다. 부호화 블록의 크기가 소정의 범위 내에 속하는 경우에는 이진트리 또는 3분할트리로만 분할이 가능할 수 있다. 이 경우, 쿼드트리에 관한 상기 설명은 이진트리 또는 3분할트리에 대해서도 동일하게 적용될 수 있다.
부호화 트리 블록(Coding Tree Block): Y 부호화 트리 블록, Cb 부호화 트리 블록, Cr 부호화 트리 블록 중 어느 하나를 지칭하기 위한 용어로 사용될 수 있다.
주변 블록(Neighbor block): 현재 블록에 인접한 블록을 의미할 수 있다. 현재 블록에 인접한 블록은 현재 블록에 경계가 맞닿은 블록 또는 현재 블록으로부터 소정의 거리 내에 위치한 블록을 의미할 수 있다. 주변 블록은 현재 블록의 꼭지점에 인접한 블록을 의미할 수 있다. 여기에서, 현재 블록의 꼭지점에 인접한 블록이란, 현재 블록에 가로로 인접한 이웃 블록에 세로로 인접한 블록 또는 현재 블록에 세로로 인접한 이웃 블록에 가로로 인접한 블록일 수 있다. 주변 블록은 복원된 주변 블록을 의미할 수도 있다.
복원된 주변 블록(Reconstructed Neighbor Block): 현재 블록 주변에 공간적(Spatial)/시간적(Temporal)으로 이미 부호화 혹은 복호화된 주변 블록을 의미할 수 있다. 이때, 복원된 주변 블록은 복원된 주변 유닛을 의미할 수 있다. 복원된 공간적 주변 블록은 현재 픽처 내의 블록이면서 부호화 및/또는 복호화를 통해 이미 복원된 블록일 수 있다. 복원된 시간적 주변 블록은 참조 영상 내에서 현재 픽처의 현재 블록과 대응하는 위치의 복원된 블록 또는 그 주변 블록일 수 있다.
유닛 깊이(Depth): 유닛이 분할된 정도를 의미할 수 있다. 트리 구조(Tree Structure)에서 가장 상위 노드(Root Node)는 분할되지 않은 최초의 유닛에 대응할 수 있다. 가장 상위 노드는 루트 노드로 칭해질 수 있다. 또한, 가장 상위 노드는 최소의 깊이 값을 가질 수 있다. 이 때, 가장 상위 노드는 레벨(Level) 0의 깊이를 가질 수 있다. 레벨 1의 깊이를 갖는 노드는 최초의 유닛이 한 번 분할됨에 따라 생성된 유닛을 나타낼 수 있다. 레벨 2의 깊이를 갖는 노드는 최초의 유닛이 두 번 분할됨에 따라 생성된 유닛을 나타낼 수 있다. 레벨 n의 깊이를 갖는 노드는 최초의 유닛이 n번 분할됨에 따라 생성된 유닛을 나타낼 수 있다. 리프 노드(Leaf Node)는 가장 하위의 노드일 수 있으며, 더 분할될 수 없는 노드일 수 있다. 리프 노드의 깊이는 최대 레벨일 수 있다. 예를 들면, 최대 레벨의 기정의된 값은 3일 수 있다. 루트 노드는 깊이가 가장 얕고, 리프 노드는 깊이가 가장 깊다고 할 수 있다. 또한, 유닛을 트리 구조로 표현했을 때 유닛이 존재하는 레벨이 유닛 깊이를 의미할 수 있다.
비트스트림(Bitstream): 부호화된 영상 정보를 포함하는 비트의 열을 의미할 수 있다.
파라미터 세트(Parameter Set): 비트스트림 내의 구조 중 헤더(header) 정보에 해당한다. 비디오 파라미터 세트(video parameter set), 시퀀스 파라미터 세트(sequence parameter set), 픽처 파라미터 세트(picture parameter set), 적응 파라미터 세트(adaptation parameter set) 중 적어도 하나가 파라미터 세트에 포함될 수 있다. 또한, 파라미터 세트는 타일 그룹, 슬라이스(slice) 헤더 및 타일(tile) 헤더 정보를 포함할 수도 있다. 또한, 상기 타일 그룹은 여러 타일을 포함하는 그룹을 의미할 수 있으며, 슬라이스와 동일한 의미일 수 있다.
적응 파라미터 세트는 서로 다른 픽처, 서브픽처, 슬라이스, 타일 그룹, 타일, 혹은 브릭에서 참조하여 공유될 수 있는 파라미터 세트를 의미할 수 있다. 또한, 픽처 내 서브픽처, 슬라이스, 타일 그룹, 타일, 혹은 브릭에서는 서로 다른 적응 파라미터 세트를 참조하여, 적응 파라미터 세트 내 정보를 사용할 수 있다.
또한, 적응 파라미터 세트는 픽처 내 서브픽처, 슬라이스, 타일 그룹, 타일, 혹은 브릭에서는 서로 다른 적응 파라미터 세트의 식별자를 사용하여 서로 다른 적응 파라미터 세트를 참조할 수 있다.
또한, 적응 파라미터 세트는 서브픽처 내 슬라이스, 타일 그룹, 타일, 혹은 브릭에서는 서로 다른 적응 파라미터 세트의 식별자를 사용하여 서로 다른 적응 파라미터 세트를 참조할 수 있다.
또한, 적응 파라미터 세트는 슬라이스 내 타일, 혹은 브릭에서는 서로 다른 적응 파라미터 세트의 식별자를 사용하여 서로 다른 적응 파라미터 세트를 참조할 수 있다.
또한, 적응 파라미터 세트는 타일 내 브릭에서는 서로 다른 적응 파라미터 세트의 식별자를 사용하여 서로 다른 적응 파라미터 세트를 참조할 수 있다.
상기 서브픽처의 파라미터 세트 혹은 헤더에 적응 파라미터 세트 식별자에 대한 정보를 포함하여, 해당 적응 파라미터 세트 식별자에 대응하는 적응 파라미터 세트를 서브픽처에서 사용할 수 있다.
상기 타일의 파라미터 세트 혹은 헤더에 적응 파라미터 세트 식별자에 대한 정보를 포함하여, 해당 적응 파라미터 세트 식별자에 대응하는 적응 파라미터 세트를 타일에서 사용할 수 있다.
상기 브릭의 헤더에 적응 파라미터 세트 식별자에 대한 정보를 포함하여, 해당 적응 파라미터 세트 식별자에 대응하는 적응 파라미터 세트를 브릭에서 사용할 수 있다.
상기 픽처는 하나 이상의 타일 행과 하나 이상의 타일 열로 분할될 수 있다.
상기 서브픽처는 픽처 내에서 하나 이상의 타일 행과 하나 이상의 타일 열로 분할될 수 있다. 상기 서브픽처는 픽처 내에서 직사각형/정사각형 형태를 가지는 영역이며, 하나 이상의 CTU를 포함할 수 있다. 또한, 하나의 서브픽처 내에는 적어도 하나 이상의 타일/브릭/슬라이스가 포함될 수 있다.
상기 타일은 픽처 내에서 직사각형/정사각형 형태를 가지는 영역이며, 하나 이상의 CTU를 포함할 수 있다. 또한, 타일은 하나 이상의 브릭으로 분할될 수 있다.
상기 브릭은 타일 내에서 하나 이상의 CTU 행을 의미할 수 있다. 타일은 하나 이상의 브릭으로 분할될 수 있고, 각 브릭은 적어도 하나 이상의 CTU 행을 가질 수 있다. 2개 이상으로 분할되지 않는 타일도 브릭을 의미할 수 있다.
상기 슬라이스는 픽처 내에서 하나 이상의 타일을 포함할 수 있고, 타일 내 하나 이상의 브릭을 포함할 수 있다.
파싱(Parsing): 비트스트림을 엔트로피 복호화하여 구문요소(Syntax Element)의 값을 결정하는 것을 의미하거나, 엔트로피 복호화 자체를 의미할 수 있다.
심볼(Symbol): 부호화/복호화 대상 유닛의 구문요소, 부호화 파라미터(coding parameter), 변환 계수(Transform Coefficient)의 값 등 중 적어도 하나를 의미할 수 있다. 또한, 심볼은 엔트로피 부호화의 대상 혹은 엔트로피 복호화의 결과를 의미할 수 있다.
예측 모드(Prediction Mode): 화면 내 예측으로 부호화/복호화되는 모드 또는 화면 간 예측으로 부호화/복호화되는 모드를 지시하는 정보일 수 있다.
예측 유닛(Prediction Unit): 화면 간 예측, 화면 내 예측, 화면 간 보상, 화면 내 보상, 움직임 보상 등 예측을 수행할 때의 기본 단위를 의미할 수 있다. 하나의 예측 유닛은 더 작은 크기를 가지는 복수의 파티션(Partition) 또는 복수의 하위 예측 유닛들로 분할 될 수도 있다. 복수의 파티션들 또한 예측 또는 보상의 수행에 있어서의 기본 단위일 수 있다. 예측 유닛의 분할에 의해 생성된 파티션 또한 예측 유닛일 수 있다.
예측 유닛 파티션(Prediction Unit Partition): 예측 유닛이 분할된 형태를 의미할 수 있다.
참조 영상 리스트(Reference Picture List): 화면 간 예측 혹은 움직임 보상에 사용되는 하나 이상의 참조 영상들을 포함하는 리스트를 의미할 수 있다. 참조 영상 리스트의 종류는 LC (List Combined), L0 (List 0), L1 (List 1), L2 (List 2), L3 (List 3) 등이 있을 수 있으며, 화면 간 예측에는 1개 이상의 참조 영상 리스트들이 사용될 수 있다.
화면 간 예측 지시자(Inter Prediction Indicator): 현재 블록의 화면 간 예측 방향(단방향 예측, 쌍방향 예측 등)을 의미할 수 있다. 또는, 현재 블록의 예측 블록을 생성할 때 사용되는 참조 영상의 개수를 의미할 수 있다. 또는, 현재 블록에 대해 화면 간 예측 혹은 움직임 보상을 수행할 때 사용되는 예측 블록의 개수를 의미할 수 있다.
예측 리스트 활용 플래그(prediction list utilization flag): 특정 참조 영상 리스트 내 적어도 하나의 참조 영상을 이용하여 예측 블록을 생성하는지 여부를 나타낸다. 예측 리스트 활용 플래그를 이용하여 화면 간 예측 지시자를 도출할 수 있고, 반대로 화면 간 예측 지시자를 이용하여 예측 리스트 활용 플래그를 도출할 수 있다. 예를 들어, 예측 리스트 활용 플래그가 제1 값인 0을 지시하는 경우, 해당 참조 영상 리스트 내 참조 영상을 이용하여 예측 블록을 생성하지 않는 것을 나타낼 수 있고, 제2 값인 1을 지시하는 경우, 해당 참조 영상 리스트를 이용하여 예측 블록을 생성할 수 있는 것을 나타낼 수 있다.
참조 영상 색인(Reference Picture Index): 참조 영상 리스트에서 특정 참조 영상을 지시하는 색인을 의미할 수 있다.
참조 영상(Reference Picture): 화면 간 예측 혹은 움직임 보상을 위해서 특정 블록이 참조하는 영상을 의미할 수 있다. 또는, 참조 영상은 화면 간 예측 또는 움직임 보상을 위해 현재 블록이 참조하는 참조 블록을 포함하는 영상일 수 있다. 이하, 용어 "참조 픽처" 및 "참조 영상"은 동일한 의미로 사용될 수 있으며, 서로 교체되어 사용될 수 있다.
움직임 벡터(Motion Vector): 화면 간 예측 혹은 움직임 보상에 사용되는 2차원 벡터일 수 있다. 움직임 벡터는 부호화/복호화 대상 블록과 참조 블록 사이의 오프셋을 의미할 수 있다. 예를 들어, (mvX, mvY)는 움직임 벡터를 나타낼 수 있다. mvX는 수평(horizontal) 성분, mvY는 수직(vertical) 성분을 나타낼 수 있다.
탐색 영역(Search Range): 탐색 영역은 화면 간 예측 중 움직임 벡터에 대한 탐색이 이루어지는 2차원의 영역일 수 있다. 예를 들면, 탐색 영역의 크기는 MxN일 수 있다. M 및 N은 각각 양의 정수일 수 있다.
움직임 벡터 후보(Motion Vector Candidate): 움직임 벡터를 예측할 때 예측 후보가 되는 블록 혹은 그 블록의 움직임 벡터를 의미할 수 있다. 또한, 움직임 벡터 후보는 움직임 벡터 후보 리스트에 포함될 수 있다.
움직임 벡터 후보 리스트(Motion Vector Candidate List): 하나 이상의 움직임 벡터 후보들을 이용하여 구성된 리스트를 의미할 수 있다.
움직임 벡터 후보 색인(Motion Vector Candidate Index): 움직임 벡터 후보 리스트 내의 움직임 벡터 후보를 가리키는 지시자를 의미할 수 있다. 움직임 벡터 예측기(Motion Vector Predictor)의 색인(index)일 수 있다.
움직임 정보(Motion Information): 움직임 벡터, 참조 영상 색인, 화면 간 예측 지시자 뿐만 아니라 예측 리스트 활용 플래그, 참조 영상 리스트 정보, 참조 영상, 움직임 벡터 후보, 움직임 벡터 후보 색인, 머지 후보, 머지 색인 등 중 적어도 하나를 포함하는 정보를 의미할 수 있다.
머지 후보 리스트(Merge Candidate List): 하나 이상의 머지 후보들을 이용하여 구성된 리스트를 의미할 수 있다.
머지 후보(Merge Candidate): 공간적 머지 후보, 시간적 머지 후보, 조합된 머지 후보, 조합 양예측 머지 후보, 제로 머지 후보 등을 의미할 수 있다. 머지 후보는 화면 간 예측 지시자, 각 리스트에 대한 참조 영상 색인, 움직임 벡터, 예측 리스트 활용 플래그, 화면 간 예측 지시자 등의 움직임 정보를 포함할 수 있다.
머지 색인(Merge Index): 머지 후보 리스트 내 머지 후보를 가리키는 지시자를 의미할 수 있다. 또한, 머지 색인은 공간적/시간적으로 현재 블록과 인접하게 복원된 블록들 중 머지 후보를 유도한 블록을 지시할 수 있다. 또한, 머지 색인은 머지 후보가 가지는 움직임 정보 중 적어도 하나를 지시할 수 있다.
변환 유닛(Transform Unit): 변환, 역변환, 양자화, 역양자화, 변환 계수 부호화/복호화와 같이 잔여 신호(residual signal) 부호화/복호화를 수행할 때의 기본 단위를 의미할 수 있다. 하나의 변환 유닛은 분할되어 더 작은 크기를 가지는 복수의 하위 변환 유닛들로 분할될 수 있다. 여기서, 변환/역변환은 1차 변환/역변환 및 2차 변환/역변환 중 적어도 하나 이상을 포함할 수 있다.
스케일링(Scaling): 양자화된 레벨에 인수를 곱하는 과정을 의미할 수 있다. 양자화된 레벨에 대한 스케일링의 결과로 변환 계수를 생성할 수 있다. 스케일링을 역양자화(dequantization)라고도 부를 수 있다.
양자화 매개변수(Quantization Parameter): 양자화에서 변환 계수를 이용하여 양자화된 레벨(quantized level)을 생성할 때 사용하는 값을 의미할 수 있다. 또는, 역양자화에서 양자화된 레벨을 스케일링하여 변환 계수를 생성할 때 사용하는 값을 의미할 수도 있다. 양자화 매개변수는 양자화 스텝 크기(step size)에 매핑된 값일 수 있다.
잔여 양자화 매개변수(Delta Quantization Parameter): 예측된 양자화 매개변수와 부호화/복호화 대상 유닛의 양자화 매개변수의 차분(difference) 값을 의미할 수 있다.
스캔(Scan): 유닛, 블록 혹은 행렬 내 계수의 순서를 정렬하는 방법을 의미할 수 있다. 예를 들어, 2차원 배열을 1차원 배열 형태로 정렬하는 것을 스캔이라고 한다. 또는, 1차원 배열을 2차원 배열 형태로 정렬하는 것도 스캔 혹은 역 스캔(Inverse Scan)이라고 부를 수 있다.
변환 계수(Transform Coefficient): 부호화기에서 변환을 수행하고 나서 생성된 계수 값을 의미할 수 있다. 또는, 복호화기에서 엔트로피 복호화 및 역양자화 중 적어도 하나를 수행하고 나서 생성된 계수 값을 의미할 수도 있다. 변환 계수 또는 잔여 신호에 양자화를 적용한 양자화된 레벨 또는 양자화된 변환 계수 레벨도 변환 계수의 의미에 포함될 수 있다.
양자화된 레벨(Quantized Level): 부호화기에서 변환 계수 또는 잔여 신호에 양자화를 수행하여 생성된 값을 의미할 수 있다. 또는, 복호화기에서 역양자화를 수행하기 전 역양자화의 대상이 되는 값을 의미할 수도 있다. 유사하게, 변환 및 양자화의 결과인 양자화된 변환 계수 레벨도 양자화된 레벨의 의미에 포함될 수 있다.
넌제로 변환 계수(Non-zero Transform Coefficient): 값의 크기가 0이 아닌 변환 계수 혹은 값의 크기가 0이 아닌 변환 계수 레벨 혹은 양자화된 레벨을 의미할 수 있다.
양자화 행렬(Quantization Matrix): 영상의 주관적 화질 혹은 객관적 화질을 향상시키기 위해서 양자화 혹은 역양자화 과정에서 이용하는 행렬을 의미할 수 있다. 양자화 행렬을 스케일링 리스트(scaling list)라고도 부를 수 있다.
양자화 행렬 계수(Quantization Matrix Coefficient): 양자화 행렬 내의 각 원소(element)를 의미할 수 있다. 양자화 행렬 계수를 행렬 계수(matrix coefficient)라고도 할 수 있다.
기본 행렬(Default Matrix): 부호화기와 복호화기에서 미리 정의되어 있는 소정의 양자화 행렬을 의미할 수 있다.
비 기본 행렬(Non-default Matrix): 부호화기와 복호화기에서 미리 정의되지 않고, 사용자에 의해서 시그널링되는 양자화 행렬을 의미할 수 있다.
통계값(statistic value): 연산 가능한 특정 값들을 가지는 변수, 부호화 파라미터, 상수 등 적어도 하나에 대한 통계값은 해당 특정 값들의 평균값, 합값, 가중평균값, 가중합값, 최소값, 최대값, 최빈값, 중간값, 보간값 중 적어도 하나 이상일 수 있다.
도 1은 본 개시가 적용되는 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
부호화 장치(100)는 인코더, 비디오 부호화 장치 또는 영상 부호화 장치일 수 있다. 비디오는 하나 이상의 영상들을 포함할 수 있다. 부호화 장치(100)는 하나 이상의 영상들을 순차적으로 부호화할 수 있다.
도 1을 참조하면, 부호화 장치(100)는 움직임 예측부(111), 움직임 보상부(112), 인트라 예측부(120), 스위치(115), 감산기(125), 변환부(130), 양자화부(140), 엔트로피 부호화부(150), 역양자화부(160), 역변환부(170), 가산기(175), 필터부(180) 및 참조 픽처 버퍼(190)를 포함할 수 있다.
부호화 장치(100)는 입력 영상에 대해 인트라 모드 및/또는 인터 모드로 부호화를 수행할 수 있다. 또한, 부호화 장치(100)는 입력 영상에 대한 부호화를 통해 부호화된 정보를 포함하는 비트스트림을 생성할 수 있고, 생성된 비트스트림을 출력할 수 있다. 생성된 비트스트림은 컴퓨터 판독가능한 기록 매체에 저장될 수 있거나, 유/무선 전송 매체를 통해 스트리밍될 수 있다. 예측 모드로 인트라 모드가 사용되는 경우 스위치(115)는 인트라로 전환될 수 있고, 예측 모드로 인터 모드가 사용되는 경우 스위치(115)는 인터로 전환될 수 있다. 여기서 인트라 모드는 화면 내 예측 모드를 의미할 수 있으며, 인터 모드는 화면 간 예측 모드를 의미할 수 있다. 부호화 장치(100)는 입력 영상의 입력 블록에 대한 예측 블록을 생성할 수 있다. 또한, 부호화 장치(100)는 예측 블록이 생성된 후, 입력 블록 및 예측 블록의 차분(residual)을 사용하여 잔여 블록을 부호화할 수 있다. 입력 영상은 현재 부호화의 대상인 현재 영상으로 칭해질 수 있다. 입력 블록은 현재 부호화의 대상인 현재 블록 혹은 부호화 대상 블록으로 칭해질 수 있다.
예측 모드가 인트라 모드인 경우, 인트라 예측부(120)는 현재 블록의 주변에 이미 부호화/복호화된 블록의 샘플을 참조 샘플로서 이용할 수 있다. 인트라 예측부(120)는 참조 샘플을 이용하여 현재 블록에 대한 공간적 예측을 수행할 수 있고, 공간적 예측을 통해 입력 블록에 대한 예측 샘플들을 생성할 수 있다. 여기서 인트라 예측은 화면 내 예측을 의미할 수 있다.
예측 모드가 인터 모드인 경우, 움직임 예측부(111)는, 움직임 예측 과정에서 참조 영상으로부터 입력 블록과 가장 매치가 잘 되는 영역을 검색할 수 있고, 검색된 영역을 이용하여 움직임 벡터를 도출할 수 있다. 이때, 상기 영역으로 탐색 영역을 사용할 수 있다. 참조 영상은 참조 픽처 버퍼(190)에 저장될 수 있다. 여기서, 참조 영상에 대한 부호화/복호화가 처리되었을 때 참조 픽처 버퍼(190)에 저장될 수 있다.
움직임 보상부(112)는 움직임 벡터를 이용하는 움직임 보상을 수행함으로써 현재 블록에 대한 예측 블록을 생성할 수 있다. 여기서 인터 예측은 화면 간 예측 혹은 움직임 보상을 의미할 수 있다.
상기 움직임 예측부(111)과 움직임 보상부(112)는 움직임 벡터의 값이 정수 값을 가지지 않을 경우에 참조 영상 내의 일부 영역에 대해 보간 필터(Interpolation Filter)를 적용하여 예측 블록을 생성할 수 있다. 화면 간 예측 혹은 움직임 보상을 수행하기 위해 부호화 유닛을 기준으로 해당 부호화 유닛에 포함된 예측 유닛의 움직임 예측 및 움직임 보상 방법이 스킵 모드(Skip Mode), 머지 모드(Merge Mode), 향상된 움직임 벡터 예측(Advanced Motion Vector Prediction; AMVP) 모드, 현재 픽처 참조 모드 중 어떠한 방법인지 여부를 판단할 수 있고, 각 모드에 따라 화면 간 예측 혹은 움직임 보상을 수행할 수 있다.
감산기(125)는 입력 블록 및 예측 블록의 차분을 사용하여 잔여 블록을 생성할 수 있다. 잔여 블록은 잔여 신호로 칭해질 수도 있다. 잔여 신호는 원 신호 및 예측 신호 간의 차이(difference)를 의미할 수 있다. 또는, 잔여 신호는 원신호 및 예측 신호 간의 차이를 변환(transform)하거나, 양자화하거나, 또는 변환 및 양자화함으로써 생성된 신호일 수 있다. 잔여 블록은 블록 단위의 잔여 신호일 수 있다.
변환부(130)는 잔여 블록에 대해 변환(transform)을 수행하여 변환 계수(transform coefficient)를 생성할 수 있고, 생성된 변환 계수를 출력할 수 있다. 여기서, 변환 계수는 잔여 블록에 대한 변환을 수행함으로써 생성된 계수 값일 수 있다. 변환 생략(transform skip) 모드가 적용되는 경우, 변환부(130)는 잔여 블록에 대한 변환을 생략할 수도 있다.
변환 계수 또는 잔여 신호에 양자화를 적용함으로써 양자화된 레벨(quantized level)이 생성될 수 있다. 이하, 실시예들에서는 양자화된 레벨도 변환 계수로 칭해질 수 있다.
양자화부(140)는 변환 계수 또는 잔여 신호를 양자화 매개변수에 따라 양자화함으로써 양자화된 레벨을 생성할 수 있고, 생성된 양자화된 레벨을 출력할 수 있다. 이때, 양자화부(140)에서는 양자화 행렬을 사용하여 변환 계수를 양자화할 수 있다.
엔트로피 부호화부(150)는, 양자화부(140)에서 산출된 값들 또는 부호화 과정에서 산출된 부호화 파라미터(Coding Parameter) 값들 등에 대하여 확률 분포에 따른 엔트로피 부호화를 수행함으로써 비트스트림(bitstream)을 생성할 수 있고, 비트스트림을 출력할 수 있다. 엔트로피 부호화부(150)는 영상의 샘플에 관한 정보 및 영상의 복호화를 위한 정보에 대한 엔트로피 부호화를 수행할 수 있다. 예를 들면, 영상의 복호화를 위한 정보는 구문요소(syntax element) 등을 포함할 수 있다.
엔트로피 부호화가 적용되는 경우, 높은 발생 확률을 갖는 심볼(symbol)에 적은 수의 비트가 할당되고 낮은 발생 확률을 갖는 심볼에 많은 수의 비트가 할당되어 심볼이 표현됨으로써, 부호화 대상 심볼들에 대한 비트열의 크기가 감소될 수 있다. 엔트로피 부호화부(150)는 엔트로피 부호화를 위해 지수 골롬(exponential Golomb), CAVLC(Context-Adaptive Variable Length Coding), CABAC(Context-Adaptive Binary Arithmetic Coding)과 같은 부호화 방법을 사용할 수 있다. 예를 들면, 엔트로피 부호화부(150)는 가변 길이 부호화(Variable Length Coding/Code; VLC) 테이블을 이용하여 엔트로피 부호화를 수행할 수 있다. 또한 엔트로피 부호화부(150)는 대상 심볼의 이진화(binarization) 방법 및 대상 심볼/빈(bin)의 확률 모델(probability model)을 도출한 후, 도출된 이진화 방법, 확률 모델, 문맥 모델(Context Model)을 사용하여 산술 부호화를 수행할 수도 있다.
엔트로피 부호화부(150)는 변환 계수 레벨(양자화된 레벨)을 부호화하기 위해 변환 계수 스캐닝(Transform Coefficient Scanning) 방법을 통해 2차원의 블록 형태(form) 계수를 1차원의 벡터 형태로 변경할 수 있다.
부호화 파라미터(Coding Parameter)는 구문요소와 같이 부호화기에서 부호화되어 복호화기로 시그널링되는 정보(플래그, 색인 등)뿐만 아니라, 부호화 과정 혹은 복호화 과정에서 유도되는 정보를 포함할 수 있으며, 영상을 부호화하거나 복호화할 때 필요한 정보를 의미할 수 있다. 예를 들어, 유닛/블록 크기, 유닛/블록 깊이, 유닛/블록 분할 정보, 유닛/블록 형태, 유닛/블록 분할 구조, 쿼드트리 형태의 분할 여부, 이진트리 형태의 분할 여부, 이진트리 형태의 분할 방향(가로 방향 혹은 세로 방향), 이진트리 형태의 분할 형태(대칭 분할 혹은 비대칭 분할), 3분할트리 형태의 분할 여부, 3분할트리 형태의 분할 방향(가로 방향 혹은 세로 방향), 3분할트리 형태의 분할 형태(대칭 분할 혹은 비대칭 분할), 복합형트리 형태의 분할 여부, 복합형트리 형태의 분할 방향(가로 방향 혹은 세로 방향), 복합형트리 형태의 분할 형태(대칭 분할 혹은 비대칭 분할), 복합형트리 형태의 분할 트리(이진트리 혹은 3분할 트리), 예측 모드(화면 내 예측 또는 화면 간 예측), 화면 내 휘도 예측 모드/방향, 화면 내 색차 예측 모드/방향, 화면 내 분할 정보, 화면 간 분할 정보, 부호화 블록 분할 플래그, 예측 블록 분할 플래그, 변환 블록 분할 플래그, 참조 샘플 필터링 방법, 참조 샘플 필터 탭, 참조 샘플 필터 계수, 예측 블록 필터링 방법, 예측 블록 필터 탭, 예측 블록 필터 계수, 예측 블록 경계 필터링 방법, 예측 블록 경계 필터 탭, 예측 블록 경계 필터 계수, 화면 내 예측 모드, 화면 간 예측 모드, 움직임 정보, 움직임 벡터, 움직임 벡터 차분, 참조 영상 색인, 화면 간 예측 방향, 화면 간 예측 지시자, 예측 리스트 활용 플래그, 참조 영상 리스트, 참조 영상, 움직임 벡터 예측 색인, 움직임 벡터 예측 후보, 움직임 벡터 후보 리스트, 머지 모드 사용 여부, 머지 색인, 머지 후보, 머지 후보 리스트, 스킵(skip) 모드 사용 여부, 보간 필터 종류, 보간 필터 탭, 보간 필터 계수, 움직임 벡터 크기, 움직임 벡터 표현 정확도, 변환 종류, 변환 크기, 1차 변환 사용 여부 정보, 2차 변환 사용 여부 정보, 1차 변환 색인, 2차 변환 색인, 잔여 신호 유무 정보, 부호화 블록 패턴(Coded Block Pattern), 부호화 블록 플래그(Coded Block Flag), 양자화 매개변수, 잔여 양자화 매개변수, 양자화 행렬, 화면 내 루프 필터 적용 여부, 화면 내 루프 필터 계수, 화면 내 루프 필터 탭, 화면 내 루프 필터 모양/형태, 디블록킹 필터 적용 여부, 디블록킹 필터 계수, 디블록킹 필터 탭, 디블록킹 필터 강도, 디블록킹 필터 모양/형태, 적응적 샘플 오프셋 적용 여부, 적응적 샘플 오프셋 값, 적응적 샘플 오프셋 카테고리, 적응적 샘플 오프셋 종류, 적응적 루프 필터 적용 여부, 적응적 루프 필터 계수, 적응적 루프 필터 탭, 적응적 루프 필터 모양/형태, 이진화/역이진화 방법, 문맥 모델 결정 방법, 문맥 모델 업데이트 방법, 레귤러 모드 수행 여부, 바이패스 모드 수행 여부, 문맥 빈, 바이패스 빈, 중요 계수 플래그, 마지막 중요 계수 플래그, 계수 그룹 단위 부호화 플래그, 마지막 중요 계수 위치, 계수 값이 1보다 큰지에 대한 플래그, 계수 값이 2보다 큰지에 대한 플래그, 계수 값이 3보다 큰지에 대한 플래그, 나머지 계수 값 정보, 부호(sign) 정보, 복원된 휘도 샘플, 복원된 색차 샘플, 잔여 휘도 샘플, 잔여 색차 샘플, 휘도 변환 계수, 색차 변환 계수, 휘도 양자화된 레벨, 색차 양자화된 레벨, 변환 계수 레벨 스캐닝 방법, 복호화기 측면 움직임 벡터 탐색 영역의 크기, 복호화기 측면 움직임 벡터 탐색 영역의 형태, 복호화기 측면 움직임 벡터 탐색 횟수, CTU 크기 정보, 최소 블록 크기 정보, 최대 블록 크기 정보, 최대 블록 깊이 정보, 최소 블록 깊이 정보, 영상 디스플레이/출력 순서, 슬라이스 식별 정보, 슬라이스 타입, 슬라이스 분할 정보, 타일 그룹 식별 정보, 타일 그룹 타입, 타일 그룹 분할 정보, 타일 식별 정보, 타일 타입, 타일 분할 정보, 픽처 타입, 입력 샘플 비트 심도, 복원 샘플 비트 심도, 잔여 샘플 비트 심도, 변환 계수 비트 심도, 양자화된 레벨 비트 심도, 휘도 신호에 대한 정보, 색차 신호에 대한 정보 중 적어도 하나의 값 또는 조합된 형태가 부호화 파라미터에 포함될 수 있다.
여기서, 플래그 혹은 색인을 시그널링(signaling)한다는 것은 인코더에서는 해당 플래그 혹은 색인을 엔트로피 부호화(Entropy Encoding)하여 비트스트림(Bitstream)에 포함하는 것을 의미할 수 있고, 디코더에서는 비트스트림으로부터 해당 플래그 혹은 색인을 엔트로피 복호화(Entropy Decoding)하는 것을 의미할 수 있다.
부호화 장치(100)가 인터 예측을 통한 부호화를 수행할 경우, 부호화된 현재 영상은 이후에 처리되는 다른 영상에 대한 참조 영상으로서 사용될 수 있다. 따라서, 부호화 장치(100)는 부호화된 현재 영상을 다시 복원 또는 복호화할 수 있고, 복원 또는 복호화된 영상을 참조 영상으로 참조 픽처 버퍼(190)에 저장할 수 있다.
양자화된 레벨은 역양자화부(160)에서 역양자화(dequantization)될 수 있고. 역변환부(170)에서 역변환(inverse transform)될 수 있다. 역양자화 및/또는 역변환된 계수는 가산기(175)를 통해 예측 블록과 합해질 수 있다, 역양자화 및/또는 역변환된 계수와 예측 블록을 합함으로써 복원 블록(reconstructed block)이 생성될 수 있다. 여기서, 역양자화 및/또는 역변환된 계수는 역양자화 및 역변환 중 적어도 하나 이상이 수행된 계수를 의미하며, 복원된 잔여 블록을 의미할 수 있다.
복원 블록은 필터부(180)를 거칠 수 있다. 필터부(180)는 디블록킹 필터(deblocking filter), 샘플 적응적 오프셋(Sample Adaptive Offset; SAO), 적응적 루프 필터(Adaptive Loop Filter; ALF) 등 적어도 하나를 복원 샘플, 복원 블록 또는 복원 영상에 적용할 수 있다. 필터부(180)는 루프내 필터(in-loop filter)로 칭해질 수도 있다.
디블록킹 필터는 블록들 간의 경계에서 발생한 블록 왜곡을 제거할 수 있다. 디블록킹 필터를 수행할지 여부를 판단하기 위해 블록에 포함된 몇 개의 열 또는 행에 포함된 샘플을 기초로 현재 블록에 디블록킹 필터 적용할지 여부를 판단할 수 있다. 블록에 디블록킹 필터를 적용하는 경우 필요한 디블록킹 필터링 강도에 따라 서로 다른 필터를 적용할 수 있다.
샘플 적응적 오프셋을 이용하여 부호화 에러를 보상하기 위해 샘플 값에 적정 오프셋(offset) 값을 더할 수 있다. 샘플 적응적 오프셋은 디블록킹을 수행한 영상에 대해 샘플 단위로 원본 영상과의 오프셋을 보정할 수 있다. 영상에 포함된 샘플을 일정한 수의 영역으로 구분한 후 오프셋을 수행할 영역을 결정하고 해당 영역에 오프셋을 적용하는 방법 또는 각 샘플의 에지 정보를 고려하여 오프셋을 적용하는 방법을 사용할 수 있다.
적응적 루프 필터는 복원 영상 및 원래의 영상을 비교한 값에 기반하여 필터링을 수행할 수 있다. 영상에 포함된 샘플을 소정의 그룹으로 나눈 후 해당 그룹에 적용될 필터를 결정하여 그룹마다 차별적으로 필터링을 수행할 수 있다. 적응적 루프 필터를 적용할지 여부에 관련된 정보는 부호화 유닛(Coding Unit, CU) 별로 시그널링될 수 있고, 각각의 블록에 따라 적용될 적응적 루프 필터의 모양 및 필터 계수는 달라질 수 있다.
필터부(180)를 거친 복원 블록 또는 복원 영상은 참조 픽처 버퍼(190)에 저장될 수 있다. 필터부(180)를 거친 복원 블록은 참조 영상의 일부일 수 있다. 말하자면, 참조 영상은 필터부(180)를 거친 복원 블록들로 구성된 복원 영상일 수 있다. 저장된 참조 영상은 이후 화면 간 예측 혹은 움직임 보상에 사용될 수 있다.
도 2는 본 개시가 적용되는 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
복호화 장치(200)는 디코더, 비디오 복호화 장치 또는 영상 복호화 장치일 수 있다.
도 2를 참조하면, 복호화 장치(200)는 엔트로피 복호화부(210), 역양자화부(220), 역변환부(230), 인트라 예측부(240), 움직임 보상부(250), 가산기(255), 필터부(260) 및 참조 픽처 버퍼(270)를 포함할 수 있다.
복호화 장치(200)는 부호화 장치(100)에서 출력된 비트스트림을 수신할 수 있다. 복호화 장치(200)는 컴퓨터 판독가능한 기록 매체에 저장된 비트스트림을 수신하거나, 유/무선 전송 매체를 통해 스트리밍되는 비트스트림을 수신할 수 있다. 복호화 장치(200)는 비트스트림에 대하여 인트라 모드 또는 인터 모드로 복호화를 수행할 수 있다. 또한, 복호화 장치(200)는 복호화를 통해 복원된 영상 또는 복호화된 영상을 생성할 수 있고, 복원된 영상 또는 복호화된 영상을 출력할 수 있다.
복호화에 사용되는 예측 모드가 인트라 모드인 경우 스위치가 인트라로 전환될 수 있다. 복호화에 사용되는 예측 모드가 인터 모드인 경우 스위치가 인터로 전환될 수 있다.
복호화 장치(200)는 입력된 비트스트림을 복호화하여 복원된 잔여 블록(reconstructed residual block)을 획득할 수 있고, 예측 블록을 생성할 수 있다. 복원된 잔여 블록 및 예측 블록이 획득되면, 복호화 장치(200)는 복원된 잔여 블록과 및 예측 블록을 더함으로써 복호화 대상이 되는 복원 블록을 생성할 수 있다. 복호화 대상 블록은 현재 블록으로 칭해질 수 있다.
엔트로피 복호화부(210)는 비트스트림에 대한 확률 분포에 따른 엔트로피 복호화를 수행함으로써 심볼들을 생성할 수 있다. 생성된 심볼들은 양자화된 레벨 형태의 심볼을 포함할 수 있다. 여기에서, 엔트로피 복호화 방법은 상술된 엔트로피 부호화 방법의 역과정일 수 있다.
엔트로피 복호화부(210)는 변환 계수 레벨(양자화된 레벨)을 복호화하기 위해 변환 계수 스캐닝 방법을 통해 1차원의 벡터 형태 계수를 2차원의 블록 형태로 변경할 수 있다.
양자화된 레벨은 역양자화부(220)에서 역양자화될 수 있고, 역변환부(230)에서 역변환될 수 있다. 양자화된 레벨은 역양자화 및/또는 역변환이 수행된 결과로서, 복원된 잔여 블록으로 생성될 수 있다. 이때, 역양자화부(220)는 양자화된 레벨에 양자화 행렬을 적용할 수 있다.
인트라 모드가 사용되는 경우, 인트라 예측부(240)는 복호화 대상 블록 주변의 이미 복호화된 블록의 샘플 값을 이용하는 공간적 예측을 현재 블록에 대해 수행함으로써 예측 블록을 생성할 수 있다.
인터 모드가 사용되는 경우, 움직임 보상부(250)는 움직임 벡터 및 참조 픽처 버퍼(270)에 저장되어 있는 참조 영상을 이용하는 움직임 보상을 현재 블록에 대해 수행함으로써 예측 블록을 생성할 수 있다. 상기 움직임 보상부(250)는 움직임 벡터의 값이 정수 값을 가지지 않을 경우에 참조 영상 내의 일부 영역에 대해 보간 필터를 적용하여 예측 블록을 생성할 수 있다. 움직임 보상을 수행하기 위해 부호화 유닛을 기준으로 해당 부호화 유닛에 포함된 예측 유닛의 움직임 보상 방법이 스킵 모드, 머지 모드, AMVP 모드, 현재 픽처 참조 모드 중 어떠한 방법인지 여부를 판단할 수 있고, 각 모드에 따라 움직임 보상을 수행할 수 있다.
가산기(255)는 복원된 잔여 블록 및 예측 블록을 가산하여 복원 블록을 생성할 수 있다. 필터부(260)는 디블록킹 필터, 샘플 적응적 오프셋 및 적응적 루프 필터 등 적어도 하나를 복원 블록 또는 복원 영상에 적용할 수 있다. 필터부(260)는 복원 영상을 출력할 수 있다. 복원 블록 또는 복원 영상은 참조 픽처 버퍼(270)에 저장되어 인터 예측에 사용될 수 있다. 필터부(260)를 거친 복원 블록은 참조 영상의 일부일 수 있다. 말하자면, 참조 영상은 필터부(260)를 거친 복원 블록들로 구성된 복원 영상일 수 있다. 저장된 참조 영상은 이후 화면 간 예측 혹은 움직임 보상에 사용될 수 있다.
도 3은 영상을 부호화 및 복호화할 때의 영상의 분할 구조를 개략적으로 나타내는 도면이다. 도 3은 하나의 유닛이 복수의 하위 유닛으로 분할되는 실시예를 개략적으로 나타낸다.
영상을 효율적으로 분할하기 위해, 부호화 및 복호화에 있어서, 부호화 유닛(Coding Unit; CU)이 사용될 수 있다. 영상 부호화/복호화의 기본 단위로서 부호화 유닛이 사용될 수 있다. 또한, 영상 부호화/복호화 시 화면 내 예측 모드 및 화면 간 예측 모드가 구분되는 단위로 부호화 유닛을 사용할 수 있다. 부호화 유닛은 예측, 변환, 양자화, 역변환, 역양자화, 또는 변환 계수의 부호화/복호화의 과정을 위해 사용되는 기본 단위일 수 있다.
도 3을 참조하면, 영상(300)은 최대 부호화 유닛(Largest Coding Unit; LCU) 단위로 순차적으로 분할되고, LCU 단위로 분할 구조가 결정된다. 여기서, LCU는 부호화 트리 유닛(Coding Tree Unit; CTU)과 동일한 의미로 사용될 수 있다. 유닛의 분할은 유닛에 해당하는 블록의 분할을 의미할 수 있다. 블록 분할 정보에는 유닛의 깊이(depth)에 관한 정보가 포함될 수 있다. 깊이 정보는 유닛이 분할되는 회수 및/또는 정도를 나타낼 수 있다. 하나의 유닛은 트리 구조(tree structure)를 기초로 깊이 정보를 가지고 계층적으로 복수의 하위 유닛들로 분할될 수 있다. 말하자면, 유닛 및 상기의 유닛의 분할에 의해 생성된 하위 유닛은 노드 및 상기의 노드의 자식 노드에 각각 대응할 수 있다. 각각의 분할된 하위 유닛은 깊이 정보를 가질 수 있다. 깊이 정보는 CU의 크기를 나타내는 정보일 수 있고, 각 CU마다 저장될 수 있다. 유닛 깊이는 유닛이 분할된 회수 및/또는 정도를 나타내므로, 하위 유닛의 분할 정보는 하위 유닛의 크기에 관한 정보를 포함할 수도 있다.
분할 구조는 CTU(310) 내에서의 부호화 유닛(Coding Unit; CU)의 분포를 의미할 수 있다. 이러한 분포는 하나의 CU를 복수(2, 4, 8, 16 등을 포함하는 2 이상의 양의 정수)의 CU들로 분할할지 여부에 따라 결정할 수 있다. 분할에 의해 생성된 CU의 가로 크기 및 세로 크기는 각각 분할 전의 CU의 가로 크기의 절반 및 세로 크기의 절반이거나, 분할된 개수에 따라 분할 전의 CU의 가로 크기보다 작은 크기 및 세로 크기보다 작은 크기를 가질 수 있다. CU는 복수의 CU로 재귀적으로 분할될 수 있다. 재귀적 분할에 의해, 분할된 CU의 가로 크기 및 세로 크기 중 적어도 하나의 크기가 분할 전의 CU의 가로 크기 및 세로 크기 중 적어도 하나에 비해 감소될 수 있다. CU의 분할은 기정의된 깊이 또는 기정의된 크기까지 재귀적으로 이루어질 수 있다. 예컨대, CTU의 깊이는 0일 수 있고, 최소 부호화 유닛(Smallest Coding Unit; SCU)의 깊이는 기정의된 최대 깊이일 수 있다. 여기서, CTU는 상술된 것과 같이 최대의 부호화 유닛 크기를 가지는 부호화 유닛일 수 있고, SCU는 최소의 부호화 유닛 크기를 가지는 부호화 유닛일 수 있다. CTU(310)로부터 분할이 시작되고, 분할에 의해 CU의 가로 크기 및/또는 세로 크기가 줄어들 때마다 CU의 깊이는 1씩 증가한다. 예를 들면, 각각의 깊이 별로, 분할되지 않는 CU는 2Nx2N 크기를 가질 수 있다. 또한, 분할되는 CU의 경우, 2Nx2N 크기의 CU가 NxN 크기를 가지는 4개의 CU들로 분할될 수 있다. N의 크기는 깊이가 1씩 증가할 때마다 절반으로 감소할 수 있다.
또한, CU가 분할되는지 여부에 대한 정보는 CU의 분할 정보를 통해 표현될 수 있다. 분할 정보는 1비트의 정보일 수 있다. SCU를 제외한 모든 CU는 분할 정보를 포함할 수 있다. 예를 들면, 분할 정보의 값이 제1 값이면, CU가 분할되지 않을 수 있고, 분할 정보의 값이 제2 값이면, CU가 분할될 수 있다.
도 3을 참조하면, 깊이가 0인 CTU는 64x64 블록일 수 있다. 0은 최소 깊이일 수 있다. 깊이가 3인 SCU는 8x8 블록일 수 있다. 3은 최대 깊이일 수 있다. 32x32 블록 및 16x16 블록의 CU는 각각 깊이 1 및 깊이 2로 표현될 수 있다.
예를 들어, 하나의 부호화 유닛이 4개의 부호화 유닛으로 분할 될 경우, 분할된 4개의 부호화 유닛의 가로 및 세로 크기는 분할되기 전 부호화 유닛의 가로 및 세로 크기와 비교하여 각각 절반의 크기를 가질 수 있다. 일 예로, 32x32 크기의 부호화 유닛이 4개의 부호화 유닛으로 분할 될 경우, 분할된 4개의 부호화 유닛은 각각 16x16의 크기를 가질 수 있다. 하나의 부호화 유닛이 4개의 부호화 유닛으로 분할 될 경우, 부호화 유닛은 쿼드트리(quad-tree) 형태로 분할(쿼드트리 분할, quad-tree partition)되었다고 할 수 있다.
예를 들어, 하나의 부호화 유닛이 2개의 부호화 유닛으로 분할 될 경우, 분할된 2개의 부호화 유닛의 가로 혹은 세로 크기는 분할되기 전 부호화 유닛의 가로 혹은 세로 크기와 비교하여 절반의 크기를 가질 수 있다. 일 예로, 32x32 크기의 부호화 유닛이 2개의 부호화 유닛으로 세로로 분할 될 경우, 분할된 2개의 부호화 유닛은 각각 16x32의 크기를 가질 수 있다. 일 예로, 8x32 크기의 부호화 유닛이 2개의 부호화 유닛으로 가로로 분할 될 경우, 분할된 2개의 부호화 유닛은 각각 8x16의 크기를 가질 수 있다. 하나의 부호화 유닛이 2개의 부호화 유닛으로 분할 될 경우, 부호화 유닛은 이진트리(binary-tree) 형태로 분할(이진트리 분할, binary-tree partition)되었다고 할 수 있다.
예를 들어, 하나의 부호화 유닛이 3개의 부호화 유닛으로 분할 될 경우, 분할되기 전 부호화 유닛의 가로 혹은 세로 크기를 1:2:1의 비율로 분할함으로써, 3개의 부호화 유닛으로 분할할 수 있다. 일 예로, 16x32 크기의 부호화 유닛이 3개의 부호화 유닛으로 가로로 분할 될 경우, 분할된 3개의 부호화 유닛은 상측부터 각각 16x8, 16x16 및 16x8의 크기를 가질 수 있다. 일 예로, 32x32 크기의 부호화 유닛이 3개의 부호화 유닛으로 세로로 분할 될 경우, 분할된 3개의 부호화 유닛은 좌측부터 각각 8x32, 16x32 및 8x32의 크기를 가질 수 있다. 하나의 부호화 유닛이 3개의 부호화 유닛으로 분할 될 경우, 부호화 유닛은 3분할트리(ternary-tree) 형태로 분할(3분할트리 분할, ternary-tree partition)되었다고 할 수 있다.
도 3의 CTU(320)는 쿼드트리 분할, 이진트리 분할 및 3분할트리 분할이 모두 적용된 CTU의 일 예이다.
전술한 바와 같이, CTU를 분할하기 위해, 쿼드트리 분할, 이진트리 분할 및 3분할트리 분할 중 적어도 하나가 적용될 수 있다. 각각의 분할은 소정의 우선 순위에 기초하여 적용될 수 있다. 예컨대, CTU에 대해 쿼드트리 분할이 우선적으로 적용될 수 있다. 더 이상 쿼드트리 분할될 수 없는 부호화 유닛은 쿼드트리의 리프 노드에 해당될 수 있다. 쿼드트리의 리프 노드에 해당하는 부호화 유닛은 이진트리 및/또는 3분할트리의 루트 노드가 될 수 있다. 즉, 쿼드트리의 리프 노드에 해당하는 부호화 유닛은 이진트리 분할되거나 3분할트리 분할되거나 또는 더 이상 분할되지 않을 수 있다. 이 때, 쿼드트리의 리프 노드에 해당하는 부호화 유닛을 이진트리 분할하거나 3분할트리 분할하여 생성된 부호화 유닛에 대해서는 다시 쿼드트리 분할이 수행되지 않도록 함으로써, 블록의 분할 및/또는 분할 정보의 시그널링을 효과적으로 수행할 수 있다.
쿼드트리의 각 노드에 해당하는 부호화 유닛의 분할은 쿼드 분할 정보를 이용하여 시그널링될 수 있다. 제1값(예컨대, '1')을 갖는 쿼드 분할 정보는 해당 부호화 유닛이 쿼드트리 분할됨을 지시할 수 있다. 제2값(예컨대, '0')을 갖는 쿼드 분할 정보는 해당 부호화 유닛이 쿼드트리 분할되지 않음을 지시할 수 있다. 쿼드 분할 정보는 소정의 길이(예컨대, 1비트)를 갖는 플래그일 수 있다.
이진트리 분할과 3분할트리 분할 사이에는 우선순위가 존재하지 않을 수 있다. 즉, 쿼드트리의 리프 노드에 해당하는 부호화 유닛은 이진트리 분할되거나 3분할트리 분할될 수 있다. 또한, 이진트리 분할 또는 3분할트리 분할에 의해 생성된 부호화 유닛은 다시 이진트리 분할 또는 3분할트리 분할되거나 또는 더 이상 분할되지 않을 수 있다.
이진트리 분할과 3분할트리 분할 사이에 우선순위가 존재하지 않는 경우의 분할은 복합형트리 분할(multi-type tree partition)이라고 호칭할 수 있다. 즉, 쿼드트리의 리프 노드에 해당하는 부호화 유닛은 복합형트리(multi-type tree)의 루트 노드가 될 수 있다. 복합형 트리의 각 노드에 해당하는 부호화 유닛의 분할은 복합형 트리의 분할 여부 정보, 분할 방향 정보 및 분할 트리 정보 중 적어도 하나를 이용하여 시그널링될 수 있다. 상기 복합형 트리의 각 노드에 해당하는 부호화 유닛의 분할을 위해 순차적으로 분할 여부 정보, 분할 방향 정보 및 분할 트리 정보가 시그널링될 수도 있다.
제1값(예컨대, '1')을 갖는 복합형 트리의 분할 여부 정보는 해당 부호화 유닛이 복합형트리 분할됨을 지시할 수 있다. 제2값(예컨대, '0')을 갖는 복합형 트리의 분할 여부 정보는 해당 부호화 유닛이 복합형트리 분할되지 않음을 지시할 수 있다.
복합형 트리의 각 노드에 해당하는 부호화 유닛이 복합형트리 분할되는 경우, 해당 부호화 유닛은 분할 방향 정보를 더 포함할 수 있다. 분할 방향 정보는 복합형트리 분할의 분할 방향을 지시할 수 있다. 제1값(예컨대, '1')을 갖는 분할 방향 정보는 해당 부호화 유닛이 세로 방향으로 분할됨을 지시할 수 있다. 제2값(예컨대, '0')을 갖는 분할 방향 정보는 해당 부호화 유닛이 가로 방향으로 분할됨을 지시할 수 있다.
복합형 트리의 각 노드에 해당하는 부호화 유닛이 복합형트리 분할되는 경우, 해당 부호화 유닛은 분할 트리 정보를 더 포함할 수 있다. 분할 트리 정보는 복합형트리 분할을 위해 사용된 트리를 지시할 수 있다. 제1값(예컨대, '1')을 갖는 분할 트리 정보는 해당 부호화 유닛이 이진트리 분할됨을 지시할 수 있다. 제2값(예컨대, '0')을 갖는 분할 트리 정보는 해당 부호화 유닛이 3분할트리 분할됨을 지시할 수 있다.
분할 여부 정보, 분할 트리 정보 및 분할 방향 정보는 각각 소정의 길이(예컨대, 1비트)를 갖는 플래그일 수 있다.
쿼드 분할 정보, 복합형 트리의 분할 여부 정보, 분할 방향 정보 및 분할 트리 정보 중 적어도 하나는 엔트로피 부호화/복호화될 수 있다. 상기 정보들의 엔트로피 부호화/복호화를 위해, 현재 부호화 유닛에 인접한 주변 부호화 유닛의 정보가 이용될 수 있다. 예컨대, 좌측 부호화 유닛 및/또는 상측 부호화 유닛의 분할 형태(분할 여부, 분할 트리 및/또는 분할 방향)는 현재 부호화 유닛의 분할 형태와 유사할 확률이 높다. 따라서, 주변 부호화 유닛의 정보에 기초하여, 현재 부호화 유닛의 정보의 엔트로피 부호화/복호화를 위한 컨텍스트 정보를 유도할 수 있다. 이때, 주변 부호화 유닛의 정보에는 해당 부호화 유닛의 쿼드 분할 정보, 복합형 트리의 분할 여부 정보, 분할 방향 정보 및 분할 트리 정보 중 적어도 하나가 포함될 수 있다.
다른 실시예로서, 이진트리 분할과 3분할트리 분할 중, 이진트리 분할이 우선적으로 수행될 수 있다. 즉, 이진트리 분할이 먼저 적용되고, 이진트리의 리프 노드에 해당하는 부호화 유닛을 3분할트리의 루트 노드로 설정할 수도 있다. 이 경우, 3분할트리의 노드에 해당하는 부호화 유닛에 대해서는 쿼드트리 분할 및 이진트리 분할이 수행되지 않을 수 있다.
쿼드트리 분할, 이진트리 분할 및/또는 3분할트리 분할에 의해 더 이상 분할되지 않는 부호화 유닛은 부호화, 예측 및/또는 변환의 단위가 될 수 있다. 즉, 예측 및/또는 변환을 위해 부호화 유닛이 더 이상 분할되지 않을 수 있다. 따라서, 부호화 유닛을 예측 유닛 및/또는 변환 유닛으로 분할하기 위한 분할 구조, 분할 정보 등이 비트스트림에 존재하지 않을 수 있다.
다만, 분할의 단위가 되는 부호화 유닛의 크기가 최대 변환 블록의 크기보다 큰 경우, 해당 부호화 유닛은 최대 변환 블록의 크기와 같거나 또는 작은 크기가 될 때까지 재귀적으로 분할될 수 있다. 예컨대, 부호화 유닛의 크기가 64x64이고, 최대 변환 블록의 크기가 32x32인 경우, 상기 부호화 유닛은 변환을 위해, 4개의 32x32 블록으로 분할될 수 있다. 예컨대, 부호화 유닛의 크기가 32x64이고, 최대 변환 블록의 크기가 32x32인 경우, 상기 부호화 유닛은 변환을 위해, 2개의 32x32 블록으로 분할될 수 있다. 이 경우, 변환을 위한 부호화 유닛의 분할 여부는 별도로 시그널링되지 않고, 상기 부호화 유닛의 가로 또는 세로와 최대 변환 블록의 가로 또는 세로의 비교에 의해 결정될 수 있다. 예컨대, 부호화 유닛의 가로가 최대 변환 블록의 가로보다 큰 경우, 부호화 유닛은 세로로 2등분될 수 있다. 또한, 부호화 유닛의 세로가 최대 변환 블록의 세로보다 큰 경우, 부호화 유닛은 가로로 2등분될 수 있다.
부호화 유닛의 최대 및/또는 최소 크기에 관한 정보, 변환 블록의 최대 및/또는 최소 크기에 관한 정보는 부호화 유닛의 상위 레벨에서 시그널링되거나 결정될 수 있다. 상기 상위 레벨은 예컨대, 시퀀스 레벨, 픽처 레벨, 타일 레벨, 타일 그룹 레벨, 슬라이스 레벨 등일 수 있다. 예컨대, 부호화 유닛의 최소 크기는 4x4로 결정될 수 있다. 예컨대, 변환 블록의 최대 크기는 64x64로 결정될 수 있다. 예컨대, 변환 블록의 최소 크기는 4x4로 결정될 수 있다.
쿼드트리의 리프 노드에 해당하는 부호화 유닛의 최소 크기(쿼드트리 최소 크기)에 관한 정보 및/또는 복합형 트리의 루트 노드에서 리프 노드에 이르는 최대 깊이(복합형트리 최대 깊이)에 관한 정보는 부호화 유닛의 상위 레벨에서 시그널링되거나 결정될 수 있다. 상기 상위 레벨은 예컨대, 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨, 타일 그룹 레벨, 타일 레벨 등일 수 있다. 상기 쿼드트리 최소 크기에 관한 정보 및/또는 상기 복합형트리 최대 깊이에 관한 정보는 화면 내 슬라이스와 화면 간 슬라이스의 각각에 대해 시그널링되거나 결정될 수 있다.
CTU의 크기와 변환 블록의 최대 크기에 대한 차분 정보는 부호화 유닛의 상위 레벨에서 시그널링되거나 결정될 수 있다. 상기 상위 레벨은 예컨대, 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨, 타일 그룹 레벨, 타일 레벨 등일 수 있다. 이진트리의 각 노드에 해당하는 부호화 유닛의 최대 크기(이진트리 최대 크기)에 관한 정보는 부호화 트리 유닛의 크기와 상기 차분 정보를 기반으로 결정될 수 있다. 3분할트리의 각 노드에 해당하는 부호화 유닛의 최대 크기(3분할트리 최대 크기)는 슬라이스의 타입에 따라 다른 값을 가질 수 있다. 예컨대, 화면 내 슬라이스인 경우, 3분할트리 최대 크기는 32x32일 수 있다. 또한, 예컨대, 화면 간 슬라이스인 경우, 3분할 트리 최대 크기는 128x128일 수 있다. 예컨대, 이진트리의 각 노드에 해당하는 부호화 유닛의 최소 크기(이진트리 최소 크기) 및/또는 3분할트리의 각 노드에 해당하는 부호화 유닛의 최소 크기(3분할트리 최소 크기)는 부호화 블록의 최소 크기로 설정될 수 있다.
또 다른 예로, 이진트리 최대 크기 및/또는 3분할트리 최대 크기는 슬라이스 레벨에서 시그널링되거나 결정될 수 있다. 또한, 이진트리 최소 크기 및/또는 3분할트리 최소 크기는 슬라이스 레벨에서 시그널링되거나 결정될 수 있다.
전술한 다양한 블록의 크기 및 깊이 정보에 기초하여, 쿼드 분할 정보, 복합형 트리의 분할 여부 정보, 분할 트리 정보 및/또는 분할 방향 정보 등이 비트스트림에 존재하거나 존재하지 않을 수 있다.
예컨대, 부호화 유닛의 크기가 쿼드트리 최소 크기보다 크지 않으면, 상기 부호화 유닛은 쿼드 분할 정보를 포함하지 않고, 해당 쿼드 분할 정보는 제2값으로 추론될 수 있다.
예컨대, 복합형 트리의 노드에 해당하는 부호화 유닛의 크기(가로 및 세로)가 이진트리 최대 크기(가로 및 세로) 및/또는 3분할트리 최대 크기(가로 및 세로)보다 큰 경우, 상기 부호화 유닛은 이진트리 분할 및/또는 3분할트리 분할되지 않을 수 있다. 그에 따라, 상기 복합형 트리의 분할 여부 정보는 시그널링되지 않고, 제2값으로 추론될 수 있다.
또는, 복합형 트리의 노드에 해당하는 부호화 유닛의 크기(가로 및 세로)가 이진트리 최소 크기(가로 및 세로)와 동일하거나, 부호화 유닛의 크기(가로 및 세로)가 3분할트리 최소 크기(가로 및 세로)의 두 배와 동일한 경우, 상기 부호화 유닛은 이진트리 분할 및/또는 3분할트리 분할되지 않을 수 있다. 그에 따라, 상기 복합형 트리의 분할 여부 정보는 시그널링되지 않고, 제2값으로 추론될 수 있다. 왜냐하면, 상기 부호화 유닛을 이진트리 분할 및/또는 3분할트리 분할할 경우, 이진트리 최소 크기 및/또는 3분할트리 최소 크기보다 작은 부호화 유닛이 생성되기 때문이다.
또는, 이진트리 분할 또는 3분할트리 분할은 가상의 파이프라인 데이터 유닛의 크기(이하, 파이프라인 버퍼 크기)에 기초하여 제한될 수 있다. 예컨대, 이진트리 분할 또는 3분할트리 분할에 의해, 부호화 유닛이 파이프라인 버퍼 크기에 적합하지 않은 서브 부호화 유닛으로 분할될 경우, 해당 이진트리 분할 또는 3분할트리 분할은 제한될 수 있다. 파이프라인 버퍼 크기는 최대 변환 블록의 크기(예컨대, 64X64)일 수 있다. 예컨대, 파이프라인 버퍼 크기가 64X64일 때, 아래의 분할은 제한될 수 있다.
- NxM(N 및/또는 M은 128) 부호화 유닛에 대한 3분할트리 분할
- 128xN(N <= 64) 부호화 유닛에 대한 수평 방향 이진트리 분할
- Nx128(N <= 64) 부호화 유닛에 대한 수직 방향 이진트리 분할
또는, 복합형 트리의 노드에 해당하는 부호화 유닛의 복합형트리 내의 깊이가 복합형트리 최대 깊이와 동일한 경우, 상기 부호화 유닛은 이진트리 분할 및/또는 3분할트리 분할되지 않을 수 있다. 그에 따라, 상기 복합형 트리의 분할 여부 정보는 시그널링되지 않고, 제2값으로 추론될 수 있다.
또는, 복합형 트리의 노드에 해당하는 부호화 유닛에 대해 수직 방향 이진트리 분할, 수평 방향 이진트리 분할, 수직 방향 3분할트리 분할 및 수평 방향 3분할트리 분할 중 적어도 하나가 가능한 경우에만, 상기 복합형 트리의 분할 여부 정보를 시그널링할 수 있다. 그렇지 않은 경우, 상기 부호화 유닛은 이진트리 분할 및/또는 3분할트리 분할되지 않을 수 있다. 그에 따라, 상기 복합형 트리의 분할 여부 정보는 시그널링되지 않고, 제2값으로 추론될 수 있다.
또는, 복합형 트리의 노드에 해당하는 부호화 유닛에 대해 수직 방향 이진트리 분할과 수평 방향 이진트리 분할이 모두 가능하거나, 수직 방향 3분할트리 분할과 수평 방향 3분할트리 분할이 모두 가능한 경우에만, 상기 분할 방향 정보를 시그널링할 수 있다. 그렇지 않은 경우, 상기 분할 방향 정보는 시그널링되지 않고, 분할이 가능한 방향을 지시하는 값으로 추론될 수 있다.
또는, 복합형 트리의 노드에 해당하는 부호화 유닛에 대해 수직 방향 이진트리 분할과 수직 방향 3분할트리 분할이 모두 가능하거나, 수평 방향 이진트리 분할과 수평 방향 3분할트리 분할이 모두 가능한 경우에만, 상기 분할 트리 정보를 시그널링할 수 있다. 그렇지 않은 경우, 상기 분할 트리 정보는 시그널링되지 않고, 분할이 가능한 트리를 지시하는 값으로 추론될 수 있다.
도 4는 화면 내 예측 과정의 실시예를 설명하기 위한 도면이다.
도 4의 중심으로부터 외곽으로의 화살표들은 화면 내 예측 모드들의 예측 방향들을 나타낼 수 있다.
화면 내 부호화 및/또는 복호화는 현재 블록의 주변 블록의 참조 샘플을 이용하여 수행될 수 있다. 주변 블록은 복원된 주변 블록일 수 있다. 예를 들면, 화면 내 부호화 및/또는 복호화는 복원된 주변 블록이 포함하는 참조 샘플의 값 또는 부호화 파라미터를 이용하여 수행될 수 있다.
예측 블록은 화면 내 예측의 수행의 결과로 생성된 블록을 의미할 수 있다. 예측 블록은 CU, PU 및 TU 중 적어도 하나에 해당할 수 있다. 예측 블록의 단위는 CU, PU 및 TU 중 적어도 하나의 크기일 수 있다. 예측 블록은 2x2, 4x4, 16x16, 32x32 또는 64x64 등의 크기를 갖는 정사각형의 형태의 블록일 수 있고, 2x8, 4x8, 2x16, 4x16 및 8x16 등의 크기를 갖는 직사각형 모양의 블록일 수도 있다.
화면 내 예측은 현재 블록에 대한 화면 내 예측 모드에 따라 수행될 수 있다. 현재 블록이 가질 수 있는 화면 내 예측 모드의 개수는 기정의된 고정된 값일 수 있으며, 예측 블록의 속성에 따라 다르게 결정된 값일 수 있다. 예를 들면, 예측 블록의 속성은 예측 블록의 크기 및 예측 블록의 형태 등을 포함할 수 있다.
화면 내 예측 모드의 개수는 블록의 크기에 관계없이 N개로 고정될 수 있다. 또는, 예를 들면, 화면 내 예측 모드의 개수는 3, 5, 9, 17, 34, 35, 36, 65, 또는 67 등일 수 있다. 또는, 화면 내 예측 모드의 개수는 블록의 크기 및/또는 색 성분(color component)의 타입에 따라 상이할 수 있다. 예를 들면, 색 성분이 휘도(luma) 신호인지 아니면 색차(chroma) 신호인지에 따라 화면 내 예측 모드의 개수가 다를 수 있다. 예컨대, 블록의 크기가 커질수록 화면 내 예측 모드의 개수는 많아질 수 있다. 또는 휘도 성분 블록의 화면 내 예측 모드의 개수는 색차 성분 블록의 화면 내 예측 모드의 개수보다 많을 수 있다.
화면 내 예측 모드는 비방향성 모드 또는 방향성 모드일 수 있다. 비방향성 모드는 DC 모드 또는 플래너(Planar) 모드일 수 있으며, 방향성 모드(angular mode)는 특정한 방향 또는 각도를 가지는 예측 모드일 수 있다. 상기 화면 내 예측 모드는 모드 번호, 모드 값, 모드 숫자, 모드 각도, 모드 방향 중 적어도 하나로 표현될 수 있다. 화면 내 예측 모드의 개수는 상기 비방향성 및 방향성 모드를 포함하는 하나 이상의 M개 일 수 있다.현재 블록을 화면 내 예측하기 위해 복원된 주변 블록에 포함되는 샘플들이 현재 블록의 참조 샘플로 이용 가능한지 여부를 검사하는 단계가 수행될 수 있다. 현재 블록의 참조 샘플로 이용할 수 없는 샘플이 존재할 경우, 복원된 주변 블록에 포함된 샘플들 중 적어도 하나의 샘플 값을 복사 및/또는 보간한 값을 이용하여 참조 샘플로 이용할 수 없는 샘플의 샘플 값으로 대체한 후, 현재 블록의 참조 샘플로 이용할 수 있다.
도 7은 화면 내 예측에 이용 가능한 참조 샘플들을 설명하기 위한 도면이다.
도 7에 도시된 바와 같이, 현재 블록의 화면 내 예측을 위해, 참조 샘플 라인 0 내지 참조 샘플 라인 3 중 적어도 하나가 이용될 수 있다. 도 7에 있어서, 세그먼트 A와 세그먼트 F의 샘플들은 복원된 이웃 블록으로부터 가져오는 대신 각각 세그먼트 B와 세그먼트 E의 가장 가까운 샘플들로 패딩될 수 있다. 현재 블록의 화면 내 예측을 위해 이용될 참조 샘플 라인을 지시하는 인덱스 정보가 시그널링될 수 있다. 예를 들어, 도 7에 있어서, 참조 샘플 라인 0, 1, 2 를 지시하는 인덱스 정보로 참조 샘플 라인 지시자 0, 1, 2 를 시그널링할 수 있다. 현재 블록의 상단 경계가 CTU의 경계인 경우, 참조 샘플 라인 0만 이용가능할 수 있다. 따라서 이 경우, 상기 인덱스 정보는 시그널링되지 않을 수 있다. 참조 샘플 라인 0 이외에 다른 참조 샘플 라인이 이용되는 경우, 후술하는 예측 블록에 대한 필터링은 수행되지 않을 수 있다.
화면 내 예측 시 화면 내 예측 모드 및 현재 블록의 크기 중 적어도 하나에 기반하여 참조 샘플 또는 예측 샘플 중 적어도 하나에 필터를 적용할 수 있다.
플래너 모드의 경우, 현재 블록의 예측 블록을 생성할 때, 예측 대상 샘플의 예측 블록 내 위치에 따라, 현재 샘플의 상단 및 좌측 참조 샘플, 현재 블록의 우상단 및 좌하단 참조 샘플의 가중합을 이용하여 예측 대상 샘플의 샘플 값을 생성할 수 있다. 또한, DC 모드의 경우, 현재 블록의 예측 블록을 생성할 때, 현재 블록의 상단 및 좌측 참조 샘플들의 평균 값을 이용할 수 있다. 또한, 방향성 모드의 경우 현재 블록의 상단, 좌측, 우상단 및/또는 좌하단 참조 샘플을 이용하여 예측 블록을 생성할 수 있다. 예측 샘플 값 생성을 위해 실수 단위의 보간을 수행할 수도 있다.
색 성분간 화면 내 예측의 경우, 제1 색 성분의 대응 복원 블록에 기초하여 제2 색 성분의 현재 블록에 대한 예측 블록을 생성할 수 있다. 예컨대, 제1 색 성분은 휘도 성분, 제2 색 성분은 색차 성분일 수 있다. 색 성분간 화면 내 예측을 위해, 제1 색 성분과 제2 색 성분 간의 선형 모델의 파라미터가 템플릿에 기초하여 유도될 수 있다. 템플릿은 현재 블록의 상단 및/또는 좌측 주변 샘플 및 이에 대응하는 제1 색 성분의 복원 블록의 상단 및/또는 좌측 주변 샘플을 포함할 수 있다. 예컨대, 선형 모델의 파라미터는 템플릿내의 샘플들 중 최대값을 갖는 제1 색 성분의 샘플값과 이에 대응하는 제2 색 성분의 샘플값, 템플릿내의 샘플들 중 최소값을 갖는 제1 색 성분의 샘플값과 이에 대응하는 제2 색 성분의 샘플값을 이용하여 유도될 수 있다. 선형 모델의 파라미터가 유도되면, 대응 복원 블록을 선형 모델에 적용하여 현재 블록에 대한 예측 블록을 생성할 수 있다. 영상 포맷에 따라, 제1 색 성분의 복원 블록의 주변 샘플 및 대응 복원 블록에 대해 서브 샘플링이 수행될 수 있다. 예컨대, 제2 색 성분의 1개의 샘플이 제1 색 성분의 4개의 샘플들에 대응되는 경우, 제1 색 성분의 4개의 샘플들을 서브 샘플링하여, 1개의 대응 샘플을 계산할 수 있다. 이 경우, 선형 모델의 파라미터 유도 및 색 성분간 화면 내 예측은 서브 샘플링된 대응 샘플에 기초하여 수행될 수 있다. 색 성분간 화면 내 예측의 수행 여부 및/또는 템플릿의 범위는 화면 내 예측 모드로서 시그널링될 수 있다.
현재 블록은 가로 또는 세로 방향으로 2개 또는 4개의 서브 블록들로 분할될 수 있다. 분할된 서브 블록들은 순차적으로 복원될 수 있다. 즉, 서브 블록에 대해 화면 내 예측이 수행되어 서브 예측 블록이 생성될 수 있다. 또한, 서브 블록에 대해 역양자화 및/또는 역변환이 수행되어 서브 잔차 블록이 생성될 수 있다. 서브 예측 블록을 서브 잔차 블록에 더해서 복원된 서브 블록이 생성될 수 있다. 복원된 서브 블록은 후순위 서브 블록의 화면 내 예측을 위한 참조 샘플로서 이용될 수 있다. 서브 블록은 소정 개수(예컨대, 16개) 이상의 샘플들을 포함하는 블록일 수 있다. 따라서, 예컨대, 현재 블록이 8x4 블록 또는 4x8 블록의 경우, 현재 블록은 2개의 서브 블록들로 분할될 수 있다. 또한, 현재 블록이 4x4 블록인 경우, 현재 블록은 서브 블록들로 분할될 수 없다. 현재 블록이 그 외의 크기를 갖는 경우, 현재 블록은 4개의 서브 블록들로 분할될 수 있다. 상기 서브 블록 기반의 화면 내 예측의 수행 여부 및/또는 분할 방향(가로 또는 세로)에 관한 정보가 시그널링될 수 있다. 상기 서브 블록 기반의 화면 내 예측은 참조 샘플 라인 0을 이용하는 경우에만 수행되도록 제한될 수 있다. 상기 서브 블록 기반의 화면 내 예측이 수행되는 경우, 후술하는 예측 블록에 대한 필터링은 수행되지 않을 수 있다.
화면 내 예측된 예측 블록에 필터링을 수행하여 최종 예측 블록을 생성할 수 있다. 상기 필터링은 필터링 대상 샘플, 좌측 참조 샘플, 상단 참조 샘플 및/또는 좌상단 참조 샘플에 소정의 가중치를 적용함으로써 수행될 수 있다. 상기 필터링에 이용되는 가중치 및/또는 참조 샘플(범위, 위치 등)은 블록 크기, 화면 내 예측 모드 및 필터링 대상 샘플의 예측 블록 내 위치 중 적어도 하나에 기초하여 결정될 수 있다. 상기 필터링은 소정의 화면 내 예측 모드(예컨대, DC, planar, 수직, 수평, 대각 및/또는 인접 대각 모드)의 경우에만 수행될 수 있다. 인접 대각 모드는 대각 모드에 k를 가감한 모드일 수 있다. 예컨대, k는 8 이하의 양의 정수일 수 있다.
현재 블록의 화면 내 예측 모드는 현재 블록의 주변에 존재하는 블록의 화면 내 예측 모드로부터 예측하여 엔트로피 부호화/복호화할 수 있다. 현재 블록과 주변 블록의 화면 내 예측 모드가 동일하면 소정의 플래그 정보를 이용하여 현재 블록과 주변 블록의 화면 내 예측 모드가 동일하다는 정보를 시그널링할 수 있다. 또한, 복수 개의 주변 블록의 화면 내 예측 모드 중 현재 블록의 화면 내 예측 모드와 동일한 화면 내 예측 모드에 대한 지시자 정보를 시그널링할 수 있다. 현재 블록과 주변 블록의 화면 내 예측 모드가 상이하면 주변 블록의 화면 내 예측 모드를 기초로 엔트로피 부호화/복호화를 수행하여 현재 블록의 화면 내 예측 모드 정보를 엔트로피 부호화/복호화할 수 있다.
도 5는 화면 간 예측 과정의 실시예를 설명하기 위한 도면이다.
도 5에 도시된 사각형은 영상을 나타낼 수 있다. 또한, 도 5에서 화살표는 예측 방향을 나타낼 수 있다. 각 영상은 부호화 타입에 따라 I 픽처(Intra Picture), P 픽처(Predictive Picture), B 픽처(Bi-predictive Picture) 등으로 분류될 수 있다.
I 픽처는 화면 간 예측 없이 화면 내 예측을 통해 부호화/복호화될 수 있다. P 픽처는 단방향(예컨대, 순방향 또는 역방향)에 존재하는 참조 영상만을 이용하는 화면 간 예측을 통해 부호화/복호화될 수 있다. B 픽처는 쌍방향(예컨대, 순방향 및 역방향)에 존재하는 참조 영상들을 이용하는 화면 간 예측을 통해 부호화/복호화 될 수 있다. 또한, B 픽처인 경우, 쌍방향에 존재하는 참조 영상들을 이용하는 화면 간 예측 또는 순방향 및 역방향 중 일 방향에 존재하는 참조 영상을 이용하는 화면 간 예측을 통해 부호화/복호화될 수 있다. 여기에서, 쌍방향은 순방향 및 역방향일 수 있다. 여기서, 화면 간 예측이 사용되는 경우, 부호화기에서는 화면 간 예측 혹은 움직임 보상을 수행할 수 있고, 복호화기에서는 그에 대응하는 움직임 보상을 수행할 수 있다.
아래에서, 실시예에 따른 화면 간 예측에 대해 구체적으로 설명된다.
화면 간 예측 혹은 움직임 보상은 참조 영상 및 움직임 정보를 이용하여 수행될 수 있다.
현재 블록에 대한 움직임 정보는 부호화 장치(100) 및 복호화 장치(200)의 각각에 의해 화면 간 예측 중 도출될 수 있다. 움직임 정보는 복원된 주변 블록의 움직임 정보, 콜 블록(collocated block; col block)의 움직임 정보 및/또는 콜 블록에 인접한 블록을 이용하여 도출될 수 있다. 콜 블록은 이미 복원된 콜 픽처(collocated picture; col picture) 내에서 현재 블록의 공간적 위치에 대응하는 블록일 수 있다. 여기서, 콜 픽처는 참조 영상 리스트에 포함된 적어도 하나의 참조 영상 중에서 하나의 픽처일 수 있다.
움직임 정보의 도출 방식은 현재 블록의 예측 모드에 따라 다를 수 있다. 예를 들면, 화면 간 예측을 위해 적용되는 예측 모드로서, AMVP 모드, 머지 모드, 스킵 모드, 움직임 벡터 차분을 가진 머지 모드, 서브 블록 머지 모드, 기하 분할 모드, 인터 인트라 결합 예측 모드, 어파인 인터 모드 등이 있을 수 있다. 여기서 머지 모드를 움직임 병합 모드(motion merge mode)라고 지칭할 수 있다.
예를 들면, 예측 모드로서, AMVP가 적용되는 경우, 복원된 주변 블록의 움직임 벡터, 콜 블록의 움직임 벡터, 콜 블록에 인접한 블록의 움직임 벡터, (0, 0) 움직임 벡터 중 적어도 하나를 움직임 벡터 후보로 결정하여 움직임 벡터 후보 리스트(motion vector candidate list)를 생성할 수 있다. 생성된 움직임 벡터 후보 리스트를 이용하여 움직임 벡터 후보를 유도할 수 있다. 유도된 움직임 벡터 후보를 기반으로 현재 블록의 움직임 정보를 결정할 수 있다. 여기서, 콜 블록의 움직임 벡터 또는 콜 블록에 인접한 블록의 움직임 벡터를 시간적 움직임 벡터 후보(temporal motion vector candidate)라 지칭할 수 있고, 복원된 주변 블록의 움직임 벡터를 공간적 움직임 벡터 후보(spatial motion vector candidate)라 지칭할 수 있다.
부호화 장치(100)는 현재 블록의 움직임 벡터 및 움직임 벡터 후보 간의 움직임 벡터 차분(MVD: Motion Vector Difference)을 계산할 수 있고, MVD를 엔트로피 부호화할 수 있다. 또한, 부호화 장치(100)는 움직임 벡터 후보 색인을 엔트로피 부호화하여 비트스트림을 생성할 수 있다. 움직임 벡터 후보 색인은 움직임 벡터 후보 리스트에 포함된 움직임 벡터 후보 중에서 선택된 최적의 움직임 벡터 후보를 지시할 수 있다. 복호화 장치(200)는 움직임 벡터 후보 색인을 비트스트림으로부터 엔트로피 복호화하고, 엔트로피 복호화된 움직임 벡터 후보 색인을 이용하여 움직임 벡터 후보 리스트에 포함된 움직임 벡터 후보 중에서 복호화 대상 블록의 움직임 벡터 후보를 선택할 수 있다. 또한, 복호화 장치(200)는 엔트로피 복호화된 MVD 및 움직임 벡터 후보의 합을 통해 복호화 대상 블록의 움직임 벡터를 도출할 수 있다.
한편, 부호화 장치(100)는 계산된 MVD의 해상도 정보를 엔트로피 부호화할 수 있다. 복호화 장치(200)는 MVD 해상도 정보를 이용하여 엔트로피 복호화된 MVD의 해상도를 조정할 수 있다.
한편, 부호화 장치(100)는 어파인 모델에 기반하여 현재 블록의 움직임 벡터 및 움직임 벡터 후보 간의 움직임 벡터 차분(MVD: Motion Vector Difference)을 계산할 수 있고, MVD를 엔트로피 부호화할 수 있다. 복호화 장치(200)는 엔트로피 복호화된 MVD 및 어파인 제어 움직임 벡터 후보의 합을 통해 복호화 대상 블록의 어파인 제어 움직임 벡터를 도출하여 서브 블록 단위로 움직임 벡터를 유도할 수 있다.
비트스트림은 참조 영상을 지시하는 참조 영상 색인 등을 포함할 수 있다. 참조 영상 색인은 엔트로피 부호화되어 비트스트림을 통해 부호화 장치(100)로부터 복호화 장치(200)로 시그널링될 수 있다. 복호화 장치(200)는 유도된 움직임 벡터와 참조 영상 색인 정보에 기반하여 복호화 대상 블록에 대한 예측 블록을 생성할 수 있다.
움직임 정보의 도출 방식의 다른 예로, 머지 모드가 있다. 머지 모드란 복수의 블록들에 대한 움직임의 병합을 의미할 수 있다. 머지 모드는 현재 블록의 움직임 정보를 주변 블록의 움직임 정보로부터 유도하는 모드를 의미할 수 있다. 머지 모드가 적용되는 경우, 복원된 주변 블록의 움직임 정보 및/또는 콜 블록의 움직임 정보를 이용하여 머지 후보 리스트(merge candidate list)를 생성할 수 있다. 움직임 정보는 1) 움직임 벡터, 2) 참조 영상 색인, 및 3) 화면 간 예측 지시자 중 적어도 하나를 포함할 수 있다. 예측 지시자는 단방향 (L0 예측, L1 예측) 또는 쌍방향일 수 있다.
머지 후보 리스트는 움직임 정보들이 저장된 리스트를 나타낼 수 있다. 머지 후보 리스트에 저장되는 움직임 정보는, 현재 블록에 인접한 주변 블록의 움직임 정보(공간적 머지 후보(spatial merge candidate)) 및 참조 영상에서 현재 블록에 대응되는(collocated) 블록의 움직임 정보(시간적 머지 후보(temporal merge candidate)), 이미 머지 후보 리스트에 존재하는 움직임 정보들의 조합에 의해 생성된 새로운 움직임 정보, 현재 블록 이전에 부호화/복호화된 블록의 움직임 정보(히스토리 기반 머지 후보(history-based merge candidate)) 및 제로 머지 후보 중 적어도 하나일 수 있다.
부호화 장치(100)는 머지 플래그(merge flag) 및 머지 색인(merge index) 중 적어도 하나를 엔트로피 부호화하여 비트스트림을 생성한 후 복호화 장치(200)로 시그널링할 수 있다. 머지 플래그는 블록 별로 머지 모드를 수행할지 여부를 나타내는 정보일 수 있고, 머지 색인은 현재 블록에 인접한 주변 블록들 중 어떤 블록과 머지를 할 것인가에 대한 정보일 수 있다. 예를 들면, 현재 블록의 주변 블록들은 현재 블록의 좌측 인접 블록, 상단 인접 블록 및 시간적 인접 블록 중 적어도 하나를 포함할 수 있다.
한편, 부호화 장치(100)는 머지 후보의 움직임 정보 중 움직임 벡터를 보정하기 위한 보정 정보를 엔트로피 부호화하여 복호화 장치(200)로 시그널링할 수 있다. 복호화 장치(200)는 머지 색인에 의해 선택된 머지 후보의 움직임 벡터를 보정 정보에 기초하여 보정할 수 있다. 여기서, 보정 정보는 보정 여부 정보, 보정 방향 정보 및 보정 크기 정보 중 적어도 하나를 포함할 수 있다. 위와 같이, 시그널링되는 보정 정보를 기초로 머지 후보의 움직임 벡터를 보정하는 예측 모드를 움직임 벡터 차분을 가진 머지 모드로 칭할 수 있다.
스킵 모드는 주변 블록의 움직임 정보를 그대로 현재 블록에 적용하는 모드일 수 있다. 스킵 모드가 사용되는 경우, 부호화 장치(100)는 어떤 블록의 움직임 정보를 현재 블록의 움직임 정보로서 이용할 것인지에 대한 정보를 엔트로피 부호화하여 비트스트림을 통해 복호화 장치(200)에 시그널링할 수 있다. 이때, 부호화 장치(100)는 움직임 벡터 차분 정보, 부호화 블록 플래그 및 변환 계수 레벨(양자화된 레벨) 중 적어도 하나에 관한 구문요소를 복호화 장치(200)에 시그널링하지 않을 수 있다.
서브 블록 머지 모드(subblock merge mode)는, 부호화 블록(CU)의 서브 블록 단위로 움직임 정보를 유도하는 모드를 의미할 수 있다. 서브 블록 머지 모드가 적용되는 경우, 참조 영상에서 현재 서브 블록에 대응되는(collocated) 서브 블록의 움직임 정보 (서브블록 기반 시간적 머지 후보(subblock based temporal merge candidate)) 및/또는 어파인 제어 포인트 움직임 벡터 머지 후보(affine control point motion vector merge candidate)를 이용하여 서브 블록 머지 후보 리스트(subblock merge candidate list)가 생성될 수 있다.
기하 분할 모드(geometric partitioning mode)는, 현재 블록을 소정의 방향으로 분할하여 각각의 움직임 정보를 유도하고, 유도된 각각의 움직임 정보를 이용하여 각각의 예측 샘플을 유도하고, 유도된 각각의 예측 샘플을 가중합하여 현재 블록의 예측 샘플을 유도하는 모드를 의미할 수 있다.
인터 인트라 결합 예측 모드는, 화면 간 예측으로 생성된 예측 샘플과 화면 내 예측으로 생성된 예측 샘플을 가중합하여 현재 블록의 예측 샘플을 유도하는 모드를 의미할 수 있다.
복호화 장치(200)는 도출된 움직임 정보를 자체적으로 보정할 수 있다. 복호화 장치(200)는 도출된 움직임 정보가 지시하는 참조 블록을 기준으로 기정의된 구역 탐색하여 최소의 SAD를 갖는 움직임 정보를 보정된 움직임 정보로 유도할 수 있다.
복호화 장치(200)는 광학적 흐름(Optical Flow)을 이용하여 화면 간 예측을 통해 유도된 예측 샘플을 보상할 수 있다.
도 6은 변환 및 양자화의 과정을 설명하기 위한 도면이다.
도 6에 도시된 바와 같이 잔여 신호에 변환 및/또는 양자화 과정을 수행하여 양자화된 레벨이 생성될 수 있다. 상기 잔여 신호는 원본 블록과 예측 블록(화면 내 예측 블록 혹은 화면 간 예측 블록) 간의 차분으로 생성될 수 있다. 여기에서, 예측 블록은 화면 내 예측 또는 화면 간 예측에 의해 생성된 블록일 수 있다. 여기서, 변환은 1차 변환 및 2차 변환 중 적어도 하나를 포함할 수 있다. 잔여 신호에 대해서 1차 변환을 수행하면 변환 계수가 생성될 수 있고, 변환 계수에 2차 변환을 수행하여 2차 변환 계수를 생성할 수 있다.
1차 변환(Primary Transform)은 기-정의된 복수의 변환 방법 중 적어도 하나를 이용하여 수행될 수 있다. 일 예로, 기-정의된 복수의 변환 방법은 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform) 또는 KLT(Karhunen-Loeve Transform) 기반 변환 등을 포함할 수 있다. 1차 변환이 수행 후 생성되는 변환 계수에 2차 변환(Secondary Transform)을 수행할 수 있다. 1차 변환 및/또는 2차 변환시에 적용되는 변환 방법은 현재 블록 및/또는 주변 블록의 부호화 파라미터 중 적어도 하나에 따라 결정될 수 있다. 또는 변환 방법을 지시하는 변환 정보가 시그널링될 수도 있다. DCT 기반 변환은 예컨대, DCT2, DCT-8 등을 포함할 수 있다. DST 기반 변환은 예컨대, DST-7을 포함할 수 있다.
1차 변환 및/또는 2차 변환이 수행된 결과 또는 잔여 신호에 양자화를 수행하여 양자화된 레벨을 생성할 수 있다. 양자화된 레벨은 화면 내 예측 모드 또는 블록 크기/형태 중 적어도 하나를 기준으로 우상단 대각 스캔, 수직 스캔, 수평 스캔 중 적어도 하나에 따라 스캐닝(scanning) 될 수 있다. 예를 들어, 우상단(up-right) 대각 스캐닝을 이용하여 블록의 계수를 스캔함으로써 1차원 벡터 형태로 변경시킬 수 있다. 변환 블록의 크기 및/또는 화면 내 예측 모드에 따라 우상단 대각 스캔 대신 2차원의 블록 형태 계수를 열 방향으로 스캔하는 수직 스캔, 2차원의 블록 형태 계수를 행 방향으로 스캔하는 수평 스캔이 사용될 수도 있다. 스캐닝된 양자화된 레벨은 엔트로피 부호화되어 비트스트림에 포함될 수 있다.
복호화기에서는 비트스트림을 엔트로피 복호화하여 양자화된 레벨을 생성할 수 있다. 양자화된 레벨은 역 스캐닝(Inverse Scanning)되어 2차원의 블록 형태로 정렬될 수 있다. 이때, 역 스캐닝의 방법으로 우상단 대각 스캔, 수직 스캔, 수평 스캔 중 적어도 하나가 수행될 수 있다.
양자화된 레벨에 역양자화를 수행할 수 있고, 2차 역변환 수행 여부에 따라 2차 역변환을 수행할 수 있고, 2차 역변환이 수행된 결과에 1차 역변환 수행 여부에 따라 1차 역변환을 수행하여 복원된 잔여 신호가 생성될 수 있다.
화면 내 예측 또는 화면 간 예측을 통해 복원된 휘도 성분에 대해 인루프 필터링 전에 동적 범위(dynamic range)의 역매핑(inverse mapping)이 수행될 수 있다. 동적 범위는 16개의 균등한 조각(piece)으로 분할될 수 있고, 각 조각에 대한 매핑 함수가 시그널링될 수 있다. 상기 매핑 함수는 슬라이스 레벨 또는 타일 그룹 레벨에서 시그널링될 수 있다. 상기 역매핑을 수행하기 위한 역매핑 함수는 상기 매핑 함수에 기초하여 유도될 수 있다. 인루프 필터링, 참조 픽처의 저장 및 움직임 보상은 역매핑된 영역에서 수행되며, 화면 간 예측을 통해 생성된 예측 블록은 상기 매핑 함수를 이용한 매핑에 의해 매핑된 영역으로 전환된 후, 복원 블록의 생성에 이용될 수 있다. 그러나, 화면 내 예측은 매핑된 영역에서 수행되므로, 화면 내 예측에 의해 생성된 예측 블록은 매핑/역매핑 없이, 복원 블록의 생성에 이용될 수 있다.
현재 블록이 색차 성분의 잔차 블록인 경우, 매핑된 영역의 색차 성분에 대해 스케일링을 수행함으로써 상기 잔차 블록은 역매핑된 영역으로 전환될 수 있다. 상기 스케일링의 가용 여부는 슬라이스 레벨 또는 타일 그룹 레벨에서 시그널링될 수 있다. 상기 스케일링은 루마 성분에 대한 상기 매핑이 가용하고 휘도 성분의 분할과 색차 성분의 분할이 동일한 트리 구조를 따르는 경우에만 상기 스케일링이 적용될 수 있다. 상기 스케일링은 상기 색차 블록에 대응하는 휘도 예측 블록의 샘플값의 평균에 기초하여 수행될 수 있다. 이 때, 현재 블록이 화면 간 예측을 사용하는 경우, 상기 휘도 예측 블록은 매핑된 휘도 예측 블록을 의미할 수 있다. 휘도 예측 블록의 샘플값의 평균이 속하는 조각(piece)의 인덱스를 이용하여, 룩업테이블을 참조함으로써, 상기 스케일링에 필요한 값을 유도할 수 있다. 최종적으로 상기 유도된 값을 이용하여 상기 잔차 블록을 스케일링함으로써, 상기 잔차 블록은 역매핑된 영역으로 전환될 수 있다. 이 후의 색차 성분 블록의 복원, 화면 내 예측, 화면 간 예측, 인루프 필터링 및 참조 픽처의 저장은 역매핑된 영역에서 수행될 수 있다.
상기 휘도 성분 및 색차 성분의 매핑/역매핑이 가용한지 여부를 나타내는 정보는 시퀀스 파라미터 셋을 통해 시그널링될 수 있다.
현재 블록의 예측 블록은 현재 블록과 현재 픽처 내 참조 블록 사이의 위치 이동(displacement)을 나타내는 블록 벡터에 기초하여 생성될 수 있다. 이와 같이, 현재 픽처를 참조하여 예측 블록을 생성하는 예측 모드를 화면 내 블록 카피(Intra Block Copy, IBC) 모드라고 명명할 수 있다. IBC 모드는 MxN(M<=64, N<=64) 부호화 유닛에 적용될 수 있다. IBC 모드는 스킵 모드, 머지 모드, AMVP 모드 등을 포함할 수 있다. 스킵 모드 또는 머지 모드의 경우, 머지 후보 리스트가 구성되고, 머지 인덱스가 시그널링되어 하나의 머지 후보가 특정될 수 있다. 상기 특정된 머지 후보의 블록 벡터가 현재 블록의 블록 벡터로서 이용될 수 있다. 머지 후보 리스트는 공간적 후보, 히스토리에 기반한 후보, 두개 후보의 평균에 기반한 후보 또는 제로 머지 후보 등 적어도 하나 이상을 포함할 수 있다. AMVP 모드의 경우, 차분 블록 벡터가 시그널링될 수 있다. 또한, 예측 블록 벡터는 현재 블록의 좌측 이웃 블록 및 상단 이웃 블록으로부터 유도될 수 있다. 어느 이웃 블록을 이용할지에 관한 인덱스는 시그널링될 수 있다. IBC 모드의 예측 블록은 현재 CTU 또는 좌측 CTU에 포함되고, 기 복원된 영역내의 블록으로 한정될 수 있다. 예를 들어, 현재 블록의 예측 블록은, 현재 블록이 속한 64x64 블록보다 부호화/복호화 순서상 앞선 3개의 64x64 블록 영역내에 위치하도록 블록 벡터의 값이 제한될 수 있다. 이와 같이 블록 벡터의 값을 제한함으로써, IBC 모드 구현에 따른 메모리 소비와 장치의 복잡도를 경감할 수 있다.
이하에서는 비디오 코딩 과정 중 하나인 변환(transform) 방법 개선을 통한 비디오 압축 효율 향상 방법에 대해 설명하도록 한다. 좀 더 구체적으로 기존 비디오 코딩의 부호화(encoding)는 크게 현재 원본 영상의 일부분인 원본 블록을 예측하는 화면 내(intra)/화면 간(inter) 예측 단계, 예측된 예측 블록(prediction block)과 원본 블록의 차이인 잔차 블록(residual block)의 변환 및 양자화(quantization) 단계, 변환 및 양자화된 블록의 계수와 앞 단에서 얻어진 압축 정보에 대한 확률 기반 무손실 압축 방법인 엔트로피 코딩(entropy coding) 단계를 거쳐 원본 영상의 압축 형태인 비트스트림(bitstream)을 형성하고, 이를 복호화기(decoder)로 전송하거나 기록 매체에 저장한다. 본 명세서에서 후술할 셔플링 및 이산 정현 변환(Shuffling and Discrete Sine Transform, 이하, “SDST”)은 변환의 효율성을 증가시켜 압축 효율을 향상시키기 위한 것이다.
본 개시에 따른 SDST 방법은 비디오 코딩에서 널리 이용하는 변환 커널(transform kernel)인 이산 여현 변환 타입-2(Discrete Cosine Transform type-2, 이하, “DCT-II” 또는 “DCT-2”) 대신 이산 정현 변환 타입-7(Discrete Sine Transform type-7, 이하, “DST-VII” 또는 “DST-7”)을 사용함으로써 영상들이 공통적으로 갖는 주파수 특성을 더 잘 반영할 수 있다.
본 개시의 변환 방법에 따르면, 기존의 비디오 코딩 방법 대비 비교적 낮은 비트량에서도 높은 객관적 비디오 화질을 얻을 수 있다.
DST-7은 잔차 블록(residual block)의 데이터에 적용될 수 있다. 잔차 블록에 대한 DST-7 적용은 잔차 블록에 대응하는 예측 모드에 기반하여 수행될 수 있다. 예를 들어, 인터 모드(화면 간 모드)로 부호화된 잔차 블록에 적용될 수 있다. 본 개시의 일 실시 예에 따라 DST-7은 잔차 블록의 데이터를 재배열 혹은 셔플링(shuffling)한 이후에 적용될 수 있다. 여기서, 셔플링은 영상 데이터의 재배열을 의미하며, 동등한 의미로 잔차 신호 재배열(rearrangement) 혹은 플리핑(flipping)이라고 할 수 있다. 여기서, 잔차 블록은 레지듀얼(residual), 잔차 블록, 잔차 신호, 잔차 신호, 잔차 데이터 또는 잔차 데이터와 동일한 의미를 가질 수 있다. 또한, 잔차 블록은 잔차 블록이 부호화기와 복호화기에서 복원된 형태인 복원된 레지듀얼(reconstructed residual), 복원된 잔차 블록, 복원된 잔차 신호, 복원된 잔차 신호, 복원된 잔차 데이터 또는 복원된 잔차 데이터와 동일한 의미를 가질 수도 있다.
본 개시의 일 실시 예에 따른 SDST는 DST-7을 변환 커널로 사용할 수 있다. 이 때, SDST의 변환 커널은 DST-7에 한정되는 것은 아니고, 이산 정현 변환 타입-1(Discrete Sine Transform type-1, DST-1), 이산 정현 변환 타입-2(Discrete Sine Transform type-2, DST-2), 이산 정현 변환 타입-3(Discrete Sine Transform type-3, DST-3), …, 이산 정현 변환 타입-n(Discrete Sine Transform type-n, DST-n), 이산 여현 변환 타입-1(Discrete Cosine Transform type-1, DCT-1), 이산 여현 변환 타입-2(Discrete Cosine Transform type-2, DCT-2), 이산 여현 변환 타입-3(Discrete Cosine Transform type-3, DCT-3), …, 이산 여현 변환 타입-n(Discrete Cosine Transform type-n, DCT-n) 등 DST 및 DCT의 여러 타입 중 적어도 하나를 이용할 수 있다. (여기서, n은 1 이상의 양의 정수)
아래와 같은 수학식 1은 본 개시의 일 실시 예에 따른 1차원 DCT-2의 수행 방법을 나타낼 수 있다. 여기서, N은 블록의 크기, k는 주파수 성분의 위치, xn은 공간 도메인에서 n번째 계수의 값을 나타낼 수 있다.
Figure PCTKR2020016991-appb-M000001
2차원 도메인의 DCT-2는, 상기 수학식 1을 이용하여 잔차 블록에 대해 수평 변환(horizontal transform) 및 수직 변환(vertical transform)을 수행함으로써 가능할 수 있다.
DCT-2 변환 커널은 아래와 같은 수학식 2로 정의될 수 있다. 여기서, Xk 는 주파수 도메인에서 위치에 따른 기저 벡터(basis vector), N은 주파수 도메인의 크기를 나타낼 수 있다.
Figure PCTKR2020016991-appb-M000002
한편, 도 7은 본 개시에 따른 DCT-2의 주파수 도메인에서의 기저 벡터(basis vector)를 도시한 도면이다. 도 7은 주파수 도메인에서의 DCT-2의 주파수 특성을 나타낸다. 여기서, DCT-2의 X0 기저 벡터를 통해 계산된 값은 DC 성분을 의미할 수 있다.
DCT-2는 4x4, 8x8, 16x16, 32x32 크기 등의 잔차 블록에 대한 변환 과정에 이용될 수 있다.
한편, DCT-2는 잔차 블록의 크기, 잔차 블록의 색 성분(예를 들어, 휘도 성분, 색차 성분) 또는 잔차 블록에 대응하는 예측 모드 중 적어도 하나에 기초하여 선택적으로 이용될 수 있다. 예를 들어, 인트라 모드(화면 내 모드)로 부호화된 4x4 크기의 잔차 블록이고, 해당 잔차 블록의 성분이 휘도 성분인 경우, DCT-2가 이용되지 않을 수 있다. 예를 들어, 인트라 모드로 부호화된 잔차 블록의 가로 길이가 소정의 범위(예컨대, 4 픽셀 이상 16 픽셀 이하)에 속하고, 가로 길이가 세로 길이보다 크지 않으면, 수평 변환을 위해 제1 변환 커널이 이용될 수 있다. 그렇지 않으면, 수평 변환을 위해 제2 변환 커널이 이용될 수 있다. 예를 들어, 인트라 모드로 부호화된 잔차 블록의 세로 길이가 4 픽셀 이상 16 픽셀 이하에 속하고, 세로 길이가 가로 길이보다 크지 않으면, 수직 변환을 위해 제1 변환 커널이 이용될 수 있다. 그렇지 않으면, 수직 변환을 위해 제2 변환 커널이 이용될 수 있다. 상기 제1 변환 커널 및 제2 변환 커널은 상이할 수 있다. 즉, 인트라 모드로 부호화된 블록의 수평 변환 및 수직 변환 방법은 소정의 조건 하에서, 블록의 형태에 기반하여 암묵적으로 결정될 수 있다. 예컨대, 제1 변환 커널은 DST-7, 제2 변환 커널은 DCT-2일 수 있다. 이 때, 잔차 블록은 변환의 대상이므로 변환 블록과 같은 의미일 수 있다. 여기서, 예측 모드는 화면 간(inter) 예측 혹은 화면 내(intra) 예측을 의미할 수 있다. 또한, 예측 모드는 화면 내 예측일 경우 화면 내 예측 모드 혹은 화면 내 예측 방향을 의미할 수 있다
DCT-2 변환 커널을 통한 변환은, 영상의 배경과 같이 주변 화소(pixel) 간의 변화가 적은 특성의 블록에 대해 높은 압축 효율을 보일 수 있다. 하지만, 텍스쳐(texture) 영상처럼 복잡한 패턴(pattern)을 갖는 영역에 대한 변환 커널로는 적합하지 않을 수 있다. 왜냐하면, 주변 화소(pixel) 간의 상관 관계(correlation)가 낮은 블록을 DCT-2를 통해 변환할 경우 주파수 도메인의 고주파 성분에 많은 변환 계수가 발생할 수 있기 때문이다. 고주파 영역에서 변환 계수가 빈번히 발생하게 되면, 영상의 압축 효율을 감소할 수 있다. 압축 효율 향상을 위해서는 저주파수 성분 근처에서 큰 값을 갖는 계수가 발생하고, 고주파 성분에서는 되도록 계수의 값이 0에 가까워져야 한다.
아래의 수학식 3은 본 개시의 일 실시 예에 따른 1차원 DST-7의 수행 방법을 나타낼 수 있다. 여기서, N은 블록의 크기, k는 주파수 성분의 위치, xn은 공간 도메인에서 n번째 계수의 값을 의미할 수 있다.
Figure PCTKR2020016991-appb-M000003
2차원 도메인의 DST-7은, 상기 수학식 3을 이용하여 잔차 블록에 대해 수평 변환(horizontal transform) 및 수직 변환(vertical transform)을 수행함으로써 가능할 수 있다.
DST-7 변환 커널은 아래의 수학식 4로 정의될 수 있다. 여기서, Xk는 DST-7의 K번째 기저 벡터를, i는 주파수 도메인에서의 위치를, N은 주파수 도메인의 크기를 나타낼 수 있다.
Figure PCTKR2020016991-appb-M000004
DST-7은 2x2, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 등 중 적어도 하나 이상의 크기의 잔차 블록에 대한 변환 과정에 이용될 수 있다.
한편, DST-7은 정사각형(square) 블록이 아닌 직사각형(rectangular) 블록에 적용될 수 있다. 예를 들어, 8x4, 16x8, 32x4, 64x16 등 가로 크기와 세로 크기가 서로 다른 직사각형 블록의 수직 변환 및 수평 변환 중 적어도 하나 이상에 DST-7이 적용될 수 있다. 복수의 변환 방법의 선택적 적용이 가용한 경우, 정사각형 블록의 수평 변환 및 수직 변환에 대해서는 DCT-2를 적용할 수 있다. 복수의 변환 방법의 선택적 적용이 불가용한 경우, 정사각형 블록의 수평 변환 및 수직 변환에 대해서는 DST-7을 적용할 수 있다.
또한, DST-7은 잔차 블록의 크기, 잔차 블록의 색 성분(예를 들어, 휘도 성분, 색차 성분), 잔차 블록에 대응하는 예측 모드, 화면 내 예측 모드(방향), 잔차 블록의 형태 중 적어도 하나에 기초하여 선택적으로 이용될 수 있다. 예를 들어, 인트라 모드로 부호화된 4x4 크기의 잔차 블록이고 해당 잔차 블록의 성분이 휘도 성분인 경우, DST-7이 이용될 수 있다. 이 때, 예측 모드는 화면 간(inter) 예측 혹은 화면 내(intra) 예측을 의미할 수 있다. 또한, 예측 모드는 화면 내 예측일 경우 화면 내 예측 모드 혹은 화면 내 예측 방향을 의미할 수 있다. 예를 들어, 색차 성분에 대해서는 블록 형태에 기반한 변환 방법의 선택이 가용하지 않을 수 있다. 예를 들어, 화면 내 예측 모드가 색 성분간 예측인 경우, 블록 형태에 기반한 변환 방법의 선택은 가용하지 않을 수 있다. 예를 들어, 색차 성분에 대한 변환 방법은 비트스트림을 통해 시그널링되는 정보에 의해서 특정될 수 있다. 현재 블록이 복수의 서브 블록들로 분할되고 각각의 서브 블록에 대해 화면 내 예측이 수행되는 경우, 현재 블록에 대한 변환 방법은 화면 내 예측 모드 및/또는 블록의 크기(가로 및/또는 세로의 크기)에 기초하여 결정될 수 있다. 예를 들어, 화면 내 예측 모드가 비방향성(DC 또는 Planar)인 경우, 가로 길이(세로 길이)가 소정의 범위에 포함되는 경우, 수평 변환(수직 변환)을 위해 제1 변환 커널이 이용되고, 그렇지 않은 경우, 제2 변환 커널이 이용될 수 있다. 상기 제1 변환 커널과 제2 변환 커널은 상이할 수 있다. 예컨대, 제1 변환 커널은 DST-7이고, 제2 변환 커널은 DCT-2일 수 있다. 상기 소정의 범위는 예컨대, 4 픽셀 내지 16 픽셀일 수 있다. 블록의 크기가 상기 소정의 범위에 포함되지 않는 경우, 수평 변환 및 수직 변환을 위해 동일한 커널(예컨대, 제2 변환 커널)이 이용될 수 있다. 블록의 크기가 상기 소정의 범위에 포함되는 경우, 서로 인접한 화면 내 예측 모드들에 대해 서로 다른 변환 커널이 이용될 수 있다. 예컨대, 모드 27의 수평 변환 및 수직 변환을 위해 각각 제2 변환 커널 및 제1 변환 커널을 이용한다면, 모드 27에 인접한 모드 26 및 모드 28의 수평 변환 및 수직 변환을 위해 각각 제1 변환 커널 및 제2 변환 커널을 이용할 수 있다.
이하에서는, DST-7을 변환 커널로 사용하는 변환 방법 중 하나인 SDST에 대해 설명하도록 한다.
이하에서, 블록은 CU, PU 및 TU 중 어느 하나를 의미할 수 있다.
본 개시에 따른 SDST는 두 단계로 수행될 수 있다. 첫번째 단계는 인터 모드(화면 간 모드) 혹은 인트라 모드(화면 내 모드)로 예측된 CU의 PU 내 잔차 신호를 셔플링하는 단계이다. 두번째 단계는 셔플링된 블록 내 잔차 신호에 DST-7을 적용하는 단계이다.
현재 블록(예를 들어, CU, PU 또는 TU) 내에 배열된 잔차 신호를 제1 방향에 따라 스캔하고, 이를 제2 방향에 따라 재배열할 수 있다. 즉, 현재 블록 내에 배열된 잔차 신호를 제1 방향에 따라 스캔하고, 이를 제2 방향에 따라 재배열하여 셔플링을 수행할 수 있다. 이 때, 잔차 신호는 원본 신호와 예측 신호 사이의 차분 신호를 나타내는 신호를 의미할 수 있다. 즉, 잔차 신호는 변환과 양자화 중 적어도 하나를 수행하기 전인 신호를 의미할 수 있다. 또는, 잔차 신호는 변환과 양자화 중 적어도 하나 이상이 수행된 신호 형태를 의미할 수 있다. 또한, 잔차 신호는 복원된 잔차 신호를 의미할 수 있다. 즉, 잔차 신호는 역변환과 역양자화 중 적어도 하나 이상이 수행된 신호를 의미할 수 있다. 또한, 잔차 신호는 역변환과 역양자화 중 적어도 하나를 수행하기 전인 신호를 의미할 수 있다.
한편, 제1 방향(또는 스캔 방향)은 래스터 스캔 순서(Raster scan order), 위-오른쪽 대각선 스캔 순서(Up-Right Diagonal scan order), 수평 스캔 순서(Horizontal scan order), 수직 스캔 순서(Vertical scan order) 중 어느 하나일 수 있다. 또한, 제1 방향은 아래의 (1) 내지 (10) 중 적어도 하나로 정의될 수 있다.
(1) 상단 행(row)에서 하단 행으로 스캔하되, 하나의 행에서는 좌측에서 우측으로 스캔
(2) 상단 행(row)에서 하단 행으로 스캔하되, 하나의 행에서는 우측에서 좌측으로 스캔
(3) 하단 행(row)에서 상단 행으로 스캔하되, 하나의 행에서는 좌측에서 우측으로 스캔
(4) 하단 행(row)에서 상단 행으로 스캔하되, 하나의 행에서는 우측에서 좌측으로 스캔
(5) 좌측 열(column)에서 우측 열로 스캔하되, 하나의 열에서는 상단에서 하단으로 스캔
(6) 좌측 열(column)에서 우측 열로 스캔하되, 하나의 열에서는 하단에서 상단으로 스캔
(7) 우측 열(column)에서 좌측 열로 스캔하되, 하나의 열에서는 상단에서 하단으로 스캔
(8) 우측 열(column)에서 좌측 열로 스캔하되, 하나의 열에서는 하단에서 상단으로 스캔
(9) 나선 형태로 스캔: 블록 내부(또는 외부)에서 블록 외부(또는 내부)로, 시계/반시계 방향으로 스캔
(10) 대각 스캔: 블록 내 하나의 꼭지점에서 시작하여, 좌상단, 우상단, 좌하단 또는 우하단 방향으로 대각 스캔
한편, 제2 방향(또는 재배열 방향)도 상기 (1) 내지 (10)의 스캔 방향 중 적어도 하나가 선택적으로 이용될 수 있다. 제1 방향과 제2 방향은 동일할 수도 있고, 서로 상이할 수도 있다.
잔차 신호에 대한 스캔 및 재배열 과정은 현재 블록 단위로 수행될 수 있다.
여기서, 재배열은 블록 내에서 제1 방향에 따라 스캔한 잔차 신호를 동일한 크기의 블록에 제2 방향에 따라 배열하는 것을 의미할 수 있다. 이 때, 제1 방향에 따라 스캔한 블록의 크기와 제2 방향에 따라 재배열한 블록의 크기는 서로 상이할 수 있다.
또한, 여기서 스캔과 재배열은 각각 제1 방향 및 제2 방향에 따라 별도로 수행되는 것으로 표현했지만, 스캔과 재배열은 제1 방향에 대해서 하나의 과정으로 수행될 수 있다. 예를 들어, 블록 내 잔차 신호에 대해서 상단 행에서 하단 행으로 스캔하되, 하나의 행에서는 우측에서 좌측으로 스캔하여 블록에 저장(재배열)할 수 있다.
한편, 잔차 신호에 대한 스캔 및 재배열 과정은 현재 블록 내 소정의 서브블록(sub-block) 단위로 수행될 수 있다. 여기서, 서브블록은 현재 블록과 같거나 작은 블록일 수 있다. 상기 서브블록은 현재 블록으로부터 쿼드트리, 이진트리 형태 등으로 분할된 블록일 수 있다.
서브블록 단위는 고정된 크기 및/또는 형태(예를 들어, 4x4, 4x8, 8x8, … NxM, 여기서, N과 M은 양의 정수)를 가질 수 있다. 또한, 서브블록 단위의 크기 및/또는 형태는 가변적으로 유도될 수도 있다. 일 예로, 현재 블록의 크기, 형태, 및/또는 예측 모드(인터, 인트라)에 종속적(dependent)으로 서브블록 단위의 크기 및/또는 형태가 결정될 수 있다.
서브블록의 위치에 따라 스캔 방향 및/또는 재배열 방향이 적응적으로 결정될 수 있다. 이 경우, 서브블록 별로 서로 상이한 스캔 방향 및/또는 재배열 방향을 사용할 수도 있고, 현재 블록에 속한 서브블록들 전부 또는 일부는 동일한 스캔 방향 및/또는 재배열 방향을 사용할 수도 있다.
예컨대, 화면 간 예측된 블록에 대해, 블록과 동일 크기의 잔차 블록이 복호화될 수도 있고, 블록의 일부에 해당하는 서브 잔차 블록이 복호화될 수도 있다. 이를 위한 정보가 블록에 대해 시그널링될 수 있고, 상기 정보는 예컨대, 플래그일 수 있다. 블록과 동일 크기의 잔차 블록이 복호화되는 경우, 변환 커널에 대한 정보는 비트스트림에 포함된 정보를 복호화함으로써 결정될 수 있다. 블록의 일부에 해당하는 서브 잔차 블록이 복호화되는 경우, 서브 잔차 블록의 타입 및/또는 블록내 위치를 특정하는 정보에 기초하여 해당 서브 잔차 블록에 대한 변환 커널이 결정될 수 있다. 예컨대, 상기 서브 잔차 블록의 타입 및/또는 블록내 위치에 관한 정보는 비트스트림에 포함되어 시그널링될 수 있다. 이 때, 상기 블록이 32x32 보다 큰 경우, 서브 잔차 블록의 타입 및/또는 블록내 위치에 기초한 변환 커널의 결정은 수행되지 않을 수 있다. 예컨대, 32x32보다 큰 블록에 대해서는 소정의 변환 커널(예컨대, DCT-2)이 적용되거나, 또는 변환 커널에 대한 정보가 명시적으로 시그널링될 수 있다. 또는 상기 블록의 너비 또는 높이가 32보다 큰 경우, 서브 잔차 블록의 타입 및/또는 블록내 위치에 기초한 변환 커널의 결정은 수행되지 않을 수 있다. 예컨대, 64x8 블록에 대해서는 소정의 변환 커널(예컨대, DCT-2)이 적용되거나, 또는 변환 커널에 대한 정보가 명시적으로 시그널링될 수 있다.
상기 서브 잔차 블록의 타입에 관한 정보는 해당 블록의 분할 정보일 수 있다. 상기 블록의 분할 정보는, 예컨대, 수평 분할 또는 수직 분할 중 하나를 지시하는 분할 방향 정보일 수 있다. 또는 상기 블록의 분할 정보는 분할 비율 정보를 포함할 수 있다. 예컨대, 분할 비율은 1:1, 1:3 및/또는 3:1을 포함할 수 있다. 상기 분할 방향 정보와 분할 비율 정보는 별개의 구문 요소로 시그널링될 수도 있고, 하나의 구문 요소로 시그널링될 수도 있다.
상기 서브 잔차 블록의 위치에 관한 정보는, 블록 내에서의 위치를 지시할 수 있다. 예컨대, 블록의 분할이 수직 분할인 경우, 상기 위치에 관한 정보는 좌측 및 우측 중 하나를 지시할 수 있다. 또한, 블록의 분할이 수평 분할인 경우, 상기 위치에 관한 정보는 상단 및 하단 중 하나를 지시할 수 있다.
상기 서브 잔여 블록의 변환 커널은 상기 타입 정보 및/또는 위치 정보에 기초하여 결정될 수 있다. 상기 변환 커널은 수평 변환 및 수직 변환에 대해 독립적으로 결정될 수 있다. 예컨대, 상기 변환 커널은 상기 분할 방향에 기초하여 결정될 수 있다. 예컨대, 수직 분할인 경우는 수직 변환에 대해, 수평 분할인 경우는 수평 변환에 대해 제1 변환 커널을 적용할 수 있다. 예컨대, 수직 분할인 경우의 수평 변환 및 수평 분할인 경우의 수직 변환에 대해서는 제1 변환 커널 또는 제2 변환 커널을 적용할 수 있다. 예컨대, 수직 분할인 경우 좌측 위치의 수평 변환에 대해서는 제2 변환 커널, 우측 위치의 수평 변환에 대해서는 제1 변환 커널을 적용할 수 있다. 또한, 수평 분할인 경우 상측 위치의 수직 변환에 대해서는 제2 변환 커널, 하측 위치의 수직 변환에 대해서는 제1 변환 커널을 적용할 수 있다. 예컨대, 상기 제1 변환 커널 및 제2 변환 커널은 각각 DST-7 및 DCT-8일 수 있다. 예컨대, 상기 제1 변환 커널 및 제2 변환 커널은 각각 DST-7 및 DCT-2일 수 있다. 그러나, 이에 한정되지 않으며, 본 명세서에서 언급된 다양한 변환 커널들 중 서로 다른 임의의 2개의 변환 커널들이 각각 제1 및 제2 변환 커널로서 사용될 수도 있다. 여기서, 상기 블록은 CU 혹은 TU를 의미할 수 있다. 또한, 상기 서브 잔여 블록은 Sub-TU를 의미할 수 있다.
인터 예측된 PU 내 TU일 경우에만 해당 변환 모드 정보를 바이패스 모드(bypass mode)로 엔트로피 부호화/복호화할 수 있다. 또한 변환 생략 모드(transform skip mode)이거나 RDPCM(Residual Differential PCM) 모드 및 무손실 모드(lossless mode) 중 적어도 하나인 경우에도 변환 모드 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다.
또한, 블록의 부호화 블록 플래그(coded block flag)가 0인 경우에도 변환 모드 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다. 부호화 블록 플래그가 0인 경우 디코더에서 역변환 과정이 생략되므로 변환 모드 정보가 디코더에서 존재하지 않아도 해당 블록의 복원이 가능하다.
다만, 변환 모드 정보는 플래그를 통해서 변환 모드를 나타내는 것으로 한정되지 아니하며, 기-정의된 테이블과 인덱스의 형태로 구현될 수도 있다. 여기서, 기-정의된 테이블은 인덱스 별로 이용 가능한 변환 모드가 정의된 것일 수 있다.
또한, DCT-2 혹은 SDST의 변환은 가로 방향과 세로 방향으로 분리되어 수행될 수 있다. 가로 방향과 세로 방향에 대해서 서로 동일한 변환 모드가 이용될 수도 있고, 서로 상이한 변환 모드가 이용될 수도 있다.
또한, 가로 방향과 세로 방향 각각에 대해 DCT-2를 사용했는지, SDST를 사용했는지, DST-7를 사용했는지에 대한 변환 모드 정보를 각각 엔트로피 부호화/복호화할 수 있다. 상기 변환 모드 정보는 예컨대, 인덱스로서 시그널링될 수 있으며, 동일 인덱스가 지시하는 변환 커널은 화면 내 예측된 블록 및 화면 간 예측된 블록에 대해 동일할 수 있다.
또한, 변환 모드 정보는 CU, PU, TU, 블록 단위 중 적어도 하나 이상의 단위에서 엔트로피 부호화/복호화될 수 있다.
또한, 변환 모드 정보는 휘도 성분 혹은 색차 성분에 따라 시그널링될 수 있다. 다시 말하여, 변환 모드 정보는 Y 성분 혹은 Cb 성분 혹은 Cr 성분에 따라 시그널링될 수 있다. 예를 들어, Y 성분에 대해서 DCT-2를 수행했는지, SDST를 수행했는지에 대한 변환 모드 정보가 시그널링되는 경우, Cb 성분 및 Cr 성분 중 적어도 하나 이상에서 별도의 변환 모드 정보 시그널링 없이 Y 성분에서 시그널링되는 변환 모드 정보를 해당 블록의 변환 모드로 이용할 수 있다.
여기서, 변환 모드 정보는 문맥 모델(context model)을 이용하는 산술 부호화 방법으로 엔트로피 부호화/복호화될 수 있다. 만약, 변환 모드 정보가 기-정의된 테이블과 인덱스의 형태로 구현될 경우, 여러 개의 빈(bin)들 중 전부 혹은 일부 빈들에 대해서만 문맥 모델을 이용하는 산술 부호화 방법으로 엔트로피 부호화/복호화될 수 있다.
또한, 변환 모드 정보는 블록 크기에 따라 선택적으로 엔트로피 부호화/복호화될 수 있다. 예를 들어, 현재 블록의 크기가 64x64 이상일 경우 변환 모드 정보는 엔트로피 부호화/복호화되지 않고, 32x32 이하일 경우에 변환 모드 정보는 엔트로피 부호화/복호화될 수 있다.
또한, 현재 블록 내에 0이 아닌 변환 계수 혹은 양자화된 레벨이 L개 존재할 경우, 변환 모드 정보를 엔트로피 부호화/복호화하지 않고, DCT-2 혹은 DST-7 혹은 SDST 방법 중 한가지 방법을 수행할 수 있다. 이때, 상기 0이 아닌 변환 계수 혹은 양자화된 레벨의 블록 내의 위치에 상관없이 변환 모드 정보를 엔트로피 부호화/복호화하지 않을 수 있다. 또한, 상기 0이 아닌 변환 계수 혹은 양자화된 레벨이 블록 내 좌상단 위치에 존재할 경우에만 변환 모드 정보를 엔트로피 부호화/복호화하지 않을 수 있다. 여기서, L은 0을 포함한 양의 정수일 수 있고, 예를 들어 1일 수 있다.
또한, 현재 블록 내에 0이 아닌 변환 계수 혹은 양자화된 레벨이 J개 이상 존재할 경우, 변환 모드 정보를 엔트로피 부호화/복호화할 수 있다. 이때, J는 양의 정수이다.
또한, 변환 모드 정보는 콜 블록(Collocated Block)의 변환 모드에 따라 일부 변환 모드의 사용이 제한되거나, 콜 블록의 변환 모드를 보다 적은 비트로 표현하는 방식으로 변환 정보의 이진화(Binarization) 방법이 달라질 수 있다.
상술한 SDST는 현재 블록의 예측 모드, 화면 내 예측 모드, 화면 간 예측 모드, TU 뎁스(깊이), 크기 및 형태 중 적어도 하나에 기초하여 제한적으로 이용될 수도 있다.
예를 들어, SDST는 현재 블록이 인터 모드로 부호화된 경우에 이용될 수 있다.
SDST가 허용되는 최소/최대 뎁스가 정의될 수 있다. 이 경우, 현재 블록의 뎁스가 최소 뎁스와 같거나 큰 경우에 SDST가 이용될 수 있고, 또는 현재 블록의 뎁스가 최대 뎁스와 같거나 작은 경우에 SDST가 이용될 수도 있다. 여기서, 최소/최대 뎁스는 고정된 값일 수도 있고, 최소/최대 뎁스를 나타내는 정보에 기초하여 가변적으로 결정될 수도 있다. 최소/최대 뎁스를 나타내는 정보는 인코더로부터 시그널링될 수도 있고, 현재/주변 블록의 속성(예컨대, 크기, 뎁스 및/또는 형태)에 기초하여 디코더에서 유도될 수도 있다.
SDST가 허용되는 최소/최대 크기가 정의될 수도 있다. 마찬가지로, 현재 블록의 크기가 최소 크기와 같거나 큰 경우에 SDST가 이용될 수 있고, 또는 현재 블록의 크기가 최대 크기와 같거나 작은 경우에 SDST가 이용될 수도 있다. 여기서, 최소/최대 크기는 고정된 값일 수도 있고, 최소/최대 크기를 나타내는 정보에 기초하여 가변적으로 결정될 수도 있다. 최소/최대 크기를 나타내는 정보는 인코더로부터 시그널링될 수도 있고, 현재/주변 블록의 속성(예컨대, 크기, 뎁스 및/또는 형태)에 기초하여 디코더에서 유도될 수도 있다. 예를 들어, 현재 블록이 4x4인 경우 DCT-2를 변환 방법으로 사용하고, DCT-2를 사용했는지 SDST를 사용했는지에 대한 변환 모드 정보를 엔트로피 부호화/복호화하지 않을 수 있다.
SDST가 허용되는 블록의 형태가 정의될 수도 있다. 이 경우, 현재 블록의 형태가 정의된 블록의 형태인 경우에 SDST가 이용될 수 있다. 또는 SDST가 허용되지 않는 블록의 형태가 정의될 수 있다. 이 경우, 현재 블록의 형태가 정의된 블록의 형태인 경우에 SDST가 이용되지 않을 수 있다. SDST가 허용되는 또는 허용되지 않는 블록의 형태는 고정된 것일 수도 있고, 이에 관한 정보가 인코더로부터 시그널링될 수도 있다. 또는 현재/주변 블록의 속성(예컨대, 크기, 뎁스 및/또는 형태)에 기초하여 디코더에서 유도될 수도 있다. SDST가 허용되는 또는 허용되지 않는 블록의 형태는 예컨대, MxN 블록에 있어서, M, N 및/또는 M과 N의 비율을 의미할 수 있다.
또한, TU의 깊이가 0인 경우에는 변환 방법으로 DCT-2 혹은 DST-7을 사용하고, 어떤 변환 방법을 사용했는지에 대한 변환 모드 정보를 엔트로피 부호화/복호화할 수 있다. 만약, DST-7을 변환 방법으로 사용할 경우, 잔차 신호의 재배열 과정을 수행할 수 있다. 또한, TU의 깊이가 1이상인 경우에는 변환 방법으로 DCT-2 혹은 SDST를 사용하고, 어떤 변환 방법을 사용했는지에 대한 변환 모드 정보를 엔트로피 부호화/복호화할 수 있다.
또한, CU 및 PU의 분할 형태 혹은 현재 블록의 형태에 따라 변환 방법을 선택적으로 사용할 수 있다.
일 실시예에 따르면, CU 및 PU의 분할 형태 혹은 현재 블록의 형태가 2Nx2N인 경우 DCT-2를 사용하고, 나머지 분할 및 블록 형태에 대해서는 DCT-2 또는 SDST를 선택적으로 사용할 수 있다.
그리고, CU 및 PU의 분할 형태 혹은 현재 블록의 형태가 2NxN 혹은 Nx2N인 경우 DCT-2를 사용하고, 나머지 분할 형태 및 블록 형태에 대해서는 DCT-2 또는 SDST를 선택적으로 사용할 수 있다.
그리고, CU 및 PU의 분할 형태 혹은 현재 블록의 형태가 nRx2N 혹은 nLx2N 혹은 2NxnU 혹은 2NxnD인 경우 DCT-2를 사용하고, 나머지 분할 형태 및 블록 형태에 대해서는 DCT-2 또는 SDST를 선택적으로 사용할 수 있다.
한편, 현재 블록에서 분할된 블록 단위로 SDST 혹은 DST-7가 수행될 때, 분할된 블록 단위로 변환 계수(양자화된 레벨)에 대한 스캐닝 및 역스캐닝이 수행될 수 있다. 또한, 현재 블록에서 분할된 블록 단위로 SDST 혹은 DST-7가 수행될 때, 분할되지 않은 현재 블록 단위로 변환 계수(양자화된 레벨)에 대한 스캐닝 및 역스캐닝이 수행될 수 있다.
또한, 상기 SDST 혹은 DST-7을 이용한 변환/역변환은 현재 블록의 화면 내 예측 모드(방향), 현재 블록의 크기, 현재 블록의 성분(휘도 성분인지 색차 성분인지) 중 적어도 하나 이상에 따라 수행될 수 있다.
그리고, 상기 SDST 혹은 DST-7을 이용한 변환/역변환 시에 DST-7 대신 DST-1을 이용할 수 있다. 또한, 상기 SDST 혹은 DST-7을 이용한 변환/역변환 시에 DST-7 대신 DCT-4를 이용할 수 있다.
또한, 상기 DCT-2를 이용한 변환/역변환 시에 SDST 혹은 DST-7의 잔차 신호의 재배열에서 이용한 재배열 방법을 적용할 수 있다. 즉, DCT-2를 이용할 경우에도 잔차 신호의 재배열 혹은 소정의 각도를 이용한 잔차 신호의 회전을 수행할 수 있다.
이하에서, 셔플링 방법 및 시그널링 방법에 관한 다양한 변형례 및 실시예를 설명한다.
본 개시의 SDST는 변환, 셔플링, 재배열 및/또는 플리핑 방법의 변경을 통한 영상 압축 효율 향상을 목적으로 한다. 잔차 신호의 셔플링을 통한 DST-7 수행은 PU 내 잔차 신호 분포 특성을 효과적으로 반영하기 때문에 높은 압축 효율을 보일 수 있다.
셔플링 단계에 관한 상기 설명에서 잔차 신호 재배열 방법에 대해 알아보았다. 아래에서는 상술한 잔차 신호 재배열을 위한 셔플링 방법 외에 다른 구현 방법에 대해 알아보도록 한다.
아래에서 설명하는 재배열 방법은 상술한 SDST 방법에 관한 실시예 중 적어도 하나 이상에 적용될 수 있다.
잔차 신호 재배열을 구현하는데 있어서 하드웨어 복잡도를 최소화하기 위하여 가로 플리핑(flipping)과 세로 플리핑 방법으로 잔차 신호 재배열 과정을 구현할 수 있다. 잔차 신호 재배열 방법은 다음의 (1) 내지 (4)와 같이 플리핑을 통해 구현될 수 있다. 후술되는 재배열은 플리핑을 의미할 수 있다.
(1) r'(x,y)=r(x,y) ; 플리핑 수행 안함 (no flipping)
(2) r'(x,y)=r(w-1-x,y) ; 가로 방향 플리핑 (horizontal flipping)
(3) r'(x,y)=r(x,h-1-y) ; 세로 방향 플리핑 (vertical flipping)
(4) r'(x,y)=r(w-1-x,h-1-y) ; 가로 방향 및 세로 방향 플리핑 (horizontal and vertical flipping)
r'(x,y)는 재배열 후 잔차 신호이며, r(x,y)는 재배열 이전 잔차 신호다. w와 h는 각각 블록의 너비와 높이를 의미하며, x, y는 블록 내 잔차 신호의 위치를 나타낸다. 플리핑을 사용하는 재배열 방법의 역 재배열 방법은 재배열 방법과 동일한 과정으로 수행될 수 있다. 즉, 가로 방향 플리핑을 사용하여 재배열된 잔차 신호는 다시 한번 가로 방향 플리핑을 수행함으로써 원래의 잔차 신호 배열로 복원될 수 있다. 부호화기에서 수행하는 재배열 방법과 복호화기에서 수행하는 역 재배열 방법은 서로 동일한 플리핑 방법일 수 있다.
예를 들어, 가로 방향 플리핑을 수행한 잔차 블록에 가로 방향 플리핑을 수행하면, 플리핑 수행 전 잔차 블록을 얻을 수 있으며 이를 수식으로 표현하면 다음과 같다.
r'(w-1-x, y) = r(w-1-(w-1-x), y) = r(x,y).
예를 들어, 세로 방향 플리핑을 수행한 잔차 블록에 세로 방향 플리핑을 수행하면, 플리핑 수행 전 잔차 블록을 얻을 수 있으며 이를 수식으로 표현하면 다음과 같다.
r'(x, h-1-y)=r(x,h-1-(h-1-y)) = r(x,y).
예를 들어, 가로 방향 및 세로 방향 플리핑을 수행한 잔차 블록에 가로 방향 및 세로 방향 플리핑을 수행하면, 플리핑 수행 전 잔차 블록을 얻을 수 있으며 이를 수식으로 표현하면 다음과 같다.
r'(w-1-x, h-1-y) = r(w-1-(w-1-x), h-1-(h-1-y)) = r(x,y).
상기 플리핑 기반 잔차 신호 셔플링/재배열 방법은 현재 블록을 분할하지 않은 채로 사용할 수 있다. 즉, 상기 SDST 방법에서는 현재 블록(TU 등)을 서브블록(sub-block)으로 분할하고 서브블록 별로 DST-7을 사용하는 것을 설명하였지만, 플리핑 기반 잔차 신호 셔플링/재배열 방법을 사용할 경우에는 현재 블록을 서브블록으로 분할하지 않고 현재 블록 전체 혹은 일부에 대해서 플리핑을 수행한 후 DST-7 변환을 수행할 수 있다. 또한, 플리핑 기반 잔차 신호 셔플링/재배열 방법을 사용할 경우에는 현재 블록을 서브블록으로 분할하지 않고 DST-7 역변환을 수행한 후 현재 블록 전체 혹은 일부에 대해서 플리핑을 수행할 수 있다.
플리핑 기반 잔차 신호 셔플링/재배열을 수행할 수 있는 블록의 최대 크기(MxN) 및/또는 최소 크기(OxP)가 정의될 수 있다. 여기서, 크기에는 가로 크기인 너비(M 혹은 O)와 세로 크기인 높이(N 혹은 P) 중 적어도 하나 이상이 포함될 수 있다. 상기, M, N, O, P는 양의 정수일 수 있다. 상기 블록의 최대 크기 및/또는 블록의 최소 크기는 부호화기/복호화기에서 기정의된 값일 수도 있고, 부호화기에서 복호화기로 시그널링되는 정보일 수도 있다.
예를 들어, 현재 블록의 크기가 플리핑 방법을 수행할 수 있는 최소 크기보다 작다면, 플리핑 및 DST-7 변환을 수행하지 않고 DCT-2 변환만을 수행할 수 있다. 이 때, 변환 모드로 플리핑 및 DST-7을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag는 시그널링되지 않을 수 있다.
예를 들어, 블록의 너비만 플리핑 방법을 수행할 수 있는 최소 너비 보다 작고 블록의 높이는 플리핑 방법을 수행할 수 있는 최소 높이보다 큰 경우, 가로 방향 1차원 변환은 DCT-2 만으로 수행할 수 있으며, 세로 방향 1차원 변환은 세로 방향 플리핑 후 DST-7을 이용하여 1차원 세로 변환을 수행하거나, 플리핑 없이 DST-7을 이용하여 1차원 세로 변환을 수행할 수 있다. 이 때, 변환 모드로 플리핑을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag는 세로 방향 1차원 변환에 대해서만 시그널링될 수 있다.
예를 들어, 블록의 높이만 플리핑 방법을 수행할 수 있는 최소 너비 보다 작고, 블록의 너비는 플리핑 방법을 수행할 수 있는 최소 너비보다 큰 경우, 가로 방향 1차원 변환은 가로 방향 플리핑 후 DST-7을 이용하여 1차원 가로 변환을 수행하거나, 플리핑 없이 DST-7을 이용하여 1차원 가로 변환을 수행할 수 있으며, 세로 방향 1차원 변환은 DCT-2 만으로 수행할 수 있다. 이 때, 변환 모드로 플리핑을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag는 가로 방향 1차원 변환에 대해서만 시그널링될 수 있다.
예를 들어, 현재 블록의 크기가 플리핑 방법을 수행할 수 있는 최대 크기보다 크다면, 플리핑 및 DST-7 변환을 사용하지 않고 DCT-2 변환만을 사용할 수 있다. 이 때, 변환 모드로 플리핑 및 DST-7 변환을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag는 시그널링되지 않을 수 있다.
예를 들어, 현재 블록의 크기가 플리핑 방법을 수행할 수 있는 최대 크기보다 크다면, DCT-2 변환 혹은 DST-7 변환만을 사용할 수 있다.
예를 들어, 플리핑 방법을 수행할 수 있는 최대 크기가 32x32이고, 최소 크기가 4x4라면, 64x64 크기의 블록에는 플리핑 및 DST-7 변환이 사용되지 않고, DCT-2 변환만 사용될 수 있다. 이 때, 64x64 크기의 블록에 대해서는 변환 모드로 플리핑 및 DST-7을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag는 시그널링되지 않을 수 있다. 또한, 4x4 크기의 블록 내지 32x32 크기의 블록에서는 변환 모드로 플리핑 및 DST-7을 사용하는지 여부를 지시하는 변환 모드 정보인 SDST flag를 시그널링할 수 있다. 이러한 경우, 64x64 크기의 블록에 대해서는 DST-7 변환을 사용하지 않으므로, 64x64 크기의 블록에 사용되는 DST-7 변환을 저장할 메모리 공간을 절약할 수 있다.
예를 들어, 플리핑 방법을 수행할 수 있는 최대 크기가 32x32이고, 최소 크기가 4x4라면, 64x64 크기의 블록에는 플리핑 방법만 사용되지 않고, DCT-2 혹은 DST-7 변환이 사용될 수 있다.
예를 들어, MxN 크기의 정사각형 블록을 4개의 블록으로 쿼드트리 분할하여, 각각의 서브블록에 대해 플리핑을 이용하여 셔플링/재배열 방법을 수행한 후 DST-7 변환을 수행할 수 있다. 이 때, 각각의 서브블록들에 대해 플리핑 방법을 명시적으로 시그널링할 수 있다. 플리핑 방법은 2비트의 고정 길이(fixed length) 코드로 시그널링될 수 있으며, 절삭된 단항(truncated unary) 코드로 시그널링될 수 있다. 또한, 각각의 분할된 블록에 따라 플리핑 방법의 발생 확률에 근거한 이진화 방법을 사용할 수도 있다. 여기서, M과 N은 양의 정수일 수 있고, 예를 들어 64x64일 수 있다.
변환 모드 정보를 이용하여 플리핑 기반 잔차 신호 셔플링/재배열 방법 사용 정보(sdst_flag 혹은 sdst flag)를 엔트로피 부호화/복호화할 수 있다. 즉, 변환 모드 정보에 대한 시그널링을 통해서 부호화기에서 수행한 방법과 동일한 방법을 복호화기에서 수행할 수 있다. 예를 들어, 변환 모드 정보를 지시하는 플래그 비트가 제1 값을 가질 경우 플리핑 기반 잔차 신호 셔플링/재배열 방법과 DST-7을 변환/역변환 방법으로 사용할 수 있고, 상기 플래그 비트가 제2 값을 가질 경우, 다른 변환/역변환 방법을 사용할 수 있다. 이 때, 변환 모드 정보는 블록 별로 엔트로피 부호화/복호화될 수 있다. 여기서, 다른 변환/역변환 방법은 DCT-2 변환/역변환 방법일 수 있다. 또한, 변환 생략 모드(transform skip mode)이거나 RDPCM(Residual Differential PCM) 모드 및 무손실 모드 중 어느 하나인 경우에 상기 변환 모드 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다.
상기 변환 모드 정보는 현재 블록의 깊이, 현재 블록의 크기, 현재 블록의 형태, 주변 블록의 변환 모드 정보, 현재 블록의 부호화 블록 플래그 및 현재 블록의 변환 생략 모드 사용 여부 중 적어도 하나 이상을 이용해서 엔트로피 부호화/복호화될 수 있다. 예를 들어, 현재 블록의 부호화 블록 플래그가 0인 경우 변환 모드 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다. 또한, 상기 변환 모드 정보는 엔트로피 부호화/복호화 시 현재 블록의 주변에 복원된 블록의 변환 모드 정보로부터 예측 부호화/복호화될 수 있다. 또한, 상기 변환 모드 정보는 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 기반하여 시그널링될 수 있다.
또한, 플리핑 방법 정보를 이용하여 상기 4가지 플리핑 방법들 (플리핑 수행 안함, 가로 방향 플리핑, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑) 중 적어도 하나는 플래그 혹은 인덱스(flipping_idx) 형태로 엔트로피 부호화/복호화될 수 있다. 즉, 플리핑 방법 정보를 시그널링함으로써 부호화기에서 수행한 플리핑 방법과 동일한 플리핑 방법을 복호화기에서 수행할 수 있다. 상기 변환 모드 정보는 플리핑 방법 정보를 포함할 수 있다.
또한, 변환 생략 모드(transform skip mode)이거나 RDPCM(Residual Differential PCM) 모드, 무손실 모드 중 어느 하나인 경우에 플리핑 방법 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다. 상기 플리핑 방법 정보는 현재 블록의 깊이, 현재 블록의 크기, 현재 블록의 형태, 주변 블록의 플리핑 방법 정보, 현재 블록의 부호화 블록 플래그, 현재 블록의 변환 생략 모드 사용 여부 중 적어도 하나 이상을 이용해서 엔트로피 부호화/복호화될 수 있다. 예를 들어, 현재 블록의 부호화 블록 플래그가 0인 경우 플리핑 방법 정보의 엔트로피 부호화/복호화는 생략되고, 시그널링되지 않을 수 있다. 또한, 상기 플리핑 방법 정보는 엔트로피 부호화/복호화 시 현재 블록의 주변에 복원된 블록의 플리핑 방법 정보로부터 예측 부호화/복호화될 수 있다. 또한, 상기 플리핑 방법 정보는 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 기반하여 시그널링될 수 있다.
한편, 셔플링 단계에 관한 상기 설명에서 언급된 잔차 신호 재배열 방법 중 일부를 최적의 재배열 방법으로 부호화기에서 결정하고, 결정된 재배열 방법에 대한 정보(플리핑 방법 정보)를 복호화기로 시그널링할 수 있다. 일 예로, 4가지 재배열 방법을 사용한다면 부호화기는 잔차 신호 재배열 방법에 대한 정보를 2비트만큼 복호화기로 시그널링할 수 있다.
또한, 사용하는 재배열 방법들 각각의 발생확률이 서로 다른 경우 발생확률이 높은 재배열 방법은 적은 비트를 사용하여 부호화하고 발생확률이 낮은 재배열 방법은 상대적으로 많은 비트를 사용하여 부호화할 수 있다. 일 예로, 4가지 재배열 방법을 발생확률이 높은 순서로 하여 절삭된 단항 코드(예컨대, (0, 10, 110, 111) 혹은 (1, 01, 001, 000))로 시그널링할 수 있다.
그리고, 현재 CU의 예측 모드, PU의 화면 내 예측 모드(방향), 주변 블록의 움직임 벡터 등 부호화 파라미터에 따라서 재배열 방법의 발생확률이 변할 수 있기 때문에, 부호화 파라미터에 따라 재배열 방법에 대한 정보(플리핑 방법 정보)의 부호화 방법을 다르게 사용할 수 있다. 일 예로, 화면 내 예측의 예측 모드에 따라서 재배열 방법의 발생확률이 다를 수 있기 때문에 각각의 인트라 모드에 대해 발생확률이 높은 재배열 방법에 적은 비트를 할당하고 발생확률이 낮은 재배열 방법에 높은 비트를 할당하거나, 경우에 따라 발생확률이 매우 적은 재배열 방법은 사용하지 않고 비트도 할당하지 않을 수 있다.
현재 블록의 예측 모드(인터 모드 혹은 인트라 모드), 화면 내 예측 모드(방향성 모드 및 비방향성 모드 포함), 화면 간 예측 모드, 블록 크기, 블록 형태(정방형 혹은 비정방형), 휘도/색차 신호 여부, 변환 모드 정보 등 중 적어도 하나에 따라 잔차 신호 재배열 방법들 중 적어도 하나가 포함된 재배열 세트를 구성할 수 있다. 상기 재배열은 플리핑을 의미할 수 있다. 또한, 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 기반하여 잔차 신호 재배열 방법들 중 적어도 하나가 포함된 재배열 세트를 구성될 수 있다.
또한, 현재 블록의 예측 모드, 화면 내 예측 모드, 화면 간 예측 모드, 블록 크기, 블록 형태, 휘도/색차 신호 여부, 변환 모드 정보 등 중 적어도 하나에 따라 아래와 같은 재배열 세트들 중 적어도 하나가 선택될 수 있다. 또한, 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 기반하여 재배열 세트들 중 적어도 하나가 선택될 수 있다.
재배열 세트는 '플리핑 수행 안함 (no flipping)', '가로 방향 플리핑 (horizontal flipping)', '세로 방향 플리핑 (vertical flipping)' 및 '가로 방향 및 세로 방향 플리핑 (horizontal and vertical flipping)' 중 적어도 하나를 포함할 수 있다. 아래에서는 재배열 세트의 예시들을 나타낸다.
1. 플리핑 수행 안함
2. 가로 방향 플리핑
3. 세로 방향 플리핑
4. 가로 방향 및 세로 방향 플리핑
5. 플리핑 수행 안함, 가로 방향 플리핑
6. 플리핑 수행 안함, 세로 방향 플리핑
7. 플리핑 수행 안함, 가로 방향 및 세로 방향 플리핑
8. 가로 방향 플리핑, 세로 방향 플리핑
9. 가로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
10. 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
11. 플리핑 수행 안함, 가로 방향 플리핑, 세로 방향 플리핑
12. 플리핑 수행 안함, 가로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
13. 플리핑 수행 안함, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
14. 가로 방향 플리핑, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
15. 플리핑 수행 안함, 가로 방향 플리핑, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑
상기 재배열 세트를 기반으로 잔차 신호 재배열 방법들 중 적어도 하나가 현재 블록의 재배열에 사용될 수 있다.
또한, 현재 블록의 예측 모드, 화면 내 예측 모드, 화면 간 예측 모드, 블록 크기, 블록 형태, 휘도/색차 신호 여부, 변환 모드 정보, 플리핑 방법 정보 등 중 적어도 하나에 따라 재배열 세트에서 잔차 신호 재배열 방법들 중 적어도 하나가 선택될 수 있다. 또한, 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 기반하여 재배열 세트에서 잔차 신호 재배열 방법들 중 적어도 하나가 선택될 수 있다.
현재 블록의 예측 모드에 따라 적어도 하나의 재배열 세트가 구성될 수 있다. 예를 들어, 현재 블록의 예측 모드가 화면 내 예측인 경우 다수의 재배열 세트가 구성될 수 있고, 현재 블록의 예측 모드가 화면 간 예측인 경우 1개의 재배열 세트가 구성될 수 있다.
현재 블록의 휘도/색차 신호 여부에 따라 적어도 하나의 재배열 세트가 구성될 수 있다. 예를 들어, 현재 블록이 색차 신호인 경우 1개의 재배열 세트가 구성될 수 있고, 현재 블록이 휘도 신호인 경우 다수의 재배열 세트가 구성될 수 있다.
또한, 상기 재배열 세트를 기반으로 잔차 신호 재배열 방법에 대한 인덱스가 엔트로피 부호화/복호화될 수 있다. 이 때, 상기 인덱스를 가변 길이 코드 혹은 고정 길이 코드로 엔트로피 부호화/복호화할 수 있다.
또한, 상기 재배열 세트를 기반으로 잔차 신호 재배열 방법에 대한 인덱스의 이진화 및 역이진화(debinarization)가 수행될 수 있다. 이 때, 상기 인덱스를 가변 길이 코드 혹은 고정 길이 코드로 이진화 및 역이진화할 수 있다.
또한, 상기 재배열 세트는 부호화기와 복호화기에서 테이블 형태로 가질 수 있으며, 식을 통해서 계산될 수 있다.
또한, 상기 재배열 세트는 대칭성(symmetric)을 가지도록 구성될 수 있다. 예를 들어, 상기 재배열 세트에 대한 테이블이 대칭성을 가지도록 구성될 수 있다. 이 때, 화면 내 예측 모드에 대해 대칭성을 가지도록 테이블이 구성될 수 있다.
또한, 상기 재배열 세트는 화면 내 예측 모드가 특정 범위에 포함되는지 여부 및 화면 내 예측 모드가 짝수인지 홀수인지 여부 중 적어도 하나에 따라 구성될 수 있다.
아래의 표들에서는 현재 블록의 예측 모드 및 화면 내 예측 모드(방향)에 따라 잔차 신호 재배열 방법을 부호화/복호화하는 방법에 대한 예시를 보인다.
또한, 아래의 표들에서 잔차 신호 재배열 방법 중 적어도 하나에 대한 사용을 플리핑 방법 정보를 이용하여 지시할 수 있다.
예측 모드 화면내 예측 방향(화면내 예측 모드) 잔여 신호 재배열 방법
(1) (2) (3) (4)
화면내 수평 방향 혹은 수평 방향에 가까운 모드 0 - 1 -
화면내 수직 방향 혹은 수직 방향에 가까운 모드 0 1 - -
화면내 45도 대각선 방향 혹은 45도 대각선 방향에 가까운 모드 * - - -
화면내 짝수 0 10 11 -
화면내 홀수 0 - 10 11
화면내 나머지 경우(otherwise) 0 110 10 111
화면간 N/A 00 01 10 11
표 1의 잔여 신호 재배열 방법 열의 (1) 내지 (4)는 이전에 설명한 잔여 신호 재배열을 위한 스캐닝/재배열 순서에 대한 인덱스, 소정의 각도 값에 대한 인덱스 혹은 소정의 플리핑 방법에 대한 인덱스 등 잔여 신호 재배열 방법을 특정할 수 있다. 표 1의 잔여 신호 재배열 방법 열의 * 표시는 시그널링 없이 암묵적으로 해당 재배열 방법을 사용한다는 의미이며, - 표시는 해당 경우에는 해당 재배열 방법을 사용하지 않는다는 의미이다. 상기 암묵적으로 해당 재배열 방법을 사용한다는 의미는 잔여 신호 재배열 방법에 대한 인덱스의 엔트로피 부호화/복호화 없이 변환 모드 정보(sdst_flag 혹은 sdst flag)를 이용해서 해당 재배열 방법이 사용되는 것을 의미할 수 있다.상기 잔여 신호 재배열 방법 (1) 내지 (4)는 (1) 플리핑 수행 안함 (no flipping), (2) 가로 방향 플리핑 (horizontal flipping), (3) 세로 방향 플리핑 (vertical flipping) 및 (4) 가로 방향 및 세로 방향 플리핑 (horizontal and vertical flipping)을 각각 의미할 수 있다. 또한, 상기 0, 1, 10, 11, 110, 111 등은 상기 잔여 신호 재배열 방법을 엔트로피 부호화/복호화하기 위해 사용되는 이진화/역이진화의 결과일 수 있다. 상기 이진화/역이진화 방법으로 고정 길이 코드 혹은 절삭된 단항 코드 혹은 단항 코드 등이 사용될 수 있다.상기 표 1과 같이, 현재 블록이 각 예측 모드 및 각 화면내 예측 모드(방향) 중 적어도 하나에 해당할 경우, 적어도 하나의 재배열 방법이 인코더 및 디코더에서 사용될 수 있다. 여기서, 45도 대각선 방향은 현재 블록에서 좌상단 위치를 향하는 방향 혹은 현재 블록의 좌상단 위치에서 현재 블록을 향하는 방향을 의미할 수 있다.
예측 모드 잔차 신호 재배열 방법
(1) (2) (3) (4)
화면 내 0 110 10 111
화면 간 00 01 10 11
또 다른 예로, 상기 표 2와 같이, 현재 블록이 각 예측 모드 및 각 화면 내 예측 모드(방향) 중 적어도 하나에 해당할 경우, 적어도 하나의 재배열 방법이 인코더 및 디코더에서 사용될 수 있다.
예측 모드 잔차 신호 재배열 방법
(1) (2) (3) (4)
화면 내 및 화면 간 00 01 10 11
또 다른 예로, 상기 표 3과 같이, 현재 블록이 각 예측 모드 및 각 화면 내 예측 모드(방향) 중 적어도 하나에 해당할 경우, 적어도 하나의 재배열 방법이 인코더 및 디코더에서 사용될 수 있다.여기서, 상기 잔여 신호 재배열 방법은 변환의 종류를 의미할 수 있다. 예를 들어, 잔여 신호 재배열 방법이 (1)인 경우, 가로 변환 및 세로 변환은 모두 제1 변환 커널을 의미할 수 있다. 또 다른 예로, 잔여 신호 재배열 방법이 (2)인 경우, 가로 변환 및 세로 변환은 각각 제2 변환 커널 및 제1 변환 커널을 의미할 수 있다. 또 다른 예로, 잔여 신호 재배열 방법이 (3)인 경우, 가로 변환 및 세로 변환은 각각 제1 변환 커널 및 제2 변환 커널을 의미할 수 있다. 또 다른 예로, 잔여 신호 재배열 방법이 (4)인 경우, 가로 변환 및 세로 변환은 각각 제2 변환 커널 및 제2 변환 커널을 의미할 수 있다. 예컨대, 제1 변환 커널은 DST-7, 제2 변환 커널은 DCT-8일 수 있다.화면 내 예측 모드가 Planar 모드 또는 DC 모드인 경우, 발생 빈도에 근거한 절삭된 단항 코드를 이용하여 4가지 재배열 방법에 대한 정보(플리핑 방법 정보)를 엔트로피 부호화/복호화할 수 있다.화면 간 예측인 경우 재배열 방법 (1) 내지 (4)의 발생확률을 동등하게 볼 수 있으며, 2비트의 고정 길이 코드로 재배열 방법에 대한 정보를 엔트로피 부호화/복호화할 수 있다.
상기 코드에 대해 산술 부호화/복호화를 사용할 수 있다. 또한, 상기 코드에 대해 문맥 모델을 사용하는 산술 부호화(arithmetic coding)를 사용하지 않고 바이패스(bypass) 모드로 엔트로피 부호화/복호화할 수 있다.
픽처 내의 영역 또는 CTU 또는 픽처 전체 또는 픽처 그룹 내 현재 블록에 대하여 플리핑 없이 DST-7로 변환/역변환하거나 혹은 DCT-2로 변환/역변환하는 2가지 방법 중 하나를 선택하여 변환/역변환을 수행할 수 있다. 이 경우 현재 블록 단위로 DST-7 또는 DCT-2를 사용할지 여부를 나타내는 1비트 플래그 정보(변환 모드 정보)를 엔트로피 부호화/복호화할 수 있다. 이 방법은 잔차 신호의 에너지가 참조 샘플과 거리가 멀수록 큰 경우나, 부호화 및 복호화 시의 계산 복잡도 감소를 위해 사용될 수 있다. 이 방법이 사용되는 영역에 대한 정보는 CTU 단위 또는 슬라이스 단위 또는 PPS 단위, SPS 단위 또는 기타 특정 영역을 나타내는 단위로 시그널링될 수 있으며 on/off 형식으로 1비트 플래그가 시그널링될 수 있다.
픽처 내의 영역 또는 CTU 또는 픽처 전체 또는 픽처 그룹 내 현재 블록에 대하여 DCT-2 변환/역변환, 플리핑 없이 DST-7 변환/역변환, 가로 방향 플리핑 수행 후 DST-7 변환/역변환, 세로 방향 플리핑 수행 후 DST-7 변환/역변환 또는 가로 방향 및 세로 방향 플리핑 수행 후 DST-7 변환/역변환의 5가지 방법 중 하나를 선택하여 변환/역변환을 수행할 수 있다. 5가지의 방법 중 어떠한 변환을 선택할지에 대한 정보는 현재 블록의 주변 정보를 이용하여 암묵적으로 선택될 수 있으며, 인덱스(변환 모드 정보 혹은 플리핑 방법 정보) 시그널링을 통해 명시적으로 선택될 수도 있다. 인덱스 시그널링은 DCT-2 는 0, 플리핑 없이 DST-7은 10, 가로 방향 플리핑 후 DST-7은 110, 세로 방향 플리핑 후 DST-7은 1110, 가로 방향 및 세로 방향 플리핑 후 DST-7은 1111과 같이 절삭된 단항 코드로 시그널링될 수 있다. 또한, 현재 블록의 크기 및 주변 정보에 따라 DCT-2와 DST-7의 이진화가 서로 바뀌어 시그널링될 수 있다. 또한, 상기 이진수들 중 첫번째 이진수는 CU 단위로 시그널링될 수 있으며 나머지 이진수들은 TU 혹은 PU 단위로 시그널링될 수도 있다. 또한, 상기 이진수들 중 첫번째 이진수와 두번째 및 세번째 이진수를 구분하여 고정 길이 코드로 정보를 시그널링할 수도 있다. 예를 들어, DCT-2는 0, 플리핑 없이 DST-7은 000, 가로 방향 플리핑 후 DST-7은 001, 세로 방향 플리핑 후 DST-7은 010, 가로 방향 및 세로 방향 플리핑 후 DST-7은 011과 같이 변환 모드 정보 혹은 플리핑 방법 정보가 시그널링될 수 있다. 또한, 화면 내 예측 모드에 따라 5가지 방법 중 일부만 사용할 수 있다. 예를 들어, 화면 내 예측 모드가 가로 방향 예측 모드와 가까운 예측 모드인 경우, DCT-2, 플리핑 없이 DST-7 및 세로 방향 플리핑 후 DST-7의 3가지 변환 방법만 사용할 수 있다. 이 경우, DCT-2는 0, 플리핑 없이 DST-7은 10, 세로 방향 플리핑 후 DST-7은 11과 같이 변환 모드 정보 혹은 플리핑 방법 정보가 시그널링될 수 있다.
도 8는 본 개시에 따른 SDST 방법을 이용한 복호화 방법의 일 실시예를 설명하기 위한 도면이다.
도 8을 참조하면, 먼저 현재 블록의 변환 모드를 결정하고(801), 현재 블록의 변환 모드에 따라 현재 블록의 잔차 데이터들을 역변환할 수 있다(802).
그리고, 현재 블록의 변환 모드에 따라 역변환된 현재 블록의 잔차 데이터들을 재배열할 수 있다(803).
여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
SDST 모드는 DST-7 변환 모드로 역변환을 수행하고, 역변환된 잔차 데이터들의 재배열을 수행하는 모드를 지시할 수 있다.
SDCT 모드는 DCT-2 변환 모드로 역변환을 수행하고, 역변환된 잔차 데이터들의 재배열을 수행하는 모드를 지시할 수 있다.
DST 모드는 DST-7 변환 모드로 역변환을 수행하고, 역변환된 잔차 데이터들의 재배열은 수행하지 않는 모드를 지시할 수 있다.
DCT 모드는 DCT-2 변환 모드로 역변환을 수행하고, 역변환된 잔차 데이터들의 재배열은 수행하지 않는 모드를 지시할 수 있다.
따라서, 현재 블록의 변환 모드가 SDST 및 SDCT 중 어느 하나인 경우에만, 상기 잔차 데이터들을 재배열하는 단계를 수행할 수 있다.
상술한 SDST 및 DST 모드에 대해 DST-7 변환 모드로 역변환을 수행한다고 설명하였으나, DST-1, DST-2 등 다른 DST 기반의 변환 모드를 이용할 수도 있다.
한편, 현재 블록의 변환 모드를 결정하는 단계(801)는 현재 블록의 변환 모드 정보를 비트스트림으로부터 획득하는 단계 및 변환 모드 정보에 기초하여 상기 현재 블록의 변환 모드를 결정하는 단계를 포함할 수 있다.
또한, 현재 블록의 변환 모드를 결정하는 단계(801)는 현재 블록의 예측 모드, 상기 현재 블록의 깊이 정보, 상기 현재 블록의 크기 및 상기 현재 블록의 형태 중 적어도 하나에 기초하여 결정할 수 있다.
구체적으로, 현재 블록의 예측 모드가 인터 예측 모드인 경우, 현재 블록의 변환 모드는 SDST 및 SDCT 중 어느 하나로 결정될 수 있다.
한편, 역변환된 현재 블록의 잔차 데이터들을 재배열하는 단계(803)는, 역변환된 현재 블록내에 배열된 잔차 데이터들을 제1 방향 순서대로 스캐닝하는 단계 및 제1 방향으로 스캐닝한 잔차 데이터들을 제2 방향 순서대로 상기 역변환된 현재 블록내에 재배열하는 단계를 포함할 수 있다. 여기서, 제1 방향 순서는 래스터 스캔 순서(Raster scan order), 위-오른쪽 대각선 스캔 순서(Up-Right Diagonal scan order), 수평 스캔 순서(Horizontal scan order), 및 수직 스캔 순서(Vertical scan order) 중 어느 하나일 수 있다. 또한, 제1 방향 순서는 아래와 같이 정의될 수 있다.
(1) 상단 행(row)에서 하단 행으로 스캔하되, 하나의 행에서는 좌측에서 우측으로 스캔
(2) 상단 행(row)에서 하단 행으로 스캔하되, 하나의 행에서는 우측에서 좌측으로 스캔
(3) 하단 행(row)에서 상단 행으로 스캔하되, 하나의 행에서는 좌측에서 우측으로 스캔
(4) 하단 행(row)에서 상단 행으로 스캔하되, 하나의 행에서는 우측에서 좌측으로 스캔
(5) 좌측 열(column)에서 우측 열로 스캔하되, 하나의 열에서는 상단에서 하단으로 스캔
(6) 좌측 열(column)에서 우측 열로 스캔하되, 하나의 열에서는 하단에서 상단으로 스캔
(7) 우측 열(column)에서 좌측 열로 스캔하되, 하나의 열에서는 상단에서 하단으로 스캔
(8) 우측 열(column)에서 좌측 열로 스캔하되, 하나의 열에서는 하단에서 상단으로 스캔
(9) 나선 형태로 스캔: 블록 내부(또는 외부)에서 블록 외부(또는 내부)로, 시계/반시계 방향으로 스캔
한편, 제2 방향 순서는 상술한 방향 중 어느 하나가 선택적으로 이용될 수 있다. 제1 방향과 제2 방향은 동일할 수도 있고, 서로 상이할 수도 있다.
또한, 역변환된 현재 블록의 잔차 데이터들을 재배열하는 단계(803)는, 현재 블록 내 서브 블록 단위로 재배열할 수 있다. 이 경우, 현재 블록 내의 서브 블록의 위치에 기초하여 잔차 데이터들을 재배열할 수 있다.
또한, 역변환된 현재 블록의 잔차 데이터들을 재배열하는 단계(803)는, 역변환된 현재 블록내에 배열된 잔차 데이터들을 기정의된 각도로 회전하여 재배열할 수 있다.
또한, 역변환된 현재 블록의 잔차 데이터들을 재배열하는 단계(803)는, 역변환된 현재 블록내에 배열된 잔차 데이터들을 플리핑(flipping) 방법에 따라 플리핑하여 재배열할 수 있다. 이 경우, 현재 블록의 변환 모드를 결정하는 단계(801)는 플리핑 방법 정보를 비트스트림으로부터 획득하는 단계 및 플리핑 방법 정보에 기초하여 상기 현재 블록의 플리핑 방법을 결정하는 단계를 포함할 수 있다.
도 9는 본 개시에 따른 SDST 방법을 이용한 부호화 방법의 일 실시예를 설명하기 위한 도면이다.
도 9를 참조하면, 현재 블록의 변환 모드를 결정할 수 있다(901).
그리고, 현재 블록의 변환 모드에 따라 현재 블록의 잔차 데이터들을 재배열할 수 있다(902).
그리고, 현재 블록의 변환 모드에 따라 재배열된 현재 블록의 잔차 데이터들을 변환할 수 있다(903).
여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다. SDST, SDCT, DST 및 DCT 모드에 대한 설명은 도 8에서 하였는 바 중복설명은 피하도록 한다.
한편, 현재 블록의 변환 모드가 SDST 및 SDCT 중 어느 하나인 경우에만, 잔차 데이터를 재배열하는 단계들을 수행할 수 있다.
또한, 현재 블록의 변환 모드를 결정하는 단계(901)는, 현재 블록의 예측 모드, 현재 블록의 깊이 정보, 현재 블록의 크기 및 현재 블록의 형태 중 적어도 하나에 기초하여 결정할 수 있다.
여기서, 현재 블록의 예측 모드가 인터 예측 모드인 경우, 현재 블록의 변환 모드는 SDST 및 SDCT 중 어느 하나로 결정될 수 있다.
한편, 현재 블록의 잔차 데이터들을 재배열하는 단계(902)는, 현재 블록내에 배열된 잔차 데이터들을 제1 방향 순서에 따라 스캐닝하는 단계 및 제1 방향으로 스캐닝한 잔차 데이터들을 제2 방향 순서에 따라 상기 현재 블록내에 재배열하는 단계를 포함할 수 있다.
또한, 현재 블록의 잔차 데이터들을 재배열하는 단계(902)는, 현재 블록 내 서브 블록 단위로 재배열할 수 있다.
이 경우, 현재 블록의 잔차 데이터들을 재배열하는 단계(902)는, 현재 블록 내의 서브 블록의 위치에 기초하여 잔차 데이터들을 재배열할 수 있다.
한편, 현재 블록의 잔차 데이터들을 재배열하는 단계(902)는, 현재 블록내에 배열된 잔차 데이터들을 기정의된 각도로 회전하여 재배열할 수 있다.
한편, 현재 블록의 잔차 데이터들을 재배열하는 단계(902)는, 현재 블록내에 배열된 잔차 데이터들을 플리핑(flipping) 방법에 따라 플리핑하여 재배열할 수 있다.
본 개시에 따른 SDST 방법을 이용한 영상 복호화기는 현재 블록의 변환 모드를 결정하여, 현재 블록의 변환 모드에 따라 상기 현재 블록의 잔차 데이터들을 역변환하고, 현재 블록의 변환 모드에 따라 상기 역변환된 현재 블록의 잔차 데이터들을 재배열하는 역변환부를 포함할 수 있다. 여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
본 개시에 따른 SDST 방법을 이용한 영상 복호화기는 현재 블록의 변환 모드를 결정하여, 현재 블록의 변환 모드에 따라 현재 블록의 잔차 데이터들을 재배열하고, 현재 블록의 변환 모드에 따라 상기 재배열된 현재 블록의 잔차 데이터들을 역변환하는 역변환부를 포함할 수 있다. 여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
본 개시에 따른 SDST 방법을 이용한 영상 부호화기는 현재 블록의 변환 모드를 결정하여, 현재 블록의 변환 모드에 따라 상기 현재 블록의 잔차 데이터들을 재배열하고, 현재 블록의 변환 모드에 따라 재배열된 현재 블록의 잔차 데이터들을 변환하는 변환부를 포함할 수 있다. 여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
본 개시에 따른 SDST 방법을 이용한 영상 부호화기는 현재 블록의 변환 모드를 결정하여, 현재 블록의 변환 모드에 따라 현재 블록의 잔차 데이터들을 변환하고, 현재 블록의 변환 모드에 따라 상기 변환된 현재 블록의 잔차 데이터들을 재배열하는 변환부를 포함할 수 있다. 여기서, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
본 개시에 따른 SDST 방법을 이용한 부호화 방법에 의해 생성된 비트스트림은 현재 블록의 변환 모드를 결정하는 단계, 현재 블록의 변환 모드에 따라 현재 블록의 잔차 데이터들을 재배열하는 단계 및 현재 블록의 변환 모드에 따라 재배열된 현재 블록의 잔차 데이터를 변환하는 단계를 포함하고, 변환 모드는 SDST(Shuffling Discrete Sine Transform), SDCT(Shuffling Discrete cosine Transform), DST(Discrete Sine Transform) 및 DCT(Discrete Cosine Transform) 중 적어도 하나를 포함할 수 있다.
또한, 본 명세서에서 사용된 상기 변환은 각 블록에 대해 N개의 기정의된 변환 후보 세트 중에서 선택될 수 있다. 여기서, N은 양의 정수일 수 있다. 변환 후보들 각각은 1차 수평 변환, 1차 수직 변환 및 2차 변환(항등 변환과 동일할 수도 있음)을 지정할 수 있다. 변환 후보들의 리스트는 블록 크기 및 예측 모드에 따라 달라질 수 있다. 선택된 변환은 다음과 같이 시그널링될 수 있다. 부호화 블록 플래그가 1이면, 후보 리스트의 제1 변환이 사용되는지를 지정하는 플래그가 전송될 수 있다. 후보 리스트의 제1 변환이 사용되는지를 지정하는 플래그가 0이면, 다음이 적용될 수 있다: 0이 아닌 변환 계수 레벨의 수가 임계값보다 큰 경우, 사용된 변환 후보를 나타내는 변환 인덱스가 전송될 수 있다; 그렇지 않으면 상기 리스트의 제2 변환이 사용될 수 있다.
또한, 2차 변환인 NSST는 1차 변환으로 DCT-2가 기본 변환으로 사용될 때만 사용될 수 있다. 또한, 수평 변환 또는 수직 변환은 가로 또는 세로가 독립적으로 4보다 작거나 같을 때 시그널링 없이 DST-7을 선택할 수 있다.
잔차 블록에 대해 블록의 너비가 K보다 작거나 같은 경우 1차원 수평 변환에 DCT-2 대신 DST-7가 이용될 수 있다. 블록의 높이가 L보다 작거나 같은 경우 1차원 수직 변환에 DCT-2 대신 DST-7가 이용될 수 있다. 그리고 블록의 너비 혹은 높이가 K보다 작거나 같더라도 화면 내 예측 모드가 LM(linear model) chroma 모드 인 경우 DCT-2를 사용할 수 있다. 여기서, K 및 L은 양의 정수이고, 예를 들어 4일 수 있다. 또한, 상기 K 및 L은 서로 같거나 다른 값을 가질 수 있다. 또한, 상기 잔차 블록은 인트라 모드로 부호화된 블록일 수 있다. 또한, 상기 잔차 블록은 색차 블록일 수 있다.
상기 플리핑 방법을 잔차 신호에 수행하는 대신, 플리핑이 수행된 변환 커널(kernel) 혹은 변환 행렬(matrix)을 이용해서 변환/역변환을 수행할 수 있다. 여기서, 플리핑이 수행된 변환/역변환 커널 혹은 변환/역변환 행렬은 플리핑이 수행되어 부호화기/복호화기에 기정의된 커널 혹은 행렬일 수 있다. 이러한 경우 플리핑된 변환/역변환 행렬을 이용해서 변환/역변환을 수행하므로 잔차 신호에 플리핑을 수행하는 것과 동일한 효과를 얻을 수 있다. 여기서, 플리핑은 플리핑 수행 안함, 가로 방향 플리핑, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑 중 적어도 하나일 수 있다. 이러한 경우 플리핑이 수행된 변환/역변환의 사용 여부 정보를 시그널링할 수 있다. 또한, 플리핑이 수행된 변환/역변환의 사용 여부 정보를 가로 방향 변환/역변환 및 세로 방향 변환/역변환 각각에 대해서 시그널링할 수 있다.
또한, 상기 플리핑 방법을 잔차 신호에 수행하는 대신, 부호화/복호화 과정에서 변환 커널 혹은 변환 행렬에 플리핑을 수행하여 변환/역변환을 수행할 수 있다. 이러한 경우 변환/역변환 행렬에 플리핑을 수행하여 변환/역변환을 수행하므로 잔차 신호에 플리핑을 수행하는 것과 동일한 효과를 얻을 수 있다. 여기서, 플리핑은 플리핑 수행 안함, 가로 방향 플리핑, 세로 방향 플리핑, 가로 방향 및 세로 방향 플리핑 중 적어도 하나일 수 있다. 이러한 경우 변환/역변환 행렬에 플리핑을 수행하는지 여부 정보를 시그널링할 수 있다. 또한, 변환/역변환 행렬에 플리핑을 수행하는지 여부 정보를 가로 방향 변환/역변환 및 세로 방향 변환/역변환 각각에 대해서 시그널링할 수 있다.
상기 플리핑 방법이 화면 내 예측 모드에 기반하여 결정되고, 현재 블록의 화면 내 예측 모드로 2개 이상이 사용될 경우, 비방향성 모드에 대한 플리핑 방법으로 현재 블록에 대한 변환/역변환의 전/후에 플리핑을 수행할 수 있다.
또한, 상기 플리핑 방법이 화면 내 예측 모드에 기반하여 결정되고, 현재 블록의 화면 내 예측 모드로 2개 이상이 사용될 경우, 주요 방향성 모드에 대한 플리핑 방법으로 현재 블록에 대한 변환/역변환의 전/후에 플리핑을 수행할 수 있다. 여기서, 주요 방향성 모드는 수직 모드, 수평 모드, 대각선 모드들 중 적어도 하나일 수 있다.
상기 변환의 크기가 MxN보다 크거나 같을 경우, 변환 수행 시 혹은 변환 수행 후 M/2 내지 M, 및 N/2 내지 N의 영역에 존재하는 변환 계수는 모두 0의 값으로 설정할 수 있다. 여기서, M과 N은 양의 정수이고, 예를 들어, 64x64일 수 있다.
메모리 요구량 감소를 위해, 상기 변환 수행 후 생성되는 변환 계수에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 또한, 상기 가로 변환 수행 후 생성되는 임시 변환 계수에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 또한, 상기 세로 변환 수행 후 생성되는 임시 변환 계수에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 여기서, K는 양의 정수이다.
메모리 요구량 감소를 위해, 상기 역변환 수행 후 생성되는 복원된 잔차 신호에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 또한, 상기 가로 역변환 수행 후 생성되는 임시 변환 계수에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 또한, 상기 세로 역변환 수행 후 생성되는 임시 변환 계수에 K만큼 우측 쉬프트 연산을 수행할 수 있다. 여기서, K는 양의 정수이다.
가로 방향 변환/역변환 수행 전, 가로 방향 변환/역변환 수행 후, 세로 방향 변환/역변환 수행 전, 세로 방향 변환/역변환 수행 후 생성되는 신호들 중 적어도 하나에 상기 플리핑 방법 중 적어도 하나를 수행할 수 있다. 이러한 경우, 상기 가로 방향 변환/역변환 혹은 세로 방향 변환/역변환에서 사용한 플리핑 방법 정보를 시그널링할 수 있다.
또한, 상기 DST-7 대신 DCT-4를 이용할 수 있다. 2N 크기의 DCT-2 변환/역변환 행렬에서 2N-1 크기의 DCT-4 변환/역변환 행렬을 추출해서 사용할 수 있기 때문에, DCT-4 대신 DCT-2 변환/역변환 행렬만 부호화기/복호화기에서 저장할 수 있으므로, 부호화기/복호화기의 메모리 요구량이 감소될 수 있다. 또한, 2N-1 크기의 DCT-4 변환/역변환 로직을 2N 크기의 DCT-2 변환/역변환 로직(logic)으로부터 활용할 수 있기 때문에, 부호화기/복호화기를 구현하는데 필요한 칩 면적(chip area)이 감소할 수 있다. 여기서, 상기 DCT-2 및 상기 DCT-4에 대해서만 상기 예가 적용되는 것은 아니고, DST 변환/역변환의 종류들 중 적어도 하나 및 DCT 변환/역변환의 종류들 중 적어도 하나에서 서로 공유되는 변환 행렬 혹은 변환 로직이 있을 경우 상기 예가 적용될 수 있다. 즉, 하나의 변환/역변환 행렬 혹은 로직으로부터 또 다른 하나의 변환/역변환 행렬 혹은 로직을 추출하여 사용할 수 있다. 또한, 특정 변환/역변환 크기일 경우, 하나의 변환/역변환 행렬 혹은 로직으로부터 또 다른 하나의 변환/역변환 행렬 혹은 로직을 추출하여 사용할 수 있다. 또한, 행렬 단위, 기저 벡터(basis vector) 단위, 행렬 계수 단위 중 적어도 하나의 단위로 하나의 변환/역변환 행렬로부터 또 다른 하나의 변환/역변환 행렬을 추출할 수 있다.
또한, 현재 블록이 MxN 크기보다 작을 경우, 특정 변환/역변환 대신 다른 변환/역변환을 현재 블록의 변환/역변환에 사용할 수 있다. 또한, 현재 블록이 MxN 크기보다 클 경우, 특정 변환/역변환 대신 다른 변환/역변환을 현재 블록의 변환/역변환에 사용할 수 있다. 여기서, M과 N은 양의 정수이다. 상기 특정 변환/역변환 및 다른 변환/역변환은 부호화기/복호화기에서 기정의된 변환/역변환일 수 있다.
또한, 본 명세서에서 사용된 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환 중 적어도 하나를 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환을 기반으로 산출된 변환들 중 적어도 하나로 대체하여 사용할 수 있다. 여기서, 상기 산출된 변환은 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환 행렬(matrix) 내 계수 값을 변경하여 산출된 변환일 수 있다. 또한, 상기 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환 행렬 내 계수 값은 정수 값을 가질 수 있다. 즉, 상기 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환은 정수 변환(integer transform)일 수 있다. 또한, 상기 산출된 변환 행렬 내 계수 값은 정수 값을 가질 수 있다. 즉, 상기 산출된 변환은 정수 변환일 수 있다. 또한, 상기 산출된 변환은 상기 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환 행렬 내 계수 값에 N만큼 좌측 쉬프트(left shift) 연산을 수행한 결과일 수 있으며, 여기서 N는 양의 정수일 수 있다.
상기 DCT-Q 및 DST-W 변환은 상기 DCT-Q 및 DST-W 변환과 상기 DCT-Q 및 DST-W 역변환을 포함한 의미할 수 있다. 여기서, Q 및 W는 1 이상의 양수 값을 가질 수 있고, 예를 들어 1 내지 9는 I 내지 IX와 동일한 의미로 사용될 수 있다.
또한, 본 명세서에서 사용된 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 등의 변환은 해당 변환에만 한정되는 것은 아니고, DCT-Q 및 DST-W 변환 중 적어도 하나가 상기 DCT-4, DCT-8, DCT-2, DST-4, DST-1, DST-7 변환을 대체하여 사용될 수 있다. 여기서, Q 및 W는 1 이상의 양수 값을 가질 수 있고, 예를 들어 1 내지 9는 I 내지 IX와 동일한 의미로 사용될 수 있다.
또한, 본 명세서에서 사용된 상기 변환은 정방형 블록인 경우 정방형 변환 형태로 수행될 수 있고, 비정방형 블록인 경우 비정방형 변환 형태로 수행될 수 있고, 정방형 블록 및 비정방형 블록을 적어도 하나를 포함하는 정방형 영역인 경우 해당 영역에 정방형 변환 형태로 변환이 수행될 수 있고, 정방형 블록 및 비정방형 블록을 적어도 하나를 포함하는 비정방형 영역인 경우 해당 영역에 비정방형 변환 형태로 변환이 수행될 수 있다.
또한, 본 명세서에서 상기 재배열 방법에 대한 정보는 플리핑 방법 정보일 수 있다.
또한, 본 명세서에서 사용된 변환은 변환 및 역변환 중 적어도 하나를 의미할 수 있다.
부호화기에서는 영상의 주관적/객관적 화질을 향상시키기 위해, 잔차 블록에 변환을 수행하여 변환 계수를 생성하고, 변환 계수를 양자화하여 양자화된 계수 레벨을 생성하고, 양자화된 계수 레벨을 엔트로피 부호화할 수 있다.
복호화기에서는 양자화된 계수 레벨을 엔트로피 복호화하고, 양자화된 계수 레벨을 역양자화하여 변환 계수를 생성하고, 변환 계수를 역변환하여 복원된 잔차 블록을 생성할 수 있다.
상기 변환 및 역변환으로 어떤 변환을 사용한지에 대한 변환 종류 정보를 명시적으로 엔트로피 부호화/복호화할 수 있다. 또한, 상기 변환 및 역변환으로 어떤 변환을 사용한지에 대한 변환 종류 정보를 엔트로피 부호화/복호화하지 않고 부호화 파라미터 중 적어도 하나에 기반하여 암묵적으로 결정할 수 있다.
아래는 본 개시에서 변환 및 역변환 중 적어도 하나를 수행하기 위한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체에 대한 실시예를 나타낸다.
아래의 실시예들 중 적어도 하나 이상을 이용하여, 블록을 N개의 부블록(sub-block)으로 분할하여 예측, 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행할 수 있다. 하기 모드를 제1 부블록 분할 모드(일 예로, ISP 모드, Intra Sub-Partitions 모드)라고 할 수 있다.
상기 블록은 부호화 블록, 예측 블록, 변환 블록 중 적어도 하나를 의미할 수 있다. 예를 들어, 상기 블록은 변환 블록일 수 있다.
또한, 상기 분할된 부블록은 부호화 블록, 예측 블록, 변환 블록 중 적어도 하나를 의미할 수 있다. 예를 들어, 상기 분할된 부블록은 변환 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 화면 내 블록, 화면 간 블록, 화면 내 블록 복사(intra block copy) 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 블록 및 부블록은 화면 내 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 화면 내 예측 블록, 화면 간 예측 블록, 화면 내 블록 복사 예측 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 부블록은 화면 내 예측 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 휘도 신호 블록, 색차 신호 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 블록 및 부블록은 휘도 신호 블록일 수 있다.
상기 블록을 N개의 부블록으로 분할할 경우, 분할 전의 블록은 부호화 블록일 수 있고, 분할된 부블록은 예측 블록 및 변환 블록 중 적어도 하나일 수 있다. 즉, 예측, 변환/역변환, 양자화/역양자화, 변환 계수의 엔트로피 부호화/복호화는 분할된 부블록 크기로 수행될 수 있다.
또한, 상기 블록을 N개의 부블록으로 분할할 경우, 분할 전의 블록은 부호화 블록 및 예측 블록 중 적어도 하나일 수 있고, 분할된 부블록은 변환 블록일 수 있다. 즉, 예측은 분할 전의 블록 크기로 예측하되, 변환/역변환, 양자화/역양자화, 변환 계수의 엔트로피 부호화/복호화는 분할된 부블록 크기로 수행될 수 있다.
상기 블록의 면적(가로 크기와 세로 크기의 곱 등), 크기(가로 크기, 세로 크기, 혹은 가로 크기 및 세로 크기의 조합), 형태(직사각형, 정사각형 등) 중 적어도 하나에 기반하여 블록을 다수의 부블록들로 분할할지 여부를 결정할 수 있다.
예를 들어, 현재 블록이 64x64 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 32x32 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 32x16 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 16x32 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 4x4 블록인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록이 2x4 블록인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록의 면적이 32 이상일 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록의 면적이 32 미만일 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록의 면적이 256이고 현재 블록의 형태가 직사각형인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록의 면적이 16이고 현재 블록의 형태가 정사각형인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
상기 블록을 분할할 경우, 수직 방향 혹은 수평 방향 중 적어도 하나의 분할 방향으로 블록은 다수의 부블록들로 분할될 수 있다.
예를 들어, 현재 블록은 수직 방향으로 2개의 부블록들로 분할될 수 있다.
다른 예로, 현재 블록은 수평 방향으로 2개의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록은 수평 방향으로 4개의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록은 수직 방향으로 4개의 부블록들로 분할될 수 있다.
블록을 N개의 부블록으로 분할할 경우, N은 양의 정수일 수 있고, 일 예로 2 혹은 4 일 수 있다. 또한 상기 N은 블록의 면적, 크기, 형태, 분할 방향 중 적어도 하나를 이용하여 결정될 수 있다.
예를 들어, 현재 블록이 4x8 혹은 8x4 블록인 경우, 가로 방향으로 2개의 부블록 혹은 세로 방향으로 2개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 16x8 혹은 16x16 블록인 경우, 세로 방향으로 4개의 부블록 혹은 가로 방향으로 4개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 8x32 혹은 32x32 블록인 경우, 가로 방향으로 4개의 부블록 혹은 세로 방향으로 4개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 16x4, 32x4, 64x4 블록인 경우, 세로 방향으로 4개의 부블록으로 분할될 수 있다. 또한, 현재 블록이 16x4, 32x4, 64x4 블록인 경우, 가로 방향으로 2개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 4x16, 4x32, 4x64 블록인 경우, 가로 방향으로 4개의 부블록으로 분할될 수 있다. 또한, 현재 블록이 4x16, 4x32, 4x64 블록인 경우, 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 Jx4인 경우, 가로 방향으로 2개의 부블록으로 분할될 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 4xK인 경우, 세로 방향으로 2개의 부블록으로 분할될 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 JxK (K>4)인 경우, 가로 방향으로 4개의 부블록으로 분할될 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 JxK (J>4)인 경우, 세로 방향으로 4개의 부블록으로 분할될 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 JxK (K>4)인 경우, 세로 방향으로 4개의 부블록으로 분할될 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록의 면적이 64인 경우, 가로 방향 혹은 세로 방향으로 4개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 16x4이고 현재 블록의 형태가 직사각형인 경우, 세로 방향으로 4개의 부블록으로 분할될 수 있다.
또 다른 예로, 현재 블록이 1024이고 현재 블록의 형태가 정사각형인 경우, 가로 방향 혹은 세로 방향으로 4개의 부블록으로 분할될 수 있다.
또한, 상기 부블록은 최소 면적, 최소 가로 크기, 최소 세로 크기 중 적어도 하나를 가질 수 있다.
예를 들어, 상기 부블록은 최소 면적으로 S를 가질 수 있다. 여기서, S는 양의 정수일 수 있고, 일 예로 16일 수 있다.
또 다른 예로, 상기 부블록은 최소 가로 크기로 J를 가질 수 있다. 여기서, J는 양의 정수일 수 있고, 일 예로 4일 수 있다.
또 다른 예로, 상기 부블록은 최소 세로 크기로 K를 가질 수 있다. 여기서, K는 양의 정수일 수 있고, 일 예로 4일 수 있다.
분할된 각각의 부블록들은 잔차 블록(혹은 복원된 잔차 블록)과 예측 블록을 가산하여 복원 블록을 생성할 수 있다. 여기서, 각각의 복원된 부블록 내 복원된 샘플들 중 적어도 하나는 이후 부호화/복호화되는 부블록의 화면 내 예측 시 참조 샘플로 사용될 수 있다.
분할 방향 중 적어도 하나에 따라 블록에서 분할된 각각의 부블록들의 부호화/복호화 순서가 결정될 수 있다.
예를 들어, 수평 분할된 각각의 부블록들은 상단 방향에서 하단 방향으로 부호화/복호화 순서가 결정될 수 있다.
또 다른 예로, 수직 분할된 각각의 부블록들은 좌측 방향에서 우측 방향으로 부호화/복호화 순서가 결정될 수 있다.
상기 분할된 각각의 부블록들은 화면 내 예측 모드를 공유해서 사용할 수 있다.
이때, 각각의 부블록들에 대한 화면 내 예측 모드 정보는 분할 전의 블록에서 한 번만 엔트로피 부호화/복호화될 수 있다.
상기 분할된 각각의 부블록들은 화면 내 블록 복사 모드를 공유해서 사용할 수 있다.
이때, 각각의 부블록들에 대한 화면 내 블록 복사 모드 정보는 분할 전의 블록에서 한 번만 엔트로피 부호화/복호화될 수 있다.
상기 블록을 N개의 부블록으로 분할하여 예측, 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행하는 부블록 분할 모드를 지시하기 위해, 부블록 분할 모드 정보 및 분할 방향 정보 중 적어도 하나가 엔트로피 부호화/복호화될 수 있다.
여기서, 부블록 분할 모드 정보는 상기 부블록 분할 모드를 지시하기 위해 사용될 수 있다. 부블록 분할 모드를 사용하는 것으로 지시하는 경우(제2 값), 블록을 부블록으로 분할하여 예측, 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행할 수 있다. 부블록 분할 모드를 사용하지 않는 것으로 지시하는 경우(제1 값), 블록을 부블록으로 분할하지 않고 예측, 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행할 수 있다. 여기서, 제1 값은 0일 수 있고, 제2 값은 1일 수 있다.
또한, 분할 방향 정보는 상기 부블록 분할 모드가 수직 방향으로 분할할 것인지, 수평 방향으로 분할할 것인지를 지시하기 위해 사용될 수 있다. 분할 방향 정보가 제1 값인 경우 블록은 수평 방향으로 부블록들로 분할될 수 있고, 제1 값은 0일 수 있다. 또한, 분할 방향 정보가 제2 값인 경우 블록은 수직 방향으로 부블록들로 분할될 수 있고, 제2 값은 1일 수 있다.
현재 블록이 참조 샘플 라인으로 가장 인접한 참조 샘플 라인(첫번째 참조 샘플 라인)을 사용하지 않는 경우, 상기 부블록 분할 모드 정보 및 분할 방향 정보 중 적어도 하나가 엔트로피 부호화/복호화되지 않을 수 있다. 이때, 상기 부블록 분할 모드 정보는 현재 블록이 부블록으로 분할되지 않는 것으로 추론(infer)될 수 있다.
여기서, 현재 블록이 참조 샘플 라인으로 가장 인접한 참조 샘플 라인(첫번째 참조 샘플 라인)을 사용하지 않는 경우는 현재 블록의 주변에 복원된 참조 샘플 라인으로 두번째 이상의 참조 샘플 라인을 사용하는 것을 의미할 수 있다.
즉, 현재 블록이 참조 샘플 라인으로 가장 인접한 참조 샘플 라인을 사용할 경우에만, 상기 부블록 분할 모드 정보 및 분할 방향 정보 중 적어도 하나가 엔트로피 부호화/복호화될 수 있다.
변환 계수에 대해 엔트로피 부호화/복호화할 시 사용되는 계수 그룹(coefficient group)의 면적, 크기, 형태, 분할 방향 중 적어도 하나는 부블록의 면적, 크기, 형태, 분할 방향 중 적어도 하나에 기반하여 결정될 수 있다.
예를 들어, 부블록의 면적이 16인 경우, 계수 그룹의 면적은 16으로 결정될 수 있다.
또 다른 예로, 부블록의 면적이 32인 경우, 계수 그룹의 면적은 16으로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 1x16 혹은 16x1인 경우, 계수 그룹의 크기는 1x16 혹은 16x1로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 2x8 혹은 8x2인 경우, 계수 그룹의 크기는 2x8 혹은 8x2로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x4인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 가로 크기가 2인 경우, 계수 그룹의 가로 크기는 2로 결정될 수 있다.
또 다른 예로, 부블록의 가로 크기가 4인 경우, 계수 그룹의 가로 크기는 4로 결정될 수 있다.
또 다른 예로, 부블록의 세로 크기가 2인 경우, 계수 그룹의 세로 크기는 2로 결정될 수 있다.
또 다른 예로, 부블록의 세로 크기가 4인 경우, 계수 그룹의 세로 크기는 4로 결정될 수 있다.
또 다른 예로, 부블록의 형태가 직사각형인 경우, 계수 그룹의 형태는 직사각형으로 결정될 수 있다.
또 다른 예로, 부블록의 형태가 정사각형인 경우, 계수 그룹의 형태는 정사각형으로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 16x4이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 8x2 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x8이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 2x8 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 32x4이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 8x2 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 8x64이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 2x8 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 16x4이고 분할 방향이 수직 방향인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x8이고 분할 방향이 수평 방향인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 32x4이고 분할 방향이 수평 방향인 경우, 계수 그룹의 크기는 8x2로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 8x64이고 분할 방향이 수직 방향인 경우, 계수 그룹의 크기는 2x8로 결정될 수 있다.
각각의 분할된 부블록들은 부블록 단위로 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는지 여부를 지시하는 부호화 블록 플래그(coded block flag)를 엔트로피 부호화/복호화할 수 있다.
예를 들어, 부블록 단위로 적어도 하나의 부블록에서는 부호화 블록 플래그를 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는 것으로 지시할 수 있다.
또 다른 예로, m이 부블록의 총 개수를 의미하고, 부블록들 중 앞에서부터 m - 1개의 부블록의 부호화 블록 플래그가 0이 아닌 값을 가지는 변환 계수가 존재하지 않는 것으로 지시했다면, m번째 부블록의 부호화 블록 플래그를 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는 것으로 추론할 수 있다.
또 다른 예로, 부블록 단위로 부호화 블록 플래그가 엔트로피 부호화/복호화되는 경우, 분할 전 블록 단위에서는 부호화 블록 플래그가 엔트로피 부호화/복호화되지 않을 수 있다.
또 다른 예로, 분할 전 블록 단위에서 부호화 블록 플래그가 엔트로피 부호화/복호화되는 경우, 부블록 단위로 부호화 블록 플래그가 엔트로피 부호화/복호화되지 않을 수 있다.
한편, 현재 블록이 제1 부블록 분할 모드이고, 현재 블록의 크기가 기 정의된 크기인 경우, 화면 내 예측을 위한 부블록의 크기와 변환을 위한 부블록의 크기는 서로 상이할 수 있다. 즉, 화면 내 예측을 위한 부블록 분할과 변환을 위한 부블록 분할은 서로 상이할 수 있다. 여기서, 기 정의된 크기는 4xN 또는 8xN (N>4)일 수 있다. 여기서, 상기 부블록 분할은 세로 방향 분할을 의미할 수 있다.
일 예로, 현재 블록이 제1 부블록 분할 모드이고, 현재 블록의 크기가 4xN (N>4)인 경우, 화면 내 예측을 위하여 현재 블록은 4xN 크기의 부블록으로 세로 분할될 수 있고, 변환을 위하여 현재 블록은 1xN 크기의 부블록으로 세로 분할될 수 있다. 이때, 1xN 크기의 변환을 수행하기 위해 1차원 변환/역변환이 수행될 수 있다. 즉, 현재 블록의 분할 모드와 현재 블록의 크기 중 적어도 하나에 기반하여 1차원 변환/역변환이 수행될 수 있다.
다른 예로, 현재 블록이 제1 부블록 분할 모드이고, 현재 블록의 크기가 8xN (N>4)인 경우, 화면 내 예측을 위하여 현재 블록은 4xN 크기의 부블록으로 세로 분할될 수 있고, 변환을 위하여 현재 블록은 2xN 크기의 부블록으로 세로 분할될 수 있다. 이때, 2xN 크기의 변환을 수행하기 위해 2차원 변환/역변환이 수행될 수 있다. 즉, 현재 블록의 분할 모드와 현재 블록의 크기 중 적어도 하나에 기반하여 2차원 변환/역변환이 수행될 수 있다.
여기서, N은 양의 정수를 의미할 수 있고, 64 혹은 128 보다 작은 양의 정수일 수 있다.
또한, 현재 블록의 크기는 현재 블록의 부호화 블록의 크기, 예측 블록의 크기, 변환 블록의 크기 중 적어도 하나를 의미할 수 있다.
도 10의 예와 같이, 제1 부블록 분할 모드의 실시예에 따라 현재 블록은 수평 방향으로 2개의 부블록으로 분할될 수 있고, 수직 방향으로 2개의 부블록으로 분할될 수 있다.
도 11의 예와 같이, 제1 부블록 분할 모드의 실시예에 따라 현재 블록은 수평 방향으로 2개의 부블록으로 분할될 수 있고, 수직 방향으로 2개의 부블록으로 분할될 수 있다.
도 12의 예와 같이, 제1 부블록 분할 모드의 실시예에 따라 현재 블록은 수평 방향으로 4개의 부블록으로 분할될 수 있고, 수직 방향으로 4개의 부블록으로 분할될 수 있다.
아래의 실시예들 중 적어도 하나 이상을 이용하여, 블록을 N개의 부블록(sub-block)으로 분할하여 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행할 수 있다. 하기 모드를 제2 부블록 분할 모드(일 예로, SBT 모드, Sub-Block Transform 모드)라고 할 수 있다.
상기 블록은 부호화 블록, 예측 블록, 변환 블록 중 적어도 하나를 의미할 수 있다. 예를 들어, 상기 블록은 변환 블록일 수 있다.
또한, 상기 분할된 부블록은 부호화 블록, 예측 블록, 변환 블록 중 적어도 하나를 의미할 수 있다. 예를 들어, 상기 분할된 부블록은 변환 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 화면 내 블록, 화면 간 블록, 화면 내 블록 복사(intra block copy) 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 블록 및 부블록은 화면 간 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 화면 내 예측 블록, 화면 간 예측 블록, 화면 내 블록 복사 예측 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 블록은 화면 간 예측 블록일 수 있다.
또한, 상기 블록 혹은 상기 분할된 부블록은 휘도 신호 블록, 색차 신호 블록 중 적어도 하나일 수 있다. 예를 들어, 상기 블록 및 부블록은 휘도 신호 블록일 수 있다.
상기 블록을 N개의 부블록으로 분할할 경우, 분할 전의 블록은 부호화 블록일 수 있고, 분할된 부블록은 예측 블록 및 변환 블록 중 적어도 하나일 수 있다. 즉, 예측, 변환/역변환, 양자화/역양자화, 변환 계수의 엔트로피 부호화/복호화는 분할된 부블록 크기로 수행될 수 있다.
또한, 상기 블록을 N개의 부블록으로 분할할 경우, 분할 전의 블록은 부호화 블록 및 예측 블록 중 적어도 하나일 수 있고, 분할된 부블록은 변환 블록일 수 있다. 즉, 예측은 분할 전의 블록 크기로 예측하되, 변환/역변환, 양자화/역양자화, 변환 계수의 엔트로피 부호화/복호화는 분할된 부블록 크기로 수행될 수 있다.
상기 블록의 면적(가로 크기와 세로 크기의 곱 등), 크기(가로 크기, 세로 크기, 혹은 가로 크기 및 세로 크기의 조합), 형태(직사각형, 정사각형 등) 중 적어도 하나에 기반하여 블록을 다수의 부블록들로 분할할지 여부를 결정할 수 있다.
예를 들어, 현재 블록이 64x64 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 32x32 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 32x16 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 16x32 블록인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록이 4x4 블록인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록이 2x4 블록인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 변환 블록의 최대 크기보다 큰 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다. 즉, 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 변환 블록의 최대 크기보다 작거나 같은 경우, 현재 블록에 제2 부블록 분할 모드가 적용될 수 있다.
또 다른 예로, 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 변환 블록의 최대 크기보다 큰 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다. 즉, 현재 블록의 가로 크기 및 세로 크기가 모두 변환 블록의 최대 크기보다 작거나 같은 경우, 현재 블록에 제2 부블록 분할 모드가 적용될 수 있다.
또한, 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 변환 블록의 최대 크기보다 작거나 같은 경우, 제2 부블록 분할 모드를 지시하는 정보(부블록 분할 모드 정보, 분할 방향 정보, 부블록 위치 정보, 부블록 크기 정보) 중 적어도 하나를 엔트로피 부호화/복호화할 수 있다. 여기서, 변환 블록의 최대 크기는 상위 레벨 단위에서 시그널링되는 변환 블록 최대 크기 정보에 기초하여 결정될 수 있다. 일 예로, 변환 블록 최대 크기 정보에 기초하여 변환 블록의 최대 크기는 64 또는 32 중 어느 하나로 결정될 수 있다.
또 다른 예로, 현재 블록의 면적이 32 이상일 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록의 면적이 32 미만일 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
또 다른 예로, 현재 블록의 면적이 256이고 현재 블록의 형태가 직사각형인 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록의 면적이 16이고 현재 블록의 형태가 정사각형인 경우, 현재 블록은 다수의 부블록들로 분할되지 않을 수 있다.
현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 기 정의된 값보다 크거나 같은 경우, 현재 블록은 다수의 부블록들로 분할될 수 있다.
일 예로, 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 8보다 크거나 같은 경우, 현재 블록은 다수의 부블록들로 분할할 수 있다.
반대로, 현재 블록의 가로 크기 및 세로 크기 모두가 기 정의된 값보다 작은 경우, 현재 블록을 다수 부블록들로 분할하지 않을 수 있다.
현재 블록이 GPM(Geometric Partitioning Mode)인 경우, 현재 블록의 변환 블록을 다수 부블록들로 분할하지 않을 수 있다. 여기서, GPM은 현재 블록의 예측 블록을 두 개의 부블록으로 분할하여 예측을 수행하는 예측 모드일 수 있다. 현재 블록이 GPM인 경우, 현재 블록의 예측 블록은 두 개의 부블록으로 분할될 수 있다. 이때, 현재 블록의 예측 블록을 두 개의 부블록으로 분할하기 위한, 분할 방향에 대한 정보가 엔트로피 부호화/복호화될 수 있다. 두 개의 부블록에 대해 각각 화면 간 예측을 수행하여 두 개의 부블록에 대한 예측 샘플이 생성될 수 있다. 그리고, 생성된 두 개의 부블록에 대한 예측 샘플을 가중합하여 현재 블록의 예측 샘플을 유도할 수 있다. 즉, 현재 블록의 예측 블록이 적어도 두 개의 부블록으로 분할될 경우, 현재 블록의 변환 블록을 적어도 두 개의 부블록으로 분할하지 않을 수 있다. 마찬가지로, 현재 블록의 예측 블록이 적어도 두 개의 부블록으로 분할되지 않은 경우, 현재 블록의 변환 블록을 적어도 두 개의 부블록으로 분할할 수 있다.
상기 블록을 분할할 경우, 수직 방향 혹은 수평 방향 중 적어도 하나의 분할 방향으로 블록은 다수의 부블록들로 분할될 수 있다.
예를 들어, 현재 블록은 수직 방향으로 2개의 부블록들로 분할될 수 있다.
또 다른 예로, 현재 블록은 수평 방향으로 2개의 부블록들로 분할될 수 있다.
블록을 N개의 부블록으로 분할할 경우, N은 양의 정수일 수 있고, 일 예로 2 등일 수 있다. 또한 상기 N은 블록의 면적, 크기, 형태, 분할 방향 중 적어도 하나를 이용하여 결정할 수 있다.
예를 들어, 현재 블록이 4x8 혹은 8x4 블록인 경우, 가로 방향으로 2개의 부블록 혹은 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 16x8 혹은 16x16 블록인 경우, 세로 방향으로 2개의 부블록 혹은 가로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 8x32 혹은 32x32 블록인 경우, 가로 방향으로 2개의 부블록 혹은 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 Jx8인 경우, 가로 방향으로 2개의 부블록으로 분할할 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 8xK인 경우, 세로 방향으로 2개의 부블록으로 분할할 수 있다. 여기서, J는 양의 정수일 수 있다.
또 다른 예로, 현재 블록이 JxK(K>8)인 경우, 가로 방향으로 2개의 부블록으로 분할할 수 있다. 여기서, J는 양의 정수일 수 있다. 이때, 분할되는 부블록들의 세로 크기는 1:3 혹은 3:1의 비율을 가질 수 있다.
또 다른 예로, 현재 블록이 J(J>8)xK인 경우, 세로 방향으로 2개의 부블록으로 분할할 수 있다. 여기서, J는 양의 정수일 수 있다. 이때, 분할되는 부블록들의 가로 크기는 1:3 혹은 3:1의 비율을 가질 수 있다.
또 다른 예로, 현재 블록의 면적이 64인 경우, 가로 방향 혹은 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 16x4이고 현재 블록의 형태가 직사각형인 경우, 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또 다른 예로, 현재 블록이 1024이고 현재 블록의 형태가 정사각형인 경우, 가로 방향 혹은 세로 방향으로 2개의 부블록으로 분할할 수 있다.
또한, 상기 부블록은 최소 면적, 최소 가로 크기, 최소 세로 크기 중 적어도 하나를 가질 수 있다.
예를 들어, 상기 부블록은 최소 면적으로 S를 가질 수 있다. 여기서, S는 양의 정수일 수 있고, 일 예로 16일 수 있다.
또 다른 예로, 상기 부블록은 최소 가로 크기로 J를 가질 수 있다. 여기서, J는 양의 정수일 수 있고, 일 예로 4일 수 있다.
또 다른 예로, 상기 부블록은 최소 세로 크기로 K를 가질 수 있다. 여기서, K는 양의 정수일 수 있고, 일 예로 4일 수 있다.
상기 블록을 N개의 부블록으로 분할하여 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행하는 부블록 분할 모드를 지시하기 위해, 부블록 분할 모드 정보, 분할 방향 정보, 부블록 위치 정보, 부블록 크기 정보 중 적어도 하나가 엔트로피 부호화/복호화될 수 있다.
여기서, 부블록 분할 모드 정보는 상기 부블록 분할 모드를 지시하기 위해 사용될 수 있다. 부블록 분할 모드를 사용하는 것으로 지시하는 경우(제2 값), 블록을 부블록으로 분할하여 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나가 수행될 수 있다. 부블록 분할 모드를 사용하지 않는 것으로 지시하는 경우(제1 값), 블록을 부블록으로 분할하지 않고 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나가 수행될 수 있다. 여기서, 제1 값은 0일 수 있고, 제2 값은 1일 수 있다.
또한, 분할 방향 정보는 상기 부블록 분할 모드가 수직 방향으로 분할할 것인지, 수평 방향으로 분할할 것인지를 지시하기 위해 사용될 수 있다. 분할 방향 정보가 제1 값인 경우 블록은 수직 방향으로 부블록들로 분할할 수 있고, 제1 값은 0일 수 있다. 또한, 분할 방향 정보가 제2 값인 경우 블록은 수평 방향으로 부블록들로 분할할 수 있고, 제2 값은 1일 수 있다.
또한, 부블록 위치 정보는 상기 분할된 부블록들 중에서 어떤 부블록의 잔차 신호가 부호화/복호화되는지를 지시하기 위해 사용될 수 있다. 부블록 위치 정보가 제1 값인 경우 첫번째 부블록의 잔차 신호가 부호화/복호화될 수 있고, 제1 값은 0일 수 있다. 또한, 부블록 위치 정보가 제2 값인 경우 두번째 부블록의 잔차 신호가 부호화/복호화될 수 있고, 제2 값은 1일 수 있다. 또한, 부블록 위치 정보가 제1 값인 경우에는 첫번째 부블록에 대한 휘도 신호에 대한 부호화 블록 플래그 및 색차 신호에 대한 부호화 블록 플래그 중 적어도 하나가 엔트로피 부호화/복호화될 수 있다. 또한, 부블록 위치 정보가 제2 값인 경우에는 두번째 부블록에 대한 휘도 신호에 대한 부호화 블록 플래그 및 색차 신호에 대한 부호화 블록 플래그 중 적어도 하나가 엔트로피 부호화/복호화될 수 있다.
또한, 부블록 크기 정보는 상기 분할되는 부블록의 가로 크기 혹은 세로 크기가 블록의 가로 크기 혹은 세로 크기의 ½인지 ¼인지를 지시하기 위해 사용될 수 있다. 부블록 크기 정보가 제1 값인 경우 부블록 위치 정보에 의해 지시되는 잔차 신호가 부호화/복호화되는 부블록의 가로 크기 혹은 세로 크기가 블록의 가로 크기 혹은 세로 크기의 ½인 것을 지시할 수 있고, 제1 값은 0일 수 있다. 또한, 부블록 크기 정보가 제2 값인 경우 부블록 위치 정보에 의해 지시되는 잔차 신호가 부호화/복호화되는 부블록의 가로 크기 혹은 세로 크기가 블록의 가로 크기 혹은 세로 크기의 ¼인 것을 지시할 수 있고, 제2 값은 1일 수 있다. 예를 들어, 상기 분할되는 부블록의 크기가 블록의 가로 크기 혹은 세로 크기의 ½인 경우만 존재할 경우 부블록 크기 정보를 엔트로피 부호화/복호화하지 않을 수 있다.
분할된 각각의 부블록들은 잔차 블록(혹은 복원된 잔차 블록)과 예측 블록을 가산하여 복원 블록을 생성할 수 있다.
분할 방향 중 적어도 하나에 따라 블록에서 분할된 각각의 부블록들의 부호화/복호화 순서가 결정될 수 있다.
예를 들어, 수평 분할된 각각의 부블록들은 상단 방향에서 하단 방향으로 부호화/복호화 순서가 결정될 수 있다.
또 다른 예로, 수직 분할된 각각의 부블록들은 좌측 방향에서 우측 방향으로 부호화/복호화 순서가 결정될 수 있다.
각각의 분할된 부블록들은 부블록 단위로 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는지 여부를 지시하는 부호화 블록 플래그(coded block flag)를 엔트로피 부호화/복호화할 수 있다.
예를 들어, 부블록 단위로 적어도 하나의 부블록에서는 부호화 블록 플래그를 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는 것으로 지시할 수 있다.
또 다른 예로, 부블록 단위로 부호화 블록 플래그가 엔트로피 부호화/복호화되는 경우, 분할 전 블록 단위에서는 부호화 블록 플래그가 엔트로피 부호화/복호화되지 않을 수 있다.
또 다른 예로, 분할 전 블록 단위에서 부호화 블록 플래그가 엔트로피 부호화/복호화되는 경우, 부블록 단위로 부호화 블록 플래그가 엔트로피 부호화/복호화되지 않을 수 있다.
부블록 위치 정보가 지시하는 부블록에 대해서만 잔차 신호를 엔트로피 부호화/복호화할 수 있다.
이때, 부블록 위치 정보로 지시되는 부블록에서는 잔차 신호가 항상 존재할 수 있으므로, 부호화 블록 플래그를 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하는 것으로 추론할 수 있다.
또한, 부블록 위치 정보로 지시되지 않은 부블록에서는 잔차 신호가 항상 존재하지 않을 수 있으므로, 부호화 블록 플래그를 0이 아닌 값을 가지는 변환 계수가 적어도 하나 존재하지 않는 것으로 추론할 수 있다.
변환 계수에 대해 엔트로피 부호화/복호화할 시 사용되는 계수 그룹(coefficient group)의 면적, 크기, 형태, 분할 방향 중 적어도 하나는 부블록의 면적, 크기, 형태, 분할 방향 중 적어도 하나에 기반하여 결정될 수 있다.
예를 들어, 부블록의 면적이 16인 경우, 계수 그룹의 면적은 16으로 결정될 수 있다.
또 다른 예로, 부블록의 면적이 32인 경우, 계수 그룹의 면적은 16으로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 1x16 혹은 16x1인 경우, 계수 그룹의 크기는 1x16 혹은 16x1로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 2x8 혹은 8x2인 경우, 계수 그룹의 크기는 2x8 혹은 8x2로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x4인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 가로 크기가 2인 경우, 계수 그룹의 가로 크기는 2로 결정될 수 있다.
또 다른 예로, 부블록의 가로 크기가 4인 경우, 계수 그룹의 가로 크기는 4로 결정될 수 있다.
또 다른 예로, 부블록의 세로 크기가 2인 경우, 계수 그룹의 세로 크기는 2로 결정될 수 있다.
또 다른 예로, 부블록의 세로 크기가 4인 경우, 계수 그룹의 세로 크기는 4로 결정될 수 있다.
또 다른 예로, 부블록의 형태가 직사각형인 경우, 계수 그룹의 형태는 직사각형으로 결정될 수 있다.
또 다른 예로, 부블록의 형태가 정사각형인 경우, 계수 그룹의 형태는 정사각형으로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 16x4이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 8x2 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x8이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 2x8 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 32x4이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 8x2 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 8x64이고 형태가 직사각형인 경우, 계수 그룹의 크기는 4x4, 2x8 중 적어도 하나로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 16x4이고 분할 방향이 수직 방향인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 4x8이고 분할 방향이 수평 방향인 경우, 계수 그룹의 크기는 4x4로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 32x4이고 분할 방향이 수평 방향인 경우, 계수 그룹의 크기는 8x2로 결정될 수 있다.
또 다른 예로, 부블록의 크기가 8x64이고 분할 방향이 수직 방향인 경우, 계수 그룹의 크기는 2x8로 결정될 수 있다.
한편, 변환 계수에 대해 엔트로피 부호화/복호화할 시 사용되는 계수 그룹(coefficient group)의 면적은 기 정의된 값으로 결정될 수 있다. 여기서, 기 정의된 값은 4 또는 16일 수 있다.
또한, 변환 계수 그룹의 면적 혹은 크기는 현재 블록의 색 성분과 관계없이 현재 블록의 크기에 기초하여 결정될 수 있다. 이때, 현재 블록의 크기는 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나를 포함할 수 있다.
예를 들어, 현재 블록의 가로 크기 및 세로 크기가 2인 경우, 계수 그룹의 크기는 2x2로 결정될 수 있다.
또 다른 예로, 현재 블록이 2x4 혹은 4x2인 경우, 계수 그룹의 크기는 2x2로 결정될 수 있다.
도 13의 예와 같이, 제2 부블록 분할 모드의 실시예에 따라 현재 블록은 수평 방향으로 2개의 부블록(세로 크기의 ½ 혹은 ¼)으로 분할될 수 있고, 수직 방향으로 2개의 부블록 (가로 크기의 ½ 혹은 ¼)으로 분할될 수 있다. 도 13의 예에서, 회색 음영은 부블록들 중에서 잔차 신호가 부호화/복호화되는 블록을 의미할 수 있고, 해당 블록은 부블록 위치 정보를 이용해서 지시할 수 있다.
상기 블록을 N개의 부블록으로 분할하여 예측, 변환/역변환, 양자화/역양자화, 엔트로피 부호화/복호화 중 적어도 하나를 수행하는 모드의 사용 여부를 나타내는 부블록 분할 모드 사용 여부 정보를 파라미터 세트 및 헤더 중 적어도 하나에서 엔트로피 부호화/복호화할 수 있다.
여기서, 부블록 분할 모드 사용 여부 정보는 제1 부블록 분할 모드 및 제2 부블록 분할 모드 중 적어도 하나를 의미할 수 있다.
이때, 파라미터 세트 및 헤더 중 적어도 하나는 비디오 파라미터 세트(video parameter set), 디코딩 파라미터 세트(decoding parameter set), 시퀀스 파라미터 세트(sequence parameter set), 적응 파라미터 세트(adaptation parameter set), 픽처 파라미터 세트(picture parameter set), 픽처 헤더(picture header), 슬라이스 헤더(slice header), 타일 그룹 헤더(tile group header), 타일 헤더(tile header) 등 중 적어도 하나일 수 있다.
예를 들어, 비디오 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 비디오 파라미터 세트에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 디코딩 과정 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 시퀀스 파라미터 세트에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 시퀀스 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 시퀀스 파라미터 세트에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 여러 픽처 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 적응 파라미터 세트 혹은 적응 헤더에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 픽처 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 픽처 파라미터 세트 혹은 픽처 헤더에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 슬라이스 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 슬라이스 헤더에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 타일 그룹 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 타일 그룹 헤더에서 엔트로피 부호화/복호화할 수 있다.
또 다른 예로, 타일 내에서 부블록 분할 모드 사용 여부를 지시하기 위해, 부블록 분할 모드 사용 여부 정보를 타일 헤더에서 엔트로피 부호화/복호화할 수 있다.
각 블록 혹은 부블록에 대한 변환/역변환 종류는 아래의 실시예들 중 적어도 하나 이상을 이용하여 결정될 수 있다.
블록 혹은 부블록에 대한 예측 모드, 화면 내 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보, 2차 변환 수행 정보, 매트릭스(matrix) 기반 화면 내 예측 수행 정보 중 적어도 하나에 기반하여, 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정할 수 있다. 상기 매트릭스 기반 화면 내 예측은 행렬 기반 화면 내 예측을 의미할 수 있다.
일 예로, 블록 혹은 부블록에 대한 예측 모드, 화면 내 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보, 2차 변환 수행 정보, 매트릭스 기반 화면 내 예측 수행 정보 중 적어도 하나에 기반하여 가로 변환 타입 및 세로 변환 타입 중 적어도 하나를 지시하는 1차원 변환 종류를 결정할 수 있다.
또 다른 예로, 블록 혹은 부블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보 중 적어도 하나에 기반하여 가로 변환 타입 및 세로 변환 타입의 조합을 지시하는 2차원 변환 조합을 결정할 수 있다.
또 다른 예로, 블록 혹은 부블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보 중 적어도 하나에 기반하여 변환의 수행 여부를 지시하는 변환 사용 여부를 결정할 수 있다.
이때, 블록 혹은 부블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보 중 적어도 하나에 따라 결정되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나가 서로 다를 수 있다.
또한, 블록 혹은 부블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보, 2차 변환 수행 정보, 매트릭스 기반 화면 내 예측 수행 정보 중 적어도 하나에 기반하여, 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정 시에 1차원 변환 종류에 대한 정보, 2차원 변환 조합에 대한 정보, 변환 사용 여부에 대한 정보는 엔트로피 부호화/복호화되지 않을 수 있다.
즉, 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나는 부호화기/복호화기에서 기설정된 규칙에 따라 암묵적으로 결정될 수 있다. 상기 기설정된 규칙은 부호화기/복호화기에서 부호화 파라미터에 기반하여 설정될 수 있다.
여기서, 매트릭스 기반 화면 내 예측은 경계 평균화 과정, 행렬 벡터 곱 과정 및 선형 보간 과정 중 적어도 하나를 수행하여 예측 블록을 생성하는 화면 내 예측 모드를 의미할 수 있다.
여기서, 변환은 변환 및 역변환 중 적어도 하나를 의미할 수 있다.
또한, 블록은 블록에서 분할된 각각의 부블록을 의미할 수도 있다.
1차 변환은 잔여 블록에 수행되어 변환 계수를 생성하기 위한 DCT-2, DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환(integer transform) 중 적어도 하나를 의미할 수 있다. 여기서, J와 K는 양의 정수일 수 있다.
상기 DCT-2, DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나의 변환 행렬로부터 추출한 변환 행렬을 사용해서 1차 변환은 수행될 수 있다. 즉, 상기 추출된 변환 행렬을 이용해서 상기 1차 변환은 수행될 수 있다. 또한, 상기 추출된 변환 행렬 내 계수 중 적어도 하나는 상기 DCT-2, DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나의 변환 행렬 내 계수 중 적어도 하나와 동일할 수 있다. 또한, 상기 추출된 변환 행렬은 추출 대상이 되는 변환 행렬 내에 포함될 수 있다. 또한, 상기 추출된 변환 행렬은 추출 대상이 되는 변환 행렬 내 특정 계수들로부터 플리핑(flipping), 부호 변경(sign change) 중 적어도 하나를 수행한 것일 수 있다.
예를 들어, DCT-2의 변환 행렬로부터 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 추출하여 1차 변환에 사용할 수 있다.
여기서, 상기 DCT-2, DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환들 중 적어도 하나는 DCT-2, DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환들 중 적어도 하나와 서로 다른 변환 행렬 내 계수를 가질 수 있다.
예를 들어, 상기 DST-7 기반 정수 변환 행렬에 대해 가로 방향 플리핑과 DST-7 변환 행렬 계수 중 적어도 하나에 부호 변경 중 적어도 하나를 수행하여, DCT-8 기반 정수 변환 행렬이 유도될 수 있다. 이때, 가로 방향 플리핑 대신 세로 방향 플리핑을 사용할 수 있다.
또 다른 예로, 상기 DCT-8 기반 정수 변환 행렬에 대해 가로 방향 플리핑과 DCT-8 변환 행렬 계수 중 적어도 하나에 부호 변경 중 적어도 하나를 수행하여, DST-7 기반 정수 변환 행렬이 유도될 수 있다. 이때, 가로 방향 플리핑 대신 세로 방향 플리핑을 사용할 수 있다.
또 다른 예로, 상기 DST-4 기반 정수 변환 행렬에 대해 가로 방향 플리핑과 DST-4 변환 행렬 계수 중 적어도 하나에 부호 변경 중 적어도 하나를 수행하여, DCT-4 기반 정수 변환 행렬이 유도될 수 있다. 이때, 가로 방향 플리핑 대신 세로 방향 플리핑을 사용할 수 있다.
또 다른 예로, 상기 DCT-4 기반 정수 변환 행렬에 대해 가로 방향 플리핑과 DCT-4 변환 행렬 계수 중 적어도 하나에 부호 변경 중 적어도 하나를 수행하여, DST-4 기반 정수 변환 행렬이 유도될 수 있다. 이때, 가로 방향 플리핑 대신 세로 방향 플리핑을 사용할 수 있다.
2차 변환은 각도에 기반하여 변환 계수들 중 적어도 하나를 회전하는 변환 등 중 적어도 하나를 의미할 수 있다. 상기 2차 변환은 1차 변환 수행 후 수행될 수 있다.
부호화기에서 1차 변환이 수행된 변환 계수에 대해 좌측 상단의 저주파수 영역의 계수에 대해 2차 변환이 수행될 수 있다. 2차 변환이 적용되는 저주파수 영역의 크기는 변환 블록의 크기에 기초하여 결정될 수 있다.
복호화기에서 1차 역변환이 수행되기 전에 2차 역변환이 수행될 수 있다. 이하 설명에서는, 2차 변환은 2차 역변환을 모두 포함하는 것을 의미할 수 있다.
2차 변환은 가로 방향 및 세로 방향의 분리 가능한 변환 커널(또는 타입)이 아닌 비분리 변환 커널을 사용하므로 저주파수 비분리 변환(LFNST, Low Frequency Non-Separable Transform)이라고 명명될 수 있다.
2차 변환은 화면 내 예측 부호화/복호화에 대해서만 수행될 수 있으며, 2차 변환 커널은 화면 내 예측 모드에 기초하여 결정될 수 있다. 구체적으로, 화면 내 예측 모드에 기초하여 복수의 변환 커널을 포함하는 변환 세트가 결정될 수 있다. 그리고, 인덱스 정보에 기초하여 결정된 변환 세트에서 2차 변환에 적용될 변환 커널이 결정될 수 있다. 여기서, 변환 세트는 4종류의 변환 세트가 있을 수 있다.
또한, 현재 블록의 화면 내 예측 모드가 CCLM 모드인 경우, 색차 블록에 대응하는 휘도 블록의 화면 내 예측 모드를 기반으로 색차 블록에 대한 변환 세트가 결정될 수 있다. 여기서, 상기 색차 블록에 대응하는 휘도 블록이 매트릭스 기반 예측 모드인 경우, PLANAR 모드로 간주하여 색차 블록에 대한 변환 세트가 결정될 수 있다. 또한, 상기 색차 블록에 대응하는 휘도 블록이 IBC 모드인 경우, DC 모드로 간주하여 색차 블록에 대한 변환 세트가 결정될 수 있다.
또 다른 예로, 상기 색차 블록에 대응하는 휘도 블록이 매트릭스 기반 예측 모드이거나, IBC 모드이거나, 팔레트 모드인 경우, PLANAR 모드로 간주하여 색차 블록에 대한 변환 세트가 결정될 수 있다.
또 다른 예로, 상기 색차 블록에 대응하는 휘도 블록이 매트릭스 기반 예측 모드이거나, IBC 모드이거나, 팔레트 모드인 경우, DC 모드로 간주하여 색차 블록에 대한 변환 세트가 결정될 수 있다.
또한, 2차 변환 색인 정보를 이용하여 상기 변환 세트 내 2차 변환 커널이 결정될 수 있다. 여기서, 2차 변환 커널은 2차 변환 행렬을 의미할 수 있다.
변환 사용 여부는 잔차 블록에 1차 변환 및 2차 변환 중 적어도 하나의 사용 여부를 의미할 수 있다. 변환 사용 여부는 1차 변환 사용 여부 및 2차 변환 사용 여부 중 적어도 하나를 포함할 수 있다. 변환 사용 여부는 변환 스킵 모드가 수행되는지 여부를 의미할 수 있다. 또한, transform_skip_flag는 변환 스킵 모드 플래그를 의미할 수 있다.
예를 들어, 1차 변환 및 2차 변환 중 적어도 하나의 변환 사용 여부 정보인 transform_skip_flag가 제1 값(예: 0)인 경우, 1차 변환 및 2차 변환 중 적어도 하나를 사용함을 지시할 수 있다.
또 다른 예로, 1차 변환 및 2차 변환 중 적어도 하나의 변환 사용 여부 정보인 transform_skip_flag가 제2 값(예: 1)인 경우, 1차 변환 및 2차 변환 중 적어도 하나를 사용하지 않음을 지시할 수 있다.
1차원 변환 종류는 1차 변환에 대한 종류(타입)를 의미할 수 있고, 상기 DCT-J, DST-K 기반 정수 변환 타입 중 적어도 하나에 대한 가로 변환 타입 trTypeHor 혹은 세로 변환 타입 trTypeVer을 의미할 수 있다. 여기서, J와 K는 양의 정수일 수 있다.
1차원 변환의 종류로 제1 변환 내지 제N 변환이 사용될 수 있다. 여기서, N은 2 이상의 양의 정수일 수 있다.
예를 들어, 제1 변환은 DCT-2 기반 정수 변환을 의미할 수 있다.
또 다른 예로, 제1 변환이 가로 변환 및 세로 변환에 사용될 경우, 가로 변환에 대한 변환 타입인 trTypeHor과 세로 변환에 대한 변환 타입인 trTypeVer은 각각 Q, R의 값을 가질 수 있다. 여기서, Q, R은 음의 정수, 0, 양의 정수 중 적어도 하나일 수 있다. 예를 들어, Q, R은 각각 0, 0일 수 있다.
예를 들어, trTypeHor가 제1 값인 경우, DCT-2에 기반한 정수 가로 변환을 의미할 수 있다.
또 다른 예로, trTypeVer가 제1 값인 경우, DCT-2에 기반한 정수 세로 변환을 의미할 수 있다.
상기 제1 값은 0일 수 있다.
예를 들어, 제2 변환은 DCT-2가 아닌 변환들인 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 의미할 수 있다. 여기서, J와 K는 양의 정수일 수 있다. 즉, 제2 변환은 제1 변환이 아닌 변환들 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 제2 변환이 가로 변환 및 세로 변환 중 적어도 하나에 사용될 경우, 가로 변환에 대한 변환 타입인 trTypeHor과 세로 변환에 대한 변환 타입인 trTypeVer은 각각 T, U의 값을 가질 수 있다. 여기서, T, U는 음의 정수, 0, 양의 정수 중 적어도 하나일 수 있다. 예를 들어, T, U은 각각 1 이상의 값, 1 이상의 값일 수 있다. 또한, T, U는 각각 Q, R보다 클 수 있다.
예를 들어, trTypeHor가 제2 값인 경우, DST-7에 기반한 정수 가로 변환을 의미할 수 있다.
또 다른 예로, trTypeHor가 제3 값인 경우, DCT-8에 기반한 정수 가로 변환을 의미할 수 있다.
또 다른 예로, trTypeVer가 제2 값인 경우, DST-7에 기반한 정수 세로 변환을 의미할 수 있다.
또 다른 예로, trTypeVer가 제3 값인 경우, DCT-8에 기반한 정수 세로 변환을 의미할 수 있다.
상기 제2 값은 1일 수 있다. 또한, 상기 제3 값은 2일 수 있다.
상기 DST-7 대신 DST-4가 사용될 수 있다. 또한, 상기 DCT-8 대신 DCT-4가 사용될 수 있다.
예를 들어, 제1 변환은 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 DST-7 기반 정수 변환일 수 있다. 또한, 제3 변환은 DCT-8 기반 정수 변환일 수 있다. 또한, 제2 변환은 제2 변환 및 제3 변환 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 제1 변환은 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 DST-4 기반 정수 변환일 수 있다. 또한, 제3 변환은 DCT-4 기반 정수 변환일 수 있다. 또한, 제2 변환은 제2 변환 및 제3 변환 중 적어도 하나를 의미할 수 있다.
즉, 제1 변환은 DCT-2 기반 정수 변환이되, 제2 변환 내지 제N 변환은 DCT-2가 아닌 변환들인 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 의미할 수 있다. 여기서, N은 3 이상의 양의 정수일 수 있다.
예를 들어, 제1 변환은 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-7 기반 정수 변환일 수 있다. 또한, 제3 변환은 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8 기반 정수 변환일 수 있다. 또한, 제2 변환은 제2 변환 및 제3 변환 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 제1 변환은 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-4 기반 정수 변환일 수 있다. 또한, 제3 변환은 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-4 기반 정수 변환일 수 있다. 또한, 제2 변환은 제2 변환 및 제3 변환 중 적어도 하나를 의미할 수 있다.
즉, 제1 변환은 DCT-2 기반 정수 변환이되, 제2 변환 내지 제N 변환은 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 의미할 수 있다. 여기서, N은 3 이상의 양의 정수일 수 있다. 또한, 제2 변환은 제2 변환 내지 제 N 변환 중 적어도 하나를 의미할 수 있다.
상기 DCT-2 변환 대신 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나가 사용될 수도 있다.
2차원 변환 조합은 1차 변환들에 대한 조합을 의미할 수 있고, 상기 DCT-J, DST-K 기반 정수 변환 타입 중 적어도 하나에 대한 가로 변환 타입 trTypeHor 및 세로 변환 타입 trTypeVer의 조합을 의미할 수 있다. 또한, 2차원 변환 조합은 다중 변환 선택 인덱스인 mts_idx을 의미할 수 있다. 여기서, 다중 변환 선택 인덱스는 다중 변환 선택 색인을 의미할 수 있다.
예를 들어, 제1 변환이 가로 변환 및 세로 변환에 사용될 경우, 다중 변환 선택 인덱스인 mts_idx는 P의 값을 가질 수 있다. 여기서, P은 음의 정수, 0, 양의 정수 중 적어도 하나일 수 있다. 예를 들어, P는 0일 수 있다.
예를 들어, mts_idx가 0인 경우, trTypeHor과 trTypeVer은 각각 0, 0의 값을 가질 수 있다. 또 다른 예로, trTypeHor가 제1 값인 경우, DCT-2에 기반한 정수 가로 변환을 의미할 수 있다. 또 다른 예로, trTypeVer가 제1 값인 경우, DCT-2에 기반한 정수 세로 변환을 의미할 수 있다. 상기 제1 값은 0일 수 있다.
또 다른 예로, 제2 변환이 가로 변환 및 세로 변환 중 적어도 하나에 사용될 경우, 다중 변환 선택 인덱스인 mts_idx는 S 이상의 값을 가질 수 있다. 여기서, S은 음의 정수, 0, 양의 정수 중 적어도 하나일 수 있다. 예를 들어, S는 1일 수 있다. 또한, S는 P보다 클 수 있다.
예를 들어, mts_idx가 1인 경우, trTypeHor과 trTypeVer은 각각 제2 값, 제2 값을 가질 수 있다.
또 다른 예로, mts_idx가 2인 경우, trTypeHor과 trTypeVer은 각각 제3 값, 제2 값을 가질 수 있다.
또 다른 예로, mts_idx가 3인 경우, trTypeHor과 trTypeVer은 각각 제2 값, 제3 값의 값을 가질 수 있다.
또 다른 예로, mts_idx가 4인 경우, trTypeHor과 trTypeVer은 각각 제3 값, 제3 값의 값을 가질 수 있다.
예를 들어, trTypeHor가 제2 값인 경우, DST-7에 기반한 정수 가로 변환을 의미할 수 있다.
또 다른 예로, trTypeHor가 제3 값인 경우, DCT-8에 기반한 정수 가로 변환을 의미할 수 있다.
또 다른 예로, trTypeVer가 제2 값인 경우, DST-7에 기반한 정수 세로 변환을 의미할 수 있다.
또 다른 예로, trTypeVer가 제3 값인 경우, DCT-8에 기반한 정수 세로 변환을 의미할 수 있다.
상기 제2 값은 1일 수 있다. 또한, 상기 제3 값은 2일 수 있다.
상기 DST-7 대신 DST-4가 사용될 수 있다. 또한, 상기 DCT-8 대신 DCT-4가 사용될 수 있다.
예를 들어, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 가로 변환 및 세로 변환이 각각 DST-7 및 DST-7 기반 정수 변환들일 수 있다. 또한, 제3 변환은 가로 변환 및 세로 변환이 각각 DCT-8 및 DST-7 기반 정수 변환들일 수 있다. 또한, 제4 변환은 가로 변환 및 세로 변환이 각각 DST-7 및 DCT-8 기반 정수 변환들일 수 있다. 또한, 제5 변환은 가로 변환 및 세로 변환이 각각 DCT-8 및 DCT-8 기반 정수 변환들일 수 있다. 또한, 제2 변환은 제2 변환, 제3 변환, 제4 변환, 제5 변환 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 가로 변환 및 세로 변환이 각각 DST-4 및 DST-4 기반 정수 변환들일 수 있다. 또한, 제3 변환은 가로 변환 및 세로 변환이 각각 DCT-4 및 DST-4 기반 정수 변환들일 수 있다. 또한, 제4 변환은 가로 변환 및 세로 변환이 각각 DST-4 및 DCT-4 기반 정수 변환들일 수 있다. 또한, 제5 변환은 가로 변환 및 세로 변환이 각각 DCT-4 및 DCT-4 기반 정수 변환들일 수 있다. 또한, 제2 변환은 제2 변환, 제3 변환, 제4 변환, 제5 변환 중 적어도 하나를 의미할 수 있다.
즉, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환이되, 제2 변환 내지 제N 변환은 가로 변환 및 세로 변환이 각각 DCT-2가 아닌 변환들인 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 의미할 수 있다. 여기서, N은 3 이상의 양의 정수일 수 있다.
예를 들어, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-7 및 DST-7 기반 정수 변환들일 수 있다. 또한, 제3 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8 및 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-7 기반 정수 변환들일 수 있다. 또한, 제4 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-7 및 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8 기반 정수 변환들일 수 있다. 또한, 제5 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8 및 DCT-8 기반 정수 변환들일 수 있다. 또한, 제2 변환은 제2 변환, 제3 변환, 제4 변환, 제5 변환 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환일 수 있다. 또한, 제2 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-4 및 DST-4 기반 정수 변환들일 수 있다. 또한, 제3 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-4 및 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-4 기반 정수 변환들일 수 있다. 또한, 제4 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DST-4 및 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-4 기반 정수 변환들일 수 있다. 또한, 제5 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-4 및 DCT-4 기반 정수 변환들일 수 있다. 또한, 제2 변환은 제2 변환, 제3 변환, 제4 변환, 제5 변환 중 적어도 하나를 의미할 수 있다.
즉, 제1 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환이되, 제2 변환 내지 제N 변환은 가로 변환 및 세로 변환이 각각 DCT-2 기반 정수 변환 행렬로부터 추출한 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나를 의미할 수 있다. 여기서, N은 3 이상의 양의 정수일 수 있다. 이 경우, 제2 변환은 제2 변환 내지 제 N 변환 중 적어도 하나를 의미할 수 있다.
상기 DCT-2 변환 대신 DCT-8, DST-7, DCT-4, DST-4 등 DCT-J, DST-K 기반 정수 변환 중 적어도 하나가 사용될 수도 있다.
예측 모드는 블록의 예측 모드를 의미할 수 있으며, 화면 내 예측 모드, 화면 간 예측 모드, 혹은 IBC(Intra Block Copy) 모드 중 어떤 예측 모드로 부호화/복호화되는지를 의미할 수 있다.
예를 들어, 특정 모드가 화면 내 예측 및 화면 간 예측을 모두 수행하여 예측 블록을 생성할 경우, 해당 특정 모드는 화면 간 예측 모드를 의미할 수 있다.
예를 들어, 특정 모드가 현재 영상을 참조 영상으로 사용하고 예측 시 벡터를 사용할 경우, 해당 특정 모드는 화면 내 블록 복사 예측 모드를 의미할 수 있다. 상기 화면 내 블록 복사 예측 모드는 IBC 모드를 의미할 수 있다. 여기서, IBC 모드는 현재 영상/슬라이스/타일/타일 그룹/CTU 내에서 참조 영역을 설정하여, 참조 영역 내 위치에 대하여 블록 벡터(block vector)로 지시하고, 해당 블록 벡터가 지시하는 영역을 이용해서 예측하는 모드를 의미할 수 있다.
색 성분은 블록의 색 성분을 의미할 수 있으며, 휘도(Y, Luma) 혹은 색차(Chroma) 성분을 의미할 수 있다.
예를 들어, 색차 성분은 Cb 성분 및 Cr 성분 중 적어도 하나를 의미할 수도 있다. 즉, Y 성분, Cb 성분, Cr 성분 중 적어도 하나를 의미할 수 있다.
또 다른 예로, R 성분, G 성분, B 성분 중 적어도 하나를 의미할 수 있다.
또 다른 예로, 영상을 여러 성분으로 분해해서 부호화/복호화할 경우, 분해된 각 성분을 의미할 수 있다.
부블록 분할 관련 정보는 블록이 다수의 부블록들로 분할되는 것을 지시하기 위한 정보들을 의미할 수 있다.
예를 들어, 부블록 분할 관련 정보에는 부블록 분할 모드 정보, 분할 방향 정보 중 적어도 하나를 포함할 수 있다.
또 다른 예로, 부블록 분할 관련 정보에는 부블록 분할 모드 정보, 분할 방향 정보, 부블록 위치 정보, 부블록 크기 정보 중 적어도 하나를 포함할 수 있다.
크기는 블록 크기, 부블록 크기, 변환 크기 중 적어도 하나를 의미할 수 있다. 여기서, 크기는 가로 크기, 세로 크기, 가로 크기 및 세로 크기의 조합 중 적어도 하나를 의미할 수 있다.
변환 크기는 해당 블록에 사용되는 변환 크기를 의미할 수 있다. 변환 크기는 해당 블록 크기보다 작거나 같을 수 있다.
상기 크기는 2x2, 4x2, 2x4, 4x4, 8x4, 8x2, 2x8, 4x8, 8x8, 16x8, 16x4, 16x2, 2x16, 4x16, 8x16, 16x16, 32x16, 32x8, 32x4, 32x2, 2x32, 4x32, 8x32, 16x32, 32x32, 64x32, 64x16, 64x8, 64x4, 64x2, 2x64, 4x64, 8x64, 16x64, 32x64, 64x64, 128x64, 128x32, 32x128, 64x128, 128x128 등의 MxN 크기를 가질 수 있다. 여기서, M과 N은 양의 정수일 있고, 서로 같거나 서로 다른 값을 가질 수 있다. 또한, M은 S*N의 크기를 가질 수 있다. N은 S*M의 크기를 가질 수 있다. 여기서, S는 양의 정수일 수 있다.
여기서, M은 가로 크기, N은 세로 크기를 의미할 수 있다.
예를 들어, 64x64 크기의 블록의 경우, 블록 내 좌상단 영역에 32x32 크기의 변환을 수행할 수 있고, 이때 32x32 크기의 양자화 행렬을 사용할 수 있다.
또 다른 예로, 64x32 크기의 블록의 경우, 블록 내 좌상단 영역에 32x32 크기의 변환을 수행할 수 있고, 이때 32x32 크기의 양자화 행렬을 사용할 수 있다.
또 다른 예로, 32x64 크기의 블록의 경우, 블록 내 좌상단 영역에 16x32 크기의 변환을 수행할 수 있고, 이때 16x32 크기의 양자화 행렬을 사용할 수 있다.
또 다른 예로, 32x32 크기의 블록의 경우, 블록에 32x32 크기의 변환을 수행할 수 있고, 이때 32x32 크기의 양자화 행렬을 사용할 수 있다.
형태는 블록의 형태, 부블록의 형태, 변환의 형태 중 적어도 하나를 의미할 수 있다.
형태는 정방형 형태 혹은 비정방형 형태일 수 있다.
정방형 형태는 정사각형(square) 형태를 의미할 수 있다.
비정방형 형태는 직사각형(rectangular) 형태를 의미할 수 있다.
변환의 형태는 해당 블록에 사용되는 변환의 형태를 의미할 수 있다. 가로 변환 크기와 세로 변환 크기가 서로 다를 경우, 변환의 형태는 비정방형일 수 있다. 또한, 가로 변환 크기와 세로 변환 크기가 같을 경우, 변환의 형태는 정방형일 수 있다. 변환의 형태는 해당 블록의 형태와 같거나 다를 수 있다.
양자화 행렬의 형태는 해당 블록에 사용되는 양자화 행렬의 형태를 의미할 수 있다. 가로 변환 크기와 세로 변환 크기가 서로 다를 경우, 양자화 행렬의 형태는 비정방형일 수 있다. 또한, 가로 변환 크기와 세로 변환 크기가 같을 경우, 양자화 행렬의 형태는 정방형일 수 있다. 양자화 행렬의 형태는 해당 블록의 형태와 같거나 다를 수 있다. 양자화 행렬의 형태는 변환의 형태와 같거나 다를 수 있다.
예를 들어, 64x64 크기의 정방형 블록의 경우, 블록 내 좌상단 영역에 32x32 크기의 정방형 변환을 수행할 수 있고, 이때 32x32 크기의 정방형 양자화 행렬을 사용할 수 있다.
또 다른 예로, 16x16 크기의 정방형 블록의 경우, 블록에 16x16 크기의 정방형 변환을 수행할 수 있고, 이때 16x16 크기의 정방형 양자화 행렬을 사용할 수 있다.
또 다른 예로, 16x4 크기의 비정방형 블록의 경우, 블록에 16x4 크기의 비정방형 변환을 수행할 수 있고, 이때 16x4 크기의 양자화 행렬을 사용할 수 있다.
또 다른 예로, 2x8 크기의 비정방형 블록의 경우, 블록에 2x8 크기의 변환을 수행할 수 있고, 이때 2x8 크기의 양자화 행렬을 사용할 수 있다.
다음은 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정하는 실시예를 나타낸다. 여기서, 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
블록 혹은 부블록의 가로 크기(W) 혹은 세로 크기(H)가 X보다 작을 경우, 가로 변환 타입(trTypeHor) 혹은 세로 변환 타입(trTypeVer)을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
이때, 제1 변환은 trTypeHor 혹은 trTypeVer가 제1 값인 것을 의미할 수 있다. 여기서, 제1 값은 0일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2 혹은 4일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Y보다 클 경우, 가로 변환 타입 혹은 세로 변환 타입을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
여기서, Y는 양의 정수일 수 있고, 일 예로 16, 32, 혹은 64일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 X보다 크거나 같고 Y보다 작거나 같을 경우, 가로 변환 타입 혹은 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
이때, 제2 변환은 trTypeHor 혹은 trTypeVer가 제2 값인 것을 의미할 수 있다. 여기서, 제2 값은 1일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2 혹은 4일 수 있다. 여기서, Y는 양의 정수일 수 있고, 일 예로 16, 32, 혹은 64일 수 있다.
또한, 블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Z인 경우, 가로 변환 혹은 세로 변환이 수행되지 않을 수 있다.
여기서, Z는 0을 포함한 양의 정수일 수 있고, 일 예로 1일 수 있다.
여기서, 블록에서 분할된 모든 부블록들은 서로 동일한 가로 변환 타입 혹은 서로 동일한 세로 변환 타입을 이용하여 변환을 수행할 수 있다.
또한, 화면 내 예측 모드에 관계없이 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다. 즉, 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 변환 종류는 화면 내 예측 모드에 관계없이 결정될 수 있다. 상기 변환 종류는 적어도 2가지의 변환 종류 중 하나로 선택될 수 있다.
현재 블록이 부블록 분할 모드인 경우, 가로 변환 및 세로 변환 중 적어도 하나에 대한 변환 종류는 화면 내 예측 모드에 관계없이 현재 블록의 가로 크기 또는 세로 크기에 기초하여 결정될 수 있다. 여기서, 부블록 분할 모드는 제1 부블록 분할 모드(ISP 모드) 또는 제2 부블록 분할 모드(SBT 모드)일 수 있다.
표 4의 예와 같이, 블록 혹은 부블록에 대한 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나를 결정할 수 있다.
Figure PCTKR2020016991-appb-T000001
일 예로, 현재 블록이 부블록 분할 모드인 경우, 가로 변환 및 세로 변환 중 적어도 하나에 대한 변환 종류는 화면 내 예측 모드에 관계없이 표 4에 기초하여 결정될 수 있다.
또한, 부호화기/복호화기의 구현 복잡도 감소를 위해, 가로 변환 및 세로 변환은 블록의 가로 크기 및 블록의 세로 크기에 따라 동일한 기준으로 1차원 변환 종류가 결정될 수 있다.
가로 변환 및 세로 변환을 결정하는 조건은 블록의 가로 크기 혹은 블록의 세로 크기와 관계없이 동일할 수 있다. 즉, 가로 변환을 결정하기 위한 조건과 세로 변환을 결정하기 위한 조건은 동일할 수 있다.
상기 조건은 현재 블록의 가로 크기 혹은 세로 크기를 특정 양의 정수와 비교하는 것을 의미할 수 있다.
여기서, 가로 변환 및 세로 변환을 결정하기 위한 조건에 대한 로직(logic)은 서로 공유될 수 있으므로, 부호화기/복호화기의 구현 복잡도를 감소시킬 수 있다.
또한, 표 4의 예와 같이, 연산 복잡도 감소를 위해 현재 블록의 가로 크기와 세로 크기 간의 비교를 수행하지 않고 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 변환 종류가 결정될 수 있다.
후술할 표 5 및 표 6에 비하여 표 4는 현재 블록의 가로 크기와 세로 크기 간의 비교를 수행하지 않고 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 변환 종류를 결정하므로 연산 복잡도가 감소될 수 있다.
다중 변환 선택 인덱스인 mts_idx를 엔트로피 부호화/복호화하여 블록 혹은 부블록의 2차원 변환 조합을 결정할 수 있다. 부호화기 및 복호화기에서 기설정된 2차원 변환 조합 테이블을 이용하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)에 대해 결정할 수 있다. 이때, 2차원 변환 조합은 2차원 변환 조합 테이블 내 각 항목을 의미할 수 있다.
상기 다중 변환 선택 인덱스인 mts_idx는 블록을 부블록으로 분할하지 않을 경우에, 엔트로피 부호화/복호화될 수 있다.
상기 다중 변환 선택 인덱스인 mts_idx는 2차 변환 수행 정보인 lfnst_idx에 기반하여 결정될 수 있다. 즉, 상기 다중 변환 선택 인덱스인 mts_idx는 2차 변환 수행 정보인 lfnst_idx에 기반하여 엔트로피 부호화/복호화될 수 있다.
상기 다중 변환 선택 인덱스인 mts_idx가 비트스트림 내에 존재하지 않을 경우, 다중 변환 선택 인덱스인 mts_idx는 제1 값(예: 0)으로 추론(infer)될 수 있다. 즉, 상기 다중 변환 선택 인덱스인 mts_idx가 엔트로피 부호화/복호화되지 않을 경우, 다중 변환 선택 인덱스인 mts_idx는 제1 값(예: 0)으로 추론(infer)될 수 있다.
일 실시 예에 따르면, 다중 변환 선택 인덱스 mts_idx의 시그널링 여부는 화면 내 예측 명시적 다중 변환 선택 허용 정보 (sps_explicit_mts_intra_enabled_flag) 및 화면 간 예측 명시적 다중 변환 선택 허용 정보 (sps_explicit_mts_inter_enabled_flag) 중 적어도 하나에 따라, 결정될 수 있다. 예를 들어, 현재 블록이 화면 내 예측되는 경우, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 화면 내 예측 블록에 대하여 다중 변환이 허용됨을 나타낼 때, 현재 블록에 대한 다중 변환 선택 인덱스가 시그널링될 수 있다. 반대로 화면 내 예측 명시적 다중 변환 선택 허용 정보가 화면 내 예측 블록에 대하여 다중 변환이 허용되지 않음을 나타낼 때, 현재 블록에 대한 다중 변환 선택 인덱스가 시그널링되지 않을 수 있다.
또한 현재 블록이 화면 간 예측되는 경우, 화면 간 예측 명시적 다중 변환 선택 허용 정보가 화면 간 예측 블록에 대하여 다중 변환이 허용됨을 나타낼 때, 현재 블록에 대한 다중 변환 선택 인덱스가 시그널링될 수 있다. 반대로 화면 간 예측 명시적 다중 변환 선택 허용 정보가 화면 간 예측 블록에 대하여 다중 변환이 허용되지 않음을 나타낼 때, 현재 블록에 대한 다중 변환 선택 인덱스가 시그널링되지 않을 수 있다.
또한 현재 블록이 IBC 모드에 따라 예측되는 경우, 화면 내 예측 명시적 다중 변환 선택 허용 정보 및/또는 화면 간 예측 명시적 다중 변환 선택 허용 정보에 따라 다중 변환 선택 인덱스의 시그널링 여부가 결정될 수 있다. 또는 현재 블록이 IBC 모드에 따라 예측되는 경우, 화면 내 예측 명시적 다중 변환 선택 허용 정보 및 화면 간 예측 명시적 다중 변환 선택 허용 정보에 관계없이, 현재 블록에 대한 다중 변환 선택 인덱스가 시그널링되지 않을 수 있다. 이때, 현재 블록이 IBC 모드에 따라 예측되는 경우, 현재 블록에 대해 2차 변환/역변환이 수행되지 않을 수 있다. 또한, 현재 블록이 IBC 모드 및/또는 화면 간 예측 모드가 아닌 화면 내 예측 모드일 경우, 현재 블록에 대해 2차 변환/역변환이 수행될 수 있다.
표 5의 예와 같이, 블록 혹은 부블록에 대한 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나를 결정할 수 있다. 표 5에 따라, 2차원 변환 조합 테이블을 기설정하고, 다중 변환 선택 인덱스가 지시하는 2차원 변환 조합을 결정할 수 있다.
Figure PCTKR2020016991-appb-T000002
다음은 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정하는 실시예를 나타낸다. 여기서, 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
블록 혹은 부블록의 가로 크기(W) 혹은 세로 크기(H)가 X보다 작을 경우, 가로 변환 타입(trTypeHor) 혹은 세로 변환 타입(trTypeVer)을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
이때, 제1 변환은 trTypeHor 혹은 trTypeVer가 제1 값인 것을 의미할 수 있다. 여기서, 제1 값은 0일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2 혹은 4일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Y보다 클 경우, 가로 변환 타입 혹은 세로 변환 타입을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
여기서, Y는 양의 정수일 수 있고, 일 예로 16, 32, 혹은 64일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 X보다 크거나 같고 Y보다 작거나 같을 경우, 아래의 조건에 따라 가로 변환 타입 혹은 세로 변환 타입을 결정할 수 있다.
분할 방향 정보가 제1 값(0)이고 부블록 위치 정보가 제1 값(0)인 경우, 가로 변환 타입을 DCT-8 기반 정수 변환을 지시하는 제3 변환으로 결정할 수 있고, 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
분할 방향 정보가 제1 값(0)이고 부블록 위치 정보가 제2 값(1)인 경우, 가로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있고, 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
분할 방향 정보가 제2 값(1)이고 부블록 위치 정보가 제1 값(0)인 경우, 가로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있고, 세로 변환 타입을 DCT-8 기반 정수 변환을 지시하는 제3 변환으로 결정할 수 있다.
분할 방향 정보가 제2 값(1)이고 부블록 위치 정보가 제2 값(1)인 경우, 가로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있고, 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
이때, 제2 변환은 trTypeHor 혹은 trTypeVer가 제2 값인 것을 의미할 수 있다. 여기서, 제2 값은 1일 수 있다.
이때, 제3 변환은 trTypeHor 혹은 trTypeVer가 제3 값인 것을 의미할 수 있다. 여기서, 제3 값은 2일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2 혹은 4일 수 있다. 여기서, Y는 양의 정수일 수 있고, 일 예로 16, 32, 혹은 64일 수 있다.
또한, 블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Z인 경우, 가로 변환 혹은 세로 변환이 수행되지 않을 수 있다.
여기서, Z는 0을 포함한 양의 정수일 수 있고, 일 예로 1일 수 있다.
표 6의 예와 같이, 블록 혹은 부블록에 대한 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나를 결정할 수 있다.
Figure PCTKR2020016991-appb-T000003
블록 혹은 부블록의 가로 크기(W) 혹은 세로 크기(H)가 X보다 작을 경우, 가로 변환 타입(trTypeHor) 혹은 세로 변환 타입(trTypeVer)을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
이때, 제1 변환은 trTypeHor 혹은 trTypeVer가 제1 값인 것을 의미할 수 있다. 여기서, 제1 값은 0일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2, 4, 혹은 8일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Y보다 클 경우, 가로 변환 타입 혹은 세로 변환 타입을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
여기서, Y는 양의 정수일 수 있고, 일 예로 8, 16, 32, 혹은 64일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 X보다 크거나 같고 Y보다 작거나 같을 경우, 가로 변환 타입 혹은 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
이때, 제2 변환은 trTypeHor 혹은 trTypeVer가 제2 값인 것을 의미할 수 있다. 여기서, 제2 값은 1일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2, 4, 혹은 8일 수 있다. 여기서, Y는 양의 정수일 수 있고, 일 예로 8, 16, 32, 혹은 64일 수 있다.
또한, 블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Z인 경우, 가로 변환 혹은 세로 변환이 수행되지 않을 수 있다.
여기서, Z는 0을 포함한 양의 정수일 수 있고, 일 예로 1일 수 있다.
여기서, 블록에서 분할된 모든 부블록들은 서로 동일한 가로 변환 타입 혹은 서로 동일한 세로 변환 타입을 이용하여 변환을 수행할 수 있다. 또한, 화면 내 예측 모드에 관계없이 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
표 7의 예와 같이, 블록 혹은 부블록에 대한 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나를 결정할 수 있다.
Figure PCTKR2020016991-appb-T000004
다음은 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정하는 실시예를 나타낸다. 여기서, 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
블록 혹은 부블록의 가로 크기(W) 혹은 세로 크기(H)가 X보다 작을 경우, 가로 변환 타입(trTypeHor) 혹은 세로 변환 타입(trTypeVer)을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
이때, 제1 변환은 trTypeHor 혹은 trTypeVer가 제1 값인 것을 의미할 수 있다. 여기서, 제1 값은 0일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2, 4, 혹은 8일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Y보다 클 경우, 가로 변환 타입 혹은 세로 변환 타입을 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정할 수 있다.
여기서, Y는 양의 정수일 수 있고, 일 예로 8, 16, 32, 혹은 64일 수 있다.
블록 혹은 부블록의 가로 크기 혹은 세로 크기가 X보다 크거나 같고 Y보다 작거나 같을 경우, 가로 변환 타입 혹은 세로 변환 타입을 DST-7 기반 정수 변환을 지시하는 제2 변환으로 결정할 수 있다.
이때, 제2 변환은 trTypeHor 혹은 trTypeVer가 제2 값인 것을 의미할 수 있다. 여기서, 제2 값은 1일 수 있다.
여기서, X는 양의 정수일 수 있고, 일 예로 2, 4, 혹은 8일 수 있다. 여기서, Y는 양의 정수일 수 있고, 일 예로 8, 16, 32, 혹은 64일 수 있다.
또한, 블록 혹은 부블록의 가로 크기 혹은 세로 크기가 Z인 경우, 가로 변환 혹은 세로 변환이 수행되지 않을 수 있다.
여기서, Z는 0을 포함한 양의 정수일 수 있고, 일 예로 1일 수 있다.
여기서, 블록에서 분할된 모든 부블록들은 서로 동일한 가로 변환 타입 혹은 서로 동일한 세로 변환 타입을 이용하여 변환을 수행할 수 있다. 또한, 화면 내 예측 모드에 관계없이 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
표 8의 예와 같이, 블록 혹은 부블록에 대한 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나를 결정할 수 있다.
Figure PCTKR2020016991-appb-T000005
다음은 블록 혹은 부블록에 사용되는 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 결정하는 실시예를 나타낸다. 여기서, 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다
블록 혹은 부블록의 예측 모드가 화면 내 예측 모드 혹은 화면 내 블록 복사 예측 모드인 경우, 상기 실시예 중 적어도 하나에 기반하여 블록 혹은 부블록에 사용되는 가로 변환 및 세로 변환 중 적어도 하나에 대한 1차원 변환 종류를 결정할 수 있다.
블록 혹은 부블록에 대한 다양한 변환/역변환 종류 결정 방법을 수행하고, 변환 수행 후 혹은 역변환 수행 전 아래의 스캔 방법들 중 적어도 하나를 수행할 수 있다.
부호화기/복호화기에서 상기 변환 및 양자화 중 적어도 하나가 수행된 양자화된 계수 레벨 혹은 양자화된 레벨에 대해 아래의 스캔 방법들 중 적어도 하나를 수행할 수 있다.
여기서, 양자화된 계수 레벨은 잔차 블록에 변환 및 양자화가 수행되어 생성된 결과를 의미할 수 있다. 또한, 양자화된 레벨은 잔차 블록에 양자화가 수행되어 생성된 결과를 의미할 수 있다.
또한, 양자화된 계수 레벨과 양자화된 레벨은 서로 동일한 의미를 가질 수 있고, 변환 계수와 서로 동일한 의미를 가질 수 있다. 즉, 상기 양자화된 계수 레벨, 양자화된 레벨, 변환 계수는 잔차 블록이 엔트로피 부호화/복호화될 때의 대상을 의미할 수 있다.
도 14의 예와 같이, 대각 스캔(diagonal scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 대각 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다.
스캔 방향이 좌하단에서 우상단일 경우 우상단 대각 스캔(up-right diagonal scan)이라고 할 수 있다. 또한, 스캔 방향이 우상단에서 좌하단일 경우 좌하단 대각 스캔(down-left diagonal scan)이라고 할 수 있다.
도 14의 예는 대각 스캔 중 우상단 스캔을 나타낸다.
도 15의 예와 같이, 수평 스캔(horizontal scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 수평 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다.
이때, 수평 스캔은 첫번째 행에 해당하는 계수들을 우선적으로 스캔하는 방식일 수 있다.
도 16의 예와 같이, 수직 스캔(vertical scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 수직 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다.
이때, 수직 스캔은 첫번째 열에 해당하는 계수들을 우선적으로 스캔하는 방식일 수 있다.
도 17의 예와 같이, 블록 기반 대각 스캔(block-based diagonal scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 블록 기반 대각 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹(coefficient group)과 동일한 크기일 수 있다.
도 17의 예는 블록 기반 대각 스캔 중 블록 기반 우상단 스캔을 나타낸다.
이때, 블록은 특정 블록 크기에서 분할된 하위 블록인 부블록(sub-block)을 의미할 수 있다. 만약, 상기 블록 기반 스캔이 사용될 경우 특정 블록 크기 내의 부블록들 간에도 블록 내의 스캔 방식과 동일한 스캔 방식을 이용해서 부블록들을 스캔할 수 있다.
도 17의 예와 같이, 블록 기반 대각 스캔이 사용된 경우, 8x8 크기의 블록을 4x4 크기의 부블록으로 분할한 뒤, 4x4 크기의 부블록 간에 대각 스캔을 이용해서 스캔하며, 부블록 내의 계수들도 대각 스캔을 이용해서 스캔할 수 있다.
도 18의 예와 같이, 블록 기반 수평 스캔(block-based horizontal scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 블록 기반 수평 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다. 이때, 블록 크기는 4x4일 수가 있으며, 첫번째 행에 해당하는 블록들을 우선적으로 스캔하는 방식일 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹과 동일한 크기일 수 있다.
이때, 블록 기반 수평 스캔은 첫번째 행에 해당하는 블록들을 우선적으로 스캔하는 방식일 수 있다.
도 19의 예와 같이, 블록 기반 수직 스캔(block-based vertical scan)을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 블록 기반 수직 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨로 정렬할 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹과 동일한 크기일 수 있다.
이때, 블록 기반 수직 스캔은 첫번째 열에 해당하는 블록들을 우선적으로 스캔하는 방식일 수 있다.
도 14 내지 도 19의 예와 같이, (a)에 해당하는 스캔은 JxK 블록을 위한 JxK 크기의 잔차 블록에 사용할 수 있으며, (b)에 해당하는 스캔은 8x8/16x16/32x32/64x64 등의 적어도 하나의 블록을 위한 MxN 크기 이상의 잔차 블록에 사용할 수 있거나, 혹은 MxN 크기의 잔차 블록에 사용할 수 있다. 상기 J, K, M, N은 양의 정수일 수 있다. 또한, J 및 K는 각각 M 및 N보다 작을 수 있다. 또한, JxK는 4x4일 수 있고, MxN은 8x8일 수 있다.
도 14 내지 도 19의 예와 같이, 최대 8x8 크기에 해당하는 스캔 방법만 나타내었으나, 8x8보다 큰 크기에 해당하는 스캔 방법에도 8x8 크기에 해당하는 스캔 방법을 적용할 수 있으며, 정방형 (square) 형태의 잔차 블록뿐만 아니라 비정방형(non-square) 형태의 잔차 블록에도 상기 스캔 방법을 적용할 수 있다.
부호화기에서 정방형/비정방형 형태의 2차원 잔차 블록 내의 양자화된 계수 레벨들에 대해서 1차원 형태의 계수 레벨 배열로 정렬하기 위해 잔차 블록 내의 양자화된 계수 레벨들에 스캔을 수행할 수 있다. 또한, 복호화기에서 1차원 형태의 복원된 계수 레벨 배열을 정방형/비정방형 형태의 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬하기 위해 계수 레벨에 스캔을 수행할 수 있다.
도 20의 예와 같이, 양자화된 계수 레벨들 중 적어도 하나를 스캔할 수 있다.
예를 들어, 도 20 (a)의 예와 같이, 대각 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 대각 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 대각 스캔의 방향은 도 20 (a)의 예와 같이, 좌하단에서 우상단일 수 있으며, 우상단에서 좌하단일 수가 있다.
스캔 방향이 좌하단에서 우상단일 경우 우상단 대각 스캔이라고 할 수 있다. 또한, 스캔 방향이 우상단에서 좌하단일 경우 좌하단 대각 스캔이라고 할 수 있다.
도 20 (a)의 예는 대각 스캔 중 우상단 스캔의 예를 나타낸다.
또 다른 예로, 도 20 (b)의 예와 같이, 수직 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 수직 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 수직 스캔은 첫번째 열에 해당하는 계수들을 우선적으로 스캔하는 방식일 수 있다.
또 다른 예로, 도 20 (c)의 예와 같이, 수평 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 수평 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 수평 스캔은 첫번째 행에 해당하는 계수들을 우선적으로 스캔하는 방식일 수 있다.
또 다른 예로, 도 20 (d)의 예와 같이, 블록 기반 대각 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 블록 기반 대각 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹과 동일한 크기일 수 있다.
대각 스캔의 방향은 도 20 (d)의 예와 같이 좌하단에서 우상단일 수 있다. 또한, 대각 스캔의 방향은 우상단에서 좌하단일 수가 있다.
도 20 (d)의 예는 전체 8x4 블록에 대해 블록 기반 대각 스캔 중 블록 기반 우상단 스캔의 예를 나타낸다.
또 다른 예로, 도 20 (e)의 예와 같이, 전체 8x4 블록에 대해 블록 기반 수직 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 전체 8x4 블록에 대해 블록 기반 수직 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹과 동일한 크기일 수 있다.
이때, 블록 기반 수직 스캔은 첫번째 열에 해당하는 블록들을 우선적으로 스캔하는 방식일 수 있다.
또 다른 예로, 도 20 (f)의 예와 같이, 전체 4x8 블록에 대해 블록 기반 수평 스캔을 사용해서 2차원 잔차 블록 내의 양자화된 계수 레벨들을 1차원 형태의 계수 레벨 배열로 정렬할 수 있다. 또한, 전체 4x8 블록에 대해 블록 기반 수평 스캔을 사용해서 1차원 형태의 복원된 계수 레벨 배열을 2차원 잔차 블록 내의 양자화된 계수 레벨들로 정렬할 수 있다.
이때, 블록 크기는 MxN일 수가 있다. 여기서, M과 N 중 적어도 하나는 양의 정수일 수 있고, 4일 수 있다. 또한, 블록 크기는 변환 계수 부호화/복호화에 사용하는 계수 그룹과 동일한 크기일 수 있다.
이때, 블록 기반 수평 스캔은 첫번째 행에 해당하는 블록들을 우선적으로 스캔하는 방식일 수 있다.
상기 예와 같이, 잔차 블록이 비정방형 형태를 가질 경우, 해당 잔차 블록의 스캔 시 비정방형 형태로 스캔을 수행하거나, 해당 잔차 블록을 특정 정방형 블록 단위인 MxN 크기로 분할하여 특정 정방형 블록 단위 별 스캔 및 특정 정방형 블록 단위 내 스캔을 수행할 수 있다. 여기서, M, N은 양의 정수일 수 있고, 서로 같은 값 혹은 서로 다른 값을 가질 수 있다.
도 21은 다양한 방향을 가지는 방향성 화면 내 예측 모드 (0, 1을 제외한 -14 ~ 80), 방향성을 가지지 않는 비방향성 화면 내 예측 모드들인 Planar(0), DC(1)에 대한 화면 내 예측 모드 값의 일 예를 나타낸다.
표 9은 화면 내 예측 모드에 대응하는 화면 내 예측 모드 값을 나타낸다.
Figure PCTKR2020016991-appb-T000006
도 22 내지 도 26은 본 개시의 일 실시예에 따른 변환을 이용한 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체를 구현하기 위한 부호화 과정(encoding process) 혹은 복호화 과정(decoding process)의 예이다.
도 22를 참고하면, 파라미터 세트 중 적어도 하나에서 시그널링되는 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하는 것을 지시하고, 아래와 같은 조건 중 적어도 하나를 만족하는 경우, 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제1 값(일 예로 1)으로 설정될 수 있다.
- 현재 블록이 ISP 모드임(IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT)
- 현재 블록이 SBT 모드이고, 현재 블록의 가로 크기 및 세로 크기 중 큰 값이 32보다 작거나 같음(cu_sbt_flag is equal to 1 and Max( nTbW, nTbH ) is less than or equal to 32)
- 화면 내 예측 명시적 다중 변환 선택 허용 정보 및 화면 간 예측 명시적 다중 변환 선택 허용 정보가 모두 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드임 (sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are both equal to 0 and CuPredMode[ xTbY ][ yTbY ] is equal to MODE_INTRA)
상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 경우(implicitMtsEnabled=1), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 아래와 같이 선택될 수 있다.
- ISP 모드인 경우, 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- 화면 내 예측 명시적 다중 변환 선택 허용 정보 및 화면 간 예측 명시적 다중 변환 선택 허용 정보가 모두 명시적 다중 변환 선택을 허용하지 않음을 지시하는 경우 (sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are both equal to 0), 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- SBT 모드인 경우, 분할 방향 정보 및 부블록 위치 정보(일 예로, 도 26)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
반대로, 상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 않는 경우(implicitMtsEnabled=0), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 시그널링되는 다중 변환 선택 정보(tu_mts_idx) 및 도 25의 표에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
한편, 현재 블록이 색차 성분인 경우(cIdx is greater than 0), 상기에서 유도된 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다.
도 23을 참고하면, 파라미터 세트 중 적어도 하나에서 시그널링되는 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하는 것을 지시하고, 아래와 같은 조건 중 적어도 하나를 만족하는 경우, 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제1 값(일 예로 1)으로 설정될 수 있다.
- 현재 블록이 ISP 모드임(IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT)
- 현재 블록이 SBT 모드이고, 현재 블록의 가로 크기 및 세로 크기 중 큰 값이 32보다 작거나 같음(cu_sbt_flag is equal to 1 and Max( nTbW, nTbH ) is less than or equal to 32)
- 화면 내 예측 명시적 다중 변환 선택 허용 정보 및 화면 간 예측 명시적 다중 변환 선택 허용 정보가 모두 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드임 (sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are both equal to 0 and CuPredMode[ xTbY ][ yTbY ] is equal to MODE_INTRA)
상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 경우(implicitMtsEnabled=1), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 아래와 같이 선택될 수 있다.
- ISP 모드인 경우, 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- 화면 내 예측 명시적 다중 변환 선택 허용 정보 및 화면 간 예측 명시적 다중 변환 선택 허용 정보가 모두 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드임을 지시하는 경우 (sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are both equal to 0 and CuPredMode[ xTbY ][ yTbY ] is equal to MODE_INTRA), 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- SBT 모드인 경우, 분할 방향 정보 및 부블록 위치 정보(일 예로, 도 26)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
반대로, 상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 않는 경우(implicitMtsEnabled=0), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 시그널링되는 다중 변환 선택 정보(tu_mts_idx) 및 도 25의 표에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
한편, 현재 블록이 색차 성분인 경우(cIdx is greater than 0), 상기에서 유도된 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다.
일 실시 예에 따르면, 도 22 및 도 23과 달리, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드를 나타내는 경우 (sps_explicit_mts_intra_enabled_flag is equal to 0 and CuPredMode[ xTbY ][ yTbY ] is equal to MODE_INTRA), 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제2 값(예: 1)으로 설정될 수 있다.
일 실시 예에 따르면, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 변환 행렬 색인이 2차 변환/역변환이 현재 블록에 적용되지 않음을 나타내고, 매트릭스 기반 화면 내 예측 모드 사용 여부 정보가 매트릭스 기반 화면 내 예측 모드가 현재 블록에 적용되지 않음을 나타낼 때 (sps_explicit_mts_intra_enabled_flag is equal to 0, lfnst_idx[x0][y0] is equal to 0 and intra_mip_flag[ x0 ][ y0 ] is equal to 0), 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제2 값(예: 1)으로 설정될 수 있다.
일 실시 예에 따르면, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드를 나타내고, 변환 행렬 색인이 2차 변환/역변환이 현재 블록에 적용되지 않음을 나타내고, 매트릭스 기반 화면 내 예측 모드 사용 여부 정보가 매트릭스 기반 화면 내 예측 모드가 현재 블록에 적용되지 않음을 나타낼 때 (sps_explicit_mts_intra_enabled_flag is equal to 0, CuPredMode[ 0 ][ xTbY ][ yTbY ] is equal to MODE_INTRA, lfnst_idx[x0][y0] is equal to 0 and intra_mip_flag[ x0 ][ y0 ] is equal to 0), 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제2 값(예: 1)으로 설정될 수 있다.
상기 매트릭스 기반 화면 내 예측 모드 사용 여부 정보는 엔트로피 부호화/복호화될 수 있다.
다른 실시예에 따르면, 파라미터 세트 중 적어도 하나에서 시그널링되는 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하는 것을 지시하고, 아래와 같은 조건 중 적어도 하나를 만족하는 경우, 묵시적 다중 변환 선택 정보(implicitMtsEnabled)는 묵시적 다중 변환 선택을 지시하는 제1 값(일 예로 1)으로 설정될 수 있다.
- 현재 블록이 ISP 모드임
- 현재 블록이 SBT 모드이고, 현재 블록의 가로 크기 및 세로 크기 중 큰 값이 32보다 작거나 같음
- 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드이며, 현재 블록에 2차 역변환이 수행되지 않고, 매트릭스 기반 화면 내 예측 모드가 아님.
상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 경우(implicitMtsEnabled=1), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 아래와 같이 선택될 수 있다. 상기 실시예는 전술한 도 22 내지 23의 실시예와 달리 SBT 모드인지만 판단하여 가로 변환 타입 및 세로 변환 타입을 선택하므로 연산 복잡도가 감소될 수 있다.
- SBT 모드인 경우, 분할 방향 정보 및 부블록 위치 정보(일 예로, 도 26)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- SBT 모드가 아닌 경우(ISP 모드인 경우), 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
- SBT 모드가 아닌 경우(화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드이고, 현재 블록에 2차 역변환이 수행되지 않고, 매트릭스 기반 화면 내 예측 모드가 아닌 경우), 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
여기서, SBT 모드가 아닌 경우(ISP 모드인 경우 혹은 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드이고, 현재 블록에 2차 역변환이 수행되지 않고, 매트릭스 기반 화면 내 예측 모드가 아닌 경우)는 2가지의 경우로 나뉠 수가 있으나, 상기 2가지의 경우에서 가로 변환 타입 및 세로 변환 타입은 동일한 방법으로 결정될 수 있다.
즉, 1) ISP 모드인 경우 및 2) 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드이고, 현재 블록에 2차 역변환이 수행되지 않고, 매트릭스 기반 화면 내 예측 모드가 아닌 경우의 2가지 경우에서, 현재 블록의 가로 크기 및 세로 크기(일 예로, 상술한 표 4)에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택될 수 있다.
반대로, 상기에서 유도된 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 않는 경우(implicitMtsEnabled=0), 시그널링되는 다중 변환 선택 정보 및 도 25의 표에 기초하여 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)이 선택됨.
한편, 현재 블록이 색차 성분인 경우, 상기에서 유도된 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다. 또한, 현재 블록이 ISP 모드이고 현재 블록에 2차 역변환이 수행되는 경우, 상기에서 유도된 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다.
또한, 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하지 않는 것을 지시하는 경우, 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다.
또한, 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하지 않는 것을 지시하고 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 않는 경우(implicitMtsEnabled=0), 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer)은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 선택될 수 있다.
상기 예에서, 다중 변환 선택 허용 정보(sps_mts_enabled_flag)가 다중 변환 선택을 허용하는 것을 지시할 경우, 다중 변환 선택 허용 정보는 제1 값(일 예로 1)으로 설정될 수 있다.
상기 예에서, 묵시적 다중 변환 선택 정보(implicitMtsEnabled)가 묵시적 다중 변환 선택을 지시할 경우, 묵시적 다중 변환 선택 정보는 제1 값(일 예로 1)으로 설정될 수 있다. 또한, 묵시적 다중 변환 선택 정보(implicitMtsEnabled)가 묵시적 다중 변환 선택을 지시하지 않을 경우, 묵시적 다중 변환 선택 정보는 제2 값(일 예로 0)으로 설정될 수 있다.
상기 예에서, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용함을 지시할 경우, 화면 내 예측 명시적 다중 변환 선택 허용 정보는 제1 값(일 예로 1)으로 설정될 수 있다. 또한, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시할 경우, 화면 내 예측 명시적 다중 변환 선택 허용 정보는 제2 값(일 예로 0)으로 설정될 수 있다.
상기 예에서, 화면 간 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용함을 지시할 경우, 화면 간 예측 명시적 다중 변환 선택 허용 정보는 제1 값(일 예로 1)으로 설정될 수 있다. 또한, 화면 간 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시할 경우, 화면 간 예측 명시적 다중 변환 선택 허용 정보는 제2 값(일 예로 0)으로 설정될 수 있다.
일 예로, 현재 블록이 ISP(Intra Sub-block Partitions) 모드인 경우, 현재 블록의 화면 내 예측 모드와 관계없이 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나에 기초하여 수행될 수 있다. 구체적으로, 상술한 표 4의 예와 같이 가로 변환 타입 및 세로 변환 타입을 결정할 수 있다.
일 예로, 현재 블록이 ISP(Intra Sub-block Partitions) 모드인 경우, 묵시적 다중 변환 선택 정보는 묵시적 다중 변환 선택을 지시하는 값으로 설정될 수 있다.
또한, 화면 내 예측 명시적 다중 변환 선택 허용 정보가 명시적 다중 변환 선택을 허용하지 않음을 지시하고, 현재 블록의 예측 모드가 화면 내 예측 모드이며, 현재 블록에 2차 역변환이 수행되지 않고, 현재 블록이 매트릭스 기반 화면내 예측 모드가 아닌 경우, 묵시적 다중 변환 선택 정보는 묵시적 다중 변환 선택을 지시하는 값으로 설정될 수 있다.
여기서, 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하는 경우, 현재 블록이 SBT(Sub-Block Transform) 모드인지 여부에 기초하여 가로 변환 타입 및 상기 세로 변환 타입이 결정될 수 있다.
구체적으로, 묵시적 다중 변환 선택 정보가 묵시적 다중 변환 선택을 지시하고, 현재 블록이 SBT(Sub-Block Transform) 모드가 아닌 경우, 현재 블록의 화면 내 예측 모드와 관계없이 가로 변환 타입 및 세로 변환 타입이 결정될 수 있다. 구체적으로, 상술한 표 4의 예와 같이 가로 변환 타입 및 세로 변환 타입을 결정할 수 있다.
현재 블록이 ISP(Intra Sub-block Partitions) 모드이고, 2차 역변환이 수행되는 경우, 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입 및 세로 변환 타입은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정될 수 있다.
현재 블록이 색차 성분인 경우, 묵시적 다중 변환 선택 정보와 관계없이 가로 변환 타입 및 세로 변환 타입은 DCT-2 기반 정수 변환을 지시하는 제1 변환으로 결정될 수 있다.
부호화기에서는 영상의 주관적/객관적 화질을 향상시키기 위해, 잔여 블록에 1차 변환을 수행하여 1차 변환 계수를 생성하고, 1차 변환 계수에 2차 변환을 수행하여, 2차 변환 계수를 양자화하여 양자화된 계수 레벨을 생성하고, 양자화된 계수 레벨을 엔트로피 부호화할 수 있다.
복호화기에서는 양자화된 계수 레벨을 엔트로피 복호화하고, 양자화된 계수 레벨을 역양자화하여 2차 변환 계수를 생성하고, 2차 변환 계수를 2차 역변환하여 1차 변환 계수를 생성하고, 1차 변환 계수를 1차 역변환하여 복원된 잔여 블록을 생성할 수 있다.
도 27의 예와 같이, 2차 변환은 부호화기에서 1차 변환 및 양자화 사이에서 수행될 수 있다. 그리고, 2차 역변환은 복호화기에서 역양자화와 1차 역변환 사이에서 수행될 수 있다. 이때, 2차 변환은 감소된 2차 변환(reduced secondary transform) 혹은 저주파수 비분리 변환(LFNST; low-frequency non-separable transform)일 수 있다.
1차/2차 변환 및 역변환으로 어떤 변환을 사용한지에 대한 변환 행렬 세트 정보(색인) 및 변환 행렬 색인 중 적어도 하나가 명시적으로 엔트로피 부호화/복호화될 수 있다. 변환 행렬 세트 정보 및 상기 변환 행렬 색인은 2차 변환 색인 정보에 포함될 수 있다. 또는, 변환 행렬 색인은 2차 변환 색인 정보를 의미할 수 있다.
또한, 1차/2차 변환 및 역변환으로 어떤 변환을 사용한지에 대한 변환 행렬 세트 정보 및/또는 변환 행렬 색인은 엔트로피 부호화/복호화되지 않을 수 있다. 대신 변환 행렬 세트 정보 및/또는 변환 행렬 색인은 부호화 파라미터 중 적어도 하나에 기반하여 암묵적으로 결정될 수 있다.
아래는 본 개시에서 1차/2차 변환 및 역변환 중 적어도 하나를 수행하기 위한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체에 대한 실시예를 나타낸다.
본 명세서에서 AxB의 행렬의 경우, 특별한 언급이 없는 한 A 열 및 B 행을 가지는 행렬을 의미할 수 있다. 또한, 특수한 경우, B 열 및 A 행을 가지는 행렬을 의미할 수 있다.
상기 비분리 변환은 아래와 같은 입력 샘플들에 수행되어 출력 샘플들을 생성할 수 있다.
부호화기에서는 입력 샘플들은 1차 변환 계수가 될 수 있고, 복호화기에서는 입력 샘플들은 역양자화된 2차 변환 계수일 수 있다.
4x4 입력 샘플들의 예로, 입력 샘플들은 아래 [수학식 5]과 같이 2차원 행렬 형태로 표현될 수 있다.
Figure PCTKR2020016991-appb-M000005
상기 2차원 행렬 형태의 4x4 입력 샘플들은 아래 [수학식 6]와 같이 1차원 벡터 형태로 표현될 수 있다.
Figure PCTKR2020016991-appb-M000006
래스터 스캔(raster scan), 수평 스캔(horizontal scan), 수직 스캔(vertical scan), 대각 스캔(우상단 대각 스캔(up-right diagonal scan) 혹은 좌하단 대각 스캔(down-left diagonal scan)), 블록 기반 대각 스캔(block-based diagonal scan), 블록 기반 수평 스캔(block-based horizontal scan), 블록 기반 수직 스캔(block-based vertical scan) 중 적어도 하나를 이용하여 상기 2차원 행렬 형태의 4x4 입력 샘플들은 1차원 벡터 형태로 표현될 수 있다.
비분리 변환은 아래 수학식 7과 같이 수행될 수 있다. 여기서, F는 부호화기에서는 2차 변환된 계수 벡터를 의미할 수 있다. 그리고, 복호화기에서는 1차원 변환 계수 벡터를 의미할 수 있다. T는 4x4 입력 샘플에 사용되는 16x16 크기의 2차 변환 행렬의 예를 의미할 수 있다.
Figure PCTKR2020016991-appb-M000007
16x1 형태의 F는 래스터 스캔(raster scan), 수평 스캔(horizontal scan), 수직 스캔(vertical scan), 대각 스캔(우상단 대각 스캔(up-right diagonal scan) 혹은 좌하단 대각 스캔(down-left diagonal scan)), 블록 기반 대각 스캔(block-based diagonal scan), 블록 기반 수평 스캔(block-based horizontal scan), 블록 기반 수직 스캔(block-based vertical scan) 중 적어도 하나를 이용하여 4x4 출력 샘플들로 구성될 수 있다.
2차 변환/역변환은 비분리 변환을 수행할 때 행렬 곱(matrix multiplication)으로 계산될 수 있다.
계산 복잡도 감소 및 변환 행렬을 저장하는데 필요한 메모리를 감소시키기 위해서, 변환 행렬의 차원(dimension)이 감소될 수 있다. 감소된 2차 변환/역변환이 변환/역변환 과정에서 수행될 수 있다.
감소된 2차 변환은 N차원의 벡터를 R차원의 벡터로 매핑하는 과정일 수 있다. 여기서, 2차 변환에 대한 N차원의 벡터는 입력 샘플들을 의미할 수 있다. 그리고, R차원의 벡터는 출력 샘플들을 의미할 수 있다. 여기서, N과 R은 양의 정수일 수 있고, 상기 감소된 2차 변환에서는 R이 N보다 작을 수 있다.
N/R은 감소 인자(reduction factor)를 의미할 수 있다. 4x4 크기의 감소된 2차 변환의 경우, 감소 인자는 1, 2, 혹은 4일 수 있다. 또한, 8x8 크기의 감소된 2차 변환의 경우, 감소 인자는 2, 3, 4, 6, 혹은 8일 수 있다.
감소된 2차 변환에서는 NxN 변환 행렬 대신 RxN 변환 행렬이 도 28의 예와 같이 사용될 수 있다. 또한, 감소된 2차 역변환에서는 NxN 변환 행렬 대신 NxR 변환 행렬이 사용될 수 있다. 여기서, RxN 변환 행렬은 N 열 및 R 행을 가지는 행렬을 의미할 수 있다. 또한, 여기서, NxR 변환 행렬은 R 열 및 N 행을 가지는 행렬을 의미할 수 있다.
여기서, 변환 행렬의 R 행은 N 차원을 가지는 R 기저 벡터를 의미할 수 있다. 상기 감소된 2차 변환의 역변환인 감소된 2차 역변환은 감소된 2차 변환의 전치(transpose)된 형태일 수 있다.
도 29의 예와 같이, 부호화기/복호화기에서 2차 변환/역변환을 수행할 수 있다.
예를 들어, 특정 크기의 변환 행렬이 감소된 2차 변환/역변환에 사용될 수 있다.
DxD 크기의 감소된 2차 변환의 경우, CxA 혹은 CxB 크기의 변환 행렬이 사용될 수 있다.
CxA 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, CxA 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 변환의 경우 AxA 크기의 변환 행렬이 CxB 크기로 감소되어, CxB 크기의 변환 행렬이 사용될 수 있다.
CxB 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 우하단 ExE 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, CxB 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 역변환의 경우, AxC 혹은 BxC 크기의 변환 행렬이 사용될 수 있다.
AxC 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함되는 역양자화된 2차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, AxC 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 역변환의 경우 AxA 크기의 변환 행렬이 BxC 크기로 감소되어, BxC 크기의 변환 행렬이 사용될 수 있다.
BxC 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함되는 역양자화된 2차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, BxC 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 우하단 ExE 영역을 제외한 나머지 영역에 포함될 수 있다.
상기 A, B, C, D, E는 양의 정수일 수 있고, 예를 들어 A는 64, B는 48, C는 16, D는 8, E는 4일 수 있다.
여기서, C는 A 혹은 B보다 작거나 같을 수 있다.
또한, B는 D * D인 값보다 작거나 같을 수 있다.
또한, C는 E * E인 값일 수 있다.
또한, E는 D보다 작거나 같을 수 있다.
또 다른 예로, 특정 크기의 변환 행렬이 감소된 2차 변환/역변환에 사용될 수 있다.
DxD 크기의 감소된 2차 변환의 경우, CxA 혹은 CxB 크기의 변환 행렬이 사용될 수 있다.
CxA 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, CxA 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 변환의 경우 AxA 크기의 변환 행렬이 CxB 크기로 감소되어, CxB 크기의 변환 행렬이 사용될 수 있다.
CxB 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 우하단 DxE 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, CxB 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 역변환의 경우, AxC 혹은 BxC 크기의 변환 행렬이 사용될 수 있다.
AxC 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함되는 역양자화된 2차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, AxC 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역에 포함될 수 있다.
DxD 크기의 감소된 2차 역변환의 경우 AxA 크기의 변환 행렬이 BxC 크기로 감소되어, BxC 크기의 변환 행렬이 사용될 수 있다.
BxC 변환 행렬이 사용될 경우, 블록에서 좌상단 DxD 영역 내 좌상단 ExE 영역에 포함되는 역양자화된 2차 변환 계수들 중 적어도 하나가 입력 샘플로 사용될 수 있다.
또한, BxC 변환 행렬이 사용될 경우, 출력 샘플은 블록에서 좌상단 DxD 영역 내 우하단 DxE 영역을 제외한 나머지 영역에 포함될 수 있다.
상기 A, B, C, D, E는 양의 정수일 수 있고, 예를 들어 A는 64, B는 32, C는 16, D는 8, E는 4일 수 있다.
여기서, C는 A 혹은 B보다 작거나 같을 수 있다.
또한, B는 D * D인 값보다 작거나 같을 수 있다.
또한, C는 E * E인 값일 수 있다.
또한, E는 D보다 작거나 같을 수 있다.
예를 들어, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 DxD인 경우, 감소된 2차 변환으로 CxB 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 BxC 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 DxE 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 DxE 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 CxD 혹은 DxC인 경우, 감소된 2차 변환으로 BxB 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 BxB 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 NxD 혹은 DxN인 경우, 감소된 2차 변환으로 BxB 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 BxB 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 B 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 2개의 DxD 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 2개의 DxD 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 2개의 DxD 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 2개의 DxD 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 CxC인 경우, 감소된 2차 변환으로 CxA 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 AxC 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 CxC 영역 내 우하단 DxD 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 DxE 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 DxE 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 CxC 영역 내 우하단 DxD 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 CxC 보다 클 경우, 감소된 2차 변환으로 BxA 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 AxB 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 CxC 영역 내 우하단 DxD 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 DxD 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 CxC 영역 내 우하단 DxD 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
상기 A, B, C, D, E는 양의 정수일 수 있고, 예를 들어 A는 48, B는 16, C는 8, D는 4, E는 2일 수 있다.
여기서, C는 A 혹은 B보다 작거나 같을 수 있다.
또한, B는 D * D인 값보다 작거나 같을 수 있다.
또한, C는 D * E인 값일 수 있다.
또한, E는 D보다 작거나 같을 수 있다.
또 다른 예로, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 4x4인 경우, 감소된 2차 변환으로 8x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x4 혹은 4x8인 경우, 감소된 2차 변환으로 16x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x16 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 Nx4 혹은 4xN인 경우, 감소된 2차 변환으로 16x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x16 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 16 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8인 경우, 감소된 2차 변환으로 8x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8 보다 클 경우, 감소된 2차 변환으로 16x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x16 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 4x4인 경우, 감소된 2차 변환으로 8x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 Nx4 혹은 4xN인 경우, 감소된 2차 변환으로 16x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x16 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 8 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8인 경우, 감소된 2차 변환으로 8x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8 보다 클 경우, 감소된 2차 변환으로 16x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x16 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 4x4인 경우, 현재 블록의 크기가 8x4 혹은 4x8인 경우, 혹은 현재 블록의 크기가 Nx4 혹은 4xN인 경우, 감소된 2차 변환으로 8x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x8 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 16 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역 혹은 2x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역 혹은 2x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8인 경우, 감소된 2차 변환으로 8x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8 보다 클 경우, 감소된 2차 변환으로 16x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x16 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 4x4인 경우, 감소된 2차 변환으로 8x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x4 혹은 4x8인 경우, 감소된 2차 변환으로 16x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x16 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 Nx4 혹은 4xN인 경우, 감소된 2차 변환으로 16x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x16 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 16 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 2개의 4x4 영역 중 적어도 하나에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8인 경우 혹은 현재 블록의 크기가 8x8 보다 클 경우, 감소된 2차 변환으로 8x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기에 따라 사용되는 감소된 2차 변환, 감소된 2차 역변환, 입력 샘플 영역, 출력 샘플 영역 중 적어도 하나가 상이할 수 있다.
예를 들어, 현재 블록의 크기가 4x4인 경우, 현재 블록의 크기가 8x4 혹은 4x8인 경우, 혹은 현재 블록의 크기가 Nx4 혹은 4xN인 경우, 감소된 2차 변환으로 8x16 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 16x8 크기의 변환 행렬이 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 16 이상일 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역 혹은 2x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역 혹은 2x4 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 4x4 영역에 포함되는 1차 변환 계수들 중 적어도 하나
또 다른 예로, 현재 블록의 크기가 8x8인 경우 혹은 현재 블록의 크기가 8x8 보다 클 경우, 감소된 2차 변환으로 8x48 크기의 변환 행렬이 사용될 수 있고, 감소된 2차 역변환으로 48x8 크기의 변환 행렬이 사용될 수 있다. 감소된 2차 변환/역변환의 입력 샘플 및 출력 샘플의 일 실시 예는 아래와 같다.
- 감소된 2차 변환의 입력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
- 감소된 2차 변환의 출력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 입력 샘플: 블록에서 좌상단 4x2 영역에 포함되는 2차 변환 계수들 중 적어도 하나
- 감소된 2차 역변환의 출력 샘플: 블록에서 좌상단 8x8 영역 내 우하단 4x4 영역을 제외한 나머지 영역에 포함되는 1차 변환 계수들 중 적어도 하나
감소된 2차 변환 행렬로 총 J개의 변환 행렬 세트 및 변환 행렬 세트 당 총 K개의 비분리 변환 행렬을 가질 수 있다. 여기서, J와 K는 양의 정수일 수 있고, 예를 들어 J는 4, K는 2일 수 있다.
현재 블록에 대한 변환 행렬 세트 색인 lfnstTrSetIdx은 CU, PU, TU, CB, PB, 및 TB 중 적어도 하나의 단위에서 엔트로피 부호화/복호화될 수 있다. 이때, 복호화기에서는 엔트로피 복호화된 변환 행렬 세트 색인 lfnstTrSetIdx을 이용하여 변환 행렬 세트가 결정될 수 있다.
현재 블록의 화면 내 예측 모드(intra prediction mode)에 따라 변환 행렬 세트가 결정될 수 있다. 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 따라 변환 행렬 세트가 결정될 수 있다. 현재 블록의 예측 모드에 따라 변환 행렬 세트가 결정될 수 있다.
예를 들어, 현재 블록의 예측 모드가 화면 내 예측 모드인 경우와 현재 블록의 예측 모드가 IBC 모드인 경우에 서로 상이한 변환 행렬 세트가 결정될 수 있다. 또 다른 예로, 현재 블록의 예측 모드가 화면 내 예측 모드인 경우, 현재 블록의 예측 모드가 화면 간 예측 모드인 경우, 및 현재 블록의 예측 모드가 IBC 모드인 경우, 서로 상이한 변환 행렬 세트가 결정될 수 있다.
현재 블록의 색 성분에 따라 변환 행렬 세트가 결정될 수 있다. 예를 들어, 현재 블록의 색 성분이 Y(휘도)인 경우와 현재 블록의 색 성분이 Cb(색차) 혹은 Cr(색차)인 경우에 서로 상이한 변환 행렬 세트가 결정될 수 있다.
현재 블록의 크기에 따라 변환 행렬 세트가 결정될 수 있다. 예를 들어, 현재 블록의 크기(가로 크기와 세로 크기의 곱)가 16보다 작거나 같을 경우와 현재 블록의 크기(가로 크기와 세로 크기의 곱)가 16보다 클 경우에 서로 상이한 변환 행렬 세트가 결정될 수 있다.
현재 블록의 형태에 따라 변환 행렬 세트가 결정될 수 있다. 예를 들어, 현재 블록의 형태가 정방형인 경우와 현재 블록의 형태가 비정방형인 경우에 서로 상이한 변환 행렬 세트가 결정될 수 있다.
현재 블록의 예측 시 부블록(sub-block)으로 분할 여부에 따라 변환 행렬 세트가 결정될 수 있다. 예를 들어, 현재 블록의 예측 시 부블록으로 분할되는 경우와 현재 블록의 예측 시 부블록으로 분할되지 않는 경우에 서로 상이한 변환 행렬 세트가 결정될 수 있다.
현재 블록의 1차 변환 사용 여부에 따라 변환 행렬 세트가 결정될 수 있다.
표 10의 예와 같이, 현재 블록의 1차 변환 사용 여부에 따라 서로 상이한 변환 행렬 세트가 결정될 수 있다. 이때, 현재 블록에 대해 1차 변환/역변환이 수행되지 않더라도 2차 변환/역변환은 수행될 수 있다.
예를 들어, 1차 변환 사용 여부 정보 transform_skip_flag가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다.
또한, 1차 변환 사용 여부 정보 transform_skip_flag가 제1 값(예: 0)이 아닌 경우, 제2 변환 행렬 세트가 결정될 수 있다.
여기서, 상기 제1 변환 행렬 세트와 제2 변환 행렬 세트는 서로 상이할 수 있다.
Figure PCTKR2020016991-appb-T000007
현재 블록의 1차 변환 종류에 따라 변환 행렬 세트가 결정될 수 있다.
표 11의 예와 같이, 현재 블록의 1차 변환에 대한 종류(타입)에 따라 서로 상이한 변환 행렬 세트가 결정될 수 있다.
예를 들어, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다.
또한, 1차 변환에 대한 종류가 제2 변환(DCT-2가 아닌 정수 변환 혹은 trTypeHor가 제1 값(예: 0)이 아닌 경우 혹은 trTypeVer가 제1 값(예: 0)이 아닌 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다.
여기서, 상기 제1 변환 행렬 세트와 제2 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
Figure PCTKR2020016991-appb-T000008
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
또 다른 예로, 1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우 혹은 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)인 경우 혹은 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 제5 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제5 변환 행렬 세트는 서로 상이할 수 있다.
현재 블록의 2차원 변환 조합에 따라 변환 행렬 세트가 결정될 수 있다.
표 12의 예와 같이, 현재 블록의 2차원 변환 조합에 따라 서로 상이한 변환 행렬 세트가 결정될 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)이 아닌 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트와 제2 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제3 변환 행렬 세트는 서로 상이할 수 있다.
Figure PCTKR2020016991-appb-T000009
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제4 변환 행렬 세트는 서로 상이할 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 제1 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제3 값(예: 2)인 경우, 제3 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제4 값(예: 3)인 경우, 제4 변환 행렬 세트가 결정될 수 있다. 또한, 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 제2 변환 행렬 세트가 결정될 수 있다. 여기서, 상기 제1 변환 행렬 세트 내지 제5 변환 행렬 세트는 서로 상이할 수 있다.
일 실시 예에 따르면, 변환 행렬 색인 lfnst_idx가 시그널링된 후, 다중 변환 선택 인덱스 mts_idx가 시그널링될 수 있다. 또한 다중 변환 선택 인덱스는, 변환 행렬 색인에 적응적으로, 시그널링될 수 있다. 예를 들어, 변환 행렬 색인이 제1 값 (예: 0)을 나타낼 때, 즉, 2차 변환/역변환이 현재 블록에 적용되지 않을 때, 다중 변환 선택 인덱스가 시그널링될 수 있다. 반면, 변환 행렬 색인이 제1 값을 나타내지 않을 때, 즉, 2차 변환/역변환이 현재 블록에 적용될 때, 다중 변환 선택 인덱스가 시그널링되지 않을 수 있다.
이때, 각 변환 행렬 세트에서 비분리 변환 행렬은 변환 행렬 색인 lfnst_idx에 따라 결정될 수 있다. 이때 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화될 수 있다. 아래의 경우에서 변환 행렬 색인 lfnst_idx이 제1 값(예: 0)이 아닌 경우에 변환 행렬 색인 lfnst_idx 값에 따라 변환 행렬이 선택될 수 있고, 선택된 변환 행렬이 감소된 2차 변환/역변환에 사용될 수 있다.
상기 변환 행렬 색인은 화면 내 블록에서 시그널링될 수 있다.
상기 변환 행렬 색인은 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 N 보다 크거나 같을 경우에 시그널링될 수 있다. 이때, N은 양의 정수일 수 있고, 예를 들어 4일 수 있다. 상기 변환 행렬 색인은 화면 내 부블록 분할 타입(IntraSubPartitionsSplitType)이 ISP_NO_SPLIT와 동일할 경우에 시그널링될 수 있다. 상기 변환 행렬 색인은 매트릭스 기반 화면 내 예측 모드가 사용되지 않을 경우에 시그널링될 수 있다. 이때, 매트릭스 기반 화면 내 예측 모드 사용 여부 정보 (intra_mip_flag)가 제1 값(예: 0)일 경우에 변환 행렬 색인은 시그널링될 수 있다.
일 실시 예에 따르면, 현재 블록의 크기가 소정의 임계값보다 작을 때, 변환 행렬 색인이 시그널링될 수 있다. 예를 들면 현재 블록의 높이와 너비 중 큰 값이 소정의 임계값보다 작을 때, 변환 행렬 색인이 시그널링될 수 있다. 상기 임계값은 변환 블록의 최대 크기를 나타내는 값 (MaxTbSizeY)일 수 있다.
일 실시 예에 따르면, 현재 블록의 마지막 넌제로 변환 계수의 위치에 따라, 변환 행렬 색인 lfnst_idx의 시그널링 여부가 결정될 수 있다. 예를 들어, 현재 블록의 마지막 넌제로 변환 계수가 현재 블록의 좌상측 코너에 위치한 경우, 현재 블록에 넌제로 변환 계수가 하나 밖에 없으므로, 2차 변환/역변환이 수행되지 않는다. 따라서 상기의 경우, 변환 행렬 색인 lfnst_idx은 시그널링되지 않을 수 있다. 이때, 현재 블록에 대해서는 2차 변환/역변환이 수행되지 않는 것으로 결정될 수 있다.
또 다른 실시 예에 따르면, 현재 블록에 2차 역변환 적용 영역 밖에 넌제로 변환 계수가 있는 경우, 변환 행렬 색인 lfnst_idx은 시그널링되지 않을 수 있다. 예를 들어, 현재 블록의 2차 역변환 적용 영역은 현재 블록의 좌상측 서브 블록일 수 있다. 크기가 4x4이거나 더 큰 블록의 서브 블록의 크기는 4x4로 결정될 수 있다. 상기 좌상측 서브 블록은 블록의 좌상측 코너에 바로 인접한 (immediately adjacent) 서브 블록을 의미한다. 만약 현재 블록의 마지막 변환 계수가 위치한 서브 블록이 현재 블록의 좌상측 서브 블록이 아닐 경우, 변환 행렬 색인 lfnst_idx은 시그널링되지 않을 수 있다. 이때, 현재 블록에 대해서는 2차 변환/역변환이 수행되지 않는 것으로 결정될 수 있다. 여기서, 서브 블록은 계수 그룹을 의미할 수 있다.
또 다른 실시 예에 따르면, 현재 블록의 2차 역변환 적용 영역은 현재 블록의 좌상측 서브 블록의 일부일 수 있다. 예를 들어, 현재 블록의 크기가 4x4 또는 8x8일 때, 좌상측 서브 블록의 스캔 순서상 최초 8개의 변환 계수에 따라, 현재 블록의 2차 역변환 적용 영역이 결정될 수 있다. 따라서 현재 블록의 마지막 변환 계수의 위치가, 스캔 순서상 9번째 또는 그 이상일 경우, 변환 행렬 색인 lfnst_idx은 시그널링되지 않을 수 있다. 이때, 현재 블록에 대해서는 2차 변환/역변환이 수행되지 않는 것으로 결정될 수 있다.
상기 변환 행렬 색인은 화면 내 잔차 신호 DPCM 방법이 사용되지 않을 경우에 시그널링될 수 있다. 이때, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보 (intra_bdpcm_flag)가 제1 값(예: 0)일 경우에 변환 행렬 색인은 시그널링될 수 있다.
또한, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보 (intra_bdpcm_flag)가 제1 값(예: 0)인 경우에 변환 스킵 모드 플래그는 내재적(implicitly)으로 제1 값(예: 0)으로 결정될 수 있다. 본 명세서에서 변환 스킵 모드는 변환 생략 모드를 의미할 수 있다. 변환 스킵 모드 플래그가 제1 값(예: 0)일 경우에는 1차 변환/역변환 및 2차 변환/역변환 중 적어도 하나가 수행될 수 있다. 또한, 변환 스킵 모드 플래그가 제2 값(예: 1)일 경우에는 1차 변환/역변환 및 2차 변환/역변환이 수행되지 않을 수 있다.
상기 변환 행렬 색인은 화면 내 잔차 신호 DPCM 방법이 사용될 경우에 시그널링되지 않을 수 있다. 이때, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보 (intra_bdpcm_flag)가 제2 값(예: 1)일 경우에 변환 행렬 색인은 시그널링되지 않을 수 있다.
상기 화면 내 잔차 신호 DPCM 방법이 사용될 경우, 변환 스킵 모드 플래그는 부호화/복호화/획득되지 않을 수 있다. 화면 내 잔차 신호 DPCM 방법에서는 잔차 신호의 변환 과정이 생략될 수 있다. 그러므로 상기 화면 내 잔차 신호에 DPCM 방법이 적용될 경우, 변환 스킵 모드 플래그는 내재적(implicitly)으로 제2 값(예: 1)으로 결정될 수 있다. 즉, 현재 블록에 변환/역변환이 수행되지 않을 수 있다. 또한 상기 화면 내 잔차 신호 DPCM 방법이 사용될 경우, 현재 블록에 변환/역변환이 수행되지 않음에 따라, 변환 행렬 색인은 시그널링되지 않을 수 있다.
상기 화면 내 잔차 신호 DPCM 방법이 사용되지 않을 경우, 현재 블록의 잔차 신호에 변환/역변환이 수행되는지 여부를 나타내는 변환 스킵 모드 플래그가 부호화/복호화/획득될 수 있다. 따라서, 변환 스킵 모드 플래그에 따라, 현재 블록에 변환/역변환이 적용되는지 여부가 결정될 수 있다.
화면 내 잔차 신호 DPCM 방법의 사용 여부에 따른 변환 스킵 모드 플래그의 부호화/복호화/획득 및 결정 방법은 색 성분마다 독립적으로 결정될 수 있다.
상기 변환 행렬 색인은 화면 내 참조 샘플 라인 지시자가 0인 경우에 시그널링될 수 있다. 이때, 화면 내 참조 샘플 라인 지시자(intra_luma_ref_idx)가 제1 값(예: 0)일 경우에 변환 행렬 색인은 시그널링될 수 있다. 상기 참조 샘플 라인 지시자가 0인 경우에는 현재 블록에 가장 인접한 참조 샘플을 이용하여 화면 내 예측이 수행될 수 있다.
상기 변환 행렬 색인은 화면 내 휘도 MPM 플래그(intra_luma_mpm_flag)가 제2 값(예: 1)일 경우에 시그널링될 수 있다.
상기 변환 행렬 색인은 현재 블록의 가로 크기 및 세로 크기 중 적어도 하나가 N보다 작을 경우에 시그널링될 수 있다. 이때, N은 양의 정수일 수 있고, 예를 들어 128일 수 있다.
일 실시 예에 따라, 상기 변환 행렬 색인은 다중 변환 선택 인덱스 mts_idx에 따라 시그널링될 수 있다.
예를 들어, 다중 변환 선택 인덱스 mts_idx가 제M 값(예: M-1)인 경우에 시그널링될 수 있다. 이때, 다중 변환 선택 인덱스 mts_idx가 제M 값(예: M-1)인 경우에 감소된 2차 변환/역변환은 수행될 수 있다.
또 다른 예로, 다중 변환 선택 인덱스 mts_idx가 제M 값(예: M-1)이 아닌 경우에 시그널링되지 않을 수 있다. 이때, 다중 변환 선택 인덱스 mts_idx가 제M 값(예: M-1)이 아닌 경우에 감소된 2차 변환/역변환은 수행되지 않을 수 있다.
여기서, M은 1의 값 이상의 양의 정수일 수 있고, 예를 들어 1일 수 있다.
일 실시 예에 따라, 현재 블록이 서브 블록으로 분할되지 않을 때, 상기 변환 행렬 색인이 시그널링될 수 있다. 그리고 현재 블록이 제1 부블록 분할 모드 또는 제2 부블록 분할 모드에 따라 서브 블록으로 분할될 때, 상기 변환 행렬 색인은 시그널링되지 않을 수 있다. 상기 현재 블록은 CTU/CTB, CU/CB, TU/TB 등일 수 있다.
또 다른 실시 예에 따라, 현재 블록이 서브 블록으로 분할되는지 여부와 관계없이, 상기 변환 행렬 색인이 시그널링될 수 있다. 따라서, 현재 블록의 서브 블록에도, 상기 변환 행렬 색인에 따라, 2차 변환/역변환이 적용될 수 있다.
상기 변환 행렬 색인은 CU 단위 부호화 블록 플래그, TU/TB 단위 Y(휘도) 성분 부호화 블록 플래그, TU/TB 단위 Cb(색차) 성분 부호화 블록 플래그 및 TU/TB 단위 Cr(색차) 성분 부호화 블록 플래그 중 적어도 하나가 제2 값(예: 1)인 경우에 시그널링될 수 있다.
예를 들어, CU 단위 부호화 블록 플래그가 제2 값(예: 1)인 경우에 CU 단위에서 변환 행렬 색인은 시그널링될 수 있고, 해당 CU 단위에서 감소된 2차 변환/역변환이 수행될 수 있다.
또 다른 예로, TU/TB 단위 Y(휘도) 성분 부호화 블록 플래그가 제2 값(예: 1)인 경우에 TU/TB 단위에서 변환 행렬 색인은 시그널링될 수 있고, 해당 TU/TB 단위에서 감소된 2차 변환/역변환이 수행될 수 있다.
또 다른 예로, TU/TB 단위 Cb(색차) 성분 부호화 블록 플래그가 제2 값(예: 1)인 경우에 TU/TB 단위에서 변환 행렬 색인은 시그널링될 수 있고, 해당 TU/TB 단위에서 감소된 2차 변환/역변환이 수행될 수 있다.
또 다른 예로, TU/TB 단위 Cr(색차) 성분 부호화 블록 플래그가 제2 값(예: 1)인 경우에 TU/TB 단위에서 변환 행렬 색인은 시그널링될 수 있고, 해당 TU/TB 단위에서 감소된 2차 변환/역변환이 수행될 수 있다.
상기 변환 행렬 색인이 비트스트림 내에 존재하지 않을 경우 제1 값(예: 0)으로 추론(infer)될 수 있다.
색차 성분들(Cb 성분과 Cr 성분)의 잔차 신호를 통합하여 부호화/복호화하는 방식에 대한 지시자 tu_joint_cbcr_residual에 따라, tu_joint_cbcr_residual가 제2 값(예: 1)에 해당하는 블록(변환 블록, 변환 유닛)에서는 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화되지 않을 수 있다. 또한, tu_joint_cbcr_residual가 제1 값(예: 0)에 해당하는 블록(변환 블록, 변환 유닛)에서 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화될 수 있다.
예를 들어, 특정 성분의 잔차 신호가 tu_joint_cbcr_residual에 의해 비트스트림 내에 존재하지 않을 경우, 해당 성분에 대한 블록(변환 블록, 변환 유닛) 에서 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화되지 않을 수 있다.
여기서, tu_joint_cbcr_residual는 Cb 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용되는지를 의미할 수 있다.
예를 들어, tu_joint_cbcr_residual가 제1 값(예: 0)인 경우, Cr 성분의 잔차 신호가 다른 구문 요소 값에 따라, 비트스트림 내에 존재할 수 있다. 그리고, tu_joint_cbcr_residual가 제2 값(예: 1)인 경우, Cb 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용될 수 있다.
tu_joint_cbcr_residual이 Cb 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용되는지를 의미할 경우, Cr 성분에 대한 잔차 신호가 비트스트림 내에 존재하지 않을 수 있다. 이러한 경우, Cr 성분에 대한 블록(변환 블록, 변환 유닛)에서 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화되지 않을 수 있다.
또한, tu_joint_cbcr_residual는 Cr 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용되는지를 의미할 수 있다.
예를 들어, tu_joint_cbcr_residual가 제1 값(예: 0)인 경우, Cb 성분의 잔차 신호가 다른 구문 요소 값에 따라 비트스트림 내에 존재할 수 있다. 그리고, tu_joint_cbcr_residual가 제2 값(예: 1)인 경우, Cr 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용될 수 있다.
tu_joint_cbcr_residual이 Cr 성분의 잔차 신호가 Cb 성분 및 Cr 성분의 잔차 신호를 유도하는데 사용되는지를 의미할 경우, Cb 성분에 대한 잔차 신호가 비트스트림 내에 존재하지 않을 수 있다. 이러한 경우, Cb 성분에 대한 블록(변환 블록, 변환 유닛)에서 변환 행렬 색인 lfnst_idx은 엔트로피 부호화/복호화되지 않을 수 있다.
일 실시 예에 따르면, tu_joint_cbcr_residual은 Cb 성분의 변환 계수 존재 유무 정보 tu_cb_coded_flag 및 Cr 성분의 변환 계수 존재 유무 정보 tu_cr_coded_flag이 모두 제2 값 (예: 1)을 나타낼 때, 시그널링될 수 있다. 또는 tu_joint_cbcr_residual은 현재 블록이 화면 내 예측되고, Cb 성분의 변환 계수 존재 유무 정보 tu_cb_coded_flag 또는 Cr 성분의 변환 계수 존재 유무 정보 tu_cr_coded_flag가 제2 값 (예: 1)을 나타낼 때, 시그널링될 수 있다.
tu_joint_cbcr_residual이 제2 값 (예: 1)을 나타낼 때, tu_cb_coded_flag, tu_cr_coded_flag 및 joint_cbcr_sign_flag에 따라, Cb 성분과 Cr 성분의 변환 계수들은 아래와 같이 결정될 수 있다.
Cb 성분과 Cr 성분의 변환 계수의 부호가 동일한지 여부를 나타내는 joint_cbcr_sign_flag에 따라, Cb 성분과 Cr 성분의 부호가 결정될 수 있다. 예를 들어, joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일함을 나타낼 때, Cb 성분과 Cr 성분의 부호가 동일하도록 결정될 수 있다. 반대로 joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 서로 반대임을 나타낼 때, Cb 성분과 Cr 성분의 부호가 서로 반대가 되도록 결정될 수 있다.
tu_cb_coded_flag 및 tu_cr_coded_flag이 모두 제2 값 (예: 1)을 나타내거나, tu_cb_coded_flag가 제2 값 (예: 1)을 나타내고 tu_cr_coded_flag가 제1 값 (예: 0)을 나타낼 때, Cb 성분의 변환 계수가 시그널링될 수 있다. 그리고 tu_cr_coded_flag가 제2 값 (예: 1)을 나타내고 tu_cb_coded_flag가 제1 값 (예: 0)을 나타낼 때, Cr 성분의 변환 계수가 시그널링될 수 있다.
tu_cb_coded_flag 및 tu_cr_coded_flag이 모두 제2 값 (예: 1)을 나타낼 때, Cr 성분의 변환 계수와 Cb 성분의 변환 계수의 절대 값은 동일하게 결정될 수 있다. 따라서 joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일함을 나타낼 때, Cr 성분의 변환 계수는 시그널링된 Cb 성분의 변환 계수와 동일하도록 결정될 수 있다. 반대로, joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일하지 않음을 나타낼 때, Cr 성분의 변환 계수는 시그널링된 Cb 성분의 변환 계수에 -1을 곱한 값으로 결정될 수 있다.
tu_cb_coded_flag가 제2 값 (예: 1)을 나타내고 tu_cr_coded_flag가 제1 값 (예: 0)을 나타낼 때, Cr 성분의 변환 계수의 절대 값은 Cb 성분의 변환 계수의 절대 값을 2로 나눈 값으로부터 결정될 수 있다. 따라서 joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일함을 나타낼 때, Cr 성분의 변환 계수는 시그널링된 Cb 성분의 변환 계수를 2로 나눈 값으로부터 결정될 수 있다. 반대로, joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일하지 않음을 나타낼 때, Cr 성분의 변환 계수는 시그널링된 Cb 성분의 변환 계수를 -2로 나눈 값으로부터 결정될 수 있다.
tu_cr_coded_flag가 제2 값 (예: 1)을 나타내고 tu_cb_coded_flag가 제1 값 (예: 0)을 나타낼 때, Cb 성분의 변환 계수의 절대 값은 Cr 성분의 변환 계수의 절대 값을 2로 나눈 값으로부터 결정될 수 있다. 따라서 joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일함을 나타낼 때, Cb 성분의 변환 계수는 시그널링된 Cr 성분의 변환 계수를 2로 나눈 값으로부터 결정될 수 있다. 반대로, joint_cbcr_sign_flag가 Cb 성분과 Cr 성분의 변환 계수의 부호가 동일하지 않음을 나타낼 때, Cb 성분의 변환 계수는 시그널링된 Cr 성분의 변환 계수를 -2로 나눈 값으로부터 결정될 수 있다.
상기 변환 계수 존재 유무 정보는 부호화 블록 플래그를 의미할 수 있다.
예를 들어, 16x48 변환 행렬을 사용하는 8x8 크기의 감소된 2차 변환이 수행되는 경우, 0이 아닌 변환 계수(non-zero coefficient)는 블록에서 좌상단 8x8 영역 내 좌상단 4x4 영역에 생성될 수 있다.
즉, 블록에서 좌상단 8x8 영역 내 좌상단 4x4 영역을 제외한 나머지 영역에서는 0의 값을 가지는 변환 계수(zero coefficient)만 생성될 수 있다.
따라서, 블록에서 좌상단 8x8 영역 내 좌상단 4x4 영역을 제외한 나머지 영역에서 0이 아닌 변환 계수가 존재할 경우, 감소된 2차 변환이 수행되지 않았다고 판단하여 변환 행렬 색인을 엔트로피 부호화/복호화하지 않을 수 있다. 이러한 경우, 변환 행렬 색인은 제1 값(예: 0)으로 유추되어 감소된 2차 변환/역변환이 수행되지 않을 수 있다.
또한, 상기 0이 아닌 변환 계수가 존재하는지 여부와 관계없이, 변환 행렬 색인은 엔트로피 부호화/복호화될 수 있다.
예를 들어, 듀얼 트리 구조인 경우, 휘도 성분에 대한 변환 행렬 색인과 색차 성분에 대한 변환 행렬 색인이 각각 시그널링될 수 있다.
또 다른 예로, 듀얼 트리가 아닌 경우(혹은 화면 간 슬라이스인 경우), 휘도 성분에 대한 변환 행렬 색인과 색차 성분에 대한 변환 행렬 색인이 통합되어 하나로 시그널링될 수 있다.
2차 변환에서 4x4 크기의 비분리 변환 혹은 8x8 크기의 비분리 변환이 블록(변환 블록 혹은 변환 유닛) 크기에 따라 수행될 수 있다.
예를 들어, 4x4 비분리 변환은 현재 블록의 가로 크기 및 세로 크기 중 작은 값이 N보다 작을 때 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 8일 수 있다.
Min(현재 블록의 가로 크기, 현재 블록의 세로 크기) < 8이면, 4x4 비분리 변환/역변환을 현재 블록에 사용
또한, 예를 들어, 8x8 비분리 변환은 현재 블록의 가로 크기 및 세로 크기 중 작은 값이 N보다 클 때 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 4일 수 있다.
Min(현재 블록의 가로 크기, 현재 블록의 세로 크기) > 4이면, 8x8 비분리 변환/역변환을 현재 블록에 사용
예를 들어, 현재 블록의 가로 크기 및 세로 크기가 모두 N보다 크거나 같을 경우, 8x8 크기의 감소된 2차 변환이 수행될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 8일 수 있다.
또 다른 예로, 그렇지 않은 경우(현재 블록의 가로 크기 및 세로 크기가 모두 N보다 크거나 같지 않을 경우), 4x4 크기의 감소된 2차 변환이 수행될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 8일 수 있다.
감소된 2차 변환/역변환은 화면 간 슬라이스 및 화면 내 슬라이스 중 적어도 하나인 경우 화면 내 블록(부호화 블록, 예측 블록, 변환 블록 중 적어도 하나)일 경우에 휘도 성분 및 색차 성분 중 적어도 하나에 수행될 수 있다.
또한, 감소된 2차 변환/역변환은 아래의 조건을 모두 만족할 경우에 수행될 수 있다.
- 현재 블록의 가로 크기 혹은 세로 크기가 N보다 크거나 같을 경우 (이때, N은 양의 정수일 수 있고, 예를 들어 4일 수 있다.)
- 변환 스킵 모드 플래그 (변환 사용 여부 정보: transform_skip_flag)가 제1 값(예: 0)인 경우
2차 변환에서 4x4 크기의 비분리 변환 혹은 8x8 크기의 비분리 변환이 블록(변환 블록 혹은 변환 유닛) 크기에 따라 수행될 수 있다.
예를 들어, 4x4 비분리 변환은 현재 블록의 가로 크기 및 세로 크기 중 작은 값이 N보다 작을 때 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 8일 수 있다.
Min(현재 블록의 가로 크기, 현재 블록의 세로 크기) < 8이면, 4x4 비분리 변환/역변환이 현재 블록에 사용될 수 있다.
또한, 예를 들어, 8x8 비분리 변환은 현재 블록의 가로 크기 및 세로 크기 중 작은 값이 N보다 클 때 사용될 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 4일 수 있다.
Min(현재 블록의 가로 크기, 현재 블록의 세로 크기) > 4이면, 8x8 비분리 변환/역변환이 현재 블록에 사용될 수 있다.
상기 비분리 변환은 감소된 2차 변환을 의미할 수 있다.
감소된 2차 변환/역변환 수행 여부에 따라 블록 경계에 디블록킹 필터링이 수행될 수 있다.
예를 들어, 블록 경계에 인접한 주변 블록들 중 적어도 하나에 감소된 2차 변환/역변환이 수행된 경우, 해당 블록 경계는 디블록킹 필터링을 수행할 대상 블록 경계로 설정될 수 있다. 그리고, 해당 블록 경계에 대해 디블록킹 필터링이 수행될 수 있다.
또 다른 예로, 블록 경계에 인접한 주변 블록들 중 모두 2차 변환/역변환이 수행되지 않은 경우, 해당 블록 경계는 디블록킹 필터링을 수행할 대상 블록 경계로 설정되지 않을 수 있다. 그리고, 해당 블록 경계에 대해 디블록킹 필터링이 수행되지 않을 수 있다.
이하 감소된 2차 변환/역변환을 부호화기/복호화기에서 구현하기 위해 필요한 구문 요소 정보, 구문 요소 정보의 의미, 부호화/복호화 과정의 실시예가 설명된다.
감소된 2차 변환/역변환에 필요한 구문 요소 정보는 감소된 2차 변환/역변환이 시퀀스 단위에서 수행되는지에 대한 정보인 sps_lfnst_enabled_flag, 변환 행렬 색인 lfnst_idx, 및 변환 행렬 세트 정보 중 적어도 하나를 포함할 수 있다.
표 13 내지 표 26은 감소된 2차 변환/역변환에 필요한 구문 요소 정보의 예 및 화면 내 예측 모드(predModeIntra)에 따라 변환 행렬 세트 색인이 유도되는 예를 나타낸다. 감소된 2차 변환/역변환에 필요한 구문 요소 중 적어도 하나는 파라미터 세트, 헤더, 브릭(brick), CTU(coding tree unit), CU(coding unit), PU(Prediction Unit), TU(Transform Unit), CB(Coding Block), PB(Prediction Block), 혹은 TB(Transform Block) 중 적어도 하나에서 엔트로피 부호화/복호화될 수 있다.
이때, 파라미터 세트는 비디오 파라미터 세트(video parameter set), 디코딩 파라미터 세트(decoding parameter set), 시퀀스 파라미터 세트(sequence parameter set), 적응 파라미터 세트(adaptation parameter set), 및 픽처 파라미터 세트(picture parameter set) 중 적어도 하나일 수 있다. 헤더는 픽처 헤더(picture header), 서브 픽처 헤더(sub-picture header), 슬라이스 헤더(slice header), 타일 그룹 헤더(tile group header), 및 타일 헤더(tile header) 중 적어도 하나일 수 있다.
여기서, 상기 시그널링되는 파라미터 세트, 헤더, 브릭, CTU, CU, PU, TU, CB, PB, 혹은 TB 단위 중 적어도 하나에서 상기 감소된 2차 변환/역변환에 대한 구문 요소를 이용하여 감소된 2차 변환/역변환이 수행될 수 있다.
예를 들어, 상기 감소된 2차 변환/역변환에 대한 구문 요소가 시퀀스 파라미터 세트에서 엔트로피 부호화/복호화될 경우, 시퀀스 단위에서 동일한 구문 요소 값을 가지는 감소된 2차 변환/역변환에 대한 구문 요소를 이용하여 감소된 2차 변환/역변환이 수행될 수 있다.
또 다른 예로, 상기 감소된 2차 변환/역변환에 대한 구문 요소가 슬라이스 헤더에서 엔트로피 부호화/복호화될 경우, 슬라이스 단위에서 동일한 구문 요소 값을 가지는 감소된 2차 변환/역변환에 대한 구문 요소를 이용하여 감소된 2차 변환/역변환이 수행될 수 있다.
또 다른 예로, 상기 감소된 2차 변환/역변환에 대한 구문 요소가 적응 파라미터 세트에서 엔트로피 부호화/복호화될 경우, 동일한 적응 파라미터 세트를 참조하는 단위에서 동일한 구문 요소 값을 가지는 감소된 2차 변환/역변환에 대한 구문 요소를 이용하여 감소된 2차 변환/역변환이 수행될 수 있다.
표 13의 예와 같이, sps_lfnst_enabled_flag는 감소된 2차 변환/역변환이 시퀀스 단위에서 수행되는지에 대한 정보를 의미할 수 있다.
예를 들어, sps_lfnst_enabled_flag가 제1 값(예: 0)인 경우 시퀀스 단위에서 감소된 2차 변환/역변환이 수행되지 않음을 지시할 수 있고, sps_lfnst_enabled_flag가 제2 값(예: 1)인 경우 시퀀스 단위에서 감소된 2차 변환/역변환이 수행됨을 지시할 수 있다.
또 다른 예로, sps_lfnst_enabled_flag는 변환 행렬 색인 lfnst_idx이 CU, PU, TU, CB, PB, 및 TB 중 적어도 하나에 존재하는지 여부를 의미할 수 있다.
예를 들어, sps_lfnst_enabled_flag가 제1 값(예: 0)인 경우 변환 행렬 색인 lfnst_idx이 CU, PU, TU, CB, PB, 및 TB 중 적어도 하나에 존재하지 않음을 지시할 수 있고, sps_lfnst_enabled_flag가 제2 값(예: 1)인 경우 변환 행렬 색인 lfnst_idx이 CU, PU, TU, CB, PB, 혹은 TB 중 적어도 하나에 존재함을 지시할 수 있다.
sps_lfnst_enabled_flag가 비트스트림 내에 존재하지 않을 경우 sps_lfnst_enabled_flag는 제1 값(예: 0)으로 추론(infer)될 수 있다.
Figure PCTKR2020016991-appb-T000010
표 14 내지 표 18의 예와 같이, lfnst_idx[x0][y0]는 변환 행렬 세트 내 변환 행렬 중 어떤 변환 행렬을 감소된 2차 변환/역변환에 사용할지를 나타내는 변환 행렬 색인을 의미할 수 있다.
여기서, lfnst_idx[x0][y0]가 제1 값(예: 0)인 경우, 현재 블록에서 감소된 2차 변환/역변환이 수행되지 않을 수 있다. 그리고, lfnst_idx[x0][y0]가 제2 값(예: 1)인 경우, 현재 블록에서 변환 행렬 세트 내 변환 행렬 중 lfnst_idx[x0][y0]에 의해 지시되는 첫번째 행렬이 감소된 2차 변환/역변환에 사용될 수 있다. 그리고, lfnst_idx[x0][y0]가 제3 값(예: 2)인 경우, 현재 블록에서 변환 행렬 세트 내 변환 행렬 중 lfnst_idx[x0][y0]에 의해 지시되는 두번째 행렬이 감소된 2차 변환/역변환에 사용될 수 있다.
상기 lfnst_idx[x0][y0]는 0에서 N까지의 값을 가질 수 있다. 여기서, N은 양의 정수일 수 있고, 예를 들어 2일 수 있다.
상기 lfnst_idx[x0][y0]는 아래의 경우에 해당될 경우에 엔트로피 부호화/복호화될 수 있다.
표 14, 및 표 15의 예와 같이, numZeroOutSigCoeff가 제1 값(예: 0)이고 ( numSigCoeff > ((treeType==SINGLE_TREE) ? M:N) )인 경우, lfnst_idx[x0][y0]는 엔트로피 부호화/복호화될 수 있다.
혹은 표 16의 예와 같이, numZeroOutSigCoeff 값에 관계없이 ( numSigCoeff > ((treeType==SINGLE_TREE) ? M:N) )인 경우, lfnst_idx[x0][y0]는 엔트로피 부호화/복호화될 수 있다.
혹은 표 17의 예와 같이, ( numSigCoeff > ((treeType==SINGLE_TREE) ? M:N) ) 조건 만족 여부에 관계없이 numZeroOutSigCoeff가 제1 값(예: 0)인 경우, lfnst_idx[x0][y0]는 엔트로피 부호화/복호화될 수 있다.
혹은 표 18의 예와 같이, numZeroOutSigCoeff 값에 관계없이 그리고 ( numSigCoeff > ((treeType==SINGLE_TREE) ? M:N) ) 조건 만족 여부에 관계없이 lfnst_idx[x0][y0]는 엔트로피 부호화/복호화될 수 있다.
여기서 M과 N은 양의 정수일 수 있고, 예를 들어 M은 2, N은 1일 수 있다.
lfnst_idx[x0][y0]가 비트스트림 내에 존재하지 않을 경우, lfnst_idx[x0][y0]는 0의 값으로 추론될 수 있다.
Figure PCTKR2020016991-appb-T000011
Figure PCTKR2020016991-appb-T000012
Figure PCTKR2020016991-appb-T000013
Figure PCTKR2020016991-appb-T000014
Figure PCTKR2020016991-appb-T000015
qtbtt_dual_tree_intra_flag는 I 슬라이스에 대해, 각 CTU는 64x64의 부호화 유닛으로 분할되고, 64x64 부호화 유닛은 휘도 성분과 색차 성분의 루트 노드(root node)로 사용되는 것을 의미할 수 있다.
예를 들어, qtbtt_dual_tree_intra_flag가 제1 값(예: 0)인 경우 각 CTU는 64x64의 부호화 유닛으로 분할되고, 64x64 부호화 유닛은 휘도 성분과 색차 성분의 루트 노드로 사용되지 않을 수 있다. 반면, qtbtt_dual_tree_intra_flag가 제2 값(예: 1)인 경우, 각 CTU는 64x64의 부호화 유닛으로 분할되고, 64x64 부호화 유닛은 휘도 성분과 색차 성분의 루트 노드로 사용될 수 있다.
qtbtt_dual_tree_intra_flag가 제1 값(예: 0)인 경우, 휘도 성분에 대한 블록 분할과 색차 성분의 블록 분할을 위하여 단일 트리(single tree) 구조가 사용될 수 있다. 단일 트리 구조에 따르면, 휘도 성분의 블록 분할과 색차 성분의 블록 분할에 하나의 블록 분할 구조가 사용된다. 다만, 색차 성분의 형식에 따라 휘도 성분의 블록 크기와 색차 성분의 블록 크기는 서로 상이할 수 있다. 단일 트리 타입(treeType)은 SINGLE_TREE로 식별될 수 있다.
슬라이스 타입이 I 슬라이스이고, qtbtt_dual_tree_intra_flag가 제2 값(예: 1)인 경우, 부호화 트리 유닛(예: 64x64 크기의 부호화 유닛)으로부터 휘도 성분에 대한 블록 분할과 색차 성분의 블록 분할을 위하여 이중 트리(dual tree) 구조가 사용될 수 있다. 이중 트리 구조에 따르면, 휘도 성분의 블록 분할과 색차 성분의 블록 분할에 각각 다른 블록 분할 구조가 사용된다. 이중 트리 구조에서 휘도 성분에 대한 트리 타입(treeType)은 DUAL_TREE_LUMA로 식별될 수 있다. 그리고, 이중 트리 구조에서 색차 성분에 대한 트리 타입(treeType)은 DUAL_TREE_CHROMA로 식별될 수 있다.
상기 변환 행렬 색인 lfnst_idx[x0][y0]은 다중 변환 선택 인덱스 tu_mts_idx[ x0 ][ y0 ] 및 트리 타입 중 적어도 하나에 따라, 문맥 적응적 이진 산술 부호화/복호화(CABAC, Context-Adaptive Binary Arithmetic Coding)에 적용되는 문맥 모델이 결정될 수 있다. 상기 tu_mts_idx는 mts_idx와 동일한 의미일 수 있다.
예를 들어, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인은 아래와 같이 결정될 수 있다.
( tu_mts_idx[ x0 ][ y0 ] == 0 && treeType != SINGLE_TREE ) ? 1 : 0
예를 들어, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인은 아래와 같이 결정될 수 있다.
( tu_mts_idx[ x0 ][ y0 ] == 0 ) ? 1 : 0
예를 들어, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인은 아래와 같이 결정될 수 있다.
( treeType != SINGLE_TREE ) ? 1 : 0
예를 들어, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인은 0으로 결정될 수 있다.
예를 들어, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인은 현재 블록 및 주변 블록의 부호화 파라미터 중 적어도 하나에 따라 결정될 수 있다.
또 다른 예로, 상기 다중 변환 선택 인덱스의 예와 비슷하게, 가로 변환 타입(trTypeHor) 및 세로 변환 타입(trTypeVer) 중 적어도 하나에 따라, 변환 행렬 색인 lfnst_idx[x0][y0]을 엔트로피 부호화/복호화하는데 사용되는 문맥 모델 색인을 결정할 수 있다.
스케일링된 변환 계수에 대한 변환 과정은 이하와 같이 수행될 수 있다.
스케일링된 변환 계수에 대한 변환을 위하여, 현재 픽처의 좌상단 샘플을 기준으로 한 현재 휘도 성분 변환 블록의 좌상단 샘플 (xTbY,yTbY), 현재 변환 블록의 가로 크기 nTbW, 현재 변환 블록의 세로 크기 nTbH, 현재 블록의 색 성분 색인 cIdx, (nTbW)x(nTbH) 크기의 스케일링된 변환 계수 배열 d[x][y]이 입력될 수 있다. 이때, x는 0부터 nTbW-1까지의 값을 가질 수 있고, y는 0부터 nTbH-1까지의 값을 가질 수 있다.
스케일링된 변환 계수에 대한 변환에 따라, (nTbW)x(nTbH) 크기의 잔차 신호 배열 r[x][y]이 출력될 수 있다. 이때, x는 0부터 nTbW-1까지의 값을 가질 수 있고, y는 0부터 nTbH-1까지의 값을 가질 수 있다.
스케일링된 변환 계수에 대한 변환 프로세스에 있어서, 변환 행렬 색인 lfnst_idx[xTbY][yTbY]이 제1 값(예: 0)이 아니고, 변환 스킵 모드 플래그(transform_skip_flag)가 제1 값(예: 0)이고, nTbW 및 nTbH가 모두 4보다 크거나 같은 경우, 아래와 같이 수행될 수 있다. 이때, 변환 스킵 모드 플래그는 휘도 성분(Y) 블록 및 색차 성분(Cb, Cr) 블록 중 적어도 하나의 블록에 대한 플래그를 의미할 수 있다. 여기서, 변환 스킵 모드 플래그가 제1 값(예: 0)인 경우, 1차 변환 및 2차 변환 중 적어도 하나가 수행되는 것을 의미할 수 있다. 또한, 변환 스킵 모드 플래그가 제2 값(예: 1)인 경우, 1차 변환 및 2차 변환 중 적어도 하나가 수행되지 않는 것을 의미할 수 있다.
변수 predModeIntra, nLfnstOutSize, log2LfnstSize, numLfnstX, numLfnstY, 및 nonZeroSize는 아래와 같이 유도될 수 있다.
predModeIntra = (cIdx==0) ? IntraPredModeY[xTbY][yTbY] : IntraPredModeC[xTbY][yTbY]
nLfnstOutSize = (nTbW>=8&&nTbH>=8) ? 48:16
log2LfnstSize = (nTbW>=8&&nTbH>=8) ? 3:2
nLfnstSize = ( 1 << log2LfnstSize )
numLfnstX = (nTbW>8&&nTbH==4) ? 2:1
numLfnstY = (nTbW==4&&nTbH>8) ? 2:1
nonZeroSize = ( (nTbW==4&&nTbH==4) || (nTbW==8&&nTbH==8) ) ? 8:16
와이드 앵글 화면 내 예측 모드 매핑 과정이 아래와 같은 입력 및 출력을 사용하여 수행될 수 있다.
입력: predModeIntra, nTbW, nTbH 및 cIdx
출력: predModeIntra
0부터 numLfnstX - 1까지의 값을 가질 수 있는 xSbIdx와 0부터 numLfnstY - 1까지의 값을 가질 수 있는 ySbIdx에 대해 아래와 같이 수행될 수 있다.
u[x]의 값은 아래와 같이 유도될 수 있다. 이때, x는 0부터 nonZeroSize - 1까지의 값을 가질 수 있다.
xC = ( xSbIdx << log2LfnstSize ) + DiagScanOrder[log2LfnstSize][log2LfnstSize][x][0]
yC = ( ySbIdx << log2LfnstSize ) + DiagScanOrder[log2LfnstSize][log2LfnstSize][x][1]
u[x] = d[xC][yC]
1차원 저주파수 비분리 변환 과정이 아래와 같은 입력 및 출력을 사용하여 수행될 수 있다.
입력: 스케일링된 변환 계수의 입력 샘플 길이 nonZeroSize, nLfnstOutSize로 설정된 변환 출력 샘플 길이 nTrS, 스케일링된 0의 값이 아닌 변환 계수 배열 u[x], 화면 내 예측 모드 predModeIntra, 변환 행렬 색인 lfnst_idx[xTbY][yTbY]
이때, x는 0부터 nonZeroSize - 1까지의 값을 가질 수 있다.
출력: v[x]
이때, x는 0부터 nLfnstOutSize - 1까지의 값을 가질 수 있다.
배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]은 아래와 같이 유도될 수 있다. 이때, x와 y는 0부터 nLfnstSize - 1까지의 값을 가질 수 있다.
predModeIntra가 34보다 작거나 같을 경우 혹은 predModeIntra가 INTRA_LT_CCLM, INTRA_T_CCLM, 및 INTRA_L_CCLM 중 적어도 하나와 같을 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( y < 4 ) ? v[x+(y<<log2LfnstSize)] : ( ( x < 4 ) v[32+x+((y-4)<<2)] : d[x][y] )
그 밖의 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( x < 4 ) ? v[y+(x<<log2LfnstSize)] : ( ( y < 4 ) v[32+y+((x-4)<<2)] : d[x][y] )
여기서, 상기 배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y을 유도할 때, 화면 내 예측 모드 predModeIntra를 제외한 부호화 파라미터 중 적어도 하나에 기반하여 수행될 수 있다.
또 다른 예로, 배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]은 아래와 같이 유도될 수 있다. 이때, x와 y는 0부터 nLfnstSize - 1까지의 값을 가질 수 있다.
1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)인 경우이며 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( y < 4 ) ? v[x+(y<<log2LfnstSize)] : ( ( x < 4 ) ? v[32+x+((y-4)<<2)] : d[x][y] )
그 밖의 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( x < 4 ) ? v[y+(x<<log2LfnstSize)] : ( ( y < 4 ) ? v[32+y+((x-4)<<2)] : d[x][y] )
또 다른 예로, 배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]은 아래와 같이 유도될 수 있다. 이때, x와 y는 0부터 nLfnstSize - 1까지의 값을 가질 수 있다.
1차 변환에 대한 종류가 제1 변환(DCT-2 기반 정수 변환 혹은 trTypeHor가 제1 값(예: 0)이며 trTypeVer가 제1 값(예: 0)인 경우)인 경우, 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제2 값(예: 1)이며 trTypeVer가 제2 값(예: 1)인 경우)인 경우, 혹은 1차 변환에 대한 종류가 제2 변환(trTypeHor가 제3 값(예: 2)이며 trTypeVer가 제3 값(예: 2)인 경우)인 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( y < 4 ) ? v[x+(y<<log2LfnstSize)] : ( ( x < 4 ) ? v[32+x+((y-4)<<2)] : d[x][y] )
그 밖의 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( x < 4 ) ? v[y+(x<<log2LfnstSize)] : ( ( y < 4 ) ? v[32+y+((x-4)<<2)] : d[x][y] )
또 다른 예로, 배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]은 아래와 같이 유도될 수 있다. 이때, x와 y는 0부터 nLfnstSize - 1까지의 값을 가질 수 있다.
다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( y < 4 ) ? v[x+(y<<log2LfnstSize)] : ( ( x < 4 ) ? v[32+x+((y-4)<<2)] : d[x][y] )
그 밖의 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( x < 4 ) ? v[y+(x<<log2LfnstSize)] : ( ( y < 4 ) ? v[32+y+((x-4)<<2)] : d[x][y] )
또 다른 예로, 배열 d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]은 아래와 같이 유도될 수 있다. 이때, x와 y는 0부터 nLfnstSize - 1까지의 값을 가질 수 있다.
다중 변환 선택 인덱스 mts_idx가 제1 값(예: 0)인 경우, 다중 변환 선택 인덱스 mts_idx가 제2 값(예: 1)인 경우, 혹은 다중 변환 선택 인덱스 mts_idx가 제5 값(예: 4)인 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( y < 4 ) ? v[x+(y<<log2LfnstSize)] : ( ( x < 4 ) ? v[32+x+((y-4)<<2)] : d[x][y] )
그 밖의 경우, 아래와 같이 수행될 수 있다.
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y] = ( x < 4 ) ? v[y+(x<<log2LfnstSize)] : ( ( y < 4 ) ? v[32+y+((x-4)<<2)] : d[x][y] )
와이드 앵글(wide angle) 화면 내 예측 모드 매핑 과정이 이하 설명된다.
와이드 앵글 화면 내 예측 모드 매핑 과정을 위하여, 화면 내 예측 모드 predModeIntra, 변환 블록의 가로 크기 nTbW, 변환 블록의 세로 크기 nTbH, 현재 블록의 색 성분 색인 cIdx이 입력된다.
와이드 앵글 화면 내 예측 모드 매핑 과정에 따라, 변경된 화면 내 예측 모드 predModeIntra이 출력된다.
와이드 앵글 화면 내 예측 모드 매핑 과정에서, 변수 nW 및 nH는 아래와 같이 유도될 수 있다.
IntraSubPartitionsSplitType 가 ISP_NO_SPLIT와 동일하고 cIdx이 제1 값(예: 0)이 아닌 경우, 아래와 같이 수행될 수 있다.
nW=nTbW
nH=nTbH
그렇지 않은 경우, 아래와 같이 수행될 수 있다.
nW=nCbW
nH=nCbH
변수 whRatio는 Abs(Log2(nW/nH))로 설정될 수 있다. 직사각형 블록 (nW이 nH와 같이 않은 블록)을 위해, predModeIntra는 아래와 같이 변경될 수 있다. 아래 조건 중 모두 참(true)일 경우, predModeIntra는 (predModeIntra+65)로 설정될 수 있다.
- nW이 nH 보다 클 경우
- predModeIntra이 2보다 크거나 같을 경우
- predModeIntra이 ( whRatio>1 ) ? (8+2*whRatio):8 보다 작을 경우
아래 조건 중 모두 참(true)일 경우, predModeIntra는 (predModeIntra - 67)로 설정될 수 있다.
- nH가 nW보다 클 경우
- predModeIntra이 66보다 작거나 같을 경우
- predModeIntra이 ( whRatio>1) ? (60-2*whRatio):60 보다 클 경우
저주파수 비분리 변환 과정이 이하 설명된다.
저주파수 비분리 변환 과정에서, 변환 입력 샘플 길이 nonZeroSize, 변환 출력 샘플 길이 nTrS, 스케일링된 0의 값이 아닌 변환 계수 배열 x[j], 화면 내 예측 모드 predModeIntra, 및 변환 행렬 색인 lfnst_idx이 입력될 수 있다. 이때, j는 0부터 nonZeroSize - 1까지의 값을 가질 수 있다.
저주파수 비분리 변환 과정에 따라, 변환된 샘플 배열 y[i]이 출력될 수 있다. 이때, i는 0부터 nTrS - 1까지의 값을 가질 수 있다.
저주파수 비분리 변환 과정에 있어서, 저주파수 비분리 변환 행렬이 유도될 수 있다. 저주파수 비분리 변환 행렬 유도 과정에서, 변환 출력 샘플 길이 nTrS, 화면 내 예측 모드 predModeIntra, 및 변환 행렬 색인 lfnst_idx이 입력될 수 있다.
저주파수 비분리 변환 행렬 유도 과정에 따라, (nTrS)x(nonZeroSize) 크기의 변환 행렬 lowFreqTransMatrix이 출력될 수 있다.
변환된 샘플 배열 y[i]는 아래와 같이 유도될 수 있다. 이때, i는 0부터 nTrS - 1까지의 값을 가질 수 있다.
Figure PCTKR2020016991-appb-I000001
상기 CoeffMin 및 CoeffMax는 변환 계수 값의 최소값 및 최대값을 의미할 수 있고, 아래와 같이 유도될 수 있다.
CoeffMin = -( 1 << N )
CoeffMax = ( 1 << N ) - 1
여기서, N은 양의 정수일 수 있고, 예를 들어 15일 수 있다. N이 15인 경우, 변환 계수의 값은 16비트 다이나믹 레인지(dynamic range)에 포함될 수 있게 절삭(clipping)되는 것을 의미할 수 있다.
저주파수 비분리 변환 행렬 유도 과정이 이하 설명된다.
저주파수 비분리 변환 행렬 유도 과정에서, 변환 출력 샘플 길이 nTrS, 화면 내 예측 모드 predModeIntra, 및 변환 행렬 색인 lfnst_idx이 입력될 수 있다. 그리고 저주파수 비분리 변환 행렬 유도 과정에 따라, 변환 행렬 lowFreqTransMatrix이 출력될 수 있다.
저주파수 비분리 변환 행렬 유도 과정에 있어서, 표 19의 예와 같이, 화면 내 예측 모드 predModeIntra에 따라 변환 행렬 세트 색인 lfnstTrSetIdx가 유도될 수 있다. 여기서, 표 19 대신 표 20 내지 표 26을 이용하여, 화면 내 예측 모드 predModeIntra에 따라 변환 행렬 세트 색인 lfnstTrSetIdx가 유도될 수 있다.
predModeIntra가 INTRA_LT_CCLM, INTRA_T_CCLM, 및 INTRA_L_CCLM 중 적어도 하나와 같을 경우, lfnstTrSetIdx는 M으로 결정될 수 있다. 여기서, M은 양의 정수이고, 예를 들어 0일 수 있다.
표 23 내지 표 26의 예와 같이, 상기 predModeIntra는 와이드 앵글 화면 내 예측 모드 매핑 과정이 수행되기 전 혹은 와이드 앵글 화면 내 예측 모드 매핑 과정이 수행되지 않은 화면 내 예측 모드일 수 있다. 이때, 화면 내 예측 모드가 가질 수 있는 값의 범위는 0에서 M일 수 있다. 여기서, M은 화면 내 예측 모드가 가질 수 있는 최대값 (양의 정수)일 수 있고, 66일 수 있다.
예를 들어, 표 20 내지 표 22 및 표 24 내지 표 26의 예가 사용될 경우, 부호화기/복호화기에서 저장해야 할 변환 행렬의 개수가 4개에서 3개로 감소될 수 있기 때문에, 부호화기/복호화기에서 변환 행렬을 저장하는데 필요한 메모리 크기가 감소될 수 있다.
Figure PCTKR2020016991-appb-T000016
Figure PCTKR2020016991-appb-T000017
Figure PCTKR2020016991-appb-T000018
Figure PCTKR2020016991-appb-T000019
Figure PCTKR2020016991-appb-T000020
Figure PCTKR2020016991-appb-T000021
Figure PCTKR2020016991-appb-T000022
Figure PCTKR2020016991-appb-T000023
도 20 내지 도 22의 예와 같이, nTrS, lfnstTrSetIdx, 및 lfnst_idx에 기반하여 변환 행렬 lowFreqTransMatrix이 유도될 수 있다.
일반적으로 잔차 신호가 존재하는 경우에 잔차 신호는 부호화 과정에서 변환 부호화 한 후 비트스트림에 포함되어 전송될 수 있으며, 복호화 과정에서 역변환 부호화하여 잔차 신호가 유도될 수 있다.
비트스트림에 포함되어 복호기에 전송되는 잔차 신호 관련 정보(예를 들어, 양자화 변환 계수 등) 존재 유무를 나타내는 식별자 정보는 다음 중 적어도 하나 이상일 수 있다.
cu_cbf: 휘도 성분과 색차 성분이 동일 블록 분할 구조를 가지는 경우에 휘도 성분 블록의 양자화 변환 계수와 색차 성분 블록의 잔차 신호 양자화 변환 계수의 존재 유무 정보를 의미할 수 있다. 휘도 성분과 색차 성분이 독립적인 블록 분할 구조를 가지는 경우에 휘도 성분 블록 혹은 색차 성분 블록의 잔차 신호의 양자화 변환 계수 존재 유무 정보를 의미할 수 있다. 잔차 신호 양자화 변환 계수 존재 유무 정보는 제1값인 '1' 인 경우 해당 블록들의 잔차 신호의 양자화 변환 계수가 존재함을 의미할 수 있으며, 제2값인 '0'인 경우 해당 블록들의 잔차 신호의 양자화 변환 계수가 존재하지 않음을 의미할 수 있다. 휘도 성분과 색차 성분이 동일 블록 분할 구조를 가지는 경우에 휘도 성분 블록과 색차 성분(Cb와 Cr) 블록 가운데 하나라도 잔차 신호 양자화 변환 계수가 존재하는 경우에 제1값을 가지게 될 수 있으며, 모든 성분에 대한 잔차 신호 양자화 변환 계수가 존재하지 않는 경우에 제2값을 가지게 될 수 있다.
tu_cbf_luma: 휘도 성분 블록의 잔차 신호 양자화 변환 계수 존재 유무를 의미할 수 있다. 휘도 성분 블록의 잔차 신호 양자화 변환 계수 존재 유무 정보는 제1값인 '1' 인 경우 해당 휘도 블록의 잔차 신호의 양자화 변환 계수가 존재함을 의미할 수 있으며, 제2값인 '0'인 경우 해당 휘도 블록의 잔차 신호의 양자화 변환 계수가 존재하지 않음을 의미할 수 있다.
tu_cbf_cr, tu_cbf_cb: 색차 성분 중 각각 Cr과 Cb의 잔차 신호 양자화 변환 계수 존재 유무를 의미할 수 있다. 색차 성분 (Cr 혹은 Cb) 블록의 잔차 신호 양자화 변환 계수 존재 유무 정보는 제1값인 '1' 인 경우 해당 색차 성분 (Cr 혹은 Cb)블록의 잔차 신호의 양자화 변환 계수가 존재함을 의미할 수 있으며, 제2값인 '0'인 경우 해당 색차 성분 (Cr 혹은 Cb)블록의 잔차 신호의 양자화 변환 계수가 존재하지 않음을 의미할 수 있다.
일반적으로 cu_cbf가 제1값인 '1'인 경우에만 tu_cbf_luma, tu_cbf_cr, tu_cbf_cb 중 적어도 하나 이상이 추가로 전송되어 각각 휘도 성분, 색차 성분 중 Cr, 색차 성분 중 Cb의 잔차 신호 양자화 변환 계수 존재 유무를 지시할 수 있다.
휘도 성분과 색차 성분이 독립적인 블록 분할 구조를 가지는 경우에 cu_cbf는 tu_cbf_luma와 동일한 정보를 가지는 경우가 발생할 수 있다.
변환 부호화는 1차 변환/역변환과 2차 변환/역변환 중 적어도 하나를 포함할 수 있다.
1차 변환에 있어서, 변환 대상 블록에 대하여, 가로 방향 및 세로 방향으로 DCT-2가 적용될 수 있다. 또는, 변환 대상 블록에 대하여, 가로 방향 및 세로 방향으로 각각 DST-7와 DCT-8이 적용될 수 있다. 또한 변환 대상 블록에 적용하는 1차 변환 방식이 인덱스의 형태로 시그널링될 수 있다. 1차 변환 방식이 DCT-2인 경우에 1차 변환 방식 인덱스는 '0'의 값을 가질 수 있다. 그리고 DST-7과 DCT-8의 조합에 따라 변환이 수행되는 경우, 1차 변환 방식 인덱스는 '0'보다 큰 임의의 정수 값을 가질 수 있다. 예를 들어, 1차 변환 방식 인덱스가 '1'인 경우에는 가로 및 세로 방향으로 모두 DST-7이 적용될 수 있고, '2'인 경우에는 가로는 DST-7, 세로는 DCT-8이 적용될 수 있다. '3'인 경우에는 가로는 DCT-8, 세로는 DST-7이 적용될 수 있고, '4'인 경우에는 가로와 세로에 모두 DCT-8이 적용될 수 있다.
2차 변환은 1차 변환된 신호의 일부에 대하여 적용될 수 있다. 2차 변환 방식은 인덱스의 형태로 시그널링될 수 있다. 2차 변환 방식을 적용하지 않는 경우에 2차 변환 방식 인덱스는 '0'의 값을 가질 수 있다. 그리고, 2차 변환 방식을 적용하는 경우에는 적용되는 2차 변환 방식 인덱스는 0보다 큰 정수 값을 가질 수 있다.
복호기에서는 시그널링된 2차 변환 방식에 대한 인덱스를 이용하여 2차 역변환에 적용할 커널이 유도될 수 있다. 유도된 커널을 적용하여 2차 역변환이 수행될 수 있다.
복호기에서 시그널링된 1차 변환 방식에 대한 인덱스를 이용하여 1차 역변환에 적용할 커널이 유도될 수 있다. 유도된 커널을 적용하여 2차 역변환된 신호에 1차 역변환이 수행될 수 있다.
2차 변환을 적용하는 경우, 1차 변환 방식에 항상 DCT-2가 적용될 수 있다. 1차 변환에 DCT-2가 적용될 때, 1차 변환된 블록의 좌상단에 에너지가 집중되는 경향이 있다. 그리고 1차 변환된 블록의 좌상단 위치에 에너지가 집중되는 경우, 2차 변환이 적용될 가능성이 높다. 따라서 1차 변환에 DCT-2를 적용할 때, 부호화 효율 측면이 향상될 수 있다.
또한, 2차 변환/역변환이 적용되지 않을 경우, 1차 변환 방식에 대한 인덱스를 엔트로피 부호화/복호화하여, 1차 변환/역변환이 적용될 수 있다.
1차 변환과 2차 변환은 적용 가능한 가로 혹은 세로 크기가 제한될 수 있다.
CU의 크기가 1차 변환이 가능한 최대 크기보다 큰 경우에는 해당 CU는 1차 변환이 가능한 최대 크기와 같거나 작을 때까지 암묵적으로 분할된다. 이렇게 분할된 블록은 TU(Transform Unit)라고 정의될 수 있다. 따라서, 1개의 CU는 1개 이상의 TU로 구성될 수 있다. TU를 기준으로 예측 부호화에 의하여 생성된 잔차 신호가 소정의 변환 방식에 따라 변환/역변환될 수 있다.
일 실시 예에 따르면, 1차 변환 방식 인덱스와 2차 변환 방식 인덱스는 CU 단위에서 시그널링될 수 있다.
다시 말해, CU에 포함된 모든 TU에 동일한 1차 변환 방식 및 2차 변환 방식 중 적어도 하나가 적용될 수 있다.
이 경우, 예를 들어, ISP 방법을 적용하여 화면 내 예측 신호를 생성한 경우에 분할된 ISP 블록들에 동일한 1차 변환 방식 및 2차 변환 방식 중 적어도 하나가 적용될 수 있다.
이 방식은 CU에 포함된 TU마다 다른 1차 변환 방식과 2차 변환 방식을 적용하는 방법에 비해 시그널링되는 정보량이 작기 때문에, 부호화 효율이 향상될 수 있다.
1차 변환 방식 인덱스와 2차 변환 방식 인덱스를 시그널링함에 있어서, 2차 변환 방식 인덱스가 먼저 시그널링되고, 1차 변환 방식이 시그널링될 수 있다.
2차 변환 방식 인덱스가 '0'이 아닌 경우(즉, 2차 변환을 적용하는 경우)에는 1차 변환 방식은 항상 DCT-2를 적용하므로, 1차 변환 방식 인덱스는 시그널링하지 않고, DCT-2를 지시하는 1차 변환 방식 인덱스 값인 '0'으로 설정할 수 있다. 즉, 2차 변환 방식 인덱스가 제1 값 (예: 0)이 아닌 경우(즉, 2차 변환을 적용하는 경우)에는 1차 변환 방식 인덱스는 시그널링되지 않을 수 있다.
2차 변환 방식 인덱스가 '0'인 경우(즉, 2차 변환을 적용하지 않는 경우)에는 1차 변환 방식 인덱스는 시그널링될 수 있다.
한편, CU 혹은 CU에 포함되는 TU의 휘도 성분이 1차 변환을 수행하지 않는 변환 생략(transform skip) 방법으로 잔차 신호가 부호화/복호화될 수 있다. 이 경우에도 1차 변환 방식 인덱스는 시그널링되지 않을 수 있다. 그런데 변환 생략은 TU 단위로 수행되므로, 변환 생략을 나타내는 정보(transform_skip_flag)는 TU 단위로 시그널링될 수 있다. 또한, 휘도 성분 블록의 잔차 신호 양자화 변환 계수가 존재하는 경우(즉, tu_cbf_luma 값이 '1'인 경우), 1차 변환 방식 인덱스는 시그널링될 수 있다. 따라서, CU 단위로 시그널링되는 1차 변환 방식 인덱스는 CU 단위로 시그널링되는 2차 변환 방식 인덱스가 '0'이면서 다음 중 적어도 하나를 만족하는 경우에 시그널링이 될 수 있다.
- CU에 포함되는 모든 TU의 휘도 성분이 변환 생략 방법으로 잔차 신호가 부호화 되지 않은 경우 (즉, 모든 TU의 휘도 성분에 대한 transform_skip_flag가 0인 경우)
- CU에 포함되어 있는 TU 중 가운데 하나의 휘도 성분이 변환 생략 방법으로 잔차 신호가 부호화 되지 경우 (즉, CU에 포함되어 있는 TU 중 가운데 하나라도 휘도 성분의 transform_skip_flag가 0인 경우)
- CU에 포함되어 있는 첫번째 TU의 휘도 성분이 변환 생략 방법으로 잔차 신호가 부호화 되지 않은 경우 (즉, CU에 포함되어 있는 첫번째 TU 휘도성분의 transform_skip_flag가 1인 경우)
- CU에 포함되는 모든 TU의 tu_cbf_luma 값이 '1'인 경우 _
- CU에 포함되어 있는 TU 중 가운데 하나라도 tu_cbf_luma 값이 '1'인 경우
- CU에 포함되어 있는 첫번째 TU의 tu_cbf_luma 값이 '1'인 경우
일 실시 예에 따르면, 1차 변환 방식 인덱스와 2차 변환 방식 인덱스는 TU 단위에서 시그널링될 수 있다.
다시 말해, CU에 포함된 TU들에 대하여 서로 다른 1차 변환 방식과 2차 변환 방식이 적용될 수 있다.
이 경우에, 예를 들어, ISP 방법을 적용하여 화면 내 예측 신호를 생성한 경우에 분할된 부블록들마다 다른 1차 변환 방식과 2차 변환 방식이 적용될 수 있다.
상기 변환 방식에 따르면, 각 TU에 적합한 변환 방식을 적용할 수 있기 때문에, CU에 포함된 모든 TU에 동일한 1차 변환 방식과 2차 변환 방식을 적용하는 방법에 비하여, 부호화의 정확도가 향상될 수 있다.
일 실시 예에 따르면, 2차 변환 방식 인덱스 및 1차 변환 방식 인덱스가 순차적으로 시그널링될 수 있다.
2차 변환 방식 인덱스가 '0'이 아닌 경우(즉, 2차 변환을 적용하는 경우)에는 1차 변환 방식은 항상 DCT-2를 적용하므로, 1차 변환 방식 인덱스는 시그널링하지 않고, DCT-2를 지시하는 1차 변환 방식 인덱스 값인 '0'으로 설정할 수 있다. 즉, 2차 변환 방식 인덱스가 '0'이 아닌 경우(즉, 2차 변환을 적용하는 경우)에는 1차 변환 방식 인덱스는 시그널링되지 않을 수 있다.
2차 변환 방식 인덱스가 '0'인 경우(즉, 2차 변환을 적용하지 않는 경우)에는 1차 변환 방식 인덱스는 시그널링될 수 있다.
한편, TU의 휘도 성분이 1차 변환을 수행하지 않는 변환 생략(transform skip) 방법으로 잔차 신호가 부호화/복호화될 수 있다. 이 경우에도 1차 변환 방식 인덱스는 시그널링되지 않을 수 있다. 따라서, TU 단위로 시그널링되는 1차 변환 방식 인덱스는 TU 단위로 시그널링되는 2차 변환 방식 인덱스가 '0'이면서 해당 TU의 휘도 성분이 변환 생략 방법으로 부호화 되지 않은 경우에 시그널링될 수 있다.
도 33 내지 도 55의 예와 같이, lfnst_idx[x0][y0]는 변환 행렬 세트 내 변환 행렬 중 어떤 변환 행렬을 감소된 2차 변환/역변환에 사용할지를 나타내는 변환 행렬 색인을 의미할 수 있다.
변환 스킵 모드 플래그와 관련하여, 상기 lfnst_idx[x0][y0]는 아래의 경우 중 적어도 하나에 해당될 경우에 엔트로피 부호화/복호화될 수 있다.
- 도 37의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)인 경우
( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0) )
- 도 38의 예와 같이, 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우
( treeType == DUAL_TREE_LUMA && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 )
- 도 39의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우
( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 )
- 도 40의 예와 같이, 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)이며, ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 )
- 도 41의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)이며, ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( ( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) || ( treeType == DUAL_TREE_LUMA && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
- 도 42의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)인 경우 혹은 트리 구조가 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)이며, ChromaArrayType가 제1 값(예: 0)이 아닌 경우,
( ( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) || ( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
- 도 43의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 혹은 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 중 적어도 하나가 제1 값(예: 0)이며, ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( ( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 || transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
또 다른 예로, 변환 스킵 모드 플래그와 관련하여, 상기 lfnst_idx[x0][y0]는 아래의 경우 중 적어도 하나에 해당될 경우에 엔트로피 부호화/복호화될 수 있다.
- 도 44의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우
( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) )
- 도 45의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우
( treeType == SINGLE_TREE && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 )
- 도 46의 예와 같이, 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우
( treeType == DUAL_TREE_LUMA && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 )
- 도 47의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]) 가 제1 값(예: 0)인 경우
( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 )
- 도 48의 예와 같이, 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우
( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) )
- 도 49의 예와 같이, 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며, 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)이며, ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 )
- 도 50의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그 (transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)이며 ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( ( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) || ( treeType == DUAL_TREE_LUMA && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
- 도 51의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE)이며 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ]), 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]), 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며, 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우
( ( treeType == SINGLE_TREE && ( transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) || ( treeType == DUAL_TREE_LUMA && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) )
- 도 52의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)이며 ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( ( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
- 도 53의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 이중 트리 휘도 타입(DUAL_TREE_LUMA)이며 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)인 경우
( ( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA ) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) ) )
- 도 54의 예와 같이, 트리 구조가 단일 트리 타입(SINGLE_TREE) 혹은 트리 구조가 이중 트리 휘도 타입(DUAL_TREE_LUMA) 혹은 ChromaArrayType가 제1 값(예: 0)이며 휘도 성분에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 0 ])가 제1 값(예: 0)인 경우 혹은 트리 구조가 이중 트리 색차 타입(DUAL_TREE_CHROMA)이며 색차 성분(Cb)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 1 ]) 및 색차 성분(Cr)에 대한 변환 스킵 모드 플래그(transform_skip_flag[ x0 ][ y0 ][ 2 ]) 모두가 제1 값(예: 0)이며 ChromaArrayType가 제1 값(예: 0)이 아닌 경우
( ( ( treeType == SINGLE_TREE || treeType == DUAL_TREE_LUMA || ChromaArrayType == 0) && transform_skip_flag[ x0 ][ y0 ][ 0 ] == 0 ) || ( treeType == DUAL_TREE_CHROMA && ( transform_skip_flag[ x0 ][ y0 ][ 1 ] == 0 && transform_skip_flag[ x0 ][ y0 ][ 2 ] == 0 ) && ChromaArrayType != 0 ) )
도 55의 예와 같이, 변환 스킵 모드 플래그와 관련하여, 상기 lfnst_idx[x0][y0]가 엔트로피 부호화/복호화될 때, 색 성분 단위로 변환 블록/유닛 단위에서 해당 변환 블록/유닛에 부호화된 0이 아닌 변환 계수 또는 0이 아닌 변환 계수 레벨이 존재하는지 여부에 대한 정보(부호화 블록 플래그)에 따라 lfnst_idx[x0][y0]가 엔트로피 부호화/복호화될 수 있다.
예를 들어, 특정 색 성분(휘도 성분, Cb 성분, Cr 성분 중 적어도 하나)에 대한 부호화 블록 플래그가 제1 값(예: 0)이거나, 변환 스킵 모드 플래그가 제1 값(예: 0)인 경우에 lfnst_idx[x0][y0]가 엔트로피 부호화/복호화될 수 있다.
상기 부호화 블록 플래그는 색 성분에 따라 tu_y_coded_flag, tu_cb_coded_flag, tu_cr_coded_flag 중 적어도 하나를 의미할 수 있다. 또한, 상기 부호화 블록 플래그가 제1 값(예: 0)인 경우, 변환 블록/유닛 단위에서 해당 변환 블록/유닛에 부호화된 0이 아닌 변환 계수 또는 0이 아닌 변환 계수 레벨이 존재하지 않는 것을 의미할 수 있다. 그리고, 상기 부호화 블록 플래그가 제2 값(예: 1)인 경우, 변환 블록/유닛 단위에서 해당 변환 블록/유닛에 부호화된 0이 아닌 변환 계수 또는 0이 아닌 변환 계수 레벨이 존재하는 것을 의미할 수 있다.
여기서, 변환 스킵 모드 플래그가 제1 값(예: 0)인 경우, 1차 변환 및 2차 변환 중 적어도 하나가 수행되는 것을 의미할 수 있다. 또한, 변환 스킵 모드 플래그가 제2 값(예: 1)인 경우, 1차 변환 및 2차 변환 중 적어도 하나가 수행되지 않는 것을 의미할 수 있다.
ChromaArrayType은 현재 시퀀스 또는 픽처의 크로마 포맷(chroma format)을 의미할 수 있다.
ChromaArrayType가 제1 값(예: 0)인 경우, 색차 신호는 존재하지 않고 휘도 신호만 존재하는 4:0:0 컬러 포맷으로 크로마 포맷이 설정될 수 있다. 크로마 포맷이 4:0:0 컬러 포맷인 경우, 색차 성분이 없는 모노크롬(monochrome)으로 결정된다. 또한. ChromaArrayType가 제2 값(예: 1)인 경우, 크로마 포맷은 4:2:0 컬러 포맷으로 설정될 수 있다. ChromaArrayType가 제3 값(예: 2)인 경우, 크로마 포맷은 4:2:2 컬러 포맷으로 설정될 수 있다. ChromaArrayType가 제4 값(예: 3)인 경우, 크로마 포맷은 4:4:4 컬러 포맷으로 설정될 수 있다.
ChromaArrayType는 chroma_format_idc 구문 요소 값에 의해 결정될 수 있으며, 색차 성분의 형식을 의미할 수 있다.
일 실시 예에 따르면, 2차 변환 수행 정보에 따라, 현재 블록의 2차 변환/역변환 적용 여부가 결정될 수 있다. 상기 2차 변환 수행 정보는 변환 행렬 색인(lfnst_idx) 및/또는 트리 구조에 따라 유도될 수 있다. 상기 2차 변환 수행 정보는 시퀀스, 픽처, 서브 픽처, 타일, 슬라이스, 부호화 단위, 예측 단위, 변환 단위 중 적어도 하나에 대하여 결정될 수 있다. 2차 변환 수행 정보에 따라, 2차 변환/역변환이 적용되는 블록에 대하여, 기본 양자화 행렬이 사용될 수 있다. 기본 양자화 행렬은 양자화 행렬 내 행렬 계수가 모두 일정한 N의 값을 가지는 행렬을 의미할 수 있다. 여기서, N은 양의 정수이고, 예를 들어 16일 수 있다.
일 실시 예에 따르면, 상기 변환 행렬 색인이 제1 값 (예: 0)을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용되지 않음을 나타내도록 결정될 수 있다. 상기 변환 행렬 색인이 제1 값이 아닌 다른 값을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용됨을 나타내도록 결정될 수 있다. 즉, 현재 블록의 2차 변환 적용 여부는 변환 행렬 색인으로부터 유도될 수 있다.
또 다른 실시 예에 따르면, 트리 구조에 따라, 2차 변환 수행 정보가 결정될 수 있다. 트리 구조가 단일 트리 타입인 경우 이하와 같이, 2차 변환 수행 정보가 결정될 수 있다.
- 휘도 성분의 블록에 대하여, 상기 변환 행렬 색인이 제1 값 (예: 0)을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용되지 않음을 나타내도록 결정될 수 있다. 그리고 상기 변환 행렬 색인이 제1 값이 아닌 다른 값을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용됨을 나타내도록 결정될 수 있다.
- 그러나, 색차 성분의 블록에 대하여는, 변환 행렬 색인의 값과 관계없이 2차 변환 수행 정보가 현재 블록에 2차 변환/역변환이 적용되지 않음을 나타내도록 결정될 수 있다.
트리 구조가 이중 트리 타입인 경우, 블록의 색 성분과 관계없이 2차 변환 수행 정보가 결정될 수 있다. 예를 들어, 상기 변환 행렬 색인이 제1 값 (예: 0)을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용되지 않음을 나타내도록 결정될 수 있다. 상기 변환 행렬 색인이 제1 값이 아닌 다른 값을 나타낼 때, 2차 변환 수행 정보는 현재 블록에 2차 변환/역변환이 적용됨을 나타내도록 결정될 수 있다.
도 56는 일 실시 예에 따른 비디오 복호화 방법을 도시한다.
단계 5602에서, 현재 블록에 변환 스킵 모드가 적용되는지 여부를 나타내는 변환 스킵 모드 플래그가 획득될 수 있다.
일 실시 예에 따르면, 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 획득될 수 있다. 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환 스킵 모드가 적용됨이 결정될 수 있다. 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 변환 스킵 모드 플래그가 획득될 수 있다.
일 실시 예에 따르면, 현재 블록에 대하여, 휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그가 획득될 수 있다.
단계 5604에서, 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환 스킵 모드가 적용될 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
단계 5606에서, 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환 스킵 모드가 적용되지 않을 경우, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인이 획득될 수 있다. 그리고, 상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부가 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인이 획득될 수 있다.
일 실시 예에 따르면, 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 변환 행렬 색인에 따라, 상기 현재 블록의 2차 변환 행렬이 결정될 수 있다. 그리고 상기 2차 변환 행렬에 따라, 상기 현재 블록에 2차 변환/역변환이 적용될 수 있다.
일 실시 예에 따르면, 상기 변환 행렬 색인, 상기 현재 블록의 크기, 및 상기 변환 스킵 모드 플래그 중 적어도 하나에 따라 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부가 결정될 수 있다. 그리고 상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라 상기 현재 블록의 2차 변환 행렬이 결정될 수 있다.
도 57은 일 실시 예에 따른 비디오 부호화 방법을 도시한다.
단계 5702에서, 현재 블록에 변환 스킵 모드가 적용되는지 여부를 나타내는 변환 스킵 모드 플래그가 엔트로피 부호화될 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 엔트로피 부호화될 수 있다. 그리고 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환 스킵 모드가 적용됨이 결정될 수 있다. 반면 상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 현재 블록의 상기 변환 스킵 모드 플래그가 엔트로피 부호화될 수 있다.
일 실시 예에 따르면, 현재 블록에 대하여, 휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그가 엔트로피 부호화될 수 있다.
단계 5704에서, 상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환 스킵 모드가 적용될 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 적용되지 않음이 결정될 수 있다.
단계 5706에서, 상기 현재 블록에 변환 스킵 모드가 적용되지 않을 경우, 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부가 결정될 수 있다. 그리고, 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부에 따라, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인이 엔트로피 부호화될 수 있다.
일 실시 예에 따르면, 상기 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 현재 블록의 2차 변환 행렬이 결정될 수 있다. 그리고 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부에 따라, 상기 변환 행렬 색인이 엔트로피 부호화될 수 있다.
일 실시 예에 따르면, 상기 변환 행렬 색인, 상기 현재 블록의 크기, 및 상기 변환 스킵 모드 플래그 중 적어도 하나에 따라 상기 현재 블록에 2차 변환/역변환이 적용되는지 여부가 결정될 수 있다. 그리고 상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라, 상기 현재 블록의 2차 변환 행렬이 결정될 수 있다.
일 실시 예에 따르면, 상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 상기 변환 행렬 색인이 엔트로피 부호화될 수 있다.
도 56 및 57의 실시 예는 예시에 불과하며, 도 56 및 57의 각 단계는 통상의 기술자에게 용이하게 변형 실시 가능하다. 또한, 도 56 및 57의 각 구성은 생략되거나 다른 구성으로 대체될 수 있다. 도 56 의 비디오 복호화 방법은 도 2의 복호화기에서 수행될 수 있다. 그리고 도 57 의 비디오 부호화 방법은 도 1의 부호화기에서 수행될 수 있다. 또한 하나 이상의 프로세서는 도 56 및 57의 각 단계를 구현한 명령들을 수행할 수 있다. 그리고 도 56 및 57의 각 단계를 구현한 명령들을 포함하는 프로그램 제품은 메모리 디바이스에 저장되거나, 온라인 상으로 유통될 수 있다.
본 명세서 소정의 정보가 획득된다는 것의 의미는 비트스트림으로부터 해당 정보를 엔트로피 부호화하는 것을 의미할 수 있다.
부호화기에서는 변환/역변환 과정에서 상술한 실시예들 중 적어도 하나를 이용하여 변환/역변환을 수행할 수 있다. 또한, 복호화기에서는 역변환 과정에서 상술한 실시예들 중 적어도 하나를 이용하여 역변환을 수행할 수 있다.
상술한 실시예들에서, 블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보, 2차 변환 수행 정보, 매트릭스 기반 화면 내 예측 수행 정보 등의 부호화 파라미터들 중 적어도 하나에 기반하여, 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나를 변환/역변환 과정에서 결정할 수 있다.
상술한 실시예들에서, 블록에 대한 화면 내 예측 모드, 예측 모드, 색 성분, 크기, 형태, 부블록 분할 관련 정보, 2차 변환 수행 정보, 매트릭스 기반 화면 내 예측 수행 정보 등의 부호화 파라미터들 중 적어도 하나에 기반하여, 감소된 2차 변환/역변환 행렬 세트, 감소된 2차 변환/역변환 행렬, 감소된 2차 변환/역변환 수행 여부 중 적어도 하나를 결정할 수 있다.
부호화기에서는 양자화/역양자화 과정에서 상술한 실시예들을 이용하여 상기 양자화 행렬을 이용하여 양자화/역양자화를 수행할 수 있다. 또한, 복호화기에서는 역양자화 과정에서 상술한 실시예들을 이용하여 상기 복원된 양자화 행렬을 이용하여 역양자화를 수행할 수 있다. 상기 복원된 양자화 행렬은 2차원 형태의 양자화 행렬일 수 있다.
상술한 실시예들에서, 블록에 대한 예측 모드, 색 성분, 크기, 형태, 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나에 기반하여 서로 다른 양자화 행렬을 양자화/역양자화 과정에서 사용하도록 양자화 행렬의 표현, 구성, 복원, 예측, 부호화/복호화 중 적어도 하나를 수행할 수 있다. 이때, 표현, 구성, 복원, 예측, 부호화/복호화 중 적어도 하나가 수행된 양자화 행렬들 중 적어도 하나는 예측 모드, 색 성분, 크기, 형태, 1차원 변환 종류, 2차원 변환 조합, 변환 사용 여부 중 적어도 하나에 따라 양자화 행렬 내 계수 중 적어도 하나가 서로 다른 양자화 행렬들일 수 있다.
상술한 실시예들에서, 부호화기에서 양자화 시 변환 계수에 양자화 행렬을 사용하여 변환 계수 레벨을 생성하며, 복호화기에서 역양자화 시 변환 계수 레벨에 양자화 행렬을 사용하여 변환 계수를 생성할 수 있다. 본 개시에서는 편의 상 변환 계수(transform coefficient) 와 변환 계수 레벨(transform coefficient level)을 모두 변환 계수로 통칭하여 표현하였다.
상술한 실시예에서, MxN 혹은 NxM 크기 등의 양자화 행렬은 정방형 MxM 크기의 양자화 행렬로부터 유도될 수 있기 때문에, 양자화/역양자화 시의 MxM 크기의 양자화 행렬로 표현된 것은 정방형 MxM 크기의 양자화 행렬뿐만 아니라 비정방형 MxN 혹은 NxM 크기 등의 양자화 행렬을 의미할 수 있다. 여기서, M과 N은 양의 정수일 수 있고, 2에서 64 사이의 값을 가질 수 있다. 또한, M과 N은 서로 다른 값일 수 있다.
예를 들어, 양자화/역양자화 시 비정방형 16x4 혹은 4x16 크기 등의 양자화 행렬은 정방형 16x16 크기의 양자화 행렬로부터 유도될 수 있기 때문에, 양자화/역양자화 시의 16x16 크기의 양자화 행렬로 표현된 것은 정방형 16x16 크기의 양자화 행렬뿐만 아니라 비정방형 16x4 혹은 4x16 크기 등의 양자화 행렬을 의미할 수 있다.
상술한 실시예들에서, 양자화 행렬 정보는 양자화 행렬 혹은 양자화 행렬 유도에 필요한 정보 중 적어도 하나를 의미할 수 있다. 이때, 양자화 행렬에 유도에 필요한 정보는 양자화 행렬 사용 여부 정보, 양자화 행렬 존재 여부 정보, 양자화 행렬 예측 방법 정보, 참조 행렬 식별자, DC 행렬 계수 혹은 최저주파수 행렬 계수, 양자화 행렬 내에서 이전에 부호화/복호화된 양자화 행렬 계수 값과 부호화/복호화 대상 양자화 행렬 계수 값의 차분 값 등 중 적어도 하나를 포함할 수 있다.
본 개시의 상기 실시예들은 블록, 유닛 중 적어도 하나 이상의 크기에 따라 적용될 수 있다. 여기서의 크기는 상기 실시예들이 적용되기 위해 최소 크기 및/또는 최대 크기로 정의될 수도 있고, 상기 실시예가 적용되는 고정 크기로 정의될 수도 있다. 또한, 상기 실시예들은 제1 크기에서는 제1의 실시예가 적용될 수 있고, 제2 크기에서는 제2의 실시예가 적용될 수 있다. 즉, 상시 실시예들은 크기에 따라 복합적으로 적용될 수 있다. 또한, 본 개시의 상기 실시예들은 최소 크기 이상 및 최대 크기 이하일 경우에만 적용될 수 있다. 즉, 상기 실시예들을 블록 크기가 일정한 범위 내에 포함될 경우에만 적용될 수 있다.
또한, 본 개시의 상기 실시예들은 최소 크기 이상 및 최대 크기 이하일 경우에만 적용될 수 있으며, 여기서 최소 크기와 최대 크기는 각각 블록, 유닛 중 하나의 크기일 수 있다. 즉, 최소 크기의 대상이 되는 블록과 최대 크기의 대상이 되는 블록이 서로 다를 수 있다. 예를 들어, 본 개시의 상기 실시예들은 현재 블록 크기가 블록의 최소 크기 이상이고 블록의 최대 크기 이하일 경우에만 적용될 수 있다.
예를 들어, 현재 블록 크기가 8x8 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 16x16 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 32x32 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 64x64 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 128x128 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 4x4일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 8x8 이하일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 16x16 이하일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 8x8 이상이고 16x16 이하일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록 크기가 16x16 이상이고 64x64 이하일 경우에만 상기 실시예들이 적용될 수 있다.
상기의 실시예들은 부호화기 및 복호화기에서 같은 방법으로 수행될 수 있다.
상기 실시예들 중 적어도 하나 혹은 적어도 하나의 조합을 이용해서 영상을 부호화/복호화할 수 있다.
상기 실시예를 적용하는 순서는 부호화기와 복호화기에서 상이할 수 있고, 상기 실시예를 적용하는 순서는 부호화기와 복호화기에서 동일할 수 있다.
휘도 및 색차 신호 각각에 대하여 상기 실시예를 수행할 수 있고, 휘도 및 색차 신호에 대한 상기 실시예를 동일하게 수행할 수 있다.
본 개시의 상기 실시예들이 적용되는 블록의 형태는 정방형(square) 형태 혹은 비정방형(non-square) 형태를 가질 수 있다.
상기 실시예들 중 어느 하나의 실시예로만 한정되어 현재 블록의 부호화/복호화 과정에 적용되지 않고, 특정 실시예 혹은 상기 실시예들의 적어도 하나의 조합이 현재 블록의 부호화/복호화 과정에 적용될 수 있다.
상기 부호화기에서 엔트로피 부호화되고 복호화기에서 엔트로피 복호화되는 구문 요소(플래그, 인덱스 등) 중 적어도 하나는 아래의 이진화(binarization), 역이진화(debinarization), 엔트로피 부호화/복호화 방법 중 적어도 하나 이상을 이용할 수 있다.
- 부호를 가지는 0차수 지수-골롬(0-th order Exp_Golomb) 이진화/역이진화 방법 (se(v))
- 부호를 가지는 k차수 지수-골롬(k-th order Exp_Golomb) 이진화/역이진화 방법 (sek(v))
- 부호를 가지지 않는 양의 정수에 대한 0차수 지수-골롬(0-th order Exp_Golomb) 이진화/역이진화 방법 (ue(v))
- 부호를 가지지 않는 양의 정수에 대한 k차수 지수-골롬(k-th order Exp_Golomb) 이진화/역이진화 방법 (uek(v))
- 고정 길이(Fixed-length) 이진화/역이진화 방법 (f(n))
- 절삭된 라이스(Truncated Rice) 이진화/역이진화 방법 혹은 절삭된 단항(Truncated Unary) 이진화/역이진화 방법 (tu(v))
- 절삭된 이진(Truncated Binary) 이진화/역이진화 방법 (tb(v))
- 문맥 적응적 산술 부호화/복호화 방법 (ae(v))
- 바이트 단위 비트 스트링 (b(8))
- 부호를 가지는 정수 이진화/역이진화 방법 (i(n))
- 부호를 가지지 않는 양의 정수 이진화/역이진화 방법 (u(n))
- 단항(Unary) 이진화/역이진화 방법
본 개시의 상기 실시예들은 부호화 블록, 예측 블록, 변환 블록, 블록, 현재 블록, 부호화 유닛, 예측 유닛, 변환 유닛, 유닛, 현재 유닛 중 적어도 하나의 크기에 따라 적용될 수 있다. 여기서의 크기는 상기 실시예들이 적용되기 위해 최소 크기 및/또는 최대 크기로 정의될 수도 있고, 상기 실시예가 적용되는 고정 크기로 정의될 수도 있다. 또한, 상기 실시예들은 제1 크기에서는 제1의 실시예가 적용될 수도 있고, 제2 크기에서는 제2의 실시예가 적용될 수도 있다. 즉, 상시 실시예들은 크기에 따라 복합적으로 적용될 수 있다. 또한, 본 개시의 상기 실시예들은 최소 크기 이상 및 최대 크기 이하일 경우에만 적용될 수도 있다. 즉, 상기 실시예들을 블록 크기가 일정한 범위 내에 포함될 경우에만 적용될 수도 있다.
예를 들어, 현재 블록의 크기가 8x8 이상일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록의 크기가 4x4일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록의 크기가 16x16 이하일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 블록의 크기가 16x16 이상이고 64x64 이하일 경우에만 상기 실시예들이 적용될 수 있다.
본 개시의 상기 실시예들은 시간적 계층(temporal layer)에 따라 적용될 수 있다. 상기 실시예들이 적용 가능한 시간적 계층을 식별하기 위해 별도의 식별자(identifier)가 시그널링되고, 해당 식별자에 의해 특정된 시간적 계층에 대해서 상기 실시예들이 적용될 수 있다. 여기서의 식별자는 상기 실시예가 적용 가능한 최하위 계층 및/또는 최상위 계층으로 정의될 수도 있고, 상기 실시예가 적용되는 특정 계층을 지시하는 것으로 정의될 수도 있다. 또한, 상기 실시예가 적용되는 고정된 시간적 계층이 정의될 수도 있다.
예를 들어, 현재 영상의 시간적 계층이 최하위 계층일 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 영상의 시간적 계층 식별자가 1 이상인 경우에만 상기 실시예들이 적용될 수 있다. 예를 들어, 현재 영상의 시간적 계층이 최상위 계층일 경우에만 상기 실시예들이 적용될 수 있다.
본 개시의 상기 실시예들이 적용되는 슬라이스 종류(slice type) 혹은 타일 그룹 종류가 정의되고, 해당 슬라이스 종류 혹은 타일 그룹 종류에 따라 본 개시의 상기 실시예들이 적용될 수 있다.
상술한 실시예들에서, 방법들은 일련의 단계 또는 유닛으로서 순서도를 기초로 설명되고 있으나, 본 개시는 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 개시의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
상술한 실시예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 개시는 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.
이상 설명된 본 개시에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 개시를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 개시에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 개시가 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 개시의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 개시가 상기 실시예들에 한정되는 것은 아니며, 본 개시가 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 개시의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 개시의 사상의 범주에 속한다고 할 것이다.

Claims (20)

  1. 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 획득하는 단계;
    상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계; 및
    상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 획득하고, 상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 단계를 포함하는 비디오 복호화 방법.
  2. 제1항에 있어서,
    상기 변환 스킵 모드 플래그를 획득하는 단계는,
    휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그를 획득하는 것을 특징으로 하는 비디오 복호화 방법.
  3. 제2항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 복호화 방법.
  4. 제2항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 복호화 방법.
  5. 제2항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환 스킵 모드가 적용됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환 스킵 모드가 적용됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 복호화 방법.
  6. 제1항에 있어서,
    상기 비디오 복호화 방법은,
    상기 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 변환 행렬 색인에 따라, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계; 및
    상기 2차 변환 행렬에 따라, 상기 현재 블록에 2차 변환/역변환을 적용하는 단계를 더 포함하는 것을 특징으로 하는 비디오 복호화 방법.
  7. 제6항에 있어서,
    상기 현재 블록의 2차 변환 행렬을 결정하는 단계는
    상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라 상기 현재 블록의 2차 변환 행렬을 결정하는 것을 특징으로 하는 비디오 복호화 방법.
  8. 제1항에 있어서,
    상기 비디오 복호화 방법은,
    상기 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보를 획득하는 단계; 및
    상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환/역변환이 생략됨을 결정하는 단계를 포함하고,
    상기 변환 스킵 모드 플래그를 획득하는 단계는,
    상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 변환 스킵 모드 플래그를 획득하는 것을 특징으로 하는 비디오 복호화 방법.
  9. 제1항에 있어서,
    상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인은,
    상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 획득되는 것을 특징으로 하는 비디오 복호화 방법.
  10. 제1항에 있어서,
    상기 변환 행렬 색인에 따라, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 단계는,
    상기 변환 행렬 색인, 상기 현재 블록의 크기, 및 상기 변환 스킵 모드 플래그 중 적어도 하나에 따라 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하는 것을 특징으로 하는 비디오 복호화 방법.
  11. 현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 부호화하는 단계;
    상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계; 및
    상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하고, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부에 따라, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계를 포함하는 비디오 부호화 방법.
  12. 제11항에 있어서,
    상기 변환 스킵 모드 플래그를 부호화하는 단계는,
    휘도 성분에 대한 변환 스킵 모드 플래그, Cb 성분에 대한 변환 스킵 모드 플래그, 및 Cr 성분에 대한 변환 스킵 모드 플래그를 부호화하는 것을 특징으로 하는 비디오 부호화 방법.
  13. 제12항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 단일 트리 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 부호화 방법.
  14. 제12항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 적용되지 않음을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 이중 트리 휘도 타입일 때, 상기 휘도 성분에 대한 변환 스킵 모드 플래그가 휘도 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 부호화 방법.
  15. 제12항에 있어서,
    상기 현재 블록에 2차 변환/역변환이 적용되지 않음을 결정하는 단계는,
    상기 현재 블록의 트리 구조가 이중 트리 색차 타입일 때, 상기 Cb 성분에 대한 변환 스킵 모드 플래그가 Cb 성분에 대하여 변환/역변환이 생략됨을 나타내고, 상기 Cr 성분에 대한 변환 스킵 모드 플래그가 Cr 성분에 대하여 변환/역변환이 생략됨을 나타낼 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 것을 특징으로 하는 비디오 부호화 방법.
  16. 제11항에 있어서,
    상기 변환 행렬 색인을 부호화하는 단계는,
    상기 현재 블록에 2차 변환/역변환이 적용될 경우, 상기 현재 블록의 2차 변환 행렬을 결정하는 단계; 및
    상기 현재 블록에 2차 변환/역변환이 적용되는지 여부에 따라, 상기 변환 행렬 색인을 부호화하는 단계를 포함하는 것을 특징으로 하는 비디오 부호화 방법.
  17. 제16항에 있어서,
    상기 현재 블록의 2차 변환 행렬을 결정하는 단계는
    상기 변환 행렬 색인, 상기 현재 블록의 변환 행렬 세트 색인, 및 상기 현재 블록의 크기 중 적어도 하나에 따라 상기 현재 블록의 2차 변환 행렬을 결정하는 것을 특징으로 하는 비디오 부호화 방법.
  18. 제11항에 있어서,
    상기 비디오 부호화 방법은,
    상기 현재 블록에 대하여, 화면 내 잔차 신호 DPCM 방법 사용 여부 정보를 부호화하는 단계; 및
    상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용됨을 나타내는 경우, 상기 현재 블록에 변환/역변환이 생략됨을 결정하는 단계를 포함하고,
    상기 변환 스킵 모드 플래그를 부호화하는 단계는,
    상기 화면 내 잔차 신호 DPCM 방법 사용 여부 정보가 상기 현재 블록에 화면 내 잔차 신호 DPCM 방법이 사용되지 않음을 나타내는 경우, 상기 변환 스킵 모드 플래그를 부호화하는 것을 특징으로 하는 비디오 부호화 방법.
  19. 제11항에 있어서,
    상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계는,
    상기 현재 블록이 매트릭스 기반 화면 내 예측 모드가 아닌 화면 내 예측 모드에 따라 예측되는 경우, 상기 변환 행렬 색인이 부호화되는 것을 특징으로 하는 비디오 부호화 방법.
  20. 비디오 부호화 방법에 의하여 비디오를 부호화함으로써 생성된 비트스트림이 저장된 컴퓨터로 판독가능한 기록매체에 있어서,
    상기 비디오 부호화 방법은,
    현재 블록에 변환/역변환이 생략되는지 여부를 나타내는 변환 스킵 모드 플래그를 부호화하는 단계;
    상기 변환 스킵 모드 플래그에 따라, 상기 현재 블록에 변환/역변환이 생략된 경우, 상기 현재 블록에 2차 변환/역변환이 생략됨을 결정하는 단계; 및
    상기 현재 블록에 변환/역변환이 생략되지 않는 경우, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부를 결정하고, 상기 현재 블록에 2차 변환/역변환이 생략되는지 여부에 따라, 상기 현재 블록의 2차 변환/역변환에 관한 변환 행렬 색인을 부호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 판독가능한 기록매체.
PCT/KR2020/016991 2019-11-26 2020-11-26 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 WO2021107648A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202080074073.9A CN114600455A (zh) 2019-11-26 2020-11-26 图像编码/解码方法和设备以及存储比特流的记录介质
US17/773,747 US20230007290A1 (en) 2019-11-26 2020-11-26 Image encoding/decoding method and apparatus, and recording medium storing bitstream
EP20893847.2A EP4068783A4 (en) 2019-11-26 2020-11-26 METHOD AND DEVICE FOR CODING/DECODING IMAGES AND RECORDING MEDIUM WITH RECORDED BIT STREAM

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20190153330 2019-11-26
KR10-2019-0153330 2019-11-26
KR10-2020-0004406 2020-01-13
KR20200004406 2020-01-13

Publications (1)

Publication Number Publication Date
WO2021107648A1 true WO2021107648A1 (ko) 2021-06-03

Family

ID=76129544

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/016991 WO2021107648A1 (ko) 2019-11-26 2020-11-26 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Country Status (5)

Country Link
US (1) US20230007290A1 (ko)
EP (1) EP4068783A4 (ko)
KR (1) KR20210065063A (ko)
CN (1) CN114600455A (ko)
WO (1) WO2021107648A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024076220A1 (ko) * 2022-10-07 2024-04-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2024080623A1 (ko) * 2022-10-12 2024-04-18 삼성전자 주식회사 Ai에 기반한 영상 부호화 장치 및 영상 복호화 장치, 및 이들에 의한 영상의 부호화 및 복호화 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180001485A (ko) * 2016-06-24 2018-01-04 한국전자통신연구원 변환 기반의 영상 부호화/복호화 방법 및 장치
KR20180063186A (ko) * 2015-09-29 2018-06-11 퀄컴 인코포레이티드 비디오 코딩을 위한 비-분리가능한 2 차 변환
KR20190113591A (ko) * 2018-03-28 2019-10-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3606066A4 (en) * 2017-03-23 2020-03-25 Sony Corporation IMAGE PROCESSING DEVICE AND METHOD
WO2020218793A1 (ko) * 2019-04-20 2020-10-29 엘지전자 주식회사 Bdpcm에 기반한 영상 코딩 방법 및 그 장치
JP7277608B2 (ja) * 2019-04-23 2023-05-19 北京字節跳動網絡技術有限公司 多重変換行列のコンテキストモデリングおよび選択
CN113950829A (zh) * 2019-06-06 2022-01-18 北京字节跳动网络技术有限公司 简化的变换编解码工具

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180063186A (ko) * 2015-09-29 2018-06-11 퀄컴 인코포레이티드 비디오 코딩을 위한 비-분리가능한 2 차 변환
KR20180001485A (ko) * 2016-06-24 2018-01-04 한국전자통신연구원 변환 기반의 영상 부호화/복호화 방법 및 장치
KR20190113591A (ko) * 2018-03-28 2019-10-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
B. BROSS, J. CHEN, S. LIU, Y.-K. WANG: "Versatile Video Coding (Draft 7)", 16. JVET MEETING; 20191001 - 20191011; GENEVA; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ), no. JVET-P2001-vE, 14 November 2019 (2019-11-14), pages 1 - 489, XP030224330 *
J. CHEN, Y. YE, S. KIM: "Algorithm description for Versatile Video Coding and Test Model 7 (VTM 7)", 16. JVET MEETING; 20191001 - 20191011; GENEVA; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ), 10 November 2019 (2019-11-10), XP030224331 *
See also references of EP4068783A4 *

Also Published As

Publication number Publication date
CN114600455A (zh) 2022-06-07
EP4068783A4 (en) 2023-12-13
KR20210065063A (ko) 2021-06-03
US20230007290A1 (en) 2023-01-05
EP4068783A1 (en) 2022-10-05

Similar Documents

Publication Publication Date Title
WO2019112394A1 (ko) 채널들 간의 선택적인 정보 공유를 사용하는 부호화 및 복호화를 위한 방법 및 장치
WO2018012830A1 (ko) 영상 부호화/복호화 방법 및 장치
WO2017222334A1 (ko) 변환 기반의 영상 부호화/복호화 방법 및 장치
WO2020256447A1 (ko) 2차 변환을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019027241A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020060184A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2021101345A1 (ko) 적응적 루프내 필터링 방법 및 장치
WO2020180162A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020060243A1 (ko) 경계 처리를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020256528A1 (ko) 비디오 부호화/복호화 방법, 장치 및 비트스트림 저장 매체
WO2020256466A1 (ko) 화면 내 예측 모드 및 엔트로피 부호화/복호화 방법 및 장치
WO2020050600A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2021054805A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020256422A1 (ko) 화면 간 예측 정보 부호화/복호화 방법 및 장치
WO2020138933A1 (ko) 양자화 행렬 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020256522A1 (ko) 영역 분할을 사용하는 영상 부호화 및 영상 복호화를 위한 방법 및 장치
WO2021015581A1 (ko) 기하학적 분할을 사용하는 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2021112651A1 (ko) 팔레트 모드를 사용하는 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2019190098A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020139006A2 (ko) 화면 내 예측 모드 유도 방법 및 장치
WO2020251332A1 (ko) 양자화 행렬 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020139013A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2021107648A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019147067A1 (ko) 시간적 움직임 정보를 이용하는 영상 부호화 및 영상 복호화를 위한 방법 및 장치
WO2019117645A1 (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: 20893847

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020893847

Country of ref document: EP

Effective date: 20220627