US2023308679A1PendingUtilityA1

Motion prediction coding with coframe motion vectors

Assignee: GOOGLE LLCPriority: Sep 14, 2018Filed: May 25, 2023Published: Sep 28, 2023
Est. expirySep 14, 2038(~12.1 yrs left)· nominal 20-yr term from priority
H04N 19/176H04N 19/577H04N 19/52H04N 19/513H04N 19/51
62
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Video coding using motion prediction coding with coframe motion vectors includes generating a reference coframe spatiotemporally concurrent with a current frame from a sequence of input frames, wherein each frame from the sequence of input frames has a respective sequential location in the sequence of input frames, and wherein the current frame has a current sequential location in the sequence of input frames, generating an encoded frame by encoding the current frame using the reference coframe, including the encoded frame in an encoded bitstream, and outputting the encoded bitstream.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A non-transitory computer-readable storage medium having stored thereon an encoded bitstream, wherein the encoded bitstream is organized for decoding by operations comprising:
 generating a reconstructed frame by decoding a current frame from the encoded bitstream, wherein decoding includes:
 identifying a current block from the current frame; 
 identifying a previously decoded block based on coding information for the current block; 
 determining whether motion information for the previously decoded block includes a coframe motion vector for the previously decoded block; 
 determining whether to identify a prediction block for decoding the current block based on a reference coframe; 
 in response to a determination to omit identifying the prediction block for decoding the current block based on the reference coframe:
 in response to a determination that the motion information for the previously decoded block includes the coframe motion vector for the previously decoded block:
 identifying an alignment block in the reference coframe based on a spatial location of the previously decoded block and the coframe motion vector for the previously decoded block; 
 determining a motion vector for the alignment block based on motion field information for the alignment block; 
 determining a motion vector prediction for the current block based on the motion vector for the alignment block and the coframe motion vector for the previously decoded block; 
 determining a motion vector for the current block based on the motion vector prediction for the current block; and 
 identifying the prediction block based on a reference frame indicated by the motion vector for the current block; 
 
 
 in response to a determination to identify the prediction block for decoding the current block based on the reference coframe:
 in response to a determination that the motion information for the previously decoded block includes the coframe motion vector for the previously decoded block:
 determining a coframe motion vector prediction for the current block based on the coframe motion vector for the previously decoded block; 
 
 in response to a determination that the motion information for the previously decoded block omits the coframe motion vector for the previously decoded block:
 identifying a forward motion vector from the motion information for the previously decoded block; 
 identifying a backward motion vector from the motion information for the previously decoded block; 
 determining a coframe motion vector prediction for the current block based on the forward motion vector and the backward motion vector; 
 
 determining a coframe motion vector for the current block based on the coframe motion vector prediction for the current block; and 
 identifying the prediction block based on the reference coframe and the coframe motion vector for the current block; 
 
 generating a decoded block corresponding to the current block based on the prediction block; and 
 including the decoded block in a decoded frame; and 
   outputting the reconstructed frame based on the decoded frame.   
     
     
         2 . The method of  claim 1 , wherein decoding includes:
 generating the reference coframe for the current frame based on a motion field at a spatiotemporal location corresponding to a spatiotemporal location of the current frame such that the reference coframe is indicative of linear motion at the spatiotemporal location among a sequence of frames, wherein the sequence of frames includes the current frame.   
     
     
         3 . The method of  claim 1 , wherein:
 the coframe motion vector for the previously decoded block indicates a spatial displacement between a location of the previously decoded block in the current frame and a location in the reference coframe; and   the coframe motion vector for the current block indicates a spatial displacement between a location of the current block in the current frame and a location in the reference coframe.   
     
     
         4 . The method of  claim 1 , wherein determining whether to identify the prediction block for decoding the current block based on the reference coframe includes:
 decoding the coding information for the current block from the encoded bitstream; and   determining whether to identify the prediction block for decoding the current block based on the reference coframe based on the coding information for the current block.   
     
     
         5 . The method of  claim 1 , wherein determining the motion vector for the alignment block includes:
 obtaining the motion vector for the alignment block by averaging the motion field information corresponding to the alignment block.   
     
     
         6 . The method of  claim 1 , wherein determining the motion vector prediction for the current block based on the motion vector for the alignment block and the coframe motion vector for the previously decoded block includes:
 determining a motion vector prediction for the previously decoded block based on the motion vector for the alignment block and the coframe motion vector for the previously decoded block; and   identifying the motion vector prediction for the previously decoded block as the motion vector prediction for the current block.   
     
     
         7 . The method of  claim 1 , wherein:
 determining the motion vector for the alignment block includes:
 determining a first motion vector for the alignment block; and 
 determining a second motion vector for the alignment block; and 
   determining the motion vector prediction for the current block includes:
 determining a first motion vector prediction for the current block as a sum of the first motion vector for the alignment block and the coframe motion vector; and 
 determining a second motion vector prediction for the current block as a sum of the second motion vector for the alignment block and the coframe motion vector. 
   
     
     
         8 . The method of  claim 1 , wherein:
 the current frame is a frame from a sequence of frames, wherein each frame from the sequence of frames has a respective sequential location in the sequence of frames, wherein the current frame has a current sequential location in the sequence of frames;   the backward motion vector indicates a backward reference frame at a first sequential location preceding the current sequential location;   the forward motion vector indicates a forward reference frame at a second sequential location subsequent to the current sequential location; and   determining the coframe motion vector prediction for the current block includes:
 determining a sum of a product of a quotient of the second sequential location and a sum of the first sequential location and the second sequential location and the backward motion vector and a product of a quotient of the first sequential location and the sum of the first sequential location and the second sequential location and the forward motion vector. 
   
     
     
         9 . A non-transitory computer-readable storage medium having stored thereon an encoded bitstream, the encoded bitstream generated by performing operations comprising:
 generating a reference coframe spatiotemporally concurrent with a current frame from a sequence of input frames, wherein each frame from the sequence of input frames has a respective sequential location in the sequence of input frames, and wherein the current frame has a current sequential location in the sequence of input frames;   generating an encoded frame by encoding the current frame using the reference coframe;   including the encoded frame in the encoded bitstream; and   outputting the encoded bitstream.   
     
     
         10 . The non-transitory computer-readable storage medium of  claim 9 , wherein encoding the current frame using the reference coframe includes:
 generating a prediction block for encoding a current block in the current frame based on a reconstructed reference frame, wherein the reconstructed reference frame has a sequential location in the sequence of input frames that differs from the current sequential location;   determining a motion vector prediction for the current block based on a coframe motion vector for a previously coded block neighboring the current block in the current frame; and   including an indication of the motion vector prediction for the current block in the encoded bitstream.   
     
     
         11 . The non-transitory computer-readable storage medium of  claim 10 , wherein determining the motion vector prediction for the current block includes:
 identifying an alignment block in the reference coframe based on a spatial location of the previously coded block and the coframe motion vector for the previously coded block;   determining a motion vector for the alignment block based on motion field information for the alignment block;   determining the motion vector prediction for the current block based on the motion vector for the alignment block and the coframe motion vector for the previously coded block includes:   determining a motion vector prediction for the previously coded block based on the motion vector for the alignment block and the coframe motion vector for the previously coded block; and   identifying the motion vector prediction for the previously coded block as the motion vector prediction for the current block.   
     
     
         12 . The non-transitory computer-readable storage medium of  claim 9 , wherein encoding the current frame using the reference coframe includes:
 generating a prediction block for encoding a current block in the current frame based on the reference coframe;   determining a coframe motion vector prediction for the current block, wherein determining the coframe motion vector prediction for the current block includes:
 in response to a determination that motion information for a previously coded block neighboring the current block in the current frame includes a coframe motion vector for the previously coded block, determining the coframe motion vector prediction for the current block based on the coframe motion vector for the previously coded block; and 
 in response to a determination that the motion information for the previously coded block includes a compound motion vector for the previously coded block, determining the coframe motion vector prediction for the current block based on the compound motion vector for the previously coded block; and 
   including an indication of the coframe motion vector prediction for the current block in the encoded bitstream.   
     
     
         13 . The non-transitory computer-readable storage medium of  claim 12 , wherein determining the coframe motion vector prediction for the current block based on the compound motion vector for the previously coded block includes:
 identifying a forward motion vector from the motion information for the previously coded block;   identifying a backward motion vector from the motion information for the previously coded block; and   determining a coframe motion vector prediction for the current block based on the forward motion vector and the backward motion vector.   
     
     
         14 . A non-transitory computer-readable storage medium having stored thereon an encoded bitstream, the encoded bitstream generated by performing operations comprising:
 generating an encoded frame by encoding a current frame from an input bitstream, wherein encoding includes:
 identifying a current block from the current frame; 
 identifying a previously coded block; 
 determining whether motion information for the previously coded block includes a coframe motion vector for the previously coded block; 
 determining whether to identify a prediction block for encoding the current block based on a reference coframe; 
 in response to a determination to omit identifying the prediction block for encoding the current block based on the reference coframe:
 in response to a determination that the motion information for the previously coded block includes the coframe motion vector for the previously coded block:
 identifying an alignment block in the reference coframe based on a spatial location of the previously coded block and the coframe motion vector for the previously coded block; 
 determining a motion vector for the alignment block based on motion field information for the alignment block; 
 determining a motion vector prediction for the current block based on the motion vector for the alignment block and the coframe motion vector for the previously coded block; and 
 including an indication of the motion vector prediction for the current block in the encoded bitstream; and 
 
 
 in response to a determination to identify the prediction block for encoding the current block based on the reference coframe, determining a coframe motion vector prediction for the current block, wherein determining the coframe motion vector prediction for the current block includes:
 in response to a determination that the motion information for the previously coded block includes the coframe motion vector for the previously coded block:
 determining the coframe motion vector prediction for the current block based on the coframe motion vector for the previously coded block; 
 
 in response to a determination that the motion information for the previously coded block omits the coframe motion vector for the previously coded block:
 identifying a forward motion vector from the motion information for the previously coded block; 
 identifying a backward motion vector from the motion information for the previously coded block; and 
 determining the coframe motion vector prediction for the current block based on the forward motion vector and the backward motion vector; and 
 
 including the indication of the coframe motion vector prediction for the current block in the encoded bitstream; and 
 
   outputting the encoded bitstream.   
     
     
         15 . The method of  claim 14 , wherein encoding includes:
 generating the reference coframe for the current frame based on a motion field at a spatiotemporal location corresponding to a spatiotemporal location of the current frame such that the reference coframe is indicative of linear motion at the spatiotemporal location among a sequence of frames, wherein the sequence of frames includes the current frame.   
     
     
         16 . The method of  claim 14 , wherein:
 the coframe motion vector for the previously coded block indicates a spatial displacement between a location of the previously coded block in the current frame and a location in the reference coframe; and   the coframe motion vector for the current block indicates a spatial displacement between a location of the current block in the current frame and a location in the reference coframe.   
     
     
         17 . The method of  claim 14 , wherein determining the motion vector for the alignment block includes:
 obtaining the motion vector for the alignment block by averaging the motion field information corresponding to the alignment block.   
     
     
         18 . The method of  claim 14 , wherein determining the motion vector prediction for the current block based on the motion vector for the alignment block and the coframe motion vector for the previously coded block includes:
 determining a motion vector prediction for the previously coded block based on the motion vector for the alignment block and the coframe motion vector for the previously coded block; and   identifying the motion vector prediction for the previously coded block as the motion vector prediction for the current block.   
     
     
         19 . The method of  claim 14 , wherein:
 determining the motion vector for the alignment block includes:
 determining a first motion vector for the alignment block; and 
 determining a second motion vector for the alignment block; and 
   determining the motion vector prediction for the current block includes:
 determining a first motion vector prediction for the current block as a sum of the first motion vector for the alignment block and the coframe motion vector; and 
 determining a second motion vector prediction for the current block as a sum of the second motion vector for the alignment block and the coframe motion vector. 
   
     
     
         20 . The method of  claim 14 , wherein:
 the current frame is a frame from a sequence of input frames, wherein each frame from the sequence of input frames has a respective sequential location in the sequence of input frames, wherein the current frame has a current sequential location in the sequence of input frames;   the backward motion vector indicates a backward reference frame at a first sequential location preceding the current sequential location;   the forward motion vector indicates a forward reference frame at a second sequential location subsequent to the current sequential location; and   determining the coframe motion vector prediction for the current block includes:
 determining a sum of a product of a quotient of the second sequential location and a sum of the first sequential location and the second sequential location and the backward motion vector and a product of a quotient of the first sequential location and the sum of the first sequential location and the second sequential location and the forward motion vector.

Join the waitlist — get patent alerts

Track US2023308679A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.