Intra prediction method, and encoder and decoder performing same
The intra prediction method for inter slices addresses the challenge of high-resolution image compression by dividing luma and chroma blocks differently, enhancing encoding efficiency and reducing data transmission.
Patent Information
- Application Number
- PCT/KR2025/010311
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-17
- Filing Date
- 2025-07-15
- Publication Date
- 2026-01-22
Smart Images

Figure KR2025010311_22012026_PF_FP_ABST
Abstract
Description
Intra prediction method, image encoding and decoding device performing the same
[0001] The present invention relates to an intra prediction method that can efficiently encode and decode inter slices.
[0002] Compression encoding of video signals is achieved by removing redundant information by considering spatial correlation, temporal correlation, and probabilistic correlation.
[0003] Among the prediction methods used in image encoding, intra prediction is a method of predicting the current block by referring to samples that have already been reconstructed around the block to be encoded.
[0004] Recently, due to the development of various media and data transmission media, user demand for high-resolution, high-quality images is increasing.
[0005] Since the encoded data of a high-resolution image contains more information than the encoded data of a low-resolution or medium-resolution image, the cost of transmitting or storing it increases.
[0006] To solve this problem, research is ongoing on encoding and decoding methods to effectively reduce the amount of encoding data for high-resolution images.
[0007] The present invention aims to provide an intra prediction method capable of improving image compression performance by efficiently coding inter-slices, and an image encoding and decoding device performing the method.
[0008] An intra prediction method according to one embodiment of the present invention is a method of performing intra prediction on a coding block included in an inter slice, comprising: a step of setting an intra region encoded by intra prediction in the inter slice; a step of determining, for the set intra region, either a first tree mode in which a luma block and a chroma block are divided into the same division structure or a second tree mode in which a luma block and a chroma block are divided into different division structures; and a step of performing intra prediction on a luma block and a chroma block of the intra region divided according to the determined tree mode.
[0009] Meanwhile, at least some of the intra prediction methods for chroma blocks may be limited to the chroma blocks included in the intra region.
[0010] The image encoding device according to one embodiment of the present invention performs the intra prediction method as described above.
[0011] The image decoding device according to one embodiment of the present invention performs the intra prediction method as described above.
[0012] Meanwhile, at least some steps of the above methods may be implemented as a computer-readable recording medium recording a program for execution on a computer, or may be provided as a program itself.
[0013] According to one embodiment of the present invention, an area in which inter prediction is difficult in an inter slice is set as an intra area so that intra prediction is performed, and inter prediction related syntax is not signaled for an area in the intra area, thereby efficiently encoding an inter slice and reducing the number of bits transmitted.
[0014] Figure 1 is a block diagram illustrating the configuration and operation of a video encoder for encoding an image.
[0015] Figures 2a to 2c are drawings for explaining an embodiment of a method for dividing blocks of an image.
[0016] Figures 3 and 4 are drawings for explaining embodiments of an intra prediction method.
[0017] Figure 5 is a block diagram illustrating the configuration and operation of a video decoder for decoding an image.
[0018] FIG. 6 is a diagram illustrating an example of an intra prediction method in IBC (Intra Block Copy) mode.
[0019] FIG. 7 is a diagram illustrating an example of an intra prediction method in IntraTMP (Intra Template Matching Prediction) mode.
[0020] FIG. 8 is a diagram illustrating an example of a luma block and a chroma block divided into a dual tree structure.
[0021] Figure 9 is a flowchart illustrating an intra prediction method according to an embodiment of the present invention.
[0022] Figure 10 is a flowchart illustrating an embodiment of a method for setting an intra area.
[0023] Figure 11 is a drawing showing an example of an intra area.
[0024] Fig. 12 is a flowchart illustrating a first embodiment of a method for determining a division structure of a luma block and a chroma block.
[0025] Figure 13 is a diagram showing examples of the division structure of luma blocks and chroma blocks in the intra area.
[0026] Fig. 14 is a flowchart illustrating a second embodiment of a method for determining a division structure of a luma block and a chroma block.
[0027] Fig. 15 is a flowchart illustrating a third embodiment of a method for determining a division structure of a luma block and a chroma block.
[0028] FIG. 16 is a flowchart illustrating an embodiment of a method for performing intra prediction for a luma block and a chroma block.
[0029] Hereinafter, with reference to the attached drawings, a method and device for encoding and decoding an image according to an embodiment of the present invention will be described in detail.
[0030] In the following description of the present invention, detailed descriptions of related known functions or configurations will be omitted if they are deemed to unnecessarily obscure the gist of the invention. Furthermore, the terms described below are defined in light of their functions within the present invention and may vary depending on the intent or custom of the user or operator. Therefore, their definitions should be based on the overall content of the present invention.
[0031] In addition, in order to efficiently explain the technical components that make up the present invention, the preferred embodiments of the present invention implemented below omit, as much as possible, the system functional components that are already provided in each system functional configuration or are commonly provided in the technical field to which the present invention belongs, and focus on explaining the functional components that must be additionally provided for the present invention.
[0032] Anyone having ordinary skill in the art to which the present invention pertains will be able to easily understand the functions of components that have been conventionally used among the functional configurations that are not illustrated below, and will also be able to clearly understand the relationship between the components omitted as described above and the components added for the present invention.
[0033] In this specification, a device that encodes an image to generate a video signal bitstream is referred to as an encoding device, an encoding device, or an encoder, and a device that decodes the video signal bitstream to restore an image is referred to as a decoding device, a decoding device, or a decoder.
[0034] A pixel or pel is the smallest unit that constitutes an image, and the terms pixel and sample can be used interchangeably. A sample can generally represent a pixel or a pixel value, or it can represent only a pixel or pixel value of the luminance component, or only a pixel or pixel value of the chroma component.
[0035] In addition, the unit is used to refer to a basic unit of image processing or a specific location of a picture, and represents an image area including at least one of a luminance component and a chrominance component. Specifically, the unit can be used as a concept including a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transform unit (TU). In addition, a block represents an image area including a specific component among luminance components and chrominance components, and an MxN block can represent a set of samples or transform coefficients consisting of M columns and N rows. Here, the terms unit, block, partition, signal, and area may be used interchangeably.
[0036] Meanwhile, a picture refers to a field or a frame, and these can be used interchangeably. For example, if the image is an interlaced image, one frame is divided into an odd (or odd, top) field and an even (or even, bottom) field, and each field is composed of a single picture unit, which can be encoded or decoded. If the image is a progressive image, one frame can be composed as a picture, which can be encoded or decoded.
[0037]
[0038] FIG. 1 is a block diagram illustrating an encoding device according to an embodiment of the present invention, and is intended to explain the configuration and operation of a video encoder for encoding an image.
[0039] Referring to FIG. 1, a video encoder (100) may be configured to include a transformation unit (110), a quantization unit (120), an inverse quantization unit (130), an inverse transformation unit (140), a filtering unit (150), a prediction unit (160), a DPB (Decoded Picture Buffer, 170), and an entropy coding unit (180).
[0040] The conversion unit (110) converts the residual signal, which is the difference between the input video signal and the prediction signal generated by the prediction unit (160), to obtain a conversion coefficient value.
[0041] For example, the Discrete Cosine Transform (DCT), the Discrete Sine Transform (DST), or the Wavelet Transform can be used.
[0042] The transform kernel used for transforming the residual block may be a transform kernel having separable vertical and horizontal transform properties. In this case, the transform for the residual block may be performed separately as vertical and horizontal transforms. For example, the encoder may perform a vertical transform by applying the transform kernel in the vertical direction of the residual block. Alternatively, the encoder may perform a horizontal transform by applying the transform kernel in the horizontal direction of the residual block.
[0043] Meanwhile, the transform kernel may be used as a term referring to a set of parameters used for transforming the residual signal, such as a transform matrix, a transform array, a transform function, or a transform, and may be any one of a plurality of available kernels, and transform kernels based on different transform types may be used for each of the vertical transform and the horizontal transform.
[0044] The transformation coefficients may be distributed such that higher coefficients are distributed toward the upper left corner of the block, and coefficients closer to '0' are distributed toward the lower right corner of the block. Furthermore, as the current block size increases, there is a possibility that many '0' coefficients exist in the lower right area. To reduce the transformation complexity of large blocks, only the upper left area can be left, and the remaining areas can be reset to '0'.
[0045] Additionally, error signals may exist only in some regions of a coding block, in which case the conversion process may be performed only on some arbitrary regions. For example, in a block of size 2Nx2N, error signals may exist only in the first 2NxN block, in which case the conversion process may be performed only on the first 2NxN block, but the conversion process may not be performed on the second 2NxN block and may not be encoded or decoded.
[0046] The encoder may perform additional transformations before the transform coefficients are quantized. The transformation method described above may be referred to as a primary transform, and the additional transformation may be referred to as a secondary transform.
[0047] The secondary transform can be optional for each residual block, for example, the encoder can improve coding efficiency by performing the secondary transform for areas where it is difficult to concentrate energy in the low-frequency region using only the primary transform.
[0048] Specifically, a secondary transformation may be additionally performed on blocks in which residual values appear significantly in directions other than the horizontal or vertical direction of the residual block, and the secondary transformation may not be performed separately into vertical transformation and horizontal transformation, unlike the primary transformation. The secondary transformation as described above may be referred to as a low frequency non-separable transform (LFNST).
[0049] The quantization unit (120) quantizes the transformation coefficient value output from the transformation unit (110).
[0050] In order to increase coding efficiency, a method is used in which, instead of coding the picture signal as is, a picture is predicted using an already coded area through a prediction unit (160), and a restored picture is obtained by adding a residual value between the original picture and the predicted picture to the predicted picture.
[0051] To avoid mismatches between the encoder and decoder, when performing prediction in the encoder, information available in the decoder must also be used, and for this purpose, the encoder can perform a process of reconstructing the current block that it has encoded.
[0052] The inverse quantization unit (130) inversely quantizes the transform coefficient values, and the inverse transformation unit (140) restores the residual values using the inverse quantized transform coefficient values.
[0053] The filtering unit (150) performs filtering operations using a deblocking filter, a sample adaptive offset (SAO), an adaptive loop filter (ALF), etc. to improve the quality of the restored picture and enhance encoding efficiency.
[0054] A deblocking filter is a filter for removing distortion within a block generated at the boundary between blocks in a restored picture. The encoder can determine whether to apply a deblocking filter to a boundary based on the distribution of pixels included in several columns or rows based on an arbitrary boundary within a block.
[0055] When a deblocking filter is applied, the filtering unit (150) can apply a long filter, a strong filter, or a weak filter depending on the deblocking filtering strength, and can process horizontal filtering and vertical filtering in parallel.
[0056] Sample Adaptive Offset (SAO) can be used to correct the offset from the original image on a pixel-by-pixel basis for a residual block to which a deblocking filter is applied. In order to correct the offset for a specific picture, the filtering unit (150) can use a method (Band Offset) that divides the pixels included in the image into a certain number of regions, determines the regions to perform offset correction, and applies the offset to the regions. In addition, the filtering unit (150) can use a method (Edge Offset) that applies the offset by considering the edge information of each pixel.
[0057] Adaptive Loop Filtering (ALF) is a method that divides pixels in an image into predetermined groups, determines a filter to be applied to each group, and performs differential filtering for each group. Information regarding whether to apply an adaptive loop filter can be signaled on a coding unit basis, and the shape and filter coefficients of the ALF filter to be applied can vary depending on the block. Furthermore, the same adaptive loop filter can be applied regardless of the characteristics of the target block.
[0058] The filtered picture can be stored in DPB (170) to be used as a reference picture.
[0059] The prediction unit (160) includes an intra / IBC prediction unit (161) and an inter prediction unit (165). The intra / IBC prediction unit (161) performs intra prediction and IBC prediction within the current picture, and the inter prediction unit (165) performs inter prediction to predict the current picture using a reference picture stored in the DPB (170).
[0060] The intra / IBC prediction unit (161) performs intra prediction from restored areas within the current picture and transmits intra encoding information to the entropy coding unit (180). Here, the intra encoding information may include at least one of an intra prediction mode, an MPM (Most Probable Mode) flag, an MPM index, and information about a reference sample.
[0061] Additionally, the intra / IBC prediction unit (161) can perform IBC (Intra Block Copy) prediction from restored samples within the current picture and transmit IBC encoding information to the entropy coding unit (180).
[0062] In this case, the intra / IBC prediction unit (161) obtains a block vector value indicating a reference area used for prediction of the current area by referring to a specific area within the current picture, and can perform IBC prediction using the obtained block vector value.
[0063] The intra / IBC prediction unit (161) can transmit IBC encoding information including at least one of the size information of the reference area and block vector information (index information for block vector prediction of the current block within the motion candidate list, block vector difference information) to the entropy coding unit (160).
[0064] The inter prediction unit (165) refers to a specific area of the restored reference picture to find the part most similar to the current area, obtains a motion vector value which is the distance between the areas, and transmits motion information (reference direction indication information (L0 prediction, L1 prediction, bidirectional prediction), reference picture index, motion vector information, etc.) for the obtained reference area to the entropy coding unit (180).
[0065] Additionally, the inter prediction unit (165) performs motion compensation using motion information to generate a prediction block for the current block, and transmits inter encoding information including motion information for the reference area to the entropy coding unit (180).
[0066] Meanwhile, the quantized transform coefficients in the form of a two-dimensional array can be rearranged into a one-dimensional array for entropy coding.
[0067] The method of scanning the quantized transform coefficients can be determined according to the size of the transform block and the intra prediction mode, and diagonal, vertical, and horizontal scans can be applied, and the scan information can be signaled on a block-by-block basis or derived from the decoder according to a set rule.
[0068] The entropy coding unit (180) generates a bitstream by entropy coding information representing quantized transform coefficients, intra-coding information, and inter-coding information, and for this purpose, a variable length coding (VLC) method and an arithmetic coding method can be used.
[0069] Variable-length coding (VLC) converts input symbols into a series of codewords, each of which can be of variable length. For example, frequently occurring symbols can be represented by shorter codewords, while less frequently occurring symbols can be represented by longer codewords.
[0070] As a variable length coding method, a context-based adaptive variable length coding (CAVLC) method can be used.
[0071] Arithmetic coding converts consecutive data symbols into a single prime number using the probability distribution of each data symbol, thereby obtaining the optimal prime number bits required to express each symbol.
[0072] As an arithmetic coding method, the context-based adaptive binary arithmetic code (CABAC) method can be used.
[0073] CABAC is a binary arithmetic encoding method that utilizes multiple context models generated based on experimentally derived probabilities. The context models can also be referred to as context models. First, if the symbols are not in binary form, the encoder binarizes each symbol using methods such as exp-Golomb. The binarized 0s and 1s can be represented as bins.
[0074] The CABAC initialization process is divided into context initialization and arithmetic coding initialization. Context initialization initializes the occurrence probability of each symbol, determined by the symbol type, quantization parameter (QP), and slice type (I, P, B). A context model with this initialization information can use probability-based values obtained through experiments.
[0075] The context model provides the probability of occurrence of the Least Probable Symbol (LPS) or Most Probable Symbol (MPS) for the symbol currently being coded, and information (valMPS) on which empty value between 0 and 1 corresponds to the MPS.
[0076] One of several context models is selected through a context index (ctxIdx), and the context index can be derived through information of the block currently to be encoded or information of surrounding blocks.
[0077] Initialization for binary arithmetic coding is performed based on the probability model selected from the context model. Binary arithmetic coding is performed by dividing the data into probability intervals based on the occurrence probabilities of 0 and 1, and then encoding the probability interval corresponding to the bin to be processed becomes the entire probability interval for the next bin to be processed.
[0078] The location information within the probability interval processed for the last bin is output. However, since the probability interval cannot be infinitely divided, if it shrinks to a certain size, a renormalization process is performed to expand the probability interval and output the corresponding location information. Furthermore, after each bin is processed, a probability update process can be performed, which sets a new probability for the next bin to be processed based on the information from the processed bin.
[0079] As described above, the generated bitstream is encapsulated into NAL (Network Abstraction Layer) units as basic units.
[0080] NAL units are divided into VCL (Video Coding Layer) NAL units that contain video data and non-VCL NAL units that contain parameter information for decoding video data, and there may be various types of VCL or non-VCL NAL units.
[0081] A NAL unit consists of NAL header information and data, a Raw Byte Sequence Payload (RBSP). The NAL header information includes summary information about the RBSP. The RBSP of a VCL NAL unit contains an integer number of encoded coding tree units.
[0082] In order to decode a bitstream in a decoder, the bitstream must first be divided into NAL units, and then each divided NAL unit must be decoded. Meanwhile, the information required for decoding the bitstream can be transmitted as part of a picture parameter set (PPS), a sequence parameter set (SPS), a video parameter set (VPS), etc.
[0083] Meanwhile, the configuration and operation of the encoder described with reference to FIG. 1 are according to one embodiment of the present invention, and some configurations may be omitted or added as needed.
[0084]
[0085] Additionally, a single picture may be encoded by dividing it into sub-pictures, slices, tiles, etc. A sub-picture may include one or more slices or tiles. When a single picture is encoded by dividing it into multiple slices or tiles, all slices or tiles within the picture must be decoded before it can be displayed on the screen.
[0086] When a single picture is encoded into multiple subpictures, only any subpicture can be decoded and displayed on the screen. A slice can contain multiple tiles or subpictures, and a tile can contain multiple subpictures or slices.
[0087] Subpictures, slices, and tiles can be encoded or decoded independently of each other, which is effective for parallel processing and processing speed improvement, but the amount of bits may increase because the encoded information of adjacent subpictures, slices, and tiles cannot be used.
[0088] And subpictures, slices, and tiles can be encoded by being divided into multiple coding tree units (CTUs).
[0089] A coding tree unit can be composed of a luminance coding tree block (CTB) of size 128x128 and two chrominance coding tree blocks of size 64x64.
[0090] A single coding tree unit may be undivided and constitute a single coding unit (CU) itself, or may be divided into multiple coding units as illustrated in Fig. 2a. A coding unit may consist of a luminance coding block (CB) and two chrominance coding blocks.
[0091] A coding unit may consist of one transform unit (TU), or may be split into multiple transform units. A transform unit may consist of a luminance transform block (TB) and two chrominance transform blocks.
[0092] Here, a coding unit represents a basic unit for processing a picture in the process of prediction, transformation, quantization, entropy coding, and decoding, and the size and shape of a coding unit within a picture may not be constant.
[0093] A coding unit may have a square or non-square shape, and a rectangular coding unit may include a vertical coding unit whose height is greater than its width and a horizontal coding unit whose width is greater than its height.
[0094] The coding tree unit is first partitioned into a Quad Tree (QT) structure as illustrated in (a) of Fig. 2b, such that one node with a size of 2NX2N can be partitioned into four nodes with a size of NXN. Meanwhile, the Quad Tree partitioning can be performed recursively, and not all nodes need to be partitioned to the same depth.
[0095] Leaf nodes of a quadtree can be further partitioned into a multi-type tree (MTT) structure. For example, in a multi-type tree structure, a single node can be partitioned into a binary or ternary tree structure with horizontal or vertical partitioning. Accordingly, a multi-type tree structure can have four partitioning structures: vertical binary partitioning, horizontal binary partitioning, vertical ternary partitioning, and horizontal ternary partitioning.
[0096] In each tree structure, both the width and height of a node can have a power of 2. For example, in a binary tree (BT) structure as illustrated in (b) of Fig. 2b, a node of size 2NX2N can be split into two NX2N nodes by vertical binary splitting and into two 2NXN nodes by horizontal binary splitting.
[0097] In addition, in a Ternary Tree (TT) structure as illustrated in (c) of Fig. 2b, a node of size 2NX2N can be split into nodes of size (N / 2)X2N, NX2N, and (N / 2)X2N by vertical ternary splitting, and into nodes of size 2NX(N / 2), 2NXN, and 2NX(N / 2) by horizontal ternary splitting. This multi-type tree splitting can be performed recursively.
[0098] As illustrated in Fig. 2c, a leaf node of a multi-type tree can be a coding unit, and if the coding unit is not larger than the maximum transformation length, the coding unit can be used as a unit of prediction and transformation without further splitting. On the other hand, if the width or height of the coding unit is larger than the maximum transformation length, the coding unit can be split into multiple transformation units without explicit signaling regarding the splitting.
[0099] The tree partitioning structure as described above may have the same shape (Single Tree) for the luminance block and the chrominance block, or different shapes (Dual Tree) for the luminance block and the chrominance block.
[0100] Meanwhile, the block division from the coding tree unit (CTU) to the coding unit (CU) as described above can be performed through a rate-distortion optimization (RDO) process, whereby the division structure with the smallest rate-distortion cost (RD cost) value within the allowable size and depth conditions is selected to determine the final coding unit.
[0101] Additionally, the syntax for expressing the block partition as described above may be as shown in Table 1 below.
[0102]
[0103] In Table 1, split_cu_flag indicates whether a block partition occurs or a partition ends, split_qt_flag indicates whether a QT partition occurs, mtt_split_cu_vertical_flag indicates whether the MTT partition is vertical or horizontal, and mtt_split_cu_binary_flag indicates whether the MTT partition is binary or ternary.
[0104]
[0105] Hereinafter, embodiments of the intra prediction method will be described in more detail with reference to FIGS. 3 and 4.
[0106] For intra prediction, intra prediction mode information indicating an intra prediction direction may be signaled, and the intra prediction mode information indicates any one of a plurality of intra prediction modes constituting an intra prediction mode set.
[0107] As illustrated in FIG. 3, the intra prediction mode set may include a planar mode, a DC mode, and 65 directional modes, and each intra prediction mode may be indicated through an intra prediction mode index.
[0108] For example, intra prediction mode index "0" indicates planar mode, intra prediction mode index "1" indicates DC mode, and intra prediction mode indexes "2" to "66" can indicate different directional modes, respectively.
[0109] The directional modes each indicate different angles within a preset angular range, for example, a directional mode can indicate an angle within an angular range from 45 degrees to -135 degrees clockwise.
[0110] In this case, the intra prediction mode index "2" may indicate the Horizontal Diagonal (HDIA) mode, the intra prediction mode index "18" may indicate the Horizontal (HOR) mode, the intra prediction mode index "34" may indicate the Diagonal (DIA) mode, the intra prediction mode index "50" may indicate the Vertical (VER) mode, and the intra prediction mode index "66" may indicate the Vertical Diagonal (VDIA) mode.
[0111] If the current block is a non-square block, 20 additional wide angular modes can be used, indicating angles greater than 45 degrees clockwise or less than -135 degrees.
[0112] Based on the intra prediction mode information as described above, reference samples to be used for intra prediction for the current block are determined.
[0113] For example, if the intra prediction mode index indicates a specific directional mode, the reference sample corresponding to that angle from the current sample of the current block is used for prediction for the current sample.
[0114] As described above, for intra prediction, surrounding already restored samples are used as reference samples, and the reference samples may be restored samples located to the left or above the current block.
[0115] Referring to FIG. 4, the reference samples may be samples adjacent to the left boundary and upper boundary of the current block.
[0116] For example, if the size of the current block is NxN and samples of a single reference line adjacent to the current block are used for intra prediction, reference samples can be set using (2N*2+1) surrounding samples located on the left (L, Left), top (T, Top), and top-left (TL, Top-left) of the current block.
[0117] Meanwhile, samples of multiple reference lines (MRL) may be used for intra prediction of the current block, and the multiple reference lines may be composed of n reference lines located within a preset range from the current block. In this case, separate reference line index information indicating the reference lines to be set as reference pixels may be signaled.
[0118] Additionally, if at least some of the samples to be used as reference samples have not yet been restored, reference samples can be obtained through a reference sample padding process, and a reference sample filtering process can be performed to reduce errors in intra prediction.
[0119] Meanwhile, for chroma blocks, the following intra prediction methods can be additionally applied by utilizing the correlation with the corresponding luma block.
[0120] In DM (Direct Mode), the intra prediction mode used by the luma block at the corresponding location is applied to the corresponding chroma block as is, so that the high correlation between the luma component and the chroma component can be utilized without separately signaling the intra prediction mode for the chroma block.
[0121] In Cross-Component Linear Model (CCLM) mode, chroma samples can be directly predicted from reconstructed luma samples by exploiting the linear correlation between luma components and chroma components.
[0122] In MMLM (Multi-Model Linear Model) mode, additional reference samples are introduced to CCLM, so that more luma samples around the block are utilized for model extraction in addition to the existing adjacent boundaries, so that chroma samples can be predicted using two or more linear models.
[0123] Additionally, in the Convolutional Cross-Component Model (CCCM) mode, a two-dimensional convolutional model including nonlinear components is learned from reconstructed luma and chroma reference samples, so that chroma samples can be predicted using a two-dimensional filter.
[0124] And in Gradient-based Linear Model (GLM) mode, chroma samples can be predicted using gradient information for luma samples as well as luma sample values to reflect edge directionality.
[0125] Meanwhile, in Cross-Component Prediction merge (CCP Merge) mode, the merge concept is introduced to intra prediction, and chroma samples can be predicted by reusing cross-component model information used in the previous block.
[0126]
[0127] FIG. 5 is a block diagram illustrating a decoding device according to an embodiment of the present invention, and is intended to explain the configuration and operation of a video decoder for encoding an image.
[0128] Referring to FIG. 5, a video decoder (200) may be configured to include an entropy decoding unit (210), an inverse quantization unit (220), an inverse transformation unit (230), a filtering unit (240), a prediction unit (260), and a DPB (Decoded Picture Buffer, 270).
[0129] The entropy decoding unit (210) entropy decodes the bitstream to extract transform coefficient information, intra-coding information, inter-coding information, etc. for each region.
[0130] For example, the entropy decoding unit (210) can obtain a binary code for transform coefficient information of a specific area from a bitstream, and can obtain a quantized transform coefficient by de-binarizing the binary code.
[0131] The inverse quantization unit (220) inversely quantizes the quantized transform coefficients, and the inverse transformation unit (230) restores the residual value using the inverse quantized transform coefficients.
[0132] Meanwhile, the residual value obtained from the inverse transformation unit (230) is combined with the predicted value obtained from the prediction unit (260) to restore the original pixel value.
[0133] The filtering unit (240) performs a filtering operation using a deblocking filter, a sample adaptive offset, an adaptive loop filter, etc. to improve the image quality of the restored picture, and the filtered picture can be output or stored in the DPB (270) to be used as a reference picture for the next picture.
[0134] The prediction unit (260) includes an intra / IBC prediction unit (261) and an inter prediction unit (265), and generates a prediction picture by utilizing the encoding type decoded through the entropy decoding unit (210), the transform coefficient for each region, and the intra / inter encoding information.
[0135] To restore the current block in which decoding is performed, the decoded region of the current picture or other pictures containing the current block can be used. A picture (or tile / slice) that performs intra prediction or intra BC prediction using only the current picture for restoration is called an intra picture or I picture (or tile / slice), and a picture (or tile / slice) that can perform all of intra prediction, inter prediction, and intra BC prediction is called an inter picture (or tile / slice).
[0136] Meanwhile, a picture (or tile / slice) that uses at most one motion vector and reference picture index to predict sample values of each block among inter-pictures (or tiles / slices) is called a predictive picture or P-picture (or tile / slice), and a picture (or tile / slice) that uses at most two motion vectors and reference picture indices is called a bi-predictive picture or B-picture (or tile / slice).
[0137] That is, a P picture (or tile / slice) uses at most one motion information set to predict each block, and a B picture (or tile / slice) uses at most two motion information sets to predict each block. Here, a motion information set may include one or more motion vectors and one reference picture index.
[0138] The intra / IBC prediction unit (261) generates a prediction block using intra encoding information and restored samples within the current picture, and the intra encoding information may include at least one of an intra prediction mode, an MPM (Most Probable Mode) flag, and an MPM index.
[0139] The intra / IBC prediction unit (261) can predict sample values of the current block using restored samples located on the left and / or upper side of the current block as reference samples.
[0140] For example, the reference samples may be samples adjacent to the left boundary of the current block and / or samples adjacent to the upper boundary, and may be samples located on a line within a preset distance from the left boundary of the current block among samples of neighboring blocks of the current block and / or samples located on a line within a preset distance from the upper boundary of the current block. In this case, the neighboring blocks of the current block may include at least one of a left (L) block, an upper (A) block, a below left (BL) block, an above right (AR) block, or an above left (AL) block adjacent to the current block.
[0141] Additionally, the intra / IBC prediction unit (261) can restore the current region by referring to a specific region including restored samples within the current picture. To this end, the intra / IBC prediction unit (261) can perform IBC prediction using IBC encoding information obtained from the entropy decoding unit (210), and the IBC encoding information can include block vector information.
[0142] The inter prediction unit (265) generates a prediction block using the reference picture and inter encoding information stored in the DPB (270), and the inter encoding information may include a set of motion information (reference picture index, motion vector information, etc.) of the current block for the reference block.
[0143] Meanwhile, inter prediction can include L0 prediction, L1 prediction, and bi-prediction.
[0144] L0 prediction refers to prediction using a single reference picture included in the L0 picture list, and L1 prediction refers to prediction using a single reference picture included in the L1 picture list. For this, a set of motion information (e.g., motion vector and reference picture index) may be required.
[0145] In the biprediction method, up to two reference regions can be used. These two reference regions may exist in the same reference picture or in different pictures. Accordingly, in the two sets of motion information used in the biprediction method, two motion vectors may correspond to the same reference picture index or to different reference picture indices.
[0146] At this time, the reference pictures are pictures that are located temporally before or after the current picture, and may be completed pictures that have already been restored, and the two reference areas used in the pair prediction method may be areas selected from the L0 picture list and the L1 picture list, respectively.
[0147] The inter prediction unit (265) can obtain a reference block of the current block using a motion vector and a reference picture index, and the reference block exists in a reference picture corresponding to the reference picture index.
[0148] Additionally, the sample values of a block specified by a motion vector or their interpolated values can be used as a predictor of the current block. For motion prediction with subpel-level pixel accuracy, an 8-tap interpolation filter can be used for the luminance signal, and a 4-tap interpolation filter can be used for the chrominance signal.
[0149] Meanwhile, the configuration and operation of the decoder described with reference to FIG. 5 are according to one embodiment of the present invention, and some configurations may be omitted or added as needed, and the decoder may decode an image by performing the reverse process of the encoding method of the encoder described above.
[0150]
[0151] Figure 6 illustrates an example of an intra prediction method in IBC (Intra Block Copy) mode.
[0152] Referring to Figure 6, in IBC mode, prediction information of a block to be encoded (current block) is obtained from a reference block that has already been decoded and is located within the same screen.
[0153] At this time, vector information (including direction and size) from the encoding target block (current block) to the reference block is referred to as a block vector (BV).
[0154] Although the IBC prediction method described above is an intra-screen prediction method, it is similar to an inter-screen prediction method in that it derives and transmits motion information of the current block to be encoded.
[0155] Accordingly, the IBC prediction method can be divided into ibc_skip / merge mode and ibc_amvp mode, and ibc_skip / merge and ibc_amvp can use skip, merge, AMVP (Advanced Motion Vector Prediction) and similar encoding, information transmission and decoding methods in inter-screen prediction.
[0156] The syntax structure for IBC prediction can be as shown in Table 2 below, and the sps_ibc_enabled_flag of the SPS (Sequence Parameter Set) and the syntax (sps_six_minus_max_num_ibc_merge_cand) indicating the maximum size of the candidate list of the ibc_skip / merge mode when the flag is enabled can be transmitted.
[0157]
[0158] Referring to Table 3 below, in a coding unit (CU) that is a block to be encoded, a flag (pred_mode_ibc_flag) indicating whether the block is in IBC mode and a flag (general_merge_flag) indicating whether the block is in ibc_merge mode can be transmitted.
[0159] And in the case of ibc_amvp mode, the block vector (BV) value of the corresponding block can be derived using the mvd, mvp, and amvr values.
[0160]
[0161] Meanwhile, referring to Table 4 below, in the case of ibc_skip / merge mode, the block vector (BV) value of the corresponding block can be derived using merge_idx information.
[0162]
[0163]
[0164] FIG. 7 is a diagram illustrating an example of an intra prediction method in IntraTMP (Intra Template Matching Prediction) mode.
[0165] As described above, in the IBC mode, in order to use a reference block within the same screen as prediction information for the target block to be encoded, a block vector (BV), which is motion information for the target block, is derived and transmitted to the decoding device.
[0166] Meanwhile, in IntraTMP mode, the use of a reference block within the same screen as the prediction information for the target block is the same as in IBC mode, but the block vector (BV), which is motion information for the target block, is not transmitted to the decoding device, and the decoding device can find the prediction information by searching for the reference block on its own through a template matching process.
[0167] Referring to Fig. 7, a template area is defined around a target block (IntraTMP block), and a template area (Best matching Template) that most closely matches the template area of the target block in the area of reconstructed blocks within the same screen is searched for, thereby obtaining a reference block (ref. block).
[0168] And, based on the position of the reference block (ref. block) obtained as described above, the block vector (intraTMP BV) value for (IntraTMP block) can be derived.
[0169] As described above, IntraTMP prediction is one of the prediction modes within a screen, in which a block vector (BV) of a target block can be derived in a decoding device, and the block vector (BV) value can be used for intra prediction in the same manner as the block vector (BV) value of the IBC mode.
[0170] Meanwhile, the IntraTMP method as described above can also be used in the process of refining or compensating block vector (BV) values.
[0171] For example, for a block encoded in IBC mode, after finding the location of the initial reference block using the transmitted block vector (BV) value, an updated reference block can be obtained by more precisely correcting the block vector (BV) value through template matching in a certain area around the initial reference block.
[0172]
[0173] To improve the performance of on-screen prediction, a dual tree structure in which the block partitions of the luma plane and the chroma plane are independent of each other may be possible.
[0174] For example, in a dual tree structure, the partitioning structure from a coding tree unit (CTU) to a coding unit (CU) may be different for a luma signal and a chroma signal.
[0175] Here, the block division information for the luma signal is called DUAL_TREE_LUMA, and the block division information for the chroma signal is called DUAL_TREE_CHROMA.
[0176] In a single tree structure, the luma plane and the chroma plane have the same block division structure, so that the division structure from the coding tree unit (CTU) to the coding unit (CU) for the luma signal and the chroma signal can be the same.
[0177] Meanwhile, the dual tree structure as described above may be applicable only to the I slice and may not be applicable to the B slice or the P slice.
[0178] As another example, for a B slice or a P slice, a specific region within the slice may be designated as an intra region, and a dual tree structure may be applied to the intra region. In this case, the intra region may be a group of one or more coding units (CUs) or a group of one or more coding tree units (CTUs).
[0179] When performing IBC prediction in a single-tree structure, the block vector (BV) value of the target luma block may be set to the block vector (BV) value of the corresponding chroma block at the same location through a scaling process. Accordingly, the block vector (BV) value for the chroma block may not be transmitted or derived separately.
[0180] In this case, the block vector (BV) of the chroma block is called a direct block vector (DBV), which means that the block vector (BV) value of the luma block corresponding to the block vector (BV) value of the chroma block is used.
[0181] Meanwhile, the scaling process can be performed depending on the format of the image. For example, in the case of the YUV420 format, the block vector (BV) value of the luma block can be scaled to be reduced by half on the horizontal and vertical axes, and set as the block vector (BV) value of the corresponding chroma block. Meanwhile, in the case of the YUV444 format, the scaling process can be omitted, and the block vector (BV) value of the luma block can be set as the block vector (BV) value of the corresponding chroma block.
[0182] Meanwhile, when performing IBC prediction in a dual tree structure, the block division structure of the luma block and the block division structure of the chroma block are different, so the block vector (BV) value of the luma block cannot be directly used as the block vector (BV) value of the corresponding chroma block.
[0183] Accordingly, in a dual-tree structure, IBC mode may not be allowed for chroma blocks, while in a single-tree structure, IBC mode may be allowed for both luma blocks and chroma blocks. On the other hand, in a dual-tree structure, IBC mode may be allowed only for luma blocks.
[0184] For dual-tree structures, other intra-screen prediction methods other than IBC mode can be used for chroma blocks, such as regular intra mode, palette, BDPCM (Block Differential Pulse Code Modulation), or CCLM (Cross-Component Linear Model).
[0185] In contrast, for efficient processing of computer graphics-processed screen content, IBC mode for chroma blocks may also be allowed in a dual-tree structure.
[0186] In the case of the general intra mode among the on-screen prediction methods for chroma blocks, a total of 67 intra prediction modes can be provided, including the planar mode, DC mode, and 65 directional modes, as described with reference to FIG. 3.
[0187] A chroma block is encoded in one of a total of 67 intra prediction modes, but not all 67 intra prediction modes may be supported for the chroma block being encoded.
[0188] For example, the intra prediction modes supported for the chroma block to be encoded may be as shown in Table 5 below.
[0189]
[0190] As shown in Table 5, one mode is selected through evaluation among five candidates, and the selected intra prediction mode can be transmitted with its corresponding index value binarized.
[0191] Here, the five candidates could be:
[0192] - index 0: planar mode 0
[0193] - index 1: 50 vertical mode
[0194] - index 2: 18 horizontal mode
[0195] - index 3: DC mode 1
[0196] - index 4: DM (Direct Mode)
[0197] Meanwhile, if the direct mode (DM) matches one of the modes planar, DC, vertical, and horizontal, a 66th directional mode can be added, making a total of five candidates.
[0198] Direct mode (DM) may mean intra mode for a corresponding luma block in the same location as the chroma block.
[0199] For example, if the intra mode of the luma block is mode 10, the direct mode (DM) of the corresponding chroma block is mode 10, and the five candidates can be configured as mode 0, mode 50, mode 18, mode 1, and mode 10 in order of index.
[0200] As another example, if the intra mode of the luma block is vertical mode 50, the direct mode (DM) of the corresponding chroma block is 50, and the five candidates can be composed of mode 0, mode 66, mode 18, mode 1, and mode 50 in order of index.
[0201] Direct mode (DM) as described above is an intra prediction mode that utilizes the high correlation between luma blocks and chroma blocks.
[0202] Table 6 below shows the results of binarizing the intra prediction mode of the chroma block.
[0203]
[0204] Referring to Table 6, for the direct mode (DM) with index 4, a binary value of 1 bit, “0,” is indicated, and for the remaining 4 modes, binary values of 3 bits are assigned.
[0205] Since the binarization process achieves a compression effect by allocating fewer bits to frequently occurring signals and relatively more bits to infrequently occurring signals, it can be seen that direct mode (DM) is used more frequently than other modes for chroma blocks.
[0206] According to another embodiment of the present invention, when a dual tree structure is used, block vector (BV) information can be derived or set for a chroma block, and the block vector (BV) information can be transmitted.
[0207] In this case, if the sizes of the chroma block to be encoded and the corresponding luma block are different, the block vector (BV) value for the luma block can be scaled and then applied to the chroma block.
[0208] This is because, in the case of a dual tree structure, the block division structure of the luma block and the block division structure of the chroma block are different, so the block vector (BV) value of the luma block cannot be directly used as the block vector (BV) value of the chroma block.
[0209] FIG. 8 is a diagram illustrating an example of a luma area and a chroma area independently divided into a dual tree structure. FIG. 8 (a) shows a luma area, and FIG. 8 (b) shows a chroma area corresponding to the luma area.
[0210] Referring to FIG. 8, in a dual tree structure, multiple luma blocks can correspond to one chroma block.
[0211] For example, as illustrated in FIG. 8, 10 luma blocks may correspond to the chroma block on the left side of the chroma area.
[0212] In this case, the positions of luma blocks corresponding to chroma blocks can be defined as top-left block (TL), top-right block (TR), center block (CT), bottom-left (BL), and bottom-right block (BR).
[0213] Meanwhile, the positions of each of the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) can be calculated using the following mathematical equations 1 to 5.
[0214]
[0215]
[0216]
[0217]
[0218]
[0219] In mathematical expressions 1 to 5, IntraPredModeY[x][y] represents the intra-screen prediction information for the luma block at the position (x, y), (xCb, yCb) represents the position of the block to be encoded based on the luma block, and represents the pixel position located at the upper left corner of the block. (nCbW, nCbH) represents the width and height of the block to be encoded based on the luma block.
[0220] For example, a center block (CT) may mean a luma block that includes pixels at a position that is shifted by half the width of the encoding target block in the horizontal axis and by half the height of the encoding target block in the vertical axis from the upper left corner of the encoding target block.
[0221] Here, the location, width and / or height information of the encoding target block is based on the luma block, but the present invention is not limited thereto, and may also be based on the chroma block, and the mapping between the luma block and the chroma block may be subject to additional scaling work as needed.
[0222]
[0223] According to an embodiment of the present invention, a specific region in an inter-slice (B slice or P slice) can be set as an intra region that performs only intra prediction.
[0224] This is because, even though it is an inter-slice, it may be advantageous to use an intra prediction method rather than an inter prediction method to encode areas where the motion is fast enough to determine the motion vector, where the object is deformed so that the reference picture cannot be referenced, or where the texture is complex.
[0225] For example, an intra region can be set in an inter slice, the set intra region can be divided into one or more coding blocks and encoded, and then related information can be transmitted. Since only intra prediction is performed for one or more coding blocks belonging to the intra region, syntax related to inter prediction is not signaled, so the number of bits can be saved.
[0226] Additionally, when an intra region is set in an inter slice, it can be determined whether the luma block and the chroma block are split into a single tree that uses the split information in common, or a dual tree that uses the split information separately, for the intra region.
[0227] For example, if the size of the intra region is larger than a certain size, a partitioning structure according to a dual tree can be used.
[0228] In this regard, in the process of splitting a coding tree unit (CTU) in an inter slice, if the size of the coding unit (CU) is large, there is a high probability that the inter prediction method will be used, that is, a single coding unit (CU) with a large size is often encoded using the inter prediction method, and a coding unit (CU) that is split into smaller pieces is often encoded using the intra prediction method.
[0229] Typically, when one coding unit (CU) in an inter slice is set to intra mode, the coding unit (CU) is split into smaller sizes, so when one coding unit (CU) in an inter slice is large and encoded with intra prediction, the coding unit (CU) can be treated as an intra region.
[0230] As described above, hls_intraRegion_interSlice_enabled_flag, a syntax for controlling the function of setting an intra region in an inter slice, can be separately defined, and activation / deactivation of the function can be set.
[0231] In addition, a split tree structure can be set by separately defining hls_dualTree_interSlice_enabled_flag, which is a syntax for setting an intra region in an inter slice and determining whether the coding unit (CU) splitting method for the set intra region is a single tree or a dual tree.
[0232] All of the above flags are HLS (High Level Syntex) and can be included in one or more of SPS (sequence parameter set), PPS (picture parameter set), PH (picture header), and SH (slice header), but the present invention is not limited thereto.
[0233] Meanwhile, the present invention is not limited to the flags described above, and activation / deactivation of the functions proposed below can be controlled using one or more flags.
[0234]
[0235] Hereinafter, embodiments of an intra prediction method according to the present invention will be described with reference to FIGS. 9 to 16.
[0236] FIG. 9 is a flowchart illustrating an intra prediction method according to an embodiment of the present invention. The illustrated intra prediction method shows a method of performing intra prediction on a coding block included in an inter slice. Descriptions of the same intra prediction methods as those described with reference to FIGS. 1 to 8 will be omitted below.
[0237] Referring to FIG. 9, an intra region encoded with intra prediction in an inter slice is set (step S910).
[0238] In one embodiment, in step S910, a coding unit (CU) having the same size as a coding tree unit (CTU) and encoded with intra prediction may be set as an intra region.
[0239] For example, at the coding tree unit (CTU) level, if all of the conditions below are satisfied, the coding tree unit (CTU) can be determined as an intra region.
[0240] Condition 1: Intraregion feature is enabled in inter-slice (e.g., hls_intraRegion_interSlice_enabled_flag value is “on”) and / or, dual-tree feature for coding unit (CU) splitting method in intra-region is enabled (e.g., hls_dualTree_interSlice_enabled_flag value is “on”).
[0241] Condition 2: The slice is an inter-slice (e.g., a P slice or a B slice).
[0242] Condition 3: If the CTU has never been split (e.g., the no_split_flag value is “on” and / or the split_cu_flag value is “off”), the CTU becomes the target CU.
[0243] Condition 4: The target CU is intra-predicted and encoded.
[0244] Meanwhile, the above condition 4 can be determined by setting a separate syntax, intra_coded_flag or non_inter_coded_flag, which can recognize that the target CU is intra-predicted and encoded, or can be determined through one or more syntaxes indicating the normal CU mode.
[0245] For example, the syntax indicating the CU mode includes cu_skip_flag and pred_mode_flag, and if the cu_skip_flag value indicates “false” and the pred_mode_flag value indicates “intra”, the target CU can be determined to have been intra-predicted and encoded.
[0246] However, the present invention is not limited to the above-described syntaxes as a criterion for determining that a target CU is encoded in intra mode, and that a target CU is encoded in intra mode can be expressed in various other ways.
[0247] For example, whether the target CU is intra-mode can be estimated through the length and / or width of the target CU, and the method of indicating / estimating that the target CU is encoded in intra-mode as described above can also be applied to other embodiments of the present invention.
[0248] In another embodiment of the present invention, in step S910, a coding unit (CU) that is divided from a coding tree unit (CTU), has a square or rectangular shape larger than a reference size, and is encoded by intra prediction can be set as an intra region.
[0249] Here, the reference size may be preset or signaled using at least one of SPS (Sequence Parameter Set), PPS (Picture Parameter Set), PH (Picture Peader) and SH (Slice Header), but the present invention is not limited thereto.
[0250] For example, at the coding unit (CU) level, a CU that is a leaf node during the splitting process for a coding tree unit (CTU) is set as a target CU, and if all of the conditions below are satisfied, the coding unit (CU) can be determined as an intra region.
[0251] Condition 1: Intraregion feature is enabled in inter-slice (e.g., hls_intraRegion_interSlice_enabled_flag value is “on”) and / or, dual-tree feature for coding unit (CU) splitting method in intra-region is enabled (e.g., hls_dualTree_interSlice_enabled_flag value is “on”).
[0252] Condition 2: The slice is an inter-slice (e.g., a P slice or a B slice).
[0253] Condition 3: The target CU's segmentation shape is square (e.g., when QT segmentation is performed during the CTU segmentation process).
[0254] Condition 4: The size of the target CU is greater than or equal to the reference size.
[0255] Condition 5: The target CU is intra-predicted and encoded.
[0256] Regarding Condition 3, if the value of cu_qt_split_flag, which is a syntax indicating QT splitting during the CTU splitting process, is "on," it can be determined that the current region is split into a square. Alternatively, it can be determined that the current region is a square using the length and width of the target CU.
[0257] As described above, the method for determining the segmentation form of the target CU can also be applied to other embodiments of the present invention.
[0258] Meanwhile, with respect to condition 4, the reference size may be a predetermined constant such as 256, 128, 64, 32, etc., or may be included in one or more of the positions of SPS, PPS, PH, SH in HLS.
[0259] Table 7 below provides an example of how to signal information about the reference size with HLS.
[0260]
[0261] Referring to Table 7, the reference size can be signaled as a log value, and "hls_log2_intraRegion_minus5", which represents the log value of the reference size minus 5, can be included in one or more of the SPS, PPS, PH, and SH locations in HLS.
[0262] For example, if “hls_log2_intraRegion_minus5” is “1”, the reference size can be calculated as 64 using Equations 6 and 7 below.
[0263]
[0264]
[0265] Alternatively, "hls_log2_diff_intraRegion_ctu_plus1", which represents the difference between the CTU size determined by HLS minus 1 and the logarithm of the reference size, may be included in one or more of SPS, PPS, PH, and SH positions in HLS.
[0266] For example, if the CTU size is 128 and "hls_log2_diff_intraRegion_ctu_plus1" is “0”, the reference size can be calculated as 64 using Equations 8 and 9 below.
[0267]
[0268]
[0269] Additionally, the reference size may be included in the bitstream in the form of an index. In this case, the block size may be indexed, and an index corresponding to the block size may be located in one or more of SPS, PPS, PH, and SH in HLS.
[0270] The above-described reference size can also be applied to other embodiments of the present invention.
[0271] As another example, at the coding unit (CU) level, a CU that is a leaf node during the splitting process for a coding tree unit (CTU) is set as a target CU, and if all of the conditions below are satisfied, the coding unit (CU) can be determined as an intra region.
[0272] Condition 1: Intraregion feature is enabled in inter-slice (e.g., hls_intraRegion_interSlice_enabled_flag value is “on”) and / or, dual-tree feature for coding unit (CU) splitting method in intra-region is enabled (e.g., hls_dualTree_interSlice_enabled_flag value is “on”).
[0273] Condition 2: The slice is an inter-slice (e.g., a P slice or a B slice).
[0274] Condition 3: The target CU's segment shape is rectangular (including squares).
[0275] Condition 4: The size of the target CU is greater than or equal to the reference size.
[0276] Condition 5: The target CU is intra-predicted and encoded.
[0277] With regard to condition 3, it can be determined that the current region is divided into squares through syntax indicating QT division during the CTU division process, and it can be determined that the current region is divided into rectangles through syntax expressing MTT including BT and TT.
[0278] Here, the rectangular partitioning may be limited only to the case of BT, i.e., the CU partitioned into TT may not satisfy the above condition 3.
[0279] Alternatively, the length and width of the target CU can be used to determine whether the current area is square or rectangular.
[0280] Meanwhile, the above condition 3 can be omitted, and the segmentation shape of the target CU as described above can be applied to other embodiments of the present invention.
[0281] With respect to Condition 4, the reference size may be 256, 128, 64, 32, etc., and when the length and / or width of the target CU is greater than or equal to the reference size, Condition 4 may be satisfied.
[0282] As another example, at the coding unit (CU) level, a CU that is a leaf node during the splitting process for a coding tree unit (CTU) may be set as a target CU, and if all of the above conditions are satisfied, a 1-bit separate flag, intraRegion_flag value, that determines the coding unit (CU) as an intra region may be signaled.
[0283] For example, if the intraRegion_flag value is “1”, the corresponding coding unit (CU) is determined as an intra region, and if the intraRegion_flag value is “0”, the corresponding coding unit (CU) is determined as a normal coding unit (CU) and not an intra region.
[0284] FIG. 10 is a flowchart illustrating an example of a method for setting an intra region, and shows an example of a method for setting an intra region at a coding unit (CU) level.
[0285] Referring to Fig. 10, if split_cu_flag is not "1" (step S1010), skip_flag and pred_mode_flag are parsed (step S1020). Here, split_cu_flag not being "1" means that the splitting process for the coding tree unit (CTU) is completed in a leaf node state.
[0286] Next, if hls_intraRegion_interSlice_enabled_flag is "1" (step S1030) and the current slice is an inter-slice (step S1040), the width (CU width) and / or length (CU height) of the CU are compared with the reference size (th) (step S1050).
[0287] If the comparison result shows that the width (CU width) and / or length (CU height) of the CU are each equal to or larger than the reference size (th) (step S1050), and skip_flag is "0" and pred_mode_flag is "intra" (step S1060), the CU is set as an intra region (step S1070).
[0288] Here, the flag value is not limited to "1" and "0", as it may include indicating that the flag is "True", "on", or "yes" when the flag value is "1", and indicating that the flag is "False", "off", or "no" when the flag value is "0".
[0289] Fig. 11 (a) shows an example of a coding tree unit (CTU) composed of one luma coding tree block (luma CTB) and two chroma coding tree blocks (chroma CTBs), and Fig. 11 (b) shows an example of some luma coding blocks (luma CBs) and chroma coding blocks (chroma CBs) divided from a CTU being set as an intra region (A) according to the intra region setting method described above.
[0290]
[0291] Next, a division structure of luma blocks and chroma blocks is determined for the intra region set according to the method described above (step S920), and intra prediction is performed for luma blocks and chroma blocks of the intra region divided according to the determined division structure (step S9300).
[0292] The partition structure determined in step S920 may be either a first tree mode in which the luma block and the chroma block are partitioned with the same partition structure, or a second tree mode in which the luma block and the chroma block are partitioned with different partition structures.
[0293] In one embodiment, if a luma block corresponding to an intra region is no longer split, the first tree mode may be determined as a split structure for the luma block and the chroma block.
[0294] Meanwhile, if the luma block corresponding to the intra area is further divided, the second tree mode can be determined as a division structure for the luma block and the chroma block.
[0295] Here, the first tree mode may be a single tree mode in which the luma block and the chroma block have the same partition structure, and the second tree mode may be a dual tree mode in which the luma block and the chroma block have different partition structures.
[0296] For example, when an intra region is set, a segmentation syntax for a luma block corresponding to the intra region is initiated, and if the luma block has a structure that cannot be further segmented, the segmentation structure of the luma block and chroma block for the intra region can be determined as a single tree. Accordingly, both the luma block and chroma blocks of the intra region can no longer be segmented.
[0297] Here, the syntax indicating that the luma block is no longer split can be cu_split_flag or no_split_flag, and if cu_split_flag is “0” or no_split_flag is “1”, it can be determined that the luma block is no longer split.
[0298] Meanwhile, if a division syntax for a luma block corresponding to the intra region is disclosed and the luma block has a structure in which it can be further divided, the division structure of the luma block and chroma block for the intra region can be determined as a dual tree.
[0299] This may mean that if a target CU larger than a predetermined size is designated as an intra region and its corresponding luma block is no longer split, the corresponding chroma block also no longer needs to be split.
[0300] In the case of the YUV420 format, considering that the luma block (Y) is four times larger than the chroma block (U or V) and has a more complex texture, whether to apply a dual tree to the intra region can be determined based on whether the luma block is divided as described above.
[0301] In addition, if the target CU satisfies the above conditions for being set as an intra region and has a dual tree (or separate tree) partition structure, the CU becomes the root of the dual tree, and partition information of the luma block and chroma block for the CU can be signaled, respectively.
[0302] Figure 12 is a flowchart illustrating an embodiment of a method for determining the division structure of a luma block and a chroma block.
[0303] Referring to FIG. 12, after an intra region is set (step S1210), the split_cu_flag for the luma block corresponding to the intra region is parsed (step S1220), and the split_cu_flag value for the luma block is confirmed (step S1230).
[0304] If the split_cu_flag for the corresponding luma block is "1", the dual tree mode is determined as a split structure for the luma block and chroma block of the corresponding intra area (step S1240).
[0305] Meanwhile, if the split_cu_flag for the corresponding luma block is "0", the single tree mode is determined as a split structure for the luma block and chroma block of the corresponding intra area (step S1250).
[0306] The single tree mode determined at step S1250 may be a single tree mode (single tree with no partition) in which neither the luma block nor the chroma blocks are further partitioned, in which case, as illustrated in (a) of FIG. 13, the target CU, which is the target intra region partitioned from the CTU, corresponds to a leaf node and is no longer partitioned, and additional information for performing intra prediction on the target CU may be signaled.
[0307]
[0308] Below, we will describe other embodiments of methods for determining the segmentation structure for luma blocks and chroma blocks in the intra region. Among the methods described below, descriptions of those identical to those described above will be omitted.
[0309] In one embodiment, an intra region may be set at the coding tree unit (CTU) level, and a division structure of a luma block and a chroma block may be determined for the set intra region.
[0310] In this case, with respect to the above condition 1 for setting the intra region at the coding tree unit (CTU) level, the flag for activating the dual tree for the intra region in the inter slice can be determined depending on whether the dual tree function is activated for the corresponding sequence.
[0311]
[0312] For example, referring to Table 8 above, if hls_dualTree_enabled_flag, which is a syntax indicating whether dual tree support for a sequence is “1”, the value of hls_dualTree_interSlice_enabled_flag, which is a syntax for enabling dual tree for intra region in inter slice, can be set.
[0313] The flag for activating the dual tree for the intra region in the inter slice as described above can also be applied to other embodiments of the present invention.
[0314] Meanwhile, in this embodiment, a separate flag, dualTree_intraRegion_flag, may be used as a criterion for determining whether the intra region is to be divided into a dual tree or a single tree, as a criterion for determining whether the division structure is to be a single tree or a dual tree.
[0315] For example, if the dualTree_intraRegion_flag value is “1”, the intra region can be split into a dual tree structure, and if the dualTree_intraRegion_flag value is “0”, the intra region can be split into a single tree structure.
[0316] The syntax for determining whether to split into a dual tree or a single tree as described above can also be applied to other embodiments of the present invention.
[0317] In another embodiment, an intra region may be set at the coding unit (CU) level, and a division structure of a luma block and a chroma block may be determined for the set intra region.
[0318] In this case, with respect to the above condition 4 for setting the intra region at the coding unit (CU) level, the reference size may be a predetermined constant such as 256, 128, 64, 32, etc., or may be included in one or more positions of SPS, PPS, PH, SH in HLS as shown in Table 9 below.
[0319]
[0320] The above-described reference size can also be applied to other embodiments of the present invention.
[0321] Meanwhile, in this embodiment, a separate flag, dualTree_intraRegion_flag, may be used as a criterion for determining whether the intra region is to be divided into a dual tree or a single tree, as a criterion for determining whether the division structure is to be a single tree or a dual tree.
[0322] FIG. 14 is a flowchart illustrating another embodiment of a method for determining a division structure of a luma block and a chroma block.
[0323] Referring to FIG. 14, after an intra region is set (step S1410), the dualTree_intraRegion_flag for the intra region is parsed (step S1420), and the dualTree_intraRegion_flag value is confirmed (step S1430).
[0324] If the dualTree_intraRegion_flag for the corresponding intra region is "1", the dual tree mode is determined as a split structure for the luma block and chroma block of the corresponding intra region (step S1440), and the split_cu_flag for the luma block corresponding to the corresponding intra region is parsed (step S1450).
[0325] Meanwhile, if the dualTree_intraRegion_flag for the corresponding intra region is "0", the single tree mode is determined as a division structure for the luma block and chroma block of the corresponding intra region (step S1460).
[0326] The single tree mode determined at step S1460 may be a single tree mode (single tree with no partition) in which neither the luma block nor the chroma blocks are further partitioned, in which case, as illustrated in (a) of FIG. 13, the target CU, which is the target intra region partitioned from the CTU, corresponds to a leaf node and is no longer partitioned, and additional information for performing intra prediction on the target CU may be signaled.
[0327]
[0328] According to another embodiment of the present invention, an intra region is set, and a partition structure for the set intra region can be determined from among three partition structures, for example, a single tree with no more partition, a single tree with more partition, and a dual tree.
[0329] If the partition structure for the intra region is a single tree with no partition, as shown in (a) of Fig. 13, the target CU, which is the target intra region partitioned from the CTU, corresponds to a leaf node and is no longer partitioned, and additional information for performing intra prediction for the target CU can be signaled.
[0330] In the case where the partition structure for the intra region is a single tree with partition, as shown in (b) of FIG. 13, the target CU, which is the target intra region partitioned from the CTU, can be further partitioned as the root, and partition information commonly applied to the luma block and chroma block of the target CU can be signaled.
[0331] Meanwhile, if the segmentation structure for the intra region is a dual tree mode, as shown in (c) of FIG. 13, the target CU, which is the target intra region segmented from the CTU, can be further segmented as the root, and separate segmentation information applied to each of the luma block and chroma block of the target CU can be signaled.
[0332] Two flag values may be used to determine one of the three partitioning structures described above, or one index value may be used.
[0333] Meanwhile, the bits allocated to each of the three partition structures can be as shown in Table 10 below.
[0334]
[0335] FIG. 15 is a flowchart illustrating another embodiment of a method for determining a division structure of a luma block and a chroma block.
[0336] Referring to FIG. 15, after an intra region is set (step S1510), the partition_intraRegion_flag for the intra region is parsed (step S1520), and the partition_intraRegion_flag value is confirmed (step S1530).
[0337] If partition_intraRegion_flag for the corresponding intra region is "1", the dualPartition_flag for the corresponding intra region is parsed (step S1540), and the dualPartition_flag value is confirmed (step S1550).
[0338] Here, if dualPartition_flag is "1", a dual tree is determined as the partition structure for the corresponding intra region (step S1560).
[0339] Meanwhile, if dualPartition_flag is "0", a single tree with partition is determined that is further divided into a partition structure for the corresponding intra area (step S1570).
[0340] And as a result of the verification at step S1530, if partition_intraRegion_flag is "0", a single tree with no partition is determined as a partition structure for the intra region (step S1580).
[0341]
[0342] Below, a triple tree mode is described in which different partition structures are applied to the luma block (Y), the corresponding first chroma block (U), and the second chroma block (V).
[0343] An embodiment of the present invention is described by way of example when triple tree mode is applied to a YUV444 or YUV422 video format, but the present invention is not limited thereto.
[0344] In addition, the present embodiment can be applied to a segmentation structure according to the YUV image format for both intra slice (I slice) and inter slice (P slice or B slice).
[0345] In the YUV444 format, there are separate Y planes, U planes, and V planes of the same size, so different independent division structures can be applied to each of the three planes.
[0346] The encoder supports a single tree by default for all slices (I, P, B slices), allowing three planes to share a single partition structure.
[0347] As another example, by setting hls_dualTree_enabled_flag, a syntax that indicates whether dual tree is supported, if the flag value is “1”, one partition structure for the Y plane and one partition structure for the U plane and V plane can be applied separately for all slices (I, P, B slices).
[0348] As another example, by setting hls_tripleTree_enabled_flag, a syntax that indicates whether triple tree is supported, if the flag value is “1”, one partition structure for the Y plane, one partition structure for the U plane, and one partition structure for the V plane can be applied separately for all slices (I, P, B slices).
[0349] As described above, hls_dualTree_enabled_flag and hls_tripleTree_enabled_flag can be included in one or more of SPS, PPS, PH, and SH positions in HLS.
[0350] According to another embodiment of the present invention, the triple tree partitioning structure described above can be applied to a method of setting an intra region in an inter slice and determining a partitioning structure for the set intra region.
[0351] For example, if hls_tripleTree_enabled_flag, which is a syntax indicating whether triple tree is supported, is “1”, and if an intra region is determined according to the methods described above, a triple tree can be applied instead of a dual tree as a partitioning structure for the intra region.
[0352] In addition, in addition to the syntax for determining whether the CU partitioning method for the intra region is to be single tree or dual tree, the syntax hls_tripleTree_interSlice_enabled_flag for triple tree can be defined separately, and the partitioning structure for the intra region can be determined using the flag.
[0353] And, for multiple trees including dual trees and triple trees, rather than single trees, you can separately define hls_multipleTree_interSlice_enabled_flag as a syntax to indicate the partition structure for the intra region.
[0354] In this case, if the partition structure set for the sequence is a dual tree, the dual tree may be used as the CU partition structure for the intra region, and if the partition tree structure set for the sequence is a triple tree, the triple tree may be used as the CU partition structure for the intra region.
[0355] As described above, hls_tripleTree_interSlice_enabled_flag and hls_multipleTree_interSlice_enabled_flag can be included in one or more of SPS, PPS, PH, and SH positions in HLS.
[0356] This embodiment is not limited to the two flags described above, and activation / deactivation of the triple tree partitioning function can be set using one or more flags.
[0357]
[0358] The above has described embodiments of a method for setting an intra region in an inter slice and determining a segmentation structure for the set intra region, but the present invention is not limited thereto.
[0359] For example, after partitioning into blocks of size 64x64 in a single tree in an inter-slice, skip_flag and pred_mode_flag may be signaled for CUs of leaf nodes having a size of up to 64x64, and a flag at the CU level indicating whether the CU is to be the root for a dual-tree (or separate tree) partition of luma blocks and chroma blocks may also be signaled.
[0360] In this case, a dual tree may be applied to CUs larger than a certain size, and a single tree may be applied to CUs smaller than a certain size.
[0361]
[0362] Hereinafter, embodiments of a partitioning-related restriction method for an intra region, a syntax transmission method for a coding unit (CU) included in the intra region, and an intra prediction method for a coding unit (CU) included in the intra region, when an intra region is set according to the methods described above, will be described.
[0363] According to one embodiment of the present invention, for at least one of a luma block and a chroma block corresponding to an intra region, at least one partitioning structure among a binary tree (BT) and a ternary tree (TT) may be restricted.
[0364] For example, if the segmentation structure for the intra region is a single tree, the target CU can become the root of the single tree, and one segmentation information for a luma block (Y) and a chroma block (UV) can be signaled.
[0365] At this time, the partitioning form of the block can be limited to one of QT, vertical BT, and horizontal BT, and vertical TT and horizontal TT are not allowed, thereby preventing the target CU from being partitioned into an unnecessarily small size.
[0366] As another example, the splitting form of a block may be limited to QT, and BT and TT may not be allowed.
[0367] Meanwhile, if the partition structure for the intra region is a dual tree (or separate tree), the target CU becomes the root of the dual tree, and separate partition information for each of the luma block (Y) and the chroma block (UV) can be separately signaled.
[0368] At this time, the splitting form of the chroma block can be limited to one of QT, vertical BT, and horizontal BT, and vertical TT and horizontal TT are not allowed, thereby preventing the chroma block from being split into an unnecessarily small size.
[0369] Additionally, vertical TT and horizontal TT may not be allowed for luma blocks, and the split shape of chroma blocks may be limited to QT, which may not allow BT and TT.
[0370] And if one of a single tree with partition, a dual tree, and a triple tree is determined as a partition structure for the intra region, and the shape of the intra region is a square, an MTT (BT and / or TT) partition process can be performed after the QT partition process for the intra region.
[0371] Meanwhile, if one of a single tree with partition, a dual tree, and a triple tree is determined as a partition structure for the intra region, and the shape of the intra region is a rectangle rather than a square, the MTT (BT and / or TT) partitioning process can be performed for the intra region without the QT partitioning process.
[0372] According to another embodiment of the present invention, for a coding unit (CU) included in an intra region, syntax related to inter prediction may not be signaled.
[0373] For example, since all coding units (CUs) included in the intra region are encoded with intra prediction, not inter prediction, inter prediction-related syntaxes for the corresponding coding units (CUs) may not be signaled.
[0374] Specifically, non-signaled inter-related syntaxes such as cu_skip_flag, cu_merge_flag, and cu_merge_idx may be included, and pred_mode_flag, a syntax indicating mode information for a block, is not transmitted and may be inferred as “intra” on the decryption device side.
[0375] According to the signaling method described above, the number of bits can be saved because the inter prediction related syntax and mode related syntax for all CUs included in the intra region are not signaled.
[0376] According to another embodiment of the present invention, for a luma block included in an intra region, at least one mode among IBC (Intra Block Copy) and IntraTMP (Intra Template Matching Prediction) may not be allowed.
[0377] For example, for one or more CUs within an intra region, the use of the IBC and intraTMP modes among the intra prediction modes including the general intra mode, IBC, and intraTMP may be restricted.
[0378] And for chroma blocks included in the intra region, at least one mode among CCLM (Cross-Component Linear Model), MMLM (Multi-Model Linear Model), CCCM (Convolutional Cross-Component Model), CCP Merge (Cross-Component Prediction merge), and DBV (Direct Block Vector) may not be allowed.
[0379] For example, if the partitioning structure for the intra region is a dual tree or triple tree, the use of the Cross-Component Prediction (CCP) and the associated CCLM (Cross-Component Linear Model), MMLM (Multi-Model Linear Model), CCCM (Convolutional Cross-Component Model), and CCP Merge (Cross-Component Prediction merge) modes may be restricted for the chroma blocks included in the intra region.
[0380] Meanwhile, for luma blocks and chroma blocks included in the intra region, IBC-related syntax including pred_mode_ibc_flag, etc. is not signaled, and only intra prediction mode information can be signaled.
[0381] FIG. 16 is a flowchart illustrating an embodiment of a method for performing intra prediction for a luma block and a chroma block.
[0382] Referring to FIG. 16, when an intra region is set in an inter slice (step S1610), the skip_flag value for a CU included in the intra region is set to “0” (step S1620), the pred_mode_flag value is set to “intra” (step S1630), and then intra prediction for the CU is performed (step S1640).
[0383] In this case, skip_flag and pred_mode_flag for the corresponding CU are not signaled from the encoding device, and the values of skip_flag and pred_mode_flag can be set in the decoding device as described above.
[0384] Meanwhile, if the intra region is not set, the skip_flag for the CU is parsed (step S1650), the pred_mode_flag is parsed (step S1660), and if the skip_flag is "0" and the pred_mode_flag is "intra" (step S1670), intra prediction for the CU is performed (step S1640).
[0385]
[0386] The intra prediction method described with reference to FIGS. 6 to 16 can be performed by a video encoding device and a video decoding device according to an embodiment of the present invention, and can be performed, for example, by an intra / IBC prediction unit (161) of a video encoder (100) illustrated in FIG. 1 or an intra / IBC prediction unit (261) of a video decoder (200) illustrated in FIG. 4.
[0387]
[0388] The methods described herein may be performed by a processor of a video encoder or video decoder. Furthermore, the encoder may generate a bitstream that is decoded by a video signal processing method, and the bitstream generated by the encoder may be stored in a computer-readable, non-transitory storage medium (recording medium).
[0389] The embodiments of the present invention described above may be implemented through various means. For example, the embodiments of the present invention may be implemented using hardware, firmware, software, or a combination thereof.
[0390] Some embodiments may also be implemented in the form of a computer-executable storage medium containing computer-executable instructions, such as program modules executed by a computer. Computer-readable media may be any available media that can be accessed by a computer, and includes both volatile and nonvolatile media, removable and non-removable media.
[0391] Additionally, computer-readable media may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storing information, such as computer-readable instructions, data structures, program modules, or other data. Communication media typically includes other data, such as computer-readable instructions, data structures, or program modules, in a modulated data signal, or other transport mechanism, and includes any information delivery media.
[0392] In addition, although the preferred embodiments of the present invention have been illustrated and described above, the present invention is not limited to the specific embodiments described above, and various modifications can be made by a person having ordinary skill in the art to which the invention pertains without departing from the gist of the present invention as claimed in the claims, and such modifications should not be understood individually from the technical idea or prospect of the present invention.
Claims
1. A method for performing intra prediction on a coding block included in an inter slice, A step of setting an intra region encoded by intra prediction in an inter slice; For the intra region set above, a step of determining either a first tree mode in which a luma block and a chroma block are divided into the same division structure or a second tree mode in which a luma block and a chroma block are divided into different division structures; and A step of performing intra prediction on a luma block and a chroma block of the intra region divided according to the determined tree mode; An intra prediction method, characterized in that at least some of the intra prediction methods for chroma blocks are limited to the chroma blocks included in the intra region.
2. In the first paragraph, the setting step An intra prediction method comprising the step of setting a coding unit (CU) encoded by intra prediction and having the same size as a coding tree unit (CTU) as the intra region.
3. In the first paragraph, the setting step An intra prediction method comprising the step of setting a coding unit (CU) encoded by intra prediction, which is divided from a coding tree unit (CTU), has a square or rectangular shape larger than a reference size, and is encoded by intra prediction, as the intra region.
4. In the third paragraph, the standard size is An intra prediction method that is preset or signaled using at least one of a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Picture Header (PH), and a Slice Header (SH).
5. In paragraph 1, the decision step is An intra prediction method comprising: a step of determining the first tree mode as a division structure for the luma block and the chroma block when the luma block corresponding to the intra region is no longer divided; 6. In paragraph 1, the decision step is An intra prediction method comprising: a step of determining the second tree mode as a division structure for the luma block and the chroma block when the luma block corresponding to the intra region is further divided; 7. In the first paragraph, the first tree mode is An intra prediction method comprising a first single tree mode in which a luma block and its corresponding chroma block are not further divided, and a second single tree mode in which they are further divided.
8. In the first paragraph, the second tree mode Dual tree mode in which different partitioning structures are applied to the luma block and its corresponding chroma block, An intra prediction method including a triple tree mode in which different partitioning structures are applied to a luma block, a corresponding first chroma block, and a corresponding second chroma block, respectively.
9. In paragraph 1, An intra prediction method in which at least one partitioning structure among a binary tree (BT) and a ternary tree (TT) is restricted for at least one of a luma block and a chroma block corresponding to the intra region.
10. In paragraph 1, An intra prediction method in which syntax related to inter prediction is not signaled for coding units included in the above intra region.
11. In paragraph 1, An intra prediction method in which at least one mode among IBC (Intra Block Copy) and IntraTMP (Intra Template Matching Prediction) is not allowed for a luma block included in the above intra region.
12. In paragraph 1, For chroma blocks included in the above intra region, an intra prediction method in which the DBV (Direct Block Vector) mode is not allowed.
13. In paragraph 1, An intra prediction method in which at least one mode among CCLM (Cross-Component Linear Model), MMLM (Multi-Model Linear Model), CCCM (Convolutional Cross-Component Model), and CCP Merge (Cross-Component Prediction merge) is not allowed for the chroma block divided according to the second tree mode.
14. An image encoding device performing the method of any one of claims 1 to 13.
15. An image decoding device performing the method of any one of claims 1 to 13.
Citation Information
Patent Citations
Composition for preventing or treating liver cancer comprising Artemisia iwayomogi Kitamura extract
KR1020210007460A
Multi-fuction holder
KR1020230036276A
Method and apparatus for cell reselection in high speed rail dedicated network
KR1020230151626A
Apparatus and method for video conferencing service
KR102575038B1
Signaling inter prediction in high-level syntax
KR102629799B1