US2005013498A1PendingUtilityA1

Coding of motion vector information

Assignee: MICROSOFT CORPPriority: Jul 18, 2003Filed: Jul 18, 2003Published: Jan 20, 2005
Est. expiryJul 18, 2023(expired)· nominal 20-yr term from priority
G06V 10/20G06V 10/40H04N 19/63H04N 19/176H04N 19/139H04N 19/51H04N 19/91H04N 19/61H04N 19/513H04N 19/137H04N 19/132H04N 7/52H04N 19/46H04N 19/56H04N 19/107H04N 19/52H04N 19/105
41
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Techniques and tools for encoding and decoding motion vector information for video images are described. For example, a video encoder yields an extended motion vector code by jointly coding, for a set of pixels, a switch code, motion vector information, and a terminal symbol indicating whether subsequent data is encoded for the set of pixels. In another aspect, an encoder/decoder selects motion vector predictors for macroblocks. In another aspect, a video encoder/decoder uses hybrid motion vector prediction. In another aspect, a video encoder/decoder signals a motion vector mode for a predicted image. In another aspect, a video decoder decodes a set of pixels by receiving an extended motion vector code, which reflects joint encoding of motion information together with intra/inter-coding information and a terminal symbol. The decoder determines whether subsequent data exists for the set of pixels based on e.g., the terminal symbol.

Claims

exact text as granted — not AI-modified
1 . In a computer system, a method of encoding a video image in a video image sequence, wherein the video image is partitioned into sets of pixels, the method comprising: 
 determining a value for a switch code, wherein the switch code indicates whether a set of pixels is intra-coded; and    jointly coding the switch code with motion vector information for the set of pixels.    
   
   
       2 . The method of  claim 1  wherein the set of pixels is a block.  
   
   
       3 . The method of  claim 1  wherein the set of pixels is a macroblock.  
   
   
       4 . The method of  claim 1  wherein the value for the switch code indicates the set of pixels is intra-coded, and wherein the motion vector information comprises a pseudo motion vector.  
   
   
       5 . In a computer system, a method of encoding a video image in a video image sequence, wherein the video image is partitioned into sets of pixels, the method comprising: 
 determining a value for a switch code, wherein the switch code indicates whether a set of pixels is intra-coded; and    jointly coding the switch code with motion vector information for the set of pixels and with a terminal symbol indicating whether subsequent data is encoded for the set of pixels;    wherein the jointly coding yields an extended motion vector code.    
   
   
       6 . The method of  claim 5  further comprising jointly coding additional data for the set of pixels with the extended motion vector code.  
   
   
       7 . The method of  claim 5  wherein the video image is a bi-directionally predicted video image, further comprising jointly coding an index for a reference image for the predicted video image with the extended motion vector code.  
   
   
       8 . The method of  claim 5  wherein the video image is a field-coded video image, further comprising jointly coding an index for a reference field for the field-coded video image with the extended motion vector code.  
   
   
       9 . The method of  claim 5  further comprising jointly coding fading information for the video image with the extended motion vector code.  
   
   
       10 . The method of  claim 5  further comprising jointly coding an entropy code table index for the video image with the extended motion vector code.  
   
   
       11 . The method of  claim 5  wherein the set of pixels is a block.  
   
   
       12 . The method of  claim 5  wherein the set of pixels is a macroblock.  
   
   
       13 . The method of  claim 5  wherein the set of pixels is a macroblock, and wherein the subsequent data comprises coded block pattern data.  
   
   
       14 . The method of  claim 13  wherein the subsequent data further comprises residual data.  
   
   
       15 . The method of  claim 5  wherein the extended motion vector code is included in an extended motion vector code alphabet.  
   
   
       16 . The method of  claim 5  wherein the extended motion vector code is included in an extended motion vector code alphabet, and wherein the extended motion vector alphabet lacks a code representing a skip condition.  
   
   
       17 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into macroblocks, the method comprising: 
 selecting a motion vector predictor for a current macroblock in the video image from a set of candidate motion vector predictors in the video image, wherein the current macroblock is a last macroblock of a macroblock row in the video image, wherein the set of candidate motion vector predictors comprises motion vectors from a set of macroblocks adjacent to the current macroblock, and wherein the set of macroblocks adjacent to the current macroblock consists of a top adjacent macroblock, a left adjacent macroblock, and a top-left adjacent macroblock.    
   
   
       18 . The method of  claim 17  wherein the video image is a 1MV P-frame, and wherein the motion vector predictor comprises a motion vector for an entire macroblock.  
   
   
       19 . The method of  claim 17  wherein the video image is a mixed 1MV/4MV P-frame, and wherein the motion vector predictor comprises a motion vector for an individual block within a macroblock.  
   
   
       20 . The method of  claim 17  further comprising generating a differential motion vector based on the motion vector predictor.  
   
   
       21 . The method of  claim 17  further comprising: 
 determining whether an area referenced by the motion vector predictor is within a boundary for the video image; and    based on the determining, performing a motion vector pullback.    
   
   
       22 . A computer-readable medium having stored thereon computer-executable instructions for performing the method of  claim 17  during video decoding.  
   
   
       23 . A computer-readable medium having stored thereon computer-executable instructions for performing the method of  claim 17  during video encoding.  
   
   
       24 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into macroblocks comprising blocks, the method comprising: 
 selecting a motion vector predictor for a current top-left block in a current macroblock in the video image from a set of candidate motion vector predictors in the video image, wherein the set of candidate motion vector predictors comprises motion vectors from a set of blocks in macroblocks adjacent to the current macroblock, and wherein the set of blocks in macroblocks adjacent to the current macroblock consists of a bottom-left block of a top adjacent macroblock, a top-right block of a left adjacent macroblock, and a bottom-right block of a top-left adjacent macroblock.    
   
   
       25 . The method of  claim 24  further comprising generating a differential motion vector based on the motion vector predictor.  
   
   
       26 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into macroblocks comprising blocks, the method comprising: 
 selecting a motion vector predictor for a current top-left block in a current macroblock in the video image from a set of candidate motion vector predictors, wherein the current macroblock is a first macroblock of a macroblock row in the video image, wherein the set of candidate motion vector predictors comprises a zero-value motion vector and motion vectors from a set of blocks in a macroblock adjacent to the current macroblock, and wherein the set of blocks in the macroblock adjacent to the current macroblock consists of a bottom-left block of a top adjacent macroblock, and a bottom-right block of the top adjacent macroblock.    
   
   
       27 . The method of  claim 26  further comprising generating a differential motion vector based on the motion vector predictor.  
   
   
       28 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into macroblocks comprising blocks, the method comprising: 
 selecting a motion vector predictor for a current top-right block in a current macroblock in the video image from a set of candidate motion vector predictors, wherein the current macroblock is a last macroblock of a macroblock row in the video image, and wherein the set of candidate motion vector predictors consists of a motion vector from the top-left block of the current macroblock, a motion vector from a bottom-left block of a top adjacent macroblock, and a motion vector from a bottom-right block of the top adjacent macroblock.    
   
   
       29 . The method of  claim 28  further comprising generating a differential motion vector based on the motion vector predictor.  
   
   
       30 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into sets of pixels, the method comprising: 
 calculating a motion vector predictor for a set of pixels in the video image based on analysis of motion vector predictor candidates;    comparing the calculated motion vector predictor with one or more of the motion vector predictor candidates; and    based on the comparing, determining whether to replace the calculated motion vector predictor with a hybrid motion vector of one of the one or more motion vector predictor candidates.    
   
   
       31 . The method of  claim 30  wherein the set of pixels comprises a block.  
   
   
       32 . The method of  claim 30  wherein the set of pixels comprises a macroblock.  
   
   
       33 . The method of  claim 30  wherein the set of pixels comprises a skipped set of pixels.  
   
   
       34 . The method of  claim 30  wherein the one or more motion vector predictor candidates comprise a left motion predictor candidate and a top motion predictor candidate.  
   
   
       35 . The method of  claim 30  further comprising replacing the calculated motion vector predictor with the hybrid motion vector, wherein the hybrid motion vector is indicated by an indicator bit.  
   
   
       36 . The method of  claim 30  wherein the video image is a one-motion-vector-per-macroblock image.  
   
   
       37 . The method of  claim 30  wherein the video image is a one-or-four-motion-vector-per-macroblock image.  
   
   
       38 . In a computer system, a method of predicting motion for a predicted image in a sequence of video images, the method comprising: 
 selecting a motion vector mode for the predicted image from a set of plural motion vector modes, wherein the set of plural motion vector modes includes: 
 a mixed one- and four-motion vector, quarter-pixel resolution, bicubic interpolation filter mode;  
 a one-motion vector, quarter-pixel resolution, bicubic interpolation filter mode;  
 a one-motion vector, half-pixel resolution, bicubic interpolation filter mode; and  
 a one-motion vector, half-pixel resolution, bilinear interpolation filter mode; and  
   encoding the predicted image using the selected motion vector mode.    
   
   
       39 . The method of  claim 38  further comprising signaling the selected motion vector mode in a bit stream.  
   
   
       40 . The method of  claim 39  wherein the bit stream is a frame-level bit stream.  
   
   
       41 . The method of  claim 39  wherein the bit stream is a slice-level bit stream.  
   
   
       42 . The method of  claim 39  wherein the bit stream is a group-of-pictures level bit stream.  
   
   
       43 . The method of  claim 38  wherein the set of plural motion vector modes further comprises a four-motion vector, ⅛-pixel, six-tap interpolation filter mode.  
   
   
       44 . In a computer system, a method of processing a video image in a video image sequence, wherein the video image is partitioned into sets of pixels, the method comprising: 
 finding a motion vector component value for a set of pixels, wherein the motion vector component value is within a bounded range;    finding a motion vector predictor component value for the set of pixels, wherein the motion vector predictor component value is within the bounded range;    calculating a differential motion vector component value based on the motion vector component value and the motion vector predictor component value; and    representing the differential motion vector component value with a signed binary code in a bit stream, wherein the signed binary code is operable to allow reconstruction of the differential motion vector component value;    wherein the differential motion vector component value is outside the bounded range.    
   
   
       45 . The method of  claim 44  wherein the representing comprises performing rollover arithmetic to convert the differential motion vector component value into a signed binary code.  
   
   
       46 . The method of  claim 44  wherein a number of bits in the signed binary code varies based on motion data.  
   
   
       47 . The method of  claim 46  wherein the motion data comprises one or more of the following: motion vector component direction, motion vector resolution, motion vector range.  
   
   
       48 . A computer-readable medium storing computer-executable instructions for causing a video decoder programmed thereby to perform a method of reconstructing one or more video images in a video sequence, the method comprising: 
 decoding a set of pixels in an encoded bit stream, wherein decoding comprises: 
 receiving an extended motion vector code for the set of pixels, wherein the extended motion vector code reflects joint encoding of motion information together with information indicating whether the set of pixels is intra-coded or inter-coded and with a terminal symbol;  
 determining whether subsequent data for the set of pixels is included in the encoded bit stream based at least in part upon the extended motion vector code.  
   
   
   
       49 . The computer-readable medium of  claim 48  wherein the extended motion vector code indicates the set of pixels is skip-coded.  
   
   
       50 . The computer-readable medium of  claim 48  wherein the set of pixels is intra-coded, and wherein the motion information comprises a pseudo motion vector.  
   
   
       51 . The computer-readable medium of  claim 48  wherein the motion information comprises a motion vector for the set of pixels.  
   
   
       52 . The computer-readable medium of  claim 48  wherein the extended motion vector code is preceded in the bit stream by header information.  
   
   
       53 . The computer-readable medium of  claim 48  wherein the extended motion vector code is followed in the bit stream by a coded block pattern code.  
   
   
       54 . The computer-readable medium of  claim 48  wherein the determining is based on the terminal symbol.  
   
   
       55 . The computer-readable medium of  claim 48  wherein the set of pixels is a macroblock.  
   
   
       56 . The computer-readable medium of  claim 55  further comprising receiving a second extended motion vector code for the macroblock.  
   
   
       57 . The computer-readable medium of  claim 56  wherein the macroblock is a bi-directionally predicted macroblock.  
   
   
       58 . The computer-readable medium of  claim 56  wherein the macroblock is a field-coded interlace macroblock.  
   
   
       59 . The computer-readable medium of  claim 55  further comprising receiving an extended motion vector code for each block in the macroblock.  
   
   
       60 . The computer-readable medium of  claim 59  wherein the extended motion vector codes are preceded in the bit stream by a modified coded block pattern code.  
   
   
       61 . The computer-readable medium of  claim 55  wherein subsequent data for the macroblock is included in the encoded bit stream, and wherein the subsequent data comprises a coded block pattern code for the macroblock.  
   
   
       62 . The computer-readable medium of  claim 61  wherein the coded block patter code comprises six bits, wherein coded block pattern code is selected from a coded block pattern code table, and wherein the coded block pattern table lacks an entry where all six bits are equal to zero.  
   
   
       63 . The computer-readable medium of  claim 61  wherein the subsequent data further comprises residual information for one or more blocks in the macroblock.  
   
   
       64 . The computer-readable medium of  claim 55  wherein the macroblock includes four blocks each comprising an 8×8 array of luminance pixels, and two blocks each comprising an 8×8 array of chrominance pixels.  
   
   
       65 . The computer-readable medium of  claim 55  wherein the macroblock includes four blocks each comprising an 8×8 array of luminance pixels, and four blocks each comprising a 4×8 array of chrominance pixels.  
   
   
       66 . The computer-readable medium of  claim 55  wherein the macroblock includes four blocks each comprising an 8×8 array of luminance pixels, and four blocks each comprising an 8×8 array of chrominance pixels.  
   
   
       67 . The computer-readable medium of  claim 48  wherein the extended motion vector code is a variable-length code.  
   
   
       68 . The computer-readable medium of  claim 48  wherein the extended motion vector code is different depending on whether the set of pixels in intra-coded.  
   
   
       69 . A computer system comprising: 
 means for decoding one or more video images in a video image sequence, wherein the one or more video images comprise sets of pixels, and wherein the means for decoding comprises: 
 means for receiving an extended motion vector code for a set of pixels, wherein the extended motion vector code reflects joint encoding of motion information together with information indicating whether the set of pixels is intra-coded or inter-coded and with a terminal symbol; and  
 means for determining whether subsequent data for the set of pixels is included in the encoded bit stream based at least in part upon the received extended motion vector code.  
   
   
   
       70 . A computer system comprising: 
 means for encoding one or more video images in a video image sequence, wherein the one or more video images comprise sets of pixels, and wherein the means for encoding comprises: 
 means for sending an extended motion vector code for a set of pixels as part of an encoded bit stream, wherein the extended motion vector code reflects joint encoding of motion information together with information indicating whether the set of pixels is intra-coded or inter-coded and with a terminal symbol, and wherein the terminal symbol indicates whether subsequent data for the set of pixels is included in the encoded bit stream.

Join the waitlist — get patent alerts

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

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