Image encoding / decoding apparatus and image data transmitting apparatus
By using an image coding method based on affine motion prediction, an affine MVP candidate list is generated, and the predicted values and differences of control point motion vectors are derived. This solves the high cost problem of high-resolution image data and achieves more efficient image coding and storage.
Patent Information
- Application Number
- CN202310904885.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-04-01
- Filing Date
- 2019-04-01
- Publication Date
- 2025-12-09
- Estimated Expiration
- 2039-04-01
AI Technical Summary
High-resolution and high-quality image data transmission and storage are costly, and existing technologies struggle to effectively compress and encode them.
An image coding method based on affine motion prediction is adopted. By generating an affine MVP candidate list, the predicted values and differences of the control point motion vectors are derived, thereby improving the image coding efficiency.
It improves image encoding efficiency and reduces transmission and storage costs.
Smart Images

Figure CN116684639B_ABST
Abstract
Description
[0001] This application is a divisional application of the original application No. 201980029205.3 (International Application No. PCT / KR2019 / 003816, filed on April 1, 2019, entitled "Image encoding method based on affine motion prediction and apparatus therefor"). TECHNICAL FIELD
[0002] The disclosure relates generally to an image encoding technology, and more particularly, to an image encoding method and apparatus based on affine motion prediction in an image encoding system. BACKGROUND
[0003] The demand for high-resolution and high-quality images such as HD (High Definition) images and UHD (Ultra High Definition) images is increasing in various fields. Because the image data has high resolution and high quality, the amount of information or bits to be transmitted increases relative to conventional image data. Therefore, when transmitting the image data using a medium such as a conventional wired / wireless broadband line or storing the image data using an existing storage medium, the transmission cost and storage cost increase.
[0004] Therefore, there is a need for an efficient image compression technology for efficiently transmitting, storing, and reproducing information of high-resolution and high-quality images. SUMMARY
[0005] TECHNICAL TASK
[0006] A technical object of the disclosure is to provide a method and apparatus that improve image encoding efficiency.
[0007] Another technical object of the disclosure is to provide a method and apparatus that improve image encoding efficiency based on affine motion prediction.
[0008] Another technical object of the disclosure is to provide a method and apparatus that improve image encoding efficiency by effectively determining a combination of neighboring blocks used in affine motion prediction.
[0009] Another technical object of the disclosure is to provide a method and apparatus that increase image encoding efficiency by signaling information about an affine MVP candidate list used in affine motion prediction.
[0010] SOLUTION
[0011] According to an example of the present disclosure, a picture decoding method performed by a decoding device is provided. The method includes obtaining motion prediction information from a bitstream; generating an affine MVP candidate list including affine motion vector predictor (MVP) candidates for a current block; deriving control point motion vector predictors (CPMVPs) for control points (CPs) of the current block based on one of the affine MVP candidates included in the affine MVP candidate list; deriving CPMVDs for the CPs of the current block based on information about the CPMVDs for the CPs included in the obtained motion prediction information; deriving control point motion vectors (CPMVs) for the CPs of the current block based on the CPMVPs and the CPMVDs; deriving prediction samples for the current block based on the CPMVs; and generating reconstructed samples for the current block based on the derived prediction samples.
[0012] According to another example of the present disclosure, a decoding device performing picture decoding is provided. The decoding device includes an entropy decoder obtaining motion prediction information from a bitstream; a predictor generating an affine MVP candidate list including affine motion vector predictor (MVP) candidates for a current block, deriving CPMVPs for control points (CPs) of the current block based on one of the affine MVP candidates included in the affine MVP candidate list, deriving CPMVDs for the CPs of the current block based on information about the CPMVDs for the CPs included in the obtained motion prediction information, deriving CPMVs for the CPs of the current block based on the CPMVPs and the CPMVDs, and deriving prediction samples for the current block based on the CPMVs; and an adder generating reconstructed samples for the current block based on the derived prediction samples.
[0013] According to yet another embodiment of the present disclosure, a picture encoding method performed by an encoding device is provided. The method includes generating an affine MVP candidate list including affine MVP candidates for a current block, deriving CPMVPs for control points (CPs) of the current block based on one of the affine MVP candidates included in the affine MVP candidate list, deriving CPMVs for the CPs of the current block, deriving CPMVDs for the CPs of the current block based on the CPMVs and the CPMVPs for the CPs, deriving prediction samples for the current block based on the CPMVs, deriving residual samples for the current block based on the derived prediction samples, and encoding information about the derived CPMVDs and residual information about the residual samples.
[0014] According to still another embodiment of the disclosure, an encoding device performing picture encoding is provided. The encoding device includes a predictor generating an affine MVP candidate list including an affine MVP candidate for a current block, deriving a CPMVP for each CP of the current block based on one of the affine MVP candidates included in the affine MVP candidate list, deriving a CPMV for each CP of the current block, deriving a CPMVD for the CP of the current block based on the CPMV and the CPMVP for each CP, and deriving a prediction sample for the current block based on the CPMVD, a residue processor deriving a residual sample for the current block based on the derived prediction sample, and an entropy encoder encoding information about the derived CPMVD and residual information about the residual sample.
[0015] Advantageous Effects
[0016] According to the disclosure, the overall image / video compression efficiency can be improved.
[0017] According to the disclosure, the efficiency of image encoding can be improved based on affine motion prediction.
[0018] According to the disclosure, the efficiency of image encoding can be improved by signaling information about an affine MVP candidate list for affine motion prediction. BRIEF DESCRIPTION OF DRAWINGS
[0019] FIG. 1 FIG. 1 is a diagram schematically illustrating a configuration of an encoding device according to an embodiment.
[0020] FIG. 2 FIG. 2 is a diagram schematically illustrating a configuration of a decoding device according to an embodiment.
[0021] FIG. 3 FIG. 3 is a diagram illustrating an example of motion expressed by an affine motion model according to an embodiment.
[0022] FIG. 4 FIG. 4 is a diagram illustrating an example of an affine motion model using control point motion vectors (CPMVs) for three control points (CPs) of a current block.
[0023] FIG. 5 FIG. 5 is a diagram illustrating an example of an affine motion model using CPMVs for two CPs of a current block.
[0024] FIG. 6 FIG. 6 is a diagram illustrating an example of deriving motion vectors in a sub-block unit based on an affine motion model.
[0025] FIG. 7 to FIG. 10 FIG. 7 illustrates an example of a method of detecting a neighboring block encoded based on affine motion prediction.
[0026] FIG. 11 is a flowchart illustrating an operation method of an encoding apparatus according to an embodiment.
[0027] FIG. 12 is a block diagram illustrating a configuration of an encoding apparatus according to an embodiment.
[0028] FIG. 13 is a flowchart illustrating an operation method of a decoding apparatus according to an embodiment.
[0029] FIG. 14 is a block diagram illustrating a configuration of a decoding apparatus according to an embodiment. DETAILED DESCRIPTION
[0030] According to an embodiment of the disclosure, a picture decoding method performed by a decoding apparatus is presented. The method includes obtaining motion prediction information from a bitstream; generating an affine MVP candidate list including affine motion vector prediction value (MVP) candidates for a current block; deriving a control point motion vector prediction value (CPMVP) for each control point (CP) of the current block based on one of the affine MVP candidates included in the affine MVP candidate list; deriving a control point motion vector difference (CPMVD) for the CP of the current block based on information about the CPMVD for the each CP included in the obtained motion prediction information; deriving a control point motion vector (CPMV) for the CP of the current block based on the CPMVP and the CPMVD; deriving a prediction sample of the current block based on the CPMV; and generating a reconstructed sample of the current block based on the derived prediction sample.
[0031] Embodiment of the disclosure
[0032] The disclosure can be modified in various forms, and specific embodiments thereof will be described and illustrated in the accompanying drawings. However, these embodiments are not intended to limit the disclosure. The terms used in the following description are merely used to describe specific embodiments and are not intended to limit the disclosure. Singular expressions include plural expressions as long as it is clearly different from the context. Terms such as "include" and "have" are intended to indicate the presence of features, numbers, steps, operations, elements, components, or combinations thereof described in the following description, and it should be understood that the possibility of existence or addition of one or more different features, numbers, steps, operations, elements, components, or combinations thereof is not excluded.
[0033] In addition, in order to facilitate the explanation of different specific functions, the elements in the drawings described in the present embodiment are drawn independently, and it does not mean that these elements are implemented by independent hardware or independent software. For example, two or more of the elements can be combined to form a single element, or one element can be divided into a plurality of elements. Embodiments in which elements are combined and / or divided belong to the disclosure without departing from the concept of the present embodiment.
[0034] The following description can be applied to the technical field of processing a video, an image, or a picture. For example, the methods or exemplary embodiments disclosed in the following description can be associated with the disclosure of the Versatile Video Coding (VVC) standard (ITU-T H.266 Recommendation), the next generation video / image coding standard after VVC, or a standard before VVC (e.g., the High Efficiency Video Coding (HEVC) standard (ITU-T H.265 Recommendation), etc.).
[0035] Hereinafter, examples of the present embodiment will be described in detail with reference to the accompanying drawings. Also, throughout the drawings, like reference numerals are used to refer to like elements, and the same description will be omitted for like elements.
[0036] In the present disclosure, a video can mean a set of a series of images according to the passage of time. In general, a picture means a unit of an image representing a specific time, and a slice is a unit of a part constituting a picture. One picture can be constituted by a plurality of slices, and the terms picture and slice can be mixed with each other as occasion demands.
[0037] A pixel or pel can mean a minimum unit constituting one picture (or image). Also, a "sample" can be used as a term corresponding to a pixel. A sample can generally represent a pixel or a value of a pixel, can represent only a pixel (pixel value) of a luminance component, and can represent only a pixel (pixel value) of a chrominance component.
[0038] A unit indicates a basic unit of image processing. A unit can include at least one of a specific region and information related to the region. Alternatively, a unit can be mixed with terms such as a block, a region, etc. In a typical case, an M×N block can represent a set of samples or transform coefficients arranged in M columns and N rows.
[0039] FIG. 1 The structure of an encoding apparatus to which the present disclosure is applicable is briefly illustrated. Hereinafter, an encoding / decoding apparatus can include a video encoding / decoding apparatus and / or an image encoding / decoding apparatus, and the video encoding / decoding apparatus can be used as a concept including the image encoding / decoding apparatus, or the image encoding / decoding apparatus can be used as a concept including the video encoding / decoding apparatus.
[0040] Referring to FIG. 1 , the video encoding apparatus 100 can include a picture partitioner 105, a predictor 110, a residual processor 120, an entropy encoder 130, an adder 140, a filter 150, and a memory 160. The residual processor 120 can include a subtractor 121, a transformer 122, a quantizer 123, a rearranger 124, a dequantizer 125, an inverse transformer 126.
[0041] The picture partitioner 105 can separate an input picture into at least one processing unit.
[0042] In an example, the processing unit can be referred to as a coding unit (CU). In this case, the coding unit can be recursively separated from a largest coding unit (LCU) according to a quadtree binary tree (QTBT) structure. For example, one coding unit can be separated into a plurality of coding units of a deeper depth based on a quadtree structure, a binary tree structure, and / or a ternary tree structure. In this case, for example, the quadtree structure can be applied first, and the binary tree structure and the ternary tree structure can be applied later. Alternatively, the binary tree structure / ternary tree structure can be applied first. The coding process according to the present embodiment can be performed based on a final coding unit that is no longer separated further. In this case, the largest coding unit can be used as the final coding unit based on coding efficiency or the like according to image characteristics, or the coding unit can be recursively separated into a coding unit of a lower depth as necessary and a coding unit having an optimal size can be used as the final coding unit. Here, the coding process can include a process such as prediction, transform, and reconstruction, which will be described later.
[0043] In another example, the processing unit can include a coding unit (CU), a prediction unit (PU), or a transformer (TU). The coding unit can be separated from a largest coding unit (LCU) into a coding unit of a deeper depth according to a quadtree structure. In this case, the largest coding unit can be directly used as a final coding unit based on coding efficiency or the like according to image characteristics, or the coding unit can be recursively separated into a coding unit of a deeper depth as necessary, and a coding unit having an optimal size can be used as the final coding unit. When a smallest coding unit (SCU) is set, the coding unit can not be separated into a coding unit smaller than the smallest coding unit. Here, the final coding unit refers to a coding unit that is partitioned or separated into a prediction unit or a transformer. The prediction unit is a unit partitioned from the coding unit, and can be a unit of sample prediction. Here, the prediction unit can be divided into sub-blocks. The transformer can be divided from the coding unit according to a quadtree structure, and can be a unit of deriving a transform coefficient and / or a unit of deriving a residual signal from the transform coefficient. Hereinafter, the coding unit can be referred to as a coding block (CB), the prediction unit can be referred to as a prediction block (PB), and the transformer can be referred to as a transform block (TB). The prediction block or the prediction unit can refer to a specific area in the form of a block in a picture, and include an array of predicted samples. In addition, the transform block or the transformer can refer to a specific area in the form of a block in a picture, and include an array of transform coefficients or residual samples.
[0044] The predictor 110 can perform prediction on a processing target block (hereinafter, it can represent a current block or a residual block), and can generate a prediction block including prediction samples for the current block. The unit of prediction performed in the predictor 110 can be a coding block, or can be a transform block, or can be a prediction block.
[0045] The predictor 110 can determine whether to apply intra prediction or inter prediction to the current block. For example, the predictor 110 can determine whether to apply intra prediction or inter prediction in a CU unit.
[0046] In the case of intra prediction, the predictor 110 can derive prediction samples of the current block based on reference samples other than the current block in a picture (hereinafter, a current picture) to which the current block belongs. In this case, the predictor 110 can derive the prediction samples based on an average or interpolation of neighboring reference samples of the current block (case (i)), or can derive the prediction samples based on reference samples existing in a specific (prediction) direction with respect to the prediction samples among the neighboring reference samples of the current block (case (ii)). Case (i) can be referred to as a non-directional mode or a non-angular mode, and case (ii) can be referred to as a directional mode or an angular mode. In intra prediction, the prediction mode can include, as an example, 33 directional modes and at least two non-directional modes. The non-directional modes can include a DC mode and a planar mode. The predictor 110 can determine a prediction mode to be applied to the current block by using a prediction mode applied to a neighboring block.
[0047] In the case of inter prediction, the predictor 110 can derive prediction samples for the current block based on samples on a reference picture specified by a motion vector. The predictor 110 can derive the prediction samples for the current block by applying any one of a skip mode, a merge mode, and a motion vector prediction (MVP) mode. In the case of the skip mode and the merge mode, the predictor 110 can use motion information of a neighboring block as motion information of the current block. In the case of the skip mode, unlike the merge mode, a difference (residual) between the prediction samples and original samples is not transmitted. In the case of the MVP mode, a motion vector of a neighboring block is used as a predictor to derive a motion vector of the current block.
[0048] In the case of inter prediction, the neighboring block can include a spatial neighboring block existing in the current picture and a temporal neighboring block existing in a reference picture. The reference picture including the temporal neighboring block can also be referred to as a collocated picture (colPic). The motion information can include a motion vector and a reference picture index. Information such as prediction mode information and motion information can be (entropy) encoded and then output as a form of a bitstream.
[0049] When motion information of a temporally neighboring block is used in the skip mode and the merge mode, a highest picture in a reference picture list can be used as a reference picture. The reference pictures included in the reference picture list can be aligned based on a picture order count (POC) difference between the current picture and the corresponding reference picture. The POC corresponds to a display order and can be distinguished from an encoding order.
[0050] The subtractor 121 generates residual samples, which are differences between original samples and prediction samples. If the skip mode is applied, the residual samples can not be generated as described above.
[0051] The transformer 122 transforms the residual samples in units of a transform block to generate transform coefficients. The transformer 122 can perform a transform based on a size of a corresponding transform block and a prediction mode applied to a prediction block or a coding block spatially overlapping the transform block. For example, if intra prediction is applied to the prediction block or the coding block overlapping the transform block and the transform block is a 4x4 residual array, a discrete sine transform (DST) transform kernel can be used to transform the residual samples, and in other cases, a discrete cosine transform (DCT) transform kernel is used to transform the residual samples.
[0052] The quantizer 123 can quantize the transform coefficients to generate quantized transform coefficients.
[0053] The rearranger 124 rearranges the quantized transform coefficients. The rearranger 124 can rearrange the quantized transform coefficients in a block form into a one-dimensional vector through a coefficient scanning method. Although the rearranger 124 is described as a separate component, the rearranger 124 can be a part of the quantizer 123.
[0054] The entropy encoder 130 can perform entropy encoding on the quantized transform coefficients. The entropy encoding can include an encoding method such as exponential Golomb, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), or the like. In addition to the quantized transform coefficients, the entropy encoder 130 can also perform encoding on information (e.g., syntax element values, etc.) required for video reconstruction together or separately according to entropy encoding or according to a pre-configured method. The entropy encoded information can be transmitted or stored in a network abstraction layer (NAL) unit in the form of a bitstream. The bitstream can be transmitted via a network or stored in a digital storage medium. Here, the network can include a broadcasting network or a communication network, and the digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SDD, or the like.
[0055] The inverse quantizer 125 inverse quantizes values (transform coefficients) quantized by the quantizer 123, and the inverse transformer 126 inverse transforms values inverse quantized by the inverse quantizer 125 to generate residual samples.
[0056] The adder 140 adds the residual samples to the prediction samples to reconstruct a picture. The residual samples can be added to the prediction samples in a unit of block to generate a reconstructed block. Although the adder 140 is described as a separate component, the adder 140 can be a part of the predictor 110. In addition, the adder 140 can be referred to as a reconstructor or a reconstructed block generator.
[0057] The filter 150 can apply deblocking filtering and / or sample adaptive offset to the reconstructed picture. The artifacts at block boundaries or distortion at quantization in the reconstructed picture can be corrected by the deblocking filtering and / or the sample adaptive offset. The sample adaptive offset can be applied in a unit of sample after the deblocking filtering is completed. The filter 150 can apply an adaptive loop filter (ALF) to the reconstructed picture. The ALF can be applied to the reconstructed picture to which the deblocking filtering and / or the sample adaptive offset have been applied.
[0058] The memory 160 can store the reconstructed picture (decoded picture) or information required for encoding / decoding. Here, the reconstructed picture can be the reconstructed picture filtered by the filter 150. The stored reconstructed picture can be used as a reference picture for (inter) prediction of other pictures. For example, the memory 160 can store a (reference) picture for inter prediction. Here, the picture for inter prediction can be specified according to a reference picture set or a reference picture list.
[0059] FIG. 2 The structure of a video / image decoding apparatus to which the present disclosure is applicable is briefly shown. Hereinafter, the video decoding apparatus can include an image decoding apparatus.
[0060] Referring to FIG. 2 The video decoding apparatus 200 can include an entropy decoder 210, a residual processor 220, a predictor 230, an adder 240, a filter 250, and a memory 260. The residual processor 220 can include a rearranger 221, an inverse quantizer 222, and an inverse transformer 223. In addition, although not depicted, the video decoding apparatus 200 can include a receiver for receiving a bitstream including video information. The receiver can be configured as a separate module or can be included in the entropy decoder 210.
[0061] When a bitstream including video / image information is input, the video decoding apparatus 200 can reconstruct a video / image / picture in association with a process of processing video information in a video encoding apparatus.
[0062] For example, the video decoding device 200 can perform video decoding using a processing unit applied in a video encoding device. Accordingly, the processing unit block for video decoding can be, for example, a coding unit, and in another example, a coding unit, a prediction unit, or a transformer. The coding unit can be separated from a largest coding unit according to a quad tree structure and / or a binary tree structure and / or a ternary tree structure.
[0063] In some cases, a prediction unit and a transformer can be further used, and in this case, a prediction block is a block derived or split from a coding unit, and can be a unit of sample prediction. Here, the prediction unit can be divided into sub-blocks. The transformer can be separated from the coding unit according to a quad tree structure, and can be a unit of deriving a transform coefficient or a unit of deriving a residual signal from the transform coefficient.
[0064] The entropy decoder 210 can parse a bitstream to output information required for video reconstruction or picture reconstruction. For example, the entropy decoder 210 can decode information in a bitstream based on an encoding method such as exponential Golomb coding, CAVLC, CABAC, etc., and can output values of syntax elements required for video reconstruction and quantized values of transform coefficients with respect to a residual.
[0065] More specifically, the CABAC entropy decoding method can receive bins corresponding to each syntax element in a bitstream, determine a context model using decoding target syntax element information and decoding information of a neighboring block and a decoding target block or information of a symbol / bin decoded in a previous step, predict a bin generation probability according to the determined context model, and perform arithmetic decoding of the bin to generate a symbol corresponding to each syntax element value. Here, the CABAC entropy decoding method can update the context model using information of a symbol / bin decoded for a next symbol / bin after determining the context model.
[0066] Information with respect to prediction among information decoded in the entropy decoder 210 can be provided to the predictor 230, and a residual value that has been entropy-decoded by the entropy decoder 210, that is, a quantized transform coefficient, can be input to the rearranger 221.
[0067] The rearranger 221 can rearrange the quantized transform coefficient into a two-dimensional block form. The rearranger 221 can perform rearrangement corresponding to coefficient scanning performed by an encoding device. Although the rearranger 221 is described as a separate component, the rearranger 221 can be a part of the inverse quantizer 222.
[0068] The inverse quantizer 222 can inverse quantize the quantized transform coefficient based on a (de)quantization parameter to output a transform coefficient. In this case, information for deriving the quantization parameter can be signaled from an encoding device.
[0069] The inverse transformer 223 can perform inverse transform on the transform coefficients to derive the residual samples.
[0070] The predictor 230 can perform prediction on the current block and can generate a prediction block including prediction samples for the current block. The unit of prediction performed in the predictor 230 can be a coding block, or can be a transform block or can be a prediction block.
[0071] The predictor 230 can determine whether to apply intra prediction or to apply inter prediction based on the information on prediction. In this case, the unit for determining which one between the intra prediction and the inter prediction is to be used can be different from the unit for generating the prediction samples. Also, the unit for generating the prediction samples can also be different in the inter prediction and the intra prediction. For example, it can be determined in CU unit which one between the inter prediction and the intra prediction is to be applied. Also, for example, in the inter prediction, the prediction samples can be generated by determining the prediction mode in PU unit, and in the intra prediction, the prediction samples can be generated in TU unit by determining the prediction mode in PU unit.
[0072] In case of the intra prediction, the predictor 230 can derive the prediction samples for the current block based on neighboring reference samples in the current picture. The predictor 230 can derive the prediction samples for the current block by applying a directional mode or a non-directional mode based on the neighboring reference samples of the current block. In this case, the prediction mode to be applied to the current block can be determined by using the intra prediction mode of the neighboring block.
[0073] In case of the inter prediction, the predictor 230 can derive the prediction samples for the current block based on samples specified in a reference picture according to a motion vector. The predictor 230 can derive the prediction samples for the current block using one of a skip mode, a merge mode, and an MVP mode. Here, the motion information (e.g., a motion vector and information on a reference picture index) required for the inter prediction of the current block provided by the video encoding apparatus can be acquired or derived based on the information on prediction.
[0074] In the skip mode and the merge mode, the motion information of the neighboring block can be used as the motion information of the current block. Here, the neighboring block can include a spatial neighboring block and a temporal neighboring block.
[0075] The predictor 230 can construct a merge candidate list using motion information of available neighboring blocks, and use information indicated by a merge index on the merge candidate list as a motion vector of the current block. The merge index can be signaled by the encoding device. The motion information can include a motion vector and a reference picture. In the skip mode and the merge mode, when using motion information of a temporal neighboring block, an uppermost picture in a reference picture list can be used as a reference picture.
[0076] In the case of the skip mode, unlike the merge mode, a difference (residual) between a predicted sample and an original sample is not transmitted.
[0077] In the case of the MVP mode, a motion vector of a neighboring block can be used as a motion vector predictor to derive a motion vector of the current block. Here, the neighboring block can include a spatial neighboring block and a temporal neighboring block.
[0078] When the merge mode is applied, a merge candidate list can be generated, for example, using a motion vector of a reconstructed spatial neighboring block and / or a motion vector corresponding to a Col block which is a temporal neighboring block. A motion vector of a candidate block selected from the merge candidate list is used as a motion vector of the current block in the merge mode. The above-described information about prediction can include a merge index indicating a candidate block having a best motion vector selected from candidate blocks included in the merge candidate list. Here, the predictor 230 can derive a motion vector of the current block using the merge index.
[0079] When the MVP (motion vector predictor) mode is applied as another example, a motion vector predictor candidate list can be generated using a motion vector of a reconstructed spatial neighboring block and / or a motion vector corresponding to a Col block which is a temporal neighboring block. That is, the motion vector of the reconstructed spatial neighboring block and / or the motion vector corresponding to the Col block which is the temporal neighboring block can be used as a motion vector candidate. The above-described information about prediction can include a prediction motion vector index indicating a best motion vector selected from motion vector candidates included in the list. Here, the predictor 230 can select a prediction motion vector of the current block from the motion vector candidates included in the motion vector candidate list using the motion vector index. The predictor of the encoding device can obtain a motion vector difference (MVD) between the motion vector of the current block and the motion vector predictor, encode the MVD, and output the encoded MVD in the form of a bitstream. That is, the MVD can be obtained by subtracting the motion vector predictor from the motion vector of the current block. Here, the predictor 230 can acquire the motion vector included in the information about prediction, and derive the motion vector of the current block by adding the motion vector difference to the motion vector predictor. In addition, the predictor can obtain or derive a reference picture index indicating a reference picture from the above-described information about prediction.
[0080] The adder 240 can add the residual samples to the prediction samples to reconstruct the current block or the current picture. The adder 240 can reconstruct the current picture by adding the residual samples to the prediction samples in a unit of block. When the skip mode is applied, the residual is not transmitted, and thus the prediction samples can become the reconstructed samples. Although the adder 240 is described as a separate component, the adder 240 can be a part of the predictor 230. In addition, the adder 240 can be referred to as a reconstructor or a reconstructed block generator.
[0081] The filter 250 can apply deblocking filtering, sample adaptive offset, and / or ALF to the reconstructed picture. Here, the sample adaptive offset can be applied in a unit of sample after the deblocking filtering. The ALF can be applied after the deblocking filtering and / or the application of the sample adaptive offset.
[0082] The memory 260 can store the reconstructed picture (decoded picture) or information required for decoding. Here, the reconstructed picture can be the reconstructed picture filtered by the filter 250. For example, the memory 260 can store a picture used for inter prediction. Here, the picture used for inter prediction can be specified according to a reference picture set or a reference picture list. The reconstructed picture can be used as a reference picture for other pictures. The memory 260 can output the reconstructed picture in an output order.
[0083] Further, as described above, when video encoding is performed, prediction is performed to improve compression efficiency. Accordingly, a prediction block including prediction samples for a current block that is a block to be encoded (i.e., an encoding target block) can be generated. Here, the prediction block includes prediction samples in a spatial domain (or a pixel domain). The prediction block is derived in the same manner in the encoding device and the decoding device, and the encoding device can signal information about a residual between the original block and the prediction block (residual information) rather than original sample values of the original block to the decoding device, thereby improving image encoding efficiency. The decoding device can derive a residual block including residual samples based on the residual information, add the residual block to the prediction block to generate a reconstructed block including reconstructed samples, and generate a reconstructed picture including the reconstructed block.
[0084] The residual information can be generated through a transform and quantization process. For example, the encoding apparatus can derive a residual block between the original block and the prediction block, perform a transform process on residual samples (an array of residual samples) included in the residual block to derive transform coefficients, perform a quantization process on the transform coefficients to derive quantized transform coefficients, and can signal the related residual information to the decoding apparatus (through a bitstream). Here, the residual information can include value information of the quantized transform coefficients, position information, a transform technique, a transform kernel, and a quantization parameter, etc. The decoding apparatus can perform a dequantization / inverse transform process based on the residual information, and can derive the residual samples (or the residual block). The decoding apparatus can generate a reconstructed picture based on the prediction block and the residual block. In addition, for inter prediction of a picture for later reference, the encoding apparatus can also perform dequantization / inverse transform on the quantized transform coefficients to derive the residual block, and generate a reconstructed picture based on the residual block.
[0085] FIG. 3 is a diagram illustrating an example of a motion expressed by an affine motion model according to an embodiment.
[0086] In this specification, "CP" as an abbreviation of a control point can mean a reference point or sample used as a reference when an affine motion model is applied to a current block. A motion vector of the CP can be referred to as a "control point motion vector (CPMV)", and the CPMV can be derived based on a "control point motion vector predictor (CPMVP)" as a CPMV predictor.
[0087] Referring to FIG. 3 The motion that can be expressed by the affine motion model according to an embodiment can include a translation motion, a scaling motion, a rotation motion, and a shearing motion. That is, the affine motion model can effectively express a translation motion in which an image (or a part thereof) moves in a plane over time, a scaling motion in which an image (or a part thereof) is scaled over time, a rotation motion in which an image (or a part thereof) is rotated over time, and a shearing motion in which an image (or a part thereof) is deformed into a parallelogram over time.
[0088] The affine inter prediction can be performed using the affine motion model according to an embodiment. The encoding apparatus / decoding apparatus can predict a distorted shape of an image based on a motion vector at a CP of a current block through the affine inter prediction, which can result in an increase in prediction accuracy, thus improving compression performance of the image. In addition, the motion vector of at least one CP of the current block can be derived using motion vectors of neighboring blocks of the current block, and thus the amount of data of additional information added can be reduced, and inter prediction efficiency can be improved.
[0089] In one example, affine inter prediction can be performed based on motion information at three CPs (i.e., three reference points) for a current block. The motion information at the three CPs for the current block can include a CP MV for each CP.
[0090] FIG. 4 An affine motion model in which three CPs' motion vectors are used is schematically shown.
[0091] When a position of a top-left sample within a current block is (0, 0), a width of the current block is 'w', and a height thereof is 'h', as shown in FIG. 4 , samples located at (0, 0), (w, 0), and (0, h) can be determined as CPs for the current block. Hereinafter, the CP at the sample position (0, 0) can be denoted as CP0, the CP at the sample position (w, 0) can be denoted as CP1, and the CP at the sample position (0, h) can be denoted as CP2.
[0092] The affine motion model according to the embodiments can be applied using the above-described respective CPs and motion vectors of the respective CPs. The affine motion model can be expressed as the following Equation 1.
[0093] [Equation 1]
[0094]
[0095] Here, w denotes a width of a current block, h denotes a height of the current block, v 0x and v 0y denote an x component and a y component of a motion vector of CP0, respectively, v 1x and v 1y denote an x component and a y component of a motion vector of CP1, respectively, v 2x and v 2y denote an x component and a y component of a motion vector of CP2, respectively. In addition, x denotes an x component of a position of a target sample within a current block, y denotes a y component of the position of the target sample within the current block, v x denotes an x component of a motion vector of the target sample within the current block, and v y denotes a y component of the motion vector of the target sample within the current block.
[0096] In addition, Equation 1 expressing the affine motion model is merely an example, and an equation for expressing the affine motion model is not limited to Equation 1. For example, in some cases, a sign of each coefficient disclosed in Equation 1 can be changed from that of Equation 1, and in some cases, a size of an absolute value of each coefficient can also be changed from that of Equation 1.
[0097] Since the motion vector of CP0, the motion vector of CP1, and the motion vector of CP2 are known, the motion vector according to the sample position within the current block can be derived based on the above Equation 1. That is, according to the affine motion model, the motion vectors v0(v 0x , v 0y ), v1(v 1x , v 1y ), and v2(v 2x , v 2y ) at the CPs can be scaled based on the distance ratio between the coordinates (x, y) of the target sample and the three CPs, so that the motion vector of the target sample according to the target sample position can be derived. That is, according to the affine motion model, the motion vector of each sample within the current block can be derived based on the motion vectors of the CPs. In addition, the set of the motion vectors of the samples within the current block derived according to the affine motion model can be referred to as an affine motion vector field.
[0098] In addition, the six parameters of the above Equation 1 can be expressed as a, b, c, d, e, and f of the following equation, and the equation of the affine motion model expressed using the six parameters can be as follows:
[0099] [Equation 2]
[0100]
[0101]
[0102]
[0103] where w denotes the width of the current block, h denotes the height of the current block, v 0x and v 0y denote the x component and the y component of the motion vector of CP0, respectively, v 1x and v 1y denote the x component and the y component of the motion vector of CP1, respectively, v 2x and v 2y denote the x component and the y component of the motion vector of CP2, respectively. In addition, x denotes the x component of the position of the target sample within the current block, y denotes the y component of the position of the target sample within the current block, v x denotes the x component of the motion vector of the target sample within the current block, and v y denotes the y component of the motion vector of the target sample within the current block.
[0104] In addition, Equation 2 representing an affine motion model based on six parameters is only an example, and an equation for representing an affine motion model based on six parameters is not limited to Equation 2. For example, in some cases, the sign of each coefficient disclosed in Equation 2 can be changed from the sign of Equation 2, and in some cases, the size of the absolute value of each coefficient can also be changed from the size of the absolute value of Equation 2.
[0105] An affine inter prediction using six parameters or an affine motion model can be referred to as a six-parameter affine motion model or AF6.
[0106] In one example, the affine inter prediction can be performed based on motion information at three CPs (i.e., three reference points) for the current block. The motion information at the three CPs of the current block can include a CPMV for each CP.
[0107] In one example, the affine inter prediction can be performed based on motion information at two CPs (i.e., two reference points) for the current block. The motion information at the two CPs of the current block can include a CPMV for each CP.
[0108] FIG. 5 An affine motion model in which motion vectors of two CPs are used is schematically illustrated.
[0109] An affine motion model using two CPs can represent three motions including a translation motion, a scaling motion, and a rotation motion. The affine motion model representing the three motions can be referred to as a similarity affine motion model or a simplified affine motion model.
[0110] When a position of an upper left sample within a current block is (0, 0), a width of the current block is 'w', and a height thereof is 'h', as FIG. 5 illustrated, samples located at (0, 0) and (w, 0) can be determined as CPs of the current block. Hereinafter, the CP at the sample position (0, 0) can be denoted as CP0, and the CP at the sample position (w, 0) can be denoted as CP1.
[0111] An affine motion model based on four parameters can be applied using the respective CPs and motion vectors of the corresponding CPs described above. The affine motion model can be represented as Equation 3 below.
[0112] [Equation 3]
[0113]
[0114] Here, w denotes a width of a current block, v 0x and v 0y denote an x component and a y component of a motion vector of CP0, respectively, and v 1x and v 1yrespectively, and v x represents an x component of a motion vector of a target sample within the current block, v y represents a y component of a motion vector of a target sample within the current block.
[0115] In addition, Equation 3 representing an affine motion model based on four parameters is only an example, and an equation for representing an affine motion model based on four parameters is not limited to Equation 3. For example, in some cases, the sign of each coefficient disclosed in Equation 3 can be changed from the sign of Equation 3, and in some cases, the size of the absolute value of each coefficient can also be changed from the size of the absolute value of Equation 3.
[0116] In addition, the four parameters of Equation 3 above can be expressed as a, b, c, and d of Equation 4 below, and Equation 4 of an affine motion model represented using the four parameters can be expressed as follows:
[0117] [Equation 4]
[0118]
[0119]
[0120] Here, w denotes the width of the current block, v 0x and v 0y respectively, and v 1x and v 1y respectively, and v x represents an x component of a motion vector of a target sample within the current block, v y represents a y component of a motion vector of a target sample within the current block. Since the affine motion model using two CPs can be represented using four parameters a, b, c, and d as in Equation 4, the affine inter prediction or affine motion model using four parameters can be referred to as a four-parameter affine motion model or AF4. That is, according to the affine motion model, a motion vector of each sample within the current block can be derived based on the motion vectors of the control points. In addition, a set of motion vectors of samples within the current block derived according to the affine motion model can be referred to as an affine motion vector field.
[0121] Further, Equation 4 representing an affine motion model based on four parameters is only one example, and an equation for representing an affine motion model based on four parameters is not limited to Equation 4. For example, in some cases, the sign of each coefficient disclosed in Equation 4 can be changed from the sign of Equation 4, and in some cases, the size of the absolute value of each coefficient can also be changed from the size of the absolute value of Equation 4.
[0122] Further, as described above, the motion vector of the sample unit can be derived through the affine motion model, and through this, the accuracy of inter prediction can be significantly improved. However, in this case, the complexity can be greatly increased in the motion compensation process.
[0123] In another embodiment, it can be limited to derive the motion vector of the sub-block unit within the current block instead of the motion vector of the sample unit.
[0124] FIG. 6 FIG. 1 is a diagram illustrating an example of deriving a motion vector in a sub-block unit based on an affine motion model.
[0125] FIG. 6 An example in which the size of the current block is 16x16 and the motion vector is derived in a 4x4 sub-block unit is exemplarily represented. The sub-block can be set in various sizes, and for example, if the sub-block is set to an n x n size (n is a positive integer, and for example, n is 4), the motion vector can be derived in an n x n sub-block unit within the current block based on the affine motion model, and various methods for deriving the motion vector representing each sub-block can be applied.
[0126] For example, referring to FIG. 6 The motion vector of each sub-block can be derived, and the center or the center lower right sample position of each sub-block can be set as the representative coordinates. Here, the center lower right position can mean a sample position located at the lower right among four samples located at the center of the sub-block. For example, if n is an odd number, one sample can be located at the center of the sub-block, and in this case, the center sample position can be used to derive the motion vector of the sub-block. However, if n is an even number, four samples can be located near the center of the sub-block, and in this case, the lower right sample position can be used to derive the motion vector. For example, referring to FIG. 6 The representative coordinates of each sub-block can be derived as (2, 2), (6, 2), (10, 2), …, (14, 14), and the encoding apparatus / decoding apparatus can derive the motion vector of each sub-block by inputting each of the representative coordinates of the sub-block into Equations 1 to 3 above. The motion vector of the sub-block within the current block derived through the affine motion model can be referred to as an affine MVF.
[0127] In an embodiment, when the affine motion model described above is generalized into two steps, it can include a step of deriving CPMVs and a step of performing affine motion compensation.
[0128] In addition, in inter prediction using the affine motion model described above (i.e., affine motion prediction), there can be an affine merge mode (AF_MERGE or AAM) and an affine inter mode (AF_INTER or AAMVP).
[0129] Similar to the conventional skip / merge mode, the affine merge mode according to an embodiment can denote a coding / decoding method that performs prediction by deriving CPMVs of each of two or three CPs from neighboring blocks of a current block without encoding a motion vector difference (MVD). Similar to the AMVP, the affine inter mode (AAMVP) can explicitly denote a method of encoding / decoding difference information between CPMVs and CPMVPs.
[0130] In addition, the description of the affine motion model described above in FIG. 3 to FIG. 6 is intended to help understanding the principles of the coding method / decoding method according to an embodiment of the disclosure, which will be described later in this specification, and thus a person skilled in the art will easily understand that the scope of the disclosure is not limited by the contents described above with reference to FIG. 3 to FIG. 6 .
[0131] In an embodiment, a method of constructing an affine MVP candidate list for affine inter prediction will be described. In this specification, the affine MVP candidate list includes affine MVP candidates, and each affine MVP candidate can denote a combination of CPMVPs of CP0 and CP1 in a four-parameter (affine) motion model, and can denote a combination of CPMVPs of CP0, CP1, and CP2 in a six-parameter (affine) motion model. The affine MVP candidate described in this specification can be variously called various names such as a CPMVP candidate, an affine CPMVP candidate, a CPMVP pair candidate, and a CPMVP pair. The affine MVP candidate list can include n affine MVP candidates, and when n is an integer greater than 1, information indicating a best affine MVP candidate can need to be encoded and decoded. When n is 1, information indicating a best affine MVP candidate can not need to be encoded and decoded. Examples of syntax when n is an integer greater than 1 are shown in Table 1 below, and examples of syntax when n is 1 are shown in Table 2 below.
[0132] [table 1]
[0133]
[0134] [table 2]
[0135]
[0136] In Tables 1 and 2, merge_flag is a flag for indicating whether it is in a merge mode. When the value of merge_flag is 1, the merge mode can be performed, and when the value of merge_flag is 0, the merge mode can not be performed. affine_flag is a flag for indicating whether affine motion prediction is used. When the value of affine_flag is 1, affine motion prediction can be used, and when the value of affine_flag is 0, affine motion prediction can not be used. aamvp_idx is index information for indicating a best affine MVP candidate among n affine MVP candidates. It can be understood that, in Table 1 indicating a case where n is an integer greater than 1, the best affine MVP candidate is represented based on aamvp_idx, and in Table 2 indicating a case where n is 1, there is only one affine MVP candidate, and thus aamvp_idx is not parsed.
[0137] In an embodiment, when determining an affine MVP candidate, an affine motion model of a neighboring block encoded based on affine motion prediction (hereinafter, can also be referred to as an "affine encoded block") can be used. In an embodiment, when determining an affine MVP candidate, a first step and a second step can be performed. In the first step, it can be checked whether each of the neighboring blocks is encoded based on affine motion prediction while scanning the neighboring blocks in a predetermined order. The affine MVP candidate of the current block can be determined using the neighboring blocks encoded based on affine motion prediction in the second step.
[0138] In the first step, up to m blocks encoded based on affine motion prediction can be considered. For example, when m is 1, the affine MVP candidate can be determined using the affine encoded block ranked first in the scanning order. For example, when m is 2, the affine MVP candidate can be determined using the affine encoded blocks ranked first and second in the scanning order. At this time, when a pruning check is performed and the first affine MVP candidate and the second affine MVP candidate are the same, the scanning process can be additionally performed to determine an additional affine MVP candidate. In addition, in an embodiment, m described in the present embodiment can not exceed the value of n described above in the description of Tables 1 and 2.
[0139] In addition, in the first step, the process of checking whether each of the neighboring blocks is encoded based on affine motion prediction while scanning the neighboring blocks can be implemented in various ways. Hereinafter, embodiments of the process of checking whether each of the neighboring blocks is encoded based on affine motion prediction while scanning the neighboring blocks will be described in FIG. 7 to FIG. 10
[0140] FIG. 7 to FIG. 10 An example of a method of detecting neighboring blocks encoded based on affine motion prediction is shown.
[0141] Referring to FIG. 7 , 4x4 blocks A, B, C, D, and E are shown at the neighbors of the current block. Block E, as the top-left corner neighboring block, is located at the neighbor of CP0, block C, as the top-right corner neighboring block, and block B, as the upper neighboring block, are located at the neighbor of CP1, and block D, as the bottom-left corner neighboring block, and block A, as the left neighboring block, are located at the neighbor of CP2. According to FIG. 7 , the arrangement can help reduce design cost as it can share structure with methods according to AMVP or merge mode.
[0142] Referring to FIG. 8 , 4x4 blocks A, B, C, D, E, F, and G are shown at the neighbors of the current block. Block E, as the top-left corner neighboring block, block G, as the first left neighboring block, and block F, as the upper neighboring block, are located at the neighbor of CP0, block C, as the top-right corner neighboring block, and block B, as the second upper neighboring block, are located at the neighbor of CP1, and block D, as the bottom-left corner neighboring block, and block A, as the second left neighboring block, are located at the neighbor of CP2. According to FIG. 8 , the arrangement determines whether to encode the current block based on affine motion prediction only based on 4x4 blocks neighboring three CPs, thus can minimize the increase of scan complexity, and it is also effective in terms of encoding performance.
[0143] FIG. 9 An arrangement of neighboring blocks scanned when detecting neighboring blocks encoded based on affine motion prediction is shown, which is the same as the arrangement shown in FIG. 8 . However, in the embodiment according to FIG. 9 , the affine MVP candidate can be determined based on at most p 4x4 neighboring blocks contained within the closed dashed line located at the left side of the current block and at most q 4x4 neighboring blocks contained within the closed dashed line located at the upper part of the current block. For example, if both p and q are 1, the affine MVP candidate can be determined based on the affine encoded block ranked first in the scan order among the 4x4 neighboring blocks contained within the closed dashed line located at the left side of the current block and the affine encoded block ranked first in the scan order among the 4x4 neighboring blocks contained within the closed dashed line located at the upper part of the current block.
[0144] Referring to FIG. 10The affine MVP candidate can be determined based on the first affine coding block in the scanning order among the blocks E (top-left neighbor), G (first left neighbor), and F (first top neighbor) located adjacent to CP0; the first affine coding block in the scanning order among the blocks C (top-right neighbor) and B (second top neighbor) located adjacent to CP1; and the first affine coding block in the scanning order among the blocks D (bottom-left neighbor) and A (second left neighbor) located adjacent to CP2.
[0145] Furthermore, the scanning order of the above-described scanning method can be determined based on probability and performance analysis of a specific encoding or decoding device. Therefore, according to one embodiment, the scanning order can be determined based on the statistical characteristics or performance of the encoding or decoding device to which this embodiment is applied, rather than specifying the scanning order.
[0146] FIG. 11 This is a flowchart illustrating an operation method of an encoding device according to an embodiment, and FIG. 12 This is a block diagram illustrating the configuration of an encoding device according to an embodiment.
[0147] according to FIG. 11 and FIG. 12 Encoding devices can perform operations as described later. FIG. 13 and FIG. 14 The corresponding operations for the decoding device. Therefore, later in FIG. 13 and FIG. 14 The content described herein can be similarly applied to FIG. 11 and FIG. 12 Encoding devices.
[0148] FIG. 11 Each step disclosed in the document can be performed by FIG. 1 The encoding device 100 disclosed herein performs the operation. More specifically, S1100 to S1140 can be performed by... FIG. 1 The predictor 1150 disclosed in the document executes the function, and S1150 can be performed by... FIG. 1 The residual processor 120 disclosed herein executes the S1160, and the S1160 can be executed by... FIG. 1 The entropy encoder 130 disclosed herein is executed. Furthermore, the operations according to S1100 to S1160 are based on the above. FIG. 3 to FIG. 10 Some of the content described above. Therefore, the above will be omitted or briefly explained. FIG. 1 and FIG. 3 to FIG. 10 The specific content that is repeated within the content.
[0149] like FIG. 12 As shown, the encoding device according to the embodiment may include a predictor 110 and an entropy encoder 130. However, in some cases,FIG. 12 All components shown in FIG. 1 can not be essential components of the encoding device, and the encoding device can be implemented by more or less components than those shown in FIG. 1. FIG. 12 The encoding device according to an embodiment can be implemented by a single chip.
[0150] In the encoding device according to an embodiment, the predictor 110 and the entropy encoder 130 can be implemented by separate chips, or at least two or more components can be implemented by a single chip.
[0151] The encoding device according to an embodiment can generate an affine MVP candidate list including affine MVP candidates for a current block (S1100). More specifically, the predictor 110 of the encoding device can generate an affine MVP candidate list including affine MVP candidates for a current block.
[0152] The encoding device according to an embodiment can derive a CPMVP for each CP of a current block based on one of the affine MVP candidates included in the affine MVP candidate list (S1110). More specifically, the predictor 110 of the encoding device can derive a CPMVP for each CP of a current block based on one of the affine MVP candidates included in the affine MVP candidate list.
[0153] The encoding device according to an embodiment can derive a CPMV for each CP of a current block (S1120). More specifically, the predictor 110 of the encoding device can derive a CPMV for each CP of a current block.
[0154] The encoding device according to an embodiment can derive a CPMVD for a CP of a current block based on the CPMV and the CPMVP for each CP (S1130). More specifically, the predictor 110 of the encoding device can derive a CPMVD for a CP of a current block based on the CPMV and the CPMVP for each CP.
[0155] The encoding device according to an embodiment can derive a prediction sample for a current block based on the CPMV (S1140). More specifically, the predictor 110 of the encoding device can derive a prediction sample for a current block based on the CPMV.
[0156] The encoding device according to an embodiment can derive a residual sample for a current block based on the derived prediction sample (S1150). More specifically, the residual processor 120 of the encoding device can derive a residual sample for a current block based on the derived prediction sample.
[0157] The encoding apparatus according to the embodiments can encode information about the derived CPMVD and residual information about the residual samples (S1160). More specifically, the entropy encoder 130 of the encoding apparatus can encode the information about the derived CPMVD and the residual information about the residual samples.
[0158] According to the encoding apparatus and the method of operating the encoding apparatus disclosed in FIG. 11 and FIG. 12 , the encoding apparatus can generate an affine MVP candidate list including affine MVP candidates for a current block (S1100), derive a CPMVP for each CP of the current block based on one of the affine MVP candidates included in the affine MVP candidate list (S1110), derive a CPMV for each CP of the current block (S1120), derive a CPMVD for the current block based on the CPMV and the CPMVP for each CP (S1130), derive prediction samples for the current block based on the derived CPMVD (S1140), derive residual samples for the current block based on the derived prediction samples (S1150), and encode information about the derived CPMVD and residual information about the residual samples (S1160). That is, it is possible to increase image encoding efficiency by signaling information about the affine MVP candidate list for affine motion prediction.
[0159] FIG. 13 is a flowchart illustrating a method of operating a decoding apparatus according to an embodiment, FIG. 14 is a block diagram illustrating a configuration of a decoding apparatus according to an embodiment.
[0160] FIG. 13 Each of the steps disclosed in FIG. 2 may be performed by the video decoding apparatus 200 disclosed in FIG. 2 . More specifically, S1300 can be performed by the entropy decoder 210 disclosed in FIG. 2 , S1310 to S1350 can be performed by the predictor 230 disclosed in FIG. 2 , and S1360 can be performed by the adder 240 disclosed in FIG. 3 to FIG. 10 . Furthermore, the operations according to S1300 to S1360 are based on some of the above descriptions in FIG. 2 to FIG. 10 . Thus, specific contents which are repetitive of the above-described contents in will be omitted or simply explained.
[0161] The decoding apparatus according to the embodiments can include the entropy decoder 210, the predictor 230, and the adder 240. However, in some cases, FIG. 14 all the components illustrated in FIG. 14The illustrated components can be implemented more or less than as shown.
[0162] In the decoding apparatus according to the embodiment, the entropy decoder 210, the predictor 230, and the adder 240 can be implemented by separate chips, or at least two or more components can be implemented by a single chip.
[0163] The decoding apparatus according to the embodiment can obtain motion prediction information from a bitstream (S1300). More specifically, the entropy decoder 210 of the decoding apparatus can obtain the motion prediction information from the bitstream.
[0164] The decoding apparatus according to the embodiment can generate an affine MVP candidate list including affine motion vector predictor (MVP) candidates for a current block (S1310). More specifically, the predictor 230 of the decoding apparatus can generate the affine MVP candidate list including the affine MVP candidates for the current block.
[0165] In an embodiment, the affine MVP candidates can include a first affine MVP candidate and a second affine MVP candidate, the first affine MVP candidate can be derived from a left block group including a lower-left corner neighboring block and a left neighboring block of the current block, and the second affine MVP candidate can be derived from an upper block group including an upper-right corner neighboring block, an upper neighboring block, and a top-left corner neighboring block of the current block. In this regard, the first affine MVP candidate can be derived based on a first block included in the left block group, the first block can be encoded based on affine motion prediction, the second affine MVP candidate can be derived based on a second block included in the upper block group, and the second block can be encoded based on affine motion prediction.
[0166] In another embodiment, the affine MVP candidates can include a first affine MVP candidate and a second affine MVP candidate, the first affine MVP candidate can be derived from a left block group including a lower-left corner neighboring block, a first left neighboring block, and a second left neighboring block of the current block, and the second affine MVP candidate can be derived from an upper block group including an upper-right corner neighboring block, a first upper neighboring block, a second upper neighboring block, and a top-left corner neighboring block of the current block. In this regard, the first affine MVP candidate can be derived based on a first block included in the left block group, the first block can be encoded based on affine motion prediction, the second affine MVP candidate can be derived based on a second block included in the upper block group, and the second block can be encoded based on affine motion prediction.
[0167] In yet another embodiment, the affine MVP candidates can include a first affine MVP candidate, a second affine MVP candidate, and a third affine MVP candidate, the first affine MVP candidate can be derived from a lower-left block set including a lower-left corner neighboring block of the current block and a first left neighboring block, the second affine MVP candidate can be derived from an upper-right block set including an upper-right corner neighboring block of the current block and a first upper neighboring block, and the third affine MVP candidate can be derived from an upper-left block set including an upper-left corner neighboring block of the current block, a second upper neighboring block, and a second left neighboring block. In this regard, the first affine MVP candidate can be derived based on a first block included in the lower-left block set, the first block can be encoded based on affine motion prediction, the second affine MVP candidate can be derived based on a second block included in the upper-right block set, the second block can be encoded based on affine motion prediction, the third affine MVP candidate can be derived based on a third block included in the upper-left block set, and the third block can be encoded based on affine motion prediction.
[0168] The decoding device according to the embodiments can derive CPMVPs for the CPs of the current block based on one of the affine MVP candidates included in the affine MVP candidate list (S1320). More specifically, the predictor 230 of the decoding device can derive CPMVPs for the CPs of the current block based on one of the affine MVP candidates included in the affine MVP candidate list.
[0169] In one embodiment, one of the affine MVP candidates can be selected based on an affine MVP candidate index included in the motion prediction information.
[0170] The decoding device according to the embodiments can derive CPMVDs for the CPs of the current block based on information about the CPMVDs for each CP included in the obtained motion prediction information (S1330). More specifically, the predictor 230 of the decoding device can derive CPMVDs for the CPs of the current block based on information about the CPMVDs for each CP included in the obtained motion prediction information.
[0171] The decoding device according to the embodiments can derive CPMVs for the CPs of the current block based on the CPMVPs and the CPMVDs (S1340). More specifically, the predictor 230 of the decoding device can derive CPMVs for the CPs of the current block based on the CPMVPs and the CPMVDs.
[0172] The decoding device according to the embodiments can derive prediction samples for the current block based on the CPMVs (S1350). More specifically, the predictor 230 of the decoding device can derive prediction samples for the current block based on the CPMVs.
[0173] The decoding device according to embodiments can generate the reconstructed samples for the current block based on the derived prediction samples (S1360). More specifically, the adder 240 of the decoding device can generate the reconstructed samples for the current block based on the derived prediction samples.
[0174] In embodiments, the motion prediction information can include information on a context index indicating whether there is a neighboring block of the current block encoded based on affine motion prediction.
[0175] In embodiments, in the case where the value of m described above in the description of the first step is 1 and the value of n described above in the description of Table 1 and Table 2 is 2, a CABAC context model for encoding and decoding the index information indicating the best affine MVP candidate can be constructed. When an affine encoded block exists in the vicinity of the current block, the affine MVP candidate of the current block can be determined based on the affine motion model described above with reference to FIG. 7 to FIG. 10 but when an affine encoded block does not exist in the vicinity of the current block, the present embodiments can be applied. Since the affine MVP candidate has high reliability when it is determined based on an affine encoded block, the context model can be designed so that it can be distinguished between the case where the affine MVP candidate is determined based on an affine encoded block and the case where the affine MVP candidate is determined differently. In this case, the index 0 can be assigned to the affine MVP candidate determined based on an affine encoded block. The CABAC context index according to the present embodiments is shown in Equation 5 below.
[0176] [Equation 5]
[0177]
[0178] The initial value according to the CABAC context index can be determined as shown in Table 3 below, and the CABAC context index and the initial value need to satisfy the condition of Equation 6 below.
[0179] [Table 3]
[0180] ctx_idx_for_aamvp_idx 0 1 Init_val [N0] [N1]
[0181] [Equation 6]
[0182] p(aamvp_idx=0|init_val=N0)>p(1|N0)
[0183] p(aamvp_idx=0|init_val=N0)>p(1|N1)
[0184] p(aamvp_idx=0|init_val=N0)>p(1|N1)
[0185] According toFIG. 13 and FIG. 14 The decoding device can obtain motion prediction information from a bitstream (S1300), generate an affine MVP candidate list including affine MVP candidates for a current block (S1310), derive a CPMVP for each CP of the current block based on one of the affine MVP candidates included in the affine MVP candidate list (S1320), derive a CPMVD for the CP of the current block based on information about the CPMVD for each CP included in the obtained motion prediction information (S1330), derive a control point motion vector (CPMV) for the CP of the current block based on the CPMVP and the CPMVD (S1340), derive a prediction sample for the current block based on the CPMV (S1350), and generate a reconstructed sample for the current block based on the derived prediction sample (S1360). That is, image coding efficiency can be increased by signaling information about an affine MVP candidate list for affine motion prediction.
[0186] Further, the method according to the above-described embodiments of the present specification can be applied to an encoding device and a decoding device for image and video compression, can be applied to a device generating a bitstream and a device receiving a bitstream, and can be applied regardless of whether a terminal outputs through a display device. For example, an image can be generated as compressed data by a terminal having an encoding device, the compressed data can have a bitstream form, and the bitstream can be stored in various types of storage devices and streamed and delivered to a terminal having a decoding device through a network. When a terminal is equipped with a display device, a decoded image can be displayed on the display device, or the bitstream data can be simply stored in the terminal.
[0187] The above-described method according to the present disclosure can be implemented in software form, and an encoding device and / or a decoding device according to the present disclosure can be included in a device for image processing such as a TV, a computer, a smart phone, a set-top box, a display device, etc.
[0188] Each of the above-described components, modules, or units can be a processor or hardware part that performs continuous processing stored in a memory (or a storage unit). Each step described in the above-described embodiments can be performed by a processor or a hardware part. Each module / block / unit in the above-described embodiments can operate as hardware / processor. In addition, the method proposed by the present disclosure can be implemented in code. The code can be written in a storage medium that can be read by a processor, and thus can be read by a processor provided by the device.
[0189] In the above-described embodiments, the method is explained based on the flowchart by means of a series of steps or block diagrams, but the present disclosure is not limited to the order of the steps, and a certain step can occur in a different order from the above-described or simultaneously with other steps. In addition, it can be understood by those skilled in the art that the steps shown in the flowchart are not exclusive and one or more steps of the flowchart can be incorporated or removed without affecting the scope of the present disclosure.
[0190] When implementing the embodiments of the present disclosure in software, the above-described method can be implemented with a module (process, function, etc.) that performs the above-described functions. The modules can be stored in a memory and can be executed by a processor. The memory can be internal or external to the processor, and can be connected to the processor in various well-known manners. The processor can include an application specific integrated circuit (ASIC), other chip sets, logic circuits, and / or data processing devices. The memory can include read-only memory (ROM), random access memory (RAM), flash memory, memory cards, storage media, and / or other storage devices.
Claims
1. A decoding device for image decoding, the decoding device comprising: a memory; and at least one processor connected to the memory, the at least one processor configured to: obtain motion prediction information and residual information from a bitstream; derive residual samples for a current block based on the residual information; generate an affine MVP candidate list including affine motion vector predictor (MVP) candidates for the current block; select one affine MVP candidate among the affine MVP candidates in the affine MVP candidate list by using an affine MVP candidate index in the motion prediction information; derive control point motion vector predictors (CPMVPs) for control points (CPs) of the current block based on the selected affine MVP candidate; derive control point motion vector differences (CPMVDs) for the CPs of the current block based on information about the CPMVDs for the CPs included in the obtained motion prediction information; derive control point motion vectors (CPMV) for the CPs of the current block based on the CPMVPs and the CPMVDs; derive prediction samples for the current block based on the CPMVs for the CPs of the current block; and generate reconstructed samples for the current block based on the residual samples and the prediction samples, wherein the affine MVP candidates in the affine MVP candidate list include a first affine MVP candidate and a second affine MVP candidate, wherein the CPs include CP0 related to a top-left position of the current block, CP1 related to a top-right position of the current block, and CP2 related to a bottom-left position of the current block, and wherein the at least one processor is further configured to: derive a first MVP, a second MVP, and a third MVP constituting the first affine MVP candidate based on blocks encoded based on an affine motion model in a left block group including a bottom-left corner neighboring block and a left neighboring block of the current block; and derive a fourth MVP, a fifth MVP, and a sixth MVP constituting the second affine MVP candidate based on blocks encoded based on the affine motion model in an upper block group including a top-right corner neighboring block, an upper neighboring block, and a top-left corner neighboring block of the current block.
2. An encoding device for image encoding, the encoding device comprising: a memory; and at least one processor connected to the memory, the at least one processor configured to: generate an affine MVP candidate list including affine MVP candidates for a current block; select one affine MVP candidate among the affine MVP candidates in the affine MVP candidate list; derive an affine MVP candidate index representing the selected affine MVP candidate; derive CPMVPs for control points (CPs) of the current block based on the selected affine MVP candidate; derive CPMVs for the CPs of the current block; derive CPMVDs for the CPs of the current block based on the CPMVPs and the CPMVs for the CPs; and derive prediction samples for the current block based on the CPMVPs and the CPMVs for the CPs of the current block. deriving a prediction sample for the current block based on the CPMV for the respective CP of the current block; deriving a residual sample for the current block based on the prediction sample; and encoding information related to the affine MVP candidate index, information about the CPMVD, and residual information about the residual sample, wherein the affine MVP candidates in the affine MVP candidate list comprise a first affine MVP candidate and a second affine MVP candidate, wherein the CPs comprise a CP0 related to a top-left position of the current block, a CP1 related to a top-right position of the current block, and a CP2 related to a bottom-left position of the current block, and wherein the at least one processor is further configured to: derive a first MVP, a second MVP, and a third MVP constituting the first affine MVP candidate based on blocks coded based on an affine motion model in a left block group comprising a bottom-left corner neighboring block and a left neighboring block of the current block; and derive a fourth MVP, a fifth MVP, and a sixth MVP constituting the second affine MVP candidate based on blocks coded based on the affine motion model in an upper block group comprising a top-right corner neighboring block, an upper neighboring block, and a top-left corner neighboring block of the current block.
3. An apparatus of transmitting data for a picture, the apparatus comprising: at least one processor configured to obtain a bitstream for the picture, wherein the bitstream is generated based on operations of generating an affine MVP candidate list comprising affine MVP candidates for a current block, selecting one affine MVP candidate among the affine MVP candidates in the affine MVP candidate list, deriving an affine MVP candidate index representing the selected affine MVP candidate, deriving CPMV for respective CPs of the current block based on the selected affine MVP candidate, deriving CPMV for the respective CPs of the current block based on the CPMV for the respective CPs of the current block, deriving CPMVD for the respective CPs of the current block based on the CPMV for the respective CPs of the current block, deriving a prediction sample for the current block based on the CPMV for the respective CP of the current block, deriving a residual sample for the current block based on the prediction sample, and encoding information related to the affine MVP candidate index, information about the CPMVD, and residual information about the residual sample; and a transmitter configured to transmit the data comprising the bitstream, wherein the affine MVP candidates in the affine MVP candidate list comprise a first affine MVP candidate and a second affine MVP candidate, wherein the CPs comprise a CP0 related to a top-left position of the current block, a CP1 related to a top-right position of the current block, and a CP2 related to a bottom-left position of the current block, and wherein the generating the affine MVP candidate list comprises operations of: derive a first MVP, a second MVP and a third MVP constituting the first affine MVP candidate based on blocks coded based on an affine motion model in a left block group including a lower-left corner neighboring block and a left neighboring block of the current block; and derive a fourth MVP, a fifth MVP and a sixth MVP constituting the second affine MVP candidate based on blocks coded based on the affine motion model in an upper block group including an upper-right corner neighboring block, an upper neighboring block and a top-left corner neighboring block of the current block.
Citation Information
Patent Citations
Method of motion vector derivation for video coding
CN106537915A
Method and apparatus for encoding and decoding video signal using motion compensation based on affine transformation
US20100329347A1