IP Library › Granted Patent US 11,876,974
Granted Patent B2
US 11,876,974 · App. 17/738,105 · Granted Jan 16, 2024

Block-based optical flow estimation for motion compensated prediction in video coding

Inventors: Yaowu Xu (Saratoga, CA); Bohan Li (Santa Barbara, CA); Jingning Han (Santa Clara, CA)
Assignee: GOOGLE LLC
H04N19/139H04N19/105H04N19/172H04N19/537H04N19/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,876,974
App. No.
17/738,105
Granted
Jan 16, 2024
Kind
B2
Abstract

Motion prediction using optical flow is determined to be available for a current frame in response to determining that a reference frame buffer includes, with respect to the current frame, a forward reference frame and a backward reference frame. A flag indicating whether a current block is encoded using optical flow is decoded. Responsive to determining that the flag indicates that the current block is encoded using optical flow, a motion vector is decoded for the current block; a location of an optical flow reference block is identified within an optical flow reference frame based on the motion vector; subsequent to identifying the location of the optical flow reference block, the optical flow reference block is generated using the forward reference frame and the backward reference frame without generating the optical flow reference frame; and the current block is decoded based on the optical flow reference block.

Claims (69)

1. A method, comprising:

determining that motion prediction using optical flow is available for a current frame in response to determining that a reference frame buffer includes, with respect to the current frame, a forward reference frame and a backward reference frame;

decoding, from a compressed bitstream, a flag indicating whether a current block of the current frame is encoded using optical flow; and

responsive to determining that the flag indicates that the current block is encoded using optical flow, performing steps comprising:

decoding, from the compressed bitstream, a motion vector for the current block;

identifying a location of an optical flow reference block within an optical flow reference frame based on the motion vector;

subsequent to identifying the location of the optical flow reference block, generating the optical flow reference block using the forward reference frame and the backward reference frame without generating the optical flow reference frame by:

identifying an extended optical flow reference block by extending the optical flow reference block at each boundary of the optical flow reference block by an amount related to a filter length of a filter used in sub-pixel interpolation; and

generating pixel values of only the extended optical flow reference block by performing an optical flow estimation using the forward reference frame and the backward reference frame without generating the optical flow reference frame in its entirety; and

decoding the current block based on the optical flow reference block and the motion vector.

2. The method of claim 1 , further comprising:

responsive to determining that the flag indicates that the current block is not encoded using optical flow, decoding, from the compressed bitstream, an index of a reference frame that is used for decoding the current block.

3. The method of claim 1 , wherein the steps performed responsive to determining that the flag indicates that the current block is encoded using optical flow further comprise:

omitting decoding from the compressed bitstream an index of a reference frame that is to be used for decoding the current block.

4. The method of claim 1 , wherein the current block is a first current block, further comprising:

using the optical flow reference block for decoding a second current block in response to determining that a motion vector for the second current block identifies the location of the optical flow reference block.

5. The method of claim 1 , wherein decoding the current block based on the optical flow reference block comprises:

generating a prediction block using the optical flow reference block;

decoding a residual block from the compressed bitstream; and

combining the prediction block with the residual block.

6. A device, comprising:

a processor configured to:

determine that motion prediction using optical flow is available for a current frame;

decode, from a compressed bitstream, a flag indicating whether a current block of the current frame is encoded using optical flow; and

responsive to determining that the flag indicates that the current block is encoded using optical flow, the processor is configured to:

decode, from the compressed bitstream, a motion vector for the current block;

identify a location of an optical flow reference block within an optical flow reference frame based on the motion vector;

subsequent to identifying the location of the optical flow reference block, generate the optical flow reference block using a forward reference frame and a backward reference frame, wherein to generate the optical flow reference block comprises to:

identify an extended optical flow reference block by extending the optical flow reference block at each boundary of the optical flow reference block by an amount related to a filter length of a filter used in sub-pixel interpolation; and

generate pixel values of only the extended optical flow reference block by performing an optical flow estimation using the forward reference frame and the backward reference frame without generating the optical flow reference frame in its entirety; and

decode the current block based on the optical flow reference block and the motion vector.

7. The device of claim 6 , wherein to determine that the motion prediction using optical flow is available for the current frame comprises to:

determine that the motion prediction using optical flow is available for the current frame in response to determining that a reference frame buffer includes, with respect to the current frame, the forward reference frame and the backward reference frame.

8. The device of claim 6 , wherein to determine that the motion prediction using optical flow is available for the current frame comprises to:

decode from the compressed bitstream a flag indicating that the motion prediction using optical flow is available.

9. The device of claim 6 , wherein the processor is further configured:

responsive to determining that the flag indicates that the current block is not encoded using optical flow, decode, from the compressed bitstream, an index of a reference frame that is used for decoding the current block.

10. The device of claim 6 , wherein responsive to determining that the flag indicates that the current block is encoded using optical flow the processor is further configured to:

omit decoding from the compressed bitstream an index of a reference frame that is to be used for decoding the current block.

11. The device of claim 6 , wherein the current block is a first current block, the processor further configured to:

use the optical flow reference block for decoding a second current block in response to determining that a motion vector for the second current block identifies the location of the optical flow reference block.

12. The device of claim 6 , wherein to decode the current block based on the optical flow reference block the processor is configured to:

generate a prediction block using the optical flow reference block;

decode a residual block from the compressed bitstream; and

combine the prediction block with the residual block.

13. The device of claim 6 , wherein the processor is further configured to:

generate the optical flow reference frame.

14. The device of claim 13 , wherein the processor is further configured to:

exclude using the optical flow reference frame in any compound reference mode.

15. A non-transitory computer-readable storage medium having stored thereon a compressed bitstream, wherein the compressed bitstream is configured for decoding by operations comprising:

determining that motion prediction using optical flow is available for a current frame;

decoding, from the compressed bitstream, a flag indicating whether a current block of the current frame is encoded using optical flow; and

responsive to determining that the flag indicates that the current block is encoded using optical flow, performing operations comprising:

decoding, from the compressed bitstream, a motion vector for the current block;

identifying a location of an optical flow reference block within an optical flow reference frame based on the motion vector;

subsequent to identifying the location of the optical flow reference block, generating the optical flow reference block using a forward reference frame and a backward reference frame without generating the optical flow reference frame by:

identifying an extended optical flow reference block by extending the optical flow reference block at each boundary of the optical flow reference block by an amount related to a filter length of a filter used in sub-pixel interpolation; and

generating pixel values of only the extended optical flow reference block by performing an optical flow estimation using the forward reference frame and the backward reference frame without generating the optical flow reference frame in its entirety; and

decoding the current block based on the optical flow reference block.

16. The non-transitory computer-readable storage medium of claim 15 , wherein determining that the motion prediction using optical flow is available for the current frame comprises:

determining that the motion prediction using optical flow is available for the current frame in response to determining that a reference frame buffer includes, with respect to the current frame, the forward reference frame and the backward reference frame.

17. The non-transitory computer-readable storage medium of claim 15 , wherein determining that the motion prediction using optical flow is available for the current frame comprises:

decoding from the compressed bitstream a flag indicating that the motion prediction using optical flow is available.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise:

responsive to determining that the flag indicates that the current block is not encoded using optical flow, decoding, from the compressed bitstream, an index of a reference frame that is used for decoding the current block.

19. The non-transitory computer-readable storage medium of claim 15 , wherein the operations performed responsive to determining that the flag indicates that the current block is encoded using optical flow further comprise:

omitting decoding from the compressed bitstream an index of a reference frame that is to be used for decoding the current block.

20. The non-transitory computer-readable storage medium of claim 15 , wherein the current block is a first current block, the operations further comprising:

using the optical flow reference block for decoding a second current block in response to determining that a motion vector for the second current block identifies the location of the optical flow reference block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2022
From: XU, YAOWU; LI, BOHAN; HAN, JINGNING
To: GOOGLE LLC
Reel/Frame 059836/0171 →
Continuity (3)
Continuation 16866591 · May 5, 2020
Continuation 15817369 · Nov 20, 2017
Related Publication 20220264109A1 · Aug 18, 2022
Cited By (1)
US 12,206,842