IP Library › Granted Patent US 11,463,693
Granted Patent B2
US 11,463,693 · App. 17/003,733 · Granted Oct 4, 2022

Geometric partition mode with harmonized motion field storage and motion compensation

Inventors: Kevin Pascal Andre Reuze (Thorigne-Fouillard, FR); Han Huang (San Diego, CA); Chun-Chi Chen (San Diego, CA); Vadim Seregin (San Diego, CA); Wei-Jung Chien (San Diego, CA); Cheng-Teh Hsieh (Del Mar, CA); Marta Karczewicz (San Diego, CA)
Assignee: Qualcomm Incorporated
H04N19/119H04N19/139H04N19/176H04N19/573H04N19/577
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,463,693
App. No.
17/003,733
Granted
Oct 4, 2022
Kind
B2
Abstract

Techniques for processing video data are described. The techniques include determining a first partition and a second partition for a current block coded in geometric partition mode, determining a first and second prediction block based on a first and second motion vector, blending the first prediction block and the second prediction block based on weights indicative of an amount to scale samples in the first prediction block and the second prediction block to generate a final prediction block, dividing the current block into a plurality of sub-blocks, determining a set of sub-blocks that each include at least one sample that corresponds to a prediction sample in the final prediction block that was generated based on equal weighting of a sample in the first prediction block and a sample in the second prediction block, and storing respective bi-prediction motion vectors for each sub-block in the determined set of sub-blocks.

Claims (109)

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

determining a first partition for a current block of the video data coded in geometric partition mode and a second partition for the current block of the video data;

determining a first prediction block of the video data based on a first motion vector for the first partition and a second prediction block of the video data based on a second motion vector for the second partition;

blending the first prediction block and the second prediction block based on weights indicative of an amount to scale samples in the first prediction block and an amount to scale samples in the second prediction block to generate a final prediction block for the current block;

dividing the current block into a plurality of sub-blocks;

determining a set of sub-blocks that each include at least one sample that corresponds to a respective prediction sample in the final prediction block that was generated based on equal weighting of a respective sample in the first prediction block and a respective sample in the second prediction block, wherein a first sub-block in the set of sub-blocks includes:

a first sample that corresponds to a first prediction sample in the final prediction block that was generated based on equal weighting of a first sample in the first prediction block and a first sample in the second prediction block, and

a second sample that corresponds to a second prediction sample in the final prediction block that was generated based on no weighting of any sample in the first prediction block or no weighting of any sample in the second prediction block; and

storing respective bi-prediction motion vectors for each sub-block in the determined set of sub-blocks including the first sub-block in the set of sub-blocks.

2. The method of claim 1 , wherein the set of sub-blocks comprises a first set of sub-blocks, the method further comprising:

determining a second set of sub-blocks that do not include any samples that correspond to prediction samples in the final prediction block that were generated based on equal weighting of samples in the first prediction block and samples in the second prediction block;

determining, for each sub-block in the second set of sub-blocks, whether a majority of a sub-block in the second set of sub-blocks is within the first partition or the second partition; and

storing, for each sub-block in the second set of sub-blocks, the first motion vector based on the majority of the sub-block in the second set of sub-blocks being within the first partition or the second motion vector based on the majority of the sub-block in the second set of sub-blocks being within the second partition.

3. The method of claim 1 , wherein storing respective bi-prediction motion vectors for each sub-block comprises:

determining whether the first motion vector and the second motion vector are from different reference picture lists; and

one of:

storing both the first motion vector and the second motion vector for each sub-block of the set of sub-blocks based on the first motion vector and the second motion vector being from different reference picture lists, or

selecting one of the first motion vector or the second motion vector based on the first motion vector and the second motion vector being from the same reference picture list, and

storing the selected one of the first motion vector or the second motion vector for each sub-block of the set of sub-blocks.

4. The method of claim 1 , wherein each sub-block is of size 4×4.

5. The method of claim 1 , further comprising:

storing a table of weights for a slope of a partition line that partitions the current block into the first partition and the second partition,

wherein determining the set of sub-blocks comprises determining the set of sub-blocks based on the stored table and an offset into the table.

6. The method of claim 1 , further comprising:

constructing a candidate list for merge mode or advanced motion vector prediction (AMVP) mode for a subsequent block based on the stored respective bi-prediction motion vectors.

7. The method of claim 1 , further comprising:

receiving information indicative of a residual block for a difference between the final prediction block and the current block; and

reconstructing the current block based on the final prediction block and the residual block.

8. The method of claim 1 , further comprising:

determining a residual block based on a difference between the current block and the final prediction block; and

signaling information indicative of the residual block.

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

memory configured to store the video data; and

processing circuitry coupled to the memory and configured to:

determine a first partition for a current block of the video data coded in geometric partition mode and a second partition for the current block of the video data;

determine a first prediction block from the stored video data based on a first motion vector for the first partition and a second prediction block from the stored video data based on a second motion vector for the second partition;

blend the first prediction block and the second prediction block based on weights indicative of an amount to scale samples in the first prediction block and an amount to scale samples in the second prediction block to generate a final prediction block for the current block;

divide the current block into a plurality of sub-blocks;

determine a set of sub-blocks that each include at least one sample that corresponds to a respective prediction sample in the final prediction block that was generated based on equal weighting of a respective sample in the first prediction block and a respective sample in the second prediction block, wherein a first sub-block in the set of sub-blocks includes:

a first sample that corresponds to a first prediction sample in the final prediction block that was generated based on equal weighting of a first sample in the first prediction block and a first sample in the second prediction block, and

a second sample that corresponds to a second prediction sample in the final prediction block that was generated based on no weighting of any sample in the first prediction block or no weighting of any sample in the second prediction block; and

store respective bi-prediction motion vectors for each sub-block in the determined set of sub-blocks including the first sub-block in the set of sub-blocks.

10. The device of claim 9 , wherein the set of sub-blocks comprises a first set of sub-blocks, the processing circuitry is configured to:

determine a second set of sub-blocks that do not include any samples that correspond to prediction samples in the final prediction block that were generated based on equal weighting of samples in the first prediction block and samples in the second prediction block;

determine, for each sub-block in the second set of sub-blocks, whether a majority of a sub-block in the second set of sub-blocks is within the first partition or the second partition; and

store, for each sub-block in the second set of sub-blocks, the first motion vector based on the majority of the sub-block in the second set of sub-blocks being within the first partition or the second motion vector based on the majority of the sub-block in the second set of sub-blocks being within the second partition.

11. The device of claim 9 , wherein to store respective bi-prediction motion vectors for each sub-block, the processing circuitry is configured to:

determine whether the first motion vector and the second motion vector are from different reference picture lists; and

one of:

store both the first motion vector and the second motion vector for each sub-block of the set of sub-blocks based on the first motion vector and the second motion vector being from different reference picture lists, or

select one of the first motion vector or the second motion vector based on the first motion vector and the second motion vector being from the same reference picture list, and

store the selected one of the first motion vector or the second motion vector for each sub-block of the set of sub-blocks.

12. The device of claim 9 , wherein each sub-block is of size 4×4.

13. The device of claim 9 , wherein the processing circuitry is configured to:

store a table of weights for a slope of a partition line that partitions the current block into the first partition and the second partition,

wherein to determine the set of sub-blocks, the processing circuitry is configured to determine the set of sub-blocks based on the stored table and an offset into the table.

14. The device of claim 9 , wherein the processing circuitry is configured to:

construct a candidate list for merge mode or advanced motion vector prediction (AMVP) mode for a subsequent block based on the stored respective bi-prediction motion vectors.

15. The device of claim 9 , wherein the processing circuitry is configured to:

receive information indicative of a residual block for a difference between the final prediction block and the current block; and

reconstruct the current block based on the final prediction block and the residual block.

16. The device of claim 9 , wherein the processing circuitry is configured to:

determine a residual block based on a difference between the current block and the final prediction block; and

signal information indicative of the residual block.

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

18. A computer-readable storage medium storing instructions thereon that when executed cause one or more processors of a device for processing video data to:

determine a first partition for a current block of the video data coded in geometric partition mode and a second partition for the current block of the video data;

determine a first prediction block of the video data based on a first motion vector for the first partition and a second prediction block of the video data based on a second motion vector for the second partition;

blend the first prediction block and the second prediction block based on weights indicative of an amount to scale samples in the first prediction block and an amount to scale samples in the second prediction block to generate a final prediction block for the current block;

divide the current block into a plurality of sub-blocks;

determine a set of sub-blocks that each include at least one sample that corresponds to a respective prediction sample in the final prediction block that was generated based on equal weighting of a respective sample in the first prediction block and a respective sample in the second prediction block, wherein a first sub-block in the set of sub-blocks includes:

a first sample that corresponds to a first prediction sample in the final prediction block that was generated based on equal weighting of a first sample in the first prediction block and a first sample in the second prediction block, and

a second sample that corresponds to a second prediction sample in the final prediction block that was generated based on no weighting of any sample in the first prediction block or no weighting of any sample in the second prediction block; and

store respective bi-prediction motion vectors for each sub-block in the determined set of sub-blocks including the first sub-block in the set of sub-blocks.

19. The computer-readable storage medium of claim 18 , wherein the set of sub-blocks comprises a first set of sub-blocks, the instructions further comprising instructions that cause the one or more processors to:

determine a second set of sub-blocks that do not include any samples that correspond to prediction samples in the final prediction block that were generated based on equal weighting of samples in the first prediction block and samples in the second prediction block;

determine, for each sub-block in the second set of sub-blocks, whether a majority of a sub-block in the second set of sub-blocks is within the first partition or the second partition; and

store, for each sub-block in the second set of sub-blocks, the first motion vector based on the majority of the sub-block in the second set of sub-blocks being within the first partition or the second motion vector based on the majority of the sub-block in the second set of sub-blocks being within the second partition.

20. The computer-readable storage medium of claim 18 , wherein the instructions that cause the one or more processors to store respective bi-prediction motion vectors for each sub-block comprise instructions that cause the one or more processors to:

determine whether the first motion vector and the second motion vector are from different reference picture lists; and

one of:

store both the first motion vector and the second motion vector for each sub-block of the set of sub-blocks based on the first motion vector and the second motion vector being from different reference picture lists, or

select one of the first motion vector or the second motion vector based on the first motion vector and the second motion vector being from the same reference picture list, and

store the selected one of the first motion vector or the second motion vector for each sub-block of the set of sub-blocks.

21. The computer-readable storage medium of claim 18 , wherein each sub-block is of size 4×4.

22. The computer-readable storage medium of claim 18 , further comprising instructions that cause the one or more processors to:

store a table of weights for a slope of a partition line that partitions the current block into the first partition and the second partition,

wherein the instructions that cause the one or more processors to determine the set of sub-blocks comprise instructions that cause the one or more processors to determine the set of sub-blocks based on the stored table and an offset into the table.

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

means for determining a first partition for a current block of the video data coded in geometric partition mode and a second partition for the current block of the video data;

means for determining a first prediction block of the video data based on a first motion vector for the first partition and a second prediction block of the video data based on a second motion vector for the second partition;

means for blending the first prediction block and the second prediction block based on weights indicative of an amount to scale samples in the first prediction block and an amount to scale samples in the second prediction block to generate a final prediction block for the current block;

means for dividing the current block into a plurality of sub-blocks;

means for determining a set of sub-blocks that each include at least one sample that corresponds to a respective prediction sample in the final prediction block that was generated based on equal weighting of a respective sample in the first prediction block and a respective sample in the second prediction block, wherein a first sub-block in the set of sub-blocks includes:

a first sample that corresponds to a first prediction sample in the final prediction block that was generated based on equal weighting of a first sample in the first prediction block and a first sample in the second prediction block, and

a second sample that corresponds to a second prediction sample in the final prediction block that was generated based on no weighting of any sample in the first prediction block or no weighting of any sample in the second prediction block; and

means for storing respective bi-prediction motion vectors for each sub-block in the determined set of sub-blocks including the first sub-block in the set of sub-blocks.

24. The device of claim 23 , wherein the set of sub-blocks comprises a first set of sub-blocks, the device further comprising:

means for determining a second set of sub-blocks that do not include any samples that correspond to prediction samples in the final prediction block that were generated based on equal weighting of samples in the first prediction block and samples in the second prediction block;

means for determining, for each sub-block in the second set of sub-blocks, whether a majority of a sub-block in the second set of sub-blocks is within the first partition or the second partition; and

means for storing, for each sub-block in the second set of sub-blocks, the first motion vector based on the majority of the sub-block in the second set of sub-block being within the first partition or the second motion vector based on the majority of the sub-block in the second set of sub-blocks being within the second partition.

25. The device of claim 23 , wherein the means for storing respective bi-prediction motion vectors for each sub-block comprises:

means for determining whether the first motion vector and the second motion vector are from different reference picture lists; and

means for storing both the first motion vector and the second motion vector for each sub-block of the set of sub-blocks based on the first motion vector and the second motion vector being from different reference picture lists, or

means for selecting one of the first motion vector or the second motion vector based on the first motion vector and the second motion vector being from the same reference picture list, and storing the selected one of the first motion vector or the second motion vector for each sub-block of the set of sub-blocks.

26. The device of claim 23 , wherein each sub-block is of size 4×4.

27. The device of claim 23 , further comprising:

means for storing a table of weights for a slope of a partition line that partitions the current block into the first partition and the second partition,

wherein the means for determining the set of sub-blocks comprises means for determining the set of sub-blocks based on the stored table and an offset into the table.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2021
From: REUZE, KEVIN PASCAL ANDRE; HUANG, HAN; CHEN, CHUN-CHI; SEREGIN, VADIM; CHIEN, WEI-JUNG; HSIEH, CHENG-TEH; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 056025/0929 →
Continuity (2)
Provisional Application 62894575 · Aug 30, 2019
Related Publication 20210067776A1 · Mar 4, 2021