Video encoding method and device

By obtaining and checking the reference index of the control point set and deriveing the affine motion model, the video encoding efficiency and quality problems in complex motion scenarios in the prior art are solved, and more efficient video compression is achieved.

CN114222135BActive Publication Date: 2025-08-19BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202111573130.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-12-13
Filing Date
2019-12-13
Publication Date
2025-08-19
Estimated Expiration
2039-12-13

Smart Images

  • Figure CN114222135B_ABST
    Figure CN114222135B_ABST
Patent Text Reader

Abstract

The present invention relates to a video encoding method and apparatus. The method comprises: an encoder obtaining one or more control point sets, wherein each control point set comprises a control point set index and a plurality of control points; checking whether a control point set associated with a reference index in a reference list is valid; and if the associated control point set is valid, deriving an affine motion model based on the associated control point set; wherein determining whether the reference index of each control point of the control point set index in the associated control point set is greater than or equal to zero, and whether the reference indexes of each control point are equal to each other.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the Chinese invention patent application with application number "201980080919.7", application date "December 13, 2019", and invention name "Method for deriving constructed affine merging candidates". Technical Field

[0002] The present application relates to video coding and compression, and more particularly, to an affine motion prediction system and method in video coding. Background Art

[0003] Various video coding and decoding technologies can be used to compress video data. Video coding and decoding is performed according to one or more video coding and decoding standards. For example, video coding and decoding standards include Versatile Video Codec (VVC), Joint Exploration Test Model (JEM), High Efficiency Video Codec (H.265 / HEVC), Advanced Video Codec (H.264 / AVC), Moving Picture Experts Group (MPEG) codec, etc. Video coding and decoding generally utilizes prediction methods (such as inter-frame prediction, intra-frame prediction, etc.) that utilize the redundancy existing in video images or sequences. An important goal of video coding and decoding technology is to compress video data into a form that uses a lower bit rate while avoiding or reducing the degradation of video quality. Summary of the Invention

[0004] Embodiments of the present invention provide a video encoding method and device.

[0005] According to a first aspect of the present invention, there is provided a video encoding method, comprising:

[0006] The encoder obtains one or more control point sets, where each control point set includes a control point set index and a plurality of control points;

[0007] checking whether the control point set associated with the reference index in the reference list is valid; and

[0008] When the associated control point set is valid, an affine motion model is derived based on the associated control point set; wherein, it is determined whether the reference index of each control point of the control point set index within the associated control point set is greater than or equal to zero, and whether the reference indexes of each control point are equal to each other.

[0009] According to a second aspect of the present invention, there is provided a video encoding device, comprising:

[0010] one or more processors;

[0011] a non-transitory computer-readable memory storing instructions executable by the one or more processors,

[0012] The one or more processors are configured to:

[0013] Obtain one or more control point sets, where each control point set includes a control point set index and multiple control points;

[0014] checking whether the control point set associated with the reference index in the reference list is valid; and

[0015] When the associated control point set is valid, an affine motion model is derived based on the associated control point set; wherein, it is determined whether the reference index of each control point of the control point set index within the associated control point set is greater than or equal to zero, and whether the reference indexes of each control point are equal to each other.

[0016] According to a third aspect of the present invention, a non-transitory computer-readable storage medium is provided, the storage medium storing a plurality of programs to be executed by a video encoding device having one or more processors, wherein the plurality of programs, when executed by the one or more processors, causes the video encoding device to perform operations, the operations comprising:

[0017] Obtain one or more control point sets, where each control point set includes a control point set index and multiple control points;

[0018] checking whether the control point set associated with the reference index in the reference list is valid; and

[0019] When the associated control point set is valid, an affine motion model is derived based on the associated control point set; wherein, it is determined whether the reference index of each control point of the control point set index within the associated control point set is greater than or equal to zero, and whether the reference indexes of each control point are equal to each other.

[0020] According to a fourth aspect of the present invention, a non-transitory computer-readable storage medium is provided for storing a code stream obtained according to the aforementioned video encoding method.

[0021] It should be understood that both the foregoing general description and the following detailed description are exemplary only and are not restrictive of the invention. BRIEF DESCRIPTION OF THE DRAWINGS

[0022] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate examples consistent with the invention and, together with the description, serve to explain the principles of the invention.

[0023] Figure 1 is a block diagram of an encoder according to an example of the present invention;

[0024] Figure 2is a block diagram of a decoder according to an example of the present invention;

[0025] Figure 3 is a flowchart illustrating a method for deriving constructed affine merge candidates according to an example of the present invention;

[0026] Figure 4 is a flowchart illustrating a method for deriving constructed affine merge candidates according to an example of the present invention;

[0027] Figure 5 is a flowchart illustrating a method for deriving constructed affine merge candidates according to an example of the present invention;

[0028] Figure 6A is an affine motion model based on control points according to an example of the present invention;

[0029] Figure 6B is an affine motion model based on control points according to an example of the present invention;

[0030] Figure 7 is the affine motion vector field (MVF) of each sub-block according to an example of the present invention;

[0031] Figure 8 is a candidate position according to an example of the present invention;

[0032] Figure 9 is a control point motion vector according to an example of the present invention;

[0033] Figure 10 is a candidate position according to an example of the present invention;

[0034] Figure 11 is a flowchart of deriving constructed affine merge candidates according to an example of the present invention;

[0035] Figure 12 is a diagram illustrating usage of motion vectors according to an example of the present invention;

[0036] Figure 13 is a method for deriving affine merge candidates according to an example of the present invention;

[0037] Figure 14 is a derivation of an affine motion model according to an example of the present invention;

[0038] Figure 15 is a derivation of an affine motion model according to an example of the present invention;

[0039] Figure 16 is a derivation of an affine motion model according to an example of the present invention;

[0040] Figure 17is a block diagram of an example computing environment according to the present invention. DETAILED DESCRIPTION

[0041] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, in which like reference numerals in different figures represent like or similar elements unless otherwise specified. In the following description of exemplary embodiments, the embodiments set forth are not intended to represent all embodiments consistent with the present invention. Rather, they are merely examples of apparatus and methods consistent with several aspects related to the present invention as set forth in the appended claims.

[0042] The terms used in this disclosure are for the purpose of describing specific embodiments only and are not intended to limit the disclosure. As used herein and in the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It should also be understood that the term "and / or" as used herein is intended to represent and include any and all possible combinations of one or more of the associated listed items.

[0043] It should be understood that although the terms "first," "second," "third," etc. may be used herein to describe various information, such information should not be limited by these terms. These terms are merely used to distinguish the types of information. For example, without departing from the scope of the present invention, first information may be referred to as second information, and similarly, second information may be referred to as first information. The term "if" as used herein may be understood to mean "at the time of," "at this time," or "in response to a determination," depending on the context.

[0044] Conceptually, video codec standards are similar. For example, many codec standards use block-based processing and share similar video coding block diagrams to implement video compression.

[0045] Figure 1 A typical encoder 100 is shown. The encoder 100 has a video input 110, motion compensation 112, motion estimation 114, intra / inter mode decision 116, a block predictor 140, an adder 128, a transform 130, quantization 132, prediction-related information 142, intra prediction 118, a picture buffer 120, inverse quantization 134, an inverse transform 136, an adder 126, a memory 124, an in-loop filter 122, entropy coding 138, and a bitstream 144.

[0046] In an exemplary embodiment of the encoder, a video frame is divided into blocks for processing. For each given video block, a prediction is formed based on either inter-frame prediction or intra-frame prediction. In inter-frame prediction, a predictor can be formed based on pixels from a previously reconstructed frame through motion estimation and motion compensation. In intra-frame prediction, a predictor can be formed based on reconstructed pixels in the current frame. Through mode decision, the best predictor can be selected to predict the current block.

[0047] The prediction residual (i.e. the difference between the current block and its predictor) is sent to the transform module. The transform coefficients are then sent to the quantization module to reduce the entropy. The quantized coefficients are fed to the entropy coding module to generate the compressed video bitstream. Figure 1 As shown, prediction-related information from the inter-frame and / or intra-frame prediction module, such as block information, motion vector, reference picture index and intra-frame prediction mode, also passes through the entropy coding module and is saved in the bitstream.

[0048] In the encoder, a decoder-related module is also required to reconstruct the pixels for prediction. First, the prediction residual is reconstructed through inverse quantization and inverse transformation. This reconstructed prediction residual is combined with the block predictor to generate the unfiltered reconstructed pixels of the current block.

[0049] In order to improve coding efficiency and visual quality, in-loop filters are usually used. For example, deblocking filters can be used in AVC, HEVC, and the current VVC. In HEVC, an additional in-loop filter called sample adaptive offset (SAO) is defined to further improve coding efficiency. In the latest VVC, another in-loop filter called adaptive loop filter (ALF) is being actively studied, and this in-loop filter is likely to be included in the final standard.

[0050] These in-loop filter operations are optional. Generally, turning them on helps improve coding efficiency and visual quality. They can also be turned off as an encoder decision to reduce computational complexity.

[0051] It should be noted that intra prediction is usually based on unfiltered reconstructed pixels, while inter prediction is based on filtered reconstructed pixels if these filter options are turned on by the encoder.

[0052] Figure 2A block diagram of a typical decoder 200 is shown. The decoder 200 has a bitstream 210, entropy decoding 212, inverse quantization 214, inverse transform 216, adder 218, intra / inter mode selection 220, intra prediction 222, memory 230, in-loop filter 228, motion compensation 224, picture buffer 226, prediction-related information 234, and video output 232.

[0053] In the decoder, the bitstream is first decoded through an entropy decoding module to derive quantization coefficient levels and prediction-related information. The quantization coefficient levels are then processed through an inverse quantization and inverse transform module to obtain a reconstructed prediction residual. Based on the decoded prediction information, a block predictor is formed through intra-frame prediction or motion compensation. The reconstructed prediction residual and the block predictor are added to obtain the unfiltered reconstructed pixels. With the in-loop filter enabled, a filtering operation is performed on these pixels to derive the final reconstructed video for output.

[0054] Figure 3 An exemplary flow chart illustrating the steps of the method 300 of the present invention is shown.

[0055] The Constructed Affine Merge Derivation includes checking whether the associated control point set is valid at both the encoder and decoder sides.

[0056] In step 310, one or more control point sets are obtained from a decoder, wherein the one or more control point sets include a control point set index and a control point; wherein each control point set includes multiple control points; wherein each control point includes a first reference picture index, a list0 motion vector, a list1 reference picture index and a list1 motion vector.

[0057] In an exemplary embodiment, obtaining the control point set from the decoder includes: obtaining spatially neighboring blocks and temporal blocks from a video input; determining control points based on the spatially neighboring blocks and temporal blocks; deriving motion information from the spatially neighboring blocks and temporal blocks based on the control points; and defining multiple control point sets based on the control points, wherein one of the control point sets includes the control point set index.

[0058] Each control point has two reference indexes. The reference index of one control point points to the reference picture in reference picture list 0, and the reference index of the other control point points to the reference picture in reference picture list 1. Two flags are used in the VVC standard to indicate whether list0 / list1 prediction is used. For example, flag one flag X one is used to indicate whether list X is used. (Where X can be 0 or 1)

[0059] For a control point that uses only list0 prediction (which we usually call uni-prediction), its list0 reference index should point to a reference picture, so the index value should be greater than or equal to 0. Its list1 reference index does not point to any reference picture, and its value is set to an invalid value (for example, -1 in the VVC standard). In addition, in this case, flag one N is set to 1 / true and flag two N is set to 0 / false.

[0060] For a control point that only uses list1 prediction (which we usually call uni-prediction), its list1 reference index should point to a reference picture, so the index value should be greater than or equal to 0. Its list0 reference index does not point to any reference picture, and its value is set to an invalid value (for example, -1 in the VVC standard). In addition, in this case, flag one N is set to 0 / false, and flag two N is set to 1 / true.

[0061] For control points predicted using both list0 and list1, both their list0 reference index and list1 reference index are greater than or equal to 0. In addition, in this case, flag one N is set to 1 / true and flag two N is set to 1 / true.

[0062] In step 312, the decoder determines whether the reference index for each control point of the control point set index within the control point set associated with the reference index pointing to the reference picture in the first reference picture list is greater than or equal to zero and whether the reference indexes of each control point are equal to each other.

[0063] In step 314, the decoder determines whether the reference index for each control point of the control point set index within the control point set associated with the reference index pointing to the reference picture in the second reference picture list is greater than or equal to zero and whether the reference indexes of each control point are equal to each other.

[0064] In step 316 , the decoder determines that an affine motion model is available based on the determination result, regardless of the motion vectors of the control points in the set of control points.

[0065] Figure 4 An exemplary flow chart illustrating the steps of a method 400 of the present invention is shown.

[0066] In step 410 , the decoder determines that the reference index for each control point in the control point set index associated with the reference index pointing to reference picture list 0 is greater than or equal to zero and the reference indexes of each control point are equal to each other.

[0067] In step 412, the decoder determines that the motion vector for the first control point with a control point set index within the control point set associated with the motion vector pointing to reference picture list 0 is not equal to the motion vector for the second control point with a control point set index within the control point set associated with the motion vector pointing to reference picture list 0, or that the motion vector of the first control point is not equal to the motion vector for the third control point with a control point set index within the control point set associated with the motion vector pointing to the first reference picture list 0.

[0068] In step 414 , the decoder sets the motion information of the control points in the control point set indexed by the control point set as the motion information of the associated control points of the current block to derive a first list affine motion model.

[0069] In step 416 , the decoder determines that the reference index for the control point x of the control point set index within the control point set associated with the reference index pointing to reference picture list 0 is greater than or equal to zero.

[0070] In step 418, the decoder sets the motion information of the control point x for the control point set index within the control point set associated with the reference index pointing to reference picture list 0 to the motion information of all control points of the current block to derive the first list affine motion model.

[0071] Figure 5 An exemplary flow chart illustrating the steps of a method 500 of the present invention is shown.

[0072] In step 510 , the decoder determines that a reference index for each control point of a control point set index within a control point set associated with a reference index pointing to a reference picture in a first reference picture list is greater than or equal to zero.

[0073] In step 512, the decoder sets the motion information of the control point in the control point set index as the motion information of the associated control point of the current block to derive a first list affine motion model.

[0074] In step 514, the decoder sets the reference picture index of the control point set index as the reference picture index of the current block.

[0075] In HEVC, only the translational motion model is applied to motion compensation prediction (MCP). In the real world, there are many kinds of motion, such as zooming in / out, rotation, perspective motion, and other irregular motions. In the current reference software of VVC (VTM3), block-based affine transformation motion compensation prediction is applied. Figure 6A and6B As shown in

[15] (described below), the affine motion field of a block is described by motion information of two control points (4 parameters) or three control point motion vectors (6 parameters).

[0076] Figure 6A A control point based affine motion model for a 4-parameter affine model is shown.

[0077] Figure 6B A control point based affine motion model for a 6-parameter affine model is shown.

[0078] For this 4-parameter affine model, the motion vector at the sample location (x, y) of the block is derived as:

[0079]

[0080] For this 6-parameter affine model, the motion vector at the sample location (x, y) of the block is derived as:

[0081]

[0082] Among them, (mv 0x ,mv 0y ) is the motion vector of the upper left control point, (mv 1x ,mv 1y ) is the motion vector of the upper right control point, (mv 2x ,mv 2y ) is the motion vector of the lower left control point.

[0083] In order to simplify the motion compensation prediction, block-based affine transformation prediction is applied. In order to derive the motion vector of each 4×4 luminance sub-block, the motion vector of the center sample of each sub-block is calculated according to the above equation, as Figure 7 As shown (described below), and rounded to 1 / 16 fractional precision. Then, a motion compensated interpolation filter is applied to generate a prediction for each subblock with a derived motion vector. The subblock size of the chroma component is also set to 4×4. The motion vector (MV) of a 4×4 chroma subblock is calculated as the average of the MVs of the four corresponding 4×4 luminance subblocks.

[0084] Figure 7 The affine motion vector field (MVF) of each sub-block is shown.

[0085] As done for translational motion inter prediction, there are two affine motion inter prediction modes: affine merge mode and affine AMVP mode.

[0086] Affine Merge Predictions

[0087] AF_MERGE mode can be applied to CUs with width and height both greater than or equal to 8. In this mode, the control point motion vector (CPMV) of the current CU is generated based on the motion information of the spatially neighboring CUs. There can be up to five CPMVP candidates, and an index is signaled to indicate a CPMVP candidate to be used for the current CU. The following three types of CPMV candidates are used to form the affine merge candidate list:

[0088] 1. Inherited affine merge candidates inferred from the CPMV of neighboring CUs;

[0089] 2. Affine merged candidate CPMVP constructed using the translation MV of the adjacent CU;

[0090] 3. Zero MV.

[0091] In VTM3, there are at most two inherited affine candidates, which are derived from the affine motion models of neighboring blocks, one from the left neighboring CU and the other from the top neighboring CU. These candidate blocks are Figure 8 is shown in (described below). For the left predictor, the scan order is A0->A1, while for the upper predictor, the scan order is B0->B1->B2. Only the first inherited candidate from each side is selected. No pruning check is performed between two inherited candidates. When a neighboring affine CU is identified, its control point motion vectors are used to derive the CPMVP candidate in the affine merge list of the current CU. Figure 9 As shown in FIG1 (described below), if the adjacent lower left block A is encoded in affine mode, the motion vectors v2, v3, and v4 of the upper left, upper right, and lower left corners of the CU containing block A are obtained. When block A is encoded using a 4-parameter affine model, two CPMVs of the current CU are calculated based on v2 and v3. In the case where block A is encoded using a 6-parameter affine model, three CPMVs of the current CU are calculated based on v2, v3, and v4.

[0092] Figure 8 The positions of the inherited affine motion predictors are shown.

[0093] Figure 9 Control point motion vector inheritance is shown.

[0094] The constructed affine candidate is constructed by combining the adjacent translation motion information of each control point. The motion information of these control points is obtained from Figure 10 The CP is derived from the specified spatial and temporal neighbors (described below). k(k=1, 2, 3, 4) represents the kth control point. CP1 is the control point at the upper left corner of the current block. Blocks B2->B3->A2 are checked, and the MV of the first available block is used as the motion information for CP1. CP2 is the control point at the upper right corner of the current block. Blocks B1->B0 are checked, and the MV of the first available block is used as the motion information for CP2. CP3 is the control point at the lower left corner of the current block, and blocks A1->A0 are checked. The temporal motion vector predictor (TMVP) is used as the lower right control point CP4 (if any).

[0095] Figure 10 The positioning of candidate positions for the constructed affine merge pattern is shown.

[0096] After obtaining the four control points, an affine merge candidate is constructed based on the motion information of these control points. The following six combinations of control points are used to construct the constructed affine merge candidate in sequence:

[0097] {CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4},

[0098] {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}.

[0099] A combination of three control points constitutes a 6-parameter affine merge candidate, and a combination of two control points constitutes a 4-parameter affine merge candidate. To avoid motion scaling, if the reference indices of the control points are different, the relevant combination of control point MVs is discarded. In addition, when two CPMVs are the same in the 4-parameter affine model (in the 6-parameter affine model, three CPMVs are the same), the relevant combination of control point MVs is also discarded. Figure 11 The flowchart for deriving the constructed affine merge candidates is shown in (described below).

[0100] Figure 11 A flowchart for deriving constructed affine merge candidates is shown.

[0101] Affine AMVP prediction

[0102] Affine AMVP mode can be applied to CUs with width and height both greater than or equal to 16. An affine flag at the CU level is signaled in the bitstream to indicate whether to use affine AMVP mode, and another flag is signaled to indicate whether to use 4-parameter affine or 6-parameter affine. In this mode, the difference between the CPMV of the current CU and its predictor CPMVP is signaled in the bitstream. The affine AMVP candidate list is of size 2 and is generated by using the following four CPMV candidate types in sequence:

[0103] 1. Inherited affine AMVP candidates inferred from the CPMV of neighboring CUs

[0104] 2. Use the constructed affine AMVP candidate CPMVP derived from the translation MV of the neighboring CU

[0105] 3. Translation MV from adjacent CU

[0106] 4. Zero MV

[0107] The order in which inherited affine AMVP candidates are checked is the same as the order in which inherited affine merge candidates are checked. The only difference is that for AMVP candidates, only affine CUs with the same reference picture as the current block are considered. When inserting the inherited affine motion predictor into the candidate list, the pruning process is not applied.

[0108] The constructed AMVP candidates are only from Figure 3 The first block in the check order is used, which is inter-coded and has the same reference picture as the current CU.

[0109] If all three CPMVs are attached, they are inserted into the affine AMVP list as they are. If only mv0 and mv1 are available, mv2 is derived as follows:

[0110]

[0111] The size of the current CU is w × h. If only mv0 and mv2 are available, mv1 is derived as follows:

[0112]

[0113] If the affine AMVP list candidates are still less than 2, then mv0, mv1, and mv2 are added to predict all control point MVs of the current CU when these translation MVs are available.

[0114] Affine motion information storage

[0115] In VTM3, the CPMVs of affine CUs are stored in a separate cache. These stored CPMVs are only used to generate inherited CPMVPs for the most recently encoded CU in affine merge mode and affine AMVP mode. The sub-block MVs derived from the CPMVs are used for motion compensation, merged MV derivation / translation of the AMVP list of MVs, and de-blocking.

[0116] To avoid the picture row cache for extra CPMVs, the affine motion data inheritance of the CU from the upper CTU is handled differently from the inheritance from the normal neighboring CU. If the candidate CU for affine motion data inheritance is in the upper CTU row, the lower left and lower right sub-block MVs in the row cache (instead of these CPMVs) are used for affine MVP derivation. In this way, these CPMVs are only stored in the local cache. If the candidate CU is 6-parameter affine coded, the affine model is downgraded to a 4-parameter model. Figure 12 As shown in (described below), along the top CTU boundary, the bottom left and bottom right sub-block motion vectors of the CU are used for affine inheritance of the CU in the bottom CTU.

[0117] Figure 12 Schematic diagram showing the usage of motion vectors for the proposed combined method.

[0118] In one embodiment, when deriving these constructed affine merge candidates, the translation motion model is considered as a valid affine merge candidate because the MVs between the control points can be the same. In order to allow the translation motion model of the constructed affine merge candidate, it is proposed to remove the comparison between the MVs of the control points. Since the comparison between the MVs is removed, the proposed scheme can simplify the derivation of these constructed affine merge candidates. Figure 13 An exemplary flow chart based on existing methods is shown in (described below).

[0119] Figure 13 A flowchart of a method for deriving affine merge candidates is shown.

[0120] In another embodiment, when the reference indices between the control points are different, the affine motion model derived from the associated set of control points is considered unusable. In another proposed scheme, the check of the motion information between the control points is modified to take into account the condition when the reference indices between the control points are different. In these proposed schemes, when the reference indices between the control points are different, the motion information of a selected control point is used as the motion information for all control points. Figure 14 and 15 Two examples are given (described below) to illustrate the proposed modifications to the derivation of a 6-parameter affine motion model for List 0 (also known as the forward reference picture list). Without loss of generality, the same modifications can also be applied to the derivation of List 1 or 4-parameter affine motion models.

[0121] Figure 14 The derivation of an affine motion model is shown, taking into account different reference indices between control points.

[0122] Figure 15The derivation of an affine motion model is shown, taking into account different reference indices between control points.

[0123] In another proposed scheme, the checking of motion information between all control points is disabled. In these proposed schemes, as long as the control points have motion information, they are used to construct the affine motion model even if they have different reference picture indices. Figure 16 An exemplary flow chart based on existing methods is shown in (described below).

[0124] Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments disclosed herein. This application is intended to cover any variations, uses, or adaptations of the embodiments that follow the general principles of the embodiments, and includes such departures from the invention as come within known or customary practice in the art. The description and examples are intended to be considered exemplary only, with the true scope and spirit of the embodiments being indicated by the appended claims.

[0125] It will be understood that the present embodiments are not limited to the exact examples described above and shown in the accompanying drawings and that various modifications and changes may be made without departing from the scope thereof. The scope of the embodiments is intended to be limited only by the appended claims.

[0126] Figure 16 The derivation of an affine motion model taking into account reference picture indices is shown.

[0127] Figure 17 17. The computing environment 1710 is shown coupled to a user interface 1760. The computing environment 1710 may be part of a data processing server. The computing environment 1710 includes a processor 1720, a memory 1740, and an I / O interface 1750.

[0128] The processor 1720 generally controls the overall operation of the computing environment 1710, such as operations related to display, data acquisition, data communication, and image processing. The processor 1720 may include one or more processors to execute instructions to perform all or some of the steps in the above-described method. In addition, the processor 1720 may include one or more modules that facilitate interaction between the processor 1720 and other components. The processor may be a central processing unit (CPU), a microprocessor, a single-chip microcomputer, a GPU, etc.

[0129] The memory 1740 is configured to store various types of data to support the operation of the computing environment 1710. Examples of such data include instructions for any application or method operating on the computing environment 1710, MRI data sets, image data, etc. The memory 1740 can be implemented using any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk, or optical disk.

[0130] The I / O interface 1750 provides an interface between the processor 1720 and peripheral interface modules, such as a keyboard, click wheel, buttons, etc. These buttons may include, but are not limited to, a home button, a start scan button, and a stop scan button. The I / O interface 1750 may be coupled to an encoder and a decoder.

[0131] In one embodiment, a non-transitory computer-readable storage medium is also provided, which includes a plurality of programs, such as the programs included in the memory 1740, and the programs can be executed by the processor 1720 in the computing environment 1710 to implement the above method. For example, the non-transitory computer-readable storage medium can be ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.

[0132] A plurality of programs are stored in the non-transitory computer-readable storage medium for execution by a computing device having one or more processors, wherein when executed by the one or more processors, the programs cause the computing device to perform the above-mentioned method for motion prediction.

[0133] In one embodiment, the computing environment 1710 may be implemented using one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), graphics processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components.

Claims

1. A video encoding method, comprising: The encoder obtains one or more control point sets, wherein each control point set is associated with a control point set index and includes a plurality of control points; determining whether a control point set associated with a reference index in a reference list is available; If the control point set is available, determining whether a reference index of each control point in the control point set for a control point set index is greater than or equal to zero; as well as A flag indicating that an affine motion model is available is set without performing comparisons between motion vectors of control points in the set of control points if the following conditions are met: The reference index of each control point for the control point set index in the control point set is greater than or equal to zero, and the reference indexes of each control point for the control point set index in the control point set associated with the reference index in the first reference list are equal to each other, and / or The reference index of each control point for the control point set index within the control point set is greater than or equal to zero, and the reference indexes of each control point for the control point set index within the control point set associated with the reference index in the second reference list are equal to each other.

2. The method according to claim 1, wherein The encoder obtaining the control point set includes: Get spatially adjacent blocks and temporal blocks from the input video; determining a control point based on the spatially adjacent blocks and the temporal blocks; deriving motion information from the spatially neighboring blocks and the temporal blocks based on the control points; and The control point set is defined based on the control points, wherein the control point set is associated with a control point set index.

3. The method according to claim 2, wherein: The control point set includes at least two control points, wherein each control point includes a first reference index, a first motion vector, a second reference index and a second motion vector.

4. The method according to claim 1, wherein The method further comprises: Setting motion information of the control points in the control point set to be the same as motion information of an associated control point of the current block to derive a constructed affine motion model; It is determined that the constructed affine motion model is available, and the constructed affine motion model is inserted into an affine merging candidate list.

5. The method according to claim 4, wherein: The method further comprises: A reference index of a constructed affine motion model in the affine merging candidate list is set to be the same as a reference index of the current block.

6. The method of claim 1, wherein: The method further comprises: determining that a motion vector for a first control point with a control point set index within a control point set associated with a motion vector in a first reference list is not equal to a motion vector for a second control point with the control point set index within the control point set associated with the motion vector in the first reference list, or that the motion vector of the first control point is not equal to a motion vector for a third control point with the control point set index within the control point set associated with the motion vector in the first reference list; and The motion information of the control points in the control point set of the control point set index is set to be the same as the motion information of the associated control points of the current block, so as to derive a constructed affine motion model.

7. An electronic device comprising: one or more processors; as well as a non-transitory computer-readable memory storing instructions executable by the one or more processors, The one or more processors are configured to: Obtain one or more control point sets, wherein each control point set is associated with a control point set index and includes a plurality of control points; determining whether a control point set associated with a reference index in a reference list is available; If the control point set is available, determining whether a reference index of each control point within the control point set for a control point set index is greater than or equal to zero; and A flag indicating that an affine motion model is available is set without performing comparisons between motion vectors of control points in the set of control points if the following conditions are met: The reference index of each control point for the control point set index in the control point set is greater than or equal to zero, and the reference indexes of each control point for the control point set index in the control point set associated with the reference index in the first reference list are equal to each other, and / or The reference index of each control point for the control point set index within the control point set is greater than or equal to zero, and the reference indexes of each control point for the control point set index within the control point set associated with the reference index in the second reference list are equal to each other.

8. A non-transitory computer-readable storage medium storing a plurality of programs for execution by one or more processors, wherein: The plurality of programs are executed by the one or more processors to execute the video encoding method according to any one of claims 1 to 6.

9. A method for storing a bitstream, comprising: Generating a bit stream by performing the video encoding method according to any one of claims 1 to 6; as well as The bitstream is stored.