WO2019027200A1 - 비-제로 계수들의 위치를 표현하는 방법 및 장치 - Google Patents

비-제로 계수들의 위치를 표현하는 방법 및 장치 Download PDF

Info

Publication number
WO2019027200A1
WO2019027200A1 PCT/KR2018/008605 KR2018008605W WO2019027200A1 WO 2019027200 A1 WO2019027200 A1 WO 2019027200A1 KR 2018008605 W KR2018008605 W KR 2018008605W WO 2019027200 A1 WO2019027200 A1 WO 2019027200A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
sub
valid
blocks
subblocks
Prior art date
Application number
PCT/KR2018/008605
Other languages
English (en)
French (fr)
Inventor
임정연
신재섭
이선영
손세훈
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020170114516A external-priority patent/KR102453811B1/ko
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Publication of WO2019027200A1 publication Critical patent/WO2019027200A1/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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

Definitions

  • the present invention relates to image encoding or decoding, and more particularly, to expressing and determining the location of non-zero coefficients.
  • Video compression techniques include spatial prediction and / or temporal prediction to reduce or eliminate the inherent redundancy in video sequences.
  • a video frame or slice may be partitioned into blocks. Each block can be further partitioned.
  • Blocks within an intra-coded (I) frame or slice are encoded using spatial prediction for reference samples in neighboring blocks in the same frame or slice.
  • Blocks in an inter-coded (P or B) frame or slice may use spatial prediction for reference samples in neighboring blocks in the same frame or slice or temporal prediction for reference samples in different reference frames.
  • Spatial or temporal prediction results in a prediction block for the block to be coded.
  • the residual data represents the pixel differences between the original block to be encoded and the prediction block.
  • the inter-coded block is encoded according to the motion vector indicating the block of reference samples forming the prediction block and the residual data indicating the difference between the coded block and the prediction block.
  • the intra-coded block is encoded according to the intra-coding mode and the residual data.
  • the residual data may be transformed from the pixel domain to the transform domain to generate residual transform coefficients, which may then be quantized.
  • the quantized transform coefficients arranged in a two-dimensional array may be scanned in a specific order to generate a one-dimensional vector of transform coefficients for entropy coding.
  • the main object of the present invention is to provide a method for efficiently expressing or determining the position of non-zero coefficients in a coefficient block having an array of coefficients divisible into a plurality of (sub) blocks.
  • an image encoding method comprising encoding a distribution of significant coefficients that are non-zero coefficients in a coefficient block.
  • the image encoding method comprising the steps of: encoding a significant flag indicating whether the current coefficient block is a valid block having at least one non-zero coefficient; Wherein, when the valid flag indicates that the current coefficient block is a valid block, for the current coefficient block, the sub-block determined as the valid block is divided into n (n is 2 or more Determining whether each of the n subblocks is a valid block, while dividing the subblocks recursively into subblocks of equal size, Skipping the coding of the valid flag associated with the n subblocks if the size of the n subblocks is greater than or equal to a predetermined threshold value; And encoding the valid flag associated with the n subblocks if the size of the n subblocks is less than a predetermined threshold value.
  • an image decoding method comprising determining a distribution of significant coefficients that are non-zero coefficients in a coefficient block.
  • the image decoding method comprising: parsing, from a bitstream, a significant flag indicating whether the current coefficient block is a valid block having at least one non-zero coefficient; Wherein, when the valid flag indicates that the current coefficient block is a valid block, for the current coefficient block, the sub-block determined as the valid block is divided into n (n is 2 or more Determining whether each of the n subblocks is a valid block, while dividing the subblocks recursively into subblocks of equal size of the number of subblocks.
  • the step of determining whether each of the n subblocks is an effective block may include the step of skipping the parsing of the validity flag associated with the n subblocks, ; And parsing valid flags associated with the n subblocks if the size of the n subblocks is less than a preset threshold value.
  • an image decoding apparatus comprising determining a distribution of significant coefficients that are non-zero coefficients in a coefficient block, the apparatus comprising: at least one processor; And a memory in which the instructions are stored, the instructions being configured to cause the image decoding apparatus to perform a method comprising the steps of: when executed by the one or more processors, The method includes parsing, from the bitstream, a significant flag indicating whether the current coefficient block is a valid block having at least one non-zero coefficient; If the valid flag indicates that the current coefficient block is a valid block, for the current coefficient block, a sub-block determined as a valid block is divided into n equal-sized sub- The method comprising the steps of: determining whether each of the n subblocks is a valid block, while dividing the blocks recursively into blocks.
  • the step of determining whether each of the n subblocks is an effective block may include the step of skipping the parsing of the validity flag associated with the n subblocks, ; And parsing valid flags associated with the n subblocks if the size of the n subblocks is less than a predetermined threshold.
  • a method of encoding a coefficient block having an array of coefficients divisible by coefficients of a plurality of subblocks wherein the last valid subblock is the last subblock in a subblock scan order having at least one non-zero coefficient; Coding information indicating a location of the determined last valid subblock; Wherein each sub-block except the left-most sub-block of the coefficient block among the sub-blocks preceding the last valid sub-block in the sub-block scan order is an effective sub-block having at least one non- Encoding a syntax element for a sub-block; And encoding coefficients of the last valid subblock, coefficients of the left-ordered subblock, and coefficients of subblocks indicating that the syntax element is an effective subblock having at least one non-zero coefficient.
  • a method of decoding a coefficient block having an array of coefficients divisible by coefficients of a plurality of subblocks comprises decoding information indicating the position of the last valid subblock, wherein the last valid subblock is the last subblock in the subblock scan order having at least one non-zero coefficient; Wherein each sub-block except the left-most sub-block of the coefficient block among the sub-blocks preceding the last valid sub-block in the sub-block scan order is an effective sub-block having at least one non- Decoding the syntax element for the sub-block; And decoding coefficients of the last valid sub-block, coefficients of the left-ordered sub-block, and coefficients of sub-blocks indicating that the syntax element is an effective sub-block having at least one non-zero coefficient.
  • an apparatus for decoding a coefficient block having an array of coefficients divisible into coefficients of a plurality of subblocks includes one or more processors; And a memory in which instructions are stored, the instructions being configured to cause the image decoding apparatus to perform a method comprising the steps of: when executed by the one or more processors, The method includes decoding information indicating a position of a last valid subblock, wherein the last valid subblock is the last subblock in the subblock scan order having at least one non-zero coefficient; Wherein each sub-block except the left-most sub-block of the coefficient block among the sub-blocks preceding the last valid sub-block in the sub-block scan order is an effective sub-block having at least one non- Decoding the syntax element for the sub-block; And decoding coefficients of the last valid sub-block, coefficients of the left-ordered sub-block, and coefficients of sub-blocks indicating that the syntax element is an effective sub-block having at least one non-
  • FIG. 1 is an exemplary block diagram of an image encoding apparatus in which the techniques of the present disclosure may be implemented.
  • 2 is an exemplary view of neighboring blocks of the current block.
  • FIG. 3 is an exemplary block diagram of an image decoding apparatus capable of implementing the techniques of the present disclosure
  • FIG. 4 is a diagram illustrating exemplary scan schemes used for encoding quantized coefficients of a square coefficient block.
  • FIG. 5 is a diagram illustrating a scan sequence of subblocks and coefficients in more detail for a diagonal scan scheme.
  • FIG. 6 is a diagram showing an example of a 32x32 coefficient block.
  • FIG. 7 is a diagram illustrating sub-blocks preceding the last valid sub-block in the scan order in the 32 ⁇ 32 coefficient block of FIG.
  • FIG. 8 is a diagram showing sub-blocks trailing the last valid sub-block in the scan order in the 32x32 coefficient block of FIG. 6.
  • FIG. 9 is a flowchart illustrating a method of encoding a coefficient block according to an embodiment of the present invention.
  • FIG. 10 is a flowchart illustrating a method of encoding a coefficient block by an image decoding apparatus according to an embodiment of the present invention.
  • Fig. 11 is a diagram showing blocks generated by dividing a valid block hierarchically until a single effective coefficient is reached, for the 32x32 block illustrated in Fig. 6.
  • Fig. 11 is a diagram showing blocks generated by dividing a valid block hierarchically until a single effective coefficient is reached, for the 32x32 block illustrated in Fig. 6.
  • FIG. 12 is a tree formed by scanning blocks generated in the coefficient block of FIG. 11 in a diagonal fashion.
  • FIG. 13 is a diagram illustrating a tree of a simple structure composed of three layers.
  • 14 is a diagram illustrating a 64x64 coefficient block.
  • 15 is a flowchart showing a process of a large coefficient block in the image decoding apparatus.
  • the techniques of this disclosure generally relate to efficiently representing the location of non-zero coefficients (i.e., significant coefficients) for a coefficient block that is an array of quantized coefficients that is the result of transformations and quantization.
  • FIG. 1 is an exemplary block diagram of an image encoding apparatus in which the techniques of the present disclosure may be implemented.
  • the image encoding apparatus includes a block division unit 110, a prediction unit 120, a subtracter 130, a transform unit 140, a quantization unit 145, an encoding unit 150, an inverse quantization unit 160, 165, an adder 170, a filter unit 180, and a memory 190.
  • Each component of the image encoding apparatus may be embodied as a hardware chip, or may be embodied as software, and the microprocessor may be implemented to execute the function of the software corresponding to each component.
  • the block dividing unit 110 divides each picture constituting an image into a plurality of CTUs (Coding Tree Units), and then recursively divides the CTUs using a tree structure.
  • a leaf node in a tree structure becomes a coding unit (CU) which is a basic unit of coding.
  • CU coding unit
  • a quad tree (QuadTree, QT) in which an upper node (or a parent node) is divided into four sub nodes (or child nodes) of the same size, or a QT structure and an upper node are divided into two lower nodes
  • QTree plus BinaryTree (QTBT) structure combining a binary tree (BT) structure can be used. That is, QTBT can be used to partition the CTU into multiple CUs.
  • a CTU can be first divided into a QT structure.
  • the quadtree partitioning can be repeated until the size of the splitting block reaches the minimum block size (MinQTSize) of the leaf node allowed in QT. If the leaf node of the quadtree is not greater than the maximum block size (MaxBTSize) of the root node allowed in BT, it can be further partitioned into a BT structure.
  • MinQTSize minimum block size
  • MaxBTSize maximum block size
  • a symmetric horizontal splitting and a vertically splitting type i.e., symmetric vertical splitting
  • a vertically splitting type i.e., symmetric vertical splitting
  • the block of the node may be divided into two rectangular blocks having a size ratio of 1: 3, or the block of the corresponding node may be divided into diagonal directions.
  • the division information generated by the block division unit 110 by dividing the CTU by the QTBT structure is encoded by the encoding unit 150 and transmitted to the image decoding apparatus.
  • a block corresponding to a CU to be encoded or decoded i.e., a leaf node of QTBT
  • a 'current block' a block corresponding to a CU to be encoded or decoded
  • the prediction unit 120 generates a prediction block by predicting the current block.
  • the prediction unit 120 includes an intra prediction unit 122 and an inter prediction unit 124.
  • the current blocks in a picture may each be predictively coded. Prediction of the current block may be performed using an intra prediction technique (using data from a picture containing the current block) or an inter prediction technique (using data from a picture previously coded for a picture containing a current block) And can be generally performed. Inter prediction includes both unidirectional prediction and bidirectional prediction.
  • a set of motion information may be available.
  • a set of motion information may include motion information for forward and backward prediction directions.
  • the forward and backward prediction directions are two prediction directions of the bi-directional prediction mode, and the terms “forward " and “ backward " do not necessarily have geometric meanings. Instead, they generally correspond to whether the reference picture is to be displayed before the current picture (" backward ") or later (" forward ").
  • the "forward" and "backward” prediction directions may correspond to reference picture list 0 (RefPicList0) and reference picture list 1 (RefPicList1) of the current picture.
  • the motion information For each prediction direction, the motion information includes a reference index and a motion vector.
  • the reference index can be used to identify the reference picture in the current reference picture list (RefPicList0 or RefPicList1).
  • the motion vector has horizontal (x) and vertical (y) components.
  • the horizontal component represents the horizontal displacement in the reference picture relative to the position of the current block in the current picture, which is needed to locate the x-coordinate of the reference block.
  • the vertical component represents the vertical displacement in the reference picture relative to the position of the current block, which is needed to locate the y coordinate of the reference block.
  • the inter-prediction unit 124 searches for a block most similar to the current block in the reference picture coded and decoded earlier than the current picture, and generates a prediction block for the current block using the searched block. Then, a motion vector corresponding to the displacement between the current block in the current picture and the prediction block in the reference picture is generated.
  • motion estimation is performed on a luma component, and motion vectors calculated based on luma components are used for both luma components and chroma components.
  • the motion information including the information on the reference picture used for predicting the current block and the information on the motion vector is encoded by the encoding unit 150 and transmitted to the video decoding apparatus.
  • the motion information of the current block can be transmitted to the decoding apparatus by encoding information capable of identifying the neighboring block. This method is referred to as a 'merge mode'.
  • the inter-prediction unit 124 selects a predetermined number of merge candidate blocks (hereinafter, merge candidates) from neighboring blocks of the current block.
  • the neighboring blocks for deriving the merge candidate include a left block L, an upper block A, an upper right block AR and a lower left block BL adjacent to the current block in the current picture ),
  • upper left block AL may be used in whole or in part.
  • a block located in a reference picture (which may be the same as or different from a reference picture used for predicting the current block) rather than the current picture in which the current block is located may be used as the merge candidate.
  • a co-located block co-located with the current block in the reference picture or blocks adjacent to the same co-located block may be further used as merge candidates.
  • the inter-prediction unit 124 constructs a merged list including a predetermined number of merge candidates using these neighboring blocks.
  • the merge candidate to be used as the motion information of the current block among the merge candidates included in the merge list is selected and merge index information for identifying the selected candidate is generated.
  • the generated merge index information is encoded by the encoding unit 150 and transmitted to the decoding apparatus.
  • Another method of coding motion information is to encode a differential motion vector.
  • the inter-prediction unit 124 derives the predicted motion vector candidates for the motion vector of the current block using neighboring blocks of the current block.
  • the neighboring blocks used for deriving the predicted motion vector candidates include a left block L, an upper block A, an upper right block AR, a lower left block (FIG. 5) adjacent to the current block in the current picture shown in FIG. BL), and upper left block AL may be used in whole or in part.
  • a block located in a reference picture (which may be the same as or different from a reference picture used for predicting the current block), which is not the current picture in which the current block is located, is used as a neighboring block used to derive the predicted motion vector candidates It is possible.
  • a co-located block in the reference picture or a block adjacent to the co-located block in the reference picture may be used.
  • the inter-prediction unit 124 derives the predicted motion vector candidates using the motion vectors of the neighboring blocks, and determines a predicted motion vector for the motion vector of the current block using the predicted motion vector candidates. Then, a differential motion vector is calculated by subtracting the predicted motion vector from the motion vector of the current block.
  • the predictive motion vector can be obtained by applying a predefined function (e.g., median value, mean value calculation, etc.) to the predicted motion vector candidates.
  • a predefined function e.g., median value, mean value calculation, etc.
  • the image decoding apparatus also knows a predefined function.
  • the neighboring blocks used for deriving the predicted motion vector candidates are already encoded and decoded, the motion vector of the neighboring blocks is already known by the video decoding apparatus. Therefore, the image encoding apparatus does not need to encode information for identifying a predicted motion vector candidate. Therefore, in this case, the information on the differential motion vector and the information on the reference picture used for predicting the current block are coded.
  • the predicted motion vector may be determined by selecting one of the predicted motion vector candidates.
  • information for identifying the predictive motion vector candidates selected is further coded together with the information about the differential motion vector and the reference pictures used for predicting the current block.
  • the intra prediction unit 122 predicts pixels in the current block using pixels (reference pixels) located in the vicinity of the current block in the current picture including the current block. There are a plurality of intra prediction modes according to the prediction direction, and the neighboring pixels to be used and the calculation formula are defined differently according to each prediction mode. In particular, the intra prediction unit 122 may determine an intra prediction mode to be used for coding the current block. In some examples, the intra-prediction unit 122 may encode the current block using a plurality of intra-prediction modes and may select an appropriate intra-prediction mode to use from the tested modes. For example, the intra-prediction unit 122 may calculate rate-distortion values using a rate-distortion analysis for various tested intra-prediction modes, and may employ rate- The intra prediction mode may be selected.
  • the intra prediction unit 122 selects one intra prediction mode from a plurality of intra prediction modes, and predicts the current block using neighboring pixels (reference pixels) determined by the selected intra prediction mode and an equation.
  • the information on the selected intra prediction mode is encoded by the encoding unit 150 and transmitted to the video decoding apparatus.
  • the subtractor 130 subtracts the prediction block generated by the intra prediction unit 122 or the inter prediction unit 124 from the current block to generate a residual block.
  • the transform unit 140 transforms the residual signal in the residual block having pixel values in the spatial domain into transform coefficients in the frequency domain.
  • the transform unit 140 may transform the residual signals in the residual block by using the size of the current block as a transform unit or divide the residual block into a plurality of smaller subblocks and transform residual signals into subblock- Conversion. There are various ways of dividing the residual block into smaller sub-blocks. For example, it may be divided into sub blocks of the same size that have been set, or a QT (quadtree) type partition using a residual block as a root node.
  • QT quadtree
  • the quantization unit 145 quantizes the transform coefficients output from the transform unit 140, and outputs the quantized transform coefficients to the encoding unit 150.
  • the encoding unit 150 encodes the quantized transform coefficients using a coding scheme such as CABAC to generate a bitstream. This encoding is typically performed on the quantized transform coefficients using one of a plurality of available scan patterns.
  • One aspect of the teachings of the present disclosure generally relates to efficiently representing the location of non-zero coefficients (i.e., significant coefficients) for a coefficient block that is an array of quantized coefficients that is the result of transformations and quantization.
  • certain techniques of the present disclosure may be performed by the encoding unit 150.
  • the encoding unit 150 may perform the techniques of the present disclosure described with reference to FIGS. 6 to 15 below.
  • one or more other units of the encoding apparatus may additionally be involved in performing the techniques of the present disclosure.
  • the encoding unit 150 encodes information such as a CTU size, a MinQTSize, a MaxBTSize, a MaxBTDepth, a MinBTSize, a QT division flag, a BT division flag, and a division type associated with the block division so that the video decoding apparatus So that the block can be divided.
  • the encoding unit 150 encodes information on a prediction type indicating whether the current block is coded by intraprediction or inter prediction, and encodes the intra prediction information or the inter prediction information according to the prediction type.
  • a syntax element for the intra-prediction mode is encoded as intra-prediction information.
  • the encoding unit 150 encodes a syntax element for inter-prediction information.
  • the syntax elements for the inter prediction information include the following.
  • mode information indicating whether motion information of the current block is coded in the merge mode or in a mode in which the differential motion vector is coded
  • the encoding unit 150 converts the merge index information indicating which candidate of the merge candidates is selected as a candidate for extracting the motion information of the current block as a syntax element for the motion information .
  • motion information when motion information is coded by a mode for coding a differential motion vector, information on a differential motion vector and information on a reference picture are encoded into syntax elements for motion information. If the predictive motion vector is determined in a manner of selecting one of the plurality of predictive motion vector candidates, the syntax element for the motion information further includes predictive motion vector identification information for identifying the selected candidate .
  • the inverse quantization unit 160 dequantizes the quantized transform coefficients output from the quantization unit 145 to generate transform coefficients.
  • the inverse transform unit 165 transforms the transform coefficients output from the inverse quantization unit 160 from the frequency domain to the spatial domain and restores the residual block.
  • the adder 170 adds the reconstructed residual block and the prediction block generated by the predictor 120 to reconstruct the current block.
  • the pixels in the reconstructed current block are used as reference pixels when intra prediction of the next-order block is performed.
  • the filter unit 180 deblock-filters the boundaries between the restored blocks and stores them in the memory 190 to remove blocking artifacts caused by coding / decoding on a block-by-block basis. When all the blocks in one picture are reconstructed, the reconstructed picture is used as a reference picture for inter prediction of a block in a picture to be coded later.
  • FIG. 3 is an exemplary block diagram of an image decoding apparatus capable of implementing the techniques of the present disclosure
  • the image decoding apparatus includes a decoding unit 310, an inverse quantization unit 320, an inverse transform unit 330, a prediction unit 340, an adder 350, a filter unit 360, and a memory 370.
  • each component may be implemented as a hardware chip, or may be implemented as software, and a microprocessor may be implemented to execute functions of software corresponding to each component.
  • the decoding unit 310 decodes the bitstream received from the image encoding apparatus to extract information related to the block division to determine a current block to be decoded and outputs prediction information and residual signal information necessary for restoring the current block .
  • the decoding unit 310 extracts information on a CTU size from an SPS (Sequence Parameter Set) or a PPS (Picture Parameter Set) to determine a size of the CTU, and divides the picture into CTUs of a predetermined size. Then, the CTU is determined as the top layer of the tree structure, that is, the root node, and the CTU is divided using the tree structure by extracting the partition information for the CTU. For example, when the CTU is divided using the QTBT structure, the first flag (QT_split_flag) related to the division of the QT is first extracted and each node is divided into four nodes of the lower layer. For the node corresponding to the leaf node of the QT, the second flag (BT_split_flag) related to the BT division and the division type information are extracted and the corresponding leaf node is divided into the BT structure.
  • SPS Sequence Parameter Set
  • PPS Picture Parameter Set
  • the decoding unit 310 extracts information on a prediction type indicating whether the current block is intra-predicted or inter-predicted.
  • the decoding unit 310 extracts a syntax element for the intra prediction information (intra prediction mode) of the current block.
  • the decoding unit 310 extracts a syntax element for the inter prediction information.
  • mode information indicating whether a motion information of a current block is coded by a mode among a plurality of coding modes is extracted.
  • the plurality of coding modes include a merge mode including a skip mode and a differential motion vector coding mode.
  • the decoding unit 310 extracts merge index information indicating whether to derive the motion vector of the current block from any of the merge candidates as a syntax element for the motion information.
  • the decoding unit 310 extracts information on the differential motion vector and information on the reference picture referred to by the motion vector of the current block as a syntax element for the motion vector do.
  • the predictive motion vector identification information is included in the bitstream. Therefore, in this case, not only the information on the difference motion vector and the information on the reference picture but also the prediction motion vector identification information is extracted as a syntax element for the motion vector.
  • the decoding unit 310 extracts information on the quantized transform coefficients of the current block as information on the residual signal.
  • Another aspect of the teachings of the present disclosure generally relates to efficiently decoding the location of non-zero coefficients (i.e., significant coefficients) for a coefficient block that is an array of quantized coefficients that is the result of transform and quantization. Accordingly, certain techniques of the present disclosure may be performed by the decryption unit 310. [ That is, for example, the decryption unit 310 may perform the techniques of the present disclosure described below with reference to FIGS. In other instances, one or more other units of the encoding apparatus may additionally be involved in performing the techniques of the present disclosure.
  • the inverse quantization unit 320 dequantizes the quantized transform coefficients and the inverse transform unit 330 generates the residual block for the current block by inversely transforming the dequantized transform coefficients from the frequency domain to the spatial domain to recover the residual signals.
  • the prediction unit 340 includes an intra prediction unit 342 and an inter prediction unit 344.
  • the intra prediction unit 342 is activated when the intra prediction is the prediction type of the current block
  • the inter prediction unit 344 is activated when the intra prediction is the prediction type of the current block.
  • the intra prediction unit 342 determines an intra prediction mode of the current block among the plurality of intra prediction modes from the syntax element for the intra prediction mode extracted from the decoding unit 310, To predict the current block.
  • the inter-prediction unit 344 determines the motion information of the current block using the syntax element for the intra-prediction mode extracted from the decoding unit 310, and predicts the current block using the determined motion information.
  • the inter prediction unit 344 confirms the mode information in the inter prediction, which is extracted from the decoding unit 310.
  • the inter-prediction unit 344 constructs a merge list including a predetermined number of merge candidates using the neighboring blocks of the current block.
  • the way in which the inter prediction unit 344 constructs the merge list is the same as that of the inter prediction unit 124 of the image encoding apparatus.
  • one merge candidate is selected from merge candidates in the merge list using merge index information transmitted from the decoding unit 310.
  • the motion information of the selected merge candidate that is, the motion vector of the merge candidate and the reference picture are set as the motion vector of the current block and the reference picture.
  • the inter-prediction unit 344 derives the predicted motion vector candidates using the motion vectors of the neighboring blocks of the current block, The predicted motion vector for the motion vector of the current frame is determined.
  • the way in which the inter-prediction unit 344 derives the predicted motion vector candidates is the same as that of the inter-prediction unit 124 of the image encoding apparatus. If the video coding apparatus uses any one of the plurality of candidate prediction motion vector candidates as the prediction motion vector of the current block, the syntax element for the motion information includes the prediction motion vector identification information. Accordingly, in this case, the inter-prediction unit 344 can select a candidate indicated by the predicted motion vector identification information among the predicted motion vector candidates as a predicted motion vector.
  • the inter-prediction unit may determine a predicted motion vector by applying the same function as that of the image encoding apparatus.
  • the inter-prediction unit 344 adds the predicted motion vector and the differential motion vector received from the decoding unit 310 to determine a motion vector of the current block.
  • the reference picture referred to by the motion vector of the current block is determined using the information on the reference picture transmitted from the decoding unit 310.
  • the inter prediction unit 342 When the motion vector and the reference picture of the current block are determined in the merge mode or differential motion vector coding mode, the inter prediction unit 342 generates a prediction block of the current block using a block indicated by the motion vector in the reference picture do.
  • the adder 350 adds the residual block output from the inverse transform unit and the prediction block output from the inter prediction unit or the intra prediction unit to reconstruct the current block.
  • the pixels in the reconstructed current block are utilized as reference pixels for intra prediction of a block to be decoded later.
  • the filter unit 360 deblock-filters the boundaries between the restored blocks and stores them in the memory 370 in order to remove blocking artifacts caused by decoding on a block-by-block basis. When all blocks in one picture are reconstructed, the reconstructed picture is used as a reference picture for inter prediction of a block in a picture to be decoded later.
  • the techniques of the present disclosure are concerned with efficiently encoding and decoding the location of non-zero coefficients (i.e., significant coefficients) for a coefficient block that is an array of quantized coefficients that is the result of transform and quantization.
  • Some of the disclosed techniques can be applied directly to residual blocks that have not undergone transformation.
  • the previous four syntaxes relate to the location of the last significant coefficient in the scan order within the coefficient block, where the x and y components for that location are shown separately, Prefix, and suffix.
  • the coded_sub_block_flag is a flag indicating whether each subblock includes one or more non-zero coefficients by dividing the coefficient block into a plurality of subblocks.
  • coded_sub_block_flag is represented by " 0 " if all the coefficients in the corresponding subblock are zero and " 1 " if there is more than one nonzero coefficient.
  • sig _ coeff _flag is that each sub-block coefficients within a non-zero flag indicating whether the recognition agent.
  • sig _ coeff _flag if the zero coefficient is represented by "0", the non-zero if the coefficient is represented by "1".
  • coded_sub_block_flag syntax is signaled only for the sub-block preceding the last significant sub-block in which the last significant coefficient exists in the scan order for the coefficient block.
  • coded_sub_block_flag is " 1 "
  • the sig_coeff_flag syntax for each of all the coefficients in the corresponding subblock is signaled.
  • the coding of the coefficients in the coefficient block is typically performed using one of a plurality of available scan schemes.
  • 4 is a diagram illustrating exemplary scan schemes used for encoding quantized coefficients of a square coefficient block. These scan methods include an up-right diagonal method, a horizontal method, and a vertical method.
  • the coefficients of the current block are scanned in an up-right diagonal manner, and when the current block is coded in the intra prediction mode, One of the branch types is selected and the coefficients of the corresponding block are scanned.
  • the exemplary scan scheme shows the same scan pattern for the subblocks in the coefficient block and the coefficients in each subblock.
  • the scanning order of the sub-blocks is also a horizontal method
  • the scanning order of the coefficients in each sub-block is also a horizontal method.
  • Figure 5 shows the scan order of subblocks and coefficients in more detail for the diagonal scan scheme.
  • the order stored in the actual bit stream is stored in the reverse order of the scan order.
  • the bit stream is stored in the order of the pixel at position 255 to the pixel at position 0 in FIG.
  • the coefficients can be decoded in the opposite direction of the scan order towards the first coefficient in the scan pattern, as will be described further below.
  • coded_sub_block_flag needs 30 bits for 30 subblocks (total of subblocks shown in FIG. 6) among the total 64 subblocks considering the position of the last significant coefficient.
  • the last valid coefficient position is used.
  • the problem is that since the size of the transform block currently being discussed can be as large as 64 ⁇ 64, 128 ⁇ 128, it is necessary to consider that a significant bit number is required for encoding the syntax for expressing the position of the last significant coefficient as the x- will be.
  • the present invention proposes a method of signaling information indicating the location of the last significant sub-block within the coefficient block to be coded.
  • the last valid subblock is the last subblock in the subblock scan order having at least one non-zero coefficient.
  • the positions of the last valid subblock are expressed by the four proposed methods, respectively.
  • the method of coding the coefficient block by the image coding apparatus and the overall process of decoding the coefficient block by the image decoding apparatus will be described with reference to FIGS. 9 and 10, respectively, based on the signaling method of the position of the last valid subblock .
  • FIG. 9 is a flowchart illustrating a method of encoding a coefficient block according to an embodiment of the present invention.
  • the image encoding apparatus determines the last significant sub-block in the current coefficient block to be encoded (S910).
  • the last valid subblock is the last subblock in the subblock scan order having at least one non-zero coefficient.
  • the image encoding apparatus encodes information indicating the position of the last valid sub-block determined (S920).
  • the information indicating the location of the last valid sub-block may be (1) an X-axis index and a Y-axis index value within the coefficient block of the last valid sub-block.
  • the information indicating the location of the last valid subblock may be information on the number of subblocks preceding the last valid subblock in the scan order.
  • the information indicating the position of the last valid subblock may be information on the number of subblocks following the last valid subblock in the scan order.
  • the information indicating the position of the last valid subblock includes information on a selected one of the number of subblocks preceding the last valid subblock or the number of succeeding subblocks in the scan order, And may include a flag value indicating whether it is selected.
  • the image encoding apparatus determines whether each sub-block excluding the left-most sub-block of the coefficient block among the sub-blocks preceding the last valid sub-block in the sub-block scan order is an effective sub-block having at least one non-zero coefficient (Step S930).
  • the syntax element for each sub-block is encoded.
  • the leftmost subblock and the last valid subblock of the coefficient block may be set as valid subblocks having at least one non-zero coefficient.
  • the image encoding apparatus includes coefficients of the leftmost subblock of the coefficient block, coefficients of the last valid subblock, coefficients of the subblocks indicating that the syntax element is an effective subblock having at least one non-zero coefficient,
  • the coefficients of sub-blocks set as valid sub-blocks are encoded (S940).
  • the process of encoding these coefficients may include encoding a flag indicating whether each coefficient in the corresponding sub-block is non-zero or zero.
  • the image coding apparatus skips encoding of the coefficients of the sub-blocks indicating that the syntax element is not an effective sub-block having at least one non-zero coefficient. Also, the image encoding apparatus skips encoding of the coefficients of the sub-blocks trailing the last valid sub-block in the sub-block scan order.
  • FIG. 10 is a flowchart illustrating a method of encoding a coefficient block by an image decoding apparatus according to an embodiment of the present invention.
  • the video decoding apparatus decodes information indicating the position of the last valid subblock in the current coefficient block to be decoded from the coded bitstream (S1010).
  • the video decoding apparatus may further comprise a decoding unit for decoding, from the encoded bit stream, at least one non-zero coefficient of each sub-block excluding the left-most sub-block of the coefficient block among the sub-blocks preceding the last valid sub- Blocks for each sub-block indicating whether the sub-block is an effective sub-block are decoded (S1020).
  • the leftmost subblock and the last valid subblock of the coefficient block may be set as valid subblocks having at least one non-zero coefficient.
  • the video decoding apparatus is characterized in that, from the encoded bit stream, coefficients of the left-ordered sub-block of the coefficient block, coefficients of the last valid sub-block, and the syntax element are valid sub-blocks having at least one non- And the coefficients of the sub-blocks set as the valid sub-blocks are decoded (S1030).
  • the process of decoding these coefficients may include decoding a flag indicating whether each coefficient in the corresponding sub-block is non-zero or zero.
  • the video decoding apparatus skips the decoding of the coefficients of the sub-blocks indicating that the syntax element is not an effective sub-block having at least one non-zero coefficient.
  • the image decoding apparatus skips the decoding of the coefficients of the sub-blocks following the last valid sub-block in the sub-block scan order.
  • the location of the non-zero coefficients after the transform is mostly collected in the low frequency component and is not located in the high frequency, and the position of the last valid coefficient or the last valid subblock is preferentially signaled.
  • Another technique proposed by the present invention is to use subblocks (effective blocks) including at least one non-zero coefficient for n current subblocks (nb 2 or more natural number) equal size ( Significant squares), while signaling whether it is a valid block for each of the subblocks generated using the significant_flag .
  • the validity flag is expressed, for example, as “ 1 " if there is more than one non-zero coefficient (i.e., effective coefficient) in one subblock, and for example, " 0 " If the valid flag value is " 0 ", the corresponding sub-block is no longer divided, and the valid flag value for the lower layer blocks is no longer needed. On the other hand, if the valid flag value is " 1 ", the corresponding block is divided into n subblocks (natural number of 2 or more), and signals validity flags for the subblocks in the lower hierarchy.
  • the block is no longer partitioned, and therefore the valid flag value for blocks in that lower layer is no longer needed.
  • the effective flag value of a given coefficient block is "1" and the coefficient block is a square-shaped coefficient block, it is divided into four square blocks of the lower hierarchy, and each of the four blocks is expressed as a non- .
  • the effective block is repeatedly divided until a single effective coefficient is reached, so that the size of the generated block includes the size of the coefficient block up to a size of 1 x 1 (i.e., a single coefficient). For example, if the coefficient block is 8x8, the block for which the validity flag is determined includes all the sizes of 8x8, 4x4, 2x2, and 1x1.
  • the order of the lower k square blocks proceeds in reverse order from left to right. If the coefficient block is a vertically long rectangle, the order of the lower k square blocks is It proceeds. The process after dividing the rectangular coefficient block into k squares in the lower layer proceeds in the same way as (4) square subblocks in the lower layer of the square block.
  • FIG. 11 is a diagram showing blocks generated by applying the proposed technique to the 32x32 block illustrated in FIG. According to the proposed method, valid flags for the blocks indicated by bold solid lines in FIG. 11 are signaled.
  • the hierarchical structure of each block and the valid flag value of each block are expressed in a tree form as shown in FIG.
  • a node indicated by black means that the valid flag value of the corresponding block is " 1 "
  • a node indicated by white indicates that the valid flag value of the corresponding block is " 0 " .
  • the corresponding node becomes a leaf node, and no child node exists.
  • the corresponding block becomes a leaf node, and there is no lower layer block.
  • the corresponding block may be referred to as a parent node, and the blocks of the lower layer may be referred to as a child node. If the valid flag of a given block is " 1 ", the corresponding block always has four child nodes.
  • the tree of FIG. 12 is constructed by scanning the blocks generated in the coefficient block of FIG. 11 in a diagonal manner.
  • a tree is constructed in consideration of the order of storing the bitstream (i.e., the reverse order of the scan order; upper left, lower left, upper right, and lower right).
  • the diagonal method used in FIG. 12 is an example, and the above-mentioned conventional three types of scan methods can be used according to existing conditions. If a scanning method other than diagonal is used, the tree for the coefficient block of FIG. 11 is configured differently from that of FIG. It is also possible to construct a tree in a z-scan (reverse order) manner and use the bit stream storage order (i.e., reverse order of z-scan order; top left, top right, bottom left, bottom right).
  • the valid flag for a block of the same size as the coefficient block can be regarded as a coded block flag (cbf).
  • cbf coded block flag
  • the valid flag for the 32x32 block performs the cbf function. Since the valid flag value of the 32x32 block for the coefficient block illustrated in FIG. 11 is " 1 ", the valid flags for the lower four 16x16 blocks are obtained. At this time, the four 16x16 blocks are scanned in the reverse order of the upper left, lower left, upper right, and lower right blocks according to the diagonal scanning method. The four valid flags become " 0011 ".
  • a depth-first search or a breadth-first search may be used to search the tree of FIG.
  • the depth-first method and the width-first method refer to the order of searching the nodes of the tree. That is, according to the present invention, bits allocated to the node are read while searching for nodes of the tree according to a predetermined method among the depth-first method and the width-first method, thereby forming a bit-stream. For example, referring to the tree structure illustrated in FIG. 13A, (1) if a bit stream is formed in a depth-first manner, bits are read in order of ABCDFGHIE; (2) , The bits are read in order of ABCDEFGHI.
  • bitstream is constructed by searching the tree of FIG. 12 proposed by the present invention by the width-first search, as follows.
  • the tree of FIG. 12 is searched by depth-first search to construct a bit stream as follows.
  • a bit stream can be composed of "1", "0001", and "1000".
  • the valid flag value of the uppermost parent node is " 1 ", which means that at least one of the four child nodes of the block must have a valid flag value of " 1 ".
  • the flag value of the last remaining child node must be " 1 ".
  • the flag value of the fourth child node can be deduced to be " 1 " in both the encoding apparatus and the decoding apparatus, so that it is not necessary to be signaled.
  • bit stream is constructed by the breadth first search method for the tree illustrated in FIG. 12 as follows. Here, a total of nine “ 1 " values that are not signaled are indicated by " - ".
  • the exception rule is applied to the tree of FIG. 12 to construct a bitstream by depth-first search.
  • a total of nine " 1 " values that are not signaled are indicated by " - ".
  • Another technique proposed in this disclosure is to set the coefficient values of a certain portion corresponding to the high frequency component in the coefficient block to " 0 " regardless of the actual value, when the coefficient block (or the quantized transform block) .
  • FIG. 14 illustrates a 64x64 coefficient block. If the predetermined threshold size is 32x32, non-zero coefficients (indicated by black) located in an area excluding the left upper 32x32 block are all zeroed. Therefore, all of the valid flags for the 32 ⁇ 32 left-justified block, the right-justified 32 ⁇ 32 block, and the 32 ⁇ 32 right-right block are set to "0".
  • a given coefficient block is a rectangle of M ⁇ kM or kM ⁇ M size
  • a given coefficient block can be divided into k ⁇ M ⁇ M blocks.
  • the predetermined threshold size is h ⁇ h (h ⁇ M) All the coefficient values of the blocks other than the upper hxh block or the leftmost hxh block can be forcibly zeroed.
  • the predetermined threshold size is hxh (M ⁇ h ⁇ kM)
  • all the coefficient values of the remaining blocks excluding the uppermost Mxh block or the leftmost hxM block can be forcibly zeroed. For example, if the coefficient block is 16 ⁇ 4 and the predetermined threshold size is 8 ⁇ 8, the non-zero coefficients of the right two 4 ⁇ 4 blocks out of the four 4 ⁇ 4 blocks are all zeroed.
  • Valid flag values for the 64x64 coefficient block illustrated in FIG. 14 are expressed as follows through the diagonal scanning method (reverse order) and width-first search. Of the four 32x32 blocks, the preceding three blocks in the scan order are set to " 000 " despite the fact that the non-zero coefficients actually exist, and only the last fourth block becomes the flag value " 1 ". In addition, applying the exception rule results in information that can be inferred without signaling all 4 bits (" 0001 ") for 32x32 blocks. Further, the coefficients of the zeroed blocks are not signaled.
  • the zeroing of the high-frequency block can be applied again to the four blocks corresponding to the grandchild node if the block size of the grandchild node of the coefficient block is still larger than the threshold value.
  • This exception rule is particularly useful for increasing the coding efficiency of a large coefficient block in that the larger the coefficient block size, the non-zero coefficients are mostly concentrated on the low frequency components after conversion and hardly exist in the high frequency components. Therefore, the larger the transform size, the more the compression performance can be increased by the proposed zeroing technique.
  • This zeroing technique may be combined with the techniques described with reference to FIGS.
  • the valid flag values signaled to represent the distribution of non-zero coefficients are:
  • the rules applied are as follows.
  • a total of 80 bits is required to represent the position of the non-zero coefficients of the 32x32 coefficient block illustrated in FIG.
  • the coefficient block of FIG. 6, which is the same as the coefficient block of FIG. 11 is expressed by the method adopted in the existing HEVC, even if four syntaxes for expressing the position of the last significant coefficient are excluded, the remaining two syntaxes coded_sub_block_flag and _ sig coeff number of bits required for _flag) is approximately 140 bits. If the information for expressing the position of the last significant coefficient is added to 140 bits, more bits are required.
  • the 32 ⁇ 32 block valid flag for the coefficients illustrated in Figure 4 are as follows.
  • the effective flag value for the entire coefficient block i.e., the 32x32 block
  • the flag value for the 16th block is set to " 000 "
  • the flag value for the fourth block is set to " 1 ". Therefore, the validity flag " 0001 " for four 16x16 blocks need not be signaled.
  • FIG. 15 is a flowchart showing a process of a large coefficient block in the image decoding apparatus. It should be noted that although the use of the width-first search method is assumed in FIG. 15, depth-first search may be used. For the sake of simplicity, FIG. 15 does not include the above-mentioned exception rule, and it is assumed that the coefficient block has a square shape.
  • the image decoding apparatus sets the size (i.e., TU size) of the current coefficient block to be decoded to N.
  • the video decoding apparatus parses the valid flag for the current coefficient block and, if the valid flag is not " 0 ", divides the coefficient block into four blocks. If the size (N / 2) of the generated block is equal to or larger than the threshold value th , the image decoding apparatus sets valid flags for the generated four blocks to "0001" without parsing the valid flag. Conversely, when the size (N / 2) of the generated block is less than the threshold value th , the image decoding apparatus parses valid flags for the generated four blocks.
  • the technique described with reference to FIGS. 11 to 15 is more useful when a transform of a block to be coded is skipped and a residual value itself is sent instead of high frequency and low frequency components (or coefficients) . Focusing on this point, the image encoding apparatus applies the technique described with reference to Figs. 11 to 15 when the conversion of the block to be coded is skipped, and Figs. 6 to 10 are applied to the quantized transform coefficient block to which the transform is performed And may be configured to apply the techniques described above.

Landscapes

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

Abstract

본 개시는 계수 블록 내 비-제로 계수들의 위치를 효율적으로 표현하는 것과 관련되어 있다. 본 개시의 일 측면에 따르면, 복수의 서브 블록들로 분할 가능한 계수 블록을 부호화함에 있어서, 계수 블럭에 대해, 유효 블록으로 결정된 블록을 단일 유효 계수에 도달될 때까지 균등한 크기의 작은 블록들로 반복적으로(recursively) 분할하면서, 생성된 각 블록들에 대해 유효 블록인지 여부를 시그널링한다. 본 개시의 다른 측면에 따르면, 복수의 서브 블록들로 분할 가능한 계수 블록을 부호화함에 있어서, 마지막 유효 서브 블록의 위치를 기초로 계수 블록 내 비-제로 계수들의 위치를 효율적으로 표현하는 방법이 제공된다.

Description

비-제로 계수들의 위치를 표현하는 방법 및 장치
본 발명은 영상 부호화 또는 복호화에 관한 것으로, 보다 상세하게는, 비-제로 계수들의 위치를 표현하고 결정하는 것과 관련되어 있다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래 기술을 구성하는 것은 아니다.
영상 압축 기법들은 공간적 예측 및/또는 시간적 예측을 포함하여 비디오 시퀀스들 내에 내재된 리던던시(redundancy)를 감소시키거나 제거한다. 블록-기반 비디오 코딩에서는, 비디오 프레임 또는 슬라이스가 블록들로 파티셔닝 (partitioning) 될 수도 있다. 각각의 블록은 더 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스 내의 블록들은 동일한 프레임 또는 슬라이스 내의 이웃하는 블록들 내의 참조 샘플들에 대한 공간적 예측을 사용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 블록들은 동일한 프레임 또는 슬라이스 내의 이웃하는 블록들 내의 참조 샘플들에 대한 공간적 예측 또는 다른 참조 프레임들 내의 참조 샘플들에 대한 시간적 예측을 사용할 수도 있다. 공간적 또는 시간적 예측은 결과적으로 부호화될 블록에 대한 예측 블록을 생성한다. 잔차 데이터(residual data)는 부호화될 원래의 블록과 예측 블록 사이의 픽셀 차분들을 나타낸다.
인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 사이의 차분을 나타내는 잔차 데이터에 따라 인코딩된다. 인트라-코딩된 블록은 인트라-코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환될 수도 있어, 잔차 변환 계수들을 발생시키고, 이 잔차 변환 계수들은 그 후에 양자화될 수도 있다. 2차원 어레이로 정렬되는 양자화된 변환 계수들은 특정한 순서로 스캐닝되어 엔트로피 코딩을 위한 변환 계수들의 1차원 벡터를 생성할 수도 있다.
본 발명은 복수의 (서브) 블록으로 분할 가능한 계수들의 어레이를 갖는 계수 블록에서 비-제로 계수들의 위치를 효율적으로 표현하거나 결정하는 방법을 제공하는 데 그 주된 목적이 있다.
본 발명의 일 측면에 의하면, 계수 블록에서 비-제로(non-zero) 계수들인 유효 계수들(significant coefficients)의 분포를 부호화하는 것을 포함하는 영상 부호화 방법을 제공한다. 상기 영상 부호화 방법은, 현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 부호화하는 단계; 상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개(n은 2 이상의 자연수)의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계; 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 부호화를 스킵(skip)하는 단계; 및 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그를 부호화하는 단계를 포함한다.
본 발명의 다른 측면에 의하면, 계수 블록에서 비-제로 계수들인 유효 계수들의 분포를 결정하는 것을 포함하는 영상 복호화 방법을 제공한다. 상기 영상 복호화 방법은, 비트 스트림으로부터, 현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 파싱하는 단계; 상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개(n은 2 이상의 자연수)의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계를 포함한다. 여기서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계는, 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계; 및 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 측면에 의하면, 계수 블록에서 비-제로 계수들인 유효 계수들의 분포를 결정하는 것을 포함하는 영상 복호화 장치로서, 하나 이상의 프로세서; 및 명령어들이 저장된 메모리를 포함하며, 상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때 상기 영상 복호화 장치로 하여금, 다음과 같은 단계들을 포함하는 방법을 수행하도록 구성된다. 상기 방법은 비트 스트림으로부터, 현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 파싱하는 단계; 상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계를 수행하도록 구성된다. 여기서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계는, 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계; 및 상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계를 포함한다.
본 발명의 또 다른 측면에 의하면, 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 부호화하는 방법을 제공한다. 상기 계수 블록의 부호화 방법은, 마지막 유효 서브 블록을 결정하는 단계, 여기서 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로(non-zero) 계수를 갖는 서브 블록 스캔 순서상 마지막 서브 블록임; 상기 결정된 마지막 유효 서브 블록의 위치를 가리키는 정보를 부호화하는 단계; 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 부호화하는 단계; 및 상기 마지막 유효 서브 블록의 계수들과, 상기 좌상귀 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 부호화하는 단계를 포함한다.
본 발명의 또 다른 측면에 의하면, 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 복호화하는 방법을 제공한다. 상기 계수 블록의 복호화 방법은, 마지막 유효 서브 블록의 위치를 가리키는 정보를 복호화하는 단계 - 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로 계수를 갖는 상기 서브 블록 스캔 순서상 마지막 서브 블록임 - ; 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 복호화하는 단계; 및 상기 마지막 유효 서브 블록의 계수들과, 상기 좌상귀 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 복호화하는 단계를 포함한다.
본 발명의 또 다른 측면에 의하면, 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 복호화하는 장치를 제공한다. 상기 장치는 하나 이상의 프로세서; 및 명령어들이 저장된 메모리를 포함하되, 상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때 상기 영상 복호화 장치로 하여금, 다음과 같은 단계들을 포함하는 방법을 수행하도록 구성된다. 상기 방법은, 마지막 유효 서브 블록의 위치를 가리키는 정보를 복호화하는 단계 - 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로 계수를 갖는 상기 서브 블록 스캔 순서상 마지막 서브 블록임 - ; 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 복호화하는 단계; 및 상기 마지막 유효 서브 블록의 계수들과, 상기 좌상귀 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 복호화하는 단계를 포함한다.
도 1은 본 개시의 기술들을 구현할 수 있는 영상 부호화 장치에 대한 예시적인 블록도이다.
도 2는 현재 블록의 주변블록에 대한 예시도이다.
도 3은 본 개시의 기술들을 구현할 수 있는 영상 복호화 장치에 대한 예시적인 블록도이다.
도 4는 정사각형 계수 블록의 양자화된 계수들의 부호화에 이용되는 예시적인 스캔 방식들을 나타낸 도면이다.
도 5는 diagonal 스캔 방식에 대한 더 상세한 서브 블록 및 계수들의 스캔 순서를 예시한 도면이다.
도 6은 32×32 계수 블록의 일례를 도시한 도면이다.
도 7은 도 6의 32×32 계수 블록에서 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들을 표시한 도면이다.
도 8은 도 6의 32×32 계수 블록에서 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들을 표시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 영상 부호화 장치가 계수 블록을 부호화하는 방법을 도시한 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 영상 복호화 장치가 계수 블록을 부호화하는 방법을 도시한 흐름도이다.
도 11은, 도 6에 예시된 32×32 블록에 대해, 유효 블록을 단일 유효 계수에 도달될 때까지 계층적으로 분할함에 따라 생성된 블록들을 표시한 도면이다.
도 12는 도 11의 계수 블록에서 생성되는 블록들을 diagonal 방식으로 스캔하여 구성한 트리이다.
도 13은 3개의 계층으로 구성된 간단한 구조의 트리를 예시한 도면이다.
도 14는 64×64 계수 블록을 예시한 도면이다.
도 15는 영상 복호화 장치가 큰 계수 블록에 대한 처리 과정을 도시한 흐름도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성 요소들에 식별 부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 개시의 기술들은, 일반적으로, 변환 및 양자화의 결과물인 양자화된 계수들의 어레이인 계수 블록에 대해 비-제로 계수(즉, 유효 계수; significant coefficient)들의 위치를 효율적으로 표현하는 것과 관련된다.
도 1은 본 개시의 기술들을 구현할 수 있는 영상 부호화 장치에 대한 예시적인 블록도이다.
영상 부호화 장치는 블록 분할부(110), 예측부(120), 감산기(130), 변환부(140), 양자화부(145), 부호화부(150), 역양자화부(160), 역변환부(165), 가산기(170), 필터부(180) 및 메모리(190)를 포함한다. 영상 부호화 장치는 각 구성요소는 하드웨어 칩으로 구현될 수 있으며, 또는 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.
블록 분할부(110)는 영상을 구성하는 각 픽처(picture)를 복수의 CTU(Coding Tree Unit)으로 분할한 이후에, CTU를 트리 구조(tree structure)를 이용하여 반복적으로(recursively) 분할한다. 트리 구조에서의 리프 노드(leaf node)가 부호화의 기본 단위인 CU (coding unit)가 된다. 트리 구조로는 상위 노드(혹은 부모 노드)가 동일한 크기의 네 개의 하위 노드(혹은 자식 노드)로 분할되는 쿼드트리(QuadTree, QT), 또는 이러한 QT 구조 및 상위 노드가 두 개의 하위 노드로 분할되는 바이너리트리(BinaryTree, BT) 구조를 혼용한 QTBT (QuadTree plus BinaryTree) 구조가 사용될 수 있다. 즉, CTU를 다수의 CU로 분할하기 위해 QTBT를 사용할 수 있다.
QTBT (QuadTree plus BinaryTree) 구조에서, CTU는 먼저 QT 구조로 분할될 수 있다. 쿼드트리 분할은 분할 블록(splitting block)의 크기가 QT에서 허용되는 리프 노드의 최소 블록 크기(MinQTSize)에 도달 할 때까지 반복 될 수 있다. 쿼드트리의 리프 노드가 BT에서 허용되는 루트 노드의 최대 블록 크기(MaxBTSize)보다 크지 크지 않은 경우, BT 구조로 더 파티셔닝될 수 있다. BT에서는 복수의 분할 타입이 존재할 수 있다. 예컨대, 일부 예시에서, 해당 노드의 블록을 동일 크기의 두 개 블록으로 가로로 분할하는 타입(즉, symmetric horizontal splitting)과 세로로 분할하는 타입(즉, symmetric vertical splitting) 두 가지가 존재할 수 있다. 또한, 해당 노드의 블록을 서로 비대칭 형태의 두 개의 블록으로 분할하는 타입이 추가로 더 존재할 수도 있다. 비대칭 형태로는 해당 노드의 블록을 1:3의 크기 비율을 가지는 두 개의 직사각형 블록으로 분할하는 형태를 포함할 수 있고, 혹은 해당 노드의 블록을 대각선 방향으로 분할하는 형태를 포함할 수도 있다.
블록 분할부(110)가 QTBT 구조에 의해 CTU를 분할하여 생성하는 분할 정보는 부호화부(150)에 의해 부호화되어 영상 복호화 장치로 전달된다.
이하에서는, 부호화 또는 복호화하고자 하는 CU(즉, QTBT의 리프 노드)에 해당하는 블록을 '현재 블록'이라 칭한다.
예측부(120)는 현재 블록을 예측하여 예측블록을 생성한다. 예측부(120)는 인트라 예측부(122)와 인터 예측부(124)를 포함한다.
일반적으로, 픽처 내 현재 블록들은 각각 예측적으로 코딩될 수 있다. 현재 블록의 예측은 (현재 블록을 포함하는 픽처으로부터의 데이터를 사용하는) 인트라 예측 기술 또는 (현재 블록을 포함하는 픽처에 대해 이전에 코딩된 픽처로부터의 데이터를 사용하는) 인터 예측 기술을 사용하여 일반적으로 수행될 수 있다. 인터 예측은 단방향 예측과 양방향 예측 모두를 포함한다.
각각의 인터 예측된 블록에 대해, 움직임 정보 세트가 이용 가능할 수 있다. 한 세트의 움직임 정보는 순방향(forward) 및 역방향(backward) 예측 방향에 대한 움직임 정보를 포함할 수 있다. 여기서, 순방향 및 역방향 예측 방향은 양방향(bi-directional) 예측 모드의 2개의 예측 방향이고, 용어 "순방향" 및 "역방향"은 반드시 기하학적 의미를 가질 필요는 없다. 대신에, 이들은 일반적으로 참조 픽처가 현재 픽처 전에("역방향") 또는 후에("순방향")에 표시될지 여부에 대응한다. 일부 예에서, "순방향" 및 "역방향" 예측 방향은 현재 픽처의 참조 픽처 리스트 0(RefPicList0) 및 참조 픽처 리스트 1(RefPicList1)에 대응할 수 있다.
각 예측 방향에 대해, 움직임 정보는 참조 인덱스 및 움직임 벡터를 포함한다. 참조 인덱스는 현재 참조 픽처 리스트 (RefPicList0 또는 RefPicList1) 내의 참조 픽처를 식별하는데 사용될 수 있다. 움직임 벡터는 수평(x) 및 수직(y) 성분을 갖는다. 일반적으로, 수평 성분은 참조 블록의 x 좌표를 위치 시키는데 필요한, 현재 픽처에서의 현재 블록의 위치에 상대적인 참조 픽처 내의 수평 변위(horizontal displacement)를 나타낸다. 수직 성분은 참조 블록의 y 좌표를 위치 시키는데 필요한, 현재 블록의 위치에 상대적인 참조 픽처 내의 수직 변위(vertical displacement)를 나타낸다.
인터 예측부(124)는 현재 픽처보다 먼저 부호화 및 복호화된 참조 픽처 내에서 현재 블록과 가장 유사한 블록을 탐색하고, 그 탐색된 블록을 이용하여 현재 블록에 대한 예측블록을 생성한다. 그리고, 현재 픽처 내의 현재 블록과 참조 픽처 내의 예측블록 간의 변위(displacement)에 해당하는 움직임벡터(motion vector)를 생성한다. 일반적으로, 움직임 추정은 루마(luma) 성분에 대해 수행되고, 루마 성분에 기초하여 계산된 모션 벡터는 루마 성분 및 크로마 성분 모두에 대해 사용된다. 현재 블록을 예측하기 위해 사용된 참조 픽처에 대한 정보 및 움직임벡터에 대한 정보를 포함하는 움직임 정보는 부호화부(150)에 의해 부호화되어 영상 복호화 장치로 전달된다.
움직임 정보를 부호화하는 데에 소요되는 비트량을 최소화하기 위해 다양한 방법이 사용될 수 있다.
예컨대, 현재블록의 참조 픽처와 움직임벡터가 주변블록의 참조 픽처 및 움직임벡터와 동일한 경우에는 그 주변블록을 식별할 수 있는 정보를 부호화함으로써, 현재블록의 움직임 정보를 복호화 장치로 전달할 수 있다. 이러한 방법을 '머지 모드 (merge mode)'라 한다.
머지 모드에서, 인터 예측부(124)는 현재블록의 주변블록들로부터 기 결정된 개수의 머지 후보블록(이하, '머지 후보'라 함)들을 선택한다.
머지 후보를 유도하기 위한 주변블록으로는, 도 2에 도시된 바와 같이, 현재 픽처 내에서 현재블록에 인접한 좌측블록(L), 상단블록(A), 우상단블록(AR), 좌하단블록(BL), 좌상단블록(AL) 중에서 전부 또는 일부가 사용될 수 있다. 또한, 현재블록이 위치한 현재 픽처가 아닌 참조 픽처(현재블록을 예측하기 위해 사용된 참조 픽처와 동일할 수도 있고 다를 수도 있음) 내에 위치한 블록이 머지 후보로서 사용될 수도 있다. 예컨대, 참조 픽처 내에서 현재블록과 동일 위치에 있는 블록(co-located block) 또는 그 동일 위치의 블록에 인접한 블록들이 머지 후보로서 추가로 더 사용될 수 있다.
인터 예측부(124)는 이러한 주변블록들을 이용하여 기 결정된 개수의 머지 후보를 포함하는 머지 리스트를 구성한다. 머지 리스트에 포함된 머지 후보들 중에서 현재블록의 움직임정보로서 사용할 머지 후보를 선택하고 선택된 후보를 식별하기 위한 머지 인덱스 정보를 생성한다. 생성된 머지 인덱스 정보는 부호화부(150)에 의해 부호화되어 복호화 장치로 전달된다.
움직임 정보를 부호화하는 또 다른 방법은 차분 움직임벡터를 부호화하는 것이다.
이 방법에서, 인터 예측부(124)는 현재블록의 주변블록들을 이용하여 현재블록의 움직임벡터에 대한 예측 움직임벡터 후보들을 유도한다. 예측 움직임벡터 후보들을 유도하기 위해 사용되는 주변블록으로는, 도 5에 도시된 현재 픽처 내에서 현재블록에 인접한 좌측블록(L), 상단블록(A), 우상단블록(AR), 좌하단블록(BL), 좌상단블록(AL) 중에서 전부 또는 일부가 사용될 수 있다. 또한, 현재블록이 위치한 현재 픽처가 아닌 참조 픽처(현재블록을 예측하기 위해 사용된 참조 픽처와 동일할 수도 있고 다를 수도 있음) 내에 위치한 블록이 예측 움직임벡터 후보들을 유도하기 위해 사용되는 주변블록으로서 사용될 수도 있다. 예컨대, 참조 픽처 내에서 현재블록과 동일 위치에 있는 블록(co-located block) 또는 그 동일 위치의 블록에 인접한 블록들이 사용될 수 있다.
인터 예측부(124)는 이 주변블록들의 움직임벡터를 이용하여 예측 움직임벡터 후보들을 유도하고, 예측 움직임벡터 후보들을 이용하여 현재블록의 움직임벡터에 대한 예측 움직임벡터를 결정한다. 그리고, 현재블록의 움직임벡터로부터 예측 움직임벡터를 감산하여 차분 움직임벡터를 산출한다.
예측 움직임벡터는 예측 움직임벡터 후보들에 기 정의된 함수(예컨대, 중앙값, 평균값 연산 등)를 적용하여 구할 수 있다. 이 경우, 영상 복호화 장치도 기 정의된 함수를 알고 있다. 또한, 예측 움직임벡터 후보를 유도하기 위해 사용하는 주변블록은 이미 부호화 및 복호화가 완료된 블록이므로 영상 복호화 장치도 그 주변블록의 움직임벡터도 이미 알고 있다. 그러므로 영상 부호화 장치는 예측 움직임벡터 후보를 식별하기 위한 정보를 부호화할 필요가 없다. 따라서, 이 경우에는 차분 움직임벡터에 대한 정보와 현재블록을 예측하기 위해 사용한 참조 픽처에 대한 정보가 부호화된다.
한편, 예측 움직임벡터는 예측 움직임벡터 후보들 중 어느 하나를 선택하는 방식으로 결정될 수도 있다. 이 경우에는 차분 움직임벡터에 대한 정보 및 현재블록을 예측하기 위해 사용한 참조 픽처에 대한 정보와 함께, 선택된 예측 움직임벡터 후보를 식별하기 위한 정보가 추가로 부호화된다.
인트라 예측부(122)는 현재 블록이 포함된 현재 픽처 내에서 현재 블록의 주변에 위치한 픽셀(참조 픽셀)들을 이용하여 현재 블록 내의 픽셀들을 예측한다. 예측 방향에 따라 복수의 인트라 예측모드가 존재하며, 각 예측모드에 따라 사용할 주변 픽셀과 연산식이 다르게 정의된다. 특히, 인트라 예측부(122)는 현재 블록을 부호화하는데 사용할 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 예측부(122)는 여러 인트라 예측 모드들을 사용하여 현재 블록을 인코딩하고, 테스트된 모드들로부터 사용할 적절한 인트라 예측 모드를 선택할 수도 있다. 예를 들어, 인트라 예측부(122)는 여러 테스트된 인트라 예측 모드들에 대한 레이트 왜곡(rate-distortion) 분석을 사용하여 레이트 왜곡 값들을 계산하고, 테스트된 모드들 중 최선의 레이트 왜곡 특징들을 갖는 인트라 예측 모드를 선택할 수도 있다.
인트라 예측부(122)는 복수의 인트라 예측 모드 중에서 하나의 인트라 예측 모드를 선택하고, 선택된 인트라 예측 모드에 따라 결정되는 주변 픽셀(참조 픽셀)과 연산식을 사용하여 현재 블록을 예측한다. 선택된 인트라 예측 모드에 대한 정보는 부호화부(150)에 의해 부호화되어 영상 복호화 장치로 전달된다.
감산기(130)는 현재 블록으로부터 인트라 예측부(122) 또는 인터 예측부(124)에 의해 생성된 예측블록을 감산하여 잔차 블록을 생성한다.
변환부(140)는 공간 영역의 픽셀 값들을 가지는 잔차 블록 내의 잔차 신호를 주파수 도메인의 변환 계수로 변환한다. 변환부(140)는 잔차 블록 내의 잔차 신호들을 현재 블록의 크기를 변환 단위로 사용하여 변환할 수 있으며, 또는 잔차 블록을 더 작은 복수의 서브블록을 분할하고 서브블록 크기의 변환 단위로 잔차 신호들을 변환할 수도 있다. 잔차 블록을 더 작은 서브블록으로 분할하는 방법은 다양하게 존재할 수 있다. 예컨대, 기정의된 동일한 크기의 서브블록으로 분할할 수도 있으며, 또는 잔차 블록을 루트 노드로 하는 QT(quadtree) 방식의 분할을 사용할 수도 있다.
양자화부(145)는 변환부(140)로부터 출력되는 변환 계수들을 양자화하고, 양자화된 변환 계수들을 부호화부(150)로 출력한다.
부호화부(150)는 양자화된 변환 계수들을 CABAC 등의 부호화 방식을 사용하여 부호화하여 비트스트림을 생성한다. 이러한 부호화는 통상적으로 복수의 가용 스캔 패턴 중 하나를 이용하여 양자화된 변환 계수에 대해 수행된다.
본 개시의 기술들의 일 측면은 일반적으로 변환 및 양자화의 결과물인 양자화된 계수들의 어레이인 계수 블록에 대해 비-제로 계수(즉, 유효 계수)들의 위치를 효율적으로 표현하는 것과 관련된다. 이와 같이, 본 개시의 소정의 기법들은 부호화부(150)에 의해 수행될 수도 있다. 즉, 예를 들어, 부호화부(150)는 아래의 도 6 내지 도 15에 대해 기술된 본 개시의 기법들을 수행할 수도 있다. 다른 예들에서, 부호화 장치의 하나 이상의 다른 유닛들이 추가적으로 본 개시의 기법들을 수행하는 데 관여할 수도 있다.
또한, 부호화부(150)는 블록 분할과 관련된 CTU size, MinQTSize, MaxBTSize, MaxBTDepth, MinBTSize, QT 분할 플래그, BT 분할 플래그, 분할 타입 등의 정보를 부호화하여, 영상 복호화 장치가 영상 부호화 장치와 동일하게 블록을 분할할 수 있도록 한다.
부호화부(150)는 현재 블록이 인트라 예측에 의해 부호화되었는지 아니면 인터 예측에 의해 부호화되었는지 여부를 지시하는 예측 타입에 대한 정보를 부호화하고, 예측 타입에 따라 인트라 예측정보 또는 인터 예측정보를 부호화한다.
현재블록이 인트라 예측된 경우에는 인트라 예측정보로서 인트라 예측 모드에 대한 신택스 요소(syntax element)를 부호화한다. 현재블록이 인터 예측된 경우, 부호화부(150)는 인터 예측정보에 대한 신택스 요소를 부호화한다. 인터 예측정보에 대한 신택스 요소는 다음을 포함한다.
(1) 현재블록의 움직임정보가 머지 모드로 부호화되는지 아니면 차분 움직임벡터를 부호화하는 모드로 부호화되는지 여부를 지시하는 모드 정보
(2) 움직임정보에 대한 신택스 요소
움직임정보가 머지 모드에 의해 부호화되는 경우, 부호화부(150)는 머지 후보들 중 어느 후보가 현재블록의 움직임정보를 추출하기 위한 후보로서 선택되는지를 지시하는 머지 인덱스 정보를 움직임정보에 대한 신택스 요소로 부호화한다.
반면, 움직임정보가 차분 움직임벡터를 부호화하는 모드에 의해 부호화되는 경우, 차분 움직임벡터에 대한 정보 및 참조 픽처에 대한 정보를 움직임정보에 대한 신택스 요소로 부호화한다. 만약, 예측 움직임벡터가 복수의 예측 움직임벡터 후보들 중 어느 하나의 후보를 선택하는 방식으로 결정되는 경우에는, 움직임정보에 대한 신택스 요소는 그 선택된 후보를 식별하기 위한 예측 움직임벡터 식별 정보를 추가로 더 포함한다.
역양자화부(160)는 양자화부(145)로부터 출력되는 양자화된 변환 계수들을 역양자화하여 변환 계수들을 생성한다. 역변환부(165)는 역양자화부(160)로부터 출력되는 변환 계수들을 주파수 도메인으로부터 공간 도메인으로 변환하여 잔차블록을 복원한다.
가산부(170)는 복원된 잔차블록과 예측부(120)에 의해 생성된 예측블록을 가산하여 현재 블록을 복원한다. 복원된 현재 블록 내의 픽셀들은 다음 순서의 블록을 인트라 예측할 때 참조 픽셀로서 사용된다.
필터부(180)는 블록 단위의 부호화/복호화로 인해 발생하는 블록킹 현상(blocking artifact)을 제거하기 위해 복원된 블록 간의 경계를 디블록킹 필터링하고 메모리(190)에 저장한다. 한 픽처 내의 모든 블록들이 복원되면, 복원된 픽처는 이후에 부호화하고자 하는 픽처 내의 블록을 인터 예측하기 위한 참조 픽처로 사용된다.
이하에서는 영상 복호화 장치에 대해 설명한다.
도 3은 본 개시의 기술들을 구현할 수 있는 영상 복호화 장치의 예시적인 블록도이다.
영상 복호화 장치는 복호화부(310), 역양자화부(320), 역변환부(330), 예측부(340), 가산기(350), 필터부(360) 및 메모리(370)를 포함한다. 도 2의 영상 부호화 장치와 마찬가지로, 영상 복호화 장치는 각 구성요소가 하드웨어 칩으로 구현될 수 있으며, 또는 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.
복호화부(310)는 영상 부호화 장치로부터 수신한 비트스트림을 복호화하여 블록 분할과 관련된 정보를 추출하여 복호화하고자 하는 현재 블록을 결정하고, 현재 블록을 복원하기 위해 필요한 예측 정보와 잔차신호에 대한 정보 등을 추출한다.
복호화부(310)는 SPS (Sequence Parameter Set) 또는 PPS (Picture Parameter Set)로부터 CTU size에 대한 정보를 추출하여 CTU의 크기를 결정하고, 픽처를 결정된 크기의 CTU로 분할한다. 그리고 CTU를 트리 구조의 최상위 레이어, 즉, 루트 노드로 결정하고, CTU에 대한 분할 정보를 추출함으로써 CTU를 트리 구조를 이용하여 분할한다. 예컨대, QTBT 구조를 사용하여 CTU를 분할하는 경우, 먼저 QT의 분할과 관련된 제1 플래그(QT_split_flag)를 추출하여 각 노드를 하위 레이어의 네 개의 노드로 분할한다. 그리고, QT의 리프 노드에 해당하는 노드에 대해서는 BT의 분할과 관련된 제2 플래그(BT_split_flag) 및 분할 타입 정보를 추출하여 해당 리프 노드를 BT 구조로 분할한다.
한편, 복호화부(310)는 트리 구조의 분할을 통해 복호화하고자 하는 현재 블록을 결정하게 되면, 현재 블록이 인트라 예측되었는지 아니면 인터 예측되었는지를 지시하는 예측 타입에 대한 정보를 추출한다.
예측 타입 정보가 인트라 예측을 지시하는 경우, 복호화부(310)는 현재블록의 인트라 예측정보(인트라 예측 모드)에 대한 신택스 요소를 추출한다.
예측 타입 정보가 인터 예측을 지시하는 경우, 복호화부(310)는 인터 예측정보에 대한 신택스 요소를 추출한다. 먼저, 현재블록의 움직임정보가 복수의 부호화 모드 중 어느 모드에 의해 부호화되었는지 여부를 지시하는 모드 정보를 추출한다. 여기서, 복수의 부호화 모드는 스킵모드를 포함한 머지 모드 및 차분 움직임벡터 부호화 모드를 포함한다. 모드 정보가 머지 모드를 지시하는 경우, 복호화부(310)는 머지 후보들 중 어느 후보로부터 현재블록의 움직임벡터를 유도할지 여부를 지시하는 머지 인덱스 정보를 움직임정보에 대한 신택스 요소로서 추출한다. 반면, 모드 정보가 차분 움직임벡터 부호화 모드를 지시하는 경우, 복호화부(310)는 차분 움직임벡터에 대한 정보 및 현재블록의 움직임벡터가 참조하는 참조 픽처에 대한 정보를 움직임벡터에 대한 신택스 요소로서 추출한다. 한편, 영상 부호화 장치가 복수의 예측 움직임벡터 후보들 중에서 어느 하나의 후보를 현재블록의 예측 움직임벡터로 사용한 경우에는 예측 움직임벡터 식별정보가 비트스트림에 포함된다. 따라서 이 경우에는, 차분 움직임벡터에 대한 정보와 참조 픽처에 대한 정보뿐만 아니라 예측 움직임벡터 식별정보도 움직임벡터에 대한 신택스 요소로서 추출한다.
한편, 복호화부(310)는 잔차신호에 대한 정보로서 현재 블록의 양자화된 변환계수들에 대한 정보를 추출한다. 본 개시의 기술들의 다른 측면은, 일반적으로, 변환 및 양자화의 결과물인 양자화된 계수들의 어레이인 계수 블록에 대해 비-제로 계수(즉, 유효 계수)들의 위치를 효율적으로 복호화하는 것과 관련된다. 따라서, 본 개시의 소정의 기법들은 복호화부(310)에 의해 수행될 수도 있다. 즉, 예를 들어, 복호화부(310)는 아래의 도 4 내지 도 15에 대해 기술된 본 개시의 기법들을 수행할 수도 있다. 다른 예들에서, 부호화 장치의 하나 이상의 다른 유닛들이 추가적으로 본 개시의 기법들을 수행하는 데 관여할 수도 있다.
역양자화부(320)는 양자화된 변환계수들을 역양자화하고 역변환부(330)는 역양자화된 변환계수들을 주파수 도메인으로부터 공간 도메인으로 역변환하여 잔차신호들을 복원함으로써 현재 블록에 대한 잔차블록을 생성한다.
예측부(340)는 인트라 예측부(342) 및 인터 예측부(344)를 포함한다. 인트라 예측부(342)는 현재 블록의 예측 타입인 인트라 예측일 때 활성화되고, 인터 예측부(344)는 현재 블록의 예측 타입인 인트라 예측일 때 활성화된다.
인트라 예측부(342)는 복호화부(310)로부터 추출된 인트라 예측 모드에 대한 신택스 요소로부터 복수의 인트라 예측 모드 중 현재 블록의 인트라 예측 모드를 결정하고, 인트라 예측 모드에 따라 현재 블록 주변의 참조 픽셀들을 이용하여 현재 블록을 예측한다.
인터 예측부(344)는 복호화부(310)로부터 추출된 인트라 예측 모드에 대한 신택스 요소를 이용하여 현재 블록의 움직임정보를 결정하고, 결정된 움직임정보를 이용하여 현재 블록을 예측한다.
먼저, 인터 예측부(344)는 복호화부(310)로부터 추출된 인터 예측에서의 모드 정보를 확인한다. 모드 정보가 머지 모드를 지시하는 경우, 인터 예측부(344)는 현재블록의 주변블록을 이용하여 기 결정된 개수의 머지 후보를 포함하는 머지 리스트를 구성한다. 인터 예측부(344)가 머지 리스트를 구성하는 방법은 영상 부호화 장치의 인터 예측부(124)와 동일하다. 그리고, 복호화부(310)으로부터 전달된 머지 인덱스 정보를 이용하여 머지 리스트 내의 머지 후보들 중에서 하나의 머지 후보를 선택한다. 그리고 선택된 머지 후보의 움직임정보, 즉, 머지 후보의 움직임벡터와 참조 픽처를 현재블록의 움직임벡터와 참조픽처로 설정한다.
반면, 모드 정보가 차분 움직임벡터 부호화 모드를 지시하는 경우, 인터 예측부(344)는 현재블록의 주변블록들의 움직임벡터를 이용하여 예측 움직임벡터 후보들을 유도하고, 예측 움직임벡터 후보들을 이용하여 현재블록의 움직임벡터에 대한 예측 움직임벡터를 결정한다. 인터 예측부(344)가 예측 움직임벡터 후보들을 유도하는 방법은 영상 부호화 장치의 인터 예측부(124)와 동일하다. 만약, 영상 부호화 장치가 복수의 예측 움직임벡터 후보들 중에서 어느 하나의 후보를 현재블록의 예측 움직임벡터로 사용한 경우에는 움직임정보에 대한 신택스 요소는 예측 움직임벡터 식별정보를 포함한다. 따라서, 이 경우에, 인터 예측부(344)는 예측 움직임벡터 후보들 중 예측 움직임벡터 식별정보에 의해 지시되는 후보를 예측 움직임벡터로 선택할 수 있다. 그러나, 영상 부호화 장치가 복수의 예측 움직임벡터 후보들에 기 정의된 함수를 사용하여 예측 움직임벡터를 결정한 경우에는, 인터 예측부는 영상 부호화 장치와 동일한 함수를 적용하여 예측 움직임벡터를 결정할 수도 있다. 현재블록의 예측 움직임벡터가 결정되면, 인터 예측부(344)는 예측 움직임벡터와 복호화부(310)로부터 전달된 차분 움직임벡터를 가산하여 현재블록의 움직임벡터를 결정한다. 그리고 복호화부(310)로부터 전달된 참조픽처에 대한 정보를 이용하여 현재블록의 움직임벡터가 참조하는 참조픽처를 결정한다.
머지 모드 또는 차분 움직임벡터 부호화 모드에서 현재블록의 움직임벡터와 참조픽처가 결정되면, 인터 예측부(342)는 참조픽처 내에서 움직임벡터가 지시하는 위치의 블록을 이용하여 현재블록의 예측블록을 생성한다.
가산기(350)는 역변환부로부터 출력되는 잔차블록과 인터 예측부 또는 인트라 예측부로부터 출력되는 예측블록을 가산하여 현재 블록을 복원한다. 복원된 현재 블록 내의 픽셀들은 이후에 복호화할 블록을 인트라 예측할 때의 참조픽셀로서 활용된다.
필터부(360)는 블록 단위의 복호화로 인해 발생하는 블록킹 현상(blocking artifact)를 제거하기 위해 복원된 블록 간의 경계를 디블록킹 필터링하고 메모리(370)에 저장한다. 한 픽처 내의 모든 블록들이 복원되면, 복원된 픽처는 이후에 복호화하고자 하는 픽처 내의 블록을 인터 예측하기 위한 참조 픽처로 사용된다.
전술한 바와 같이, 본 개시의 기법들은 변환 및 양자화의 결과물인 양자화된 계수들의 어레이인 계수 블록에 대해 비-제로 계수(즉, 유효 계수)들의 위치를 효율적으로 부호화하고 복호화하는 것과 관련되어 있다. 개시된 일부 기법들은 변환을 거치지 않은 잔차 블록에 대해 직접 적용될 수 있다.
H.265(HEVC) 표준에서는, 양자화 과정을 거친 양자화된 계수(quantized coefficient)들 중 비-제로(non-zero) 계수의 위치를 표현하기 위한 신택스(syntax)는 총 6개로 구성된다.
1. last_sig_coeff_x_prefix
2. last_sig_coeff_y_prefix
3. last_sig_coeff_x_suffix
4. last_sig_coeff_y_suffix
5. coded_sub_block_flag
6. sig_coeff_flag
앞의 네 개의 신택스는 계수 블록 내 스캔 순서상 가장 마지막 유효(비-제로) 계수(last significant coefficient)의 위치에 관한 것으로, 해당 위치에 대한 x 성분과 y 성분을 각각 별도로 표시하고, 각 성분은 접두어(prefix) 및 접미어(suffix)로 나누어서 표현된다. coded_sub_block_flag는 계수 블록을 복수의 서브 블록으로 분할하여 각 서브 블록이 비-제로 계수를 하나 이상 포함하고 있는지 여부를 가리키는 플래그이다. 여기서, coded_sub_block_flag는 해당 서브 블록 내 모든 계수들이 제로이면 "0", 하나 이상의 비-제로 계수가 존재하면 "1"로 표시된다. sig _ coeff _flag는 하나의 서브 블록 내 각 계수가 비-제로인지 제로인지를 가리키는 플래그이다. sig _ coeff _flag는 제로 계수의 경우 "0"으로 표시되고, 비-제로 계수이면 "1"로 표시된다.
계수 블록에 대한 스캔 순서 상 마지막 유효 계수(Last significant coefficient)가 존재하는 마지막 유효 서브 블록(Last significant sub-block)에 선행하는 서브 블록에 한해서 coded_sub_block_flag 신택스가 시그널링된다. coded_sub_block_flag가 "1"인 경우에, 해당 서브 블록 내 모든 계수들 각각에 대한 sig_coeff_flag 신택스가 시그널링된다.
계수 블록내의 계수들의 부호화는 통상적으로 복수의 가용한 스캔 방식 중 하나를 이용하여 수행된다. 도 4는 정사각형 계수 블록의 양자화된 계수들의 부호화에 이용되는 예시적인 스캔 방식들을 나타낸 도면이다. 이들 스캔 방식은 up-right diagonal 방식, horizontal 방식, vertical 방식을 포함한다. 부호화 대상 블록이 화면간 예측 방식을 사용하여 부호화하는 경우, 해당 블록의 계수들은 up-right diagonal 방식으로 스캐닝되고, 부호화 대상 블록이 화면내 예측 방식으로 부호화한 경우는 화면내 예측 모드에 따라 상기 세 가지 형태 중 하나를 선택하여 해당 블록의 계수들을 스캐닝하게 된다.
예시된 스캔 방식은 계수 블록 내 서브 블록들 및 각 서브 블록 내 계수들에 대해서 동일한 형태의 스캔 패턴을 보인다. 예를 들어, horizontal 스캔 방식의 경우, 서브 블록들의 스캔 순서도 horizontal 방식이고, 각 서브 블록 내 계수들의 스캔 순서도 horizontal 방식이다. 도 5는 diagonal 스캔 방식에 대한 더 상세한 서브 블록 및 계수들의 스캔 순서를 보인다. 다만, 실제 비트스트림에 저장되는 순서는 스캔 순서의 역순으로 저장이 된다. 즉, 도 5의 255번 위치의 화소부터 0번 위치의 화소 순으로 비트스트림에 저장된다. 다시 말해, 이하에서 더 설명되는 바와 같이, 일단 마지막 유효 (비제로) 계수 위치가 알려지고 나면, 계수들은 스캔 패턴 내의 첫 번째 계수쪽으로 스캔 순서의 반대 방향으로 복호화될 수 있다.
도 6은 32×32 계수 블록의 일례를 도시한 도면이다. 여기서, 해당 32×32 계수 블록의 스캔 방식은 diagonal 방식을 사용하였고, 회색으로 마킹된 픽셀이 비-제로 계수를, 검정색으로 마킹된 픽셀은 스캔 순서상 마지막 비-제로 계수를 뜻하며, 그 이외의 흰색 계수들은 모두 제로 값을 가지게 된다. 비-제로 계수의 위치를 표시하는 전술한 3개의 정보들 중 coded_sub_block_flagsig _ coeff _flag 신택스를 도 6에 예시된 블록에 적용하면, 이들 2개의 신택스를 표시하기 위해 필요한 비트수는 다음과 같다. coded_sub_block_flag는 마지막 유효 계수의 위치를 고려하여, 총 64개 서브 블록 중 30개의 서브 블록들(도 6에서 굵게 표시된 서브 블록들)에 대한 30비트가 필요하다. DC 성분이 포함된 좌상귀 서브 블록에 대해서는 coded_sub_block_flag가 시그널링되지 않는다. 도 6의 계수 블록은 하나 이상의 비-제로 계수를 포함하고 있는 서브 블록(즉, 유효 서브 블록)이 7개이며, 따라서 7개의 유효 서브 블록에 대한 sig _ coeff _flag를 표시하기 위해, 대략 112 비트(= 7×16; 마지막 유효 서브블록에 대해서는 16 비트보다 적은 비트가 필요할 수 있다)가 필요하다. 결과적으로, 도 6의 계수 블록에 대해 상기 두 개의 신택스를 표현하는 데 필요한 비트수는 대략 142 비트(= 30 + 112)이다.
이상에서 설명한 바와 같이, 플래그 비트들의 오버헤드를 감소시키기 위해, 마지막 유효 계수 위치가 이용된다. 문제는, 현재 논의되고 있는 변환 블록의 사이즈가 64×64, 128×128 정도로 클 수 있기 때문에, 마지막 유효 계수의 위치를 x축 성분과 y축 성분으로 표현하는 신택스의 부호화에 상당한 비트수가 필요하다는 것이다.
더 적은 비트를 요구하면서 유사한 기능을 제공하기 위해, 본 발명은 부호화 대상인 계수 블록 내에서 마지막 유효 서브 블록(last significant sub-block)의 위치를 가리키는 정보를 시그널링하는 방식을 제안한다. 여기서, 마지막 유효 서브 블록은 적어도 하나의 비-제로 계수를 갖는 서브 블록 스캔 순서상 마지막 서브 블록이다. 본 발명이 제안하는 마지막 유효 서브 블록의 위치를 효율적으로 표현하는 방식은 총 4가지이다.
(1) 마지막 유효 서브 블록의 계수 블록 내에서의 X축 인덱스 및 Y축 인덱스
(2) 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수
(3) 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수
(4) 계수 블록 내에서 마지막 유효 서브 블록의 위치에 따라 (2) 방식 또는 (3) 방식 중 유리한 방식을 결정하고, 결정된 방식을 지시하는 플래그와 결정된 방식에 따른 개수 정보를 시그널링
예를 들어, 도 6에 예시된 32×32 계수 블록에 대해, 마지막 유효 서브 블록의 위치를 상기 제안하는 4가지 방식으로 각각 표현하면, 다음과 같다.
(1) (3, 4) - 도 7 또는 도 8을 참조하면, 계수 블록 내에서 스캔 순서상 마지막 유효 서브 블록은 좌상귀 서브블록으로부터 수평 및 수직 위치의 관점에서 X축 인덱스 3과 Y축 인덱스 4를 가진다.
(2) 31 (diagonal 스캔 방식을 사용하는 경우) - 도 7을 참조하면, 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수는 31개이다.
(3) 32 (diagonal 스캔 방식을 사용하는 경우) - 도 8을 참조하면, 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수는 32개이다.
(4) 0 31 또는 1 32 - 여기서, 밑줄 표시된 "0", "1"은 (2) 및 (3) 중 어느 방식이 사용되는지를 지시하는 플래그 값이다.
이와 같이 마지막 유효 서브 블록의 위치를 시그널링하는 방식을 기초로, 영상 부호화 장치가 계수 블록을 부호화하는 방법과 영상 복호화 장치가 계수 블록을 복호화하는 전체적인 프로세스를 도 9 및 도 10를 참조하여 각각 설명한다.
도 9는 본 발명의 일 실시예에 따른 영상 부호화 장치가 계수 블록을 부호화하는 방법을 도시한 흐름도이다.
먼저, 영상 부호화 장치는 부호화하고자 하는 현재의 계수 블록에서 마지막 유효 서브 블록(significant sub-block)을 결정한다(S910). 여기서 마지막 유효 서브 블록은 적어도 하나의 비-제로(non-zero) 계수를 갖는 서브 블록 스캔 순서상 마지막 서브 블록이다.
영상 부호화 장치는 결정된 마지막 유효 서브 블록의 위치를 가리키는 정보를 부호화한다(S920). 일부 실시예에서, 마지막 유효 서브 블록의 위치를 가리키는 정보는 (1) 마지막 유효 서브 블록의 계수 블록 내에서의 X축 인덱스 및 Y축 인덱스 값일 수 있다. 다른 일부 실시예에서, 마지막 유효 서브 블록의 위치를 가리키는 정보는 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수 정보일 수 있다. 또 다른 일부 실시예에서, 마지막 유효 서브 블록의 위치를 가리키는 정보는 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수 정보일 수 있다. 또 다른 일부 실시예에서, 마지막 유효 서브 블록의 위치를 가리키는 정보는 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수 정보 혹은 후행하는 서브 블록들의 개수 정보 중 선택된 하나의 정보와, 어느 정보가 선택되었는지 여부를 나타내는 플래그 값을 포함할 수 있다.
영상 부호화 장치는 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 부호화한다(S930). 이때, 상기 계수 블록의 좌상귀 서브 블록 및 상기 마지막 유효 서브 블록을 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록으로 설정할 수 있다.
영상 부호화 장치는 상기 계수 블록의 좌상귀 서브 블록의 계수들과, 상기 마지막 유효 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들과 유효 서브 블록으로 설정된 서브 블록들의 계수들을 부호화한다(S940). 이들 계수를 부호화하는 과정은 해당 서브 블록들 내의 각 계수가 비-제로인지 제로인지를 가리키는 플래그를 부호화하는 과정을 포함할 수 있다. 영상 부호화 장치는 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록이 아니라고 가리키는 서브 블록들의 계수들의 부호화를 스킵한다. 또한, 영상 부호화 장치는 서브 블록 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들의 계수들의 부호화를 스킵한다.
도 10은 본 발명의 일 실시예에 따른 영상 복호화 장치가 계수 블록을 부호화하는 방법을 도시한 흐름도이다.
영상 복호화 장치는, 부호화된 비트스트림으로부터, 복호화하고자 하는 현재의 계수 블록에서 마지막 유효 서브 블록의 위치를 가리키는 정보를 복호화한다(S1010).
영상 복호화 장치는, 부호화된 비트스트림으로부터, 서브 블록 스캔 순서상 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 복호화한다(S1020). 이때, 상기 계수 블록의 좌상귀 서브 블록 및 상기 마지막 유효 서브 블록을 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록으로 설정할 수 있다.
영상 복호화 장치는, 부호화된 비트스트림으로부터, 상기 계수 블록의 좌상귀 서브 블록의 계수들과, 상기 마지막 유효 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들과 유효 서브 블록으로 설정된 서브 블록들의 계수들을 복호화한다(S1030). 이들 계수를 복호화하는 과정은 해당 서브 블록들 내의 각 계수가 비-제로인지 제로인지를 가리키는 플래그를 복호화하는 과정을 포함할 수 있다. 영상 복호화 장치는 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록이 아니라고 가리키는 서브 블록들의 계수들의 복호화를 스킵한다. 또한, 영상 복호화 장치는 서브 블록 스캔 순서상 마지막 유효 서브 블록에 후행하는 서브 블록들의 계수들의 복호화를 스킵한다.
이상에서 설명한 방법은 변환(transform) 후 비-제로 계수들의 위치가 대부분 저주파 성분에 모이고 고주파에는 위치하지 않는다는 점에 착안하여, 마지막 유효 계수 혹은 마지막 유효 서브 블록의 위치를 우선적으로 시그널링하는 방식이다. 이하에서는, 비-제로 계수들이 어디에 위치하든 그 위치를 효율적으로 표현할 수 있는 기법을 제안한다. 이러한 기법은 부호화 대상 블록의 변환(transform)이 스킵(skip)되어 고주파 및 저주파 성분(혹은 coefficients)이 아닌 잔차(residual) 값 자체를 보내는 경우에 더 유용할 수 있다.
유효 블록의 계층적 분할
본 발명에서 제안하는 다른 기법은 현재의 계수 블럭에 대해, 적어도 하나의 비-제로 계수를 포함하는 서브 블록(유효 블록)을 단일 유효 계수에 도달될 때까지 n(2 이상의 자연수) 개의 균등한 크기의 작은 서브 블록들(정사각형들)로 반복적으로(recursively) 분할하면서, 유효 플래그(significant_flag)를 사용하여 생성된 각 서브 블록들에 대해 유효 블록인지 여부를 시그널링한다. 유효 플래그는 하나의 서브 블록 내 비-제로 계수(즉, 유효 계수)가 하나 이상 존재하면 예컨대 "1"로, 모든 계수가 제로이면 예컨대 "0"으로 표현된다. 유효 플래그 값이 "0"이면, 해당 서브 블록은 더이상 분할되지 않으며, 그 하위 계층의 블록들에 대한 유효 플래그 값은 더이상 필요치 않다. 반대로, 유효 플래그 값이 "1"이면, 해당 블록은 n(2 이상의 자연수) 개의 서브 블록으로 분할되어, 그 하위 계층의 서브 블록들에 대한 유효 플래그 값을 시그널링 한다.
주어진 계수 블록의 유효 플래그 값이 "0"이면 해당 블록은 더이상 분할되지 않으며, 따라서 그 하위 계층의 블록들에 대한 유효 플래그 값은 더이상 필요치 않다. 반대로, 주어진 계수 블록의 유효 플래그 값이 "1"이면서 정사각형 모양의 계수 블록인 경우, 그 하위 계층의 4개의 정사각형 블록으로 분할되며, 그 4개의 블록에 대해 각각 비-제로 계수가 존재하는지 표현된다. 유효 블록이 단일 유효 계수에 도달될 때까지 반복적으로 분할되는 바, 생성된 블록의 크기는 계수 블록의 크기에서부터 1×1의 크기(즉, 단일 계수)까지를 포함한다. 예를 들어, 계수 블록이 8×8이라면, 유효 플래그가 결정되는 블록은 8×8, 4×4, 2×2, 1×1의 크기를 모두 포함한다.
주어진 계수 블록의 유효 플래그 값이 "1"이면서 직사각형 모양의 계수 블록인 경우, 그 하위 계층의 정사각형 블록의 개수는 해당 계수 블록의 크기에 따라 달라질 수 있다. 예를 들어, 계수 블록이 16×8이라면, 하위 계층으로 분할되는 정사각형 블록은 2개의 8×8이 되고, 계수 블록이 4×16이라면, 하위 계층으로 분할되는 정사각형 블록은 4개의 4×4가 된다. 즉, 주어진 계수 블록이 M×kM 또는 kM×M 크기의 직사각형인 경우, 주어진 계수 블록은 먼저 n=k 개의 정사각형(M×M)으로 분할될 수 있다. 이때, k개의 정사각형의 순서는 계수 블록의 모양에 따라 좌에서 우 또는 상에서 하의 역순으로 진행된다. 예를 들어, 계수 블록이 가로로 긴 직사각형이면 그 하위 k 개의 정사각형 블록의 순서는 좌에서 우의 역순으로 진행되며, 계수 블록이 세로로 긴 직사각형이면 그 하위 k 개의 정사각형 블록의 순서는 상에서 하의 역순으로 진행된다. 직사각형 모양의 계수 블록을 그 하위 계층의 k 개의 정사각형으로 분할한 이후의 과정은 상기 정사각형 모양의 계수 블록의 그 하위 계층의 (4개의) 정사각형 서브 블록과 동일하게 진행된다.
도 11은, 도 6에 예시된 32×32 블록에 대해, 상기 제안된 기법을 적용하여 생성된 블록들을 도시한 도면이다. 제안된 방법에 따르면, 도 11에서 굵은 실선으로 표시된 블록들에 대한 유효 플래그들이 시그널링된다. 각 블록에 대한 계층 구조 및 각 블록의 유효 플래그 값을 트리(tree) 형식으로 표현하면 도 12와 같다. 도 12의 트리 내 노드는 여러 크기의 각 블록을 의미하며, 검정색으로 표시된 노드는 해당 블록의 유효 플래그 값이 "1"임을 의미하며, 흰색으로 표시된 노드는 해당 블록의 유효 플래그 값이 "0"임을 의미한다. 또한, 흰색으로 표시된 노드는 해당 노드는 리프 노드(leaf node)가 되어 하위 노드가 존재하지 않는다. 즉, 주어진 블록의 유효 플래그가 "0"이면 해당 블록은 리프 노드가 되고, 하위 계층의 블록이 존재하지 않는다. 여기서, 해당 블록은 부모 노드, 그 하위 계층의 블록들은 자식 노드라 지칭될 수 있다. 또한, 주어진 블록의 유효 플래그가 "1"이면 해당 블록은 항상 4개의 자식 노드를 가진다.
도 12의 트리는 도 11의 계수 블록에서 생성되는 블록들을 diagonal 방식으로 스캔하여 구성하였다. 또한, 비트스트림의 저장 순서(즉, 스캔 순서의 역순; 좌상, 좌하, 우상, 우하의 역순)을 고려하여 트리를 구성하였다. 도 12에서 사용한 diagonal 방식은 예시적인 것으로, 앞서 언급한 기존 3가지 타입의 스캔 방식이 기존 조건에 따라 사용될 수 있다. 만약, diagonal이 아닌 다른 스캔 방식을 사용하는 경우에는 도 11의 계수 블록에 대한 트리는 도 12와 다르게 구성된다. 또한, z-스캔(역순) 방식으로 트리를 구성하고, 비트스트림의 저장 순서(즉, z-스캔 순서의 역순; 좌상, 우상, 좌하, 우하의 역순)로도 사용할 수 있다.
계수 블록과 같은 크기의 블록에 대한 유효 플래그는 일종의 cbf(coded block flag)의 기능을 수행하는 것으로 볼 수 있다. 예를 들어, 도 11의 계수 블록의 경우에 32×32 블록에 대한 유효 플래그는 cbf 기능을 수행한다. 도 11에 예시된 계수 블록에 대한 32×32 블록의 유효 플래그 값이 "1"이므로, 하위 4개의 16×16 블록에 대한 유효 플래그들을 구한다. 이때, 4개의 16×16 블록은 diagonal 스캔 방식에 따라 좌상, 좌하, 우상, 우하 블록의 역순으로 스캔된다. 4개의 유효 플래그는 "0011"이 된다. 이 중 "1"에 해당하는 좌하 및 좌상 16×16 블록에 대한 하위 8×8 블록들의 유효 플래그들만 표현하면 된다. 좌하 16×16 블록의 하위 4개의 8×8 블록들을 위한 유효 플래그는 "0100"이고, 좌상 16×16 블록의 하위 4개의 8×8 블록들을 위한 유효 플래그들은 "1111"이 된다. 8×8 블록 중 유효 플래그가 "1"인 블록에 대해서만 하위 4×4 블록들의 유효 플래그 값을 표현하면 된다. 상기 작업을 블록의 크기가 1×1까지 반복한다.
도 11의 계수 블록에 사분법을 적용한 결과 생성되는 (32×32 ~ 1×1) 블록에 대한 유효 플래그는 아래 표와 같다.
블록 크기 유효 플래그
32×32 블록 1
16×16 블록 0011
8×8 블록 01001111
4×4 블록 01000110 0001 0001 1001
2×2 블록 00100001 0001 0001 1000 0001 0001
1×1 블록 01001000 1000 0010 0001 1000 0001
이하에서는 도 11의 계수 블록에 대한 도 12의 트리를 탐색하는 일례를 보인다. 도 12의 트리를 탐색하는 데에는 깊이-우선 탐색(depth-first search) 혹은 너비-우선 탐색(breadth-first search) 방식이 사용될 수 있다. 여기서, 깊이 우선 방식과 너비 우선 방식은 트리의 노드를 탐색하는 순서를 의미한다. 즉, 본 발명에서는, 깊이 우선 방식과 너비 우선 방식 중 사전에 결정된 방식에 따라 트리의 노드를 탐색하면서 해당 노드에 할당된 비트들을 읽어오고, 이를 통해 비트스트림(bit-stream)을 구성하게 된다. 예컨대, 도 13의 (a)에 예시된 트리 구조를 기준으로 설명하면, (1) 깊이 우선 방식으로 비트스트림을 구성한다면, A B C D F G H I E 순으로 비트들을 읽어오게 되며, (2) 너비 우선 방식으로 비트스트림을 구성한다면, A B C D E F G H I 순으로 비트들을 읽어오게 된다.
따라서, 본 발명에서 제안하는 도 12의 트리를 너비 우선 탐색으로 탐색하여 비트스트림을 구성하면 아래와 같다.
1. 1
2. 0011
3. 0100 1111
4. 0100 0110 0001 0001 1001
5. 0010 0001 0001 0001 1000 0001 0001
6. 0100 1000 1000 0010 0001 1000 0001
반대로, 도 12의 트리를 깊이 우선 탐색으로 탐색하여 비트스트림을 구성하면 하기와 같다.
1. 1
2. 00
3. 1 01 01 001 0100 0 00 00
4. 1 1 01 0001 1000 1 0001 1000 0
5. 1 0001 0001 0010
6. 1 0001 1 0001 000
7. 1 1 0001 1000 001 0001 0001
예외 규칙
한편, 도 13의 (b)에 예시된 트리를 너비 우선 탐색 방식을 적용하면, "1" "0001" "1000"으로 비트스트림을 구성할 수 있다. 이때, 가장 상위 부모 노드의 유효 플래그 값이 "1"이고, 이는 해당 블록의 4개의 자식 노드 중 적어도 하나 이상의 자식 노드는 유효 플래그 값이 "1"이어야 함을 의미한다. 그런데 4개의 자식 노드 중 스캔 순서상 앞선 3개의 자식 노드의 유효 플래그 값이 모두 "0"이라면, 마지막 남은 하나의 자식 노드의 플래그 값은 반드시 "1"이어야 한다. 결과적으로 4번째 자식 노드의 플래그 값은 부호화 장치와 복호화 장치가 동일하게 "1"로 추론할 수 있는바, 굳이 시그널링될 필요가 없다. 도 13의 (b)에 예시된 트리에 이러한 예외 규칙을 적용하면, 비트스트림은 "1" "000" "1000"으로 구성된다.
이러한 예외 규칙을 적용하여, 도 12에 예시된 트리에 대해 너비 우선 탐색 방식으로 비트스트림을 구성하면 아래와 같다. 여기서, 시그널링되지 않는 총 9개의 "1" 값이 "-"으로 표시되었다.
1. 1
2. 0011
3. 0100 1111
4. 0100 0110 000- 000- 1001
5. 0010 000- 000- 000- 1000 000- 000-
6. 0100 1000 1000 0010 000- 1000 000-
도 12의 트리에 상기 예외 규칙을 적용하여 깊이 우선 탐색으로 비트스트림을 구성하면 하기와 같다. 여기서, 시그널링되지 않는 총 9개의 "1" 값이 "-"으로 표시되었다.
1. 1
2. 00
3. 1 01 01 001 0100 0 00 00
4. 1 1 01 000- 1000 1 000- 1000 0
5. 1 000- 000- 0010
6. 1 000- 1 000- 000
7. 1 1 000- 1000 001 000- 000-
고주파 계수들의 제로화
본 개시에서 제안하는 또 다른 기법은 계수 블록(혹은 양자화된 변환 블록)의 크기가 크면, 계수 블록 중 고주파 성분에 대응되는 일정 부분의 계수 값들을, 그 실제 값과 상관없이, "0"으로 설정하는 것이다.
예를 들어, 계수 블록의 크기가 64×64인 경우, 좌상귀 32×32 블록을 제외한 나머지 블록(우상귀, 좌하귀, 및 우하귀 32×32 블록)의 모든 계수 값들이 강제적으로 제로화 된다. 도 14는 64×64 계수 블록을 예시하고 있으며, 기 설정된 임계 크기가 32×32라면, 좌상귀 32×32 블록을 제외한 영역에 위치한 비-제로 계수들(검정색으로 표시됨)은 모두 제로화 된다. 따라서 좌하귀 32×32 블록, 우상귀 32×32 블록, 및 우하귀 32×32 블록에 대한 유효 플래그는 모두 "0"으로 설정된다.
주어진 계수 블록이 M×kM 또는 kM×M 크기의 직사각형인 경우, 주어진 계수 블록은 k개의 M×M 블록들로 분할될 수 있는데, 기 설정된 임계 크기가 h×h (h ≤ M)라면, 가장 상측 h×h 블록 혹은 가장 좌측 h×h 블록을 제외한 나머지 블록들의 모든 계수 값들이 강제적으로 제로화 될 수 있다. 반대로, 기 설정된 임계 크기가 h×h (M < h < kM)라면, 가장 상측 M×h 블록 혹은 가장 좌측 h×M 블록을 제외한 나머지 블록들의 모든 계수 값들이 강제적으로 제로화 될 수 있다. 예컨대, 계수 블록이 16×4이고, 기 설정된 임계 크기가 8×8이라면, 4개의 4×4 블록 중 우측 2개의 4×4 블록의 비제로 계수들이 모두 제로화된다.
도 14에 예시된 64×64 계수 블록에 대한 유효 플래그 값들을 diagonal 스캔 방식 (역순)과 너비 우선 탐색을 통해 표현하면 다음과 같다. 4개의 32×32 블록 중 스캔 순서상 앞선 3개의 블록은 비-제로 계수들이 실제 존재함에도 불구하고 "000"으로 설정되고, 마지막 네 번째 블록만 플래그 값이 "1"이 된다. 또한, 상기 예외 규칙을 적용하면 32×32 블록들에 대한 4 비트("0001")을 모두 시그널링 하지 않고 유추 가능한 정보가 된다. 나아가, 제로화된 블록들의 계수들은 시그널링되지 않는다.
블록 크기 유효 플래그
64×64 블록 1
32×32 블록 0001
16×16 블록 1111
8×8 블록 0001 0001 1001 1111
4×4 블록 0100 0001 0100 0100 0001 1000 0001 1001
2×2 블록 0010 0100 0001 0010 1000 0010 0100 1000 0001
1×1 블록 0100 0010 0100 00010010 0100 0010 0001 0001
이러한 고주파 블록의 제로화는 계수 블록의 손자 노드의 블록 크기가 여전히 임계값보다 큰 경우에, 손자 노드에 해당하는 4개의 블록에 재차 적용될 수 있다. 계수 블록의 크기가 클수록, 변환 후에는 비-제로 계수들이 대부분 저주파 성분에 집중되고, 고주파 성분에는 거의 존재하지 않는다는 점에서, 이러한 예외 규칙은, 큰 계수 블록의 부호화 효율을 높이는 데 특히 유용하다. 따라서, 변환(transform) 사이즈가 커질수록 제안된 제로화 기법에 의해 압축 성능을 더 증가시킬 수 있다. 이러한 제로화 기법은 도 6 내지 도 10을 참조하여 설명한 기법과 결합될 수도 있다.
이상에서 설명한 기법과 규칙들을 사용하여, 도 11에 예시된 32×32 계수 블록에 대해, 비-제로 계수들의 분포를 표현하기 위해 시그널링되는 유효 플래그들 값들은 다음과 같다. 적용된 규칙들을 나열하면, 다음과 같다.
- 고주파 블록들의 제로화: th 값을 64로 설정
- 스캔 방식: diagonal 방식을 사용
- 트리 탐색 방식: 너비 우선을 사용
- 예외 규칙 적용
1. 1
2. 0011
3. 0100 1111
4. 0100 0110 000- 000- 1001
5. 0010 000- 000- 000- 1000 000- 000-
6. 0100 1000 1000 0010 000- 1000 000-
이와 같이, 도 11에 예시된 32×32 계수 블록의 비-제로 계수들의 위치를 표현하는 데에는 총 80 비트가 소요된다. 앞서 설명한 바와 같이, 도 11의 계수 블록과 동일한 도 6의 계수 블록을 기존의 HEVC에서 채용된 방식으로 표현하면 마지막 유효 계수의 위치를 표현하기 위한 4개의 신택스를 제외하더라도, 나머지 2개의 신택스(coded_sub_block_flagsig _ coeff _flag)에 필요한 비트수는 대략 140 비트가 된다. 140 비트에 마지막 유효 계수의 위치를 표현하기 위한 정보까지 더하게 되면 그 이상의 비트수가 필요하게 된다.
만약, 임계값(th )이 16이고 다른 조건들은 위와 동일하다면, 도 4에 예시된 32×32 계수 블록에 대한 유효 플래그들은 다음과 같다.
1. 1
2. ----
3. 1111
4. 0110 000- 000- 1001
5. 000- 000- 000- 1000 000- 000-
6. 1000 1000 0010 000- 1000 000-
여기서, 계수 블록 전체(즉, 32×32 블록)에 대한 유효 플래그 값은 "1"이고, 하위 노드인 16×16 블록은 임계값(th = 16)과 동일하므로 스캔 순서상 처음 세 개의 16×16 블록에 대한 플래그 값은 "000"으로 설정되며, 네 번째 블록에 대한 플래그 값은 "1"로 설정된다. 따라서, 4개의 16×16 블록에 대한 유효 플래그 "0001"는 시그널링 할 필요가 없다.
도 15는 영상 복호화 장치가 큰 계수 블록에 대한 처리 과정을 도시한 흐름도이다. 도 15에서는 너비 우선 탐색 방식의 사용을 전제로 하고 있으나, 깊이 우선 탐색을 사용할 수도 있음에 유의한다. 또한, 간략화를 위해, 도 15에는 전술한 예외 규칙을 포함시키지 않았으며, 계수 블록이 정사각형 모양임을 가정하였다.
영상 복호화 장치는 복호화하고자 하는 현재의 계수 블록의 사이즈(즉, TU 사이즈)을 N으로 설정한다. 영상 복호화 장치는 현재의 계수 블록에 대한 유효 플래그를 파싱하고, 해당 유효 플래그가 "0"이 아니면, 계수 블록을 4개의 블록으로 분할한다. 생성된 블록의 크기(N/2)가 임계값 th 이상이면, 영상 복호화 장치는, 유효 플래그의 파싱 없이, 생성된 4개의 블록에 대한 유효 플래그들을 "0001"로 설정한다. 반대로, 생성된 블록의 크기(N/2)가 임계값 th 미만이면, 영상 복호화 장치는 생성된 4개의 블록에 대한 유효 플래그들을 파싱한다.
생성된 4개의 블록 각각에 대해, 해당 블록의 유효 플래그 값이 "0"이 아니면, 해당 블록을 단일 유효 계수(N=1)에 도달될 때까지 4개의 균등한 크기의 작은 블록들로 반복적으로(recursively) 분할하면서, 분할할 때마다 생성되는 4개의 블록에 대한 유효 플래그들을 파싱한다.
전술한 바와 같이, 도 11 내지 도 15을 참조하여 설명한 기법은 부호화 대상 블록의 변환(transform)이 스킵되어 고주파 및 저주파 성분(혹은 coefficients)이 아닌 잔차(residual) 값 자체를 보내는 경우에 더 유용할 수 있다. 이점에 착안하여, 영상 부호화 장치는 부호화 대상 블록의 변환이 스킵되는 경우에 도 11 내지 도 15을 참조하여 설명한 기법을 적용되고, 변환이 수행된 양자화된 변환 계수 블록에 대해서는 도 6 내지 도 10을 참조하여 설명한 기법을 적용하도록 구성될 수도 있다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
CROSS-REFERENCE TO RELATED APPLICATION
본 특허출원은, 본 명세서에 그 전체가 참고로서 포함되는, 2017년 07월 31일 한국에 출원한 특허출원번호 제10-2017-0097270호 및 2017년 09월 07일 한국에 출원한 특허출원번호 제10-2017-0114516호에 대해 우선권을 주장한다.

Claims (20)

  1. 계수 블록에서 비-제로(non-zero) 계수들의 분포를 부호화하는 것을 포함하는 영상 부호화 방법으로서,
    현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 부호화하는 단계;
    상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개(n은 2 이상의 자연수)의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계;
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 부호화를 스킵(skip)하는 단계; 및
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그를 부호화하는 단계
    를 포함하는, 영상 부호화 방법.
  2. 제1항에 있어서,
    상기 n개의 서브 블록들에 관련된 유효 플래그를 부호화하는 단계는,
    상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 선행하는 n-1개의 서브 블록이 모두 유효 블록이 아니면, 상기 선행하는 n-1개의 서브 블록에 관련된 유효 플래그들을 부호화하고, 상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 마지막 서브 블록에 관련된 유효 플래그의 부호화를 스킵하는 단계를 포함하는 것을 특징으로 하는, 영상 부호화 방법.
  3. 제1항에 있어서,
    상기 영상 부호화 방법은,
    상기 n개의 서브 블록들에 관련된 유효 플래그의 부호화를 스킵(skip)하는 경우에,
    상기 n개의 서브 블록들 중 좌상귀의 서브 블록의 계수들을 부호화하는 단계; 및
    상기 n개의 서브 블록들 중 우상귀, 좌하귀, 및 우하귀의 서브 블록들의 계수들의 부호화를 스킵하는 단계를 더 포함하는 것을 특징으로 하는, 영상 부호화 방법.
  4. 계수 블록에서 비-제로 계수들의 분포를 결정하는 것을 포함하는 영상 복호화 방법으로서,
    비트 스트림으로부터, 현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 파싱하는 단계;
    상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개(n은 2 이상의 자연수)의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계를 포함하되,
    상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계는,
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계; 및
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계
    를 포함하는, 영상 복호화 방법.
  5. 제4항에 있어서,
    상기 현재의 계수 블록이 정사각형인 경우,
    상기 n개의 균등한 크기의 서브 블록들은 4개의 정사각형인 것을 특징으로 하는, 영상 복호화 방법.
  6. 제4항에 있어서,
    상기 현재의 계수 블록이 M×kM 또는 kM×M 크기의 직사각형인 경우,
    상기 현재의 계수 블록은 먼저 k개의 정사각형 모양의 서브 블록들로 분할된 후, 유효 블록으로 결정된 서브 블록이, 단일의 유효 계수에 도달될 때까지, 4개의 균등한 크기의 정사각형 모양의 서브 블록들로 반복적으로 분할되는 것을 특징으로 하는, 영상 복호화 방법.
  7. 제4항에 있어서,
    상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계는,
    상기 n개의 서브 블록들 중 좌상귀의 서브 블록에 관련된 유효 플래그를 제1값으로 세팅하고, 우상귀, 좌하귀, 및 우하귀의 서브 블록들에 관련된 유효 플래그를 제2값으로 세팅하는 단계를 포함하는 것을 특징으로 하는, 영상 복호화 방법.
  8. 제7항에 있어서,
    상기 제2값으로 세팅된 유효 플래그를 갖는 서브 블록들의 계수들의 복호화를 스킵하는 단계를 더 포함하는 것을 특징으로 하는, 영상 복호화 방법.
  9. 제4항에 있어서,
    상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계는,
    상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 선행하는 n개의 서브 블록이 모두 유효 블록이 아니면, 상기 선행하는 n-1개의 서브 블록에 관련된 유효 플래그들을 복호화하고, 상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 마지막 서브 블록에 관련된 유효 플래그의 복호화를 스킵하는 단계를 포함하는 것을 특징으로 하는, 영상 복호화 방법.
  10. 계수 블록에서 비-제로 계수들의 분포를 결정하는 것을 포함하는 영상 복호화 장치로서,
    하나 이상의 프로세서; 및
    명령어들이 저장된 메모리를 포함하되, 상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때 상기 영상 복호화 장치로 하여금,
    비트 스트림으로부터, 현재의 계수 블록이 적어도 하나의 비-제로 계수를 갖는 유효 블록인지 여부를 가리키는 유효 플래그(significant flag)를 파싱하는 단계;
    상기 유효 플래그가 상기 현재의 계수 블록이 유효 블록임을 가리키는 경우에, 상기 현재의 계수 블록에 대해, 유효 블록으로 결정된 서브 블록을, 단일의 유효 계수에 도달될 때까지, n개의 균등한 크기의 서브 블록들로 반복적으로(recursively) 분할하면서, 상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계를 수행하도록 구성되되,
    상기 n개의 서브 블록들이 각각 유효 블록인지 여부를 결정하는 단계는,
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 크거나 같으면, 상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계; 및
    상기 n개의 서브 블록들의 크기가 기설정된 임계값보다 작으면, 상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계
    를 수행하도록 하는 것을 특징으로 하는, 영상 복호화 장치.
  11. 제10항에 있어서,
    상기 n개의 서브 블록들에 관련된 유효 플래그의 파싱을 스킵하는 단계는,
    상기 n개의 서브 블록들 중 좌상귀의 서브 블록에 관련된 유효 플래그를 제1값으로 세팅하고, 우상귀, 좌하귀, 및 우하귀의 서브 블록들에 관련된 유효 플래그를 제2값으로 세팅하는 단계를 포함하는 것을 특징으로 하는, 영상 복호화 장치.
  12. 제10항에 있어서,
    상기 n개의 서브 블록들에 관련된 유효 플래그들을 파싱하는 단계는,
    상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 선행하는 n-1개의 서브 블록이 모두 유효 블록이 아니면, 상기 선행하는 n-1개의 서브 블록에 관련된 유효 플래그들을 복호화하고, 상기 n개의 서브 블록들 중 서브 블록 스캔 순서상 마지막 서브 블록에 관련된 유효 플래그의 복호화를 스킵하는 단계를 포함하는 것을 특징으로 하는, 영상 복호화 장치.
  13. 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 부호화하는 방법으로서,
    마지막 유효 서브 블록(last significant sub-block)을 결정하는 단계, 여기서 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로(non-zero) 계수를 갖는 서브 블록 스캔 순서상 마지막 서브 블록임;
    상기 결정된 마지막 유효 서브 블록의 위치를 가리키는 정보를 부호화하는 단계;
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 부호화하는 단계; 및
    상기 좌상귀 서브 블록의 계수들과, 상기 마지막 유효 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 부호화하는 단계
    를 포함하는 계수 블록의 부호화 방법.
  14. 제13항에 있어서,
    상기 마지막 유효 서브 블록의 위치는,
    상기 마지막 유효 서브 블록의 상기 계수블록 내에서의 X축 인덱스 및 Y축 인덱스로 표현되거나,
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수로 표현되거나,
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수로 표현되는 것을 특징으로 하는, 계수 블록의 부호화 방법.
  15. 제13항에 있어서,
    상기 마지막 유효 서브 블록의 위치를 가리키는 정보는,
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수를 나타내는 제1정보 또는 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수를 나타내는 제2정보; 및
    상기 제1정보 또는 상기 제2정보 중 어느 정보가 시그널링되는지를 나타내는 제3정보
    를 포함하는 것을 특징으로 하는, 계수 블록의 부호화 방법.
  16. 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 복호화하는 방법으로서,
    마지막 유효 서브 블록의 위치를 가리키는 정보를 복호화하는 단계 - 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로 계수를 갖는 상기 서브 블록 스캔 순서상 마지막 서브 블록임 - ;
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 복호화하는 단계; 및
    상기 좌상귀 서브 블록의 계수들과, 상기 마지막 유효 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 복호화하는 단계
    를 포함하는, 계수 블록의 복호화 방법.
  17. 제16항에 있어서,
    상기 마지막 유효 서브 블록의 위치는,
    상기 마지막 유효 서브 블록의 상기 계수블록 내에서의 X축 좌표 및 Y축 좌표로 표현된 것을 특징으로 하는, 계수 블록의 복호화 방법.
  18. 제16항에 있어서,
    상기 마지막 유효 서브 블록의 위치는,
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수로 표현되거나, 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수로 표현된 것을 특징으로 하는, 계수 블록의 복호화 방법.
  19. 제16항에 있어서,
    상기 마지막 유효 서브 블록의 위치를 가리키는 정보는,
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 후행하는 서브 블록들의 개수를 나타내는 제1정보 또는 상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들의 개수를 나타내는 제2정보; 및
    상기 제1정보 또는 상기 제2정보 중 어느 정보가 시그널링되는지를 나타내는 제3정보
    를 포함하는 것을 특징으로 하는, 계수 블록의 복호화 방법.
  20. 복수의 서브 블록들의 계수들로 분할가능한 계수들의 어레이를 갖는 계수 블록을 복호화하는 영상 복호화 장치로서,
    하나 이상의 프로세서; 및
    명령어들이 저장된 메모리를 포함하되, 상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때 상기 영상 복호화 장치로 하여금,
    마지막 유효 서브 블록의 위치를 가리키는 정보를 복호화하는 단계 - 상기 마지막 유효 서브 블록은 적어도 하나의 비-제로 계수를 갖는 상기 서브 블록 스캔 순서상 마지막 서브 블록임 - ;
    상기 서브 블록 스캔 순서상 상기 마지막 유효 서브 블록에 선행하는 서브 블록들 중 상기 계수 블록의 좌상귀 서브 블록을 제외한 각각의 서브 블록이 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록인지 여부를 가리키는 각각의 서브 블록에 대한 신택스 요소를 복호화하는 단계; 및
    상기 좌상귀 서브 블록의 계수들과, 상기 마지막 유효 서브 블록의 계수들과, 상기 신택스 요소가 적어도 하나의 비-제로 계수를 갖는 유효 서브 블록임을 가리키는 서브 블록들의 계수들을 복호화하는 단계
    를 수행하도록 하는 것을 특징으로 하는, 영상 복호화 장치.
PCT/KR2018/008605 2017-07-31 2018-07-30 비-제로 계수들의 위치를 표현하는 방법 및 장치 WO2019027200A1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2017-0097270 2017-07-31
KR20170097270 2017-07-31
KR1020170114516A KR102453811B1 (ko) 2017-07-31 2017-09-07 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR10-2017-0114516 2017-09-07

Publications (1)

Publication Number Publication Date
WO2019027200A1 true WO2019027200A1 (ko) 2019-02-07

Family

ID=65233940

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2018/008605 WO2019027200A1 (ko) 2017-07-31 2018-07-30 비-제로 계수들의 위치를 표현하는 방법 및 장치

Country Status (2)

Country Link
KR (4) KR102544545B1 (ko)
WO (1) WO2019027200A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113545043A (zh) * 2019-03-11 2021-10-22 Kddi 株式会社 图像解码装置、图像解码方法和程序
CN113574880A (zh) * 2019-03-13 2021-10-29 北京字节跳动网络技术有限公司 关于子块变换模式的分割
WO2022217442A1 (zh) * 2021-04-12 2022-10-20 Oppo广东移动通信有限公司 系数编解码方法、编码器、解码器以及计算机存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140120891A (ko) * 2011-12-20 2014-10-14 모토로라 모빌리티 엘엘씨 효율적인 변환 유닛 인코딩을 위한 방법 및 장치
KR20150003778A (ko) * 2012-04-05 2015-01-09 퀄컴 인코포레이티드 코딩된 블록 플래그 코딩
KR101590243B1 (ko) * 2011-06-29 2016-01-29 모토로라 모빌리티 엘엘씨 인트라 코딩 동안에 스캔 코딩 패턴을 이용하기 위한 방법 및 시스템
WO2017043760A1 (ko) * 2015-09-08 2017-03-16 삼성전자 주식회사 엔트로피 부호화 및 복호화를 위한 장치 및 방법
KR101730639B1 (ko) * 2008-08-15 2017-04-26 톰슨 라이센싱 계수들의 블럭에서 유효 계수들의 위치들의 코딩을 갖는 비디오 코딩

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8976861B2 (en) * 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
KR20130050403A (ko) * 2011-11-07 2013-05-16 오수미 인터 모드에서의 복원 블록 생성 방법
KR20130116754A (ko) * 2012-04-16 2013-10-24 주식회사 팬택 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101730639B1 (ko) * 2008-08-15 2017-04-26 톰슨 라이센싱 계수들의 블럭에서 유효 계수들의 위치들의 코딩을 갖는 비디오 코딩
KR101590243B1 (ko) * 2011-06-29 2016-01-29 모토로라 모빌리티 엘엘씨 인트라 코딩 동안에 스캔 코딩 패턴을 이용하기 위한 방법 및 시스템
KR20140120891A (ko) * 2011-12-20 2014-10-14 모토로라 모빌리티 엘엘씨 효율적인 변환 유닛 인코딩을 위한 방법 및 장치
KR20150003778A (ko) * 2012-04-05 2015-01-09 퀄컴 인코포레이티드 코딩된 블록 플래그 코딩
WO2017043760A1 (ko) * 2015-09-08 2017-03-16 삼성전자 주식회사 엔트로피 부호화 및 복호화를 위한 장치 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113545043A (zh) * 2019-03-11 2021-10-22 Kddi 株式会社 图像解码装置、图像解码方法和程序
CN113574880A (zh) * 2019-03-13 2021-10-29 北京字节跳动网络技术有限公司 关于子块变换模式的分割
WO2022217442A1 (zh) * 2021-04-12 2022-10-20 Oppo广东移动通信有限公司 系数编解码方法、编码器、解码器以及计算机存储介质
US11924455B2 (en) 2021-04-12 2024-03-05 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Coefficient coding method, encoder, and decoder

Also Published As

Publication number Publication date
KR20220140678A (ko) 2022-10-18
KR102544550B1 (ko) 2023-06-16
KR102544530B1 (ko) 2023-06-16
KR20220140675A (ko) 2022-10-18
KR20220140676A (ko) 2022-10-18
KR102544545B1 (ko) 2023-06-16
KR20220140677A (ko) 2022-10-18
KR102544554B1 (ko) 2023-06-16

Similar Documents

Publication Publication Date Title
WO2017052081A1 (ko) 영상 코딩 시스템에서 인터 예측 방법 및 장치
WO2018212578A1 (ko) 비디오 신호 처리 방법 및 장치
WO2012023763A2 (ko) 인터 예측 부호화 방법
WO2012081879A1 (ko) 인터 예측 부호화된 동영상 복호화 방법
WO2017022973A1 (ko) 비디오 코딩 시스템에서 인터 예측 방법 및 장치
WO2018008904A2 (ko) 비디오 신호 처리 방법 및 장치
WO2013032073A1 (ko) Amvp 모드에서의 예측 블록 생성 방법
WO2018044087A1 (ko) 비디오 신호 처리 방법 및 장치
WO2016052977A1 (ko) 비디오 신호 처리 방법 및 장치
WO2017014412A1 (ko) 비디오 코딩 시스템에서 인트라 예측 방법 및 장치
WO2013002557A2 (ko) 움직임 정보의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2018008905A1 (ko) 비디오 신호 처리 방법 및 장치
WO2013109122A1 (ko) 계층적 부호화 단위에 따라 스캔 순서를 변경하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
WO2019045392A1 (ko) 비디오 신호 처리 방법 및 장치
WO2018026222A1 (ko) 비디오 신호 처리 방법 및 장치
WO2012124961A2 (ko) 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2013109124A1 (ko) 쌍방향 예측 및 블록 병합을 제한하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
WO2017065509A2 (ko) 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
WO2019078664A1 (ko) 비디오 신호 처리 방법 및 장치
WO2017159901A1 (ko) 비디오 코딩 시스템에서 블록 구조 도출 방법 및 장치
WO2016114583A1 (ko) 비디오 신호 처리 방법 및 장치
WO2015020504A1 (ko) 병합 모드 결정 방법 및 장치
WO2016048092A1 (ko) 비디오 신호 처리 방법 및 장치
WO2016064123A1 (ko) 비디오 신호 처리 방법 및 장치
WO2018128222A1 (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: 18841462

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18841462

Country of ref document: EP

Kind code of ref document: A1