IP Library Granted Patent US 11,102,476
Granted Patent B2
US 11,102,476 · App. 16/723,318 · Granted Aug 24, 2021

Subblock based affine motion model

Inventors: Han Huang (San Diego, CA); Wei-Jung Chien (San Diego, CA); Vadim Seregin (San Diego, CA); Marta Karczewicz (San Diego, CA)
Assignee: Qualcomm Incorporated
H04N19/105G06F1/03G06F17/16H04N19/149H04N19/176
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 11,102,476
App. No.
16/723,318
Granted
Aug 24, 2021
Kind
B2
Abstract

A device for processing video data includes a memory configured to store video data and one or more processors implemented in circuitry. The one or more processors are configured to select two or more subblocks of one or more blocks of video data and generate an affine motion model for a current block of video data using a subblock motion vector from each of the two or more subblocks as control-point motion vectors for the current block. The one or more processors are further configured to determine one or more prediction blocks based on the affine motion model and predict the current block with the one or more prediction blocks.

Claims (352)

1. A method of processing video data, the method comprising:

selecting, by one or more processors implemented in circuitry, two or more subblocks of one or more blocks of video data;

generating, by the one or more processors, an affine motion model for a current block of video data using a subblock motion vector from each of the two or more subblocks as control-point motion vectors for the current block and using an approximation of a division operation, wherein generating the affine motion model comprises multiplying an output of a look-up-table operation with a difference of an x-component of a first control-point motion vector of the control-point motion vectors and the x-component of a second control-point motion vector of the control-point motion vectors to generate the approximation of the division operation;

determining, by the one or more processors, one or more prediction blocks based on the affine motion model; and

predicting, by the one or more processors, the current block with the one or more prediction blocks.

2. The method of claim 1 , wherein selecting the two or more subblocks comprises selecting three subblocks and wherein generating the affine motion model comprises generating the affine motion model using the three subblock motion vectors as the control-point motion vectors.

3. The method of claim 1 , wherein selecting the two or more subblocks comprises selecting two subblocks and wherein generating the affine motion model comprises generating the affine motion model using the two subblock motion vectors as the control-point motion vectors.

4. The method of claim 1 , wherein selecting the two or more subblocks comprises:

selecting a first subblock associated with a subblock motion vector with coordinates at (x0, y0) for the current block;

selecting a second subblock associated with a subblock motion vector with coordinates at (x1, y1) for the current block, wherein y0 equals y1; and

selecting a third subblock associated with a subblock motion vector with coordinates at (x2, y2) for the current block, wherein x0 equals x2.

5. The method of claim 1 , wherein selecting the two or more subblocks comprises:

selecting a first subblock of the current block arranged in an upper-left corner of the current block;

selecting a second subblock of the current block arranged in an upper-right corner of the current block; and

selecting a third subblock of the current block arranged in a lower-left corner of the current block.

6. The method of claim 1 , wherein generating the affine motion model comprises calculating:

{

v

x

=

(

(

v

1

x

-

v

0

x

)

*

x

*

LU

T

[

x

1

-

x

0

]

+

(

v

2

x

-

v

0

x

)

*

y

*

L

U

T

[

y

2

-

y

0

]

+

(

v

0

x

LUT_PRECISION

)

)

LUT_PRECISION

v

y

=

(

(

v

1

y

-

v

0

y

)

*

x

*

LU

T

[

x

1

-

x

0

]

+

(

v

2

y

-

v

0

y

)

*

y

*

LUT

[

y

2

-

y

0

]

+

(

v

0

y

+

LUT_PRECISION

)

)

LUT_PRECISION

,

wherein (v x , v y ) is a motion vector at coordinates (x,y), wherein {right arrow over (v)} 0 , {right arrow over (v)} 1 , and {right arrow over (v)} 3 are the control-point motion vectors, wherein {right arrow over (v)} 0 =(v 0x , v 0y ), {right arrow over (v)} 1 =(v 1x , v 1y ), and {right arrow over (v)} 2 =(v 2x , v 2y ) , wherein v 0x is the x-component of the first control-point motion vector, wherein v 1x , is the x-component of the second control-point motion vector, wherein (x0, y0), (x1, y1) and (x2, y2), are coordinates of the control-point motion vectors ({right arrow over (v)} 0 , {right arrow over (v)} 1 , and {right arrow over (v)} 2 ) for the current block, respectively, LUT is the look-up-table operation, and LUT_PRECISION is a predefined precision.

7. The method of claim 1 , wherein generating the affine motion model comprises calculating:

{

v

x

=

(

(

v

1

x

-

v

0

x

)

*

x

*

LUT

[

x

1

-

x

0

]

)

LUT

PRECISION

+

(

(

v

2

x

-

v

0

x

)

*

y

*

L

U

T

[

y

2

-

y

0

]

)

LUT_PRECISION

+

v

0

x

v

y

=

(

(

v

1

y

-

v

0

y

)

*

x

*

LU

T

[

x

1

-

x

0

]

)

LUT

PRECISION

+

(

(

v

2

y

-

v

0

y

)

*

y

*

L

U

T

[

y

2

-

y

0

]

)

LUT_PRECISION

+

v

0

y

wherein (v x , v y ) is a motion vector at coordinates (x,y), wherein {right arrow over (v)} 0 , {right arrow over (v)} 1 , and {right arrow over (v)} 3 are the control-point motion vectors, wherein {right arrow over (v)} 0 =(v 0x , v 0y ), {right arrow over (v)} 1 =(v 1x , v 1y ), and {right arrow over (v)} 2 =(v 2x , v 2y ), wherein v 0x is the x-component of the first control-point motion vector, wherein v 1x is the x-component of the second control-point motion vector, wherein (x0, y0), (x1, y1) and (x2, y2), are coordinates of the control-point motion vectors ({right arrow over (v)} 0 , {right arrow over (v)} 1 and {right arrow over (v)} 2 ) for the current block, respectively, LUT is the look-up-table operation, and LUT_PRECISION is a predefined precision.

8. The method of claim 1 , wherein selecting the two or more subblocks comprises:

selecting a subblock at an extended column and an extended row of the current block.

9. The method of claim 1 , wherein predicting the current block generates a predicted block, the method comprising:

decoding, by the one or more processors, a residual block for the current block; and

combining, by the one or more processors, the predicted block and the residual block to decode the current block.

10. The method of claim 1 , comprising:

generating, by the one or more processors, a residual block for the current block based on differences between the current block and the one or more prediction block; and

encoding, by the one or more processors, the residual block.

11. A device for processing video data, the device comprising:

a memory configured to store video data; and

one or more processors implemented in circuitry and configured to:

select two or more subblocks of one or more blocks of the video data;

generate an affine motion model for a current block of the video data using a subblock motion vector from each of the two or more subblocks as control-point motion vectors for the current block and using an approximation of a division operation, wherein, to generate the affine motion model, the one or more processors are configured to multiply an output of a look-up-table operation with a difference of an x-component of a first control-point motion vector of the control-point motion vectors and the x-component of a second control-point motion vector of the control-point motion vectors to generate the approximation of the division operation;

determine one or more prediction blocks based on the affine motion model; and

predict the current block with the one or more prediction blocks.

12. The device of claim 11 , wherein, to select the two or more subblocks, the one or more processors are configured to:

select a first subblock associated with a subblock motion vector with coordinates at (x0, y0) for the current block;

select a second subblock associated with a subblock motion vector with coordinates at (x1, y1) for the current block, wherein y0 equals y1; and

select a third subblock associated with a subblock motion vector with coordinates at (x2, y2) for the current block, wherein x0 equals x2.

13. The device of claim 11 , wherein, to select the two or more subblocks, the one or more processors are configured to:

select a subblock at an extended column and an extended row of the current block.

14. The device of claim 11 , wherein predicting the current block generates a predicted block and wherein the one or more processors are configured to:

decode a residual block for the current block; and

combine the predicted block and the residual block to decode the current block.

15. The device of claim 11 , wherein the one or more processors are configured to:

generate a residual block for the current block based on differences between the current block and the one or more prediction block; and

encode the residual block.

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

17. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause a processor to:

select two or more subblocks of one or more blocks of video data;

generate an affine motion model for a current block of video data using a subblock motion vector from each of the two or more subblocks as control-point motion vectors for the current block and using an approximation of a division operation, wherein the instructions that cause the processor to generate the affine motion model further cause the processor to multiply an output of a look-up-table operation with a difference of an x-component of a first control-point motion vector of the control-point motion vectors and the x-component of a second control-point motion vector of the control-point motion vectors to generate the approximation of the division operation;

determine one or more prediction blocks based on the affine motion model; and

predict the current block with the one or more prediction blocks.

18. A device for coding video data, the device comprising:

means for selecting two or more subblocks of one or more blocks of video data;

means for generating an affine motion model for a current block of video data using a subblock motion vector from each of the two or more subblocks as control-point motion vectors for the current block and using an approximation of a division operation, wherein the means for generating the affine motion model comprises means for multiplying an output of a look-up-table operation with a difference of an x-component of a first control-point motion vector of the control-point motion vectors and the x-component of a second control-point motion vector of the control-point motion vectors to generate the approximation of the division operation;

means for determining one or more prediction blocks based on the affine motion model; and

means for predicting the current block with the one or more prediction blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2020
From: HUANG, HAN; CHIEN, WEI-JUNG; SEREGIN, VADIM; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 051870/0325 →
Continuity (2)
Provisional Application 62786117 · Dec 28, 2018
Related Publication 20200213585A1 · Jul 2, 2020
Cited By (1)
US 12,457,352