Coding of motion vector information
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-modified1 . 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.