Video encoding / decoding method and apparatus for transmitting compressed video data
By correcting prediction samples within video blocks using reference samples and neighboring block motion information, the method enhances video compression efficiency for high-resolution and stereoscopic content, addressing the challenge of high data volume and costs.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-09-24
- Publication Date
- 2026-04-02
AI Technical Summary
The increasing demand for high-resolution and high-quality video, particularly stereoscopic video, leads to a significant increase in data volume, resulting in higher transmission and storage costs, and existing video compression technologies are inadequate for efficient compression of such content.
A method for correcting prediction samples within video blocks, utilizing reference samples both inside and outside the current block, and incorporating motion information from neighboring blocks, along with intra-prediction results, to enhance prediction accuracy.
Improves prediction accuracy by correcting prediction samples in sub-block units, leading to more efficient video compression and reduced data volume for high-resolution and stereoscopic video.
Smart Images

Figure KR2025015016_02042026_PF_FP_ABST
Abstract
Description
Video encoding / decoding method and device for transmitting compressed video data
[0001] The present disclosure relates to a video signal processing method and apparatus.
[0002] Recently, the demand for high-resolution, high-quality video, such as HD (High Definition) and UHD (Ultra High Definition) video, has been increasing across various application fields. As video data becomes higher in resolution and quality, the relative volume of data increases compared to conventional video data; consequently, transmission and storage costs increase when video data is transmitted using existing wired or wireless broadband lines or stored using conventional storage media. To address these issues arising from the increase in video data resolution and quality, high-efficiency video compression technologies can be utilized.
[0003] Various video compression technologies exist, such as inter-frame prediction technology that predicts pixel values in the current picture from previous or subsequent pictures, intra-frame prediction technology that predicts pixel values in the current picture using pixel information within the current picture, and entropy coding technology that assigns short codes to values with high frequency and long codes to values with low frequency; by utilizing these video compression technologies, video data can be effectively compressed for transmission or storage.
[0004] Meanwhile, along with the increasing demand for high-resolution video, the demand for stereoscopic video content as a new video service is also rising. Discussions are underway regarding video compression technologies to effectively provide high-resolution and ultra-high-resolution stereoscopic video content.
[0005] The present disclosure aims to provide a method for correcting a prediction sample of a current block and an apparatus for doing so.
[0006] The present disclosure aims to provide a method for correcting a prediction sample based on at least one of a reference sample existing outside the current block or a reference prediction sample within the current block, and an apparatus for doing the same.
[0007] The present disclosure aims to provide a method for correcting a predicted block of a current block in sub-block units and an apparatus for doing so.
[0008] The present disclosure aims to provide a method for correcting prediction samples within a sub-block based on movement information of neighboring blocks existing in an area adjacent to the sub-block, and an apparatus for doing the same.
[0009] The present disclosure aims to provide a method for correcting prediction samples within a subblock obtained through inter-prediction using the results of performing intra-prediction on a subblock, and an apparatus for doing the same.
[0010] The technical problems to be solved in this disclosure are not limited to those mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art to which this disclosure belongs from the description below.
[0011] A video decoding method according to the present disclosure may include: a step of acquiring a prediction block of a current block; a step of deriving a reference block for a sub-block within the prediction block; and a step of correcting the sub-block based on the reference block. In this case, if motion information of a neighbor block adjacent to the sub-block is available, the reference block may be derived based on the motion information of the neighbor block.
[0012] In the image decoding method according to the present disclosure, when the motion information of the neighbor block is not available, the reference block can be obtained by performing intra prediction on the sub-block.
[0013] In the image decoding method according to the present disclosure, when the neighbor block is encoded by intra prediction, the intra prediction for the sub-block may be performed based on the intra prediction mode of the neighbor block.
[0014] In the image decoding method according to the present disclosure, the intra prediction is derived based on the intra prediction mode of the sub-block, and the intra prediction mode can be obtained based on a histogram.
[0015] In the image decoding method according to the present disclosure, the histogram is a table in which amplitude values for each intra prediction mode are accumulated, and the amplitude values can be obtained based on horizontal gradients and vertical gradients obtained by applying a filter to a restoration area adjacent to the current block.
[0016] In the image decoding method according to the present disclosure, the histogram can be derived in units of sub-blocks within the current block.
[0017] In the image decoding method according to the present disclosure, when the sub-block is adjacent to the left boundary of the current block, the histogram is derived based on the left restoration region of the current block, and when the sub-block is adjacent to the top boundary of the current block, the histogram can be derived based on the top restoration region of the current block.
[0018] In the image decoding method according to the present disclosure, when the sub-block is adjacent to the left boundary of the current block, the left directional mode is set as an intra prediction mode for intra prediction, and when the current block is adjacent to the top boundary of the current block, the top directional mode can be set as an intra prediction mode for intra prediction.
[0019] In the image decoding method according to the present disclosure, whether the motion information of the neighbor block is available can be determined based on whether the motion information of the neighbor block and the motion information of the current block have the same direction.
[0020] In the image decoding method according to the present disclosure, whether the motion information of the neighbor block is available can be determined based on whether the motion information of the neighbor block has bidirectional motion information.
[0021] In the image decoding method according to the present disclosure, whether the motion information of the neighbor block is available can be determined based on whether the reference picture of the neighbor block and the reference picture of the current block are the same.
[0022] In the image decoding method according to the present disclosure, a corrected sub-block can be obtained through a weighted sum operation between the sub-block and the reference block.
[0023] In the image decoding method according to the present disclosure, when the sub-block touches the left boundary of the current block, weights may be set in column units within the sub-block, and when the sub-block touches the top boundary of the current block, weights may be set in row units within the sub-block.
[0024] In the image decoding method according to the present disclosure, the weight applied to the prediction sample within the sub-block may be inversely proportional to the distance between the boundary of the current block and the prediction sample.
[0025] A video encoding method according to the present disclosure may include: a step of acquiring a prediction block of a current block; a step of deriving a reference block for a sub-block within the prediction block; and a step of correcting the sub-block based on the reference block. In this case, if motion information of a neighbor block adjacent to the sub-block is available, the reference block may be derived based on the motion information of the neighbor block.
[0026] According to the present disclosure, a computer-readable recording medium may be provided that records instructions for storing / transmitting a bitstream generated by an image encoding method.
[0027] According to the present disclosure, a computer-readable recording medium may be provided that records instructions for performing an image decoding method or an image encoding method.
[0028] The features briefly summarized above regarding the present disclosure are merely exemplary aspects of the detailed description of the present disclosure that follows and do not limit the scope of the present disclosure.
[0029] According to the present disclosure, prediction accuracy can be improved by providing a method for correcting a prediction sample of the current block.
[0030] According to the present disclosure, the prediction accuracy can be improved by providing a method for correcting a prediction sample based on at least one of a reference sample existing outside the current block or a reference prediction sample within the current block.
[0031] According to the present disclosure, the prediction accuracy can be improved by providing a method for correcting the prediction block of the current block in sub-block units.
[0032] According to the present disclosure, the prediction accuracy can be improved by providing a method for correcting prediction samples within a sub-block based on movement information of neighbor blocks existing in an area adjacent to the sub-block.
[0033] According to the present disclosure, the prediction accuracy can be improved by providing a method for correcting prediction samples within a sub-block obtained through inter-prediction using the results of performing intra-prediction on a sub-block.
[0034] The effects obtainable from the present disclosure are not limited to those mentioned above, and other unmentioned effects will be clearly understood by those skilled in the art to which the present disclosure pertains from the description below.
[0035] FIG. 1 is a block diagram showing an image encoding device according to one embodiment of the present disclosure.
[0036] FIG. 2 is a block diagram showing an image decoding device according to an embodiment of the present disclosure.
[0037] FIG. 3 illustrates an image encoding / decoding method performed by an image encoding / decoding device according to the present disclosure.
[0038] FIG. 4 illustrates an example of a plurality of intra-prediction modes according to the present disclosure.
[0039] Figure 5 shows an example where the directional mode is extended.
[0040] FIG. 6 illustrates a planner mode-based intra prediction method according to the present disclosure.
[0041] FIG. 7 illustrates a DC mode-based intra prediction method according to the present disclosure.
[0042] FIG. 8 illustrates an intra-prediction method based on a directional mode according to the present disclosure.
[0043] Figure 9 illustrates a method for deriving samples of fractional positions.
[0044] Figures 10 and 11 illustrate tangent values for angles scaled by 32 times for each intra prediction mode.
[0045] FIG. 12 is a diagram illustrating an intra-prediction pattern when the directional mode is one of modes 34 to 49.
[0046] Figure 13 is a diagram illustrating an example of generating an upper reference sample by interpolating left reference samples.
[0047] Figure 14 shows an example in which intra prediction is performed using reference samples arranged in a 1D array.
[0048] Figure 15 is a diagram illustrating an example of setting a reference area.
[0049] Figure 16 is a diagram showing an example of the configuration of a reference area.
[0050] Figure 17 illustrates the filter coefficients for the Sobel mask and the Prewit mask, respectively.
[0051] Figure 18 shows the locations where the vertical and horizontal inclinations are obtained within the reference area.
[0052] Figure 19 shows an example of grouping directional modes into multiple intra-prediction mode groups.
[0053] FIG. 20 is a drawing illustrating a reference area around the current block.
[0054] Figure 21 shows an example of performing intra prediction on a reference area based on planner mode.
[0055] Figure 22 shows an example of performing intra prediction on a reference region based on DC mode.
[0056] Figure 23 shows an example of performing intra prediction on a reference region based on a directional mode.
[0057] Figure 24 shows an example where a prediction sample within the current block is corrected.
[0058] Figures 25 and 26 show examples of correcting a prediction sample using a reference prediction sample.
[0059] Figure 27 is a diagram illustrating the process of performing inter-prediction in the encoder and decoder.
[0060] Figure 28 shows an example where motion estimation is performed.
[0061] FIGS. 29 and FIGS. 30 illustrate an example in which a predicted block of the current block is generated based on motion information generated through motion estimation.
[0062] Figure 31 shows the location referenced to derive the motion vector prediction value.
[0063] Figure 32 is a diagram illustrating a template-based motion estimation method.
[0064] Figure 33 shows examples of template configurations.
[0065] Figure 34 is a diagram illustrating a motion estimation method based on a two-way matching method.
[0066] Figure 35 is a diagram illustrating a motion estimation method based on a unidirectional matching method.
[0067] Figures 36 and 37 illustrate examples in which prediction blocks are generated according to the precision of the motion vectors.
[0068] Figure 38 shows an example in which motion compensation based on a translational model and a zooming model is performed for the current block.
[0069] FIG. 39 shows an example in which motion compensation based on a translational model and a rotational model is performed for the current block.
[0070] Figures 40 and 41 show an example of generating a prediction block for the current block using control point motion vectors.
[0071] Figure 42 shows an example of generating a prediction block for the current block using three control point motion vectors.
[0072] Figure 43 shows an example in which motion vectors are derived in sub-block units.
[0073] Figures 44 and 45 show an example where motion vectors are induced in sub-block units within the current block when SbTMVP is applied.
[0074] Figures 46 and 47 are diagrams illustrating examples in which a prediction block is derived according to the precision of the motion vector.
[0075] FIGS. 48 and FIGS. 49 are diagrams illustrating the process of encoding and decoding motion vector difference values when the AMVR method is applied, respectively.
[0076] FIG. 50 is a flowchart of a method for correcting a prediction block according to one embodiment of the present disclosure.
[0077] FIG. 51 is a diagram illustrating an example of inducing movement information of a current sub-block.
[0078] FIG. 52 is a diagram illustrating an example of how to determine whether to correct prediction samples within a sub-block.
[0079] FIG. 53 is a diagram illustrating an example in which weights are set on a line basis when performing a weighted sum operation between the current sub-block and the reference block.
[0080] FIG. 54 illustrates an example in which the size of the region where a weighted sum is performed within a sub-block is adaptively determined.
[0081] The present disclosure is susceptible to various modifications and may have various embodiments; specific embodiments are illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present disclosure to specific embodiments, and it should be understood that it includes all modifications, equivalents, and substitutions that fall within the spirit and scope of the present disclosure. Similar reference numerals have been used for similar components in the description of each drawing.
[0082] Terms such as "first," "second," etc., may be used to describe various components, but said components should not be limited by said terms. Such terms are used solely for the purpose of distinguishing one component from another. For example, without departing from the scope of the present disclosure, the first component may be named the second component, and similarly, the second component may be named the first component. The term "and / or" includes a combination of a plurality of related described items or any of a plurality of related described items.
[0083] When it is stated that one component is "connected" or "connected" to another component, it should be understood that while it may be directly connected or connected to that other component, there may also be other components in between. On the other hand, when it is stated that one component is "directly connected" or "directly connected" to another component, it should be understood that there are no other components in between.
[0084] The terms used in this application are used merely to describe specific embodiments and are not intended to limit the disclosure. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, terms such as “comprising” or “having” are intended to specify the presence of the features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the existence or addition of one or more other features, numbers, steps, actions, components, parts, or combinations thereof.
[0085] Hereinafter, preferred embodiments of the present disclosure will be described in more detail with reference to the attached drawings. Hereinafter, the same reference numerals are used for identical components in the drawings, and redundant descriptions of identical components are omitted.
[0086] FIG. 1 is a block diagram showing an image encoding device according to one embodiment of the present disclosure.
[0087] Referring to FIG. 1, the image encoding device (100) may include a picture splitting unit (110), a prediction unit (120, 125), a conversion unit (130), a quantization unit (135), a reordering unit (160), an entropy encoding unit (165), an inverse quantization unit (140), an inverse conversion unit (145), a filter unit (150), and a memory (155).
[0088] Each component shown in FIG. 1 is depicted independently to represent different characteristic functions of the image encoding device and does not imply that each component consists of separate hardware or a single software unit. That is, each component is listed and included as a separate component for convenience of explanation, but at least two of the components may be combined to form a single component, or a single component may be divided into multiple components to perform functions, and such integrated and separated embodiments of each component are included within the scope of the present disclosure as long as they do not deviate from the essence of the present disclosure.
[0089] Additionally, some components may not be essential components performing an essential function in the present disclosure, but may be optional components merely for enhancing performance. The present disclosure may be implemented by including only the components essential to embody the essence of the present disclosure, excluding components used merely for enhancing performance, and a structure including only the essential components, excluding optional components used merely for enhancing performance, is also included within the scope of the rights of the present disclosure.
[0090] The picture segmentation unit (110) can divide an input picture into at least one processing unit. At this time, the processing unit may be a Prediction Unit (PU), a Transform Unit (TU), or a Coding Unit (CU). The picture segmentation unit (110) can divide a picture into a combination of multiple coding units, prediction units, and transformation units, and can encode the picture by selecting one combination of coding units, prediction units, and transformation units based on a predetermined criterion (e.g., a cost function).
[0091] For example, a single picture can be divided into multiple coding units. To divide coding units within a picture, recursive tree structures such as a Quad Tree, Ternary Tree, or Binary Tree can be used. A coding unit divided into other coding units, with a single image or the largest coding unit as the root, can have as many child nodes as the number of divided coding units. A coding unit that is no longer divided according to certain limits becomes a leaf node. For example, assuming Quad Tree division is applied to a single coding unit, a single coding unit can be divided into up to four different coding units.
[0092] In the embodiments of the present disclosure below, the encoding unit may be used to mean a unit that performs encoding, or a unit that performs decoding.
[0093] A prediction unit may be divided into at least one shape, such as a square or rectangle, of the same size within a single encoding unit, or one of the prediction units divided within a single encoding unit may be divided such that any one prediction unit has a different shape and / or size from another prediction unit.
[0094] When performing intra-frame prediction, the transformation unit and the prediction unit may be set to be the same. In this case, the encoding unit may be divided into multiple transformation units, and intra-frame prediction may be performed for each transformation unit. The encoding unit may be divided in a horizontal or vertical direction. The number of transformation units generated by dividing the encoding unit may be two or four, depending on the size of the encoding unit. Alternatively, if the size of the transformation unit is small, multiple transformation units may be set as a single prediction unit.
[0095] The prediction unit (120, 125) may include an inter-frame prediction unit (120) that performs inter-frame prediction and an intra-frame prediction unit (125) that performs intra-frame prediction. It may determine whether to use inter-frame prediction or perform intra-frame prediction for a encoding unit, and determine specific information according to each prediction method (e.g., reference sample line, intra-frame prediction mode, motion vector, reference picture, etc.). At this time, the processing unit in which the prediction is performed and the processing unit in which the prediction method and specific details are determined may be different. For example, the prediction method and prediction mode, etc., may be determined by the encoding unit, and the prediction may be performed by the prediction unit or the conversion unit. The residual value (residual block) between the generated prediction block and the original block may be input to the conversion unit (130). In addition, the prediction mode information, motion vector information, etc. used for prediction may be encoded together with the residual value in the entropy encoding unit (165) and transmitted to the decoding device. When using a specific encoding mode, it is also possible to encode the original block as is and transmit it to the decoding unit without generating a prediction block through the prediction unit (120, 125).
[0096] The inter-frame prediction unit (120) may predict a prediction unit based on information of at least one picture among the previous picture or the subsequent picture of the current picture, and in some cases, may predict a prediction unit based on information of a partially encoded area within the current picture. The inter-frame prediction unit (120) may include a reference picture interpolation unit, a motion prediction unit, and a motion compensation unit.
[0097] In the reference picture interpolation unit, reference picture information is received from memory (155), and pixel information of integer pixels or less can be generated from the reference picture. In the case of luminance pixels, a DCT-based 8-tap interpolation filter with different filter coefficients can be used to generate pixel information of integer pixels or less in 1 / 4 pixel units. In the case of chrominance signals, a DCT-based 4-tap interpolation filter with different filter coefficients can be used to generate pixel information of integer pixels or less in 1 / 8 pixel units.
[0098] The motion prediction unit can perform motion prediction based on a reference picture interpolated by the reference picture interpolation unit. Various methods, such as FBMA (Full search-based Block Matching Algorithm), TSS (Three Step Search), and NTS (New Three-Step Search Algorithm), can be used to calculate motion vectors. Based on the interpolated pixels, the motion vector can have motion vector values in units of 1 / 2 or 1 / 4 pixels. The motion prediction unit can predict the current prediction unit by using different motion prediction methods. Various motion prediction methods, such as the Skip method, Merge method, AMVP (Advanced Motion Vector Prediction) method, and Intra Block Copy method, can be used.
[0099] The in-screen prediction unit (125) can generate a prediction block based on reference pixel information, which is pixel information within the current picture. Reference pixel information can be derived from one selected from a plurality of reference pixel lines. The Nth reference pixel line among the plurality of reference pixel lines may include left pixels with an x-axis difference of N with the top-left pixel in the current block and top pixels with a y-axis difference of N with said top-left pixel. The number of reference pixel lines that the current block can select may be 1, 2, 3, or 4.
[0100] If a neighboring block of the current prediction unit is a block that has undergone inter-frame prediction, and the reference pixel is a pixel that has undergone inter-frame prediction, the reference pixel included in the block that has undergone inter-frame prediction can be replaced with the reference pixel information of a neighboring block that has undergone intra-frame prediction. That is, if the reference pixel is not available, the information of the unavailable reference pixel can be replaced with the information of at least one of the available reference pixels.
[0101] In intra-frame prediction, the prediction mode may include a directional prediction mode that uses reference pixel information according to 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 chrominance information may be different, and the intra-frame prediction mode information used to predict luminance information or the predicted luminance signal information may be utilized to predict chrominance information.
[0102] When performing intra-frame prediction, if the size of the prediction unit and the size of the transformation unit are the same, intra-frame prediction for the prediction unit can be performed based on the pixels to the left of the prediction unit, the pixels at the top left, and the pixels at the top.
[0103] The in-frame prediction method can generate a prediction block after applying a smoothing filter to a reference pixel according to the prediction mode. Depending on the selected reference pixel line, it may be determined whether to apply the smoothing filter.
[0104] To perform an intra-frame prediction method, the intra-frame prediction mode of the current prediction unit can be predicted from the intra-frame prediction mode of the prediction unit existing in the vicinity of the current prediction unit. When predicting the prediction mode of the current prediction unit using the mode information predicted from the surrounding prediction unit, if the intra-frame prediction mode of the current prediction unit and the surrounding prediction unit are the same, information indicating that the prediction modes of the current prediction unit and the surrounding prediction unit are the same can be transmitted using predetermined flag information; if the prediction modes of the current prediction unit and the surrounding prediction unit are different, entropy coding can be performed to encode the prediction mode information of the current block.
[0105] Additionally, a residual block can be generated that includes residual value information, which is the difference between the prediction unit that performed the prediction based on the prediction unit generated in the prediction unit (120, 125) and the original block of the prediction unit. The generated residual block can be input to the conversion unit (130).
[0106] In the transformation unit (130), the residual block containing residual value information of the prediction unit generated through the original block and the prediction unit (120, 125) can be transformed using a transformation method such as DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), or KLT. Whether to apply DCT, DST, or KLT to transform the residual block can be determined based on at least one of the size of the transformation unit, the shape of the transformation unit, the prediction mode of the prediction unit, or the in-frame prediction mode information of the prediction unit. Meanwhile, the transformation can be performed by separating the horizontal direction and the vertical direction.
[0107] After performing transformations for the horizontal and vertical directions, a second transformation can be performed. The second transformation may be in a form where the horizontal and vertical directions are not separated. Final transformation coefficients can be generated by performing a second transformation on the transformation coefficients obtained by the first transformation. Meanwhile, the number of final transformation coefficients output by the second transformation may be smaller than the number of transformation coefficients input for the second transformation. Specifically, the second transformation can be performed using a reduced transformation matrix with different numbers of columns and rows.
[0108] The quantization unit (135) can quantize the values converted into the frequency domain in the conversion unit (130). The quantization coefficient may vary depending on the block or the importance of the image. The values produced by the quantization unit (135) may be provided to the inverse quantization unit (140) and the reordering unit (160).
[0109] The reordering unit (160) can perform reordering of coefficient values for quantized residual values.
[0110] The reordering unit (160) can convert two-dimensional block-shaped coefficients into one-dimensional vector forms through a coefficient scanning method. For example, the reordering unit (160) can convert the coefficients from DC to high-frequency ranges into one-dimensional vector forms by scanning using a Zig-Zag Scan method. Depending on the size of the conversion unit and the in-frame prediction mode, instead of Zig-Zag Scan, a vertical scan that scans two-dimensional block-shaped coefficients in the column direction, a horizontal scan that scans two-dimensional block-shaped coefficients in the row direction, or a diagonal scan that scans two-dimensional block-shaped coefficients in the diagonal direction may be used. That is, depending on the size of the conversion unit and the in-frame prediction mode, it can be determined whether to use a Zig-Zag Scan, a vertical scan, a horizontal scan, or a diagonal scan.
[0111] The entropy encoding unit (165) can perform entropy encoding based on the values calculated by the reordering unit (160). Entropy encoding can use various encoding methods, such as, for example, Exponential Golomb, Context-Adaptive Variable Length Coding (CAVLC), and Context-Adaptive Binary Arithmetic Coding (CABAC).
[0112] The entropy encoding unit (165) can encode various information from the reordering unit (160) and the prediction unit (120, 125), such as residual value coefficient information of the encoding unit, block type information, prediction mode information, division unit information, prediction unit information and transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information.
[0113] The entropy encoding unit (165) can entropy-encode the coefficient value of the encoding unit input from the rearrangement unit (160).
[0114] In the inverse quantization unit (140) and inverse transformation unit (145), the values quantized in the quantization unit (135) are inversely quantized, and the values transformed in the transformation unit (130) are inversely transformed. The residual value generated in the inverse quantization unit (140) and inverse transformation unit (145) can be combined with the predicted unit predicted through the motion estimation unit, motion compensation unit, and in-frame prediction unit included in the prediction unit (120, 125) to generate a reconstructed block.
[0115] The filter section (150) may include at least one of a deblocking filter, an offset correction section, and an ALF (Adaptive Loop Filter).
[0116] The deblocking filter can remove block distortion caused by boundaries between blocks in the restored picture. To determine whether to perform deblocking, the decision to apply the deblocking filter to the current block can be made based on the pixels contained in a certain number of columns or rows within the block. When applying the deblocking filter to a block, a Strong Filter or a Weak Filter can be applied depending on the required deblocking filtering strength. Additionally, when applying the deblocking filter, horizontal and vertical filtering can be processed in parallel.
[0117] The offset correction unit can correct the offset from the original image on a pixel-by-pixel basis for the image that has undergone deblocking. To perform offset correction for a specific picture, a method can be used in which pixels included in the image are divided into a certain number of regions, the region to be offset is determined, and the offset is applied to that region, or a method can be used in which the offset is applied by considering the edge information of each pixel.
[0118] Adaptive Loop Filtering (ALF) can be performed based on a comparison between the filtered restored image and the original image. After dividing the pixels included in the image into predetermined groups, a single filter to be applied to each group can be determined, allowing for differential filtering for each group. Information regarding whether to apply ALF can be transmitted per coding unit (CU), and the shape and filter coefficients of the ALF filter to be applied may vary depending on each block. Additionally, an ALF filter of the same form (fixed form) may be applied regardless of the characteristics of the block to be applied.
[0119] The memory (155) can store a restoration block or picture calculated through the filter unit (150), and the stored restoration block or picture can be provided to the prediction unit (120, 125) when performing inter-frame prediction.
[0120] FIG. 2 is a block diagram showing an image decoding device according to an embodiment of the present disclosure.
[0121] Referring to FIG. 2, the image decoding device (200) may include an entropy decoding unit (210), a reordering unit (215), an inverse quantization unit (220), an inverse transformation unit (225), a prediction unit (230, 235), a filter unit (240), and a memory (245).
[0122] When a video bitstream is input to a video encoding device, the input bitstream can be decoded by the reverse procedure of the video encoding device.
[0123] The entropy decoding unit (210) can perform entropy decoding in the opposite procedure to that which the entropy encoding unit of the image encoding device performed entropy encoding. For example, various methods such as Exponential Golomb, CAVLC (Context-Adaptive Variable Length Coding), and CABAC (Context-Adaptive Binary Arithmetic Coding) may be applied in correspondence with the method performed by the image encoding device.
[0124] The entropy decoding unit (210) can decode information related to intra-frame prediction and inter-frame prediction performed by the encoding device.
[0125] The reordering unit (215) can perform reordering based on the method of reordering the entropy-decoded bitstream in the encoding unit in the entropy decoding unit (210). It can reorder by restoring the coefficients expressed in the form of a one-dimensional vector back into coefficients in the form of a two-dimensional block. The reordering unit (215) can perform reordering by receiving information related to the coefficient scanning performed in the encoding unit and scanning in reverse based on the scanning order performed in the encoding unit.
[0126] The inverse quantization unit (220) can perform inverse quantization based on the coefficient values of the rearranged block and the quantization parameters provided by the encoding device.
[0127] The inverse transform unit (225) can perform an inverse transform of the transform performed by the transform unit on the quantization result performed by the image encoding device. That is, it can perform at least one of an inverse transform of the second transform (second inverse transform) or an inverse transform for DCT, DST, and KLT (i.e., first inverse transform). The inverse transform can be performed based on a transmission unit determined by the image encoding device. The inverse transform unit (225) of the image decoder can determine a transform matrix for the second inverse transform or a transform technique for the first inverse transform (e.g., DCT, DST, KLT) according to a plurality of information such as a prediction method, the size and shape of the current block, a prediction mode, and an intra-frame prediction direction. Alternatively, information for determining the transform matrix or transform technique may be explicitly encoded and signaled.
[0128] The prediction unit (230, 235) can generate a prediction block based on the prediction block generation information provided by the entropy decoding unit (210) and the previously decoded block or picture information provided by the memory (245).
[0129] As described above, when performing intra-frame prediction identical to the operation in the video encoding device, if the size of the prediction unit and the size of the transform unit are the same, intra-frame prediction for the prediction unit is performed based on the pixels to the left of the prediction unit, the pixels to the top left, and the pixels to the top; however, if the size of the prediction unit and the size of the transform unit are different when performing intra-frame prediction, intra-frame prediction can be performed using reference pixels based on the transform unit. Additionally, intra-frame prediction using NxN partitioning only for the minimum encoding unit may also be used.
[0130] The prediction unit (230, 235) may include a prediction unit determination unit, an inter-frame prediction unit, and an intra-frame prediction unit. The prediction unit determination unit receives various information, such as prediction unit information input from the entropy decoding unit (210), prediction mode information of the intra-frame prediction method, and motion prediction related information of the inter-frame prediction method, distinguishes the prediction unit in the current encoding unit, and determines whether the prediction unit performs inter-frame prediction or intra-frame prediction. The inter-frame prediction unit (230) may perform inter-frame prediction for the current prediction unit based on information included in at least one picture among the previous picture or subsequent picture of the current picture containing the current prediction unit, using information necessary for inter-frame prediction of the current prediction unit provided by the video encoding device. Alternatively, it may perform inter-frame prediction based on information of a partially restored area within the current picture containing the current prediction unit.
[0131] To perform inter-frame prediction, based on the encoding unit, it is possible to determine whether the motion prediction method of the prediction unit included in the corresponding encoding unit is Skip Mode, Merge Mode, AMVP Mode, or Intra-frame Block Copy Mode.
[0132] The intra-frame prediction unit (235) can generate a prediction block based on pixel information within the current picture. If the prediction unit is a prediction unit that has performed intra-frame prediction, it can perform intra-frame prediction based on the intra-frame prediction mode information of the prediction unit provided by the video encoding device. The intra-frame prediction unit (235) may include an Adaptive Intra Smoothing (AIS) filter, a reference pixel interpolation unit, and a DC filter. The AIS filter is a part that performs filtering on the reference pixel of the current block, and can determine whether to apply the filter based on the prediction mode of the current prediction unit. AIS filtering can be performed on the reference pixel of the current block using the prediction mode of the prediction unit and the AIS filter information provided by the video encoding device. If the prediction mode of the current block is a mode that does not perform AIS filtering, the AIS filter may not be applied.
[0133] The reference pixel interpolation unit can generate a reference pixel of an integer value or less by interpolating the reference pixel when the prediction mode of the prediction unit is a prediction unit that performs intra-frame prediction based on the pixel value interpolated from the reference pixel. If the prediction mode of the current prediction unit is a prediction mode that generates a prediction block without interpolating the reference pixel, the reference pixel may not be interpolated. The DC filter can generate a prediction block through filtering when the prediction mode of the current block is DC mode.
[0134] The restored block or picture may be provided to a filter unit (240). The filter unit (240) may include a deblocking filter, an offset correction unit, and an ALF.
[0135] Information regarding whether a deblocking filter has been applied to the corresponding block or picture can be received from the video encoding device, and if a deblocking filter has been applied, information regarding whether a strong filter or a weak filter has been applied. The deblocking filter of the video decoder receives information related to the deblocking filter provided by the video encoding device, and the video decoder can perform deblocking filtering on the corresponding block.
[0136] The offset correction unit can perform offset correction on the restored image based on the type of offset correction and offset value information applied to the image during encoding.
[0137] ALF can be applied to the encoding unit based on information on whether to apply ALF, ALF coefficient information, etc., provided by the encoding device. This ALF information can be provided included in a specific parameter set.
[0138] The memory (245) can store the restored picture or block so that it can be used as a reference picture or reference block, and can also provide the restored picture to the output unit.
[0139] As described above, in the embodiments of the present disclosure below, the term "Coding Unit" is used as "encoding unit" for convenience of explanation, but it may be a unit that performs not only encoding but also decoding.
[0140] Additionally, the current block represents a block to be encoded / decoded, and depending on the encoding / decoding stage, it may represent a coding tree block (or coding tree unit), an encoding block (or encoding unit), a conversion block (or conversion unit), a prediction block (or prediction unit), or a block to which an in-loop filter is applied. In this specification, 'unit' represents a basic unit for performing a specific encoding / decoding process, and 'block' may represent a pixel array of a predetermined size. Unless otherwise distinguished, 'block' and 'unit' may be used with the same meaning. For example, in the embodiments described below, the encoding block (coding block) and the encoding unit (coding unit) may be understood as having the same meaning.
[0141] In addition, encoding parameters for the current block may be commonly applied to multiple color components of the current block. For example, if the encoding mode of the current block is determined, predictions for the Y component block, Cb component block, and Cr component block can be performed based on the corresponding encoding mode.
[0142] Alternatively, depending on the color component to be encoded / decoded, the current block may refer to a Y component block, a Cb component block, or a Cr component block.
[0143] Furthermore, the picture containing the current block will be referred to as the current picture.
[0144] In the encoder, the current picture can be divided into multiple reference blocks. Here, the reference block may be referred to as a CTU (Coding Tree Unit) or CTB (Coding Tree Block).
[0145] The size of the reference block may be predefined in the encoder and decoder. Alternatively, information related to the size of the reference block may be encoded and signaled to the decoder. This information may be encoded / decoded through an upper header. For example, this information may be encoded / decoded through a sequence parameter set or a picture header.
[0146] The reference block may be further divided into multiple blocks (i.e., multiple coding blocks) based on tree structure partitioning. Here, the tree structure partitioning may include at least one of quad tree partitioning, binary tree partitioning, or ternary tree partitioning.
[0147] A prediction block for the current block can be obtained by performing a prediction block on the current block generated by dividing the reference block. Specifically, a prediction block for the current block can be obtained through inter-prediction or intra-prediction.
[0148] Inter-prediction may be intended to remove duplicate data between pictures, and intra-prediction may be intended to remove duplicate data within a picture. For example, a prediction block of the current block may be generated from a reference picture using motion information of the current block, or a prediction block of the current block may be generated from reference samples of the current block after determining the intra-prediction mode of the current block. Here, the motion information may include at least one of a motion vector, a reference picture index, and a prediction direction.
[0149] FIG. 3 illustrates an image encoding / decoding method performed by an image encoding / decoding device according to the present disclosure.
[0150] Referring to FIG. 3, a reference line for intra prediction of the current block can be determined (S300).
[0151] The current block may use one or more of the multiple reference line candidates predefined in the video encoding / decoding device as reference lines for intra-prediction. Here, the multiple reference line candidates predefined may include neighbor reference lines adjacent to the current block to be decoded and N non-neighbor reference lines located 1 to N samples away from the boundary of the current block. N may be 1, 2, 3, or more integers. For convenience of explanation, it is assumed that the multiple reference line candidates available to the current block consist of a neighbor reference line candidate and three non-neighbor reference line candidates, but are not limited thereto. That is, it is obvious that the multiple reference line candidates available to the current block may include four or more non-neighbor reference line candidates.
[0152] A video encoding device can determine an optimal reference line candidate among a plurality of reference line candidates and encode an index to specify it. A video decoding device can determine the reference line of the current block based on the index signaled through a bitstream. The index can specify any one of the plurality of reference line candidates. The reference line candidate specified by the index can be used as the reference line of the current block.
[0153] The number of signaled indices to determine the reference line of the current block may be one, two, or more. For example, if the number of signaled indices is one, the current block may perform intra prediction using only a single reference line candidate specified by the signaled index among multiple reference line candidates. Or, if the number of signaled indices is two or more, the current block may perform intra prediction using multiple reference line candidates specified by multiple indices among multiple reference line candidates.
[0154] Referring to FIG. 3, the intra prediction mode of the current block can be determined (S310).
[0155] The intra prediction mode of the current block can be determined from among a plurality of predefined intra prediction modes in the video encoding / decoding device. The plurality of predefined intra prediction modes will be examined with reference to FIGS. 4 and FIGS. 5.
[0156] FIG. 4 illustrates an example of a plurality of intra-prediction modes according to the present disclosure.
[0157] Referring to FIG. 4, a plurality of pre-defined intra-prediction modes in an image encoding / decoding device may be composed of non-directional modes and directional modes. The non-directional mode may include at least one of a planar mode or a DC mode. The directional mode may include directional modes 2 through 66.
[0158] The directional mode may be further extended than shown in FIG. 4. FIG. 5 shows an example of an extended directional mode.
[0159] In FIG. 5, modes -1 through -14 and modes 67 through 80 are shown as being added. These directional modes may be referred to as wide-angle intra-predicted modes. Whether to use wide-angle intra-predicted modes may be determined based on the shape of the current block. For example, if the current block is a non-square block where the width is greater than the height, some directional modes (e.g., 2 through 15) may be switched to wide-angle intra-predicted modes between 67 and 80. On the other hand, if the current block is a non-square block where the height is greater than the width, some directional modes (e.g., 53 through 66) may be switched to wide-angle intra-predicted modes between -1 and -14.
[0160] The range of available wide-angle intra prediction modes can be adaptively determined based on the width-to-height ratio of the current block. Table 1 shows the range of available wide-angle intra prediction modes based on the width-to-height ratio of the current block.
[0161] Width / Height Available Wide Angle Intra Predicted Mode Range W / H = 16 67~80 W / H = 8 67~78 W / H = 4 67~76 W / H = 2 67~74 W / H = 1 None W / H = 1 / 2 -1~-8 W / H = 1 / 4 -1~-10 W / H = 1 / 8 -1~-12 W / H = 1 / 16 -1~-14
[0162] Among the plurality of intra prediction modes mentioned above, K candidate modes (most probable mode, MPM) can be selected. A candidate list including the selected candidate modes can be generated. An index indicating any one of the candidate modes in the candidate list can be signaled. The intra prediction mode of the current block can be determined based on the candidate mode indicated by the index. For example, the candidate mode indicated by the index can be set as the intra prediction mode of the current block. Alternatively, the intra prediction mode of the current block may be determined based on the value of the candidate mode indicated by the index and a predetermined difference value. The difference value may be defined as the difference between the value of the intra prediction mode of the current block and the value of the candidate mode indicated by the index. The difference value may be signaled via a bitstream. Alternatively, the difference value may be a value pre-defined in the video encoding / decoding device. Alternatively, the intra prediction mode of the current block may be determined based on a flag indicating whether a mode identical to the intra prediction mode of the current block exists in the candidate list. For example, if the flag is a first value, the intra prediction mode of the current block may be determined from the candidate list. In this case, an index indicating any one of the multiple candidate modes belonging to the candidate list may be signaled. The candidate mode indicated by the index may be set as the intra prediction mode of the current block. On the other hand, if the flag is a second value, any one of the remaining intra prediction modes may be set as the intra prediction mode of the current block. The remaining intra prediction mode may refer to a mode among the pre-defined multiple intra prediction modes excluding the candidate mode belonging to the candidate list. If the flag is a second value, an index indicating any one of the remaining intra prediction modes may be signaled.The intra prediction mode indicated by the signaled index can be set to the intra prediction mode of the current block.
[0163] The intra prediction mode of a chroma block can be selected from among multiple intra prediction mode candidates of the chroma block. To this end, index information indicating one of the intra prediction mode candidates of the chroma block can be explicitly encoded and signaled through a bitstream. Table 2 is an example of intra prediction mode candidates of the chroma block.
[0164] Intra-prediction mode candidates for index chroma blocks: Luma Mode: 0 Luma Mode: 50 Luma Mode: 18 Luma Mode: 1 Others 0 6 6 0 0 0 1 5 0 6 6 5 0 5 5 0 2 1 8 1 8 6 6 1 8 1 8 3 1 1 1 6 6 1 4 DM
[0165] In the example of Table 2, DM (Direct Mode) means setting the intra prediction mode of the luminance block located at the same position as the chroma block to the intra prediction mode of the chroma block. Meanwhile, the luminance block located at the same position as the chroma block can be determined based on the position of the top-left sample or the position of the center sample of the chroma block.
[0166] For example, if the intra prediction mode (luminance mode) of the luminance block is 0 (planar mode) and the index points to 2, the intra prediction mode of the chroma block can be determined as horizontal mode (18). For example, if the intra prediction mode (luminance mode) of the luminance block is 1 (DC mode) and the index points to 0, the intra prediction mode of the chroma block can be determined as planner mode (0).
[0167] Consequently, the intra prediction mode of the chroma block may also be set to one of the intra prediction modes shown in FIG. 4 or FIG. 5. The intra prediction mode of the current block may also be used to determine the reference line of the current block, in which case step S310 may be performed before step S300.
[0168] Meanwhile, in the present disclosure, the chroma block may represent at least one of a Cb component block or a Cr component block.
[0169] Referring to FIG. 3, an intra prediction can be performed on the current block based on the reference line of the current block and the intra prediction mode (S320).
[0170] Hereinafter, with reference to FIGS. 6 to 8, we will examine in detail the intra prediction method for each intra prediction mode. However, for the sake of convenience of explanation, it is assumed that a single reference line is used for the intra prediction of the current block, but the intra prediction method described below can be applied in the same or similar way even when multiple reference lines are used.
[0171] FIG. 6 illustrates a planner mode-based intra prediction method according to the present disclosure.
[0172] Referring to FIG. 6, T represents a reference sample located at the upper-right corner of the current block, and L represents a reference sample located at the lower-left corner of the current block. P1 can be generated through horizontal interpolation. For example, P1 can be generated by interpolating T with a reference sample located on the same horizontal line as P1. P2 can be generated through vertical interpolation. For example, P2 can be generated by interpolating L with a reference sample located on the same vertical line as P2. The current sample within the current block can be predicted through the weighted sum of P1 and P2 as shown in the following Equation 1.
[0173]
[0174] In Equation 1, weights α and β can be determined by considering the width and height of the current block. Depending on the width and height of the current block, weights α and β may have the same value or different values. If the width and height of the current block are the same, weights α and β can be set equally, and the predicted sample of the current sample can be set to the average value of P1 and P2. If the width and height of the current block are not the same, weights α and β may have different values. For example, if the width is greater than the height, a smaller value can be set for the weight corresponding to the width of the current block and a larger value can be set for the weight corresponding to the height of the current block. Conversely, if the width is greater than the height, a larger value can be set for the weight corresponding to the width of the current block and a smaller value can be set for the weight corresponding to the height of the current block. Here, the weight corresponding to the width of the current block may be β, and the weight corresponding to the height of the current block may be α.
[0175] FIG. 7 illustrates a DC mode-based intra prediction method according to the present disclosure.
[0176] Referring to FIG. 7, the average value of surrounding samples adjacent to the current block can be calculated, and the calculated average value can be set as the predicted value for all samples within the current block. Here, the surrounding samples may include the top reference sample and the left reference sample of the current block. However, depending on the shape of the current block, the average value may be calculated using only the top reference sample or only the left reference sample. For example, if the width of the current block is greater than the height, the average value may be calculated using only the top reference sample of the current block. Alternatively, if the ratio of the width to the height of the current block is greater than or equal to a predetermined threshold value, the average value may be calculated using only the top reference sample of the current block. Alternatively, if the ratio of the width to the height of the current block is less than or equal to a predetermined threshold value, the average value may be calculated using only the top reference sample of the current block. On the other hand, if the width of the current block is smaller than the height, the average value may be calculated using only the left reference sample of the current block. Alternatively, if the ratio of the width to the height of the current block is less than or equal to a predetermined threshold value, the average value may be calculated using only the left reference sample of the current block. Alternatively, if the ratio of the width to the height of the current block is greater than or equal to a predetermined threshold value, the average value can be calculated using only the left reference sample of the current block.
[0177] FIG. 8 illustrates an intra-prediction method based on a directional mode according to the present disclosure.
[0178] If the intra prediction mode of the current block is a directional mode, projection can be performed on a reference line according to the angle of the directional mode. If a reference sample exists at the projected location, that reference sample can be set as the prediction sample of the current sample. If no reference sample exists at the projected location, a sample corresponding to the projected location can be generated using one or more neighboring samples adjacent to the projected location. For example, a sample corresponding to the projected location can be generated by performing interpolation based on two or more neighboring samples adjacent in both directions relative to the projected location. Alternatively, a single neighboring sample adjacent to the projected location can be set as the sample corresponding to the projected location. In this case, among multiple neighboring samples adjacent to the projected location, the neighboring sample closest to the projected location may be used. The sample corresponding to the projected location can be set as the prediction sample of the current sample.
[0179] Referring to FIG. 8, for the current sample B, if projection is performed to a reference line according to the angle of the intra-prediction mode at that location, a reference sample exists at the projected location (i.e., a reference sample at an integer location, R3). In this case, the reference sample at the projected location can be set as the prediction sample for the current sample B. For the current sample A, if projection is performed to a reference line according to the angle of the intra-prediction mode at that location, a reference sample (i.e., a reference sample at an integer location) does not exist at the projected location. In this case, a sample (r) at a fractional location can be generated by performing interpolation based on neighboring samples (e.g., R2 and R3) adjacent to the projected location. The generated sample (r) at a fractional location can be set as the prediction sample for the current sample A.
[0180] Figure 9 illustrates a method for deriving samples of fractional positions.
[0181] In the example of Fig. 9, the variable h represents the vertical distance (i.e., vertical distance) from the position of predicted sample A to the reference sample line, and the variable w represents the horizontal distance (i.e., horizontal distance) from the position of predicted sample A to the fractional position sample. Additionally, the variable θ represents a predefined angle according to the directionality of the intra-prediction mode, and the variable x represents the fractional position.
[0182] The variable w can be derived as shown in the following mathematical equation 2.
[0183]
[0184] Subsequently, by removing the integer position from the variable w, the fractional position can finally be derived.
[0185] Fractional position samples can be generated by interpolating adjacent integer position reference samples. For example, fractional position reference samples at position x can be generated by interpolating integer position reference samples R2 and integer position reference samples R3.
[0186] In deriving fractional position samples, a scaling factor can be used to avoid real number operations. For example, if the scaling factor f is set to 32, the distance between neighboring integer reference samples can be set to 32 instead of 1, as in the example shown in FIG. 8 (b).
[0187] In addition, the tangent value for the angle θ determined by the directionality of the intra prediction mode can also be scaled up using the same scaling factor (e.g., 32).
[0188] Figures 10 and 11 illustrate tangent values for angles scaled by 32 times for each intra prediction mode.
[0189] Figure 10 shows the scaled result of the tangent value for the non-wide angle intra prediction mode, and Figure 11 shows the scaled result of the tangent value for the wide angle intra prediction mode.
[0190] If the tangent value (tanθ) for the angle value in the intra prediction mode is positive, intra prediction can be performed using only one of the reference samples belonging to the top line of the current block (i.e., top reference samples) or the reference samples belonging to the left line of the current block (i.e., left reference samples). On the other hand, if the tangent value for the angle value in the intra prediction mode is negative, both the reference samples located at the top and the reference samples located at the left are utilized.
[0191] At this time, to simplify the implementation, the left reference samples may be projected upward or the top reference samples may be projected to the left to arrange the reference samples into a 1D array, and intra prediction may be performed using the reference samples in the 1D array.
[0192] FIG. 12 is a diagram illustrating an intra-prediction pattern when the directional mode is one of modes 34 to 49.
[0193] When the intra prediction mode of the current block is one of modes 34 to 49, intra prediction is performed using not only the upper reference samples of the current block but also the left reference samples. At this time, as in the example shown in FIG. 12, the reference samples located on the left side of the current block can be copied to the position of the upper line, or the reference samples located on the left side can be interpolated to generate the reference samples of the upper line.
[0194] For example, if one wishes to obtain a reference sample for position A at the top of the current block, projection can be performed from position A on the top line to the left line of the current block, taking into account the directionality of the intra prediction mode of the current block. If the projected position is denoted as 'a', the value corresponding to position 'a' can be copied, or a fractional position value corresponding to 'a' can be generated and set as the value of position A. For example, if position 'a' is an integer position, the value of position A can be generated by copying the integer position reference sample. On the other hand, if position 'a' is a fractional position, the reference sample located above position 'a' and the reference sample located below position 'a' can be interpolated, and the interpolated value can be set as the value of position A. Meanwhile, the direction of projection from position A at the top of the current block to the left line of the current block may be parallel to the direction of the intra prediction mode of the current block, while being opposite.
[0195] Figure 13 is a diagram illustrating an example of generating an upper reference sample by interpolating left reference samples.
[0196] In Fig. 13, the variable h represents the horizontal distance between position A on the top line and position a on the left line. The variable w represents the vertical distance between position A on the top line and position a on the left line. Additionally, the variable θ represents a predefined angle according to the directionality of the intra prediction mode, and the variable x represents a fractional position.
[0197] The variable h can be derived as shown in the following mathematical equation 3.
[0198]
[0199] Subsequently, by removing the integer position from the variable h, the fractional position can finally be derived.
[0200] In deriving fractional position samples, a scaling factor can be used to avoid real-valued operations. For example, the tangent value for the variable θ can be scaled using a scaling factor f1. Here, since the direction projected to the left line is parallel and opposite to the directional prediction model, the scaled tangent value shown in FIGS. 10 and FIGS. 11 may also be used.
[0201] When a scaling factor f1 is applied, Equation 3 can be modified and used as shown in Equation 4 below.
[0202]
[0203] In the above manner, a 1D reference sample array can be constructed using only the reference samples belonging to the top line. As a result, an intra prediction for the current block can be performed using only the top reference samples constructed as a 1D array.
[0204] Figure 14 shows an example in which intra prediction is performed using reference samples arranged in a 1D array.
[0205] As shown in the example illustrated in Fig. 14, by projecting the left reference samples to generate the top reference samples, the prediction samples of the current block can be obtained using only the reference samples belonging to the top line.
[0206] Contrary to what is shown in FIGS. 12 and 14, a 1D reference sample array may be constructed using only the reference samples belonging to the left line by projecting the top reference sample onto the left line. Specifically, for directional modes 19 through 33 among the directional modes where the tangent value (tanθ) for the angle of the directional mode is negative, the reference samples belonging to the top line may be projected onto the left line to generate the left reference sample.
[0207] The intra prediction mode of the current block can also be derived using reference samples surrounding the current block. Specifically, the gradients for the horizontal and vertical directions of the reference samples are calculated, and the calculated gradients are used to derive the intra prediction mode of the current block.
[0208] Figure 15 is a diagram illustrating an example of setting a reference area.
[0209] For the sake of convenience of explanation, the current block size is assumed to be 4x4.
[0210] A reference area can be set to induce an intra-prediction mode of the current block. For example, in FIG. 15, it is assumed that w0 columns adjacent to the left of the current block and h0 rows adjacent to the top of the current block are set as the reference area.
[0211] The number of columns (w0) and / or rows (h0) constituting the reference region may be fixed in the encoder and decoder. Alternatively, the number of columns (w0) and / or rows (h0) may be determined based on at least one of the size / shape of the current block, whether Intra Sub-Partitioning (ISP) is applied to the current block, or whether the current block is adjacent to a CTU boundary.
[0212] As another example, the size of the reference area may be determined according to the type of filter applied to the reference area. Specifically, the width and height of the filter can be set to the number of columns w0 and the number of rows h0, respectively. For example, assuming that a 3x3 mask as shown in FIG. 17, which will be described later, is used, the number of columns w0 and the number of rows h0 can each be set to 3.
[0213] The reference area may extend beyond the right boundary and / or bottom boundary of the current block. For example, in the example illustrated in FIG. 15, the reference area is shown as extending w1 from the right boundary of the current block and h1 from the bottom boundary of the current block.
[0214] The right extension distance w1 and / or bottom extension distance h1 can be set to be equal to the width and / or height of the current block. For example, if the size of the current block is 4x4, the right extension distance w1 can be set to 4, equal to the width of the current block, and the bottom extension distance h1 can be set to 4, equal to the height of the current block.
[0215] As another example, a reference area can also be set, as in the example shown in FIG. 16.
[0216] Specifically, as in the example illustrated in FIG. 16 (a), the right extension distance w1 and / or the bottom extension distance h1 can be set to 0. Furthermore, as in the example illustrated in FIG. 16 (b), the upper reference area can be formed using only reference samples with x-axis coordinates between 0 and (w-1), and the left reference area can be formed using only reference samples with y-axis coordinates between 0 and (h-1). Here, w represents the width of the current block, and h represents the height of the current block.
[0217] As another example, reference line candidates for intra prediction of the current block or at least one of the reference line candidates may be set as a reference region.
[0218] As another example, depending on whether the current block is adjacent to the CTU boundary, the reference area may be configured using only the top reference area or only the left reference area.
[0219] Filtering (i.e., convolution) using a mask within a reference region can be performed. In this case, the filter used may be at least one of a Sobel mask or a Prewitt mask that outputs a gradient value.
[0220] Figure 17 illustrates the filter coefficients for the Sobel mask and the Prewit mask, respectively.
[0221] Filters of a different type than those shown in FIG. 17 may also be applied to the reference area. For example, instead of a 3x3 square filter, a 1D filter of 1x3 or 3x1, a rectangular filter of 2x3 or 2x3, a cross-shaped filter, or a diamond-shaped filter may be applied to the reference area. Alternatively, filters of a different size than those shown in FIG. 17 (e.g., 2x2, 4x4, or 5x5, etc.) may also be applied to the reference area.
[0222] The type of filter applied to the reference area may be predefined in the encoder and decoder. Alternatively, multiple filter candidates may be predefined, and index information pointing to one of the multiple filter candidates may be encoded and explicitly signaled through the bitstream.
[0223] As another example, at least one of a plurality of filter candidates may be adaptively selected based on at least one of the size / shape of the current block, whether an ISP is applied to the current block, the size of the reference region, the intra-prediction mode of neighboring blocks, or whether the current block touches a CTU boundary. Here, the neighboring blocks may include at least one of the top neighboring block or the left neighboring block of the current block.
[0224] The type of filter applied to the top reference area and the type of filter applied to the left reference area may be different.
[0225] By applying a vertical direction mask to a specific reference sample within a reference region, the vertical direction slope Dy for the reference sample can be obtained. Additionally, by applying a horizontal direction mask to a specific reference sample within a reference region, the horizontal direction slope Dx for the reference sample can be obtained.
[0226] Figure 18 shows the locations where the vertical and horizontal inclinations are obtained within the reference area.
[0227] Assuming that a 3x3 mask is applied as in the example shown in FIG. 17, a vertical slope Dy and a horizontal slope Dx can be obtained for each of the reference samples that are not adjacent to the boundary of the reference region. For example, when w0 and h0 are 3 and w1 and h1 are 4, as in the example shown in FIG. 17, 17 vertical slopes Dy and 17 horizontal slopes Dx can be obtained for each of the 17 reference samples.
[0228] If a filter of a different size or shape than that shown in Fig. 17 is applied, the vertical slope Dy and the horizontal slope Dx can be obtained for more / fewer reference samples than shown.
[0229] Based on the vertical slope Dy and horizontal slope Dx of each reference sample, an intra-prediction mode can be determined for each reference sample.
[0230] We will explain how to determine the intra-prediction mode of a reference sample using the vertical slope Dy and the horizontal slope Dx.
[0231] For example, if either the vertical slope Dy or the horizontal slope Dx is 0, the directional mode of the reference sample can be determined as the horizontal mode (18) or the vertical mode (50). Specifically, if the horizontal slope Dx is 0 and the vertical slope Dy is not 0, the intra-prediction mode of the reference sample can be determined as the vertical mode (50). Conversely, if the vertical slope Dy is 0 and the horizontal slope Dx is not 0, the intra-prediction mode of the reference sample can be determined as the horizontal mode (18).
[0232] If the vertical slope Dy and the horizontal slope Dx are both not zero, one of the remaining directional modes, excluding the horizontal mode and the vertical mode, can be determined as the intra-prediction mode of the reference sample.
[0233] Here, the intra prediction mode group to which the intra prediction mode of the reference sample belongs can be determined by comparing the absolute values of the vertical slope Dy and the horizontal slope Dx. Here, the intra prediction mode group may consist of multiple directional modes of similar directionality.
[0234] Figure 19 shows an example of grouping directional modes into multiple intra-prediction mode groups.
[0235] In FIG. 19, directional modes are exemplified as being classified into four intra-predicted mode groups (a to d) based on the horizontal direction mode (18), diagonal direction mode (34), and vertical direction mode (50).
[0236] In the illustrated example, groups a and b are symmetrical with respect to the horizontal direction mode (18), and groups c and d are symmetrical with respect to the vertical direction mode (50).
[0237] In addition, the angles of directional modes 36 through 66 are the same as the angles of modes 2 through 34 transposed.
[0238] If the absolute value of the horizontal slope Dx of a reference sample is greater than the absolute value of the vertical slope Dy, the directional mode of the reference sample may belong to group a or group b.
[0239] Conversely, if the absolute value of the vertical slope Dy of a reference sample is greater than the slope of the horizontal slope Dx, the directional mode of the reference sample may belong to group c or group d.
[0240] Table 3 shows the intra prediction mode groups to which the reference sample's intra prediction mode belongs, depending on the magnitudes of the horizontal slope Dx and the vertical slope Dy.
[0241] if (|Dx| > |Dy|)ElseDx >= 0Dy >= 0bDx >= 0Dy >= 0cDx < 0Dy >= 0aDx < 0Dy >= 0dDx >= 0Dy < 0aDx >= 0Dy < 0dDx < 0Dy < 0bDx < 0Dy < 0c
[0242] Using the horizontal slope Dx and vertical slope Dy of the reference sample, the slope of the directional mode to be assigned to the reference sample can be derived. To this end, a variable R representing the ratio between the horizontal slope and the vertical slope can be derived as shown in Equation 5 below.
[0243]
[0244] As exemplified in mathematical formula 5, the variable R can be derived by using the larger absolute value between the horizontal slope Dx and the vertical slope Dy as the denominator.
[0245] Subsequently, the directional mode of the reference sample can be determined by comparing the variable R with the tangent value (tanθ) for the angle of each directional mode. Specifically, a directional mode having the same tangent value as the variable R or the most similar tangent value can be assigned to the reference sample.
[0246] At this time, if the tangent values for each angle of the directional modes are stored in the encoder and decoder in a scaled state as in the example illustrated in FIG. 10 or FIG. 11, the directional mode of the reference sample can be determined by scaling the variable R using the same scaling factor.
[0247] Next, the amplitude of each of the reference samples can be derived. The amplitude can be derived as the sum of the absolute value of the horizontal slope Dx and the absolute value of the vertical slope Dy, as shown in Equation 6 below.
[0248]
[0249] Next, for each of the intra prediction modes, the amplitude value of each of the reference samples assigned to the same intra prediction mode can be accumulated.
[0250]
[0251] In Equation 7, intra_mode represents an intra-predicted mode. For example, the amplitude accumulation value for a directional mode with mode number N is derived by summing the amplitude values of reference samples assigned to mode N within a reference region, and the amplitude accumulation value for a directional mode with mode number M can be derived by summing the amplitude values of reference samples assigned to mode M within a reference region.
[0252] The buffer storing the amplitude accumulation value can be initialized in blocks. For example, when specifying a reference area around the current block, the amplitude accumulation value for each intra prediction mode can be initialized to 0.
[0253] Through the above process, when a histogram recording the amplitude accumulation values for each intra prediction mode is derived, at least one intra prediction mode can be selected in order of increasing amplitude accumulation values within the histogram. The number of selected intra prediction modes may be M, and M may be a natural number greater than or equal to 1. The value of M may be predefined in the encoder and decoder. Alternatively, the value of M may be adaptively determined by considering at least one of the size / shape of the current block and whether an ISP is applied to the current block. That is, M intra prediction modes may be selected in descending order of amplitude accumulation values.
[0254] At least one intra prediction mode selected from the histogram can be set as the intra prediction mode of the current block, and a prediction block of the current block can be obtained based on the intra prediction mode of the current block. For example, if one intra prediction mode is selected from the histogram, a prediction block obtained based on the selected intra prediction mode can be used as the final prediction block of the current block.
[0255] When multiple intra prediction modes are selected from a histogram, intra prediction can be performed based on each of the multiple intra prediction modes. Accordingly, when multiple prediction blocks are generated, the final prediction block of the current block can be obtained through an average operation or a weighted sum operation of the multiple prediction blocks.
[0256] At this time, for the weighted sum operation, the weights applied to each prediction block can be determined based on the amplitude of the intra prediction mode. That is, among the multiple intra prediction modes, the largest weight can be assigned to the prediction block derived based on the intra prediction mode with the largest amplitude, and the smallest weight can be assigned to the prediction block derived based on the intra prediction mode with the smallest amplitude.
[0257] At this time, the weight assigned to each prediction block can be determined based on the ratio between amplitudes. Alternatively, the values of the weights for each amplitude rank can be stored in advance, and then the weights mapped to the amplitude ranks of the corresponding intra-prediction mode can be applied to the prediction blocks.
[0258] A prediction block for the current block can be obtained by considering at least one default mode along with at least one intra prediction mode selected from the histogram. For example, multiple prediction blocks for the current block can be obtained by performing intra prediction based on each of the intra prediction mode and the default mode selected from the histogram. Subsequently, a final prediction block for the current block can be obtained through an average operation or a weighted sum operation of the multiple prediction blocks.
[0259] The number of default modes N can be an integer greater than or equal to 0 or 1. When M intra prediction modes are selected from the histogram, intra prediction can be performed based on each of the M intra prediction modes and N default modes to obtain (M+N) prediction blocks. Subsequently, the final prediction block of the current block can be obtained through an average operation or a weighted sum operation of the (M+N) prediction blocks.
[0260] The number of default modes N may be predefined in the encoder and decoder. Alternatively, the number of default modes N may be adaptively determined based on at least one of the size / shape of the current block, whether an ISP is applied to the current block, or whether at least one intra-prediction mode selected from the histogram includes a default mode.
[0261] The default mode may include at least one of a planar mode, a DC mode, or a predefined directional mode.
[0262] The encoder and decoder may also be configured to use a predefined mode (e.g., planner mode) among the modes listed above as the default mode.
[0263] Alternatively, the type of default mode may be adaptively determined based on the type of directional mode selected via the histogram. For example, if at least one directional mode selected via the histogram is a vertical mode or a horizontal mode, the planar mode or DC mode may be set as the default mode. On the other hand, if a vertical and / or horizontal mode is not selected via the histogram, the vertical mode or horizontal mode may be set as the default mode.
[0264] Depending on the shape of the current block, the availability of wide-angle intra prediction modes may be determined. For example, if the current block is a square shape with equal width and height, the directional modes selected from the histogram may consist of non-wide-angle intra prediction modes. On the other hand, if the current block is a non-square shape with different widths and heights, some of the directional modes selected from the histogram may be converted into wide-angle intra prediction modes.
[0265] When performing intra prediction based on an intra prediction mode derived through a histogram, a predefined reference line may be used. Here, the predefined reference line may be an adjacent reference line (i.e., index 0) or a non-adjacent reference line (e.g., index 1) adjacent to the current block.
[0266] Information indicating whether to apply a method of performing intra prediction by selecting an intra prediction mode through the histogram described above can be encoded and signaled through a bitstream. The information may be a 1-bit flag.
[0267] Alternatively, whether to select an intra prediction mode through a histogram can be determined based on at least one of the size / shape of the current block, whether an ISP is applied to the current block, whether the current block touches a CTU boundary, or whether neighboring blocks are encoded with intra prediction.
[0268] For example, if at least one of the top neighbor block or left neighbor block of the current block is not encoded in intra prediction, a method for selecting an intra prediction mode through a histogram can be applied to the current block.
[0269] The method of selecting an intra-prediction mode via a histogram can be applied to both the luminance component and the chroma component. Alternatively, the method described above can be applied only to the luminance component. Or, for each of the luminance component and the chroma component, it may be determined independently whether to select an intra-prediction mode via a histogram.
[0270] The intra prediction mode of the current block can also be derived by utilizing the region surrounding the current block. The surrounding region referenced to derive the intra prediction mode of the current block can be referred to as the reference region.
[0271] FIG. 20 is a drawing illustrating a reference area around the current block.
[0272] In FIG. 20, the width w and height h of the current block are both 4.
[0273] As shown in the example illustrated in FIG. 20, a surrounding area adjacent to the current block can be set as a reference area. Specifically, a left reference area adjacent to the left of the current block and a top reference area adjacent to the top of the current block can be set, respectively.
[0274] The size of the left reference area can be represented by w0, and the size of the top reference area can be represented by h0. For example, w0 represents the number of reference sample lines (i.e., reference sample columns) included in the left reference area, and h0 represents the number of reference sample lines (i.e., reference sample rows) included in the top reference area. In this case, w0 and h0 can each be a natural number greater than or equal to 1. Additionally, w0 and h0 may be predefined in the encoder and decoder.
[0275] For example, as shown in the example illustrated in FIG. 20, if the size of the current block is 4x4 or 2x2, the 4x4 or 2x2 area to the left of the current block can be set as the left reference area, and the 4x4 or 2x2 area to the top of the current block can be set as the top reference area.
[0276] Alternatively, at least one of the size w0 and / or h0 of the reference area may be adaptively determined based on at least one of the size of the current block, the shape of the current block, whether Intra Sub-partitioning (ISP) is applied to the current block, or whether the current block is adjacent to a CTU boundary. Here, the size of the current block represents at least one of the width, height, or product of the width and height of the current block. For example, at least one of the left reference area and the top reference area may be determined to be equal to the size of the current block. Alternatively, the left reference area may be set as a square area with a side length equal to the height of the current block, and the top reference area may be set as a square area with a side length equal to the width of the current block.
[0277] Alternatively, the size of the reference area can be determined by comparing the size of the current block with a threshold value. For example, if the size of the current block is greater than or equal to the threshold value, the size of at least one of the left reference area or the top reference area can be set to 4x4. On the other hand, if the size of the current block is less than the threshold value, the size of at least one of the left reference area or the top reference area can be set to 2x2.
[0278] Intra prediction can be performed on a reference region using reference samples from the reference region. Here, reference samples for the left reference region may belong to a column adjacent to the left of the left reference region, and reference samples for the top reference region may belong to a row adjacent to the top of the top reference region.
[0279] In the example illustrated in FIG. 20, w1 and h1 are variables representing the range of reference samples used to perform intra-prediction on a reference region. Specifically, w1 may represent the number of reference samples in the upper-right region of the upper reference region, and h1 may represent the number of reference samples in the lower-left region of the left reference region.
[0280] In the example illustrated in FIG. 20, w1 and h1 are both 4.
[0281] At this time, w1 and h1 may be predefined in the encoder and decoder. For example, w1 and h1 may each be a natural number greater than or equal to 0 or 1.
[0282] Alternatively, at least one of w1 or h1 may be adaptively determined based on at least one of the size of the current block, the shape of the current block, whether Intra Sub-partitioning (ISP) is applied to the current block, or whether the current block is adjacent to a CTU boundary. Here, the size of the current block represents at least one of the width, height, or the product of the width and height of the current block.
[0283] For example, if the current block size (e.g., width or height) is greater than or equal to a threshold value, at least one of w1 or h1 may be set to 8 or 16. On the other hand, if the current block size (e.g., width or height) is less than a threshold value, at least one of w1 or h1 may be set to 4.
[0284] Meanwhile, under the above conditions, w1 can be determined dependently on the width w of the current block, and h1 can be determined dependently on the height h of the current block.
[0285] Alternatively, if the current block is square, w1 and h1 may be identical. On the other hand, if the current block is non-square, w1 and h1 may be different.
[0286] Intra-prediction can be performed on a reference region using reference samples for the reference region. Specifically, after performing intra-prediction on the reference region based on multiple intra-prediction modes, the cost for each prediction result can be calculated.
[0287] Figure 21 shows an example of performing intra prediction on a reference area based on planner mode.
[0288] Specifically, in FIG. 21, reference samples used to perform intra prediction based on planer mode for the left reference area and reference samples used to perform intra prediction based on planer mode for the top reference area are shown.
[0289] As in the example illustrated in FIG. 21, reference samples may be included in the line adjacent to the left of the left reference area and the line adjacent to the top of the top reference area.
[0290] Accordingly, left reference samples for the left reference area are adjacent to the left reference area, whereas top reference samples for the left reference area may not be adjacent to the left reference area.
[0291] Additionally, the top reference samples for the top reference area are adjacent to the top reference area, whereas the left reference samples for the top reference area may not be adjacent to the top reference area.
[0292] Figure 22 shows an example of performing intra prediction on a reference region based on DC mode.
[0293] When intra prediction based on DC mode is performed, the prediction samples can be set as the average value of the reference samples. In this case, as shown in the example illustrated in FIG. 22, the average value for the upper reference area (i.e., DCval) is calculated using only the reference samples adjacent to the upper reference area (i.e., upper reference samples), and the average value for the left reference area can be calculated using only the reference samples adjacent to the left reference area (i.e., left reference samples).
[0294] Figure 23 shows an example of performing intra prediction on a reference region based on a directional mode.
[0295] Meanwhile, depending on the directional mode, intra prediction for the reference region can be performed using only the reference samples belonging to the top row of the top reference region, or intra prediction for the reference region can be performed using only the reference samples belonging to the left column of the left reference region.
[0296] For example, FIG. 23 shows an example in which an intra prediction for a reference region is performed using only the reference samples belonging to the top row of the upper reference region.
[0297] For example, if the index of the directional mode is equal to or greater than the index of the top-left diagonal directional mode (i.e., 34), an intra prediction for the reference region (i.e., top reference region and left reference region) can be performed using only the reference samples belonging to the top row of the top reference region.
[0298] Meanwhile, if the index of the directional mode is smaller than the index of the vertical mode (i.e., 50), the reference samples belonging to the left column of the left reference area (i.e., left reference samples) can be projected to the top row of the top reference area according to the direction of the directional mode to derive the reference samples belonging to the top row (i.e., top reference samples). Meanwhile, if the position projected from the left reference samples is not an integer position, the left reference samples can be interpolated to obtain the top reference samples.
[0299] Although not explicitly stated, if the index of the directional mode is smaller than the index of the top-left diagonal directional mode, an intra prediction for the reference region (i.e., the top reference region and the left reference region) can be performed using only the reference samples belonging to the left column of the left reference region.
[0300] Meanwhile, if the index of the directional mode is greater than the index of the horizontal directional mode (i.e., 18), the reference samples belonging to the top row of the top reference area (i.e., top reference samples) can be projected to the left column of the left reference area according to the direction of the directional mode to derive the reference samples belonging to the left column (i.e., left reference samples). Meanwhile, if the position projected from the left reference sample is not an integer position, the left reference samples can be interpolated to obtain the top reference sample.
[0301] After performing multiple intra predictions on a reference region based on multiple intra prediction modes, the cost for each intra prediction mode can be calculated. Specifically, the cost for an intra prediction mode can be calculated based on the difference between the reconstructed samples within the reference region and the predicted samples within the reference region obtained through intra prediction.
[0302] Meanwhile, the cost function for calculating the cost may include at least one of SAD (Sum of Absolute Difference), SATD (Sum of Absolute Transformed Differences), SSD (Sum of Squared Difference), or MR-SAD (Mean-Removed Sum of Absolute Differences).
[0303] Once the cost for each intra prediction mode is calculated, the intra prediction mode with the lowest cost can be selected.
[0304] Alternatively, N intra-prediction modes with low costs can be selected. Here, N is a natural number greater than or equal to 1, such as 2, 3, or 4.
[0305] Subsequently, based on N intra prediction modes, N intra predictions are performed on the current block to obtain N prediction blocks. Subsequently, the final prediction block of the current block can be obtained by weighting the N prediction blocks.
[0306] Meanwhile, the weights for the weighted sum can be determined by the ratio of the costs of each intra-prediction mode. That is, if the cost of an intra-prediction mode is low, a high weight may be assigned to the prediction block derived from that intra-prediction mode. Conversely, if the cost of an intra-prediction mode is high, a low weight may be assigned to the prediction block derived from that intra-prediction mode.
[0307] Meanwhile, an intra prediction mode can be induced for each of the upper reference area and the left reference area. For example, based on the results of performing multiple intra predictions on the upper reference area, a first intra prediction mode with the lowest cost can be selected, and based on the results of performing multiple intra predictions on the left reference area, a second intra prediction mode with the lowest cost can be selected. Subsequently, based on the first intra prediction mode and the second intra prediction mode, two intra predictions can be performed on the current block to obtain the first prediction block and the second prediction block. Subsequently, the current block can be obtained by weighting the first prediction block and the second prediction block or averaging them.
[0308] Alternatively, at least one intra prediction mode selected in order of lowest cost may be inserted into the MPM list of the current block. For example, a first intra prediction mode derived from the top reference region and a second intra prediction mode derived from the left reference region may be inserted into the MPM list of the current block.
[0309] Afterwards, at least one of the intra prediction mode candidates included in the MPM list can be selected to perform an intra prediction for the current block.
[0310] After generating a prediction block of the current block by intra-prediction, the prediction block of the current block can be corrected. Specifically, the prediction samples within the current block can be corrected based on neighbor samples adjacent to the current block.
[0311] For example, the prediction sample can be corrected based on the following mathematical formula 8.
[0312]
[0313] In mathematical equation 8, R L represents the left reference sample, and R Trepresents the top reference sample. wL represents the weight assigned to the left reference sample, and wT represents the weight assigned to the top reference sample. pred(x, y) represents the predicted sample at position (x, y), and pred'(x, y) represents the corrected predicted sample.
[0314] The weight wL assigned to the left reference sample is determined based on the x-coordinate of the predicted sample, and the weight wT assigned to the top reference sample can be determined based on the y-coordinate of the predicted sample.
[0315] For example, refer to sample R on the left. L The larger the horizontal distance (i.e., x-coordinate difference) between the and the predicted sample, the smaller the value of the weight wL. Accordingly, the left reference sample R L and if the horizontal distance between the predicted sample is greater than the threshold, the weight wL is set to 0, and accordingly, the left reference sample R L ...is not used to correct the prediction sample.
[0316] Likewise, refer to sample R at the top. T The larger the vertical distance (i.e., y-coordinate difference) between and the predicted sample, the smaller the value of the weight wT becomes. Accordingly, the upper reference sample R T and if the vertical distance between the predicted sample is greater than the threshold, the weight wT is set to 0, and accordingly, the upper reference sample R T ...is not used to correct the prediction sample.
[0317] Meanwhile, the left reference sample R L and the horizontal distance between the predicted samples is greater than the threshold value, and the top reference sample R TIf the vertical distance between the and prediction samples is greater than the threshold value, wL and wT are both set to 0, resulting in substantially the same outcome as the prediction samples not being corrected. That is, only the prediction samples belonging to some regions within the current block are corrected, while the prediction samples belonging to the remaining regions may not be corrected.
[0318] Meanwhile, the positions of the left reference sample and the top reference sample may vary depending on the intra prediction mode of the current block.
[0319] Figure 24 shows an example where a prediction sample within the current block is corrected.
[0320] As shown in the example illustrated in FIG. 24, the location / range of the prediction samples to be corrected or the location of the reference sample for correcting the prediction samples may differ depending on the intra prediction mode of the current block.
[0321] For example, as in the example illustrated in FIG. 24(a), when the intra prediction mode of the current block is a non-directional prediction mode, left reference sample R L is set as a reference sample located in the horizontal direction of the prediction sample to be corrected, and the upper reference sample R T It can be set as a reference sample located in the vertical direction of the prediction sample to be corrected.
[0322] As in the example illustrated in FIG. 24(b), when the intra prediction mode of the current block is a vertical direction mode, left reference sample R L can be set as a reference sample located in the horizontal direction of the prediction sample to be corrected. On the other hand, the upper reference sample R T can be set to 0. Furthermore, refer to sample R above. T The weight wT applied to can also be set to 0. That is, if the intra prediction mode of the current block is the vertical direction mode, the prediction sample is the left reference sample R L It can be corrected using only.
[0323] As in the example illustrated in FIG. 24(c), when the intra prediction mode of the current block is the horizontal direction mode, the upper reference sample R T can be set as a reference sample located perpendicular to the prediction sample to be corrected. On the other hand, the left reference sample R L ... can be set to 0. Furthermore, refer to sample R on the left. L The weight wL applied to it can also be set to 0. That is, if the intra prediction mode of the current block is the horizontal direction mode, the prediction sample is, upper reference sample R T It can be corrected using only.
[0324] As in the example illustrated in FIG. 24 (d), when the intra prediction mode of the current block is a directional mode in the upper-right direction, left reference sample R L is set as the reference sample located in the opposite direction of the directional mode (i.e., bottom-left direction) from the prediction sample. Meanwhile, the weight wT assigned to the top reference sample is set to 0, so the top reference sample R T ...is not used to correct the prediction sample.
[0325] Meanwhile, if the position opposite to the directional mode from the predicted sample indicates a fractional position, the fractional position sample derived through the interpolation filter is the left reference sample R L It can be set to. Alternatively, the sample of the integer position closest to the fractional position is the left reference sample R. L It can be set to.
[0326] As in the example illustrated in FIG. 24(e), when the intra-prediction mode of the current block is a directional mode in the lower-left direction, the upper reference sample R T is set as the reference sample located in the opposite direction of the directional mode (i.e., the upper-right direction) from the prediction sample. Meanwhile, the weight wL assigned to the left reference sample is set to 0, so the left reference sample RL ...is not used to correct the prediction sample.
[0327] Meanwhile, if the position opposite to the directional mode from the predicted sample indicates a fractional position, the fractional position sample derived through the interpolation filter is the upper reference sample R T It can be set to. Alternatively, refer to the sample R at the top for the integer position closest to the fractional position. T It can be set to.
[0328] Information indicating whether to correct the predicted block of the current block can be encoded and signaled.
[0329] Alternatively, it may be determined whether to correct the prediction block of the current block based on the size of the current block or the intra prediction mode. For example, it may be determined to correct the prediction block of the current block if at least one of the following is satisfied: the size of the current block is within a preset range or the intra prediction mode of the current block is one of the preset intra prediction modes.
[0330] In the example described above, the weight wL assigned to the left reference sample is determined by the x-axis coordinate of the predicted sample, and the weight wT assigned to the top reference sample is determined by the y-axis coordinate of the predicted sample.
[0331] Unlike the example described, the weight wL and / or weight wT values can be set to fixed values regardless of the coordinates of the predicted sample.
[0332] Alternatively, one of multiple weight candidates may be selected. Information identifying the selected weight candidate may be encoded and signaled. Here, the weight candidate may be a weight wL assigned to the left reference sample or a weight wT assigned to the top reference sample. Alternatively, the weight candidate may consist of a pair of wL and wT. Table 4 shows examples of the composition of weight candidates.
[0333] Index wLwT000132322164834816
[0334] In Table 4, each weight candidate is exemplified as consisting of a pair of wL and wT. Information indicating one of the weight candidates exemplified in Table 4 can be encoded and signaled. When a weight candidate is selected by the index, the weight wL assigned to the left reference sample and the weight wT assigned to the top reference sample can be determined according to the selected weight candidate.
[0335] If the weight candidate relates to wL, the selected weight candidate can be set as the weight wL assigned to the left reference sample. The weight wT assigned to the top reference sample can be derived by differencing the weight wL from a predefined constant.
[0336] Alternatively, if the weight candidate relates to wT, the selected weight candidate can be set as the weight wT assigned to the top reference sample. The weight wL assigned to the left reference sample can be derived by differencing the weight wT from a predefined constant.
[0337] Meanwhile, the number of available weight candidates may be set differently depending on at least one of the current block size or the intra prediction mode.
[0338] In the example described above, the prediction sample is corrected using a reference sample existing outside the current block.
[0339] As another example, the prediction sample can be corrected using a reference prediction sample. The reference prediction sample may be a prediction sample belonging to a line adjacent to the prediction sample.
[0340] Additionally, the reference prediction sample may be adjacent to the prediction sample or specified by the intra-prediction mode of the current block.
[0341] Figures 25 and 26 show examples of correcting a prediction sample using a reference prediction sample.
[0342] The prediction samples within the current block can be corrected based on the following mathematical formula 9.
[0343]
[0344] In Equation 9, pred(x, y) represents the prediction sample to be corrected. pred'(x-1, y) represents the left reference prediction sample adjacent to the left of the prediction sample, and pred'(x, y-1) represents the top reference prediction sample adjacent to the top of the prediction sample.
[0345] The left reference prediction sample may represent a prediction sample adjacent to the left of the prediction sample. Meanwhile, if the prediction sample touches the left boundary of the current block, there is no left prediction sample of the prediction sample. In this case, a reference sample located outside the current block and adjacent to the left of the prediction sample may be set as the left reference prediction sample pred'(x-1, y).
[0346] The top reference prediction sample may represent a prediction sample adjacent to the top of the prediction sample. Meanwhile, if the prediction sample touches the top boundary of the current block, there is no top prediction sample of the prediction sample. In this case, the top reference sample located outside the current block and adjacent to the top of the prediction sample can be set as the top reference prediction sample pred'(x, y-1).
[0347] If the intra prediction mode of the current block is directional mode, a reference prediction sample can be set using the angle line of the directional mode.
[0348] For example, as shown in the example illustrated in FIG. 26, if the intra prediction mode of the current block is a directional mode in the upper right direction, a sample at a position indicating an angular line pointing in the opposite direction of the intra prediction mode of the current block from the prediction sample can be set as a left reference prediction sample. In this case, the left reference prediction sample may belong to the left column of the prediction samples.
[0349] If a prediction sample is adjacent to the left boundary of the current block, there are no prediction samples in the left column of the prediction sample. In this case, a reference sample located outside the current block and situated at the position indicated by an angle line pointing in the opposite direction of the current block's intra-prediction mode from the prediction sample can be set as the left reference prediction sample.
[0350] Similarly, if the intra prediction mode of the current block is a directional mode in the upper-right direction, the sample at the position indicated by the angle line of the current block's intra prediction mode from the prediction samples can be set as the top reference prediction sample. In this case, the top reference prediction sample may belong to the top row of the prediction samples.
[0351] If a prediction sample is adjacent to the top boundary of the current block, there are no prediction samples in the top row of the prediction sample. In this case, a reference sample located outside the current block and situated at the position indicated by the angle line of the current block's intra-prediction mode from the prediction sample can be set as the top reference prediction sample.
[0352] Meanwhile, if the position indicated by the angle line points to a fractional position, adjacent integer position samples can be interpolated to derive a reference prediction sample.
[0353] For example, in the example illustrated in FIG. 26, a reference prediction sample at position b in the left column of the prediction samples can be generated by interpolating an integer position sample located at the top of position b and an integer position sample located at the bottom of position b. Additionally, a reference prediction sample at position a in the top row of the prediction samples can be generated by interpolating an integer position sample located to the left of position a and an integer position sample located to the right of position a.
[0354] The left reference prediction sample and the top reference prediction sample used to correct the prediction sample may represent the prediction sample after the correction is performed.
[0355] Alternatively, the left reference prediction sample and the top reference prediction sample used to correct the prediction sample may represent a prediction sample that has not been corrected.
[0356] Depending on the intra-prediction mode of the current block, a right-reference prediction sample may be used instead of a left-reference prediction sample, or a bottom-reference prediction sample may be used instead of a top-reference prediction sample. Here, the right-reference prediction sample may belong to the right column of the prediction sample, and the bottom-reference prediction sample may belong to the bottom row of the prediction sample.
[0357] Predicted samples can be corrected sequentially according to a predefined order. In the example illustrated in FIGS. 25 and 26, predicted samples are corrected according to the raster scan order.
[0358] w0, w1, and w2 represent the weights assigned to the prediction sample, the weights assigned to the left reference prediction sample, and the weights assigned to the top reference prediction sample, respectively.
[0359] The greater the distance between the prediction sample and the left boundary of the current block, the smaller the weight w1 assigned to the left reference prediction sample can be. Similarly, the greater the distance between the prediction sample and the top boundary of the current block, the smaller the weight w2 assigned to the top reference prediction sample can be.
[0360] Alternatively, the weight w1 assigned to the left reference prediction sample and the weight w2 assigned to the top reference prediction sample may be predefined in the encoder and decoder.
[0361] Alternatively, one of multiple weight candidates may be selected. Information identifying the selected weight candidate may be encoded and signaled. Here, the weight candidate may be a combination of weight w0 assigned to the prediction sample, weight w1 assigned to the left reference prediction sample, and weight w2 assigned to the top reference prediction sample. Table 5 shows an example of the configuration of weight candidates.
[0362] Index w0w1w2064001321616232320332032
[0363] Alternatively, the weight assigned to each sample may be determined according to the intra prediction mode of the current block. For example, if the intra prediction mode of the current block is an upward directional mode (e.g., an intra prediction mode with an index of 34 or higher in FIG. 4), the weight w2 assigned to the upper reference prediction sample may be set to be greater than the weight w1 assigned to the left reference prediction sample. Similarly, if the intra prediction mode of the current block is a left directional mode (e.g., an intra prediction mode with an index less than 34 in FIG. 4), the weight w1 assigned to the left reference prediction sample may be set to be greater than the weight w2 assigned to the upper reference prediction sample.
[0364] Alternatively, conversely, if the intra prediction mode of the current block is an upward directional mode, weight w1 may be set greater than weight w2, and if the intra prediction mode of the current block is a left directional mode, weight w2 may be set greater than weight w1.
[0365] The prediction sample correction method based on the reference prediction sample shown in FIG. 25 or FIG. 26 can be used instead of the prediction sample correction method based on the reference sample shown in FIG. 24.
[0366] Alternatively, depending on the intra-prediction mode of the current block, one of the two correction methods may be selectively used.
[0367] For example, if the intra prediction mode of the current block falls within the first range, a prediction sample correction method based on the reference sample shown in FIG. 24 may be used. On the other hand, if the intra prediction mode of the current block falls within the second range, a prediction sample correction method based on the reference prediction sample shown in FIG. 25 or FIG. 26 may be used.
[0368] For example, if the intra prediction mode of the current block is one of the previously defined intra prediction modes, a prediction sample correction method based on the reference prediction sample shown in FIG. 25 may be used. Here, the previously defined intra prediction mode may include at least one of the planar mode, DC mode, mode 18, and mode 50. On the other hand, if the intra prediction mode of the current block is not one of the previously defined intra prediction modes, a prediction sample correction method based on the reference sample shown in FIG. 24 may be used.
[0369] Meanwhile, the prediction sample correction method based on the reference prediction sample illustrated in FIG. 26 can be used only when the intra prediction mode of the current block is a directional mode that does not pass through an integer position.
[0370] Specifically, when the intra-prediction mode of the current block is a directional mode passing through integer positions, the values of the reference prediction sample (e.g., upper reference prediction sample) located on the angle line facing the forward direction of the intra-prediction mode from the prediction sample, and the reference prediction sample (e.g., left reference prediction sample) located on the angle line facing the opposite direction of the intra-prediction mode from the prediction sample, have the same value. In this case, there is no benefit in correcting the prediction samples. Accordingly, when the intra-prediction mode of the current block is a directional mode passing through integer positions, the prediction sample correction method based on the reference prediction sample illustrated in FIG. 26 may not be used.
[0371] That is, if the intra prediction mode of the current block is one of the predefined intra prediction modes, a prediction sample correction method based on the reference prediction sample illustrated in FIG. 26 may be used. Here, the predefined intra prediction mode may include at least one directional mode that does not pass through an integer position. On the other hand, if the intra prediction mode of the current block is not one of the predefined intra prediction modes, a prediction sample correction method based on the reference sample illustrated in FIG. 24 may be used.
[0372] Alternatively, information indicating a correction method for a prediction sample may be encoded and signaled. Based on the above information, the decoder may determine whether to apply a prediction sample correction method based on a reference sample or a prediction sample correction method based on neighboring prediction samples.
[0373] The above-described prediction sample correction method can be applied only when intra-prediction is applied to the current block.
[0374] Alternatively, even if a prediction method different from the intra prediction is applied to the current block, the prediction samples within the current block may be corrected based on the prediction sample correction method described above.
[0375] For example, a prediction block can be derived based on the movement information of the current block, and then the derived prediction block can be corrected based on the prediction sample correction method described above. That is, the prediction sample of the current block derived from the reference picture can be corrected based on a reference sample spatially adjacent to the current block or a reference prediction sample within the current block.
[0376] When inter-prediction is applied to the current block, the prediction samples can be corrected in the same way as when the intra-prediction mode of the current block is a non-directional mode. That is, when inter-prediction is applied to the current block, the reference sample or reference prediction sample can be determined by considering the intra-prediction mode of the current block as a non-directional mode (i.e., DC or planar mode).
[0377] Alternatively, if inter-prediction is applied to the current block, the prediction sample can be corrected based on the intra-prediction mode of a neighboring block adjacent to the current block. That is, if inter-prediction is applied to the current block, the intra-prediction mode of the neighboring block can be considered as the intra-prediction mode of the current block to determine the reference sample or reference prediction sample.
[0378] Alternatively, if inter-prediction is applied to the current block and a reference block within a reference picture indicated by the motion information of the current block is encoded / decoded using intra-prediction, the prediction sample can be corrected based on the intra-prediction mode of the reference block. That is, if inter-prediction is applied to the current block, the intra-prediction mode of the reference block is considered to be the intra-prediction mode of the current block, and the reference sample or reference prediction sample can be determined.
[0379] Meanwhile, even when intra-block copying is applied to the current block, the prediction samples of the current block can be corrected. Meanwhile, when intra-block copying is applied to the current block, the prediction samples can be corrected in the same way as when inter-prediction is applied to the current block.
[0380] Figure 27 is a diagram illustrating the process of performing inter-prediction in the encoder and decoder.
[0381] As shown in the example illustrated in FIG. 27, motion information for the current block can be obtained to perform inter-prediction (S2710). Here, the motion information may include at least one of a motion vector, a reference picture index, or a weight applied to the prediction block. For the current block, motion information for at least one of the L0 direction or the L1 direction may be obtained.
[0382] In the encoder, motion information of the current block can be derived through motion estimation, and the derived motion information can be encoded and signaled to the decoder. Meanwhile, the encoding / decoding of motion information may be based on a motion information merging mode, a motion vector prediction mode, a template-based motion estimation method, or a two-way matching method, which will be described later.
[0383] In the decoder, movement information of the current block can be derived based on the information transmitted from the encoder.
[0384] Alternatively, motion information of the current block can be derived in the decoder in the same way as in the encoder. This method can be referred to as decoder-side motion estimation.
[0385] When motion information of the current block is derived, a prediction block for the current block can be obtained based on the derived motion information (S2720). For example, a reference block spaced apart by a motion vector from the position of the current block in the reference picture can be set as the prediction block of the current block.
[0386] Below, the process of performing inter-prediction will be explained in more detail.
[0387] The motion information of the current block can be generated through motion estimation.
[0388] Figure 28 shows an example where motion estimation is performed.
[0389] In Fig. 28, it was assumed that the Picture Order Count (POC) of the current picture is T, and the POC of the reference picture is (T-1).
[0390] A search range for motion estimation can be set from the same location as the reference point of the current block within the reference picture. Here, the reference point may be the location of the top-left sample of the current block.
[0391] For example, in FIG. 28, a rectangle of sizes (w0+w1) and (h0+h1) centered on a reference point is exemplified as being set as a search range. In the above example, w0, w1, h0, and h1 may have mutually identical values. Alternatively, at least one of w0, w1, h0, and h1 may be set to have a different value. Or, the sizes of w0, w1, h0, and h1 may be determined so as not to exceed the Coding Tree Unit (CTU) boundary, slice boundary, tile boundary, or picture boundary.
[0392] Within the search range, reference blocks of the same size as the current block can be set, and the cost of each reference block relative to the current block can be measured. The cost can be calculated using the similarity between the two blocks.
[0393] For example, the cost can be calculated based on the sum of the absolute differences between the original samples in the current block and the original samples (or restored samples) in the reference block. The smaller the sum of the absolute values, the lower the cost can be.
[0394] Afterward, the cost of each of the reference blocks is compared, and the reference block with the optimal cost can be set as the prediction block of the current block.
[0395] In addition, the distance between the current block and the reference block can be set as a motion vector. Specifically, the x-coordinate difference and the y-coordinate difference between the current block and the reference block can be set as a motion vector.
[0396] Furthermore, the index of the picture containing the reference block identified through motion estimation is set as the reference picture index.
[0397] In addition, the prediction direction can be set based on whether the reference picture belongs to the L0 reference picture list or the L1 reference picture list.
[0398] Additionally, motion estimation can be performed for the L0 direction and the L1 direction, respectively. If prediction is performed for both the L0 direction and the L1 direction, motion information for the L0 direction and motion information for the L1 direction can be generated, respectively.
[0399] FIGS. 29 and FIGS. 30 illustrate an example in which a predicted block of the current block is generated based on motion information generated through motion estimation.
[0400] FIG. 29 shows an example of generating a prediction block with unidirectional (i.e., L0 direction) prediction, and FIG. 30 shows an example of generating a prediction block with bidirectional (i.e., L0 and L1 directions) prediction.
[0401] In the case of unidirectional prediction, a prediction block of the current block is generated using a single motion information. For example, the motion information may include an L0 motion vector, an L0 reference picture index, and prediction direction information covering the L0 direction.
[0402] In the case of bidirectional prediction, a prediction block is generated using two sets of motion information. For example, a reference block for the L0 direction, specified based on motion information for the L0 direction (L0 motion information), can be set as the L0 prediction block, and a reference block for the L1 direction, specified based on motion information for the L1 direction (L1 motion information), can be generated as the L1 prediction block. Subsequently, the prediction block of the current block can be generated by performing a weighted sum of the L0 prediction block and the L1 prediction block.
[0403] In the example illustrated in FIGS. 28 to 30, the L0 reference picture is shown as existing in the direction before the current picture (i.e., having a smaller POC value than the current picture), and the L1 reference picture is shown as existing in the direction after the current picture (i.e., having a larger POC value than the current picture).
[0404] However, unlike the illustrated example, the L0 reference picture may exist in the direction after the current picture, or the L1 reference picture may exist in the direction before the current picture. For example, both the L0 reference picture and the L1 reference picture may exist in the direction before the current picture, or both may exist in the direction after the current picture. Alternatively, bidirectional prediction may be performed using the L0 reference picture existing in the direction after the current picture and the L1 reference picture existing in the direction before the current picture.
[0405] The motion information of the block for which inter-prediction has been performed can be stored in memory. In this case, the motion information can be stored on a sample basis. Specifically, the motion information of the block to which a specific sample belongs can be stored as the motion information of that specific sample. The stored motion information can be used to derive the motion information of neighboring blocks to be encoded / decoded in the future.
[0406] In the encoder, information encoding residual samples corresponding to the difference value between the sample of the current block (i.e., the original sample) and the prediction sample, and motion information necessary to generate the prediction block, can be signaled to the decoder. In the decoder, information regarding the signaled difference value is decoded to derive a difference sample, and a prediction sample within the prediction block generated using the motion information is added to the difference sample to generate a reconstructed sample.
[0407] At this time, one of a plurality of inter-prediction modes may be selected to effectively compress motion information signaled to the decoder. Here, the plurality of inter-prediction modes may include a motion information merging mode and a motion vector prediction mode.
[0408] The motion vector prediction mode is a mode that signals by encoding the difference value between the motion vector and the motion vector prediction value. Here, the motion vector prediction value can be derived based on motion information of surrounding blocks or surrounding samples adjacent to the current block.
[0409] Figure 31 shows the location referenced to derive the motion vector prediction value.
[0410] For the sake of convenience of explanation, the current block is assumed to have a size of 4x4.
[0411] In the illustrated example, 'LB' represents a sample contained in the leftmost column and bottom row within the current block. 'RT' represents a sample contained in the rightmost column and top row within the current block. A0 through A4 represent samples adjacent to the left of the current block, and B0 through B5 represent samples adjacent to the top of the current block. For example, A1 represents a sample adjacent to the left of LB, and B1 represents a sample adjacent to the top of RT.
[0412] Col indicates the location of a sample adjacent to the bottom-right of the current block within the co-located picture. The co-located picture is a picture distinct from the current picture, and information to identify the co-located picture (e.g., co-located picture index) can be explicitly encoded and signaled in the bitstream. Alternatively, a reference picture having a predefined reference picture index can be set as the co-located picture.
[0413] The motion vector prediction value of the current block can be derived from at least one motion vector prediction candidate included in the Motion Vector Prediction List.
[0414] The number of motion vector prediction candidates that can be inserted into the motion vector prediction list (i.e., the size of the list) may be predefined in the encoder and decoder. For example, the maximum number of motion vector prediction candidates may be 2.
[0415] A motion vector stored at the location of a neighbor sample adjacent to the current block, or a scaled motion vector derived by scaling the said motion vector, can be inserted into the motion vector prediction list as a motion vector prediction candidate. At this time, the motion vector prediction candidate can be derived by scanning the neighbor samples adjacent to the current block according to a predefined order.
[0416] For example, it is possible to check whether a motion vector is stored at each location in the order from A0 to A4. Then, according to the above scan order, the first available motion vector found can be inserted into the motion vector prediction list as a motion vector prediction candidate.
[0417] As another example, checking whether a motion vector is stored at each location in the order from A0 to A4 allows the motion vector at the location with the same reference picture as the current block, found first, to be inserted into the motion vector prediction list as a motion vector prediction candidate. If no neighbor sample with the same reference picture as the current block exists, a motion vector prediction candidate can be derived based on the first available vector found. Specifically, the first available motion vector found can be scaled, and the scaled motion vector can be inserted into the motion vector prediction list as a motion vector prediction candidate. In this case, scaling can be performed based on the difference in output order between the current picture and the reference picture (i.e., POC difference) and the difference in output order between the current picture and the neighbor sample's reference picture (i.e., POC difference).
[0418] Furthermore, it is possible to check whether a motion vector is stored at each location in the order from B0 to B5. Then, according to the above scan order, the first available motion vector found can be inserted into the motion vector prediction list as a motion vector prediction candidate.
[0419] As another example, checking whether a motion vector is stored at each location in the order from B0 to B5 allows the motion vector at the location with the same reference picture as the current block, found first, to be inserted into the motion vector prediction list as a motion vector prediction candidate. If no neighbor sample with the same reference picture as the current block exists, a motion vector prediction candidate can be derived based on the first available vector found. Specifically, the first available motion vector found can be scaled, and the scaled motion vector can be inserted into the motion vector prediction list as a motion vector prediction candidate. In this case, scaling can be performed based on the difference in output order between the current picture and the reference picture (i.e., POC difference) and the difference in output order between the current picture and the neighbor sample's reference picture (i.e., POC difference).
[0420] As in the example described above, motion vector prediction candidates can be derived from samples adjacent to the left of the current block, and motion vector prediction candidates can be derived from samples adjacent to the top of the current block.
[0421] In this case, a motion vector prediction candidate derived from the left sample may be inserted into the motion vector prediction list before a motion vector prediction candidate derived from the top sample. In this case, the index assigned to the motion vector prediction candidate derived from the left sample may have a smaller value than that of the motion vector prediction candidate derived from the top sample.
[0422] Conversely, motion vector prediction candidates derived from the top sample may be inserted into the motion vector prediction list before motion vector prediction candidates derived from the left sample.
[0423] Among the motion vector prediction candidates included in the above motion vector prediction list, the motion vector prediction candidate with the highest encoding efficiency can be set as the motion vector prediction value (Motion Vector Predictor, MVP) of the current block. Additionally, index information pointing to the motion vector prediction candidate set as the motion vector prediction value of the current block among multiple motion vector prediction candidates can be encoded and signaled to the decoder. If the number of motion vector prediction candidates is two, the index information may be a 1-bit flag (e.g., an MVP flag). Furthermore, the motion vector difference value (Motion Vector Difference, MVD), which is the difference between the motion vector of the current block and the motion vector prediction value, can be encoded and signaled to the decoder.
[0424] The decoder can construct a motion vector prediction list in the same way as the encoder. Additionally, it can decode index information from the bitstream and select one of multiple motion vector prediction candidates based on the decoded index information. The selected motion vector prediction candidate can be set as the motion vector prediction value of the current block.
[0425] In addition, the motion vector difference value can be decoded from the bitstream. Subsequently, the motion vector prediction value and the motion vector difference value are combined to derive the motion vector of the current block.
[0426] When bidirectional prediction is applied to the current block, motion vector prediction lists can be generated for both the L0 and L1 directions. That is, the motion vector prediction lists can consist of motion vectors of the same direction. Accordingly, the motion vector of the current block and the motion vector prediction candidates included in the motion vector prediction lists have the same direction.
[0427] When the motion vector prediction mode is selected, the reference picture index and prediction direction information can be explicitly encoded and signaled to the decoder. For example, if multiple reference pictures exist on a reference picture list and motion estimation is performed for each of the multiple reference pictures, a reference picture index for identifying the reference picture from which the motion information of the current block was derived among the multiple reference pictures can be explicitly encoded and signaled to the decoder.
[0428] In this case, if the reference picture list contains only one reference picture, the encoding / decoding of the reference picture index may be omitted.
[0429] The prediction direction information may be an index indicating one of L0 unidirectional prediction, L1 unidirectional prediction, or bidirectional prediction. Alternatively, an L0 flag indicating whether a prediction for the L0 direction is performed and an L1 flag indicating whether a prediction for the L1 direction is performed may be encoded and signaled, respectively.
[0430] The motion information merging mode is a mode that sets the motion information of the current block to be identical to the motion information of neighboring blocks. In the motion information merging mode, motion information can be encoded or decoded using a motion information merging list.
[0431] Motion information merging candidates can be derived based on motion information from neighboring blocks or neighbor samples adjacent to the current block. For example, after defining reference locations around the current block, it is possible to check whether motion information exists at the defined reference locations. If motion information exists at the defined reference locations, the motion information at those locations can be inserted into the motion information merging list as a motion information merging candidate.
[0432] In the example of FIG. 31, the previously defined reference positions may include at least one of A0, A1, B0, B1, B5, and Col. Furthermore, motion information merging candidates can be derived in the order of A1, B1, B0, A0, B5, and Col.
[0433] The motion information of the motion information merge candidate with the optimal cost among the motion information merge candidates included in the motion information merge list can be set as the motion information of the current block. Furthermore, index information (e.g., merge index) pointing to the selected motion information merge candidate among multiple motion information merge candidates can be encoded and transmitted to a decoder.
[0434] In the decoder, a motion information merge list can be configured in the same way as in the encoder. Then, motion information merge candidates can be selected based on the merge index decoded from the bitstream. The motion information of the selected motion information merge candidate can be set as the motion information of the current block.
[0435] Unlike the motion vector prediction list, the motion information merging list consists of a single list regardless of the prediction direction. That is, the motion information merging candidates included in the motion information merging list may have only L0 motion information or L1 motion information, or they may have bidirectional motion information (i.e., L0 motion information and L1 motion information).
[0436] Movement information of the current block can also be derived using a restoration sample area around the current block. Here, the restoration sample area used to derive the movement information of the current block may be referred to as a template.
[0437] Figure 32 is a diagram illustrating a template-based motion estimation method.
[0438] In FIG. 28, it was explained that the predicted block of the current block is determined based on the cost between the current block and the reference block within the search range. According to the present embodiment, unlike FIG. 28, motion estimation for the current block can be performed based on the cost between a template adjacent to the current block (hereinafter referred to as the current template) and a reference template having the same size and shape as the current template.
[0439] For example, the cost can be calculated based on the sum of the absolute differences between the restored samples in the current template and the restored samples in the reference block. The smaller the sum of the absolute values, the lower the cost can be.
[0440] When a reference template with the optimal cost and the current template within the search range is determined, a reference block adjacent to the reference template can be set as the predicted block of the current block.
[0441] Additionally, movement information of the current block can be set based on the distance between the current block and the reference block, the index of the picture to which the reference block belongs, and whether the reference picture is included in the L0 or L1 reference picture list.
[0442] Since the template is defined by the previously restored area surrounding the current block, the decoder can perform motion estimation itself in the same manner as the encoder. Accordingly, when deriving motion information using a template, there is no need to encode and signal the motion information, except for information indicating whether the template is being used.
[0443] The current template may include at least one of an area adjacent to the top of the current block or an area adjacent to the left. In this case, the area adjacent to the top may include at least one row, and the area adjacent to the left may include at least one column.
[0444] Figure 33 shows examples of template configurations.
[0445] The current template can be configured following one of the examples shown in Fig. 33.
[0446] Alternatively, unlike the example illustrated in FIG. 33, the template may be configured using only the area adjacent to the left of the current block, or only the area adjacent to the top of the current block.
[0447] The size and / or shape of the current template may be predefined in the encoder and decoder.
[0448] Alternatively, multiple template candidates of different sizes and / or shapes can be defined, and index information specifying one of the multiple template candidates can be encoded and signaled to a decoder.
[0449] Alternatively, one of a plurality of template candidates may be adaptively selected based on at least one of the size, shape, or location of the current block. For example, if the current block touches the top boundary of the CTU, the current template may be configured using only the area adjacent to the left of the current block.
[0450] Motion estimation based on a template can be performed for each of the reference pictures stored in the reference picture list. Alternatively, motion estimation can be performed for only some of the reference pictures. For example, motion estimation can be performed only for the reference picture with a reference picture index of 0, or only for reference pictures with a reference picture index smaller than a threshold value, or for reference pictures with a POC difference with the current picture smaller than a threshold value.
[0451] Alternatively, after explicitly encoding and signaling the reference picture index, motion estimation can be performed only on the reference picture pointed to by the reference picture index.
[0452] Alternatively, motion estimation can be performed on a reference picture of a neighbor block corresponding to the current template. For example, if the template consists of a left neighbor area and a top neighbor area, at least one reference picture can be selected using at least one of the reference picture index of the left neighbor block or the reference picture index of the top neighbor block. Subsequently, motion estimation can be performed on the selected at least one reference picture.
[0453] Information indicating whether template-based motion estimation has been applied can be encoded and signaled to a decoder. The information may be a 1-bit flag. For example, if the flag is true (1), it indicates that template-based motion estimation is applied to the L0 and L1 directions of the current block. On the other hand, if the flag is false (0), it indicates that template-based motion estimation is not applied. In this case, motion information of the current block can be derived based on a motion information merging mode or a motion vector prediction mode.
[0454] Conversely to the above, if it is determined that the motion information merging mode and the motion vector prediction mode are not applied to the current block, then a template-based motion estimation may be applied. For example, if a first flag indicating whether the motion information merging mode is applied and a second flag indicating whether the motion vector prediction mode is applied are both 0, then a template-based motion estimation may be performed.
[0455] For each of the L0 and L1 directions, information indicating whether template-based motion estimation has been applied can be signaled. That is, whether template-based motion estimation is applied to the L0 direction and whether it is applied to the L1 direction can be determined independently of each other. Accordingly, while template-based motion estimation is applied to either the L0 or L1 direction, another mode (e.g., motion information merging mode or motion vector prediction mode) may be applied to the other.
[0456] If template-based motion estimation is applied to both the L0 and L1 directions, the prediction block of the current block can be generated based on the weighted sum operation of the L0 prediction block and the L1 prediction block. Alternatively, even if template-based motion estimation is applied to one of the L0 and L1 directions, but another mode is applied to the other, the prediction block of the current block can be generated based on the weighted sum operation of the L0 prediction block and the L1 prediction block.
[0457] Alternatively, a template-based motion estimation method may be inserted as a motion information merging candidate in the motion information merging mode or as a motion vector prediction candidate in the motion vector prediction mode. In this case, whether to apply the template-based motion estimation method may be determined based on whether the selected motion information merging candidate or the selected motion vector prediction candidate points to the template-based motion estimation method.
[0458] Based on the two-way matching method, movement information of the current block can also be generated.
[0459] Figure 34 is a diagram illustrating a motion estimation method based on a two-way matching method.
[0460] The two-way matching method can be performed only when the temporal order of the current picture (i.e., POC) exists between the temporal order of the L0 reference picture and the temporal order of the L1 reference picture.
[0461] When a two-way matching method is applied, a search range can be set for each of the L0 reference picture and the L1 reference picture. In this case, an L0 reference picture index for identifying the L0 reference picture and an L1 reference picture index for identifying the L1 reference picture can be encoded and signaled, respectively.
[0462] As another example, only the L0 reference picture index is encoded and signaled, and an L1 reference picture can be selected based on the distance between the current picture and the L0 reference picture (hereinafter referred to as the L0 POC difference). For example, among the L1 reference pictures included in the L1 reference picture list, an L1 reference picture can be selected in which the absolute value of the distance from the current picture (hereinafter referred to as the L1 POC difference) is equal to the absolute value of the distance between the current picture and the L0 reference picture. If there is no L1 reference picture having an L1 POC difference identical to the L0 POC difference, the L1 reference picture among the L1 reference pictures in which the L1 POC difference is most similar to the L0 POC difference can be selected.
[0463] At this time, among the L1 reference pictures, only L1 reference pictures that have a different temporal direction from the L0 reference picture can be used for two-way matching. For example, if the POC of the L0 reference picture is smaller than that of the current picture, one of the L1 reference pictures with a POC larger than that of the current picture can be selected.
[0464] Conversely to the above, only the L1 reference picture index is encoded and signaled, and the L0 reference picture is selected based on the distance between the current picture and the L1 reference picture.
[0465] Alternatively, a two-way matching method may be performed using the L0 reference picture closest to the current picture among the L0 reference pictures and the L1 reference picture closest to the current picture among the L1 reference pictures.
[0466] Alternatively, a two-way matching method may be performed using an L0 reference picture (e.g., index 0) assigned to a previously defined index in the L0 reference picture list and an L1 reference picture (e.g., index 0) assigned to a previously defined index in the L1 reference picture list.
[0467] Alternatively, LX (X is 0 or 1) reference picture may be selected based on an explicitly signaled reference picture index, and L|X-1| reference picture may be selected as the reference picture closest to the current picture among L|X-1| reference pictures, or as a reference picture having a predefined index within the L|X-1| reference picture list.
[0468] As another example, L0 and / or L1 reference pictures can be selected based on movement information of neighbor blocks of the current block. For example, L0 and / or L1 reference pictures to be used for bidirectional matching can be selected using the reference picture index of the left or top neighbor block of the current block.
[0469] The search range can be set within a predetermined range from the collocated blocks within the reference picture.
[0470] As another example, the search range can be set based on initial movement information. The initial movement information can be derived from the neighbor blocks of the current block. For example, the movement information of the current block's left neighbor block or top neighbor block can be set as the current block's initial movement information.
[0471] When the two-way matching method is applied, the L0 motion vector and the L1 motion vector are set in opposite directions. This indicates that the sign of the L0 motion vector and the L1 motion vector have opposite signs. Additionally, the magnitude of the LX motion vector can be proportional to the distance between the current picture and the LX reference picture (i.e., the POC difference).
[0472] Subsequently, motion estimation can be performed using the cost between a reference block (hereinafter referred to as the L0 reference block) within the search range of the L0 reference picture and a reference block (hereinafter referred to as the L1 reference block) within the search range of the L1 reference picture.
[0473] If an L0 reference block is selected with a vector (x, y) with respect to the current block, an L1 reference block can be selected at a location spaced (-Dx, -Dy) away from the current block. Here, D can be determined by the ratio of the distance between the current picture and the L0 reference picture to the distance between the L1 reference picture and the current picture.
[0474] For example, in the example illustrated in FIG. 34, the absolute value of the distance between the current picture (T) and the L0 reference picture (T-1) and the absolute value of the distance between the current picture (T) and the L1 reference picture (T+1) are mutually identical. Accordingly, in the illustrated example, the L0 motion vector (x0, y0) and the L1 motion vector (x1, y1) have the same magnitude but opposite distances. If the L1 reference picture with POC (T+2) is used, the L1 motion vector (x1, y1) will be set to (-2*x0, -2*y0).
[0475] When the L0 reference block and L1 reference block having the optimal cost are selected, the L0 reference block and L1 reference block can be set as the L0 prediction block and L1 prediction block of the current block, respectively. Subsequently, the final prediction block of the current block can be generated through a weighted sum operation of the L0 reference block and L1 reference block.
[0476] When a two-way matching method is applied, the decoder can perform motion estimation in the same way as the encoder. Accordingly, information indicating whether a two-way motion matching method is applied is explicitly encoded / decoded, while the encoding / decoding of motion information, such as motion vectors, can be omitted. As previously explained, at least one of the L0 reference picture index or the L1 reference picture index may be explicitly encoded / decoded.
[0477] As another example, information indicating whether a two-way matching method has been applied may be explicitly encoded / decoded; if the two-way matching method has been applied, the L0 motion vector or the L1 motion vector may be explicitly encoded and signaled. If the L0 motion vector is signaled, the L1 motion vector can be derived based on the POC difference between the current picture and the L0 reference picture and the POC difference between the current picture and the L1 reference picture. If the L1 motion vector is signaled, the L0 motion vector can be derived based on the POC difference between the current picture and the L0 reference picture and the POC difference between the current picture and the L1 reference picture. In this case, the encoder may explicitly encode the smaller of the L0 motion vector and the L1 motion vector.
[0478] Information indicating whether a two-way matching method is applied may be a 1-bit flag. For example, if the flag is true (e.g., 1), it may indicate that a two-way matching method is applied to the current block. If the flag is false (e.g., 0), it may indicate that a two-way matching method is not applied to the current block. In this case, a motion information merging mode or a motion vector prediction mode may be applied to the current block.
[0479] Conversely to the above, a two-way matching method may be applied only when it is determined that the motion information merging mode and the motion vector prediction mode are not applied to the current block. For example, if both the first flag indicating whether the motion information merging mode is applied and the second flag indicating whether the motion vector prediction mode is applied are 0, the two-way matching method may be applied.
[0480] Alternatively, a two-way matching method may be inserted as a motion information merging candidate in the motion information merging mode or as a motion vector prediction candidate in the motion vector prediction mode. In this case, whether to apply the two-way matching method may be determined based on whether the selected motion information merging candidate or the selected motion vector prediction candidate points to the two-way matching method.
[0481] In the two-way matching method, it was exemplified that the temporal order of the current picture must exist between the temporal order of the L0 reference picture and the temporal order of the L1 reference picture. A one-way matching method, to which the constraints of the above two-way matching method do not apply, may be applied to generate a predicted block of the current block. Specifically, in the one-way matching method, two reference pictures with a temporal order (i.e., POC) smaller than the current block or two reference pictures with a temporal order larger than the current block may be used. In this case, both of the two reference pictures may be derived from the L0 reference picture list or the L1 reference picture list. Alternatively, one of the two reference pictures may be derived from the L0 reference picture list and the other from the L1 reference picture list.
[0482] Figure 35 is a diagram illustrating a motion estimation method based on a unidirectional matching method.
[0483] A unidirectional matching method can be performed based on two reference pictures (i.e., Forward reference pictures) that have a smaller POC than the current picture, or two reference pictures (i.e., Backward reference pictures) that have a larger POC than the current picture. In FIG. 35, motion estimation based on a unidirectional matching method is exemplified as being performed based on a first reference picture (T-1) and a second reference picture (T-2) that have a smaller POC than the current picture (T).
[0484] At this time, a first reference picture index for identifying the first reference picture and a second reference picture index for identifying the second reference picture can each be encoded and signaled. At this time, among the two reference pictures used in the unidirectional matching method, the reference picture with a smaller POC difference with the current picture can be set as the first reference picture. Accordingly, when the first reference picture is selected, only reference pictures among the reference pictures included in the reference picture list that have a POC difference with the current picture greater than that of the first reference picture can be set as the second reference picture. The second reference picture index can be set to point to the index of one of the reordered reference pictures after reordering the reference pictures that have the same temporal direction as the first reference picture and have a POC difference with the current picture greater than that of the first reference picture.
[0485] Conversely to the above, the reference picture with the larger POC difference with the current picture among the two reference pictures may be set as the first reference picture. In this case, the index of the second reference picture may be set to point to the index of one of the reordered reference pictures after reordering the reference pictures that have the same temporal direction as the first reference picture and have a smaller POC difference with the current picture than the first reference picture.
[0486] Alternatively, a unidirectional matching method may be performed using a reference picture assigned to a predefined index within the reference picture list and a reference picture having the same temporal direction. For example, a reference picture with an index of 0 within the reference picture list may be set as the first reference picture, and among the reference pictures with the same temporal direction as the first reference picture within the reference picture list, the reference picture with the smallest index may be selected as the second reference picture.
[0487] Both the first reference picture and the second reference picture can be selected from the L0 reference picture list or the L1 reference picture list. In FIG. 35, two L0 reference pictures are shown being used in a unidirectional matching method. Alternatively, the first reference picture may be selected from the L0 reference picture list and the second reference picture may be selected from the L1 reference picture list.
[0488] Information indicating whether the first reference picture and / or the second reference picture belongs to the L0 reference picture list or the L1 reference picture list may be additionally encoded / decoded.
[0489] Alternatively, unidirectional matching can be performed using one of the L0 reference picture list and the L1 reference picture list set as the default. Alternatively, two reference pictures can be selected from the L0 reference picture list and the L1 reference picture list that has a larger number of reference pictures.
[0490] Afterwards, a search range can be set within the first reference picture and the second reference picture.
[0491] The search range can be set within a predetermined range from the collocated blocks within the reference picture.
[0492] As another example, the search range can be set based on initial movement information. The initial movement information can be derived from the neighbor blocks of the current block. For example, the movement information of the current block's left neighbor block or top neighbor block can be set as the current block's initial movement information.
[0493] Subsequently, motion estimation can be performed using the cost between the first reference block within the search range of the first reference picture and the second reference block within the search range of the second reference picture.
[0494] At this time, under the unidirectional matching method, the magnitude of the motion vector should be set to increase in proportion to the distance between the current picture and the reference picture. Specifically, if a first reference block is selected with a vector (x, y) with respect to the current picture, the second reference block should be separated from the current block by (Dx, Dy). Here, D can be determined by the ratio of the distance between the current picture and the first reference picture to the distance between the current picture and the second reference picture.
[0495] For example, in the example of FIG. 35, the distance between the current picture and the first reference picture (i.e., POC difference) is 1, and the distance between the current picture and the second reference picture (i.e., POC difference) is 2. Accordingly, if the first motion vector for the first reference block in the first reference picture is (x0, y0), the second motion vector (x1, y1) for the second reference block in the second reference picture can be set to (2x0, 2y0).
[0496] When a first reference block and a second reference block having optimal costs are selected, the first reference block and the second reference block can be set as the first prediction block and the second prediction block of the current block, respectively. Subsequently, the final prediction block of the current block can be generated through a weighted sum operation of the first prediction block and the second prediction block.
[0497] When a unidirectional matching method is applied, the decoder can perform motion estimation in the same way as the encoder. Accordingly, information indicating whether a unidirectional motion matching method is applied is explicitly encoded / decoded, while the encoding / decoding of motion information, such as motion vectors, can be omitted. As previously explained, at least one of the first reference picture index or the second reference picture index may be explicitly encoded / decoded.
[0498] As another example, information indicating whether a unidirectional matching method has been applied may be explicitly encoded / decoded, and if a unidirectional matching method has been applied, a first motion vector or a second motion vector may be explicitly encoded and signaled. If the first motion vector is signaled, the second motion vector may be derived based on the POC difference between the current picture and the first reference picture and the POC difference between the current picture and the second reference picture. If the second motion vector is signaled, the first motion vector may be derived based on the POC difference between the current picture and the first reference picture and the POC difference between the current picture and the second reference picture. In this case, the encoder may explicitly encode the one with the smaller magnitude between the first motion vector and the second motion vector.
[0499] Information indicating whether a unidirectional matching method is applied may be a 1-bit flag. For example, if the flag is true (e.g., 1), it may indicate that a unidirectional matching method is applied to the current block. If the flag is false (e.g., 0), it may indicate that a unidirectional matching method is not applied to the current block. In this case, a motion information merging mode or a motion vector prediction mode may be applied to the current block.
[0500] Conversely to the above, a unidirectional matching method may be applied only when it is determined that the motion information merging mode and the motion vector prediction mode are not applied to the current block. For example, if both the first flag indicating whether the motion information merging mode is applied and the second flag indicating whether the motion vector prediction mode is applied are 0, a unidirectional matching method may be applied.
[0501] Alternatively, a unidirectional matching method may be inserted as a motion information merging candidate in the motion information merging mode or as a motion vector prediction candidate in the motion vector prediction mode. In this case, whether to apply the unidirectional matching method may be determined based on whether the selected motion information merging candidate or the selected motion vector prediction candidate points to the unidirectional matching method.
[0502] By adjusting the precision of the motion vector, the movement of an object between frames can also be detected. Specifically, the position of each pixel within a picture is specified as an integer. On the other hand, the movement of an object between frames may not be represented by an integer position.
[0503] Considering this, motion vectors can be explored in fractional pixel units by performing interpolation on the reference picture.
[0504] Figures 36 and 37 illustrate examples in which prediction blocks are generated according to the precision of the motion vectors.
[0505] FIG. 36 shows the position of the current block in the current picture, and FIG. 37 illustrates an example in which a predicted block is acquired according to a motion vector.
[0506] Specifically, FIG. 37 (a) shows an example where the motion vector precision is in integer pixel units, and FIG. 37 (b) and (c) show examples where the motion vector precision is in 1 / 2 pixel units and 1 / 4 pixel units, respectively.
[0507] Motion vector precision can also be set in units smaller than those described. For example, motion vector precision can be set in units of 1 / 8 pixel, 1 / 16 pixel, or 1 / 32 pixel.
[0508] When the motion vector of the current block is expressed in integer units, a reference block composed of integer position samples can be set as the prediction block of the current block, as in the example illustrated in FIG. 37 (a).
[0509] On the other hand, when the motion vector of the current block is expressed in fractional units, a reference block composed of fractional position samples can be set as the prediction block of the current block, as in the examples illustrated in FIG. 37 (b) and (c). In this case, the fractional position samples within the reference block can be generated by interpolating integer position samples. The interpolation filter can have a size of 4 taps or 8 taps.
[0510] As another example, to reduce complexity, fractional position samples can be generated through linear interpolation using only integer position samples adjacent to the fractional position.
[0511] Information indicating the motion vector precision of the current block can be encoded and signaled. For example, after assigning different indices to each of multiple motion vector precision candidates, the index of the motion vector precision candidate corresponding to the motion vector precision of the current block can be encoded and signaled.
[0512] At this time, the number and / or types of available motion vector candidates may be determined based on at least one of the size of the current block, the shape of the current block, the reference picture, or the motion compensation model. Here, the motion compensation model may include at least one of a translation model, a zooming model, or a rotation model. A motion compensation model in which at least one of a zooming model or a rotation model is combined with a translation model may be referred to as an affine model.
[0513] An index indicating one of the motion vector candidates available for the current block can be encoded. Depending on the number of motion vector candidates available for the current block, the maximum number of bits required to encode the index can be determined.
[0514] By adjusting the precision of the motion vector, the motion vector can be explored more precisely, and accordingly, the prediction accuracy for the current block can be improved.
[0515] Meanwhile, motion vectors expressed as fractional positions can be scaled up to integers and encoded.
[0516] Compensation for the movement of an object may be performed based on at least one of a translation model to compensate for linear movement of the object (e.g., movement in the horizontal and / or vertical directions), a zooming model to compensate for changes in the size of the object, and a rotation model to compensate for rotational movement of the object. Here, zooming may refer to enlargement or reduction in size.
[0517] Figure 38 shows an example in which motion compensation based on a translational model and a zooming model is performed for the current block.
[0518] For the convenience of explanation, the current block is assumed to have a size of 4x4, as shown in FIG. 36.
[0519] In FIG. 38, the variable α represents the scaling parameter. The size of the reference block can be derived by multiplying the size of the current block by the variable α.
[0520] A scaling parameter α less than 1 indicates that the reference block is smaller than the current block, and a scaling parameter α greater than 1 indicates that the reference block is larger than the current block.
[0521] Figures 38 (a) and (b) show examples where the scaling parameter α is less than 1, and Figure 38 (c) shows an example where the scaling parameter α is greater than 1.
[0522] Based on the motion vector of the current block, the top-left position of the reference block can be determined. Specifically, the top-left position of the reference block can be set to a position offset by the motion vector from the position corresponding to the top-left sample of the current block within the reference picture. Subsequently, a reference block can be set such that its width and height are each α times the width and height of the current block, respectively, according to a scaling parameter. Fractional position samples within the reference block can be generated by interpolating integer position samples.
[0523] The reference block derived by the motion vector and scaling parameter can be set as the prediction block of the current block.
[0524] Meanwhile, information regarding the size adjustment parameter α can be encoded and signaled. Specifically, a different index is assigned to each of the multiple size adjustment parameter candidates, and an index specifying the size adjustment parameter candidate applied to the current block can be encoded and signaled.
[0525] Alternatively, the size adjustment parameter of the current block may be derived based on the size adjustment parameter of a neighbor block. For example, the size adjustment parameter of a neighbor block at a predefined location can be set as the size adjustment parameter of the current block.
[0526] Alternatively, when multiple neighbor blocks are searched sequentially, the size adjustment parameter of the first available neighbor block found can be set as the size adjustment parameter of the current block.
[0527] Alternatively, a size control parameter of a neighboring block can be set as a size control parameter candidate. In this case, a list of size control parameter candidates containing multiple size control parameter candidates can be generated by sequentially searching multiple neighboring blocks. One of the multiple size control parameter candidates included in the list of multiple size control parameter candidates can be set as the size control parameter of the current block. In this case, an index indicating a candidate among the multiple size control parameter candidates that is identical to the size control parameter of the current block can be encoded and signaled.
[0528] Meanwhile, the neighbor blocks used to derive the size adjustment parameters of the current block may include at least one of the top neighbor block, left neighbor block, top-left neighbor block, top-right neighbor block, or bottom-left neighbor block.
[0529] FIG. 39 shows an example in which motion compensation based on a translational model and a rotational model is performed for the current block.
[0530] For the convenience of explanation, the current block is assumed to have a size of 4x4, as shown in FIG. 36.
[0531] First, as in the example illustrated in FIG. 39 (a), the position of a temporary block within a reference picture can be determined based on the motion vector of the current block. Specifically, a block position can be determined by taking a position spaced apart by the motion vector from the position corresponding to the top-left sample of the current block within the reference picture as the top-left sample.
[0532] Afterwards, the temporary block can be rotated as in the example shown in FIG. 39 (b). The block at the rotated position is set as a reference block, and the reference block can be set as a prediction block of the current block.
[0533] Meanwhile, a rotation matrix may be used when rotating a temporary block specified by a motion vector. That is, the predicted sample for the current block can be set to a sample at a position obtained by applying a rotation matrix to the sample position within the temporary block.
[0534] Mathematical equation 10 represents the rotation matrix.
[0535]
[0536] In the above mathematical formula 10, (pos_x, pos_y) represents the position of a sample within a temporary block. That is, (pos_x, pos_y) can be derived by adding a motion vector to the position of the target sample to be predicted within the current block.
[0537] (pos_x', pos_y') represents the position rotated from the position of the sample within the temporary block, and θ represents the rotation angle.
[0538] The sample value at position (pos_x', pos_y') within the reference picture can be set as the value of the predicted sample for the position of the sample to be predicted. If position (pos_x', pos_y') is a fractional position, the sample at that position can be generated by interpolating integer position samples.
[0539] Meanwhile, information representing the rotation angle θ can be encoded and signaled. For example, after assigning different indices to each of a plurality of rotation angle candidates, the index of the rotation angle candidate corresponding to the rotation angle of the current block can be encoded and signaled.
[0540] Alternatively, the rotation angle of the current block can be derived based on the rotation angle of a neighbor block. For example, the rotation angle of a neighbor block at a predefined position can be set as the rotation angle of the current block.
[0541] Alternatively, when multiple neighbor blocks are searched sequentially, the rotation angle of the first available neighbor block found can be set as the rotation angle of the current block.
[0542] Alternatively, the rotation angle of a neighboring block can be set as a rotation angle candidate. In this case, a rotation angle candidate list containing multiple rotation angle candidates can be generated by sequentially searching multiple neighboring blocks. One of the multiple rotation angle candidates included in the list of multiple rotation angle candidates can be set as the rotation angle of the current block. In this case, an index indicating the candidate among the multiple rotation angle candidates that is identical to the rotation angle of the current block can be encoded and signaled.
[0543] Meanwhile, the neighbor block used to induce the rotation angle of the current block may include at least one of the top neighbor block, left neighbor block, top-left neighbor block, top-right neighbor block, or bottom-left neighbor block.
[0544] Although not explicitly stated, motion compensation for the current block can also be performed by simultaneously applying translational, zooming, and rotational models.
[0545] Meanwhile, the motion vector precision for the current block or the number and / or types of motion vector precision candidates available for the current block may be determined differently depending on the motion compensation model.
[0546] For example, the number and / or types of motion vector precision candidates available for the current block may differ between the case where only a translation model is applied and the case where at least one of a zooming model or a rotation model is applied.
[0547] As a specific example, when a translation model is applied to the current block, candidates of at least 1 / 4 pixel unit may be available for the current block. On the other hand, when at least one of a zooming model or a rotation model is additionally applied along with the translation model to the current block, candidates of at least 1 / 16 pixel unit may be available for the current block.
[0548] Alternatively, if a translation model is applied to the current block, the motion vector precision of the current block may be set to 1 / 4 pixel units. On the other hand, if at least one of a zooming model or a rotation model is additionally applied to the current block along with the translation model, the motion vector precision of the current block may be set to 1 / 16 pixel units.
[0549] Meanwhile, available motion vector precision or available motion vector precision candidates for each motion compensation model may be stored in the encoder and decoder. Alternatively, information representing available motion vector precision or available motion vector precision candidates for each motion compensation model may be encoded and signaled through an upper header.
[0550] Motion compensation for an affine model, to which a zooming model and / or a rotation model are added to a translation model, can be performed using the motion vector of a control point. Here, the control point may correspond to a corner of the current block. For example, to perform motion compensation based on an affine model, at least one of the motion vector of the top-left corner, the motion vector of the top-right corner, or the motion vector of the bottom-left corner may be used.
[0551] Hereinafter, the motion vector of a control point will be referred to as the control point motion vector.
[0552] Figures 40 and 41 show an example of generating a prediction block for the current block using control point motion vectors.
[0553] For the convenience of explanation, the current block is assumed to have a size of 4x4, as shown in FIG. 36.
[0554] In FIG. 40 (a) and (b), a prediction block for the current block is exemplified by the motion vector of the first control point corresponding to the top-left corner of the current block (first control point motion vector, A) and the motion vector of the second control point corresponding to the top-right corner of the current block (second control point motion vector, B).
[0555] Beyond the illustrated examples, it is also possible to derive the predicted block of the current block by additionally utilizing the motion vector of the bottom-left corner or by using the motion vector of the bottom-left corner instead of the top-right corner.
[0556] Figure 42 shows an example of generating a prediction block for the current block using three control point motion vectors.
[0557] In FIG. 42 (a) and (b), a prediction block for the current block is exemplified by the motion vector of the first control point corresponding to the upper-left corner of the current block (first control point motion vector, A), the motion vector of the second control point corresponding to the upper-right corner of the current block (second control point motion vector, B), and the motion vector of the third control point corresponding to the lower-left corner of the current block (third control point motion vector, C).
[0558] As shown in the examples illustrated in FIGS. 40 to 42, translation, zooming, and rotational movement compensation for the current block can be performed using two or three control point movement vectors.
[0559] Information indicating the number of control point motion vectors can be encoded and signaled. The information can be signaled in blocks. For example, the information can indicate whether two control point motion vectors or three control point motion vectors are used in the current block.
[0560] Alternatively, the number of control point motion vectors can be adaptively determined based on at least one of the size or shape of the current block.
[0561] Alternatively, if the control point motion vectors of the current block are derived from neighboring blocks, the number of control point motion vectors for the current block can be set to be equal to the number of control point motion vectors of neighboring blocks.
[0562] Using control point motion vectors, sample-specific motion vectors within the current block can be derived. Equation 11 represents a formula for deriving a motion vector for each sample using two control point motion vectors.
[0563]
[0564] In the above mathematical formula 11, (mv x , mv y ) represents the motion vector at the (x, y) position within the current block. (mv Ax , mv Ay ) represents the first control point motion vector (A), and (mv Bx , mv By ) represents the second control point motion vector (B). W represents the width of the current block.
[0565] When three control point motion vectors are used, a motion vector per sample can be derived by the following mathematical formula 12.
[0566]
[0567] In the above mathematical formula 12, (mv Cx , mv Cy ) represents the third control point motion vector (C).
[0568] When motion vectors are derived for each sample, motion compensation can be performed for each sample, as in the example illustrated in FIG. 41. Specifically, a reference sample indicated by the motion vector of the sample to be predicted can be set as a prediction sample for the sample to be predicted.
[0569] Meanwhile, if the motion vector of the sample to be predicted is expressed in fractional units, integer position samples can be interpolated to generate fractional position samples, and the generated fractional position samples can be set as prediction samples for the sample to be predicted.
[0570] At this time, the precision of the motion vector for each sample may differ. For example, the motion vector for the first prediction target sample may be derived in units of 1 / 2 pixels, while the motion vector for the second prediction target sample may be derived in units of 1 / 4 pixels.
[0571] In this case, fractional position samples can be generated according to the motion vector precision for each of the prediction target samples. Alternatively, the motion vector of the prediction target sample can be adjusted according to the reference motion vector precision, and then prediction samples for the prediction target sample can be derived based on the adjusted motion vector. For example, if the reference motion vector precision is 1 / 2, the motion vector for the second prediction target sample can be adjusted in 1 / 4 pixel increments.
[0572] The reference motion vector precision can be determined in block units. Alternatively, the precision of the control point motion vectors can be set to the reference motion vector precision. Alternatively, the reference motion vector precision may be predefined in the encoder and decoder.
[0573] As another example, to reduce complexity, motion vectors can be derived at the sub-block level.
[0574] Figure 43 shows an example in which motion vectors are derived in sub-block units.
[0575] The size and / or shape of the sub-block may be predefined in the encoder and decoder. For example, the sub-block may be a square block of size 2x2 or 4x4.
[0576] Alternatively, the size and / or shape of the sub-block may be adaptively determined based on the size and / or shape of the current block. For example, if the current block is square, the sub-block may also be square. Conversely, if the current block is non-square, the sub-block may also be non-square.
[0577] Alternatively, information regarding at least one of the partitioning method or partitioning form of the current block may be explicitly encoded and signaled. For example, information regarding at least one of the size of a sub-block, the shape of a sub-block, the location of a partition line dividing the current block, or the number of partition lines may be explicitly encoded and signaled. The information may be encoded and signaled on a block-by-block basis, or it may be encoded and signaled through an upper header.
[0578] In Fig. 43, it was assumed that the sub-block is a square block of size 2x2.
[0579] The motion vector of a sub-block can be derived using the coordinates of a predefined location within the sub-block. Here, the predefined location may be one of the location of the top-left sample, the top-right sample, the bottom-left sample, the bottom-right sample, or the center location within the sub-block.
[0580] By substituting the coordinates of a predefined position within the sub-block into (x, y) of Equation 11, the motion vector of the sub-block can be derived.
[0581] As in the example described above, motion vectors can be derived in sub-block units based on an affine motion model.
[0582] Meanwhile, motion vectors can also be derived in sub-block units using collocated pictures. As described above, deriving motion vectors in sub-block units using collocated pictures can be referred to as SbTMVP (Sub-block Temporal Motion Vector Prediction).
[0583] A collocated picture may be one of the reference pictures included in the reference picture list. For example, a picture with index 0 in the reference picture list may be selected as the collocated picture.
[0584] Alternatively, information indicating the index of a reference picture set as a collocated picture within the reference picture list may be explicitly encoded and signaled.
[0585] Figures 44 and 45 show an example where motion vectors are induced in sub-block units within the current block when SbTMVP is applied.
[0586] The size and / or shape of the sub-block may be predefined in the encoder and decoder.
[0587] Alternatively, the size and / or shape of the sub-block may be adaptively determined according to the size and / or shape of the current block. For example, if at least one of the width or height of the current block is greater than a threshold value, the size of the sub-block may be set to 8x8. Otherwise, the size of the sub-block may be set to 4x4.
[0588] Alternatively, information indicating the size and / or shape of the sub-block may be explicitly encoded and signaled.
[0589] In the example illustrated in FIG. 44, it is assumed that the current block size is 16x16 and the sub-block size is 4x4.
[0590] When SbTMVP is applied, the initial motion vector of the current block can be derived. The initial motion vector can be derived based on at least one of a motion vector prediction list or a motion information merge list. For example, an index indicating one of the motion vector prediction candidates included in the motion vector prediction list can be encoded and signaled. The initial motion vector can be derived by adding a motion vector difference value to the motion vector prediction candidate indicated by the index. Meanwhile, the motion vector difference value can also be explicitly encoded and signaled.
[0591] Alternatively, the encoding of the index may be omitted, and a motion vector prediction candidate with a predefined index within the motion vector prediction list may be set as the prediction value for the initial motion vector. Here, the motion vector prediction candidate with a predefined index may be a motion vector prediction candidate with an index of 0 or a motion vector prediction candidate with the largest index.
[0592] Alternatively, an index indicating one of the motion information merge candidates included in the motion information merge list may be encoded and signaled. The initial motion vector may be set to be identical to the motion vector of the motion information merge candidate indicated by the index.
[0593] Alternatively, the encoding of the index can be omitted, and an initial motion vector can be derived based on a motion information merging candidate having a predefined index within the motion information merging list. Here, the motion information merging candidate having a predefined index may be a motion information merging candidate with an index of 0 or a motion information merging candidate with the largest index.
[0594] Alternatively, an initial motion vector can be derived using the motion vector of a neighbor block at a predefined position. Here, the neighbor block at the predefined position may be a left neighbor block or an top neighbor block.
[0595] The motion vector of a neighbor block at a predefined position can be set as the predicted value of the initial motion vector, and the initial motion vector can be derived by adding a difference value to the predicted value.
[0596] Alternatively, the motion vector of a neighbor block at a predefined position can be set as the initial motion vector.
[0597] Alternatively, the initial motion vector can be derived using a template-based motion estimation method (i.e., a template matching method) or two-way matching.
[0598] The precision of the initial motion vector may be predefined in the encoder and decoder. For example, the precision of the initial motion vector may be fixed in integer pixel units.
[0599] Alternatively, information indicating the precision of the initial motion vector may be explicitly encoded and signaled. The information may be an index indicating one of a plurality of motion vector precision candidates.
[0600] When deriving an initial motion vector using motion vector prediction candidates, motion vector prediction candidates can be derived based on the motion vector precision of the initial motion vector. That is, after adjusting the motion vector prediction candidates to match the motion vector precision of the initial motion vector, the adjusted initial motion vector prediction candidates can be inserted into the motion vector prediction list.
[0601] When deriving initial motion vectors using motion information merging candidates, motion information merging candidates can be derived based on the motion vector precision of the initial motion vectors. That is, after adjusting the motion information merging candidates according to the motion vector precision of the initial motion vectors, the adjusted initial motion information merging candidates can be inserted into the motion information merging list.
[0602] Meanwhile, among the motion information merging candidates included in the motion information merging list, only those candidates whose reference picture is identical to the collocated picture of the current block can be used to derive the initial motion vector. That is, if the reference picture of a motion information merging candidate is different from the collocated picture of the current block, the initial motion vector may not be derived from that motion information merging candidate.
[0603] If there are multiple candidates among the motion information merging candidates whose reference picture is identical to the collocated picture of the current block, an index indicating one of the multiple candidates can be encoded and signaled. Alternatively, if there are multiple candidates among the motion information merging candidates whose reference picture is identical to the collocated picture of the current block, an initial motion vector can be derived from the candidate with the smallest index or the candidate with the largest index among the multiple candidates.
[0604] If a motion information merging candidate has both motion information in the L0 direction and motion information in the L1 direction, one of the motion information in the L0 direction and the motion information in the L1 direction is selected according to a preset priority, and an initial motion vector can be derived from the selected motion information.
[0605] The priority can be determined based on at least one of the magnitude of the motion vector of the motion merge candidate, the index of the reference picture of the motion merge candidate, or whether the reference picture of the motion merge candidate is the same as the collocated picture.
[0606] Alternatively, it may be set to always derive an initial motion vector based on motion information in the L0 direction.
[0607] When initial motion vectors are derived based on a template matching method, motion estimation can be performed according to the precision of the initial motion vectors. For example, if the precision of the initial motion vectors is in the integer pixel unit, motion estimation based on template matching can also be performed only at integer locations.
[0608] Similarly, when an initial motion vector is derived based on two-way matching, motion estimation can be performed according to the precision of the initial motion vector.
[0609] Meanwhile, as a result of the two-way matching, a motion vector for the L0 direction (L0 motion vector) and a motion vector for the L1 direction (L1 motion vector) are derived. In this case, according to a pre-set priority, one of the L0 motion vector and the L1 motion vector can be set as the initial motion vector.
[0610] Alternatively, it may be set to always derive an initial motion vector based on motion information in the L0 direction.
[0611] Alternatively, information indicating which of the L0 motion vector and the L1 motion vector is set as the initial motion vector may be encoded and signaled.
[0612] Once an initial motion vector is derived, the position of a collocated block within a collocated block can be determined using the initial motion vector. For example, a block located at a position offset by the initial motion vector from a position corresponding to the current block within a reference picture can be set as a collocated block. In this case, the position of the collocated block can be determined based on a predefined position within the current block. Here, the predefined position may be the top-left position, top-right position, bottom-left position, bottom-right position, or center position.
[0613] Depending on the division method of the current block, the collocated block can be divided into multiple collocated sub-blocks. Additionally, the motion vector of each collocated sub-block within the collocated block can be set as the motion vector of each sub-block within the current block.
[0614] As another example, the positions of collocated sub-blocks corresponding to each of the sub-blocks within the current block in the collocated picture can be determined using initial motion vectors. In this case, the positions of the collocated sub-blocks can be derived based on predefined positions within the sub-blocks. Here, the predefined positions may be the top-left, top-right, bottom-left, bottom-right, or center positions.
[0615] Subsequently, the motion vector of the collocated sub-block corresponding to the sub-block can be set as the motion vector of the sub-block. Specifically, the motion vector stored at a position corresponding to a predefined position within the sub-block within the collocated sub-block can be set as the motion vector of the sub-block.
[0616] Meanwhile, if the motion information of the collocated sub-block is unavailable, a predefined motion vector can be set as the motion vector of the sub-block. Here, the predefined motion vector may be a zero vector (i.e., (0, 0)) or an initial motion vector.
[0617] Alternatively, if the motion information of the collocated sub-block corresponding to the sub-block is unavailable, the motion vector of the sub-block may be derived from another location within the collocated sub-block.
[0618] Specifically, when a position corresponding to a predefined position within a collocated sub-block is encoded by intra-prediction, there is no motion vector at that position. For example, if a predefined position is assumed to be a central position (e.g., c10 in FIG. 45), and no motion vector is stored at the central position, the motion vector of the sub-block cannot be derived.
[0619] In this case, the motion vector of the sub-block can be derived based on the motion vector stored at a location different from the center position. Specifically, the motion vector of the sub-block can be derived from the motion vector stored at a location adjacent to the center position (e.g., top adjacent position c6, left adjacent position c9, or top-left adjacent position c5).
[0620] Alternatively, if the center location is unavailable, samples within the collocated sub-block may be searched according to the scan order, and the first available motion vector found may be set as the motion vector of the sub-block. Here, the scan order may be a horizontal scan, a vertical scan, a diagonal scan, or a raster scan.
[0621] Alternatively, if the motion information of the collocated sub-block is unavailable, the motion vector of the sub-block can be set as the motion vector of the collocated block. For example, the motion vector stored at a position corresponding to a previously defined position within the current block of the collocated block can be set as the motion vector of the sub-block.
[0622] As in the example described above, motion vectors can be derived in sub-block units using an affine motion model or SbTMVP. When motion vectors are derived in sub-block units, motion compensation can be performed for each sub-block based on the motion vector of each sub-block.
[0623] By performing motion compensation for each of the sub-blocks, a prediction block for the current block can be obtained. That is, the prediction block may be composed of prediction samples for each of the sub-blocks.
[0624] When detecting movement between frames, the precision of the motion vector can be adjusted. Specifically, the position of each sample within a picture is defined as an integer position. However, the position reflecting the movement can be a real number rather than an integer position.
[0625] Considering this, motion vectors can be explored more precisely through reference picture interpolation.
[0626] Figures 46 and 47 are diagrams illustrating examples in which a prediction block is derived according to the precision of the motion vector.
[0627] FIG. 46 shows the position of the current block in the current picture, and FIG. 47 shows the position of the reference block according to the motion vector precision.
[0628] As in the example illustrated in FIGS. 46 and 47, the motion vector of the current block can be defined as the distance from a sample corresponding to the top-left position of the current block in the reference picture to a sample corresponding to the top-left position of the reference block in the reference picture.
[0629] FIG. 47 (a) illustrates the case where the motion vector precision of the current block is an integer Pel, FIG. 47 (b) illustrates the case where the motion vector precision of the current block is 1 / 2 Pel. Also, FIG. 47 (c) illustrates the case where the motion vector precision of the current block is 1 / 4 Pel.
[0630] In FIG. 47, the vector precision is expressed up to 1 / 4, but the motion vector can be expressed with even greater precision, such as 1 / 8, 1 / 16, or 1 / 32.
[0631] Meanwhile, information for indicating the motion vector precision of the current block may be encoded and signaled. For example, the information may be an index identifying one of the motion vector precision candidates. Specifically, a different index may be assigned to each of the motion vector precision candidates, and the information may indicate the index of the motion vector precision candidate applied to the current block.
[0632] By adjusting the precision of the motion vectors used for cross-frame prediction, more precise motion vector detection may be possible. If the reference block indicated by the motion vector exists at a real-valued location, the samples at the real-valued location can be generated using samples at integer locations and an interpolation filter. Additionally, motion vectors represented by real numbers can be scaled up to integers for encoding / decoding.
[0633] Thus, the motion vector (MV), motion vector predicted value (MVP), and motion vector difference value (MVD) can be encoded / decoded into integer values through integerization. Specifically, the motion vector, motion vector predicted value, and / or motion vector difference value can be integerized based on the motion vector precision.
[0634] For example, if the motion vector precision is 1 / N, the motion vector difference value MVD can be converted to an integer by multiplying it by N. For example, if the motion vector difference value MVD is (4 / 16, 8 / 16), the motion vector difference value MVD can be converted to an integer by multiplying it by 16. That is, the converted motion vector difference value MVD can be expressed as (4, 8).
[0635] Based on motion vector precision, the actual MVD can be derived from the integerized MVD. For example, if the motion vector precision is 1 / N, the actual MVD can be derived by dividing the integerized MVD by N. For example, if the integerized MVD is (4, 8) and the motion vector precision is 1 / 8, the actual MVD can be (4 / 8, 8 / 8). Or, if the integerized MVD is (4, 8) and the motion vector precision is 1 / 4, the actual MVD can be (4 / 4, 8 / 4).
[0636] Depending on the motion vector precision, the range of representation of the integerized MVD may differ. For example, assume that the motion vector difference value MVD is (4 / 16, 8 / 16) (i.e., (1 / 4, 2 / 4)). When the motion vector precision is 1 / 16, the integerized MVD is derived as (4, 8). On the other hand, when the motion vector precision is 1 / 4, the integerized MVD is derived as (1, 2).
[0637] Comparing the two cases above, if the motion vector precision is adjusted from 1 / 16 to 1 / 4, the value of the integerized MVD can be reduced from (4, 8) to (1, 2).
[0638] Consequently, depending on the motion vector precision, the number of bits required to encode / decode the integerized motion vector difference value MVD may vary. Accordingly, a motion vector precision that minimizes the number of bins can be selected when encoding / decoding the motion vector difference value MVD. Then, based on the selected motion vector precision, the motion vector difference value MVD can be converted to an integer, and the integerized motion vector difference value MVD can be encoded / decoded. In addition, information regarding the motion vector precision can be additionally encoded / decoded.
[0639] In the decoder, the actual MVD can be restored from the decoded MVD based on motion vector precision. Then, the motion vector MV can be derived by combining the restored MVD and the motion vector prediction value MVP.
[0640] As described above, adjusting the value of the motion vector difference value MVD, which is encoded / decoded based on motion vector precision, is called the AMVR (Adaptive Motion Vector Resolution) method.
[0641] FIGS. 48 and FIGS. 49 are diagrams illustrating the process of encoding and decoding motion vector difference values when the AMVR method is applied, respectively.
[0642] For the sake of convenience of explanation, it is assumed that the motion vector and the motion vector difference value are expressed in units of 1 / 16 before integerization is performed, and 1 / 16 is referred to as the original motion vector precision.
[0643] The motion vector difference value MVD can be derived by differencing the motion vector prediction value MVP from the motion vector MV (S4810).
[0644] The motion vector difference value MVD may consist of a horizontal component (i.e., the x-axis component) and a vertical component (i.e., the y-axis component).
[0645] When the motion vector difference value is 0, that is, when both the horizontal and vertical components are 0, the value of the motion vector difference value MVD to be encoded becomes 0 regardless of the motion vector precision. Therefore, when the motion vector difference value MVD is 0, the encoding of AMVR-related information can be omitted (S4820).
[0646] On the other hand, if the motion vector difference value is not zero, that is, if at least one of the horizontal component and the vertical component is not zero, the motion vector precision can be determined (S4830). Meanwhile, the motion vector precision can be encoded as AMVR-related information.
[0647] Information related to AMVR may include at least one of a flag (e.g., amvr_flag) indicating whether the AMVR method is applied to the current block and an index (e.g., amvr_prec_idx) indicating one of a plurality of motion precision candidates if the AMVR method is applied.
[0648] If the AMVR method is not applied to the current block, the motion vector precision can be set to a default value. In this case, amvr_flag can be encoded as a value of 0. Meanwhile, the default value can be 1, 1 / 2, 1 / 4, 1 / 8, or 1 / 16.
[0649] When the AMVR method is applied to the current block, an index indicating one of multiple motion vector precision candidates, i.e., amvr_prec_idx, may be additionally decoded. In this case, amvr_flag is encoded with a value of 1, and amvr_prec_idx may be encoded with a value from 0 to (n-1). Here, n represents the number of motion vector precision candidates. For example, multiple motion vector precision candidates may include at least one of 4, 2, 1, 1 / 2, 1 / 4, 1 / 8, or 1 / 16. Meanwhile, the default value may not be set to the multiple motion vector precision candidates indicated by the index. That is, if the motion vector precision of the current block is the default value, it is encoded and signaled as 0, which is the value of amvr_flag, and the encoding of amvr_prec_idx may be omitted.
[0650] In the encoder, the optimal motion vector precision can be determined by performing Rate Distortion Optimization (RDO) for each combination of amvr_flag and amvr_prec_idx. That is, by performing RDO for the following cases, the combination with the optimal cost can be selected.
[0651] 1) When amvr_flag is 0
[0652] 2) When amvr_flag is 1 and amvr_prec_idx is 0
[0653] 3) When amvr_flag is 1 and amvr_prec_idx is 1
[0654] 4) When amvr_flag is 1 and amvr_prec_idx is 2
[0655] Depending on the motion vector precision of the current block, a variable for scaling the motion vector difference value, i.e., a scaling parameter, can be set. For example, Table 6 shows the values of the variable amvrshift according to the motion vector precision.
[0656] amvr_flagamvr_prec_idxamvrshift0 (1 / 4)-210 (1 / 2)311 (1-pel)412 (4-pel)6
[0657] If the finest motion vector precision applicable to the current block is 1 / 16, the motion vector precision can be expressed as shown in the following mathematical formula 13.
[0658]
[0659] As shown in Table 6, when the value of amvr_flag is 0, the variable amvrshift is set to 2. This indicates that the motion vector precision is 1 / 4 according to Equation 13.
[0660] When the value of amvr_flag is 1, the variable amvrshift can be determined according to the value of amvr_prec_idx. For example, when amvr_prec_idx is 1, the variable amvrshift is set to 4. This indicates that the motion vector precision is 1 according to Equation 13.
[0661] In the encoder, the motion vector difference value MVD can be scaled down and encoded using the variable amvrshift, which is based on the motion vector precision. As an example, Equation 14 shows an example of a scale-down operation being performed on the motion vector difference value MVD.
[0662]
[0663] In the above mathematical equation 14, MVD_x represents the horizontal component of the motion vector difference value, and MVD_y represents the vertical component of the motion vector difference value. MVD'_x and MVD'_y represent the results of performing a scale-down operation.
[0664] The encoder can encode motion vector difference values and AMVR information with changed precision (S4840).
[0665] In the decoder, the motion vector difference value MVD can be decoded (S4910).
[0666] If the motion vector difference value is 0, the decoding of AMVR-related information is omitted, and the motion vector MV of the current block can be set to be the same as the motion vector prediction value (S4920).
[0667] On the other hand, if the motion vector difference value is not zero, that is, if at least one of the horizontal component and the vertical component is not zero, information related to AMVR can be additionally decoded (S4930).
[0668] Based on AMVR information, a variable amvrshift for scaling motion vector difference values can be derived. For example, as shown in the example in Table 6, a variable amvrshfit can be derived based on amvr_flag and / or amvr_prec_idx.
[0669] Afterwards, the decoded MVD can be scaled up using the variable amvrshift to obtain the motion vector difference value MVD restored to the original precision (S4940). Equation 15 shows an example of applying a scale-up operation to the decoded MVD.
[0670]
[0671] In Equation 15, MVD' represents the decoded motion vector difference value. MVD represents the motion vector difference value restored to its original precision, i.e., 1 / 16, through a scale-up operation.
[0672] Afterwards, the motion vector MV can be obtained by combining the motion vector difference value MVD restored to the original precision and the motion vector prediction value MVP.
[0673] As in the example above, when a motion vector prediction mode is applied, the decoder can derive the motion vector MV by combining the motion vector prediction value MVP and the motion vector difference value MVD.
[0674] After deriving the prediction block of the current block, the prediction block can be corrected based on motion information of neighboring regions adjacent to the current block. Here, the prediction block may be obtained through intra-prediction or inter-prediction.
[0675] Alternatively, the prediction block can be corrected only if the encoding mode of the current block is a specific mode. Here, the encoding mode may represent intra-prediction or inter-prediction.
[0676] For example, correction of the prediction block may be permitted only if an inter prediction is applied to the current block.
[0677] Correction of prediction samples can be performed on a sub-block basis.
[0678] Additionally, correction may be performed only on sub-blocks adjacent to the boundary of the current block. That is, correction may be performed on prediction samples belonging to the first region within the current block, while correction may not be performed on prediction samples belonging to the second region.
[0679] For example, prediction sample correction may be performed for at least one of a sub-block adjacent to the top boundary of the current block and a sub-block adjacent to the left boundary of the current block.
[0680] Below, we will explain in detail how to correct the prediction block of the current block.
[0681] FIG. 50 is a flowchart of a method for correcting a prediction block according to one embodiment of the present disclosure.
[0682] For the sake of convenience of explanation, the sub-block subject to correction will be referred to as the current sub-block.
[0683] Movement information of the current sub-block within the current block can be derived (S5010). Specifically, movement information of a neighboring area located outside the current block and adjacent to the current sub-block can be set as the movement information of the current sub-block.
[0684] FIG. 51 is a diagram illustrating an example of inducing movement information of a current sub-block.
[0685] In FIG. 51, a represents a sub-block that touches both the top boundary and the left boundary of the current block, and b through d represent sub-blocks that touch the top boundary of the current block. Additionally, e through f represent sub-blocks that touch the left boundary of the current block. Each sub-block may be a rectangular area.
[0686] The neighbor area may include a sample at a location adjacent to the current sub-block. For example, the neighbor area may include a sample adjacent to the top-left position of the current sub-block. Alternatively, the neighbor area may be a block containing a sample adjacent to the top-left position of the current sub-block.
[0687] The movement information of a neighboring area located outside the current block and adjacent to the current sub-block is set as the movement information of the current sub-block.
[0688] For example, in the case of sub-block b adjacent to the top boundary of the current block, the movement information of neighbor area U1 located at the top of sub-block b can be set as the movement information of sub-block b.
[0689] For example, in the case of a sub-block f adjacent to the left boundary of the current block, the movement information of a neighboring area L2 located to the left of sub-block f can be set as the movement information of sub-block f.
[0690] Meanwhile, for sub-block a located at the top-left of the current block, not only the neighbor area U0 adjacent to the top but also the neighbor area L0 adjacent to the left can be referenced. In this case, the two neighbor areas can be searched sequentially, and the movement information of the first available neighbor area found can be set as the movement information of sub-block a. For example, the search order may be the order of neighbor area U0 and neighbor area L0, or the reverse order thereof.
[0691] Alternatively, the motion information of neighbor area U0 adjacent to the top of sub-block a and the motion information of neighbor area L0, respectively, can be set as the motion information of sub-block a. That is, the motion information of the top neighbor area U0 can be set as the first motion information of sub-block a, and the motion information of the left neighbor area L0 can be set as the second motion information of sub-block a.
[0692] Meanwhile, if the neighbor area of the current sub-block has bidirectional motion information, the bidirectional motion information of the neighbor block can be merged into the current sub-block.
[0693] Alternatively, if the predicted block of the current block was generated by inter-prediction, it is possible to determine whether to merge all bidirectional information of neighboring regions by referring to the movement information of the current block.
[0694] For example, if the motion information of the current block has L0 motion information and the neighbor area of the current sub-block has bidirectional motion information, either the L0 motion information or the L1 motion information from the neighbor area's motion information can be selected and set as the motion information of the current sub-block. Specifically, among the L0 motion information and L1 motion information of the neighbor area, only the motion information in the same direction as the current block's motion information (i.e., L0 motion information) can be merged into the current sub-block.
[0695] Alternatively, among the L0 and L1 motion information of neighboring regions, only the motion information in a direction different from the motion information of the current block (i.e., L1 motion information) can be merged into the current sub-block.
[0696] Subsequently, based on the movement information of the current sub-block, a reference block of the same size as the current sub-block can be derived (S5020). Specifically, the reference block can be derived from the reference picture indicated by the reference picture index of the sub-block to be compensated. At this time, the reference block may be spaced apart from the position of the current sub-block within the reference picture by the movement vector of the current sub-block.
[0697] If the current sub-block has bidirectional movement information, the reference block can be derived by weighting the L0 reference block and the L1 reference block.
[0698] Afterwards, corrected prediction samples can be obtained by weighting the prediction samples of the current sub-block and the samples within the reference block (S5030).
[0699] Meanwhile, if there are two pieces of motion information in the current sub-block, two reference blocks can be derived based on the two pieces of motion information. In this case, the two reference blocks are weighted to derive a weighted reference block, and then the samples in the weighted reference block and the prediction samples in the current sub-block are weighted to obtain a corrected prediction sample.
[0700] That is, the corrected prediction sample can be obtained by weighting the first prediction sample obtained through prediction for the block level and the second prediction sample obtained based on movement information of neighboring regions adjacent to the current sub-block.
[0701] The corrected prediction sample can be used as a final prediction sample to derive the residual sample of the current block or the restoration sample of the current block.
[0702] The size and shape of the sub-blocks may be predefined in the encoder and decoder. For example, each sub-block may be a square area of size 4x4.
[0703] Alternatively, the size and shape of the sub-blocks can be adaptively determined based on the size and shape of the current block. For example, the width of each sub-block can be set to W / 4, and the height of each area can be set to H / 4. Here, W represents the width of the current block, and H represents the height of the current block.
[0704] Alternatively, the correction may be applied to only one of one row adjacent to the top boundary of the current block or one column adjacent to the left boundary of the current block. That is, the sub-block adjacent to the top boundary of the current block may have a size of Nx1, and the sub-block adjacent to the left boundary of the current block may have a size of 1xN.
[0705] If the predicted block of the current block is obtained through inter-prediction, the area where correction is performed may differ depending on the location of the neighbor block used to derive the movement information of the current block.
[0706] For example, if the movement information of the current block is derived from the upper neighbor block, correction of the prediction samples can be performed only for the sub-blocks touching the left boundary of the current block.
[0707] On the other hand, if the movement information of the current block is derived from the left neighbor block, correction of the prediction samples can be performed only for the sub-blocks touching the top boundary of the current block.
[0708] Here, the upper neighbor block represents a neighbor block including any one of B0 to B5 of FIG. 28, and the left neighbor block may represent a neighbor block including any one of A0 to A4 of FIG. 28.
[0709] Alternatively, the area where correction is performed may differ depending on the shape of the current block. For example, if the current block has a non-square shape where the width is greater than the height, correction of the prediction samples may be performed only on the areas adjacent to the top boundary of the current block. On the other hand, if the current block is a block where the height is greater than the width, correction of the prediction samples may be performed only on the areas adjacent to the left boundary of the current block.
[0710] Information indicating whether to correct the predicted block of the current block may be encoded and signaled. The information may be a 1-bit flag.
[0711] If the above information indicates that the prediction block is corrected, the prediction block may be corrected according to the embodiment of FIG. 50. Subsequently, a residual block of the current block or a restoration block of the current block may be generated based on the corrected prediction block.
[0712] On the other hand, if the above information indicates that the prediction block is not corrected, a residual block of the current block or a restoration block of the current block can be generated based on the prediction block.
[0713] Alternatively, whether to correct the prediction block may be determined based on the size of the current block. For example, correcting the prediction block may be permitted only if the size of the current block is within a preset range. Here, the size of the current block may represent at least one of the width, height, or the product of the width and height of the current block.
[0714] Alternatively, whether to correct the prediction block may be determined based on whether the current block has bidirectional motion information. For example, it may be permitted to correct the prediction block only in one of the cases where the current block has bidirectional motion information or where the current block has unidirectional motion information.
[0715] Alternatively, you can decide whether to perform corrections on a sub-block basis within the current block.
[0716] FIG. 52 is a diagram illustrating an example of how to determine whether to correct prediction samples within a sub-block.
[0717] In FIG. 52, f represents a sub-block within the current block. Additionally, L2 represents a neighboring region located outside the current block and adjacent to sub-block f.
[0718] Whether to perform correction on sub-block f can be determined based on the difference between samples adjacent to the boundary of sub-block f and neighboring region L2.
[0719] For example, in the example shown in FIG. 52, R i,j represents the sample existing in row i and column j within neighboring region L2 (i.e., the resupplied sample), and P i,jrepresents the sample (i.e., the predicted sample) located at row i and column j within sub-block f. For the sake of convenience, the top-left predicted sample within sub-block f is P 0,0 It was assumed that...
[0720] After deriving the difference between samples adjacent to the boundary between sub-block f and neighboring region L2, the derived difference can be compared with a threshold value to determine whether to correct the predicted samples within sub-block f. For example, the difference between samples adjacent to the boundary can be derived based on the following Equation 16.
[0721]
[0722] In the example of mathematical formula 16, it is illustrated that the difference D1 is derived by summing the absolute difference between the reconstructed samples in the rightmost two columns within neighboring region L2 and the absolute difference between the reconstructed samples in the far right column within neighboring region L2 and the predicted samples in the far left column within sub-block f.
[0723] Alternatively, the difference between samples adjacent to the boundary can be derived based on the following mathematical formula 17.
[0724]
[0725] Subsequently, the induced difference can be compared with a threshold value to determine whether to correct the predicted samples within sub-block f. For example, if the difference (D1 or D2) is equal to or greater than the threshold value, it may be decided to correct the predicted samples within sub-block f. Conversely, if the difference (D1 or D2) is less than the threshold value, it may be decided not to correct the predicted samples within sub-block f.
[0726] Alternatively, it may be determined whether to correct the prediction samples within the sub-block based on whether motion information of neighboring regions adjacent to the sub-block is available.
[0727] For example, if motion information does not exist in a neighboring region adjacent to a sub-block (e.g., if the encoding mode of the neighboring block is intra-prediction), it may be decided not to correct the prediction samples within the sub-block. That is, the prediction samples within the sub-block may be corrected only if motion information exists in a neighboring region adjacent to the sub-block.
[0728] Alternatively, it may be determined whether to correct the prediction samples within the sub-block based on whether motion information in the same direction as the current block's motion information exists in a neighboring area adjacent to the sub-block.
[0729] For example, it may be decided to correct the prediction samples within the sub-block only in one of the following cases: when there is motion information in the same direction as the current block's motion information in a neighboring area adjacent to the sub-block, or when there is motion information in a different direction from the current block's motion information in a neighboring area adjacent to the sub-block.
[0730] Meanwhile, if the motion information of the current block is unidirectional motion information while the neighboring region of the sub-block has bidirectional motion information, it can be decided to correct the prediction samples within the sub-block. Similarly, if the motion information of the current block is bidirectional motion information while the neighboring region of the sub-block has unidirectional motion information, it can be decided to correct the prediction samples within the sub-block.
[0731] Alternatively, whether to correct the prediction samples within the sub-block may be determined based on whether the reference picture indicated by the motion information of the current block is the same as the reference picture indicated by the motion information of the neighboring region of the sub-block.
[0732] For example, it may be decided to correct the prediction samples within a sub-block only in one of the following cases: when the reference picture indicated by the motion information of the current block is different from the reference picture indicated by the motion information of a neighboring area, or when the reference picture indicated by the motion information of the current block is the same as the reference picture indicated by the motion information of a neighboring area.
[0733] As described above, the correction of the prediction block can be performed based on a weighted sum operation between the current sub-block within the prediction block and the reference block of the current sub-block.
[0734] When performing a weighted sum operation between the current sub-block and the reference block, weights can be set differently for each line. For example, if the current sub-block touches the left boundary of the current block, weights can be set on a column basis. Conversely, if the current sub-block touches the top boundary of the current block, weights can be set on a row basis.
[0735] FIG. 53 is a diagram illustrating an example in which weights are set on a line basis when performing a weighted sum operation between the current sub-block and the reference block.
[0736] For the sake of convenience of explanation, it is assumed that the current sub-block f is tangent to the left boundary of the current block.
[0737] Figure 53 (a) shows samples within the reference block (i.e., restored samples), and Figure 52 (b) shows samples within the current sub-block (i.e., predicted samples).
[0738] That is, R i,j It can represent restoration samples within a reference block derived based on motion information of neighboring regions adjacent to the current sub-block f.
[0739] Furthermore, P i,j can represent prediction samples within the current sub-block.
[0740] When the top-left position of the reference block and the current sub-block is (0, 0), a weighted sum operation can be performed using samples within the current sub-block and samples within the reference block at the same coordinates.
[0741] When performing a weighted sum, the weight assigned to sample R in the current sub-block may have a higher value than the weight assigned to sample P in the reference block.
[0742] Meanwhile, weights for the weighted sum operation can be set on a line basis. Specifically, since the current sub-block f touches the left boundary of the current block, different weights can be assigned on a column basis when performing the weighted sum operation between the reference block, the current sub-block, and the reference block. That is, R i,0 and P i,0 The set of weights used in the weighted sum operation of is R i+1,0 and P i+1,0 It may differ from the set of weights used in the weighted sum operation.
[0743] Specifically, as one moves further away from the left boundary of the current block, the weight assigned to the prediction sample within the current sub-block gradually increases, while the weight assigned to the restoration sample within the reference block gradually decreases.
[0744] That is, in the example illustrated in Fig. 53, the prediction samples P belonging to the far right column within the current sub-block i,3 The weight assigned to has the largest value, whereas the prediction samples P belonging to the leftmost column within the current sub-block i,0 The weight assigned to can have the smallest value.
[0745] For example, the predicted samples P belonging to the first column i,0 The weights assigned to are 3 / 4, and the prediction samples P belonging to the second column i,1 The weights assigned to are 7 / 8, and the prediction samples P belonging to the third column i,2The weights assigned to are 15 / 16, and the prediction samples P belonging to the fourth column i,3 The weight assigned to it can be 31 / 32.
[0746] Meanwhile, the sum of the weights assigned to the prediction samples in the current sub-block and the weights assigned to the reconstructed samples in the reference block may be 1. Accordingly, as the weight assigned to the prediction samples in the current sub-block increases, the weight assigned to the reconstructed samples in the reference block decreases.
[0747] For example, the reconstructed samples R belonging to the first column i,0 The weight assigned to is 1 / 4, and the reconstructed samples R belonging to the second column i,1 The weight assigned to is 1 / 8, and the reconstructed samples R belonging to the third column i,2 The weight assigned to is 1 / 16, and the reconstructed samples R belonging to the fourth column i,3 The weight assigned to it can be 1 / 32.
[0748] In FIG. 53, it is assumed that the current sub-block touches the left boundary of the current block. If the current sub-block touches the top boundary of the current block, weights can be set on a row-by-row basis.
[0749] Meanwhile, when the current sub-block touches the upper-left corner of the current block (e.g., the case of sub-block a in FIG. 50), the current sub-block is corrected using a first reference block derived from the movement information of the left neighbor area of the current sub-block and a second reference block derived from the movement information of the upper neighbor area of the current sub-block.
[0750] At this time, when performing a weighted sum with a first reference block derived based on movement information of the left neighbor area, weights may be set on a column basis, and when performing a weighted sum with a second reference block derived based on movement information of the top neighbor area, weights may be set on a row basis.
[0751] Meanwhile, to avoid floating-point operations, the weights assigned to the prediction samples within the current sub-block and the weights assigned to the reconstructed samples within the reference block can be converted to integers. For example, assuming the weights assigned to the prediction samples and reconstructed samples within the sub-block are 7 / 8 and 1 / 8, respectively, the new weights can be set by multiplying each of the two weights by 8. That is, the weights for the prediction samples and reconstructed samples can be set to 7 and 1, respectively. Subsequently, scaling (e.g., shifting the weighted sum result to the right by 3) can be performed on the weighted sum result.
[0752] Meanwhile, in the example described above, weights were set per line. Instead of setting different weights per line, weights can be set at the sub-block level, or a single weight can be used for the prediction block.
[0753] In the example described above, a reference block for correcting the current sub-block is specified based on movement information of a neighboring region adjacent to the current sub-block.
[0754] Meanwhile, if there is no motion information in a neighboring area adjacent to the current sub-block, or if motion information in a neighboring area is not available, it may be determined that no correction is performed for the current sub-block.
[0755] As another example, even if motion information does not exist in neighboring regions adjacent to the current sub-block or if motion information in neighboring regions is not available, the prediction samples within the current sub-block may be corrected.
[0756] For example, if a block vector is stored in a neighboring area, the reference block can be identified using the block vector of the neighboring area. Specifically, the block vector of the neighboring area can be merged into the current sub-block, and the reference block can be identified from the current picture based on the block vector of the current sub-block. Here, the reference block may be spaced apart from the current sub-block by the block vector.
[0757] Alternatively, if a neighboring region is encoded / decoded using intra-prediction, a reference block can be generated using the intra-prediction mode of the neighboring region. Specifically, based on the intra-prediction mode of the neighboring region, an intra-prediction can be performed on the current sub-block to obtain a prediction block, which can then be set as the reference block. Subsequently, corrected prediction samples can be obtained by performing a weighted sum of the samples within the current sub-block and the samples within the reference block.
[0758] Alternatively, if CIIP (Combined Intra and Inter Prediction) is applied to a neighboring region, the neighboring region contains both intra prediction mode and motion information. In this case, one of the two prediction methods of the neighboring region can be selected based on the prediction method of the current block to derive the reference block.
[0759] For example, information of the same type as the prediction method of the current block can be referenced from a neighboring area. As a specific example, if the prediction block of the current block is derived using motion information, the reference block can be derived by referencing the motion information of a neighboring area.
[0760] Alternatively, information of a different type from the prediction method of the current block can be referenced from a neighboring region. As a specific example, if the prediction block of the current block is derived using motion information, the reference block can be derived by referencing the intra-prediction mode of a neighboring region.
[0761] Alternatively, if both intra-prediction mode and motion information exist in neighboring regions, a first reference block can be derived using the intra-prediction mode of the neighboring region, a second reference block can be derived using the motion information, and then the final reference block can be derived by weighting the two reference blocks.
[0762] Meanwhile, depending on the current location of the sub-block, the range of available intra prediction modes may vary.
[0763] For example, when the current sub-block touches the left boundary of the current block, only intra prediction modes having a left direction (e.g., modes 2 to 34 of FIG. 4) may be available.
[0764] Alternatively, among the intra prediction modes having a left direction, only the intra prediction modes that do not require interpolation may be available in the current sub-block. For example, in the example illustrated in FIG. 4, only modes 2, 18, or 34 may be set to be available in the current sub-block.
[0765] On the other hand, if the current sub-block touches the upper boundary of the current block, only intra prediction modes having an upper direction (e.g., modes 34 through 66 of FIG. 4) may be available.
[0766] Alternatively, among the intra prediction modes having an upward direction, only the intra prediction modes that do not require interpolation may be available in the current sub-block. For example, in the example illustrated in FIG. 4, only modes 34, 50, or 66 may be set to be available in the current sub-block.
[0767] If the intra-prediction mode of the neighboring region is not available, the prediction samples within the current sub-block may not be corrected.
[0768] Depending on the size of the neighbor block, it can be determined whether to derive the reference block using the intra prediction mode of the neighbor region. Here, the neighbor block may be a neighbor region, a block containing the neighbor region, or a block containing samples included in the neighbor region.
[0769] For example, in the example illustrated in FIG. 51, if the size of a neighbor block including region L2 adjacent to the left of the current sub-block f exists within a preset range, the intra prediction mode of the neighbor region L2 can be determined to be available for deriving a reference block.
[0770] On the other hand, if the size of a neighboring block containing region L2 adjacent to the left of the current sub-block f exceeds a preset range, the intra prediction mode of neighboring region L2 may be determined to be unusable for deriving the reference block. In this case, the prediction samples within the current sub-block f may not be corrected.
[0771] The size of the neighbor block may represent at least one of the number of samples within the neighbor block, the width of the neighbor block, or the height of the neighbor block.
[0772] For example, only when the size of the neighbor block is 4x4, the intra prediction mode of the neighbor area may be determined to be available for deriving the reference block.
[0773] Alternatively, depending on the current location of the sub-block, the conditions related to the size of neighboring blocks may differ.
[0774] For example, if the current sub-block touches the left boundary of the current block, the availability of the neighbor area's intra prediction mode can be determined by comparing the width of the neighbor block with a threshold value. That is, the neighbor area's intra prediction mode can be determined to be available only if the width of the neighbor block falls within a preset range.
[0775] On the other hand, if the current sub-block touches the top boundary of the current block, the availability of the intra prediction mode of the neighboring area can be determined by comparing the height of the neighboring block with a threshold value. That is, the intra prediction mode of the neighboring area can be determined to be available only if the height of the neighboring block falls within a preset range.
[0776] Instead of the intra prediction mode of the neighboring region, the reference block of the current sub-block may also be derived based on the intra prediction mode derived using the surrounding region adjacent to the current block.
[0777] For example, a histogram in which amplitude values for each intra prediction mode are accumulated can be derived using a pre-recovered region adjacent to the current block. Subsequently, the reference block of the current sub-block can be derived based on the intra prediction mode with the largest amplitude value within the histogram.
[0778] Meanwhile, histograms can be derived for each sub-block. For example, a histogram for the current sub-block can be derived using neighboring regions adjacent to the current sub-block. For example, in the example illustrated in FIG. 52, a histogram for the current sub-block f can be derived using neighboring region L2 adjacent to the left of the current sub-block f.
[0779] Alternatively, an intra prediction mode can be derived by inducing a histogram based on the upper and left restoration regions of the current block. In this case, the sub-blocks within the current block will use the same intra prediction mode.
[0780] Alternatively, a first histogram may be derived based on the area adjacent to the top of the current block, and a second histogram may be derived based on the area adjacent to the left of the current block.
[0781] If the current sub-block touches the upper boundary of the current block, the intra prediction mode of the current sub-block can be derived using the first histogram. On the other hand, if the current sub-block touches the left boundary of the current block, the intra prediction mode of the current sub-block can be derived using the second histogram.
[0782] Meanwhile, depending on the current position of the sub-block, the configuration of the histogram or the range of intra-prediction modes selectable from the histogram may differ.
[0783] For example, when the current sub-block touches the left boundary of the current block, the histogram may be constructed using only left-direction intra-prediction modes, or the one with the largest amplitude value among the left-direction intra-prediction modes within the histogram (e.g., modes 2 to 34 in FIG. 4) may be selected.
[0784] Alternatively, if the current sub-block touches the upper boundary of the current block, the histogram may be constructed using only intra-prediction modes with an upward direction, or the one with the largest amplitude value among the intra-prediction modes with an upward direction within the histogram may be selected.
[0785] Alternatively, among the intra prediction modes facing left, only the intra prediction modes that do not require interpolation may be available in the current sub-block. For example, in the example illustrated in FIG. 4, only modes 2, 18, or 34 may be set to be available in the current sub-block.
[0786] The area where a weighted sum is performed within a sub-block can be variably set based on at least one of whether motion information exists in a neighboring area or whether the reference block was generated by intra-prediction.
[0787] FIG. 54 illustrates an example in which the size of the region where a weighted sum is performed within a sub-block is adaptively determined.
[0788] If motion information exists in the neighboring region of the current sub-block, a reference block can be derived based on the motion information of the neighboring region. In this case, the current sub-block can be corrected based on a weighted sum operation between the current sub-block and the reference block.
[0789] On the other hand, if motion information does not exist in the neighboring region of the current sub-block, a reference block can be derived based on the intra prediction mode. In this case, the size of the derived reference block may be smaller than the size of the current sub-block. Accordingly, when performing a weighted sum operation between the current sub-block and the reference block, the weighted sum operation may be performed only on a portion of the region within the current sub-block.
[0790] For example, in the example illustrated in FIG. 54, it is assumed that the reference block for sub-block f is derived through intra-prediction, while the reference blocks for other sub-blocks are derived based on motion information of neighboring regions.
[0791] In this case, as in the example shown in Fig. 54, the area where the weighted sum is performed within sub-block f may be smaller than the area where the weighted sum is performed within another sub-block.
[0792] In the example described above, it was illustrated that when a neighboring region is encoded / decoded using inter-prediction, the reference block of the current sub-block is derived based on the motion information of the neighboring region, and when a neighboring region is encoded / decoded using intra-prediction, the reference block of the current sub-block is derived based on the intra-prediction mode of the neighboring region.
[0793] Meanwhile, if both inter-prediction and intra-prediction are used in neighboring regions, the reference block of the current sub-block can be derived by utilizing the information with higher priority between the inter-prediction information of the neighboring region (i.e., motion information) or the intra-prediction information of the neighboring region (i.e., intra-prediction mode). For example, the reference block of the current sub-block can be derived based on the motion information of the neighboring region.
[0794] Alternatively, if both inter-prediction and intra-prediction are used in neighboring regions, a final reference block can be derived by weighted summing a first reference block derived based on information regarding inter-prediction in neighboring regions (i.e., motion information) and a second reference block derived based on information regarding intra-prediction in neighboring regions (i.e., intra-prediction mode). Subsequently, the current sub-block can be corrected by weighted summing the current sub-block and the final reference block.
[0795]
[0796] Applying the embodiments described with reference to the decoding process or the encoding process to the encoding process or the decoding process is included within the scope of the present disclosure. Changing the embodiments described in a predetermined order to a different order from that described is also included within the scope of the present disclosure.
[0797] Although the above disclosure is described based on a series of steps or flowcharts, this does not limit the chronological order of the invention and may be performed simultaneously or in a different order as necessary. Furthermore, each component constituting the block diagram in the above disclosure (e.g., unit, module, etc.) may be implemented as a hardware device or software, or a plurality of components may be combined to be implemented as a single hardware device or software. As an example, the hardware device may include at least one of a processor for performing operations, a memory for storing data, a transmitter for transmitting data, and a receiver for receiving data.
[0798] The aforementioned disclosure may be implemented in the form of program instructions that can be executed through various computer components and recorded on a computer-readable recording medium. The computer-readable recording medium may include program instructions, data files, data structures, etc., either individually or in combination.
[0799] Additionally, according to the present disclosure, a computer-readable recording medium may be provided for storing a bitstream generated by the encoding method described above. The bitstream may be transmitted by an encoding device, and a decoding device may receive the bitstream and decode an image.
[0800] Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes; optical recording media such as CD-ROMs and DVDs; magneto-optical media such as floptical disks; and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, and flash memory. The hardware devices may be configured to operate as one or more software modules to perform processing according to the present disclosure, and vice versa.
[0801] The present disclosure may be applied to a computing or electronic device capable of encoding / decoding a video signal.
Claims
1. A step of obtaining the predicted block of the current block; A step of deriving a reference block for a sub-block within the above prediction block; and Based on the above reference block, the method includes the step of correcting the above sub-block, A video decoding method characterized in that, when motion information of a neighbor block adjacent to the sub-block is available, the reference block is derived based on the motion information of the neighbor block.
2. In Paragraph 1, If the movement information of the neighboring block is not available, An image decoding method characterized in that the above reference block is obtained by performing intra prediction on the above sub-block.
3. In Paragraph 2, A video decoding method characterized in that, when the neighbor block is encoded by intra prediction, the intra prediction for the sub-block is performed based on the intra prediction mode of the neighbor block.
4. In Paragraph 2, The above intra prediction is derived based on the intra prediction mode of the above sub-block, and An image decoding method characterized in that the above intra prediction mode is obtained based on a histogram.
5. In Paragraph 4, The above histogram is a table in which amplitude values for each intra-prediction mode are accumulated, and An image decoding method characterized in that the amplitude value is obtained based on a horizontal gradient and a vertical gradient obtained by applying a filter to a restoration region adjacent to the current block.
6. In Paragraph 4, An image decoding method characterized in that the above histogram is derived in units of sub-blocks within the current block.
7. In Paragraph 4, When the above sub-block is adjacent to the left boundary of the above current block, the histogram is derived based on the left restoration region of the above current block, and An image decoding method characterized in that when the above sub-block is adjacent to the upper boundary of the above current block, the histogram is derived based on the upper restoration region of the above current block.
8. In Paragraph 2, When the above sub-block is adjacent to the left boundary of the above current block, the left directional mode is set to the intra prediction mode for the above intra prediction, and A video decoding method characterized in that when the current block is adjacent to the upper boundary of the current block, the upper directional mode is set to an intra prediction mode for intra prediction.
9. In Paragraph 2, A video decoding method characterized by determining whether the motion information of the neighbor block is available based on whether the motion information of the neighbor block and the motion information of the current block have the same direction.
10. In Paragraph 2, A video decoding method characterized by determining whether the motion information of the neighbor block is available based on whether the motion information of the neighbor block has bidirectional motion information.
11. In Paragraph 2, A video decoding method characterized by determining whether the motion information of the neighbor block is available based on whether the reference picture of the neighbor block and the reference picture of the current block are the same.
12. In Paragraph 1, An image decoding method characterized by obtaining a corrected sub-block through a weighted sum operation between the sub-block and the reference block.
13. In Paragraph 12, When the above sub-block touches the left boundary of the above current block, weights are set on a column-by-column basis within the above sub-block, and A video decoding method characterized by setting weights on a row-by-row basis within the sub-block when the sub-block touches the upper boundary of the current block.
14. In Paragraph 1, An image decoding method characterized in that the weight applied to the prediction sample within the sub-block is inversely proportional to the distance between the boundary of the current block and the prediction sample.
15. Step of obtaining the predicted block of the current block; A step of deriving a reference block for a sub-block within the above prediction block; and Based on the above reference block, the method includes the step of correcting the above sub-block, A video encoding method characterized in that, when motion information of a neighbor block adjacent to the sub-block is available, the reference block is derived based on the motion information of the neighbor block.
16. A processor that generates compressed video data; and In a device including a transmitter that transmits the above-mentioned compressed video data, The above compressed video data is, Step of obtaining the predicted block of the current block; A step of deriving a reference block for a sub-block within the above prediction block; and Based on the above reference block, it is generated through a step of correcting the above sub-block, and A device for transmitting compressed video data, characterized in that when motion information of a neighbor block adjacent to the sub-block is available, the reference block is derived based on the motion information of the neighbor block.
Citation Information
Patent Citations
Encoder and decoder
JP2024107258A
Method and apparatus for failure prediction of pump
KR1020250108502A
Smooth Sub-Block Motion Vector Prediction
US20240267525A1
Video signal processing method and device therefor
WO2024155106A1
Video signal processing method, and device therefor
WO2024155170A1