Method and apparatus for encoding / decoding video signal
By dividing pictures into tiles and using differential information for encoding and decoding, the method improves video compression efficiency, addressing the data volume challenge in high-definition video services.
Patent Information
- Application Number
- JP2025248136
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-02-18
- Filing Date
- 2025-12-15
- Publication Date
- 2026-02-24
AI Technical Summary
The increasing data volume associated with high-definition video services poses a challenge due to the limitations of existing video compression technologies, necessitating improved encoding and decoding methods to enhance efficiency.
The method involves dividing a picture into multiple tiles or frames and segments slices using tile indexes, incorporating difference information from previous slices to optimize encoding and decoding processes.
This approach enhances coding/decoding efficiency by improving the rate and encoding efficiency through the use of tile-based segmentation and differential information, addressing the limitations of existing video compression standards.
Smart Images

Figure 2026031800000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a video signal encoding / decoding method and an apparatus therefor. [Background technology]
[0002] As display panels continue to get larger, higher quality video services are becoming available. The biggest problem with high-definition video services is the large increase in data volume. To solve this problem, active research is being conducted to improve video compression rates. A typical example is the MPEG (Motion Picture Experts Group) standard, which was introduced in 2009. Experts Group) and ITU-T (International Telecommunications Standards under the umbrella of the Telecommunications Union VCEG (Video Coding Experts Group) C(Joint Collaborative Teamon Video Codin JCT-VC has approximately twice the compression performance of H.264 / AVC. HEVC (High Efficiency Video Codec), a video compression standard ing) was proposed and approved as a standard on January 25, 2013. Due to the rapid development of technologies, HEVC's performance is gradually reaching its limits. Summary of the Invention [Problem to be solved by the invention]
[0003] The present invention divides a picture into multiple tiles or multiple frames when encoding / decoding a video signal. The present invention provides a method for dividing a signal into a number of slices and an apparatus for carrying out said method. do.
[0004] The present invention divides a picture into multiple tiles based on tile indexes. The present invention aims to provide a method for segmenting slices using a laser and an apparatus for performing said method. do.
[0005] In the present invention, when dividing a picture into a plurality of slices, difference information from the previous slice is used. and a device for performing said method. The purpose is to
[0006] The technical problems to be solved by the present invention are not limited to the above-mentioned technical problems. Other technical problems that have not been solved will be apparent to those skilled in the art from the following description. This will be clearly understandable to those who understand it. [Means for solving the problem]
[0007] The video signal decoding method according to the present invention includes the steps of: dividing a current picture into a plurality of tiles; , decoding partition information indicating a slice type, and the partition information indicating the rectangular slice If the slice size is specified, the slice size is used to determine the slice size. Here, the division information indicates whether a rectangular slice is applicable, and The information indicating the size includes width information indicating the width of the slice and height information indicating the height of the slice. The width information of the slice is decoded based on the position of the top left tile in the slice. The decision can be made based on the above.
[0008] The video signal encoding method according to the present invention comprises the steps of: dividing a current picture into a plurality of tiles; , determining whether or not a rectangular slice is to be applied, and if the rectangular slice is to be applied, and encoding size information of the slice. The information indicating the slice width includes width information indicating the slice width and height information indicating the slice height. Whether the width information of the slice is coded is determined based on the position of the top left tile in the slice. It can be determined.
[0009] In the video signal decoding method according to the present invention, the width information is The upper left tile in the slice is the current tile. If it is included in the rightmost tile column in the picture, the decoding of the width information is omitted and its value is set to 0. can be set to.
[0010] In the video signal decoding method according to the present invention, the height information is The upper left tile in the slice is the current tile. If the height information is included in the bottommost tile row in the current picture, the decoding of the height information is omitted and the value is can be set to 0.
[0011] In the video signal decoding method according to the present invention, the upper left tile in the slice is If the top left tile is not included in the bottom row of tiles in the current picture, Whether the height information is decoded or not depending on whether it is included in the leftmost tile column in the current picture can be determined.
[0012] In the video signal decoding method according to the present invention, tile index difference information between slices is The method may further include decoding a differential information presence flag indicating whether differential information has been encoded. Here, if the current picture is composed of a single slice, the difference information exists. The decoding of the flag can be omitted.
[0013] In the video signal decoding method according to the present invention, the decoding of the difference information existence flag is omitted. If so, you can set its value to 0.
[0014] In the video signal decoding method according to the present invention, the difference information existence flag is set to the tile If the index difference information indicates that the tile index of the slice is coded, the tile index difference information is decoded based on the tile index difference information of the slice included in the slice; The index difference between the tile and the tile that the next slice contains can be indicated.
[0015] The features of the present invention briefly summarized above are presented in an illustrative manner in the detailed description of the present invention that follows. These are merely examples and are not intended to limit the scope of the present invention. [Effects of the Invention]
[0016] According to the present invention, a picture is divided into multiple tiles or slices to improve coding / decoding efficiency. can be improved.
[0017] According to the present invention, the slices are divided based on the tile index to improve the coding / decoding efficiency. The rate can be improved.
[0018] According to the present invention, a slice is divided based on difference information from a previous slice and coded / decoded. This can improve the encoding efficiency.
[0019] The effects obtained by the present invention are not limited to those mentioned above, and other effects not mentioned are The following description will be clearly understood by those skilled in the art to which the present invention pertains. Deaf. [Brief explanation of the drawings]
[0020] [Figure 1] 1 is a block diagram of a video encoder according to an embodiment of the present invention;
[0021] [Figure 2] 1 is a block diagram of a video decoder according to an embodiment of the present invention;
[0022] [Figure 3] FIG. 2 illustrates a basic coding tree unit according to one embodiment of the present invention.
[0023] [Figure 4] 1A and 1B are diagrams illustrating various division forms of a coding block.
[0024] [Figure 5] FIG. 10 is a diagram illustrating an example of division of a coding tree unit.
[0025] [Figure 6] 1 is a flowchart of an inter prediction method according to an embodiment of the present invention.
[0026] [Figure 7] FIG. 1 is a diagram illustrating non-linear movement of an object.
[0027] [Figure 8] 1 is a flowchart of an affine motion-based inter prediction method according to an embodiment of the present invention.
[0028] [Figure 9] 10A and 10B are diagrams illustrating examples of affine seed vectors for different affine motion models.
[0029] [Figure 10]FIG. 10 illustrates affine vectors of sub-blocks under a four-parameter motion model.
[0030] [Figure 11] 10 is a flowchart of a process of deriving motion information of a current block under a merge mode.
[0031] [Figure 12] FIG. 10 illustrates example candidate blocks used to derive merge candidates.
[0032] [Figure 13] FIG. 10 is a diagram illustrating an update aspect of the motion information table.
[0033] [Figure 14] FIG. 10 is a diagram showing an update state of the motion information table.
[0034] [Figure 15] FIG. 10 is a diagram illustrating an example of updating indexes of already-saved motion information candidates.
[0035] [Figure 16] FIG. 10 illustrates an example of performing overlap checking on only a portion of merge candidates.
[0036] [Figure 17] FIG. 10 is a diagram illustrating an example in which overlap checks with specific merge candidates are omitted.
[0037] [Figure 18] FIG. 10 is a diagram illustrating an example in which a candidate block included in the same merge processing area as the current block is set as an unavailable merge candidate.
[0038] [Figure 19] 10A and 10B are diagrams illustrating an example of deriving merge candidates for a current block when the current block is included in a merge processing area;
[0039] [Figure 20] FIG. 10 is a diagram showing a temporary motion information table.
[0040] [Figure 21] FIG. 10 is a diagram illustrating an example of merging a motion information table and a temporary motion information table.
[0041] [Figure 22] 1 is a flowchart of an intra prediction method according to an embodiment of the present invention.
[0042] [Figure 23] FIG. 10 is a diagram illustrating intra-prediction modes.
[0043] [Figure 24-25] FIG. 10 is a diagram illustrating an example of a one-dimensional array in which reference samples are arranged in a row.
[0044] [Figure 26] FIG. 10 is a diagram illustrating angles formed by directional intra prediction modes with respect to a line parallel to the x-axis.
[0045] [Figure 27] 10 illustrates how prediction samples are obtained when the current block is non-square.
[0046] [Figure 28] FIG. 10 is a diagram illustrating a wide-angle intra prediction mode.
[0047] [Figure 29] FIG. 10 is a diagram illustrating an example of determining whether or not to perform a transform skip for each sub-block.
[0048] [Figure 30] FIG. 10 is a diagram illustrating an example in which sub-blocks use the same transform type.
[0049] [Figure 31]10 is a flowchart illustrating a process for determining a block strength.
[0050] [Figure 32] FIG. 10 is a diagram showing predefined filter candidates.
[0051] [Figure 33] FIG. 2 illustrates a picture division method according to an embodiment of the present invention.
[0052] [Figure 34] 1 shows an example in which a picture is divided into multiple tiles.
[0053] [Figure 35] FIG. 10 is a diagram for explaining the generation aspect of bricks.
[0054] [Figure 36-37] FIG. 10 is a diagram showing an example in which slices are defined in raster order.
[0055] [Figure 38] FIG. 10 shows an example in which only rectangular slices are allowed.
[0056] [Figure 39] FIG. 10 is a diagram showing an example in which a picture is made up of two slices.
[0057] [Figure 40] FIG. 10 is a diagram illustrating an example in which the number of tile columns or tile rows in a picture is 1. DETAILED DESCRIPTION OF THE INVENTION
[0058] In the following, an embodiment of the present invention will be described in detail with reference to the drawings.
[0059] Image encoding and decoding is performed in units of blocks. For blocks, transform blocks, or predicted blocks, the transform, quantization, prediction, and in-loop filtering are performed. It is possible to perform encoding / decoding processes such as filtering or reconstruction.
[0060] Hereinafter, the block to be coded / decoded will be referred to as the 'current block'. The block is divided into coding block, transformation block, and so on, depending on the current encoding / decoding process stage. , or a predicted block.
[0061] Also, the term 'unit' as used herein refers to a device that performs a particular encoding / decoding process. The term 'block' refers to a sample array of a given size. Unless otherwise specified, the terms 'block' and 'unit' are used interchangeably. As an example, in the embodiment described later, the coding block and the coding The units can be understood to have equivalent meanings to each other.
[0062] FIG. 1 is a block diagram of a video encoder according to an embodiment of the present invention.
[0063] Referring to FIG. 1, a video encoding device 100 includes a picture division unit 110, a prediction unit 120, 125, transform unit 130, quantization unit 135, reordering unit 160, entropy coding unit 165 , an inverse quantization unit 140, an inverse transformation unit 145, a filter unit 150, and a memory 155. can be done.
[0064] Each component shown in FIG. 1 is unique in order to provide a different characteristic function in the video encoding device. It is a structural representation of the system, with each component being either separate hardware or a single software structure. That is, each component is referred to as a separate component for the sake of convenience. and each component includes at least two components. It can be a single component or a component can be divided into multiple components to perform its function. Therefore, both an integrated embodiment and an isolated embodiment of each component are not outside the essence of the present invention. Unless otherwise specified, the invention is within the scope of the present invention.
[0065] In addition, some components are not essential components that perform essential functions in the present invention, but It can be an optional component to improve performance. The present invention is not just for performance improvement. It includes only the components essential to embody the essence of the present invention, excluding components used for the purpose. The essential components are those that can be realized, excluding optional components used only for performance enhancement. A structure containing only elements is also included within the scope of the present invention.
[0066] The picture division unit 110 divides the input picture into at least one processing unit. Here, the processing unit is a prediction unit (PU). It can be a Transform Unit (TU). , or a coding unit (CU). In 10, a combination of multiple coding units, prediction units, and transform units for one picture and divides the image into one coding unit, one prediction unit, and one transform unit according to a predetermined criterion (e.g., a cost function). A combination of these can be selected to encode the picture.
[0067] For example, a picture can be divided into multiple coding units. To divide the coding units from the original data, a quad tree structure is used. It can use a recursive tree structure such as a single image or a maximum coding unit. The largest coding unit is used as the root and divided into other coding units. The coding unit to be divided has child nodes equal to the number of divided coding units. Coding units that cannot be further divided by a certain limit are placed in leaf nodes. In other words, it is assumed that only square division is possible for one coding unit. When specifying a coding unit, one coding unit can be divided into a maximum of four other coding units. .
[0068] In the following embodiments of the present invention, the coding unit may be used to mean a unit for performing coding. It can also be used to mean the unit that performs decoding.
[0069] The prediction unit is at least one square or rectangle of the same size within one coding unit. It can also be divided into predictions in one coding unit. Any one of the prediction units of the unit has a different shape and / or size than the other prediction units. It can also be divided so as to
[0070] When generating a prediction unit for performing intra prediction based on a coding unit, the minimum coding unit is If the pixel size is not large enough, intra prediction can be performed without dividing it into multiple NxN prediction units. do.
[0071] The prediction units 120 and 125 include an inter prediction unit 120 that performs inter prediction and an intra prediction unit 125 that performs intra prediction. and an intra prediction unit 125 for performing intra prediction. It is determined whether to perform prediction or intra-prediction, and specific information according to each prediction method is provided. information (e.g., intra-prediction mode, motion vectors, reference pictures, etc.) Here, the processing unit for which prediction is performed, the prediction method, and specific contents are determined. For example, the prediction method and prediction mode can be different from the processing unit used in the prediction. The prediction may be performed in a transform unit. The residual value (residual block) between the original block and the original block can be input to the conversion unit 130. In addition, the prediction mode information and motion vector information used for prediction are treated as residual values. Both can be encoded by the entropy encoding unit 165 and transmitted to the decoder. When a specific coding mode is used, the prediction units 120 and 125 do not generate a predicted block, but instead generate a block from the original. It is also possible to encode the blocks as they are and transmit them to the decoder.
[0072] The inter prediction unit 120 predicts at least one of the pictures before or after the current picture. It is also possible to predict a prediction unit based on information from at least one picture, predicts a prediction unit based on information on a part of the region in the current picture that has been completely coded. The inter prediction unit 120 includes a reference picture interpolation unit, a motion prediction unit, and A motion compensation unit may be included.
[0073] The reference picture interpolation unit receives reference picture information from the memory 155 and interpolates the reference picture. It is possible to generate pixel information of less than an integer pixel from the image data. DCT-based filter coefficients are used to generate pixel information below integer pixels. 8-tap interpolation filter (DCT-based Interpolation Filter In the case of color difference signals, pixel information less than an integer pixel can be used in 1 / 8 pixel units. To generate the information, a DCT-based 4-tap interpolation filter ( DCT-based Interpolation Filter) can be used. .
[0074] The motion prediction unit calculates a motion vector based on the reference picture interpolated by the reference picture interpolation unit. The motion vectors can be used to perform motion estimation. As a result, FBMA (Full search-based Block Matching) g Algorithm), TSS(Three Step Search), NTS( New Three-Step Search Algorithm The motion vectors are either 1 / 2 or 1 / 4 based on the interpolated pixel. The motion vector value can be calculated in units of pixels. The current prediction unit can be predicted using different motion prediction methods. Skip method, Merge method, AMVP (Advance d Motion Vector Prediction method, intra block copying Various methods can be used, such as the Intra Block Copy method.
[0075] The intra prediction unit 125 uses reference pixel information around the current block, which is pixel information within the current picture. A prediction unit can be generated based on pixel information. Since the block is an inter-predicted block, the reference pixel is an inter-predicted block. In the case of a pixel, the reference pixel included in the block where inter prediction is performed is used as the neighboring pixel. It can be used instead of reference pixel information of the block on which the trajectory prediction is performed. If the reference pixel is not available, the unavailable reference pixel information is used to calculate the available reference pixel. It can be used in place of at least one reference pixel.
[0076] In intra prediction, the prediction mode determines the direction in which reference pixel information is used depending on the prediction direction. and a non-directional mode that does not use directional information when performing prediction. The mode for predicting luminance information and the mode for predicting color difference information are interchangeable. They can be different and are used to predict chrominance information and luma information. The obtained intra prediction mode information or predicted luminance signal information can be utilized.
[0077] When performing intra prediction, if the size of the prediction unit is the same as the size of the transform unit , the pixel on the left side of the prediction unit, the pixel on the top left corner, the pixel on the top corner Intra prediction can be performed for prediction units based on cells. When performing image prediction, if the size of the prediction unit and the size of the conversion unit are different, Intra prediction can be performed using reference pixels based on Intra prediction using NxN decomposition can be used for units only.
[0078] Intra prediction uses AIS (Adaptive Inversion Strategy) for reference pixels depending on the prediction mode. After applying the tra Smoothing filter, the predicted block can be generated. The types of AIS filters applied to the reference pixels can be different. In order to perform the intra prediction method, the intra prediction mode of the current prediction unit is Prediction can be performed using the intra prediction modes of the surrounding prediction units. When predicting the prediction mode of the current prediction unit using the mode information predicted from the current prediction If the intra prediction modes of the unit and the surrounding prediction unit are the same, the current It is possible to transmit information that the prediction modes of the current prediction unit and the surrounding prediction units are the same. If the prediction modes of the current prediction unit and the surrounding prediction units are different from each other, entropy coding is performed. The prediction mode information of the current block can be encoded by performing the above.
[0079] Also, a prediction unit that performs prediction based on the prediction unit generated by the prediction units 120 and 125 is Residual block containing residual value information, which is the difference value between the original block of the prediction unit and the The generated residual block is input to the transform unit 130. It is possible.
[0080] The conversion unit 130 converts the residuals of the original block and the prediction units generated by the prediction units 120 and 125 into The residual block containing the residual information is then subjected to DCT (Discrete Cosine Transform). ine Transform) or DST (Discrete Sine Transform) orm), where the DCT transform core is D The DST transform core includes at least one of DCT2 or DCT8. Applying a DCT or a DST to transform the block produces a residual block. This can be determined based on the intra prediction mode information of the prediction units used to generate the You can also skip the transformation for the residual block. A flag can be coded to indicate whether to skip a conversion. Residual blocks below the threshold, luma components or chroma components under 4:4:4 format And you can forgive.
[0081] The quantization unit 135 can quantize the values converted into the frequency domain by the conversion unit 130. The quantization factor can vary depending on the block or the importance of the image. The values calculated by the unit 135 can be provided to the inverse quantization unit 140 and the realignment unit 160. .
[0082] The reordering unit 160 may perform reordering of coefficient values for the quantized residual values.
[0083] The reordering unit 160 performs coefficient scanning. The method allows converting two-dimensional block view factors into one-dimensional vector view factors. For example, the reordering unit 160 performs a zigzag scan. Then, it scans from DC coefficients to high frequency coefficients and converts them into one-dimensional vector form. Depending on the size of the transform unit and the intra prediction mode, zigzag scan can be used instead. Instead, vertical scanning scans the two-dimensional block view factor in the column direction, and It is also possible to use a horizontal scan, which scans the block view factors in the row direction. Depending on the unit size and intra prediction mode, zigzag scan, vertical scan, and You can decide which scanning method to use in the horizontal and vertical scans.
[0084] The entropy coding unit 165 performs entropy coding based on the value calculated by the reordering unit 160. Entropy coding can be performed using, for example, Exponential Golomb (E xponential Golomb), CAVLC(Context-Adaptiv e Variable Length Coding), CABAC(Context- Adaptive Binary Arithmetic Coding Any encoding method can be used.
[0085] The entropy coding unit 165 receives the codes from the reordering unit 160 and the prediction units 120 and 125. residual value coefficient information and block type information of the division unit, prediction mode information, division unit information, prediction Unit information and transmission unit information, motion vector information, reference frame information, block complement Various information such as interval information, filtering information, etc. can be encoded.
[0086] The entropy coding unit 165 converts the coefficient values of the coding unit input from the reordering unit 160 into It can be entropy coded.
[0087] The inverse quantization unit 140 and the inverse transformation unit 145 inversely quantize the values quantized by the quantization unit 135. The values converted by the conversion unit 130 are inversely converted. The generated residual value (Residual) is input to a motion estimation unit included in the prediction unit 120, 125, A prediction unit predicted by the motion compensation unit and the intra prediction unit is combined to form a reconstructed block. (Reconstructed Block) can be generated.
[0088] The filter unit 150 includes a deblocking filter, an offset correction unit, and an ALF ( The filter may include at least one of an adaptive loop filter.
[0089] The deblocking filter removes the block boundaries in the reconstructed picture. This can remove the block distortion caused by the deblocking process. To do this, the current block is calculated based on the pixels contained in some columns or rows of the block. You can decide whether to apply a deblocking filter to the block. When applying a deblocking filter, the required deblocking filtering strength is Strong Filter or Weak Filter er) can be applied. In addition, when applying the deblocking filter, When performing horizontal filtering and vertical filtering, horizontal filtering and vertical filtering are performed. Directional filtering can be processed in parallel.
[0090] The offset correction unit corrects the original image pixel by pixel for the deblocked image. It is possible to correct the offset between the specified picture and the image. To do this, the pixels in the image are divided into a certain number of regions and then the offset is performed. A method for determining the area to be offset and applying an offset to that area or edge information for each pixel A method can be used to apply an offset taking into account
[0091] ALF (Adaptive Loop Filtering) is a filtered recovery This can be performed based on a comparison between the original image and the original image. After dividing the cells into predetermined groups, determine one filter to be applied to the group. By applying ALF, you can perform differential filtering for each group. The information about the luminance signal is transmitted for each coding unit (CU). The shape and frequency of the ALF filter applied by each block can be determined. The filter coefficients can be changed. Also, the same shape is used regardless of the characteristics of the block to which it is applied. A (fixed) ALF filter can also be applied.
[0092] The memory 155 stores the reconstructed blocks or pictures calculated through the filter unit 150. The stored reconstructed block or picture can be used for prediction during inter prediction. Measurement units 120, 125 may be provided.
[0093] FIG. 2 is a block diagram of a video decoder according to an embodiment of the present invention.
[0094] Referring to FIG. 2, the video decoder 200 includes an entropy decoding unit 210, a reordering unit 220, and an image decoding unit 230. 15, inverse quantization unit 220, inverse transformation unit 225, prediction units 230 and 235, and filter unit 240 , and memory 245.
[0095] When a video bitstream is input from a video encoder, the input bitstream The video can be decoded in the reverse order of the video encoder.
[0096] The entropy decoding unit 210 is an entropy encoding unit of a video encoder. Entropy decoding can be performed in the reverse order of the encoding. For example, the Exponential Golomb method corresponds to the method implemented in the video coder. olomb), CAVLC (Context-Adaptive Variable L ength Coding), CABAC (Context-Adaptive Bin Various methods such as binary arithmetic coding can be applied. Cut.
[0097] The entropy decoding unit 210 performs intra-prediction and inter-prediction performed in the encoder. It is possible to decode information about
[0098] The reordering unit 215 reorders the bits entropy decoded by the entropy decoding unit 210. The reordering can be performed based on the method used to reorder the stream in the encoding unit. The coefficients expressed in vector form are restored to coefficients in 2D block form and rearranged. The reordering unit 215 can use the information about the coefficient scanning performed in the encoding unit. and scanning in reverse order based on the scanning order performed by the encoding unit. Realignment can be accomplished by law.
[0099] The inverse quantization unit 220 receives the quantization parameters provided by the encoder and the realigned blocks. Inverse quantization can be performed based on the coefficient values of the blocks.
[0100] The inverse transform unit 225 converts the transform performed by the transform unit to the quantization result performed by the video encoder. , i.e., perform an inverse transform, i.e., an inverse DCT or an inverse DST, on the DCT or DST. Here, the DCT transform core includes at least one of DCT2 and DCT8. The DST transform core can include DST7, or the transform can be skipped in the video encoder. If the inverse transform is performed, the inverse transform unit 225 may not perform the inverse transform. The inverse transformation of the video decoder can be performed based on the transmission unit determined by the video decoder. The unit 225 changes the prediction direction according to a plurality of pieces of information such as a prediction method, a size of the current block, and a prediction direction. A transformation technique (eg, DCT or DST) can be selectively performed.
[0101] The prediction units 230 and 235 generate the predicted blocks provided by the entropy decoding unit 210. 245. A prediction block can be generated based on the image information.
[0102] As described above, when performing intra prediction as in the video encoder, the prediction unit If the size of the prediction unit is the same as the size of the transform unit, the pixels to the left of the prediction unit , the pixel at the top left corner, the pixel at the top corner, and the When performing intra prediction, the size of the prediction unit and the size of the transform unit are If the sizes are different, intra prediction can be performed using reference pixels based on the transform unit. In addition, intra prediction using NxN division can be used only for the minimum coding unit. It can also be done as follows.
[0103] The prediction units 230 and 235 include a prediction unit discrimination unit, an inter prediction unit, and an intra prediction unit. The prediction unit discrimination unit 210 can discriminate the prediction units input from the entropy decoding unit 210. information, prediction mode information for intra prediction methods, motion prediction related information for inter prediction methods Based on the input of various information, the prediction unit is divided into the current coding unit and the prediction unit is It is possible to determine whether inter-prediction or intra-prediction is performed. The inter-prediction unit 230 receives information necessary for inter-prediction of the current prediction unit from the video encoder. The information is used to determine whether the current prediction unit is included in a previous or subsequent picture of the current picture. The information included in at least one picture of the current prediction unit is used to determine the interval Prediction can be performed on the current picture or on the data already in the current picture that contains the current prediction unit. Inter prediction can also be performed based on information of the partially restored region.
[0104] In order to perform inter-prediction, a prediction unit included in the coding unit is used as a basis. The motion estimation method is Skip Mode, Merge Mode. ge Mode), Motion Vector Prediction Mode (AMVP Mode), Intra-Band It is possible to determine which method is in the locked copy mode.
[0105] The intra prediction unit 235 generates a prediction block based on pixel information in the current picture. If the prediction unit is a prediction unit that has undergone intra prediction, and performing intra prediction based on the intra prediction mode information of the prediction unit provided from the The intra prediction unit 235 uses AIS (Adaptive Intra Smoothing) A filter, a reference pixel interpolator, and a DC filter may be included. The IS filter performs filtering on the reference pixels of the current block. Whether or not to apply a filter can be determined depending on the prediction mode of the prediction unit and then applied. The prediction unit is generated using the prediction mode and AIS filter information provided by the video encoder. AIS filtering can be performed on the reference pixels of the current block. If the prediction mode does not perform AIS filtering, apply the AIS filter. You can't.
[0106] The reference pixel interpolation unit performs interpolation based on the pixel value obtained by interpolating the reference pixel in the prediction mode of the prediction unit. In the case of a prediction unit that performs chromatic prediction, reference pixels are interpolated to obtain reference pixels in pixel units of integer values or less. The prediction mode of the current prediction unit generates a prediction block without interpolating reference pixels. For prediction modes that generate blocks, the reference pixels may not be interpolated. If the prediction mode of the current block is DC mode, the prediction block is filtered. A block can be generated.
[0107] The reconstructed block or picture can be provided to a filter unit 240 . The filter unit 240 includes a deblocking filter, an offset correction unit, and an ALF. It can be done.
[0108] A deblocking filter is applied to the block or picture from the video encoder. Information about whether a deblocking filter is applied, and whether a strong filter is applied. It is possible to receive information on whether a weak filter or a weak filter was applied. The deblocking filter of the decoder is the deblocking filter provided by the video encoder. - Receiving the relevant information, the video decoder performs deblocking filtering on the corresponding block can be accomplished.
[0109] The offset correction unit determines the type and offset of the offset correction applied to the video during encoding. Offset correction can be performed on the restored image based on bit value information.
[0110] The ALF is based on the ALF applicability information and ALF coefficient information provided by the encoder. Such ALF information can be applied to a coding unit in a specific parameter set. The information may be provided in a kit.
[0111] The memory 245 stores the reconstructed pictures or blocks and stores the reference pictures or blocks. The reconstructed picture can be used as a reference block and sent to the output. can be provided.
[0112] FIG. 3 is a diagram illustrating a basic coding tree unit according to one embodiment of the present invention.
[0113] The maximum size of the coding block can be defined in the coding tree block. One picture can be made up of multiple coding tree units. The coding tree unit is the largest coding tree unit. It is a coding unit, also called LCU (Largest Coding Unit). Figure 3 shows an example in which one picture is divided into multiple coding tree units. It is something that is.
[0114] The size of the coding tree unit can be defined at the picture level or at the sequence level. For this purpose, the information indicating the size of the coding tree unit is added to the picture. Signaling via a parameter set or a sequence parameter set can be done.
[0115] As an example, the size of the coding tree unit for all pictures in a sequence is You can set the size to 128x128 or 128x128 at the picture level. The size of the coding tree unit can be determined as either 8 or 256x256. For example, the size of the coding tree unit for the first picture can be set to 12. 8 × 128, and in the second picture, the coding tree unit size is set to 256 × It can be set to 256.
[0116] Coding tree units can be divided to generate coding blocks. A coding block is a basic unit for encoding / decoding processes. Prediction or conversion is performed for each coding block, or predictive coding is performed for each coding block. Here, the predictive coding mode is a method for generating a predicted image. As an example, the predictive coding mode is intra-picture prediction. on, Intra Prediction), Inter Prediction ), Current Picture Referencing (C PR, or Intra Block Copy (IBC) or can contain a combined prediction. For the coding block, intra prediction, inter prediction, current picture reference or hybrid prediction is performed. A prediction block for a coding block using at least one predictive coding mode can be generated.
[0117] Signaling information indicating the predictive coding mode of the current block via the bitstream For example, the information may include whether the predictive coding mode is an intra mode. It can be a 1-bit flag indicating whether the current block is in inter mode or not. Only if the predicted coding mode is determined to be inter-mode, current picture reference or hybrid prediction is performed. can be used.
[0118] Current Picture Reference sets the current picture to the reference picture, and the reference picture is already marked in the current picture. It is used to obtain the predicted block of the current block from the area where encoding / decoding is completed. Here, the current picture means the picture that contains the current block. Signaling information in the bitstream indicating whether current picture references are applied As an example, the information may be a 1-bit flag. If the flag is true, the predictive coding mode of the current block is determined to be current picture reference, and the flag is set to true. If the flag is false, the prediction mode of the current block can be determined to be inter prediction.
[0119] Alternatively, the predictive coding mode of the current block is determined based on the reference picture index. For example, if the reference picture index indicates the current picture, Therefore, the prediction coding mode of the current block can be determined to be based on the current picture. If the picture index indicates a picture other than the current picture, the prediction of the current block The prediction coding mode can be determined to be inter prediction, i.e., the current picture reference is This is a prediction method that uses information on the area in the current picture that has been coded / decoded. Prediction is a prediction method that uses information from other pictures that have already been coded / decoded.
[0120] Hybrid prediction is a combination of two or more of intra prediction, inter prediction, and current picture reference. For example, when applying hybrid prediction, intra prediction, generating a first predicted block based on one of center prediction or current picture reference; The second predicted block can be generated based on the other one. If two predicted blocks are generated, the first predicted block and the second predicted block are averaged or The final predicted block can be generated by a weighted sum operation. The information indicating the number of bits can be signaled by the bitstream. It can be a flag of the
[0121] FIG. 4 illustrates various division patterns of coding blocks.
[0122] The coding block can be divided into quad-tree, binary-tree, or triple-tree. The image can be divided into multiple coding blocks based on the Lee partition. The coding block can also be divided into quad-tree, byte-tree, or triple-tree. It can be further divided into multiple coding blocks by division.
[0123] Quadtree division refers to a division technique that divides the current block into four blocks. As a result of the block tree partitioning, the current block may be divided into four square partitions. This is possible (see 'SPLIT_QT' in Figure 4(a)).
[0124] Binary tree partitioning refers to a partitioning technique that divides the current block into two blocks. Divide the current block into two along a vertical direction (i.e., using a vertical line across the current block). The division into blocks of blocks can be called vertical binary tree division, and the horizontal (i.e., using a horizontal line across the current block) The division into blocks is called horizontal binary tree partitioning. As a result, the current block can be divided into two non-square partitions. (b) 'SPLIT_BT_VER' shows the vertical binary tree splitting result,Fig. 4(c) 'SPLIT_BT_HOR' shows the horizontal binary tree split result. .
[0125] Triple tree partitioning refers to a partitioning technique that divides the current block into three blocks. direction (i.e., using two perpendicular lines across the current block) The division into three blocks can be called vertical triple tree division, and horizontal triple tree division. Triangulate the current block along the direction (i.e., with two horizontal lines across the current block). The division into three blocks is called horizontal triple tree division. As a result of the division, the current block can be divided into three non-square partitions. The width / height of the partition currently located in the center of the block is The width / height can be doubled. 'SPLIT_TT_VER' in Figure 4(d) is The result of splitting the triple tree in the perpendicular direction is shown in Figure 4(e). Horizontal triple tree partitioning results are shown.
[0126] The number of divisions of a coding tree unit is called the partitioning depth (Partitioning Depth). pth) can be defined in the coding tree at the sequence or picture level. The maximum division depth of a unit can be determined, which allows the Additionally, the maximum division depth of the coding tree unit may vary.
[0127] Alternatively, the maximum division depth for each division technique can be determined individually. As an example, the maximum depth allowed for quad tree partitioning is and / or triple tree splitting can differ from the maximum allowed split depth.
[0128] The encoder bit-codes information indicating at least one of the division type and division depth of the current block. The decoder can signal the The division form and division of the coding tree unit are determined based on the parsed information. The depth can be determined.
[0129] FIG. 5 is a diagram illustrating an example of division of a coding tree unit.
[0130] Partitioning such as quad tree partitioning, binary tree partitioning and / or triple tree partitioning Dividing a coding block using this technique is called multi-tree partitioning (Multi T Partitioning).
[0131] The code generated by applying multi-tree partitioning to the coding block The coding block can be called a sub-coding block. For k, the division depth of the lower coding block is set to k+1.
[0132] Conversely, for a coding block with a division depth of k+1, The coding block can be said to be the upper coding block.
[0133] The division type of the current coding block is the division type of the upper coding block or The partitioning type of the adjacent coding blocks may be determined based on at least one of the partitioning types of the adjacent coding blocks. Here, the neighboring coding block is the one adjacent to the current coding block. The upper neighboring block, the left neighboring block, or the upper left neighboring block of the current coding block The division type may include at least one adjacent block adjacent to the first block. indicates whether quad tree splitting is possible, whether binary tree splitting is possible, and the direction of binary tree splitting. It can include at least one of triple tree splitting possibility and triple tree splitting direction. Cut.
[0134] To determine the division form of the coding block, the coding block is divided into The information may be signaled by the bitstream. A 1-bit flag 'split_cu_flag' is used. If the flag is true, 1 shows how a coding block is divided by a tree partitioning technique.
[0135] If split_cu_flag is true, the coding block is split into quadtrees. The information indicating whether the information is to be transmitted or not may be signaled by the bitstream. The information is a 1-bit flag split_qt_flag, and if the flag is true, the code The ring block can be divided into four blocks.
[0136] For example, in the example shown in Figure 5, the coding tree unit is a quadtree partition. By doing this, four coding blocks with a division depth of 1 are generated. In addition, the four coding blocks generated as a result of the quadtree division are shown. In the block, the first coding block and the fourth coding block are further divided into quad trees. The results show that four coding regions with a division depth of 2 were obtained. A block can be created.
[0137] In addition, we further apply quad-tree partitioning to the coding block with a partition depth of 2. By doing so, it is possible to generate a coding block with a division depth of 3.
[0138] If quadtree partitioning is not applied to the coding block, size of the block, whether the coding block is located on the picture boundary, the maximum division depth or adjacent The coding block is divided into binary blocks by taking into consideration at least one of the block division forms. It can be determined whether to perform single-tree or triple-tree splitting. It is decided to perform binary tree partitioning or triple tree partitioning on the input block. If so, information indicating the split direction can be signaled by the bitstream. The information is a 1-bit flag mtt_split_cu_vertical_fla The division direction can be vertical or horizontal depending on the flag. Additionally, binary tree splitting or triple tree splitting can be used to determine whether the - information indicating which of the partitions applies to the coding block is stored in the bitstream This information can be signaled by a 1-bit flag mtt_sp lit_cu_binary_flag. Either binary tree partitioning or triple tree partitioning is applied to the coding block. You can decide whether it applies.
[0139] For example, in the example shown in FIG. 5, a coding block with a division depth of 1 is divided into A directed binary tree partition is applied, and the resulting coding blocks are In the block, vertical triple tree partitioning is applied to the left coding block, and The coding block is shown with vertical binary tree partitioning applied. do.
[0140] Inter-prediction is a predictive coding mode that uses information from previous pictures to predict the current block. As an example, the block in the previous picture that is at the same position as the current block (hereafter referred to as the co-locator) Collocated block) is the predicted block of the current block. The following blocks are generated based on the block at the same position as the current block. The predicted block is called a collocated predicted block. This is called the 'Signal Block'.
[0141] On the other hand, an object that was previously in the picture has moved to a different position in the current picture. In this case, the object's motion can be used to effectively predict the current block. For example, the direction and size of an object can be determined by comparing the previous picture with the current picture. Once the size is known, the predicted block (or Hereinafter, the predicted block generated using the motion information is called It can be said to be a motion prediction block.
[0142] The residual block is calculated by subtracting the predicted block from the current block. ck) can be generated. Here, if there is object motion, By using a motion prediction block instead of a collocated prediction block, the residual block This reduces the energy of the block, which can improve the compression performance of the residual block. do.
[0143] Generating a prediction block using motion information in this way is called motion compensated prediction. Most inter predictions can generate prediction blocks based on motion compensation prediction. .
[0144] The motion information may include motion vectors, reference picture indexes, prediction direction or bidirectional The motion vector can include at least one of the weight indexes. The reference picture index indicates the direction and size of the object. The prediction direction is unidirectional. Indicates one of L0 prediction, unidirectional L1 prediction, or bidirectional prediction (L0 prediction and L1 prediction). Depending on the prediction direction of the current block, the motion information in the L0 direction or the motion information in the L1 direction is used. At least one of them can be used. The bidirectional weight index is applied to the L0 prediction block. The weightings used for the L1 prediction block and the weightings applied to the L2 prediction block are specified.
[0145] FIG. 6 is a flowchart of an inter prediction method according to an embodiment of the present invention.
[0146] Referring to FIG. 6, the inter prediction method determines the inter prediction mode of the current block. In step S601, motion information of a current block is calculated according to a determined inter prediction mode. The motion information for the current block is obtained based on the motion information (S602). The method includes a step of performing compensation prediction (S603).
[0147] Here, the inter prediction mode uses various techniques to determine the motion information of the current block. This shows an inter prediction mode using translation motion information. and inter prediction modes using affine motion information. As an example, inter prediction modes that use translational motion information include merge mode and motion prediction mode. Inter prediction modes using affine motion information include motion vector prediction modes. It can include merge mode and affine motion vector prediction mode. The motion information of the block is calculated based on the neighboring blocks of the current block according to the inter prediction mode. The determination can be based on information parsed from the block or bitstream.
[0148] The inter prediction method using affine motion information will now be described in detail.
[0149] FIG. 7 is a diagram illustrating the non-linear movement of an object.
[0150] The movement of an object in an image may not be linear. For example, as shown in Figure 7, As in the example above, you can zoom in and out the camera. t), rotation or affine transformation of the object When nonlinear motion of an object occurs, the translational motion vector Therefore, the non-motion of the object cannot be expressed effectively. In areas where linear motion occurs, affine motion is used instead of translational motion to improve coding efficiency. It can be raised.
[0151] FIG. 8 is a flowchart illustrating an inter-prediction method based on affine motion according to an embodiment of the present invention. This is a chart.
[0152] Whether the affine motion-based inter prediction technique is applied to the current block depends on the bit This can be determined based on information parsed from the data stream. A flag indicating whether affine merge mode is applied to the current block or not. Based on at least one flag indicating whether the fin motion vector prediction mode is applied. Based on this, it is determined whether the affine motion-based inter prediction technique is applied to the current block. can be determined.
[0153] When applying affine motion-based inter prediction to the current block, An affine motion model of the rock can be determined (S801). The motion model is a 6-parameter affine motion model or a 4-parameter affine motion model. At least one of the six-parameter affine motion models can be determined. The motion model uses six parameters to represent affine motion. The four-parameter affine motion model uses four parameters to generate affine motion. It is an expression of the
[0154] Equation 1 expresses affine motion using six parameters. The orientation represents the translational motion for a given region determined by the affine seed vector. vinegar.
[0155] [Number 1] v x =ax-by+e b y =cx+dy+f
[0156] When expressing affine motion using six parameters, it is difficult to express complex movements. However, the number of bits required to encode each parameter increases, making the encoding process more difficult. Therefore, we use four parameters to create affine motion. Equation 2 expresses affine motion using four parameters. That is why.
[0157] [Number 2] v x =ax-by+e b y =bx+ay+f
[0158] The information for determining the affine motion model of the current block is encoded and the bitstream is As an example, the information can be signaled by a 1-bit frame. The flag 'affine_type_flag' can be set to 0. indicates that a four-parameter affine motion model is applied, and A value of 1 indicates that a 6-parameter affine motion model is applied. The flag can be used to indicate a slice, tile, or block (e.g., a coding block). The slice level can be coded in units of blocks or coding tree units. If the flag is signaled by The model can be applied to all of the blocks belonging to the slice.
[0159] Alternatively, the affine inter prediction mode of the current block is used. In-motion models can be determined using affine merge modes. When using the affine motion model of the current block, the affine motion model is changed to a 4-parameter motion model. On the other hand, when applying the affine motion vector prediction mode, If so, information for determining the affine motion model of the current block is encoded, and This can be signaled by the stream. For example, If the motion vector prediction mode is applied, the 1-bit flag 'affine_t Determining the affine motion model of the current block based on 'type_flag' can be done.
[0160] Next, the affine seed vector of the current block can be derived (S802). If a four-parameter affine motion model is selected, the two components of the current block It can induce the motion vector at the control point. When the turntable motion model is selected, the three control points of the current block The motion vector at the control point can be induced. The control point is the current block. at least one of the top left corner, top right corner, or bottom left corner of the block. can be done.
[0161] FIG. 9 is a diagram illustrating affine seed vectors for different affine motion models.
[0162] In the four-parameter affine motion model, the upper left corner, the upper right corner, or In the bottom left corner, we can derive two affine seed vectors. For example, as shown in Figure 9(a), a four-parameter affine motion model If selected, the top-left corner of the current block (e.g., the top-left sample (x1, y 1)) and the affine seed vector sv0 for the current block's upper right corner (e.g. , the affine seed vector sv1 for the upper right sample (x1, y1) is used. An affine seed vector can be derived for the upper left corner. Instead of using an affine seed vector relative to the bottom left corner, use An affine seed vector relative to the bottom left corner instead of an affine seed vector relative to the It is also possible to use
[0163] In the 6-parameter affine motion model, the top left corner, the top right corner and An affine seed vector for the bottom left corner can be derived. As shown in the example in Figure 9(b), a six-parameter affine motion model is selected. If the current block is a top-left corner (e.g., top-left sample (x1, y1)), the affine seed vector sv0 to be used for the current block's top-right corner (e.g., the top-right corner The affine seed vector sv1 for the sample (x1, y1) and the top left corner of the current block Affine seed vector for the edge corner (e.g., top-left sample (x2, y2)) Affine vectors can be derived using sv2.
[0164] In the example described later, the upper left corner of the four-parameter affine motion model is The affine seed vectors of the top right corner control point and the top right corner control point are respectively The first affine seed vector and the second affine seed vector are called the first affine seed vector and the second affine seed vector. In the embodiment using a seed vector and a second affine seed vector, the first affine seed vector At least one of the second affine seed vector and the second affine seed vector is the bottom left control point The affine seed vector (third affine seed vector) or the bottom right control point It can be substituted for the affine seed vector (fourth affine seed vector) of the original .
[0165] In addition, the 6-parameter affine motion model uses the top left control point and the right The affine seed vectors of the top and bottom left control points are The first affine seed vector, the second affine seed vector, and the third affine seed vector are The first affine seed vector and second affine seed vector are described below. In the example using the first and third affine seed vectors, At least one of the second and third affine seed vectors is located in the bottom right corner. The control point affine seed vector (fourth affine seed vector) is replaced by It is possible.
[0166] Affine seed vectors can be used to derive subblock-specific affine vectors. Here, the affine vector is derived based on the affine seed vector (S803). The affine vectors of the sub-blocks are expressed as affine vectors. They can be called block motion vectors or sub-block motion vectors.
[0167] Figure 10 shows an example of the affine vectors of the sub-blocks in a four-parameter motion model. This is a diagram.
[0168] The affine vector of a sub-block is the position of the control point, the position of the sub-block It can be derived based on the position and affine seed vector. 10 shows an example of guiding fin sub-block motion vectors.
[0169]
number
[0170] In the above equation 3, (x, y) indicates the position of the sub-block. Here, the position of the sub-block is Indicates the position of the reference sample included in the sub-block. The reference sample is located to the left of the sub-block. Samples located at the top corner or at least one of the x-axis or y-axis coordinates is at the center position (x0, y0) is the position of the first control point. (sv 0x , sv 0y ) denotes the first affine seed vector. Also, (x1, y 1) indicates the position of the second control point, and (sv 1x , sv 1y ) is the second affine The seed vector is shown.
[0171] The first and second control points are respectively to the left of the current block. For the top corner and top right corner, x1-x0 is the same as the width of the current block. It can be set to a value.
[0172] Then, the affine vectors of each sub-block are used to perform motion compensation for each sub-block. As a result of the motion compensation prediction, each sub-block is A predicted block for the block can be generated. It can be set as the predicted block of the current block.
[0173] The affine seed vector of the current block is the affine seed vector of the adjacent block adjacent to the current block. The current block's inter prediction mode can be derived based on the inset vector. If the node is in affine merge mode, the affine status of the merge candidates in the merge candidate list is The seed vector can be determined to be the affine seed vector of the current block. If the inter prediction mode of the current block is affine merge mode, the reference A motion picture including at least one of a picture index, a specific direction prediction flag, or a bidirectional weighting value. The information can be set in the same way as for merge candidates.
[0174] Next, the inter prediction method using translational motion information will be described in detail.
[0175] The motion information of the current block can be derived from the motion information of other blocks of the current block. Here, other blocks are coded by inter prediction prior to the current block. The current block's motion information can be used to decode other blocks. You can define the merge mode to set the same as the motion information. The motion vector of the current block is set to the predicted value of the motion vector of the current block. It can be defined as a vector prediction mode.
[0176] FIG. 11 is a flowchart of a process for deriving motion information of a current block under merge mode. is.
[0177] It is possible to induce merge candidates for the current block (S1101). The image candidates are blocks that have been coded / decoded by inter prediction prior to the current block. It can be derived from the
[0178] FIG. 12 is a diagram illustrating candidate blocks used to derive merge candidates.
[0179] The candidate block is a neighboring block containing samples adjacent to the current block or the current block. The block may include at least one non-adjacent block containing samples that are not adjacent to the block. Hereinafter, the sample that determines the candidate block is defined as the reference sample. The reference samples adjacent to the current block are called adjacent reference samples, and the reference samples that are not adjacent to the current block are called adjacent reference samples. The samples are called non-adjacent reference samples.
[0180] The adjacent reference sample is the adjacent column of the leftmost column of the current block or the top row of the current block. It can be included in the adjacent row. For example, the coordinates of the top left sample of the current block are ( 0, 0), the block containing the reference sample at the (-1, H-1) position, (W-1, -1) block containing the reference sample at position (W, -1) block, a block containing a reference sample at (-1, H) position or a block containing a reference sample at (-1, -1) position At least one of the blocks containing the sample can be used as a candidate block. Referring to the table, the adjacent blocks with indexes 0 to 4 are used as candidate blocks. You can be there.
[0181] Non-adjacent reference samples are the x-axis or y-axis distance between adjacent reference samples in the current block. The left reference sample has at least one of the distances defined. The block containing the reference sample whose x-axis distance from the upper reference sample is a predefined value. A block containing non-adjacent samples whose y-axis distance is a predefined value, or a block containing non-adjacent samples whose y-axis distance is a predefined value, and At least one block containing non-adjacent samples whose x-axis distance and y-axis distance are predetermined values. One can be used as a candidate block. Predefined values are 4, 8, 12, 16, etc. Referring to the drawing, the blocks with indexes 5 to 26 are At least one can be used as a candidate block.
[0182] A sample that is not located on the same vertical, horizontal, or diagonal line as an adjacent reference sample is called a non-adjacent sample. It can also be set as a reference sample.
[0183] The motion information of the merge candidate can be set in the same way as the motion information of the candidate block. As the motion vector, reference picture index, prediction direction or At least one of the bidirectional weight indexes can be set to the motion information of the merge candidate. Cut.
[0184] A merge candidate list containing the merge candidates can be generated (S1102).
[0185] The indices of merge candidates in the merge candidate list can be assigned in a predetermined order. For example, the merge candidate derived from the left adjacent block and the merge candidate derived from the top adjacent block are merge candidate derived from the upper right neighboring block, merge candidate derived from the lower left neighboring block The merge candidates derived from the upper left neighboring block, and the merge candidates derived from the temporal The merge candidates derived from the neighboring blocks can be indexed in order.
[0186] If the merge candidate contains multiple merge candidates, at least one of the multiple merge candidates must be selected. Specifically, one of the multiple merge candidates can be selected (S1103). The identifying information can be signaled by the bitstream. and information indicating the index of one of the merge candidates included in the merge candidate list. The merge_idx can be signaled by the bitstream.
[0187] If the number of merge candidates in the merge candidate list is less than a threshold, the motion information table is The motion information candidates included in the table are added to the merge candidate list as merge candidates. Here, the threshold is the maximum number of merge candidates that the merge candidate list can contain or can be the maximum number of merge candidates minus an offset. It can be a natural number such as 1 or 2.
[0188] The motion information table is coded / decoded based on inter prediction within the current picture. The motion information candidates derived from the blocks are included. The motion information of the motion information candidates included in the table is coded / decoded based on inter prediction. The motion information of the motion-encoded block can be set in the same way as the motion information of the motion-encoded block. vector, reference picture index, prediction direction or bidirectional weight index It may include at least one.
[0189] The motion information candidates included in the motion information table are treated as inter-region merge candidates or They can also be called prediction region merge candidates.
[0190] The maximum number of motion information candidates that the motion information table can contain is For example, the motion information table can be The maximum number of motion information candidates that can be included is 1, 2, 3, 4, 5, 6, 7, 8 or It can be more (eg, 16).
[0191] Or, the maximum number of motion information candidates that the motion information table can contain is The information indicating the sequence number may be signaled by the bitstream. The information can be signaled at the sequence, picture, or slice level. It can indicate the maximum number of motion information candidates that the motion information table can contain. Alternatively, the information may be motion information candidates that can be included in the motion information table. indicates the difference between the maximum number of complements and the maximum number of merge candidates that the merge candidate list can contain. It is possible.
[0192] Or, the size of a picture, the size of a slice, or the size of a coding tree unit. The maximum number of motion information candidates that the motion information table can contain depends on the size. can be determined.
[0193] The motion information table includes pictures, slices, tiles, bricks, and coding tools. It is initialized in units of tree units or coding tree unit lines (rows or columns). For example, when a slice is initialized, the motion information table is also initialized. The motion information table may be initialized and may not contain any motion information candidates.
[0194] Alternatively, the information indicating whether to initialize the motion information table can be added to the bitstream. The information can also be signaled by slice, tile, brick or block. This information can be signaled at the block level to initialize the motion information table. The pre-configured motion information table can be used until the user is instructed to do so. .
[0195] Alternatively, initial motion may be specified by a picture parameter set or slice header. Information about candidate information can be signaled. Even if a slice is initialized, The motion information table can include initial motion information candidates. The initial motion information candidate is also used for the first encoding / decoding target block in the rice. It can be used.
[0196] Or, the motion information table of the previous coding tree unit For example, the previous control information can be set as the initial motion information candidate. Among the motion information candidates included in the motion information table of the loading tree unit, The motion information candidate with the smallest index or the motion information candidate with the largest index is The complement can be set as an initial motion information candidate.
[0197] Blocks are coded / decoded in coding / decoding order, and coded / decoded based on inter prediction. The decoded blocks can be set as motion information candidates in the order of encoding / decoding. can.
[0198] FIG. 13 is a diagram for explaining how the motion information table is updated.
[0199] When inter-prediction is performed on the current block (S1301), Based on the motion information, motion information candidates can be derived (S1302). The motion information of the current block can be set to be the same as the motion information of the current block.
[0200] If the motion information table is empty (S1303), the motion information table is automatically generated based on the current block. The derived motion information candidates can be added to the motion information table (S13 04).
[0201] If the motion information table already contains motion information candidates (S1303), For the motion information of the current block (or motion information candidates derived from it), A duplication check can be performed (S1305). The duplication check is performed by checking the motion information table. If the motion information of the candidate motion information already stored in the block is the same as the motion information of the current block, The purpose of the duplication check is to determine whether the motion information is already stored in the motion information table. It can be performed on all stored motion information candidates. Among the motion information candidates already stored in the motion information table, the index is below the threshold. A redundancy check can be performed on motion information candidates above or below the threshold. Alternatively, a predefined number of motion information candidates can be used to perform a duplication check. As an example, two motion information candidates or indices with small indices are The two largest motion information candidates can be determined as the object of the overlapping check.
[0202] The motion information candidate does not contain the same motion information as the current block's motion information. In this case, the motion information candidate derived based on the current block is stored in the motion information table. (S1308) Whether the motion information candidates are the same or not can be determined by the motion Motion information of candidate motion information (e.g., motion vectors and / or reference picture index) The determination can be made by whether the following items (e.g., boxes) are the same:
[0203] Here, the maximum number of motion information candidates is already stored in the motion information table. If so (S1306), the oldest motion information candidate is deleted (S1307), and the current block The motion information candidates derived based on the motion information can be added to the motion information table. Here, the oldest motion information candidate is the motion information candidate with the largest index. The motion information candidate may be the motion information candidate with the smallest index.
[0204] Each motion information candidate can be identified by an index. When a motion information candidate derived from a block is added to the motion information table, The motion information candidate is assigned the lowest index (e.g., 0), and the motion information already stored is The index of the motion information candidate can be incremented by 1. If the table already contains the maximum number of motion information candidates, the index is The motion information candidates are removed.
[0205] Or, the motion information candidate derived from the current block is in the motion information table. When the motion information candidate is added to the For example, the motion information candidates already stored in the motion information table can be If the number is less than the maximum value, the motion information candidate is the one already stored. You can assign an index equal to the number of motions in the motion information table. If the number of motion information candidates already stored in the file is equal to the maximum value, The candidate information can be assigned an index that is the maximum value minus 1. Also, the motion information candidate with the smallest index is removed, and the remaining stored motions are The index of the application information candidate is decreased by one.
[0206] FIG. 14 is a diagram showing how the motion information table is updated.
[0207] The motion information candidate derived from the current block is added to the motion information table. It is assumed that the maximum index is assigned to the motion information candidate. It is assumed that the maximum number of motion information candidates has already been stored in the motion information table.
[0208] The motion information candidate HmvpCand[n+1] derived from the current block is When adding to the motion information table HmvpCandList, the motion information candidate already saved The motion information candidate with the smallest index, HmvpCand[0], is deleted from the complement. The index of the remaining motion information candidate can be decreased by 1. The index of the motion information candidate HmvpCand[n+1] derived from the block is It can be set to a large value (n in the example shown in FIG. 14).
[0209] The same motion information candidate derived based on the current block has already been found. If the motion information is stored in the current block (S1305), The information candidate may not be added to the motion information table (S1309).
[0210] Alternatively, the motion information candidate derived based on the current block can be used as the motion information template. While adding the motion information candidate to the table, the motion information candidate that is already stored is added to the table. In this case, the index of the motion information candidate that has already been saved is updated. This has the same effect as updating the
[0211] FIG. 15 is a diagram showing an example of updating the index of the motion information candidate that has already been saved.
[0212] The motion information candidate mvCand derived based on the current block is the same as the previously secured If the index of the existing motion information candidate is hIdx, the previously saved motion information Delete the candidate and add the motion information candidate indexes greater than hIdx. For example, in the example shown in Figure 15, The same HmvpCand[2] is deleted from the motion information table HvmpCandList. and the indices from HmvpCand[3] to HmvpCand[n] are incremented by 1. A decrease was shown.
[0213] Then, the motion information candidate mvCand derived based on the current block is used as the motion information candidate mvCand. You can add it to the end of the application information table.
[0214] Or, the motion information candidate derived based on the current block is the same as the previously stored motion information candidate. The indexes assigned to the motion information candidates can be updated. For example, The index of the saved motion information candidate can be changed to the minimum or maximum value. .
[0215] The motion information of the blocks included in the specified area will not be added to the motion information table. As an example, the motion information of the blocks included in the merge processing area can be set as follows: The motion information candidates derived based on the The encoding / decoding procedure is defined for the blocks included in the merge processing area. Therefore, the motion information of one of these blocks is used for the inter prediction of other blocks. This makes it difficult to use the merged region based on the blocks included in the merged region. The derived motion information candidate may not be added to the motion information table.
[0216] Or, the motion information of blocks smaller than the preset size is stored in the motion information table. For example, if the width or height is less than 4 or 8, Motion information of a small coding block or motion information of a 4x4 size coding block Motion information candidates derived from the information should not be added to the motion information table. can be done.
[0217] The current block is selected as a motion information candidate based on the inter prediction mode of the current block. For example, it is possible to determine whether to use a The coded / decoded blocks cannot be used as motion information candidates. This allows the current block to be coded / decoded using inter prediction. Even if the current block is an affine prediction mode, , it is possible not to update the motion information table based on the current block.
[0218] The motion information candidates can be set to include additional information in addition to the motion information. For example, for motion information candidates, the size, shape or partition of the block may be At least one of the current block merge candidate information can be stored. When constructing the list, the current block and its size, shape or partition are selected from the motion information candidates. Only motion information candidates with the same or similar motion information are used, or the current block and size are used. In this case, the motion information candidates with the same or similar shape or partition information are first listed in the merge candidate list. can be added to the list.
[0219] If the number of merge candidates in the merge candidate list of the current block is less than the threshold, The motion information candidates included in the motion information table are used as merge candidates in the merge candidate list. The adding step may be performed by adding the motion information candidate indexes in ascending order. For example, the motion with the largest index is The merge candidate list for the current block can be added to the merge candidate list from the merge candidate information.
[0220] Add the motion information candidates included in the motion information table to the merge candidate list. When you try to merge a motion information candidate, the merge candidate already saved in the merge candidate list is As a result of the overlap check, the merge candidate that has already been saved can be Motion information candidates that have the same motion information as the complement cannot be added to the merge candidate list. Cut.
[0221] The duplication check is performed only for a part of the motion information candidates included in the motion information table. As an example, the index may be greater than or equal to a threshold. A duplicate check can be performed on only the candidate information. The N motion information candidates with the largest index or the N motion information candidates with the smallest index are A duplication check can be performed on only the candidate application information.
[0222] Or, duplicates for only some of the merge candidates already stored in the merge candidate list. As an example, a metric can be used to check whether an index is above or below a threshold. The overlap check is performed only on the merge candidates derived from the block at a specific position. Here, the specific position is the top edge of the left adjacent block of the current block. The block must include at least one of the adjacent blocks, the upper right adjacent block, or the lower left adjacent block. can be done.
[0223] FIG. 16 shows an example of performing overlap checking on only a portion of the merge candidates.
[0224] When adding motion information candidate HmvpCand[j] to the merge candidate list, In this case, the two merge candidates with the largest indices for the motion information candidate are merged. CandList[NumMerge-2] and mergeCandList[NumM NumMerge-1], where NumMerge is the The number of spatial and temporal merge candidates for the merge vector can be indicated.
[0225] Unlike the example shown, the motion information candidate HmvpCand[j] is added to the merge candidate list. When adding motion information, the maximum index for the motion information candidate is It is also possible to perform overlap checks between two merge candidates. For example, mergeCand HmvpCand[j] for List[0] and mergeCandList[1] It is possible to confirm the identity of
[0226] Alternatively, performing overlap checking only on merge candidates derived at a particular position. For example, a mark induced from a neighboring block located to the left of the current block can be The number of merge candidates derived from the neighboring blocks located at the top of the current block is small. A duplicate check can be performed on at least one of the merge candidates. If there is no merge candidate induced by [1], the motion information candidate is merged without redundancy check. You can add it to the list of candidates.
[0227] When adding motion information candidate HmvpCand[j] to the merge candidate list, In this case, the two merge candidates with the largest indices for the motion information candidate are merged. CandList[NumMerge-2] and mergeCandList[NumM NumMerge-1], where NumMerge is the The number of spatial and temporal merge candidates for the merge vector can be indicated.
[0228] It is also possible to perform overlap check with merge candidates for only a part of the motion information candidates. As an example, the motion information table can be indexed by using the motion information candidates. The weight is applied only to the N candidates with the largest index or the N candidates with the smallest index. For example, the motion information table contains the motion The motion information candidate having an index whose difference from the number of motion information candidates is equal to or less than a threshold. If the threshold is 2, the motion information table The three motions with the highest index values among the motion information candidates included in the The overlapping check can be performed only on the information candidates. The overlapping check can be omitted for motion information candidates other than the complement. If the search is omitted, the motion information candidate is ignored regardless of whether it has the same motion information as the merge candidate. The complement can be added to the merge candidate list.
[0229] Conversely, the difference between the number of motion information candidates included in the motion information table The overlapping check is performed only on the motion information candidates whose indices are equal to or greater than the threshold. You can also set it to
[0230] The number of motion information candidates for which the redundancy check is performed is already defined in the encoder and decoder. For example, the threshold can be an integer such as 0, 1, or 2.
[0231] Alternatively, the number of merge candidates included in the merge candidate list or the motion information table The threshold may be determined based on at least one of the number of motion information candidates included. do.
[0232] If a merge candidate that is the same as the first motion information candidate is found, the second motion information candidate When checking for overlapping with the first motion information candidate, the overlapping with the same merge candidate is checked. can be omitted.
[0233] FIG. 17 shows an example in which overlap checks with specific merge candidates are omitted.
[0234] The motion information candidate HmvpCand[i] with index i is added to the merge candidate list. If you try to add it to a list, the motion information candidate and the merge candidate list will already be saved. Here, the motion information candidate Hmvp If a merge candidate mergeCandList[j] that is the same as Cand[i] is found, The motion information candidate HmvpCand[i] is not added to the merge candidate list, but the index Between the motion information candidate HmvpCand[i-1] whose source is i-1 and the merge candidate Here, the motion information candidate HmvpCand[i -1] and the merge candidate mergeCandList[j]. This can be done.
[0235] For example, in the example shown in FIG. 17, HmvpCand[i] and mergeCandL ist[2] is determined to be identical. This allows merging HmvpCand[i] Do not add to the candidate list and perform a duplication check on HmvpCand[i-1] Here, HvmpCand[i-1] and mergeCandList[2] can be used. The overlap check between can be omitted.
[0236] If the number of merge candidates in the merge candidate list of the current block is less than the threshold, In addition to the location information candidates, at least one of the pairwise merge candidates or zero merge candidates The pairwise merge candidates may further include the motion vectors of two or more merge candidates. A zero merge candidate is a merge candidate that has the average value of the motion vector. This means that the merge candidate has a zero vector.
[0237] Merge candidates can be added to the merge candidate list of the current block in the following order:
[0238] Spatial merge candidate - Temporal merge candidate - Motion information candidate - (Affine motion information) Information candidates - Pairwise merge candidates - Zero merge candidates
[0239] The spatial merge candidates are derived from at least one of adjacent or non-adjacent blocks. The temporal merge candidates are merge candidates derived from previous reference pictures. The candidate affine motion information is encoded / decoded into the affine motion model. The proposed motion information is derived from the selected block.
[0240] The motion information table can also be used in the motion vector prediction mode. For example, the motion vector prediction candidate in the motion vector prediction candidate list of the current block is If the number of candidates is less than the threshold, the motion information candidates included in the motion information table are used. The motion vector prediction candidate for the current block can be set. The motion vector of the motion information candidate can be set as a motion vector prediction candidate.
[0241] Any of the motion vector prediction candidates included in the motion vector prediction candidate list of the current block If one of the candidates is selected, the selected candidate is set as the motion vector predictor for the current block. Then, after decoding the motion vector residual value of the current block, the motion vector - Combining the predictor and the motion vector residual value to obtain the motion vector of the current block can be done.
[0242] The motion vector prediction candidate list for the current block can be constructed in the following order.
[0243] Spatial motion vector prediction candidate - Temporal motion vector prediction candidate - Motion Information candidate - (Affine motion information candidate) - Zero motion vector prediction candidate
[0244] The spatial motion vector prediction candidates are at least one of the adjacent or non-adjacent blocks. The motion vector prediction candidate derived from the temporal motion vector prediction Candidates refer to motion vector prediction candidates derived from previous reference pictures. The motion information candidates are derived from the blocks coded / decoded into the affine motion model. The zero motion vector prediction candidate is the motion vector indicates candidates with a value of 0.
[0245] A merging region larger than a coding block can be defined. The coding blocks included in the merge processing area are not coded / decoded sequentially, but are processed in parallel. Here, the fact that the encoding / decoding is not sequential means that the encoding / decoding is not sequential. This means that the procedure for merging blocks in the merge processing area is not defined. The encoding / decoding process of each block can be processed independently or merged. can share a merge candidate, where a merge candidate is a merge The treatment area can be guided.
[0246] By using the above-mentioned features, the merge processing area can be divided into parallel processing area and merge shared area (Share d Merge Region (SMR) or MER (Merge Estimation n Region).
[0247] The merging candidates for the current block can be derived based on the coding block. However, if the current block is included in a merge processing area that is larger than the current block, Candidate blocks that are included in the same merge processing area as the current block cannot be used as merge candidates. You can set it to whatever you want.
[0248] Figure 18 shows the candidate blocks included in the same merge processing area as the current block as merge candidates. 10 is a diagram showing an example in which the content is set as unavailable.
[0249] In the example shown on the left side of Figure 18, when encoding / decoding CU5, the reference samples adjacent to CU5 are The block containing the same mark as CU5 can be set as a candidate block. The candidate blocks X3 and X4 included in the processing area cannot be used as merge candidates for CU5. On the other hand, if a candidate is not included in the same merge processing area as CU5, Complementary blocks X0, X1, and X2 can be set as available merge candidates. do.
[0250] In the example shown on the right side of Figure 18, when encoding / decoding CU8, the reference samples adjacent to CU8 The block containing the same mark as CU8 can be set as a candidate block. Candidate blocks X6, X7, and X8 included in the processing area cannot be used as merge candidates. On the other hand, if a candidate block is not included in the same merge region as CU8, Blocks X5 and X9 can be set to be available as merge candidates.
[0251] Or, if the current block is included in the merge processing area, the neighboring blocks adjacent to the current block The adjacent blocks and adjacent blocks adjacent to the merge processing area can be set as candidate blocks. can.
[0252] Figure 19 shows the merge process for the current block when the current block is included in the merge process area. 10 is a diagram showing an example of guiding page candidates.
[0253] As shown in the example of FIG. 19(a), the adjacent blocks adjacent to the current block are called the current block. It can be set as a candidate block to guide the merge candidate of the current block. Candidate blocks that are in the same merge processing area as the block cannot be used as merge candidates. As an example, the merging for coding block CU3 can be set to When deriving candidates, the upper-end neighbors included in the same merge processing area as the coding block CU3 Block y3 and its upper right neighboring block y4 are merge candidates for coding block CU3. You can set it to unavailable.
[0254] Scan the neighboring blocks of the current block in a predefined order to find merge candidates. As an example, the predefined order is y1, y3, y4, y0, and y2. It is possible.
[0255] The number of merge candidates that can be derived from adjacent blocks adjacent to the current block is If the number of page candidates is less than the maximum number or the value obtained by subtracting the offset from the maximum number, As shown in the example in (b), the current block is merged using adjacent blocks in the merge processing area. As an example, a coding block CU can be derived as a merge candidate. The adjacent blocks adjacent to the merge processing area including CU3 are used for coding block CU1. The adjacent blocks adjacent to the merge processing area can be set as candidate blocks. is the left adjacent block x1, the top adjacent block x3, the bottom left adjacent block x0, the top right adjacent block x1, the It may include at least one of the adjacent block x4 or the upper left adjacent block x2.
[0256] Scan adjacent blocks in the merge processing area in a predefined order to find merge candidates For example, a predefined order is x1, x3, x4, x0, and x2. There can be.
[0257] In summary, the merge candidates for the coding block CU3 included in the merge processing area are The complement can be derived by scanning the candidate blocks in the following scan order:
[0258] (y1, y3, y4, y0, y2, x1, x3, x4, x0, x2)
[0259] However, the scanning order of the candidate blocks shown above is merely an example of the present invention. It is possible to scan the candidate blocks in a different order than the example shown. Adaptively adjust the scan order based on at least one of the size or shape of the scan or merge processing region. It can also be determined to be.
[0260] The merge region can be square or non-square. The information for the purpose of the multimedia signaling can be signaled by the bitstream. At least one of information indicating the shape of the merge processing area and information indicating the size of the merge processing area If the merging region is non-square, it may include a information indicating the width and / or height of the merge processing area or the width and height of the merge processing area At least one of the information indicating the ratio between the can.
[0261] The size of the merge processing area depends on the information signaled by the bitstream, the pixel The determination may be based on at least one of the following: the image resolution, the slice size, or the tile size. This can be done.
[0262] If motion compensation prediction is performed on a block included in the merge processing area, the motion compensation prediction The motion information candidate derived based on the motion information of the block where the measurement was performed is the motion information candidate. can be added to the application information table.
[0263] However, the motion information candidates derived from the blocks included in the merge processing area are used for the motion detection. If you add it to the application information table, the merge block will actually be slower to encode / decode than the previous block. When encoding / decoding other blocks in the processing domain, the motion induced from the block is In other words, the block information candidate included in the merge processing area may be used. This also means that dependencies between blocks must be eliminated when encoding / decoding blocks. Regardless of the block size, motion prediction compensation is performed using the motion information of other blocks included in the merge processing area. To solve this problem, the merge process Even if the encoding / decoding of the blocks included in the area is completed, the blocks that have been encoded / decoded It is possible to not add the motion information of the block to the motion information table.
[0264] Alternatively, the motion information is recorded using only the blocks at the predefined positions within the merge processing area. The predefined position is the top left corner of the merge processing area. The block located at the top right corner, the block located at the bottom left corner, the block located at the bottom right corner The block to be placed, the block located in the center, the block adjacent to the right boundary, or the block at the bottom boundary It may include at least one of the adjacent blocks. Only the motion information of the block adjacent to the bottom right corner of The motion information of other blocks is not updated in the motion information table. can be done.
[0265] Alternatively, after the decoding of all blocks included in the merge processing area is completed, The motion information candidates derived from the lock can be added to the motion information table. That is, while the blocks included in the merge processing area are being coded / decoded, The application information table may not be updated.
[0266] For example, if motion compensation prediction is performed on a block included in the merge processing area, The motion information candidates derived from the block are sorted in a predefined order in a motion information table. where the predefined order is the merge processing area or coding tree. The scanning order of the coding blocks in the unit can be determined. The order is at least raster scan, horizontal scan, vertical scan or zigzag scan. Or, the predefined order can be the motion information of each block or the same motion. The decision can be based on the number of blocks that have information.
[0267] Alternatively, the motion information candidate containing unidirectional motion information can be converted to bidirectional motion information. This can be added to the motion information table before the motion information candidates that include this. Conversely, we consider motion information candidates containing bidirectional motion information as unidirectional motion information. It is also possible to add it to the motion information table before the motion information candidates that include it.
[0268] Or, in descending order of frequency of use within a merge processing region or coding tree unit, or Candidate motion information can be added to the motion information table in descending order of frequency of use. do.
[0269] The current block is included in the merge processing area and is included in the merge candidate list of the current block. If the number of merge candidates included in the motion information table is less than the maximum number, The candidate information can be added to the merge candidate list. The motion information candidates derived from the blocks included in the same merge processing area are used for the current block. You can set it so that it is not added to the merge candidate list.
[0270] Or, if the current block is included in the merge processing area, add it to the motion information table. You can set it so that the included motion information candidates are not used. Even if the number of merge candidates in the lock's merge candidate list is less than the maximum number , the motion information candidates included in the motion information table are added to the merge candidate list. It is possible to do this.
[0271] As another example, the motion information for a merging region or coding tree unit may be This motion information table is included in the merge processing area. It serves to temporarily store the motion information of the blocks included in the block. Table and merge processing Motion information table for region or coding tree unit To distinguish between the merged and unmerged blocks, the model for the merged region or coding tree unit is The motion information table is called the temporary motion information table. The motion information candidates stored in the motion information table are called temporary motion information candidates.
[0272] FIG. 20 is a diagram showing a temporary motion information table.
[0273] Temporary motion information table for coding tree units or merge processing regions The current coding tree unit or the merge processing area can be configured. When motion compensation prediction is performed on a current block, the motion information of the block is Instead, you can add the The temporary motion information candidates derived from the above blocks are stored in the temporary motion information table Hmv pMERCandList can be added to the temporary motion information table. Temporary motion information candidates added to the table are not added to the motion information table. This allows the motion information table to be updated to include the coding tree containing the current block. The motion information of the blocks included in the unit or merge processing area is used as the basis for the The motion information candidate may not be included.
[0274] Alternatively, only the motion information of some blocks included in the head processing area can be used as a temporary motion vector. For example, a predefined object in the merge processing area can be added to the application information table. Only the position block can be used to update the motion information table. The predefined positions are the block located at the top left corner of the merge processing area, the block located at the top right corner, Block, Block located at the bottom left, Block located at the bottom right, Block located in the center At least one of the blocks adjacent to the right boundary or the bottom boundary is For example, the block adjacent to the bottom right corner of the merge processing area may include Only the motion information of the block is added to the temporary motion information table, and the motion information of the other blocks is added to the temporary motion information table. It is possible not to add it to the motion information table.
[0275] The maximum number of temporary motion information candidates that the temporary motion information table can contain is Set this to the same as the maximum number of motion information candidates that the motion information table can contain. Or, the temporary motion information table can contain The maximum number of candidate coding information depends on the size of the coding tree unit or the merge processing area. Alternatively, the temporary motion information table may include The maximum number of motion information candidates that a motion information table can contain is The maximum number of candidate reports can be set to less than the maximum number of candidate reports.
[0276] The current block included in the coding tree unit or merge processing area is The temporary motion information table for the moving tree unit or the merge processing area is used. It can be set to not include the current block in the merge candidate list. If the number of merge candidates is less than the threshold, the motions included in the motion information table are merged. The motion information candidate is added to the merge candidate list, and the temporary motion information table is merged. The current block can be added to the merge candidate list without adding the current block to the merge candidate list. other blocks in the same coding tree unit or in the same merge processing area The motion information of the current block may not be used in the motion compensated prediction of the current block.
[0277] Encoding all blocks contained in a coding tree unit or merge processing region Once the decoding is complete, the motion information table and the temporary motion information table are merged. It is possible.
[0278] FIG. 21 is a diagram showing an example of merging a motion information table and a temporary motion information table. is.
[0279] Encoding all blocks contained in a coding tree unit or merge processing region Once the decoding is complete, the temporary motion information table is The temporary motion information candidates can be updated in the motion information table. .
[0280] Here, the temporary motion information candidates included in the temporary motion information table are The order in which the modes are inserted into the mode information table (i.e., ascending or descending order of index value) This can be added to the session information table.
[0281] As another example, the temporary motions included in the temporary motion information table are sorted in a predefined order. Candidate information can be added to the motion information table. Here, the predefined order is The scanning order of the coding blocks within a processing area or coding tree unit The scan order can be determined by the following: raster scan, horizontal scan, vertical scan It can be at least one of a straight scan and a zigzag scan. The order of the blocks is determined based on the motion information of each block or the number of blocks with the same motion information. It is possible.
[0282] Alternatively, the temporary motion information candidate containing the unidirectional motion information is converted into bidirectional motion information. can be added to the motion information table before temporary motion information candidates containing Conversely, temporary motion information candidates containing bidirectional motion information are treated as unidirectional motion information. The motion information is added to the motion information table before the temporary motion information candidate containing the motion information. It can also be done as follows.
[0283] Or, in descending order of frequency of use within a merge processing region or coding tree unit, or Temporary motion information candidates can be added to the motion information table in order of least frequent use. can.
[0284] The temporary motion information candidates included in the temporary motion information table are When adding it to the block, a redundancy check can be performed on the temporary motion information candidates. As an example, the temporary motion information candidate included in the temporary motion information table is If the motion information candidate is already stored in the motion information table, the temporary motion The motion information candidate can be added to the motion information table. The search is performed on a portion of the motion information candidates included in the motion information table. As an example, motion information candidates whose indexes are equal to or greater than a threshold value or equal to or less than a threshold value can be used. For example, a temporary motion information candidate can be used to perform a redundancy check. If the motion information candidate has an index equal to or greater than a predefined value, The motion information candidate may not be added to the motion information table.
[0285] A block included in the same coding tree unit as the current block or in the same merge processing area The motion information candidates derived from the block are used as merging candidates for the current block. For this purpose, it is possible to limit the number of blocks for which motion information candidates are to be stored. Further information can be stored. Block address information includes block location, block address, block index, location of the merge processing area that contains the block, block the address of the merge area that contains the block, the index of the merge area that contains the block, The location of the coding tree region containing the block, The address or block of the coding tree region is included in the index of the coding tree region. It can also contain one of the following:
[0286] Intra prediction is performed using reconstructed samples that have been coded / decoded around the current block. Here, intra prediction of the current block involves the use of in-loop The reconstructed samples before the filter is applied can be used.
[0287] The intra prediction technique is a matrix-based intra prediction and peripheral prediction. Includes general intra prediction that takes into account the directionality of the original sample. Intra prediction of the current block Information indicating the technique may be signaled by the bitstream. The information can be a 1-bit flag, or the current block's location, size, and shape. and the intra prediction of the current block based on at least one of the intra prediction techniques of the neighboring blocks. For example, if the current block is at the picture boundary, If the current block is present across the matrix, intra prediction based on the matrix is applied to the current block. You can set it so that it doesn't happen.
[0288] Intra prediction based on matrices is performed using matrices already stored in the encoder and decoder. The prediction of the current block is calculated based on the matrix multiplication between the current block and the reconstructed samples around the current block. This is a method to obtain a measurement block. Identifying information can be signaled by the bitstream. The processor performs intra prediction of the current block based on the information and the size of the current block. The matrix can be determined.
[0289] General intra prediction is based on a non-directional intra prediction mode or a directional intra prediction mode. This is a method of obtaining a predicted block for a current block based on the above. Next, the process of performing intra prediction based on general intra prediction will be described in more detail.
[0290] FIG. 22 is a flowchart of an intra prediction method according to an embodiment of the present invention.
[0291] The reference sample line of the current block can be determined (S2201). The pull line is the reference line included in the kth line away from the top and / or left side of the current block. The reference samples are the set of reference samples that have been coded / decoded around the current block. can be derived from the reconstituted sample.
[0292] An index that identifies the reference sample line of the current block among multiple reference sample lines. The bitstream can signal the information. Index information intra_lum to identify the reference sample line of the current block a_ref_idx can be signaled by the bitstream. The index information can be signaled on a coding block basis.
[0293] The multiple reference sample lines are the top and / or leftmost first line, second line, and The reference sample may include at least one of an eye line and a third line. From the row adjacent to the top of the current block and the column adjacent to the left of the current block The reference sample line is called the adjacent reference sample line, and the other reference sample lines can also be referred to as non-adjacent reference sample lines.
[0294] Table 1 shows the index assigned to each candidate reference sample line. do.
[0295] [Table 1]
[0296] At least the position, size, shape, or predictive coding mode of the current block or neighboring blocks The reference sample line of the current block can be determined based on one of the above. , if the current block is at the boundary of a picture, tile, slice, or coding tree unit, If they are adjacent, the adjacent reference sample line is determined as the reference sample line of the current block. It is possible.
[0297] The reference sample line is the top reference sample located at the top of the current block and the The left reference sample can be located on the left side of the block. The reference sample can be derived from the reconstruction samples around the current block. The sample can be in the state before the in-loop filter is applied.
[0298] Next, the intra prediction mode of the current block can be determined (S2202). The intra prediction mode of the current block is either a non-directional intra prediction mode or a directional intra prediction mode. At least one of the prediction modes can be determined as the intra prediction mode of the current block. Non-directional intra prediction modes include planar and DC, while directional intra prediction modes include It contains 33 or 65 modes from the bottom left diagonal to the top right diagonal.
[0299] FIG. 23 is a diagram showing intra prediction modes.
[0300] FIG. 23(a) shows 35 intra prediction modes, and FIG. 23(b) shows 6 Seven intra prediction modes are shown.
[0301] It is also possible to define more or fewer intra-prediction modes than those shown in FIG. Cut.
[0302] MPM (Most Predictive Mode Modulation) is calculated based on the intra prediction mode of the neighboring blocks of the current block. t Probable Mode) can be set. Here, the neighboring blocks are The left adjacent block adjacent to the left of the current block and the top edge adjacent to the top edge of the current block It may include adjacent blocks.
[0303] The number of MPMs included in the MPM list must already be set in the encoder and decoder. As an example, the number of MPMs can be three, four, five or six. Alternatively, information indicating the number of MPMs can be signaled by the bitstream. Alternatively, the predictive coding mode of the neighboring blocks, the size, shape or reference of the current block can be used. The number of MPMs may be determined based on at least one of the reference sample line indexes. For example, the adjacent reference sample line can be determined as the reference sample line of the current block. When N MPMs are used, non-adjacent reference sample lines are currently blocked. If the reference sample line is determined to be M, MPMs can be used. M is N It is a smaller natural number; as an example, N can be 6 and M can be 5, 4 or 3. This ensures that the reference sample line index of the current block is 0 and the MPM flag If the flag is true, the intra prediction mode of the current block is one of the six candidate intra prediction modes. On the other hand, if the index of the reference sample line of the current block is greater than 0, If the MPM flag is true, the intra prediction mode of the current block is selected from the five candidate intra prediction modes. The error prediction mode can be selected from among the following two modes:
[0304] Or, a fixed number of samples regardless of the index of the reference sample line of the current block. A number of (eg, six or five) MPM candidates may also be used.
[0305] Generate an MPM list containing multiple MPMs and select the MPM that is the same as the intra prediction mode of the current block. The bitstream signals whether an MPM is included in the MPM list. The information is a 1-bit flag, which can be called an MPM flag. The MPM flag indicates that the MPM list contains the same MPM as the current block. In this case, the index information identifying one of the MPMs is signaled by the bitstream. For example, an index that identifies one of multiple MPMs can be used. The information mpm_idx can be signaled by the bitstream. The MPM specified by the index information is set as the intra prediction mode of the current block. The MPM flag is set to 0 if the MPM list contains the same MPM as the current block. If it indicates that the mode is not used, specify one of the residual intra prediction modes except MPM. The remaining mode information can be signaled by the bitstream. The mode information reassigns indexes to the residual intra prediction modes excluding MPM. When the sigma is set to 0, it indicates the index value corresponding to the intra prediction mode of the current block. , sort the MPMs in ascending order, compare the residual mode information with the MPMs, and As an example, the residual mode information can be determined to be the same as or better than the MPM. If it is smaller than 1, add 1 to the residual mode information to derive the intra prediction mode of the current block. It is possible.
[0306] When deriving the intra prediction mode of the current block, part of the MPM and residual mode information As an example, in the MPM, a comparison of non-directional intra-prediction models can be omitted. MPM, which is a non-directional intra prediction mode, can be excluded from the comparison. It is clear that when set to M, the residual mode information indicates a directional intra prediction mode. Therefore, the residual MPM excluding non-directional intra prediction modes is compared with the residual mode information. Therefore, the intra prediction mode of the current block can be determined. Instead of excluding the predicted mode from the comparison, the number of non-directional intra-prediction modes is added to the residual mode information. After adding, the resulting value can be compared to the residual MPM.
[0307] Instead of setting the default mode to MPM, the intra prediction mode of the current block is set to the default The bitstream can signal information indicating whether the device is in fault mode. The information is a 1-bit flag, and the flag is called a default mode flag. The default mode flag is set when the MPM flag of the current block is the same as the MPM of the current block. It can be signaled only if it indicates that it is included in the M-list. As mentioned above, the default mode is planar, DC, vertical mode or horizontal mode. For example, the planar mode may be set as the default mode. When set, the default mode flag indicates that the intra prediction mode of the current block is planar. The default mode flag indicates whether the current block is an intra prediction mode. If the mode indicates that it is not the default mode, the index information indicates One of the MPMs can be set as the intra prediction mode of the current block.
[0308] If the default mode flag is used, the same intra prediction mode as the default mode is used. The mode can be set so that it is not set in the MPM. For example, the default mode If the flag indicates that the intra prediction mode of the current block is planar, The intra prediction mode of the current block is determined using five MPMs excluding the MPM corresponding to It can be induced.
[0309] If multiple intra prediction modes are set as the default mode, the default mode Index information indicating one of them can be further signaled. The intra prediction mode of the block is set to the default mode indicated by the index information. It is possible.
[0310] If the index of the reference sample line of the current block is not 0, the default mode is used. As an example, it is possible to set the non-adjacent reference sample so that it cannot be used. If the pull line is determined to be the reference sample line of the current block, the DC mode or pull line is It can be set not to use the same non-directional intra prediction mode as the inner mode. This will set the default mode if the reference sample line index is not 0. The flag is not signaled, and the value of the default mode flag is set to a predefined value (i.e., can be set to false.
[0311] If the intra prediction mode of the current block is determined, Based on the above, a predicted sample for the current block can be obtained (S2203).
[0312] If DC mode is selected, the average value of the reference samples is used to calculate the current block. Generate predicted samples. Specifically, the values of all samples in the predicted block are compared with the reference samples. The average value can be generated based on the average value of the current block. At least one of the top reference sample and the left reference sample located to the left of the current block can be derived using
[0313] Depending on the type of the current block, the number of reference samples used to derive the average value or The range can vary. For example, if the current block is a non-square block whose width is greater than its height, If the upper reference sample is the same as the upper reference sample, the average value can be calculated using only the upper reference sample. If the current block is a non-square block whose width is less than its height, only the left reference sample is used. In other words, if the width and height of the current block are different, In this case, the average value can be calculated using only the adjacent reference sample on the longer side. Or, based on the width-to-height ratio of the current block, use only the top reference sample. Decide whether to calculate the average using only the left reference sample or the right reference sample. This can be done.
[0314] When planar mode is selected, horizontal and vertical prediction samples are Here, the horizontal prediction sample is obtained by using the prediction sample. The left and right reference samples are located on the same horizontal line as the sample. The vertical prediction sample is the top reference sample located on the same vertical line as the predicted sample. and the bottom reference sample, where the right reference sample is the current block The upper right corner of the image is generated by copying the adjacent reference sample. It can be generated by copying the adjacent reference sample to the bottom left corner of the current block. The horizontal prediction sample is calculated by the weighted sum of the left and right reference samples. The vertical prediction sample is obtained by performing a weighted sum operation on the top reference sample and the bottom reference sample. Here, the weight given to each reference sample is obtained by The prediction samples can be determined by the position of the horizontal and vertical It can be obtained by averaging or weighted summing of the directional prediction samples. When performing the above, the horizontal prediction sample and the vertical prediction sample are The weights given to the samples can be determined.
[0315] When a directional prediction mode is selected, the prediction direction (or prediction The following table 2 shows the parameters for the intra prediction mode. The intra direction parameter intraPredAng is also shown.
[0316] [Table 2]
[0317] Table 2 shows the indexes from 2 to 34 when 35 intra prediction modes are defined. indicates the intra direction parameters of each of the intra prediction modes, If more than 33 directional intra-prediction modes are defined, Table 2 is further subdivided. You can set the intra direction parameters for each directional intra prediction mode using Cut.
[0318] The top and left reference samples of the current block are aligned in a row, and then the Based on the value of the direction parameter, the predicted sample can be obtained. If the value of the traverse parameter is negative, the left and top reference samples are aligned. can be lined up.
[0319] 24 and 25 are diagrams showing examples of a one-dimensional array in which reference samples are arranged in a row.
[0320] FIG. 24 illustrates a vertical one-dimensional array in which reference samples are arranged in the vertical direction. 25 illustrates a horizontal one-dimensional array in which reference samples are arranged in the horizontal direction. 24 and 25 are based on the assumption that 35 intra-prediction modes are defined. explain.
[0321] If the intra prediction mode index is one of 11 to 18, the upper reference The sample is rotated counterclockwise to obtain a horizontal one-dimensional array, and the intra prediction mode index is calculated. If the value is one of 19 to 25, the left reference sample is rotated clockwise. A vertical one-dimensional array can be applied. When arranging the reference samples in a row, The intra-prediction mode angle can be taken into consideration.
[0322] Determining the reference sample determination parameters based on the intra-direction parameters The reference sample determination parameter is the reference sample indicator for identifying the reference sample. weighting parameters to determine the weights applied to the index and reference samples. It can include.
[0323] The reference sample index iIdx and weight parameter ifact are respectively It can be obtained by Equations 4 and 5.
[0324] [Number 4] iIdx=(y+1)*P ang / 32
[0325] [Number 5] i fact =[(y+1)*P ang ]&31
[0326] In equations 4 and 5, P ang indicates the intra-direction parameter. Reference sample index The reference sample identified by iIdx corresponds to an integer pel. Correct.
[0327] At least one reference sample must be identified to derive the predictive sample. Specifically, the gradient of the prediction mode is taken into account and used to derive the prediction samples. The position of the reference sample to be used can be identified. The iIdx is used to identify the reference sample used to derive the predicted sample. This can be done.
[0328] Here, if the gradient of the intra prediction mode cannot be expressed by one reference sample, multiple The predicted samples can be generated by interpolating the reference samples. The gradient of the prediction mode is the gradient between the prediction sample and the first reference sample and the gradient between the prediction sample and the second reference sample. If the slope between the first and second reference samples is a value between The predicted sample can be obtained by interpolating the intra prediction angle. An angular line passes through reference samples located at integer pels. If not, the reference points located adjacent to the left and right or above and below the position through which the angular line passes shall be used. The predicted samples can be obtained by interpolating the samples.
[0329] Equation 6 below shows an example of obtaining a predicted sample based on a reference sample.
[0330] [Number 6] P(x,y)=((32-i fact ) / 32)*Ref_1D(x+iIdx+1) +(i fact / 32)*Ref_1D(x+iIdx+2)
[0331] In Equation 6, P represents the predicted sample, and Ref_1D represents one of the one-dimensionally arranged reference samples. Here, the position of the reference sample is the position (x, y) of the predicted sample and the reference The reference sample index iIdx can be determined by the reference sample index iIdx.
[0332] If the gradient of the intra prediction mode can be expressed by one reference sample, the weight Parameter ifact is set to 0. This simplifies Equation 6 to Equation 7: It is possible.
[0333] [Number 7] P(x,y)=Ref_1D(x+iIdx+1)
[0334] performing intra prediction on a current block based on a plurality of intra prediction modes; For example, an intra prediction mode can be induced for each prediction sample, and Deriving predicted samples based on intra prediction modes assigned to the measured samples can be done.
[0335] Alternatively, the intra prediction mode can be induced by region, and the intra prediction mode assigned to each region can be Intra prediction can be performed for each region based on the intra prediction mode. The area may contain at least one sample. At least one of the conditions is at least one of the size, shape or intra prediction mode of the current block. Alternatively, it can be adaptively determined based on the current At least one of the size or shape of the region is already defined independently of the size or shape of the block. It can be defined as:
[0336] FIG. 26 illustrates the angles that directional intra prediction modes form with respect to a line parallel to the x-axis. This is a diagram.
[0337] As shown in the example of FIG. 26, the directional prediction mode is the diagonal direction at the bottom left and the diagonal direction at the top right. If we explain it as the angle formed by the x-axis and the directional prediction mode, The predictive modes are located between 45 degrees (bottom left diagonal) and -135 degrees (top right diagonal). It can exist.
[0338] If the current block is non-square, the intra prediction mode of the current block determines whether the The predicted sample is closer to the reference sample located on the angular line along the prediction angle. Instead of a closer reference sample, a reference sample farther from the predicted sample is used to estimate the predicted sample. This may cause a pull.
[0339] FIG. 27 is a diagram showing how predicted samples are obtained when the current block is non-square. do.
[0340] For example, as shown in FIG. 27(a), the width of the current block is greater than the height. It is non-square and the intra prediction mode of the current block has an angle between 0 and 45 degrees. In this case, the right column of the current block is assumed to be a directional intra prediction mode. When deriving the predicted sample A, the reference located on the angular mode along the angle Instead of the upper reference sample T closest to the predicted sample, It may happen that a left reference sample L far from the center is used.
[0341] As another example, as shown in Figure 27(b), if the current block is larger in height than in width, The current block's intra prediction mode is between -90 degrees and -135 degrees. Assume that the directional intra prediction mode is used. In this case, the predicted values of the lower rows of the current block are When guiding the measurement sample A, a reference sample located on the angular mode along the angle is Instead of the left reference sample L closest to the predicted sample in the block, A case may occur where an upper reference sample T far from the reference sample T is used.
[0342] To solve this problem, if the current block is non-square, The intra prediction mode can be replaced with an intra prediction mode in the opposite direction. For non-square blocks, the directional prediction modes shown in FIG. A directional prediction mode with a small angle can be used. The mode can be defined as a wide-angle intra-prediction mode. The intra prediction modes are directional intra prediction modes that do not fall within the range of 45 degrees to -135 degrees. show.
[0343] FIG. 28 is a diagram showing wide-angle intra prediction modes.
[0344] In the example shown in FIG. 28, the intra prediction modes and the indexes from -1 to -14 are Intra prediction modes with indexes from 67 to 80 are wide-angle intra prediction modes. Indicates the do.
[0345] In Figure 28, 14 wide-angle intra-prediction modes (-1 to -14) and 14 wide-angle intra prediction modes with angles less than -135 degrees. Examples are shown for wide-angle lenses (67 to 80), but more or less than this number may be used. A prediction mode can be defined.
[0346] When wide-angle intra prediction mode is used, the length of the top reference sample is 2W+ 1, and the length of the left reference sample can be set to 2H+1.
[0347] By using the wide-angle intra prediction mode, the sample shown in (a) of FIG. Sample A is predicted using the reference sample T, and sample A shown in Figure 28(b) is predicted using the reference sample T. It can be predicted using rule L.
[0348] A total of 67 intra prediction modes, including existing intra prediction modes and N wide-angle intra prediction modes +N intra prediction modes are available. As an example, Table 3 shows 20 wide angle If a single intra prediction mode is defined, the intra direction parameter of the intra prediction mode This indicates the controller.
[0349] [Table 3]
[0350] If the current block is non-square, the intra-block of the current block acquired in step S2502 If the prediction mode belongs to the transform range, the intra prediction mode of the current block is set to wide-angle. The conversion range is the size of the current block. The determination can be based on at least one of the following: The ratio between the width and height of the current block can be indicated.
[0351] If the current block is non-square, with its width greater than its height, the transformation range is the upper right corner of the diagonal From the intra prediction mode index (e.g., 66) (the upper right diagonal intra prediction mode The number of blocks can be set to the number of blocks (index of the current block - N), where N is the ratio of the current block to the number of blocks. The intra prediction mode of the current block belongs to the transform range. In this case, the intra prediction mode can be converted to a wide-angle intra prediction mode. The conversion may be a subtraction of a predefined value from the intra prediction mode. The predefined value is the total number of intra prediction modes excluding wide-angle intra prediction modes. (e.g., 67).
[0352] According to the above embodiment, the intra prediction modes between the 66th and 53th are -1, respectively. It can be converted to wide-angle intra prediction modes between -14 and -15.
[0353] If the current block is non-square with height greater than width, the transformation range is the bottom left corner diagonal Intra prediction mode index (e.g., 2) to (bottom left diagonal intra prediction mode The index of the current block can be set to 1 + M, where M is the ratio of the current block. If the intra prediction mode of the current block belongs to the transform range, In this case, the intra prediction mode can be converted to a wide-angle intra prediction mode. The conversion may be adding a predefined value to the intra prediction mode, The predefined value is the total number of directional intra prediction modes excluding wide-angle intra prediction modes. It can be a number (e.g., 65).
[0354] According to the above embodiment, the intra prediction modes between No. 2 and No. 15 are respectively No. 67 and No. It can be converted to wide-angle intra prediction mode between 80 and 90.
[0355] Hereinafter, the intra prediction modes belonging to the conversion range are referred to as wide-angle intra alternative prediction modes. That's what they say.
[0356] The conversion range can be determined based on the ratio of the current block. For example, see Table 4 and Table 5 shows the 35 intra prediction modes, excluding the wide-angle intra prediction mode. The conversion ranges for the cases where 1 mode is defined and 67 intra prediction modes are defined are shown. .
[0357] [Table 4]
[0358] [Table 5]
[0359] As shown in the examples in Tables 4 and 5, the ratio of the current block determines the amount of data included in the conversion range. The number of alternate angle intra prediction modes can be different.
[0360] You can also set the conversion range by dividing the current block ratio into smaller parts as shown in Table 6 below. .
[0361] [Table 6]
[0362] If a non-adjacent reference sample line is determined as the reference sample line of the current block, or is a multi-line intra-prediction coding method that selects one of multiple reference sample lines. If the method is used, the wide-angle intra prediction mode is set to not be used. That is, if the current block is non-square, and the intra prediction of the current block is Widen the intra prediction mode of the current block even if the mode belongs to the transform range. It is possible not to convert to angle intra prediction mode.
[0363] Or, the intra prediction mode of the current block is set to wide-angle intra prediction mode. If so, the non-adjacent reference sample line is used as the reference sample line of the current block. Set it to unavailable or select one of several reference sample lines. It can be set so that the multi-line intra prediction coding method is not used. If the intra-line predictive coding method is not used, the adjacent reference sample line is used as the current block. The reference sample line of the block can be determined.
[0364] If wide-angle intra prediction mode is not used, refW and refH are This allows the current sample to be set to the sum of W and nTbH, except for the upper left reference sample. The non-adjacent reference sample whose distance from the current block is i is (nTbW+nTbH+o ffsetX[i]) upper reference samples and (nTbW+nTbH+offsetY[ i) left reference samples, i.e., the distance from the current block is The non-adjacent reference sample i is (2nTbW+2nTbH+offsetX[i ]+offsetY[i]+1) reference samples. For example, If the value of atio is greater than 1, the value of offsetX is set to be greater than the value of offsetY. For example, the offsetX value can be set to 1, and the offset The value of tY can be set to 0, while the value of whRatio is less than 1. In this case, the offsetY value can be set to be larger than the offsetX value. Then the offsetX value can be set to 0 and the offsetY value can be set to 1. do.
[0365] By using wide-angle intra-prediction mode in addition to the existing intra-prediction mode, This increases the resources required to encode wide-angle intra-prediction modes. Therefore, the wide-angle intra prediction mode is not coded as it is. Instead of encoding, we use an alternative intra-prediction mode for the wide-angle intra-prediction mode. It can be encoded to improve coding efficiency.
[0366] For example, if the current block is coded using wide-angle intra prediction mode 67, When the 67th wide-angle alternative intra prediction mode is set to 2, the current block is In addition, the current block can be coded in the intra prediction mode of -1. If coded in wide-angle intra prediction mode, the -1 wide-angle alternative intra prediction mode is used. The intra prediction mode 66 can be encoded as the intra prediction mode of the current block. do.
[0367] The decoder decodes the intra prediction mode of the current block and It is possible to determine whether the decoded intra prediction mode is included in the transform range. If the mode is wide-angle alternate intra prediction mode, change the intra prediction mode to wide-angle. It can be converted to a glu intra prediction mode.
[0368] Or, if the current block is coded in wide-angle intra prediction mode, The right-angle intra prediction mode can also be coded as is.
[0369] The encoding of the intra prediction mode can be performed based on the above-mentioned MPM list. Specifically, if the neighboring block is coded in wide-angle intra prediction mode, a wide-angle alternative intra-prediction mode corresponding to the wide-angle intra-prediction mode; You can configure the MPM based on the
[0370] The residual image can be derived by subtracting the predicted image from the original image. When the image is transformed into the frequency domain, the main part of the image is still visible even if the high frequency components are removed from the frequency components. Therefore, the value of the high frequency component is converted to a smaller value, or the high frequency component is converted to a smaller value. Setting the minutes value to 0 improves compression efficiency without introducing significant visual distortion. Reflecting this characteristic, the residual image is decomposed into two-dimensional frequency components. The current block can be transformed to Cosine Transform) or DST (Discrete Sine Transform) This can be accomplished using transformation techniques such as transforms.
[0371] DCT uses a cosine transform to decompose (or transform) the residual image into two-dimensional frequency components. DST uses a sine transform to decompose (or transform) the residual image into two-dimensional frequency components. As a result of the residual image transformation, the frequency components can be represented by the basis images. For example, when performing DCT transformation on a block of size N×N, N 2 Individual Basics The pattern components can be obtained by transforming them into blocks of size NxN. The size of each of the basic pattern components can be obtained. Therefore, the size of the basic pattern component can be said to be a DCT coefficient or a DST coefficient.
[0372] The DCT transformation technique is mainly used to transform images with a large distribution of non-zero low-frequency components. The DST transformation technique is mainly used for images with a large distribution of high frequency components.
[0373] Transformation techniques other than DCT or DST can also be used to transform the residual image.
[0374] Hereinafter, the conversion of residual images into two-dimensional frequency components will be referred to as two-dimensional image conversion. The size of the basic pattern component obtained as a result of the transformation is called the transformation coefficient. The coefficients may refer to DCT coefficients or DST coefficients. When both transforms are applied, the transform coefficients are the basic pattern components generated as a result of the second transform. In addition, the residual samples to which the transform skip is applied are also transformed. It's called a coefficient.
[0375] The transformation method can be determined on a block-by-block basis. based on at least one of the encryption mode, the size of the current block, or the shape of the current block. For example, if the current block is coded in intra prediction mode, If the size of the current block is smaller than NxN, the conversion is performed using the DST conversion technique. On the other hand, if the above conditions are not met, the transformation can be performed using the DCT transformation technique. It can be done.
[0376] It is also possible to not perform 2D image conversion on some blocks of the residual image. Not performing image conversion is called a transform skip. Transform skip indicates that the first transform and the second transform are not applied to the current block. When a skip is applied, quantization is applied to the residual values on which no transformation is performed. can be done.
[0377] Whether or not to allow a conversion skip for the current block depends on at least the size or shape of the current block. For example, the size of the current block may be smaller than a threshold. The threshold is the width of the current block, It relates to at least one of the size or number of samples, and is defined as 32 x 32, etc. Alternatively, we can allow transformation skipping only for square blocks. For example, for square blocks of size 32x32, 16x16, 8x8 or 4x4 Transform skipping can be allowed, or the sub-partition intra coding method Only if it is not used can conversion skipping be allowed.
[0378] Or, if the sub-partition intra-coding method is applied to the current block, It is possible to determine whether to apply a transformation skip for each subpartition.
[0379] FIG. 29 is a diagram showing an example of determining whether to apply transform skip for each sub-block.
[0380] Transform skip can be applied to only some of the sub-blocks. As shown in the example in Figure 29, the sub-block at the top of the current block is transformed. Apply skip and do not allow conversion skip for the sub-blocks located at the bottom It is possible.
[0381] The transform type of a sub-block that does not allow transform skipping is signaled by the bitstream. This can be determined based on the information sent to the The transformation type can be determined based on the _idx.
[0382] Alternatively, determining the transformation type of the sub-block based on the size of the sub-block. As an example, the width of the sub-block may be greater than or equal to a threshold and / or less than or equal to a threshold. The horizontal transformation type is determined based on whether the height of the sub-block is greater than or equal to a threshold value. and / or the vertical transformation type can be determined based on whether the value is below a threshold.
[0383] After transforming the current block using DCT or DST, the transformed current block is Here, a DCT or DST-based transformation is defined as the first transformation, A second transformation can be defined to further transform the block to which the first transformation has been applied. .
[0384] The first transform can be performed using any one of a number of transform core candidates. and performing the first transformation using one of DCT2, DCT8, or DST7. can be done.
[0385] It is also possible to use different transform cores for the horizontal and vertical directions. The bitstream signals the combination of the core and the vertical transform core. You can also search.
[0386] The first and second transforms may be performed in different units. For example, The first transformation is performed on the 8x8 block, and a 4x4 size sub-block is created from the transformed 8x8 block. Alternatively, a second transformation can be performed on the block, or on three sub-blocks of size 4x4. A second transform can be performed on the transform coefficients belonging to the three sub-blocks. The block is a sub-block located at the top left corner of the current block, a sub-block adjacent to the right of the current block, and a sub-block located at the top left corner of the current block. The sub-block may include a sub-block adjacent to the lower end of the sub-block. Alternatively, the second transform can be performed on blocks of size 8x8.
[0387] The transform coefficients of the remaining area where the second transform is not performed may be set to zero.
[0388] Alternatively, perform the first transformation on the 4x4 block and create a new image containing the transformed 4x4 block. The second transformation can also be performed on an 8x8 sized region.
[0389] The information indicating whether the second conversion is performed or not can be signaled by the bitstream. For example, a flag indicating whether the second conversion is performed or not, or a flag indicating whether the second conversion is performed and whether the second conversion is performed or not, can be used. It is possible to signal index information that identifies the transformation kernel used for the transformation. For example, if the index information is 0, the second transformation is performed on the current block. On the other hand, if the index information is greater than 0, the index The transformation kernel for performing the second transformation can be determined based on the data information.
[0390] Alternatively, the second transform is performed based on whether the horizontal transform core and the vertical transform core are identical. For example, the horizontal and vertical transform cores The second transformation can be performed only if the horizontal transformation control The second transformation can be performed only if the core and the vertical transform core are different.
[0391] Or, only if the horizontal and vertical transformations use predefined transformation cores , a second transformation can be allowed. For example, a DC If a T2 transform core is used, a second transform can be allowed, or the current block When the sub-partition intra-coding method is applied to the A second transform is allowed only if a DCT2 transform core is used for the direct transform. .
[0392] Alternatively, the second transform is performed based on the number of non-zero transform coefficients in the current block. As an example, if the non-zero transform coefficients of the current block are less than or equal to a threshold, If the number of non-zero transform coefficients of the current block is greater than the threshold, the second transform is not used. If the current block is coded with intra prediction, it can be set to use the second transform. You can also configure it to use the second transformation only if the data is encrypted.
[0393] Or, whether to perform the second transform based on the position of the last non-zero transform coefficient of the current block. As an example, the x-axis coordinate of the last non-zero transform coefficient of the current block can be determined. Or if at least one of the y-axis coordinates is greater than the threshold, or if the last non-zero At least one of the x-axis coordinate or y-axis coordinate of the sub-block to which the transform coefficient belongs is greater than the threshold. If the threshold is not satisfied, the second transform may not be performed. Alternatively, a threshold can be defined based on the size or shape of the current block. A value can be determined.
[0394] Alternatively, if the current block only has DC component transform coefficients, a second transform is performed. Here, the DC component is the change in the upper left corner position within the current block. Indicates the conversion factor.
[0395] Or, if matrix-based intra prediction is applied to the current block, the second It can be set to not perform the conversion.
[0396] Signaling information indicating the transformation type of the current block via the bitstream The information can be a horizontal transformation type and a vertical transformation type. It can be index information tu_mts_idx that indicates one of the combinations.
[0397] Based on the conversion type candidate identified by the index information tu_mts_idx , the transform core for the vertical direction and the transform core for the horizontal direction can be determined. 7 indicates the combination of conversion types by tu_mts_idx.
[0398] [Table 7]
[0399] The transform type can be either DCT2, DST7 or DCT8. Alternatively, a conversion skip can be inserted into the conversion type candidates.
[0400] When Table 7 is used, if tu_mts_idx is 0, then D is used in the horizontal and vertical directions. If tu_mts_idx is 2, DCT2 is applied horizontally. 8 and then DCT7 vertically.
[0401] When the sub-partition intra-coding method is applied, the transform core of the sub-block is For example, the transformation type combination candidates for each sub-block can be determined independently. Therefore, the information for identifying the sub-block can be coded and signaled. The conversion cores of the blocks can be different from each other.
[0402] Alternatively, the sub-blocks can use the same transform type. In this case, the transform type The tu_mts_idx that identifies the combination candidate is signaled only for the first sub-block. Alternatively, tu_mts_idx can be used at the coding block level. The transform type of the sub-block is signaled at the coding block level. It can be determined by referring to the tu_mts_idx that is being mapped to the subblock. The transform timing is determined based on at least one of the size, shape, or intra prediction mode of the block. The determined conversion type is set to be used for all sub-blocks. It can also be set.
[0403] FIG. 30 shows an example in which sub-blocks use the same transform type.
[0404] If the coding block is divided horizontally, the top edge of the coding block is The sub-block (Sub-CU0) located at the bottom and the sub-block (Sub-CU1) located at the bottom are 1) The conversion type can be set to the same. For example, For example, based on the tu_mts_idx signaled for the top sub-block, Once the horizontal and vertical transformation types are determined, the determined transformation type is applied to the bottom edge of the It can also be applied to block.
[0405] If the coding block is divided vertically, the left side of the coding block The sub-block (Sub-CU0) located on the right side 1) The conversion type can be set to the same. For example, For example, based on the tu_mts_idx signaled for the left sub-block, Once the horizontal and vertical transformation types are determined, the determined transformation types are used as the right side sub- It can also be applied to block.
[0406] The size, shape, number of non-zero coefficients, whether or not to perform secondary transformation, or subpartition of the current block The index information is determined based on at least one of whether or not the division intra-encoding method is applicable. For example, if a sub-partition is added to the current block, it can be determined whether it is coded or not. If an intra-coding method is applied, or if the number of non-zero coefficients is less than or equal to a threshold, If not, the signaling of the index information can be omitted. If signaling is omitted, the default transformation type shall be applied to the current block. can be done.
[0407] The default transform type may include at least one of DCT2 or DST7. If there are multiple default transform types, the size, shape, and intra prediction mode of the current block , whether or not a secondary transformation can be performed or whether or not a sub-partition intra-coding method can be applied. You can select one of several default conversion types, taking into account the following: Then, one of several conversion types is selected based on whether the width of the current block falls within a preset range. Determine the horizontal transformation type based on whether the current block height is within the preset range. Alternatively, one of multiple transformation types can be determined as the vertical transformation type. Depending on the size, shape, intra prediction mode, or whether a secondary transformation has been performed on the current block, The default mode can be determined differently.
[0408] Or, if the current block only has DC component transform coefficients, The default transformation type can be set to the horizontal and vertical direction. , if only DC component transform coefficients exist in the current block, the horizontal transform type and vertical The direction change type can be set to DCT2.
[0409] The threshold value can be determined based on the size or shape of the current block. If the size of the current block is smaller than or equal to 32x32, set the threshold to 2. If the block is larger than 32x32 (for example, if the current block is 32x64 or 64x64), For a coding block of size 32), the threshold can be set to 4.
[0410] Multiple lookup tables can already be stored in the encoder / decoder The lookup tables are used to assign indexes to candidate transformation type combinations. At least one of the values, the type of conversion type combination candidate, or the number of conversion type combination candidates is different. It is possible.
[0411] The size, shape, predictive coding mode, intra prediction mode, and secondary transformation of the current block are and whether a transformation skip is applied to the adjacent block. A lookup table for the current block can be selected.
[0412] For example, if the size of the current block is 4x4 or less, or if the current block is an inter-predicted block, If the current block is coded by the first lookup table, the size of the current block is If the current block is larger than 4x4 or is coded using intra prediction, the second lookup is performed. A lookup table can be used.
[0413] Alternatively, information indicating one of a plurality of look-up tables may be stored in the bitstream. The decoder can signal the current block based on the information. A lookup table for
[0414] Other examples include the size, shape, predictive coding mode, and intra prediction mode of the current block. , whether or not a secondary transformation is applied, or whether a transformation skip is applied to an adjacent block; Based on the result, the index to be assigned to the conversion type combination candidate is adaptively determined. For example, if the current block size is 4x4, the number of bits allocated to the transform skip can be If the index being used is larger than the current block size (4x4), conversion is skipped. It can have a value smaller than the assigned index. If the block size is 4x4, assign index 0 to the transformation skip and If is greater than 4x4 and less than or equal to 16x16, the transformation skip is an index greater than 0 ( For example, you can assign index 1) if the current block is larger than 16x16. If the number of conversions is large, you can assign the maximum value (for example, 5) to the conversion skip index. do.
[0415] Or, if the current block is coded with inter prediction, the index into the transform skip is used. If the current block is coded using intra prediction, the variable You can assign a conversion skip an index greater than 0 (for example, index 1). can.
[0416] Or, if the current block is a 4x4 block coded using inter prediction , we can assign index 0 to the transformation skip. Meanwhile, If the current block is not coded using super prediction or is larger than 4x4, transform skipping is performed. You can assign a group an index greater than 0 (for example, index 1). do.
[0417] It is not possible to define and use conversion type combination candidates different from those listed in Table 7. For example, a transform skip can be performed in either the horizontal or vertical direction. On the other hand, a transform core such as DCT2, DCT8 or DST7 is applied. Here, the size of the current block (e.g., width and / or height), shape, predictive coding mode or intra-prediction mode. Determines whether to use transform skip as a transform type candidate for horizontal or vertical direction. It is possible.
[0418] Explicitly signal the index information to determine the transformation type of the current block The bitstream can signal information indicating whether the and then, at the sequence level, explicit transformations are applied to blocks coded with intra prediction. Information indicating whether type determination is allowed sps_explicit_intra_mts_ flag and / or explicit transform type for blocks coded with inter prediction Information indicating whether the decision is allowed sps_explicit_inter_mts_flag can be signaled.
[0419] If explicit conversion type determination is allowed, it shall be signaled by the bitstream. Determine the conversion type of the current block based on the index information tu_mts_idx On the other hand, if explicit conversion type determination is not allowed, Size, shape, and subblock-wise transformations are allowed, or subblocks containing non-zero transform coefficients are The position of the lock, whether a second transformation is performed or the application of the sub-partition intra-coding method The conversion type can be determined based on at least one of the following: The horizontal transformation type of the current block is determined based on the width of the current block. The vertical transformation type can be determined based on the height of the current block. If the width of the current block is less than 4 or greater than 16, the horizontal transformation type is DCT2. Otherwise, the horizontal transformation type is determined to be DST7. If the current block height is less than 4 or greater than 16, the vertical The transformation type can be determined to be DCT2. Otherwise, the vertical transformation type The type can be determined to be DST7, where the horizontal transformation type and the vertical transformation type are The thresholds that are compared with the width and height to determine the conversion type are the current block size, shape, and Alternatively, the determination may be based on at least one of the intra prediction modes.
[0420] Or, if the current block is a square with the same height and width, a horizontal transformation type And while the vertical transformation type is set to the same, the current block has different height and width. For a rectangle, the horizontal and vertical transformation types can be set differently. For example, if the width of the current block is greater than its height, the horizontal transformation time is The current transform type can be determined as DST7 and the vertical transform type as DCT2. If the block height is greater than the width, the vertical transformation type is determined to be DST7, and the water The horizontal transform type can be determined to be DCT2.
[0421] The number and / or type of conversion type candidates or the number and / or type of conversion type combination candidates are not specified. The types of conversions that can be made explicit can vary. If the determination of the transformation type is allowed, DCT2, DST7, and DCT8 are considered as possible transformation types. This allows for the horizontal transformation type and the vertical transformation type Each can be set to DCT2, DST8 or DCT8. If the type determination is not allowed, only DCT2 and DST7 can be used as transformation type candidates. Therefore, the horizontal and vertical transform types are DCT2 Or it can be determined to be DST7.
[0422] The decoder performs the inverse transform (second inverse transform) of the second transform, and then applies the inverse transform of the first transform to the result of the second inverse transform. As a result of performing the second inverse transformation and the first inverse transformation, , the residual signal for the current block can be obtained.
[0423] If the encoder performs transform and quantization, the decoder performs inverse quantization and inverse transform to obtain the residual. The decoder combines the predicted block and the residual block to obtain the A restore block for the current block can be obtained by
[0424] Once the reconstruction block of the current block is obtained, in-loop filtering is performed. op filtering reduces the loss of information that occurs during the quantization and encoding process. The in-loop filter is a deblocking filter. ing filter), Sample Adaptive Offset Filter Adaptive Offset filter (SAO) or Adaptive Loop Filter (Ad At least one of the following may be included: Hereafter, the restored block before the in-loop filter is applied is called the first restored block. The reconstructed block after the in-loop filter is applied is called the second reconstructed block.
[0425] Apply at least one of the deblocking filter, SAO or ALF to the first reconstruction block. Here, SAO or ALF is used to obtain the second recovery block. It can be applied after a filtering filter has been applied.
[0426] The deblocking filter reduces the block noise that occurs when quantization is performed on a block-by-block basis. To mitigate image quality degradation (blocking artifact) at the lock boundary To apply the deblocking filter, the first reconstruction block and the adjacent reconstruction Determine the Blocking Strength (BS) between blocks. It is possible.
[0427] FIG. 31 is a flowchart showing the process of determining the block strength.
[0428] In the example shown in FIG. 31, P indicates the first restored block, and Q indicates the adjacent restored block. Here, the adjacent reconstruction block can be the one adjacent to the left or top of the current block. do.
[0429] In the example shown in Figure 31, the predictive coding modes P and Q, and the non-zero transform coefficients are included. The difference between the motion vectors is less than the threshold. The block strength is determined by taking into account whether the value is greater than or equal to the threshold.
[0430] Depending on the block strength, it can decide whether to apply a deblocking filter. For example, if the block strength is 0, filtering may not be performed. .
[0431] SAO is a ringing phenomenon that occurs when quantization is performed in the frequency domain. SAO is the first restored video. This can be accomplished by adding or subtracting an offset that is determined by considering the pattern. The offset is determined by either Edge Offset (EO) or Includes band offset. EO is determined by the pattern of surrounding pixels. BO shows how to determine the offset of the current sample by using the This section describes how to apply a common offset to a set of pixels that have the same pixel offset. The brightness is divided into 32 equal intervals, and pixels with similar brightness values are grouped together. For example, four adjacent bands among the 32 bands can be grouped together. You can set it to a group and apply the same offset value to samples belonging to all four bands. do.
[0432] ALF applies a predefined filter to the first restored image or the restored image to which the deblocking filter has been applied. This is a method of generating a second restored image by applying a size / shape filter. The following equation 8 is An example of the application of ALF is shown below.
[0433]
number
[0434] Picture, coding tree unit, coding block, prediction block or variable You can select one of the predefined filter candidates for each conversion block. Each filter candidate can differ in either size or shape.
[0435] Figure 32 shows predefined filter candidates.
[0436] As shown in the example in Figure 32, a small diamond-shaped area of 5x5, 7x7 or 9x9 size is used. You can select at least one.
[0437] Only a 5x5 diamond shape can be used for the chroma component.
[0438] Panoramic video, 360-degree video or 4K / 8K UHD (Ultra High Definition) For real-time or low-delay encoding of high-resolution video such as (High Definition) video. Consider a method to divide a picture into multiple regions and encode / decode the multiple regions in parallel. Specifically, depending on the processing purpose, a picture can be divided into tiles or slices (or tabs). It can be divided into several groups (file groups).
[0439] A tile is the basic unit of parallel encoding / decoding. Each tile can be processed in parallel. The tiles can have rectangular shapes, or non-rectangular tiles can be allowed. Cut.
[0440] The bitstream contains information indicating whether non-rectangular tiles are allowed or not, or whether non-rectangular tiles exist. The signaling can be done by the stream.
[0441] When encoding / decoding a tile, you can set it so that data from other tiles is not used. It can remove encoding / decoding dependencies between tiles and support tile parallelism. Specifically, CABAC (Context Adaptive Binomial Acceleration) is used for each tile. Initialize the probability table for the (Nary Arithmetic Coding) context You can set it so that the in-loop filter is not applied at the tile boundaries. It is also possible to use data in other tiles as candidates for motion vector guidance. For example, data in other tiles can be used as merge candidates, motion vector predictions, etc. It can be set so that it is not used as a measurement candidate (AMVP candidate) or motion information candidate. It can also be set so that data in other tiles is not used in symbol context calculations. It can be determined.
[0442] Video encoding / decoding information can be signaled via the slice header. The information signaled via the slice header is the coding rules contained in the slice. It can be applied to a slice unit or a tile in general. You can also say.
[0443] FIG. 33 is a diagram illustrating a picture division method according to one embodiment of the present invention.
[0444] First, it is possible to determine whether to divide the current picture into multiple processing units (S331 0), where the processing unit can include at least one of a tile or a slice. For example, the current syntax indicates whether a picture is divided into multiple tiles or slices. no_pic_partition_flag signaled by bitstream The value of the syntax no_pic_partition_flag is 0. The current picture is divided into at least one tile or at least one slice. On the other hand, the value of the syntax no_pic_partition_flag A value of 1 indicates that the current picture is not divided into multiple tiles or multiple slices. vinegar.
[0445] If the current picture is determined to be one that is not divided into multiple processing units, The division process can be completed. In this case, the current picture is divided into one tile and one segment. It can be understood as consisting of rice (or tile groups).
[0446] Alternatively, the bitstream may include information indicating whether there are multiple tiles in the picture. The information can also be signaled by whether there are multiple tiles in the picture. or information specifying the number of tiles in the picture. It can be done.
[0447] If the current picture is determined to be divided into multiple processing units, the bitstream The tile division information can be signaled by the signaled tile division information. The picture can be divided into at least one tile based on the tile division information (S3 320).
[0448] If the current picture is divided into multiple tiles, merge the tiles or The slices can be determined by dividing the tile (S3330).
[0449] The tile division method and slice determination method according to the present invention will be described in detail below.
[0450] FIG. 34 shows an example where a picture is divided into multiple tiles.
[0451] A tile can contain at least one coding tree unit. The boundaries can be set to coincide with coding tree unit boundaries. In other words, a division form in which one coding tree unit is divided into multiple parts is not permitted. can.
[0452] When dividing a picture into multiple tiles, the height of adjacent tiles or the width of adjacent tiles The widths can be set to have the same value.
[0453] For example, as shown in the example in Figure 34, the height and / or width of tiles belonging to the same tile row The width of tiles belonging to the same tile column can be set to the same value. The tiles that belong to the same tile row are called a horizontal tile set, and the tiles that belong to the same tile row are called a vertical tile set. It can also be called a set.
[0454] Or, the width and / or height of the tile to be encoded / decoded is the same as the width and height of the previous tile. It is also possible to signal information indicating whether the height is set equal to the width and / or height.
[0455] Information indicating the division form of a picture can be signaled by the bitstream. The information can be a picture parameter set, a sequence parameter set or a sequence parameter set. It can be coded and signaled via a Rice header.
[0456] The information indicating the division form of the picture includes information indicating whether tiles are divided into equal sizes; The information may include at least one of information indicating the number of tile columns or information indicating the number of tile rows. Here, the number of tile columns indicates the number of vertical tile sets, and the number of tile rows is Indicates the number of horizontal tilesets.
[0457] The information indicating whether tiles are divided into uniform sizes is a 1-bit flag, uniform_ spacing_flag can be used to split the picture into evenly sized tiles. If it is determined that the tiles are to be used, the tiles adjacent to the right and / or bottom border of the picture (e.g. ) may have the same size.
[0458] If tiles are determined to be equally sized, a syntax value indicating the width of the tiles is used. The syntax for specifying the tile_cols_width_minus1 and tile height is: tile_rows_height_minus1 can be signaled.
[0459] The syntax tile_cols_width_minus1 creates evenly sized tiles. This indicates the number of coding tree unit sequences contained in the , minus 1. tile_rows_height_minus1 is the coordinate system containing evenly sized tiles. This indicates the number of Fing Tree Unit rows minus 1.
[0460] The last tile column is specified using the syntax tile_cols_width_minus1. The width of the last tile row can be equal to or less than the width specified by the The height is specified by the syntax tile_rows_height_minus1. For example, the index of the last tile column may be If the number of tiles is m, then the sum of the width of the current picture and the width of the tile columns from 0 to m-1 is You can set the width of the last tile column to the value minus the If the index of the current picture row is n, then the height of the current picture is 0 to n-1. The height of the last tile row can be set to the value obtained by subtracting the sum of the heights of the previous tile rows. That is, the width of the tile located at the right boundary of the current picture and / or the bottom boundary of the current picture. The height of each tile located in the same area is smaller than or equal to the width and / or height of each other tile. It is possible.
[0461] Dividing the picture using at least one vertical or horizontal line across the picture Therefore, each tile belongs to a different column and / or row. To determine the division form of the picture, the number of tile columns and / or the number of tile rows is determined. For example, by dividing a picture, The information num_tile_row_minus1 indicates the number of tile rows generated by the The information num_tile_column_minus1 indicating the number of tile columns is set to the bitstream. It can be signaled by the num_tile_row_ minus1 indicates the number of tile rows minus 1, and the syntax is num_ti le_column_minus1 indicates the number of tile columns minus 1.
[0462] In the example shown in Figure 34, there are four tile columns and three tile rows. As a result, num_tile_columns_minus1 is 3, and num_ti le_rows_minus1 can show 2.
[0463] The syntax num_tile_column_minus1 and and / or the syntax num_tile_rows_minus1 to indicate the number of tile rows If the syntax uniform_tile_spacing_flag has a value of 0, , i.e., the current picture is divided into tiles of equal height and width. If it is decided that the tile will not be divided into 2, the syntax num_ti indicates the number of tile columns. le_column_minus1 and / or the syntax num to indicate the number of tile rows _tile_rows_minus1 can be signaled.
[0464] The syntax for indicating the width of each tile column and the syntax for indicating the height of each tile row are bitwise It can be signaled by a stream. For example, tile_cols_ width_minus1[i] is the width of the i-th tile column, and tile_rows_h eight_minus[j] can indicate the height of the jth tile row.
[0465] The syntax tile_cols_width_minus1[i] is the ith tile column The value is the number of coding tree units that make up the last tag minus 1. For tile columns, use the syntax tile_cols_width_minus1[i] The signaling can be omitted. The width of the last tile column is the width of the current picture minus the previous It can be derived by subtracting the width of the tile column.
[0466] The syntax tile_rows_height_minus1[j] is the jth tile This indicates the number of coding tree unit lines that make up the line minus 1. For tile rows, use the syntax tile_rows_height_minus1[j The signaling of ] can be omitted. The height of the last tile row is the height of the current picture. This can be derived by subtracting the height of the previous tile row from the current tile row.
[0467] On the other hand, the information indicating the size of the coding tree unit is stored in the sequence parameter set. It can be signaled via a picture parameter set or a picture parameter set.
[0468] A tile can consist of at least one coding tree unit. The remaining tiles, excluding the tiles adjacent to the right or bottom boundary of the picture, are coded. It can be set so that it must not contain any area smaller than a tree unit. ,The boundaries of the tiles coincide with the boundaries of the coding tree units.
[0469] Depending on the picture division, tiles are placed in all areas except the picture boundary. They can have the same size, or horizontally adjacent tiles can have the same height. You can set the width of each tile to be the same, or you can set the width of vertically adjacent tiles to be the same.
[0470] The bitstream now includes information indicating whether the picture is divided into multiple tiles. As an example, the bitstream can be used to program the syntax si The single_tile_in_pic_flag can be signaled. If the single_tile_in_pic_flag is 1, the picture is currently multiplexed. It indicates that the image is not divided into multiple tiles. A flag of 0 indicates that the current picture is divided into multiple tiles.
[0471] If the current picture is determined to be divided into multiple tiles, the tile row and tile Information for determining the number of rows, information indicating whether the tiles are divided evenly, and information on tile columns and At least one of information for determining the size of the tile rows and the size of the tile rows can be encoded.
[0472] [Table 8]
[0473] The information for determining the size of the tiles can be coded and signaled. For example, the syntax element tile_width_minu indicates the width of the ith tile column. s1[i] and the syntax element tile_height_ that indicates the height of the i-th tile row minus1[i] can be encoded by the bitstream.
[0474] Specifies the number of tile columns whose widths are explicitly signaled in the current picture. Information for determining whether a particular channel is being used can be signaled by the bitstream. The syntax num to determine the number of tile columns for which the tile column width is signaled. _exp_tile_columns_minus1 is signaled by the bitstream. Syntax: num_exp_tile_columns_m inus1 is the number of tile columns whose width is signaled minus 1. There can be.
[0475] Determined based on the syntax num_exp_tile_columns_minus1 The signal encodes the syntax to specify the width of the tile columns by the specified number. For example, the syntax tile_width can be used to indicate the width of the ith tile column. width_minus1[i] can be signaled by the bitstream. The syntax tile_width_minus1[i] specifies the number of codes that a tile row contains. It can be the number of Fing Tree Unit columns minus one.
[0476] If the tile column index i is less than the number of tile columns whose width is explicitly signaled, If not, the width of the tile column is determined by the syntax signaled by the bitstream. It can be determined based on tile_width_minus1[i].
[0477] On the other hand, if the tile column index j is greater than or equal to the number of tile columns whose width is explicitly signaled, In the above case, the width of the tile column is the last signaled syntax tile_wid It can be determined based on th_minus1[l], where l is the width of the last indicates the index of the scanned tile column, which can be an integer less than j For example, the width of the current picture minus the width of the previous tile row is expressed as the syntax t If it is equal to or greater than ile_width_minus1[l] plus 1, the width of tile column j is set to the value obtained by adding 1 to the syntax tile_width_minus1[l] On the other hand, the width of the current picture minus the width of the previous tile row is used as the syntax. If the value is smaller than tile_width_minus1[l] plus 1, Set the width of tile column j to the difference between the picture width and the width of the previous tile column. can be done.
[0478] Table 9 shows the process for determining the width of a tile column.
[0479] [Table 9]
[0480] In Table 9, the variable PicWidthInCtbsY is the width of the coding tree that the picture currently contains. For example, the variable PicWidthInCtbsY is expressed as follows: It can be derived as follows:
[0481] [Number 9] PicWidthInCtbsY=Ceil(pic_width_in_luma_ samples / CtbSizeY)
[0482] The variable reminingWidthInCtbsY is the variable PicWidthInCtbs Y minus the cumulative tile column width. For example, if the index is i, For each tile column, remainingWidthInCtbsY is PicWidth Subtract the sum of the widths of tile columns 0 through i-1 from InCtbsY. It can be derived by
[0483] As shown in the example in Table 9, the variable uniformTileColWidth is specified at the end. dynamically signaled tile column width tile_column_width_minus Add 1 to 1[num_exp_tile_columns_minus1] Here, the residual coding tree unit in the current picture can be derived as follows: The variable remainingWidthInCtbY, which indicates the number of columns, is the uniform If it is greater than or equal to TileColWidth, the remaining area is the variable uniformTileCol It can be divided into the size of Width.
[0484] Meanwhile, a variable "rema" indicating the number of residual coding tree unit sequences in the current picture is iningWidthInCtbY is greater than the variable uniformTileColWidth If it is small, the remaining area can be set as it is to the last tile column.
[0485] On the other hand, if the tile column index j is greater than or equal to the number of tile columns whose width is explicitly signaled, In the above case, the width of the tile column is determined by the variables uniformTileColWidth and rem You can set it to a small value in the IntegratingWidthInCtbY.
[0486] That is, the width of the remaining tile columns, excluding the tile columns whose width is explicitly signaled, is is less than or equal to the width of the last explicitly signaled tile column. It can have.
[0487] Alternatively, the height of the tile rows in the current picture may be specified to indicate the number of tile rows to be signaled. Information for determining the number of frames can be signaled by the bitstream. The syntax for determining the number of tile rows for which the tile row height is signaled is: num_exp_tile_rows_minus1 is signaled by the bitstream. Syntax: num_exp_tile_rows_minu s1 is the number of tile rows whose height is signaled minus 1 It is possible.
[0488] Determined based on the syntax num_exp_tile_rows_minus1 The number of tile rows is signaled by encoding syntax to specify the height of the tile rows. For example, the syntax tile_h indicates the height of the ith tile row. eight_minus1[i] can be signaled by the bitstream. The syntax tile_height_minus1[i] specifies the number of columns that a tile row contains. The number of ingtree unit rows can be minus one.
[0489] The tile row index i is less than the number of tile rows whose height is explicitly signaled. If so, the height of the tile row is determined by the syntax signaled by the bitstream. The height can be determined based on the tile_height_minus1[i].
[0490] On the other hand, the tile row index j is the number of tile rows whose height is explicitly signaled. In the above cases, the height of the tile row is the last signaled syntax tile_h can be determined based on eight_minus1[l], where l is the last The index of the tile row whose height is signaled, and must be an integer less than j. can be done.
[0491] For example, the syntax is: current picture height minus previous tile row height If the value is equal to or greater than tile_height_minus1[l] plus 1, the tile row The height of j is the value obtained by adding 1 to the syntax tile_height_minus1[l] Alternatively, you can subtract the height of the previous tile row from the height of the current picture. The value obtained is greater than the value obtained by adding 1 to the syntax tile_height_minus1[l]. If it is smaller, the difference between the height of the current picture and the height of the previous tile row is used as the tile row height. It can be set to the height of j.
[0492] Table 10 shows the process for determining the height of a tile row.
[0493] [Table 10]
[0494] In Table 10, the variable PicHeightInCtbsY is the current coding that the picture contains. It indicates the number of tree unit rows. For example, the variable PicWidthInCtbsY is This can be derived as Equation 10.
[0495] [Number 10] PicHeightInCtbsY=Ceil(pic_height_in_lum a_samples / CtbSizeY)
[0496] The variable reminingHeightInCtbsY is the variable PicHeightInCt bsY minus the cumulative tile row height. For example, if the index is For tile row i, remainingHeightInCtbsY is the height of Pic HeightInCtbsY, the sum of the heights of tile rows 0 to i-1 can be derived by subtracting
[0497] As shown in the example in Table 10, the variable uniformTileRowHeight is set at the end. Explicitly signaled tile row height tile_row_height_minu Add 1 to s1[num_exp_tile_rows_minus1] to induce Here, the number of residual coding tree unit rows in the current picture is denoted by The variable remainingHeightInCtbY is the variable uniformTileRow If it is greater than or equal to Height, the remaining area is the variable uniformTileRowHeight can be divided into sizes
[0498] Meanwhile, the variable "rema" indicates the number of remaining coding tree unit rows in the current picture. iningHeightInCtbY is the variable uniformTileRowHeight If it is smaller, the remaining area can be set as it is in the last tile row.
[0499] On the other hand, the tile row index j is the number of tile rows whose height is explicitly signaled. In the above cases, the height of the tile row is determined by the variables uniformTileRowHeight and You can set the remainingHeightInCtbY to a smaller value.
[0500] That is, the height of the remaining tile rows, excluding the tile rows whose height is explicitly signaled, is , the height of the last explicitly signaled tile row is less than or equal to the width of the last tile row. can have the same value.
[0501] Table 11 shows the syntax for the number of tile columns whose widths are explicitly signaled, and the heights. Syntax statements include syntax indicating the number of tile rows that are explicitly signaled. This is an example of a table.
[0502] [Table 11]
[0503] On the other hand, the syntax loop_filter_across_tiles_enabl ed_flag is used to indicate the boundary of tiles within a picture that references a picture parameter set. Indicates whether to allow an in-loop filter to be applied. It may contain at least one of a blocking filter, an ALF, or an SAO. loop_filter_across_tiles_enabled_flag value A value of 1 indicates that the picture parameter set crosses a tile boundary within the picture that references it. On the other hand, the flag loop_f indicates that an in-loop filter can be applied. If the value of filter_across_tiles_enabled_flag is 0, In-loop filters at tile boundaries within a picture that references a picture parameter set This indicates that the rule does not allow the application of
[0504] Syntax: loop_filter_across_slices_enabled _flag is an integer that indicates the boundary of a slice within a picture that references a picture parameter set. Indicates whether to allow in-loop filtering. It may contain at least one of a blocking filter, an ALF, or an SAO. loop_filter_across_slices_enabled_flag A value of 1 indicates the boundary of a slice within a picture that references the picture parameter set. Indicates whether an in-loop filter can be applied across the loop. _filter_across_slices_enabled_flag value is 0 The in-loop at the boundary of a slice within a picture refers to a picture parameter set. Indicates what filters are not allowed to be applied.
[0505] Tiles can be split recursively. For example, splitting a tile into multiple tiles It can be divided.
[0506] Each of the multiple tiles generated by dividing a tile is called a subtile or brick. A brick can be a unit of parallel processing. For example, a brick can be The blocks in a brick can be coded / decoded independently of each other. When encoding / decoding, it is possible to set it so that data from other blocks is not used. The samples in other bricks are used as reference samples for intra prediction. Or, the data in other bricks can be merged. candidate, motion vector prediction candidate (AMVP candidate), or motion information candidate. Or you can use data from other bricks to control the symbol. It can not be used for text calculations.
[0507] FIG. 35 is a diagram for explaining the generation of bricks.
[0508] The tiles can be split horizontally to generate bricks. For example, see Figure 35. In the example shown, the tile belonging to the last tile column in the current picture is split into two bricks. This shows what will be done.
[0509] Assuming that raster scanning is applied to tiles, there is also raster scanning between bricks. For example, you can apply a scan to all bricks in a particular tile. After scanning, the next tile can be scanned, i.e., the brick is may have an equal status to the
[0510] Brick boundaries can coincide with coding tree unit boundaries, i.e. That is, at least one coding tree unit row in a tile is defined as a brick. This can be done.
[0511] The bitstream signals whether a tile is divided into multiple bricks. Table 12 shows the syntax that contains information to determine whether a tile can be split. This shows the stability.
[0512] [Table 12]
[0513] Brick division related information indicates whether there is at least one tile that can be divided into bricks. Information indicating whether the tile is divided into bricks, and the number of bricks in the tile The information may include at least one of information indicating the size of the brick or information indicating the size of the brick.
[0514] As an example, a syntax error indicating whether there is at least one tile that can be divided into bricks is Add the brick_splitting_present_flag to the bitstream. Thus, signaling is possible.
[0515] When the syntax brick_splitting_present_flag is 1 At least one tile can be divided into multiple bricks. If brick_splitting_present_flag is 1, multiple tiles are The brick_split_flag is used to further signal which bricks are split into. You can do this.
[0516] Syntax brick_splitting_present_flag is 0 is a tile divided into multiple bricks in a picture that references the current picture or PPS indicates that there is no brick. If t_flag is 0, brick_s indicates whether the tile is divided into multiple bricks. The coding of the split_flag can be omitted.
[0517] If it is determined that there is a tile in the current picture that is divided into multiple bricks , the syntax brick_spl indicates whether the ith tile is split into multiple bricks. It_flag[i] can be used to signal the ick_split_flag[i] has a value of 1, which means the tile index is i. Indicates that the tile is divided into two or more bricks. Syntax: brick_spl If the value of it_flag[i] is 0, there are multiple tiles with tile index i. Indicates something that is not divided into bricks.
[0518] If a tile is divided into multiple bricks, the information to determine the division of the tile is It can be signaled by the bitstream. For example, the syntax u uniform_brick_spacing_flag is signaled by the bitstream. Nulling is possible. Syntax: uniform_brick_spacing A _flag of 1 indicates that the bricks in the tile are of equal height. orm_brick_spacing_flag If the value is 1, the base height of the brick is The syntax brick_height_minus1 can be used to signal The syntax brick_height_minus1 is the code that makes up the brick. This indicates the number of encapsulation tree unit rows minus 1.
[0519] The remaining bricks in a tile, excluding the last brick, are specified using the syntax brick_height The base height is determined by ht_minus1. The bricks can be set in the area excluding the remaining bricks.
[0520] If the syntax uniform_brick_spacing_flag value is 0, The syntax num_brick_rows_m indicates the number of bricks in the i-th tile. inus1[i] and the syntax bric to indicate the height of the jth brick in the ith tile k_row_height_minus1[i][j] can be signaled The syntax num_brick_rows_minus1[i] is the number of rows that contain the ith tile. This indicates the number of bricks minus one.
[0521] For the last brick in the tile, use the syntax brick_row_height The signaling of _minus1[i][j] can be omitted. The height of a brick can be derived by subtracting the sum of the previous brick heights from the tile height. can.
[0522] The brick height syntax brick_height_minus1[i] is It can have a value less than the height of the tile containing the brick minus 1. For example, if the tile height is rowHeight, the syntax brick_height ight_minus1[i] can have values between 0 and rowHeight-2 where rowHeight is the number of coding tree unit rows that the tile contains. Indicates a number.
[0523] Alternatively, omit encoding the flag indicating whether the tiles are evenly divided and just use the number of bricks. and the height of the brick, and can be determined.
[0524] Alternatively, the height can be signaled explicitly using information specifying the number of bricks. It is also possible to determine the splitting aspect of the file. For example, a brick signaling height can be The syntax for determining the number of bits is num_exp_brick_minus1. It can be signaled by the stream. Syntax: num_exp_br ick_minus1 is the number of bricks signaling height minus 1. It is possible.
[0525] The number of minutes determined based on the syntax num_exp_brick_minus1 Only when encoding and signaling syntax for specifying brick heights For example, brick_height_minus1[i] is the height of the ith bridge. Indicates the height of the block.
[0526] If the brick index i is less than the number of bricks whose height is being signaled, The height of the brick is signaled by the bitstream: brick_hei On the other hand, the brick index can be determined based on If j is equal to or greater than the number of bricks whose height is to be signaled, the height of that brick is the last The same as the syntax brick_width_minus[l] signaled in where l is the index of the brick whose height was last signaled. indicates the number of bits and can be an integer smaller than j.
[0527] Tiles and bricks can be identified by tile indexes. A tile index can be assigned to each tile and brick in scan order. If one tile is divided into multiple bricks, each of the multiple bricks will have a tile. A rule index can be assigned.
[0528] In the following embodiments, the term 'tile' refers not only to a tile but also to a division of a tile. This may include tiles (i.e., subtiles or bricks) generated by do.
[0529] At least one tile can be defined as one processing unit. Multiple tiles can be defined in one slice. A slice is called a tile group. You can also do this.
[0530] Alternatively, one tile can be divided into multiple processing units. A tile can also be divided into multiple slices, where a slice has at least A tile can contain multiple slides. If the image is divided into slices, the bitstream should signal information indicating the height of each slice. Can be ringed.
[0531] Video encoding / decoding information can be signaled via the slice header. The information signaled via the slice header is the tiles and / or It can be applied to blocks in general.
[0532] Information indicating the slice type can be signaled by the bitstream. The information indicates how slices within the current picture are defined. The syntax rect_slice_flag indicates the slice type depending on the stream. It can be gunned.
[0533] The syntax rec_slice_flag slices tiles in raster scan order. Indicates whether a rectangular slice is defined. For example, rec_sli If ce_flag is 0, slices are defined in raster scan order of tiles. On the other hand, if rec_slice_flag is 1, the slice is defined as a rectangle. Indicates what is being done.
[0534] The two methods for determining the slices are described in detail below.
[0535] The definition method based on raster scan is to define at least one or more After identifying the tiles, define at least one of the identified tiles as a slice. In the case of a definition method based on raster scan, one or more consecutive tiles You can define a slice (etc.) where consecutive tiles are raster scanned. When applying raster scan slices, non-rectangular A slice of can also be generated.
[0536] 36 and 37 are diagrams showing examples in which slices are defined in raster order.
[0537] For example, in the example shown in FIG. 36, the first slice, slice0, contains three tiles. Assuming that the first slice is slice0, the order of raster scan is Tile0 to TileT. The second slice, slice1, can be defined as a slice containing six tiles. The second slice, slice1, contains Tile in raster scan order. The last slice, slice2, can be defined as a slice containing tiles 3 to 8. The remaining tiles Tile9 to Tile11 can be included in star scan order.
[0538] When defining slices in raster scan order, information indicating the number of tiles each slice contains is required. For the last slice, the number of tiles the slice contains can be signaled. The signaling of the information indicating the number can be omitted.
[0539] If a slice contains multiple tiles, the width or height of the tiles contained in the slice must be different from each other. For example, the second slice slice1 contains tiles Ti The height of le3 showed different from the remaining tiles.
[0540] The rectangular slice definition method is a division method that allows only rectangular slices. When applying the definition method, tiles located in the square of a slice must belong to the same row or the same column. It becomes like this.
[0541] FIG. 38 shows an example in which only rectangular slices are allowed.
[0542] As shown in the example in Figure 38, the fourth slice, slice3, has Tile5 and Tile6. , Tile 9, and Tile 10. As in the example shown, a slice may contain multiple tiles. When a slice is created, a rectangle is created with the top left tile and bottom right tile as its two vertices. It can be defined in one slice.
[0543] Slice boundaries can coincide with picture boundaries and / or tile boundaries. Set the left or top boundary of the slice to the picture boundary, or The side or top border can be set to the border of the tile.
[0544] Or, if you apply the rectangular slice definition method, you can divide one tile into multiple rectangular slices. It can also be divided into
[0545] When applying the rectangular slice definition method, it is possible to determine whether the picture consists of a single slice. For example, information indicating the number of slices in a picture can be signaled. The syntax one_slice_in_pic_flag indicates whether there is one slice in the picture. It can be signaled by the stream. When pic_flag is 1, the picture consists of one slice. On the other hand, if the flag one_slice_in_pic_flag is 0, the picture is small. The flag one_slice_i indicates that the image consists of at least two slices. If the value of n_pic_flag is 0, no further slice configuration information can be signaled. As an example, Table 13 shows the syntax one_slice_in_pic_f 10 shows an example of a syntax table including lag.
[0546] [Table 13]
[0547] As shown in the example, if one_slice_in_pic_flag is 1, the slice Information about the slice's composition (e.g., the index of the tile that the slice contains) The tag top_left_brick_idx[i] and / or the tag that the first slice contains The syntax bott indicates the index difference between the tile and the tile contained in the second slice. om_right_bric_idx_delta[i], etc.) In other words, one_slice_in_pic_flag is used for the slice configuration. This can be used to determine whether information about the
[0548] The picture may also represent a sub-picture. A picture may represent at least one sub-picture. Sub-picture division related information is signaled at the sequence level. As an example, signaling can be performed via a sequence parameter set. The sub-picture split related information that is stored in the sequence parameter set is It can be applied to all pictures in common.
[0549] The sub-picture division related information is information indicating whether a picture is divided into multiple sub-pictures. information indicating the number of sub-pictures, information indicating the size of the sub-pictures, or information indicating the number of sub-pictures It may contain information indicating whether it functions as an independent picture.
[0550] The syntax one_s indicates whether each subpicture consists of a single slice. The lice_in_pic_flag can be signaled.
[0551] Or, at the sequence or picture level, each sub-picture consists of a single slice. The syntax one_slice_in_pic_flag is used to indicate whether For example, the flag one_slice_in_pic_fl If ag is 1, all subpictures in the current picture consist of a single slice. On the other hand, if the flag one_slice_in_pic_flag is 0, , at least one sub-picture in the current picture is composed of multiple slices. show.
[0552] If a picture is determined to consist of multiple slices, the slices within the picture The number of packets can be signaled by coding a syntax indicating the number of packets. The bitstream uses the syntax num_s to indicate the number of slices in a picture. lices_in_pic_minus2 can be signaled. num_slices_in_pic_minus2 is the number of slices in the picture This allows the decoder to use the syntax num Add 2 to the value indicated by _slices_in_pic_minus2 to determine the total number of slices. It can be determined.
[0553] Syntax num_slices_in_pic_minus2 instead of picture The syntax num_slices_ indicates the number of slices in the It is also possible to encode in_pic_minus1.
[0554] When applying the rectangular slice definition method, to determine which tiles each slice contains, Information can be signaled to identify the tiles that each slice contains. The information is used to identify at least one of the first tile or the last tile of the slice. The order between tiles can be determined based on a predetermined scan order. In raster scan order, the first tile is the tile at the top left corner of the slice. The last tile indicates the tile located at the bottom right corner of the slice.
[0555] The index of the tile located at the top left corner of the slice or the index of the tile located at the bottom right corner of the slice. The bitstream may include information to identify at least one of the tile indices. As an example, the image of the tile located at the top left corner of the slice can be signaled as follows: The syntax for identifying the index is top_left_tile_idx or sl The syntax botto is used to identify the index of the tile located at the bottom right of the chair. At least one of m_right_tile_idx and m_right_tile_idx must be signaled by the bitstream. For the last slice, you can use the timeline at the top left corner of the slice. The syntax for identifying the index of the tile located at the bottom right corner of the slice. Omitting at least one encoding of the syntax for identifying the index of The remaining area in the current picture, excluding the area occupied by the previous slice, is used as the last slice. It can be set to a chair.
[0556] For example, in the example shown in FIG. 38, for slice 0, slice 1, and slice 2, The index of the tile located at the top left corner of each slice is top_left_til e_idx and the index of the tile located at the bottom right of each slice, bottom_ri ght_tile_idx can be signaled, while the last For slice3, top_left_tile_idx and bo The coding of bottom_right_tileidx can be omitted. The index of the top left tile of the last slice, slice3, is sl The tile located at the top left corner of the remaining area excluding slice0, slice1, and slice2 The index of the bottom right tile of slice3 is set to the index of the The index of the tile located at the bottom right corner of the image (or the tile located at the bottom right corner of the picture) can be set to.
[0557] Alternatively, the difference information to identify the index of the tile included in the slice can be coded. For example, the tile located at the top left corner of a slice can be The difference between the index of the tile at the bottom right of the slice and the index of the tile at the bottom right of the slice. The information can be signaled by the bit stream. A symbol to identify the index of the tile located at the top left corner of the slice. The tile at the top left corner of the slice is the tile top_left_tile_idx[i]. The difference between the index of the tile at the bottom right of the slice and the index of the tile at the bottom right of the slice is The syntax shown is bottom_right_tile_idx_delta[i]. The index of the bottom right tile of the i-th slice is top_ left_tile_idx[i] and bottom_right_tile_idx_ delta[i] can be derived together. For the last slice, The syntax for specifying the index of the tile located at the top left corner of the slice or the index of the tile located at the top left corner of the slice The index of the tile located at the bottom right corner of the slice. At least one coding of the syntax indicating the difference can be omitted. The remaining area excluding the area occupied by the previous slices in the buffer can be set as the last slice. can.
[0558] Or, horizontal tile index difference information or vertical tile index difference At least one of the pieces of information can be coded and signaled. The index difference information is the index of the first tile and the tile in the same row as the first tile. The vertical tile index can indicate the difference between the index of the rightmost tile included in the The index difference information is the index of the first tile and the tile in the same column as the first tile. The difference between the index of the bottommost tile included can be shown.
[0559] The position of the slice can determine the type of difference information that is coded. For slices adjacent to the right or bottom border of the picture, the horizontal time is The differential vertical index information is coded and signaled. Instead of the information indicating the index difference between the top left tile and the top right tile, Instead, the horizontal tile index difference information or the vertical index difference information is coded. By converting it into a binary digit, the amount of bits can be reduced.
[0560] Or, if a picture is divided into at least one slice row, For slices adjacent to the left boundary, the index between the top left tile and the bottom right tile is Slices belonging to the same row have the same height. It can be set to
[0561] The index of the tile contained in the first slice and the index of the tile contained in the second slice It is also possible to encode and signal the difference information between the first slice and The first and second slices are determined in scan order, and the tiles occupied by each slice are different. can be done.
[0562] As an example, the tiles constituting the first slice and the tiles constituting the second slice may be different. If the slice is a 2nd slice, the index of the 2nd slice is the index i of the 1st slice plus 1. It can be.
[0563] Or, if the first tile is divided to contain multiple slices, The first slice contains the first tile and the second tile, which is the tile next to the first tile in scan order. The difference information between the second slice or the second slice included in the second tile is encoded. Here, the first slice or the most recent slice among the slices included in the first tile can be The difference information can be coded for the subsequent slices only.
[0564] The tiles used to derive the difference information between the first slice and the second slice are The edge of the image can be located at the top left, top right, bottom right, bottom left or center of the image.
[0565] Table 14 shows an example of a syntax table that includes differential information.
[0566] [Table 14]
[0567] For example, the top left tile of the i-th slice and the previous slice (i.e., the i-1th slice) The syntax top_left_b indicates the index difference with the top left tile of the image. Signaling rick_idx_delta[i] via the bitstream can be done.
[0568] Based on the difference information, the position of the top left tile in the i-th slice can be determined. Specifically, the index of the top left tile of the i-th slice is the index of the top left tile of the i-1-th slice. Edge tile index and syntax top_left_brick_idx_delt a[i] can be derived together. Equation 11 is the image of the top left tile of the i-th slice. This shows an example of deriving an index.
[0569] [Number 11] TopLeftBrickIdx[i]=TopLeftBrickIdx[i-1] +top_left_brick_idx_delta[i]
[0570] In the above formula 11, TopLeftBrickIdx[i-1] is the left Indicates the index of the top tile.
[0571] For the first slice (i.e., the slice with index i=0), the previous slice The syntax top_left_brick_idx_delta indicates the difference information between the For the first slice, the coding of [i] can be omitted. The syntax bottom_ri indicates the index difference between the tile and the top right tile. ght_brick_idx_delta[i] can be coded and signaled. Cut.
[0572] Table 15 is an example showing the process of identifying the slice to which each tile belongs using the difference information. .
[0573] [Table 15]
[0574] NumBricksInSlice[i] indicates the number of tiles that slice i contains. pLeftBrickIdx[i] indicates the index of the top left tile of slice i. botRightBkIdx indicates the index of the top right tile. d[j] indicates the index of the tile row to which tile j belongs. BrickRowBd[j ] indicates the index of the tile row to which tile j belongs. p[j]=i indicates that tile j is added to slice i.
[0575] Alternatively, the slice may be divided into two slices using information specifying at least one of the width or height of the slice. For example, the syntax slice _width_in_tiles_minus1[i] or the height of the i-th slice The syntax slice_height_in_tiles_minus1[i] At least one of these can be signaled by the bitstream.
[0576] The syntax slice_width_in_tiles_minus1[i] is the i-th This indicates the number of tile columns in the first slice minus 1. ce_height_in_tiles_minus[i] is contained in the ith slice This indicates the number of tile rows minus 1.
[0577] The i-th slice is slice_width_in_tiles_min Tile sequences and syntax slices, the number of which is determined based on us1[i] The number of tiles is determined based on _height_in_tiles_minus1[i]. The i-th tile column can consist of only one tile row, where the top left tile of the i-th tile column is , the increment determined based on top_left_brick_idx_delta[i] The index value can be:
[0578] Alternatively, for slices adjacent to the left border of the picture only, indicate the slice height. The syntax slice_height_in_tiles_minus1[i] is used. For other slices, use the syntax slice_height_i The encoding of n_tiles_minus1[i] can be omitted. The coding of lice_height_in_tiles_minus[i] is omitted. The height of a slice is the number of slices in the same row that are adjacent to the left boundary of the current picture. It can be set to the same height as the rice.
[0579] Index of the top left tile of the first slice: TopLeftBrickIdx[0] can be set to 0. This will cause the second slice (i.e., index i For slices with 1, use the syntax top_left_brick_idx_delt a[i] effectively has the same value as the index of the top left tile. For the second slice, use the syntax top_left_brick_idx_ Instead of delta[i], use the syntax top_left_brick_idx[i ] can be signaled, where top_left_brick_idx[ i] indicates the index of the top left tile of the i-th slice.
[0580] Another example is the syntax top_left_brick_idx_delta[i ] to the difference between the first tile of the i-th slice and the first tile of the i+1-th slice You can also set the index of the top left tile of the i+1-th slice. , the index of the top left tile of the i-th slice and signaling for the i-th slice The syntax used is top_left_brick_idx_delta[i] It can be guided by the syntax top_left_brick_idx_del If ta[i] indicates the difference information between the i-th slice and the i+1-th slice, then the last For slices, use the syntax top_left_brick_idx_delta[ i] can be omitted.
[0581] Slices can also be determined using a syntax table such as Table 16 below.
[0582] [Table 16]
[0583] The flag rect_slice_flag indicating the slice type is coded, and the flag re If ct_slice_flag is 1, the syntax indicates the number of slices in the picture. num_slices_in_pic_minus1 can be coded.
[0584] If a picture is determined to contain multiple slices, a syntax indicating the width of each slice is used. slice_width_in_tiles_minus1[i] and each slice The syntax for the height is slice_height_in_tiles_minus1. [i] can be coded and signaled.
[0585] Also, the index of the tile included in the i-th slice and the index of the tile included in the i+1-th slice The syntax tile_idx_delta indicates the difference between the index of the tile You can also signal [i]. For the last tile, use the syntax til The encoding of e_idx_delta[i] can be omitted.
[0586] The encoder uses the syntax tile_idx_del to indicate the difference in tile index. Determine whether ta[i] can be coded, and based on the determination, Flag tile_idx_delta_pre indicating whether delta[i] is encoded The sent_flag can be coded. Syntax tile_idx_del ta[i] is the value of the flag tile_idx_delta_present_flag It can be coded if and only if it is 1.
[0587] A tile can be divided into multiple slices. For example, a tile can be divided horizontally into It can be split into multiple slides in different directions.
[0588] If a slice is determined not to contain multiple tiles, the tiles are split into multiple slices. You can decide whether to split it. For example, the syntax slice_width _in_tiles_minus1[i] and syntax slice_height_ If in_tiles_minus1[i] are both 0, the slice has only one tile. or one tile is divided into multiple slices.
[0589] The syntax slice_width_in_tiles_minus1[i] and The syntax slice_height_in_tiles_minus1[i] is 0. In this case, it is possible to signal information indicating whether a tile is divided into multiple slices. Cut.
[0590] For example, the syntax num_slices_ indicates the number of slices a tile contains. in_tile_minus1[i] can be signaled. um_slices_in_tile_minus1[i] is the number of slices that the ith tile contains This indicates the number of devices minus 1.
[0591] Alternatively, information indicating the number of slice heights must be explicitly signaled. The syntax num_exp_slices_in_tile[i] indicates the bitstream It can be signaled by the stream. Syntax: num_exp_slic es_in_tile[i] is equal to or less than the number of slices the tile contains It can have:
[0592] If the syntax num_exp_slices_in_tile[i] is 0, Indicates that the file is not divided into multiple slices. Syntax num_exp_sli ces_in_tile[i] > 0 indicates that the tile can be divided into multiple slices. Show what you can do.
[0593] The number of slices in the tile is specified by the syntax num_exp_slices_in_tile[i]. It is possible to signal information indicating the height of the rice. For example, the syntax n If um_exp_slices_in_tile is greater than 1, the jth slice in the tile The syntax for the slice height is exp_slice_height_in_ctu_m. inus1[j] can be signaled.
[0594] If the slice index j is less than the number of slices whose height is explicitly signaled, In this case, the width of slice j is signaled by the bitstream using the syntax Determined based on exp_slice_height_in_ctu_minus1[j] On the other hand, the slice index k is used to explicitly signal the height. If the number of slices is greater than or equal to the number of slices in the last signaled syntax, the height of slice k is exp_slice_height_in_ctu_minus1[l] where l is the index of the last slice whose height was signaled. indicates the number of bits and can be an integer smaller than k.
[0595] For example, the height of the tile minus the height of the previous slice is used in the syntax ex p_slice_height_in_ctu_minus1[l] plus 1 or more In the above case, the height of slice k is calculated using the syntax exp_slice_height_in_ ctu_minus1[l] can be set to a value obtained by adding 1 to the tile. The height minus the height of the previous slice is calculated using the syntax exp_slice_hei If the value is smaller than ght_in_ctu_minus1[l] plus 1, The height of slice k can be set to the difference value obtained by subtracting the height of the previous slice from the height of the previous slice. Cut.
[0596] That is, the height of the remaining slices, excluding slices whose height is explicitly signaled, is , or is the height of the last slice among those whose height is explicitly signaled? They can have the same value.
[0597] In the above example, the picture is a single slice only if the rectangular slice definition method is applied. The syntax one_slice_in_pic_fla indicates whether the slice consists of a slice The example shows what determines whether g can be coded. Contrary to the example, syntax one _slice_in_pic_flag is coded first, then the flag one_slice The value of _in_pic_flag determines the syntax of rect_slice_flag. It is also possible to determine whether encoding is possible. If the value of flag is 1, encoding of rect_slice_flag can be omitted. Cut.
[0598] If the number of tile columns in the current picture is 1, use the syntax slice_width_ The coding of in_tiles_minus1 can be omitted. If the number of tile rows in is 1, use the syntax slice_height_in_til The encoding of es_minus1 can be omitted.
[0599] Alternatively, at least one of information indicating the width of a slice and information indicating the height of a slice The encoding can be omitted.
[0600] As an example, the syntax slice_width_in_til indicates the slice width. The coding of es_minus1 is omitted, and the distance to the tile at a given position in the adjacent slice is used as the slice You can set the width of the grid using the syntax top_left_br ick_idx_delta[i] finds the i+1th slice adjacent to the i-th slice on the right The width of the i-th slice is the width of the i-th slice. The x-coordinate of the top-left tile in the i+1th slide (for example, the x-coordinate of the top-left sample) the x-coordinate of the top-left tile in the sample (e.g., the x-coordinate of the top-left sample) It can be induced.
[0601] Or, use the syntax slice_height_in_ti to indicate the slice height. Omit coding of les_minus1 and use the distance to a tile at a given position in an adjacent slice as It can be set to the width of the slice. Specifically, the syntax top_left_b rick_idx_delta[j-1] determines the jth slice at the bottom The height of the i-th slice is the top left tile of the i-th slice. The y-coordinate of the top-left tile in the slice (e.g., the y-coordinate of the top-left sample) and the j-th slice The difference between the y-coordinate of the top-left tile in the image (for example, the y-coordinate of the top-left sample) It can be guided.
[0602] Or, information indicating whether difference value information is used to define rectangular slices. can be signaled by the bitstream. The tile_idx_delta_present_flag indicating availability is set to bitstream. It can be signaled by the stream. Syntax tile_idx_del A value of 1 in ta_present_flag indicates the difference in tile index. This shows how to encode and signal the syntax. For example, the syntax ti If the value of le_idx_delta_present_flag is 1, the i-th slice is the syntax slice_width_in_tiles_m that indicates the size of the slice. inus1[i] and syntax slice_height_in_tiles_mi nus1[i] and the position of the top left or top right tile in the slice. The difference value information (e.g., top_left_brick_idx_delta[i-1 ] or bottom_right_brick_idx_delta[i]) It can be defined as:
[0603] If the value of the syntax tile_idx_delta_present_flag is 0, In this case, the i-th slice is the slice size indicated by the syntax slice_width_i n_tiles_minus1[i] and syntax slice_height_in It can be defined by _tiles_minus1[i]. If the value of e_idx_delta_prsent_flag is 0, the left side of the current picture The slice adjacent to the boundary on the right side is the same as the slice adjacent to the left side. This allows you to set the current picture to have the same height as the left border of the current picture. Signals slice height information only for the overlapping slices, and For slices that are not adjacent to the left boundary of can be omitted.
[0604] Signals information indicating the size of a slice based on the index of the tile within the slice. As an example, Table 17 shows the tile index within a slice. The syntax determines whether or not to signal information that determines the size of the slices based on the This shows the structure.
[0605] [Table 17]
[0606] In Table 17, the variable tileIdx indicates the index of the tile that the ith slice contains. Specifically, the index of the tile at the predefined position in the ith slice is set as the variable tileI. dx. The tile at the predefined position can be set to the top left tile. .
[0607] The variable NumTileColumns indicates the number of tile columns the picture contains. The index of the top-left tile in the ith slice and the variable NumTileColumns The tile to which the top-left tile belongs is determined based on the modular arithmetic (%) between the value of As an example, the position of the result value n indicates that the top left tile belongs to the tile column with index n.
[0608] If the top left tile in the slice belongs to the rightmost column of tiles in the picture, then the width of the slice The syntax slice_width_in_tiles_minus1[i] indicates Signaling can be omitted. For example, if the result of a modular operation is If the value is equal to the number of tile columns in NumTileColumns minus 1, , sign of syntax slice_width_in_tiles_minus1[i] In this case, the encoding / decoding can be omitted. The value of in_tiles_minus1[i] can be considered to be 0.
[0609] The index of the top-left tile in the ith slice and the NumTileColumns variable By dividing the tile row number by the number of tiles in the top left corner, the position of the tile row to which the top left tile belongs can be determined. For example, if the quotient of the division is m, the upper left tile is included in the tile row with index m. Indicates what is included.
[0610] If the top left tile in a slice belongs to the bottom row of tiles in the picture, The syntax slice_height_in_tiles_minus[i] indicates the size As an example, if the result of the division is a time within a picture, the signaling of If the value is equal to the number of tile rows in NumTileRows minus 1, Encoding / Decoding of slice_height_in_tiles_minus1[i] can be omitted. In this case, the syntax slice_height_in_t The value of iles_minus1[i] can be considered to be 0.
[0611] The top left tile in the slice belongs to the rightmost column and bottommost row in the picture. In this case, the syntax slice_width_in_tiles_minus1[i] and and the syntax slice_height_in_tiles_minus1[i] The encoding of the other syntax can be omitted. In this case, the value of both syntaxes is 0. It can be considered.
[0612] If the top left tile in the slice is not in the bottom row of the picture, The difference between the tile indexes of the top left tile belongs to the leftmost column in the picture. The syntax for indicating the height of a slice, taking into account at least one of the information encoded in the slice. Encoding / Decoding of slice_height_in_tiles_minus1[i] You can decide whether to accept it or not.
[0613] For example, even if the top left tile in a slice is not in the bottom row of the picture, , if the tile index delta is encoded (e.g., tile_idx_delta _present_flag is 1), the syntax slic indicates the slice height Skip encoding / decoding of e_height_in_tiles_minus1[i] It is possible.
[0614] Or, even if the top-left tile in the slice does not belong to the bottom row in the picture, If the tile does not belong to the leftmost column in the slice, use the syntax slice_height The encoding / decoding of _in_tiles_minus1[i] can be omitted.
[0615] If the top left tile in the slice does not belong to the bottom row in the picture, but the syntax s Coding / decoding of lice_height_in_tiles_minus1[i] is omitted. If omitted, the syntax is the height of the previous slice, slice_height_in Can be set equal to _tiles_minus[i-1].
[0616] Table 18 shows the syntax slice_width_in_tiles_minus1[i ] and the syntax slice_height_in_tiles_minus1[i] We present the semantics for
[0617] [Table 18]
[0618] In the example in Table 17, the syntax indicates whether information indicating the difference in tile index is encoded. The tile_idx_delta_present_flag is currently included in the picture. This example shows that encoding / decoding is performed when the number of slices is 1 or more.
[0619] If the number of slices in a picture is 2, divide the picture horizontally or vertically. This produces two rectangular slices.
[0620] FIG. 39 shows an example in which a picture is made up of two slices.
[0621] (a) of FIG. 39 shows an example where a picture is divided horizontally, and (b) of FIG. 39 shows an example where a picture is divided horizontally. An example where the image is split vertically is shown.
[0622] As in the example shown, if the picture contains only two slices, then the slice width is The two slices are separated by syntax or by the syntax indicating the slice height. It is possible.
[0623] For example, when dividing a picture horizontally as shown in (a) of Figure 39, , the syntax slice_width_in_t indicates the width of the slice with index 0 iles_minus1[0] and the syntax for indicating the height of the slice at index 0 Slice based on slice_height_in_tiles_minus1[0] 0 can be specified. For slice 1, the The coding / decoding of the syntax is omitted, and the remaining area in the picture, excluding slice 0, is used as the slice. The index of the top left tile of slice 1 can be set to The number of tile rows and columns in slice 0 is multiplied by 1 to derive the value. It is possible.
[0624] As shown in the example in Figure 39(b), when dividing a picture vertically, the index The syntax slice_width_in_tiles_m indicates the width of the slice in slice 0. inus1[0] and the syntax slice_ which indicates the height of the slice with index 0 Identify slice 0 based on height_in_tiles_minus1[0] For slice 1, the syntax for determining the size of the slice is The remaining area in the picture excluding slice 0 is set to slice 1. The index of the top left tile of slice 1 can be set as It can be derived as well as the number of tile rows involved.
[0625] Thus, if a picture contains only two slices, the difference in tile indexes Even if you omit encoding the minute information, the index of the top left tile in all slices This allows us to derive the following: if the number of slices in a picture is two or less, In this case, the syntax tile_i indicates whether or not tile index difference information can be coded / decoded. Omit encoding / decoding of dx_delta_present_flag and set its value to 0. This allows you to calculate tile_idx_delta[i] for each slice. The encoding / decoding can also be omitted.
[0626] Table 19 shows that if the current picture contains two or fewer slices, the syntax tile_ Syntax to omit encoding / decoding of idx_delta_present_flag The structure is shown.
[0627] [Table 19]
[0628] As in the example in Table 19, the syntax tile_idx_delta_present_ flag is the syntax num_slices_in_pic_minus1 is 1 or more It can be encoded / decoded only if it is large.
[0629] Even if the number of tile columns or the number of tile rows in a picture is 1, the tile index is The position of the top left tile in each slice can be identified without using index difference information. can.
[0630] FIG. 40 is a diagram illustrating an example in which the number of tile columns or tile rows in a picture is one.
[0631] FIG. 40(a) illustrates a case where a picture includes one tile row. (b) illustrates the case where the picture contains one tile row.
[0632] If the picture contains one tile column, the index of the top-left tile of the slice is It can be guided based on the slice height. For example, the For example, if the first tile is divided into two slices, the first of the two slices The syntax slice_width_in_ indicates the width of the first slice slice0. tiles_minus1[0] and slice_width_ Set in_tiles_minus1[0] to 0. Second slice sli Since ce1 belongs to the same tile as the first slice slice0, For ce1, use the syntax slice_width_in_tiles_minu s1[i] and the syntax slice_width-in_tiles_m to indicate the height The encoding / decoding of inus1[i] can be omitted.
[0633] The left tile index of the third slice was previously signaled to the slice. It can be set to the number of tile rows. For example, for slice 0, signaling The syntax used is slice_height_in_tiles_minus1[0] From this, it can be seen that one tile row is made up of slices, so The index of the top left tile row of chair 2 can be set to 1.
[0634] The index of the top left tile row of slice 3 is calculated based on the height of the tile row in the previous slice. As an example, the syntax signaled for slice 0 is slice_height_in_tiles_minus1[0] and slice 2 The syntax signaled for slice_height_width_in _tiles_minus1[2] indicates that a total of three tile rows are organized from the slice. Therefore, the index of the top left tile row of slice 3 is set to 3. It is possible.
[0635] That is, if the picture contains one tile column, the number of tile rows occupied by the previous slice The number can be determined as the top left tile index of the next slice.
[0636] If the picture contains one tile row, the index of the top-left tile in the slice is It can be derived based on the width of the slice. For example, in the example shown in FIG. 40(b), If the first tile is set to one slice, the first slice slice The syntax slice_width_in_tiles_minus1[ indicates a width of 0. 0] and the syntax slice_width_in_tiles_minu to indicate the height Set s1[0] to 0.
[0637] The left tile index of the second slice is the same as that signaled for the previous slice. It can be set to the number of tile columns. For example, for slice 0, The syntax slice_width_in_tiles_minus1[0] or Therefore, it can be recognized that one tile row is made up of slices. The index of the top left tile row of table 1 can be set to 1.
[0638] The index of the top left tile row of slice 2 is based on the height of the tile column of the previous slice. As an example, the syntax signaled for slice 0 is slice_width_in_tiles_minus1[0] and slice 1 Syntax signaled for slice_width_width_in_t tile_minus1[1] tells us that a total of three tile rows are made from the slice. Therefore, the index of the top left tile row of slice 2 is set to 3. It is possible.
[0639] That is, if the picture contains one tile row, the previous slice occupies one tile column. The number can be determined as the top left tile index of the next slice.
[0640] Thus, if a picture consists of only one column or one row of tiles, Identify the index of the top left tile of each slice without tile index difference information This allows the number of tile columns or tile rows in a picture to be reduced to 1. In this case, the syntax tile_ indicates whether tile index difference information can be coded / decoded. Omit encoding / decoding of idx_delta_present_flag and set its value to 0 This allows you to calculate tile_idx_delta[i ] encoding / decoding can also be omitted.
[0641] Table 20 shows the syntax t when the number of tile columns or tile rows in the current picture is 1. ile_idx_delta_present_flag encoding / decoding omitted The syntax structure is shown below.
[0642] [Table 20]
[0643] As in the example in Table 20, the syntax tile_idx_delta_present_ flag is the number of tile columns NumTileColumns or the number of tile rows NumT It can be coded only if ileRows is greater than 1.
[0644] Based on coding tree unit index instead of tile index. It is also possible to define slices using
[0645] In the example above, if you define a slice by ordering the tiles in raster scan order, As another example, the tiles are scanned in a vertical, horizontal or diagonal scan order. Slices can also be defined by assigning an order.
[0646] The embodiments described mainly in the decoding process or the encoding process are applied to the encoding process or the decoding process. The embodiments described in the given order are included in the scope of the present invention. It is within the scope of the present invention to change the order of the steps to something other than the above.
[0647] Although the above-described embodiments have been described based on a series of steps or flow charts, this is not a There is no chronological order restriction, and the tasks may be performed simultaneously or in a different order as necessary. In the above-described embodiment, the components constituting the block diagram (for example, the units Each of the components (e.g., modules) may be implemented by a hardware device or software. Alternatively, multiple components may be combined and implemented in a single hardware device or software. The above-described embodiments may be performed via various computer components. The program is embodied in the form of a program instruction word that can be used to perform the above-described operations and is recorded on a computer-readable recording medium. The computer-readable recording medium may include a program instruction code, a data file, and a The computer-readable storage medium may include, alone or in combination, a computer-readable code, a data structure, and the like. Examples of media include magnetic media such as hard disks, floppy disks, and magnetic tapes; Optical recording media such as D-ROM and DVD, floptical disks magneto-optical media such as disks, and and ROM, RAM, flash memory, etc. to store and execute program instructions. The hardware device may be specially configured to perform the functions of the present invention. to operate as one or more software modules to perform processing by can be configured and vice versa. [Industrial Applicability]
[0648] The present invention is applicable to electronic devices that encode / decode video.
Claims
1. Divide the picture into multiple rows of tiles, Dividing the picture into a plurality of rows of tiles; decoding slice type information from the bitstream, the slice type information indicating one of a raster scan slice definition method and a rectangular slice definition method; A method comprising: If the slice type information indicates how the rectangular slice is defined, determining the number of slices included in the picture based on the slice number information; determining the number of tile columns that the slice will contain based on the slice width information; determining the number of tile rows that the slice will contain based on the slice's height information; Prepare for this. the width information indicates a value obtained by subtracting 1 from the number of tile columns included in the slice; whether to decode the width information of the slice from the bitstream is determined based on whether the top left tile of the slice is included in the rightmost tile column of the plurality of tile columns; If the top left tile of the slice is included in the rightmost tile column, omit decoding the width information of the slice from the bitstream and set its value to 0. Video decoding method.
2. the height information indicates a value obtained by subtracting 1 from the number of tile rows included in the slice; whether to decode the height information from the bitstream is determined based on whether the top left tile of the slice is included in a bottom tile row of the plurality of tile columns; If the top left tile of the slice is included in the bottom row of tiles, omit decoding of the height information of the slice from the bitstream and set its value to 0. The video decoding method according to claim 1.
3. If the top left tile of the slice is not included in the bottom five tile rows, whether to decode the height information of the slice from the bitstream is determined based on whether the top left tile of the slice is included in the leftmost tile column of the plurality of tile columns. The video decoding method according to claim 2.
4. If the top left tile of the slice is not included in the leftmost tile column, omit decoding the height information of the slice and set the value of the height information to the same value as other slices that have tiles included in the leftmost tile column. The video decoding method according to claim 3.
5. If the slice type information indicates how the rectangular slice is defined, decoding a difference information presence flag indicating whether inter-slice tile index difference information exists in the bitstream; If the picture is composed of a single slice, omit decoding the difference information presence flag and set its value to 0. The video decoding method of claim 1, comprising:
6. If the difference information presence flag indicates that the tile index difference information is present in the bitstream, the tile index difference information of the slice is decoded from the bitstream; The tile index difference information indicates an index difference between a tile included in the slice and a tile included in a next slice. The video decoding method according to claim 5.
7. Divide the picture into multiple rows of tiles, Dividing the picture into a plurality of rows of tiles; Slice type information indicating one of a raster scan slice definition method and a rectangular slice definition method is encoded in the bitstream; If the slice type information indicates how the rectangular slice is defined, encoding, in the bitstream, slice number information that specifies the number of slices included in the picture; selectively encrypting width information of the slice determined based on the number of tile rows included in the slice; selectively encrypting height information of the slice determined based on the number of tile rows the slice includes; Prepare for this. the width information indicates a value obtained by subtracting 1 from the number of tile columns included in the slice; whether to encode the width information of the slice in the bitstream is determined based on whether the top left tile of the slice is included in the rightmost tile column of the plurality of tile columns; omit encoding the width information of the slice in the bitstream if the top left tile of the slice is included in the rightmost tile row. Video coding method.
8. the height information indicates a value obtained by subtracting 1 from the number of tile rows included in the slice; whether to encode the height information of the slice in the bitstream is determined based on whether the top left tile of the slice is included in the bottom tile row of the plurality of tile columns; omit encoding the height information of the slice in the bitstream if the top left tile of the slice is included in the bottom row of tiles.
8. The video encoding method according to claim 7.
9. If the top left tile of the slice is not included in the bottommost tile row, whether to encode the height information of the slice in the bitstream is further determined based on whether the top left tile of the slice is included in the leftmost tile row of the plurality of tile rows.
9. The video encoding method according to claim 8.
10. If the slice type information indicates how the rectangular slice is defined, encoding a difference information presence flag indicating whether inter-slice tile index difference information exists in the bitstream; If the picture is composed of a single slice, the coding of the difference information presence flag is omitted.
8. The video encoding method according to claim 7, comprising:
11. The tile index difference information indicates an index difference between a tile included in the slice and a tile included in a next slice. The video encoding method according to claim 10.
12. 1. A non-transitory computer-readable medium for storing data relating to video, the non-transitory computer-readable medium comprising a data stream, the data stream comprising: Information on the number of tile columns for dividing the picture into multiple tile columns; information on the number of tile rows for dividing the picture into a plurality of tile rows; Slice type information indicating one of a raster scan slice definition method and a rectangular slice definition method; Equipped with If the slice type information indicates how the rectangular slices are defined, the data stream further comprises: slice number information indicating the number of slices included in the picture; slice width information indicating the number of tile columns the slice contains; slice height information indicating the number of tile rows the slice contains; Equipped with the width information indicates a value obtained by subtracting 1 from the number of the tile columns included in the slice, and whether the width information of the slice is to be inserted into the data stream is determined based on whether the top left tile of the slice is included in the rightmost tile column of the plurality of tile columns; If the top left tile of the slice is included in the rightmost tile column, the width information of the slice is not inserted into the data stream and its value is set to 0. Non-transitory computer-readable medium.