IP Library › Granted Patent US 10,560,712
Granted Patent B2
US 10,560,712 · App. 15/587,044 · Granted Feb 11, 2020

Affine motion prediction for video coding

Inventors: Feng Zou (San Diego, CA); Jianle Chen (San Diego, CA); Marta Karczewicz (San Diego, CA); Xiang Li (San Diego, CA); Hsiao-Chiang Chuang (San Diego, CA); Wei-Jung Chien (San Diego, CA)
Assignee: Qualcomm Incorporated
H04N19/513H04N19/124H04N19/18H04N19/44H04N19/567H04N19/91
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,560,712
App. No.
15/587,044
Granted
Feb 11, 2020
Kind
B2
Abstract

An example method includes obtaining, for a current block of video data, values of motion vectors (MVs) of an affine motion model of a neighboring block of video data; deriving, from the values of the MVs of the affine motion model of the neighboring block, values of predictors for MVs of an affine motion model of the current block; decoding, from a video bitstream, a representation of differences between the values of the MVs of the affine motion model for the current block and the values of the predictors; determining the values of the MVs of the affine motion model for the current block from the values of the predictors and the decoded differences; determining, based on the determined values of the MVs of the affine motion model for the current block, a predictor block of video data; and reconstructing the current block based on the predictor block.

Claims (109)

1. A method for decoding video data, the method comprising:

obtaining, by one or more processors of a video decoder and for a current block of a current picture of video data, values of motion vectors of an affine motion model of a neighboring block of video data;

decoding, by the one or more processors and from an encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors;

responsive to the first syntax element having the second value:

decoding, by the one or more processors and from the encoded video bitstream, a second syntax element, wherein a first value of the second syntax element indicates that motion compensation for the current block is to be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the second syntax element indicates that motion compensation for the current block is to be performed using a six-parameter affine motion model defined by three motion vectors; and

deriving, by the one or more processors and from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of the affine motion model of the current block of video data indicated by the second syntax element;

decoding, by the one or more processors and from the encoded video bitstream, a representation of differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

determining, by the one or more processors, the values of the motion vectors of the affine motion model for the current block of video data from the values of the predictors and the decoded differences;

determining, based on the determined values of the motion vectors of the affine motion model for the current block of video data, a predictor block of video data; and

reconstructing the current block of video data based on the predictor block of video data.

2. The method of claim 1 , wherein the current block of video data is decoded using affine inter mode.

3. The method of claim 2 , wherein the neighboring block of video data is decoded using affine inter mode or affine merge mode.

4. The method of claim 1 , wherein the neighboring block of video comprises a selected neighboring block of video data, and wherein obtaining the values of the motion vectors of the affine motion model of the selected neighboring block of video data comprises:

evaluating, in a pre-defined order, neighboring blocks of video data of the current block of video data; and

selecting a first neighboring block of video data of the plurality of neighboring blocks of video data decoded using affine motion compensation as the selected neighboring block of video data.

5. The method of claim 1 , wherein decoding the second syntax element comprises decoding the second syntax element from a coding unit (CU) that includes the current block of video data.

6. The method of claim 1 , the method being executable on a wireless communication device, wherein the device comprises: a memory; the one or more processors; and a receiver, the method further comprising:

storing, by the memory, the video data; and

receiving, by the receiver, the encoded video bitstream.

7. A method for encoding video data, the method comprising:

determining, by one or more processors of a video encoder, whether motion compensation for a current block of a current picture of video data is to be performed using a four-parameter affine model defined by two motion vectors or a six-parameter affine model defined by three motion vectors;

determining, by the one or more processors, values of motion vectors of the affine motion model of the current block of video data, the motion vectors of the affine motion model identifying a predictor block of video data for of the current block of video data;

obtaining, by the one or more processors, values of motion vectors of an affine motion model of a neighboring block of video data;

deriving, by the one or more processors and from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of an affine motion model of the current block of video data;

encoding, by the one or more processors and in an encoded video bitstream, a representation of differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

encoding, by the one or more processors and in the encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors; and

when the first syntax element has the second value, encoding, by the one or more processors and in the encoded video bitstream, a second syntax element, wherein a first value of the second syntax element indicates that motion compensation for the current block is to be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the second syntax element indicates that motion compensation for the current block is to be performed using a six-parameter affine motion model defined by three motion vectors.

8. The method of claim 7 , wherein the current block of video data is encoded using affine inter mode.

9. The method of claim 8 , wherein the neighboring block of video data is encoded using affine inter mode or affine merge mode.

10. The method of claim 7 , wherein the neighboring block of video comprises a selected neighboring block of video data, and wherein obtaining the values of the motion vectors of the affine motion model of the selected neighboring block of video data comprises:

evaluating, in a pre-defined order, neighboring blocks of video data of the current block of video data; and

selecting a first neighboring block of video data of the plurality of neighboring blocks of video data decoded using affine motion compensation as the selected neighboring block of video data.

11. The method of claim 7 , wherein encoding the second syntax element comprises encoding the second syntax element in a coding unit (CU) that includes the current block of video data.

12. The method of claim 7 , the method being executable on a wireless communication device, wherein the device comprises: a memory; the one or more processors; and a transmitter, the method further comprising:

storing, by the memory, the video data; and

transmitting, by the transmitter, the encoded video bitstream.

13. The method of claim 12 , wherein the wireless communication device is a cellular telephone, the method further comprising:

modulating the encoded video bitstream according to a cellular communication standard.

14. A device for decoding a block of video data, the device comprising:

a memory configured to store the video data; and

one or more processing units implemented in circuitry and configured to:

obtain, for a current block of a current picture of video data, values of motion vectors of an affine motion model of a neighboring block of video data;

decode, from an encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors;

responsive to the first syntax element having the second value:

decode, by the one or more processors and from the encoded video bitstream, a second syntax element, wherein a first value of the second syntax element indicates that motion compensation for the current block is to be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the second syntax element indicates that motion compensation for the current block is to be performed using a six-parameter affine motion model defined by three motion vectors; and

derive, from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of the affine motion model of the current block of video data indicated by the second syntax element;

decode, from the encoded video bitstream, a representation of differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

determine the values of the motion vectors of the affine motion model for the current block of video data from the values of the predictors and the decoded differences;

determine based on the determined values of the motion vectors of the affine motion model for the current block of video data, a predictor block of video data; and

reconstruct the current block of video data based on the predictor block of video data.

15. The device of claim 14 , wherein the current block of video data is decoded using affine inter mode.

16. The device of claim 15 , wherein the neighboring block of video data is decoded using affine inter mode or affine merge mode.

17. The device of claim 14 , wherein the neighboring block of video comprises a selected neighboring block of video data, and wherein, to obtain the values of the motion vectors of the affine motion model of the selected neighboring block of video data, the one or more processing units are configured to:

evaluate, in a pre-defined order, neighboring blocks of video data of the current block of video data; and

select a first neighboring block of video data of the plurality of neighboring blocks of video data decoded using affine motion compensation as the selected neighboring block of video data.

18. The device of claim 14 , wherein, to decode the second syntax element, the one or more processing units are configured to decode the second syntax element from a coding unit (CU) that includes the current block of video data.

19. The device of claim 14 , further comprising at least one of:

a display configured to display the reconstructed video data; or

a camera configured to capture the video data.

20. The device of claim 14 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

21. A device for encoding a block of video data, the device comprising:

a memory configured to store the video data; and

one or more processing units implemented in circuitry and configured to:

determine whether motion compensation for a current block of a current picture of video data is to be performed using a four-parameter affine model defined by two motion vectors or a six-parameter affine model defined by three motion vectors;

determine values of motion vectors of the affine motion model of the current block of video data, the motion vectors of the affine motion model identifying a predictor block of video data for of the current block of video data;

obtain values of motion vectors of an affine motion model of a neighboring block of video data;

derive, from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of an affine motion model of the current block of video data; and

encode, in an encoded video bitstream, a representation of differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

encode, in the encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors; and

where the first syntax element has the second value, encode, in the encoded video bitstream, a second syntax element, wherein a first value of the second syntax element indicates that motion compensation for the current block is to be performed using the four-parameter affine motion model defined by two motion vectors, and wherein a second value of the second syntax element indicates that motion compensation for the current block is to be performed using the six-parameter affine motion model defined by three motion vectors.

22. The device of claim 21 , wherein the current block of video data is encoded using affine inter mode.

23. The device of claim 22 , wherein the neighboring block of video data is encoded using affine inter mode or affine merge mode.

24. The device of claim 21 , wherein the neighboring block of video comprises a selected neighboring block of video data, and wherein, to obtain the values of the motion vectors of the affine motion model of the selected neighboring block of video data, the one or more processing units are configured to:

evaluate, in a pre-defined order, neighboring blocks of video data of the current block of video data; and

select a first neighboring block of video data of the plurality of neighboring blocks of video data decoded using affine motion compensation as the selected neighboring block of video data.

25. The device of claim 21 , wherein, to encode the second syntax element, the one or more processing units are configured to encode the second syntax element in a coding unit (CU) that includes the current block of video data.

26. The device of claim 21 , further comprising at least one of:

a display configured to display the reconstructed video data; or

a camera configured to capture the video data.

27. The device of claim 21 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

28. A video decoder device comprising:

means for obtaining, for a current block of a current picture of video data, values of motion vectors of an affine motion model of a neighboring block of video data;

means for decoding, from an encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors;

means for decoding, from the encoded video bitstream and responsive to the first syntax element having the second value, a second syntax element, wherein a first value of the second syntax element indicates that motion compensation for the current block is to be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the second syntax element indicates that motion compensation for the current block is to be performed using a six-parameter affine motion model defined by three motion vectors;

means for deriving, from the values of the motion vectors of the affine motion model of the neighboring block of video data and responsive to the first syntax element having the second value, values of predictors for motion vectors of the affine motion model of the current block of video data indicated by the second syntax element;

means for obtaining differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

means for determining each of the values of the motion vectors of the affine motion model for the current block of video data from the values of the predictors and the decoded differences; and

means for identifying, based on the determined values of the motion vectors of the affine motion model for the current block of video data, a predictor block of video data.

29. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a video decoder to:

obtain, for a current block of a current picture of video data, values of motion vectors of an affine motion model of a neighboring block of video data;

decode, from an encoded video bitstream, a first syntax element included in a sequence parameter set (SPS) referred to by the current picture, wherein a first value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the first syntax element indicates that motion compensation for pictures referring to the SPS can be performed using either a four-parameter affine motion model defined by two motion vectors or a six-parameter affine motion model defined by three motion vectors;

responsive to the first syntax element having the second value:

decode a syntax element, wherein a first value of the syntax element indicates that motion compensation for the current block is to be performed using a four-parameter affine motion model defined by two motion vectors, and wherein a second value of the syntax element indicates that motion compensation for the current block is to be performed using a six-parameter affine motion model defined by three motion vectors; and

derive, from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of the affine motion model of the current block of video data indicated by the second syntax element;

obtain differences between the values of the motion vectors of the affine motion model for the current block of video data and the values of the predictors;

determine each of the values of the motion vectors of the affine motion model for the current block of video data from the values of the predictors and the decoded differences; and

identify, based on the determined values of the motion vectors of the affine motion model for the current block of video data, a predictor block of video data.

30. The method of claim 1 , wherein the syntax element is a flag that is coded with either the first value or the second value.

31. The method of claim 7 , wherein the syntax element is a flag that is coded with either the first value or the second value.

32. The device of claim 14 , wherein the syntax element is a flag that is coded with either the first value or the second value.

33. The device of claim 21 , wherein the syntax element is a flag that is coded with either the first value or the second value.

34. The method of claim 1 , further comprising, responsive to the first syntax element having the first value:

not decoding the second syntax element; and

deriving, by the one or more processors and from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of a four-parameter affine motion model for the current block of video data.

35. The method of claim 7 , further comprising not encoding the second syntax element where the first syntax element has the first value.

36. The device of claim 14 , wherein, responsive to the first syntax element having the first value, the one or more processing units are configured to:

not decode the second syntax element; and

derive, from the values of the motion vectors of the affine motion model of the neighboring block of video data, values of predictors for motion vectors of a four-parameter affine motion model for the current block of video data.

37. The device of claim 21 , wherein, where the first syntax element has the first value, the one or more processing units are configured to not encode the second syntax element.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2017
From: ZOU, FENG; CHEN, JIANLE; KARCZEWICZ, MARTA; LI, XIANG; CHUANG, HSIAO-CHIANG; CHIEN, WEI-JUNG
To: QUALCOMM INCORPORATED
Reel/Frame 042397/0671 →
Continuity (2)
Provisional Application 62337301 · May 16, 2016
Related Publication 20170332095A1 · Nov 16, 2017
Cited By (18)
US 12,192,507 US 12,200,244 US 12,238,306 US 12,261,998 US 12,273,525 US 12,278,985 US 12,301,863 US 12,309,413 US 12,323,601 US 12,323,617 US 12,368,885 US 12,395,644 US 12,407,835 US 12,501,066 US 12,519,972 US 12,581,086 US 12,713,016 US 12,726,649