U.S. patent application number 10/605882 was filed with the patent office on 2005-05-19 for apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof.
Invention is credited to Ju, Chi-Cheng.
Application Number | 20050105621 10/605882 |
Document ID | / |
Family ID | 34573095 |
Filed Date | 2005-05-19 |
United States Patent
Application |
20050105621 |
Kind Code |
A1 |
Ju, Chi-Cheng |
May 19, 2005 |
APPARATUS CAPABLE OF PERFORMING BOTH BLOCK-MATCHING MOTION
COMPENSATION AND GLOBAL MOTION COMPENSATION AND METHOD THEREOF
Abstract
An interpolation unit receives an incoming video bit stream
comprising a plurality of frames including first macroblocks
encoded using block-matching motion compensation and second
macroblocks encoded using global motion compensation. A translation
unit converts global motion parameters included in a current frame
of the incoming video bit stream into a global motion vector. The
interpolation unit performs luminance and chrominance interpolation
operations on each macroblock contained in each frame of the
incoming video bit stream. When processing a current macroblock, if
the current macroblock is encoded using global motion compensation,
the interpolation unit performs the luminance interpolation
operations according to the global motion vector at half-pel
resolution, and performs the chrominance interpolation operations
at quarter-pel resolution. If the current macroblock is encoded
using block-matching motion compensation, the interpolation unit
performs the luminance and chrominance interpolation operations
according to the macroblock motion vector contained in the current
macroblock at half-pel resolution.
Inventors: |
Ju, Chi-Cheng; (Hsin-Chu
City, TW) |
Correspondence
Address: |
NORTH AMERICA INTERNATIONAL PATENT OFFICE (NAIPC)
P.O. BOX 506
MERRIFIELD
VA
22116
US
|
Family ID: |
34573095 |
Appl. No.: |
10/605882 |
Filed: |
November 4, 2003 |
Current U.S.
Class: |
375/240.17 ;
375/240.12; 375/240.16; 375/240.24; 375/E7.106; 375/E7.26 |
Current CPC
Class: |
H04N 19/527 20141101;
H04N 19/523 20141101 |
Class at
Publication: |
375/240.17 ;
375/240.16; 375/240.24; 375/240.12 |
International
Class: |
H04N 007/12 |
Claims
What is claimed is:
1. An apparatus for performing motion compensation when decoding an
incoming video bit stream including a plurality of frames having
first macroblocks encoded using block-matching motion compensation
and second macroblocks encoded using global motion compensation,
the apparatus comprising: an interpolation unit for performing
interpolation operations on each macroblock contained in each frame
of the incoming video stream; wherein when processing a current
macroblock, if the current macroblock is encoded using global
motion compensation, the interpolation unit performs the
interpolation operations according to a global motion vector on a
per-macroblock basis.
2. The apparatus of claim 1, further comprising a translation unit
for converting global motion parameters associated with a current
frame of the incoming video stream into the global motion vector
for use by the interpolation unit.
3. The apparatus of claim 2, wherein when processing the current
macroblock, if the current macroblock is encoded using
block-matching motion compensation, the interpolation unit performs
the interpolation operations according to at least one macroblock
motion vector contained in the current macroblock.
4. The apparatus of claim 3, further comprising: a block-matching
motion vector storage unit for storing the macroblock motion vector
extracted from each macroblock encoded using block-matching motion
compensation; a global motion vector storage unit for storing the
global motion vector output by the translation unit; and a
multiplexer for selecting whether the interpolation unit uses the
macroblock motion vector or the global motion vector; wherein when
performing the interpolation operations on macroblocks encoded
using block-matching motion compensation, the multiplexer outputs
the macroblock motion vector stored in the macroblock motion vector
storage unit to the interpolation unit, and when performing the
interpolation operations on macroblocks encoded using global motion
compensation, the multiplexer outputs the global motion vector
stored in the global motion vector storage unit to the
interpolation unit.
5. The apparatus of claim 1, wherein the interpolation operations
comprise luminance and chrominance interpolation operations.
6. The apparatus of claim 5, wherein when performing the luminance
interpolation operations on macroblocks encoded using
block-matching motion compensation, the interpolation unit uses
half-pel precision.
7. The apparatus of claim 5, wherein when performing the
chrominance interpolation operations on macroblocks encoded using
block-matching motion compensation, the interpolation unit uses
half-pel precision.
8. The apparatus of claim 5, wherein when performing the luminance
interpolation operations on macroblocks encoded using global motion
compensation, the interpolation unit uses half-pel precision.
9. The apparatus of claim 5, wherein when performing the
chrominance interpolation operations on macroblocks encoded using
global matching compensation, the interpolation unit uses
quarter-pel precision.
10. The apparatus of claim 1, wherein the video decoder is capable
of processing an incoming MPEG-4 video stream.
11. The apparatus of claim 10, wherein the video decoder is capable
of processing an incoming MPEG-4 video stream having a
no_of_sprite_warping_point parameter set to either 0 or 1.
12. The apparatus of claim 1, wherein when performing the
interpolation operations, the interpolation unit uses a bilinear
interpolation process.
13. A method of processing an incoming video bit stream comprising
a plurality of frames, the plurality of frames including first
macroblocks encoded using block-matching motion compensation and
second macroblocks encoded using global motion compensation, the
video bit stream including macroblock motion vectors indicating
motion vectors of the first macroblocks and global motion
parameters associated with the plurality of frames indicating a
motion vector of each pixel in the second macroblocks, the method
comprising: if a current macroblock is encoded using global motion
compensation, performing the interpolation operations according to
a global motion vector which is derived from the video bit stream
and is in a form substantially identical to that of the macroblock
motion vector.
14. The method of claim 13, further comprising converting global
motion parameters associated with a current frame of the incoming
video stream into the global motion vector.
15. The method of claim 13, further comprising if the current
macroblock is encoded using block-matching motion compensation,
performing the interpolation operations according to a macroblock
motion vector contained in the current macroblock.
16. The method of claim 13, wherein the interpolation operations
comprise luminance and chrominance interpolation operations.
17. The method of claim 16, wherein when performing the luminance
interpolation operations on macroblocks encoded using
block-matching motion compensation, using half-pel precision.
18. The method of claim 16, wherein when performing the chrominance
interpolation operations on macroblocks encoded using
block-matching motion compensation, using half-pel precision.
19. The method of claim 16, wherein when performing the luminance
interpolation operations on macroblocks encoded using global motion
compensation, using half-pel precision.
20. The method of claim 16, wherein when performing the chrominance
interpolation operations on macroblocks encoded using global
matching compensation, using quarter-pel precision.
21. The method of claim 13, wherein the method is capable of
processing an incoming MPEG-4 video stream.
22. The method of claim 13, wherein the method is capable of
processing an incoming MPEG-4 video stream having a
no_of_sprite_warping_point parameter set to either 0 or 1.
23. The method of claim 13, wherein when performing the
interpolation operations, using a bilinear interpolation
process.
24. A predicted image synthesizer in a video decoder for decoding a
video bit stream and generating a predicted image, the video bit
stream including a plurality of frames having first macroblocks
encoded using block-matching compensation and second macroblocks
encoded using global motion compensation, the video bit stream
including macroblock motion vectors indicating motion vectors of
the first macroblocks and global motion parameters associated with
the plurality of frames indicating a motion vector of each pixel in
the second macroblocks, the predicted image synthesizer comprising:
a translation unit receiving the global motion parameters, and
translating the global motion parameters into a global motion
vector which is in a form substantially identical to that of the
macroblock motion vector, and a interpolation unit for receiving a
decoded image which is a previously decoded frame, receiving the
global motion vector, performing interpolation operations, and
generating the prediction image.
25. The predicted image synthesizer of claim 24, further comprising
a demultiplexer receiving the macroblock motion vectors and global
motion parameters, and respectively outputting the macroblock
motion vectors and the global motion parameters, the global motion
parameters are sent to the translation unit and translated into a
global motion vector which is in a form substantially identical to
that of the macroblock motion vector, and the interpolation unit
selectively receiving the macroblock motion vector or the global
motion vector to perform the interpolation operations.
26. The predicted image synthesizer of claim 25, wherein the
interpolation unit receives the global motion vector when a current
macroblock is encoded using global motion compensation.
27. The predicted image synthesizer of claim 25, wherein the
interpolation operations include a luminance interpolation
operation and a chrominance interpolation operation, the
interpolation unit uses a first resolution to perform the luminance
interpolation operation and uses a second resolution to perform the
chrominance interpolation operation.
28. The predicted image synthesizer of claim 27, wherein the first
resolution is a half-pel resolution, and the second resolution is a
quarter-pel resolution.
29. The predicted image synthesizer of claim 25, wherein the
interpolation unit receives the macroblock motion vector when a
current macroblock is encoded using block-matching motion
compensation.
30. The predicted image synthesizer of claim 29, wherein the
interpolation operations include a luminance interpolation
operation and a chrominance interpolation operation, and the
interpolation unit uses a half-pel resolution to perform both the
luminance interpolation operation and the chrominance interpolation
operation.
31. The predicted image synthesizer of claim 30, wherein when
performing the interpolation operations, the interpolation unit
uses a bilinear interpolation process.
Description
BACKGROUND OF INVENTION
[0001] 1. Field of the Invention
[0002] The invention relates to digital video, and more
particularly, to decoding a coded video bit stream having both
macroblocks encoded using block-matching motion compensation and
macroblocks encoded using global motion compensation.
[0003] 2. Description of the Prior Art
[0004] Full-motion video displays using analog video signals have
long been available in the form of television. With recent advances
in computer processing capabilities and affordability, full-motion
video displays using digital video signals are becoming more widely
available. Digital video systems provide significant improvements
over conventional analog video systems in creating, modifying,
transmitting, storing, and playing full-motion video sequences.
[0005] However, the amounts of raw digital information included in
video sequences are massive. Storage and transmission of these
amounts of video information is infeasible with conventional
personal computer equipment. Consider, for example, a digitized
form of a relatively low resolution VHS image format having a
320.times.480 pixel resolution. A full-length motion picture of two
hours in duration at this resolution corresponds to 100 gigabytes
of digital video information. By comparison, conventional CD-ROM
disks have capacities of about 0.7 gigabytes, and DVD disks have
capacities of up to 8 gigabytes.
[0006] To address the limitations in storing and transmitting such
massive amounts of digital video information, various video
compression standards or processes have been established, including
MPEG-1, MPEG-2, MPEG-4, and H.26X. These video compression
techniques utilize still image compression techniques, referred to
as intraframe correlation, of the individual image frames as well
as similarities between successive image frames, referred to as
interframe correlation, to encode the digital video information and
provide a high compression ratio.
[0007] Block-matching (BM) motion compensation is a technique well
known in the prior art for encoding digital video information. If
an image sequence shows moving objects, then their motion within
the sequence can be used to create a motion vector for a particular
block containing the moving object, also referred to as a
macroblock. This motion vector can be used to predict where the
macroblock will be later in the sequence. Instead of transmitting a
new image, the motion vectors for macroblocks containing the moving
objects can be sent instead. Block-matching motion compensation
greatly reduces the data that must be transmitted for image
sequences containing moving objects. However, when the whole image
is panning, expanding, contracting, or turning, the motion vectors
of all of macroblocks must be transmitted, greatly decreasing the
coding efficiency. To solve this problem, global motion
compensation (GMC) techniques are well known in the prior art, such
as the "sprite" coding techniques used in MPEG-4 (i.e. ISO/IEC
14496-2). These global motion compensation techniques take into
account global image changes between a previous frame and the
current frame. Global motion parameters associated with each frame
are used to specify individual motion vectors for all pixels in
each macroblocks encoded using global motion compensation. In this
way, only one set of global motion parameters is required for each
frame, increasing the encoding efficiency for video sequences
having global image changes.
[0008] FIG. 1 shows a typical video decoder 100 according to the
prior art as disclosed in U.S. Pat. No. 6,483,877. The video
decoder 100 receives a incoming coded video bit stream 102 that is
separated through a demultiplexer 104 into quantized discrete
cosine transform (DCT) coefficients 106, macroblock motion vector
and global motion parameters 108, and an intraframe/interframe
distinction flag 110. The quantized DCT coefficient 106 is decoded
into an error image 116 through an inverse quantizer 112 and an
inverse DCT processor 114. An output image 118 of an
interframe/intraframe switching unit 120 is added to the error
image 116 through an adder 122 to form a reconstructed image
124.
[0009] The interframe/intraframe switching unit 120 switches its
output 118 according to the interframe/intraframe coding
distinction flag 110. A predicted image synthesizer 126 synthesizes
a predicted image 128 that is used for executing the interframe
coding. The predicted image synthesizer 126 performs motion
compensation operation and fetches prediction blocks from at least
one decoded image 130, which is a previously decoded frame stored
in a frame memory 128. The predicted image synthesizer 126 performs
either block-matching motion compensation or global motion
compensation according to the encoding type used for a particular
macroblock. In the case of intraframe coding, the
interframe/intraframe switching unit 120 outputs the "0" signal 132
and the output of the predicted image synthesizer 126 is not
used.
[0010] FIG. 2 shows a more detailed block diagram of the predicted
image synthesizer 126 of FIG. 1 according to the prior art. The
predicted image synthesizer 126 processes global motion
compensation and block matching motion compensation in parallel.
The macroblock motion vector and global motion parameters 108 are
input to a demultiplexer 202, which provides global motion
parameters 204, a macroblock motion vector 206, and a selection
signal 208 specifying block matching/global motion compensation to
a GMC image synthesizer 210, a BM image synthesizer 212, and a
switch 214, respectively. The BM image synthesizer 212 synthesizes
the predicted image for blocks that are encoded using
block-matching motion compensation, and the GMC image synthesizer
210 synthesizes the predicted image for blocks that are encoded
using global motion compensation. The respective predicted image
data 216 and 218are output to the switch 214, which selects one of
these signals according to the selection signal 208, received from
the demultiplexer 202. The predicted image 128 is then output to
the switching unit 120, as shown in FIG. 1.
[0011] As can be seen from the above description, video decoders
supporting both block-matching motion compensation and global
motion compensation require the use of two different image
synthesizers. A first image synthesizer 212 is used for
block-matching motion compensation, and a second image synthesizer
210 is used for global motion compensation. When processing blocks
encoded using block-matching image compensation, the GMC image
synthesizer 210 is idle. Likewise, when processing blocks encoded
using global motion compensation, the BM image synthesizer 212 is
idle. This non-optimal solution of requiring two image synthesizers
increases the hardware complexity of the video decoder and results
in a higher cost. It would be beneficial to combine the
functionality of the GMC synthesizer 210 and the BM synthesizer 212
into an integrated unit.
SUMMARY OF INVENTION
[0012] It is therefore an objective of the invention to provide an
apparatus capable of performing motion compensation for both
macroblocks encoded with block-matching and macroblocks encoded
with global motion compensation, to solve the above-mentioned
problems.
[0013] According to one embodiment of the invention, an apparatus
is disclosed for performing motion compensation. The apparatus is
capable of decoding an incoming coded video bit stream including a
plurality of frames. Each frame may include macroblocks encoded
using block-matching motion compensation and/or macroblocks encoded
using global motion compensation. The apparatus further includes an
interpolation unit. The interpolation unit performs interpolation
operations on each macroblock encoded with block-matching or global
motion compensation in each frame of the incoming coded video bit
stream. When processing a current macroblock, if the current
macroblock is encoded using global motion compensation, the
interpolation unit performs the interpolation operations according
to a global motion vector translated from the global motion
parameters.
[0014] Also according to the present invention, a predicted image
synthesizer in a video decoder is disclosed for decoding a video
bit stream and generating a predicted image. The video bit stream
includes a plurality of frames having first macroblocks encoded
using block-matching compensation and second macroblocks encoded
using global motion compensation. The video bit stream includes
macroblock motion vectors indicating motion vectors of the first
macroblocks and global motion parameters associated with the
plurality of frames indicating a motion vector of each pixel in the
second macroblocks. The predicted image synthesizer comprises a
translation unit receiving the global motion parameters, and
translating the global motion parameters into a global motion
vector which is in a form substantially identical to that of the
macroblock motion vector, and a interpolation unit for receiving at
least one prediction block in a decoded image 130, which is a
previously decoded frame, receiving the global motion vector,
performing interpolation operations, and generating the prediction
image.
[0015] These and other objectives of the claimed invention will
become obvious to those of ordinary skill in the art after reading
the following detailed description of the preferred embodiment that
is illustrated in the various figures and drawings.
BRIEF DESCRIPTION OF DRAWINGS
[0016] FIG. 1 is a typical video decoder according to the prior
art.
[0017] FIG. 2 is a block diagram of the predicted image synthesizer
of FIG. 1 according to the prior art.
[0018] FIG. 3 is a block diagram of a predicted image synthesizer
according to the present invention.
[0019] FIG. 4 is a diagram showing half-pel (half pixel)
interpolation for luminance and chrominance block-matching
compensation performed by the predicted image synthesizer of FIG.
3.
[0020] FIG. 5 is a matrix showing half-pel (half pixel)
interpolation for the diagram of FIG. 4.
[0021] FIG. 6 is a diagram showing global motion compensation
according to the prior art.
[0022] FIG. 7 is a matrix showing half-pel (half pixel)
interpolation for luminance global motion compensation performed by
the predicted image synthesizer of FIG. 3.
[0023] FIG. 8 is a matrix showing quarter-pel (quarter pixel)
interpolation for chrominance global motion compensation performed
by the predicted image synthesizer of FIG. 3.
[0024] FIG. 9 is a flowchart describing a method of processing an
incoming coded video bit stream including a plurality of frames
according to the present invention.
DETAILED DESCRIPTION
[0025] FIG. 3 is a block diagram of a predicted image synthesizer
300 according to the present invention. The predicted image
synthesizer 300 can be used in a video decoder such as the video
decoder 100 shown in FIG. 1. In FIG. 3, all signals that contain
the same information as signals in FIG. 1 are labeled using the
same numerical labels as in FIG. 1. The predicted image synthesizer
300 includes a demultiplexer 302, a translation unit 304, a
macroblock MV (motion vector) storage unit 306, a global MV (motion
vector) storage unit 308, a switching unit 310, and an
interpolation unit 312. The demultiplexer 302 receives the
macroblock motion vector and the global motion parameters 108
derived from the incoming coded video bit stream. At the beginning
of each frame, the global motion parameters 307 are passed to the
translation unit 304. The translation unit 304 converts the global
motion parameters 307 into a global motion vector for luminance
(luminance global motion vector) and a global motion vector for
chrominance (chrominance global motion vector). The luminance
global motion vector and the chrominance global motion vector can
be used during interpolation operations at the macroblock level for
all macroblocks encoded using global motion compensation throughout
the frame. The luminance global motion vector and the chrominance
global motion vector are stored in the global MV storage unit 308.
For all macroblocks that are encoded using block-matching motion
compensation, at least one macroblock motion vector is included
within the macroblock. The macroblock motion vector 305 is
contained within the macroblock motion vectors and global motion
parameters 108, and is passed to the predicted image synthesizer
300. The macroblock motion vector 305 is then stored in the
macroblock MV storage unit 306. According to the MPEG-4
specification, the macroblock motion vector 305 is actually a
macroblock motion vector for luminance (luminance macroblock motion
vector). A macroblock motion vector for chrominance (chrominance
macroblock motion vector) can be obtained by performing calculation
on the luminance macroblock motion vector. To save the space of the
Macroblock MV storage 306, only the macroblock motion vector 305
(that is, the luminance macroblock motion vector) is stored in the
Macroblock MV storage 306. The chrominance macroblock motion vector
will be calculated and obtained in the Interpolation unit 312 in
this embodiment. It should be noted that the macroblock MV storage
unit 306 may also be replaced by a straight connection to the
switching unit 310 in another embodiment of the present invention.
The switching unit 310 is used to either pass the macroblock motion
vector from the Macroblock MV storage 306 or the
luminance/chrominance global motion vector from the global MV
storage unit 308 to the interpolation unit 312 according to the
motion compensation type 316.
[0026] The interpolation unit 312 reads at least one prediction
block in a decoded image 130, and the location of the prediction
block in the decoded image is determined by the motion vector 314
received from the switching unit 310. The interpolation unit 312
then performs both luminance and chrominance interpolation
operations of the corresponding prediction block. The received
motion vector 314 may be the macroblock motion vector retrieved
from the macroblock MV storage unit 306 or the
luminance/chrominance global motion vector retrieved from the
global MV storage unit 308. The interpolation unit 312 receives the
decoded image 130 and the motion vector 314, performs interpolation
operations, and outputs a predicted image 128 that is used for
executing the inter-frame coding in a video decoder such as the
video decoder 100 shown in FIG. 1. The interpolation unit 312 may
further include a buffer 313 for temporarily storing the
interpolation operation result corresponding to the different
macroblock motion vectors in a macroblock so as to properly perform
the interpolation operations of a macroblock. For example, when
performing bi-directional interpolation for a block matching
macroblock, the interpolation unit 312 may temporarily store the
forward prediction interpolation result in the buffer 313, combine
with the later backward prediction interpolation result, and then
obtain the final bi-directional interpolation result.
[0027] To further explain the luminance and chrominance
interpolation operations performed by the interpolation unit 312,
please refer to FIG. 4 and FIG. 5. FIG. 4 is a diagram showing
half-pel (half pixel) interpolation for luminance and chrominance
block-matching compensation performed by the predicted image
synthesizer 300 of FIG. 3. FIG. 5 is a matrix showing the resulting
half-pel (half pixel) bilinear interpolation for the diagram of
FIG. 4. In FIG. 4 there are four integer pixel positions (A, B, C,
D), labeled in FIG. 5 as (I.sub.A, I.sub.B, I.sub.C, and I.sub.D),
as well as five half-pixel positions, labeled in FIG. 5 as
(H.sub.1, H.sub.2, H.sub.3, H.sub.4, H.sub.5). When performing
motion compensation for macroblocks encoded using block-matching
motion compensation, the present invention uses the same half-pel
(half pixel) bilinear interpolation process of the prior art. To
briefly describe the bilinear interpolation calculations, the
following formulas show the interpolation calculations for the
pixel positions: I.sub.A, H.sub.1, H.sub.2, and H.sub.3. (The
remaining pixel positions are calculated in the same manner, as is
well known in the prior art.)
I.sub.A=I.sub.A
H.sub.1=(I.sub.A+I.sub.B+1 rounding_control)/2
H.sub.2=(I.sub.A+I.sub.C+1 rounding_control)/2
H.sub.3=(I.sub.A+I.sub.B+I.sub.C+I.sub.D+2 rounding_control)/4
[0028] . . . , where the rounding_control parameter is a value of 0
or 1, and is derived from the incoming coded video bit stream.
[0029] FIG. 6 shows a diagram showing global motion compensation
according to the prior art. Global motion compensation according to
the prior art involves converting the global motion parameters into
an individual motion vector for each pixel in each macroblock
encoded using global motion compensation. In FIG. 6 there are again
four integer pixel positions (Y.sub.00, Y.sub.01, Y.sub.10, and
Y.sub.11) as well as a non-integer pixel position Y. The
non-integer pixel position Y has a vertical distance of (r.sub.j/s)
and a horizontal position of (r.sub.i/s), where s is specified by
sprite_warping_accuracy, as defined in the MPEG-4 (ISO/IEC 14496-2)
specification. The present invention takes advantage of the fact
that when the no_of_sprite_warping_point parameter in MPEG-4 is set
to a value of 0 or a value of 1, the global motion parameters can
be converted into a global motion vector having the same value for
all pixels in the frame. This means that instead of doing global
motion compensation on a per-pixel bases, as is done in the prior
art, the present invention can also perform global motion
compensation on a per-macroblock basis using a single motion vector
for each macroblock. In this way, almost the same hardware as is
used in the prior art BM image synthesizer 212 can be used to
perform both block-matching motion compensation and global motion
compensation in the present invention.
[0030] FIG. 7 shows a diagram illustrating half-pel (half pixel)
bilinear interpolation for luminance global motion compensation
performed by the interpolation unit 312 of FIG. 3. When the
no_of_sprite_warping_point parameter in MPEG-4 is set to a value of
0 or a value of 1, the luminance interpolation operations of FIG. 6
can be reduced to the matrix shown in FIG. 7. The matrix shown in
FIG. 7 is equivalent to the matrix shown in FIG. 5 and this implies
the luminance and chrominance interpolation operations for
block-matching compensation and the luminance interpolation
operations for global motion compensation can be performed using
the same interpolation unit 312 at a half-pel resolution.
[0031] FIG. 8 is a diagram showing quarter-pel (quarter pixel)
bilinear interpolation for chrominance global motion compensation
performed by the interpolation unit 312 of FIG. 3. When the
no_of_sprite_warping_point parameter in MPEG-4 is set to a value of
0 or a value of 1, the chrominance interpolation operations of FIG.
5 can be reduced to the matrix shown in FIG. 7. FIG. 7 is simply a
quarter-pel matrix which is solved using the same bilinear
interpolation process as the half-pel matrix but at twice the
resolution. To briefly describe the interpolation calculations at
quarter-pel, the following formulas show the interpolation
calculations for the pixel positions: I.sub.A, Q.sub.1, H.sub.2,
Q.sub.4, Q.sub.5, Q.sub.6, H.sub.9, Q.sub.10, and H.sub.11. (The
remaining pixel positions are calculated in the same manner.)
I.sub.A=I.sub.A
Q.sub.1=(3 I.sub.A+I.sub.B+2 rounding_control)/4
H.sub.2=(I.sub.A+I.sub.B+1 rounding_control)/2
Q.sub.4=(3 I.sub.A+I.sub.C+2 rounding_control)/4
Q.sub.5=(9 I.sub.A+3 I.sub.B+3 I.sub.C+I.sub.D+8
rounding_control)/16
Q.sub.6=(3 I.sub.A+3 I.sub.B+I.sub.C+I.sub.D+4
rounding_control)/8
H9=(I.sub.A+I.sub.C+1 rounding_control)/2
Q10=(3 I.sub.A+I.sub.B+3 I.sub.C+I.sub.D+4 rounding_control)/8
H11=(I.sub.A+I.sub.B+I.sub.C+I.sub.D+1 rounding_control)/4
[0032] . . . , where the rounding_-control parameter is a value of
0 or 1, and is derived from the incoming coded video bit
stream.
[0033] It should be noted that the translation unit 304 converts
the global motion parameters 307 received for each frame into a
luminance global motion vector and a chrominance global motion
vector for the frame. The following formulas describe the
conversion process implemented by the translation unit 304 to
covert the global motion parameters into the luminance/chrominance
global motion vectors used during interpolation operations for
macroblocks encoded using global motion compensation with
no_of_sprite_warping_point equal to 0 and
no_of_sprite_warping_point equal to 1, respectively. The luminance
global motion vector is a half-pel precision motion vector and the
chrominance global motion vector is a quarter-pel precision motion
vector. Hence, these macroblocks encoded using global motion
compensation can be treated as if they were block matching
macroblocks with prediction mode of "frame_prediction" and with the
following luminance/chrominance global motion vectors respectively
for the luminance/chrominance components.
[0034] For GMC macroblocks with (no_of_sprite_warping_point==0),
(sprite_enable==GMC), and
(video_object_layer_shape==rectangle):
MV.sup.GMC.sup..sub.--.sup.Y=(MV.sub.x.sup.GMC.sup..sub.--.sup.Y,
MV.sub.y.sup.GMC.sup..sub.--.sup.Y)=(0,0)
MV.sup.GMC.sup..sub.--.sup.CbCr=(MV.sub.x.sup.GMC.sup..sub.--.sup.CbCr,
MV.sub.y.sup.GMC.sup..sub.--.sup.CbCr)=(0,0)
[0035] For GMC macroblocks with (no_of_sprite_warping_point==1),
(sprite_enable==GMC), and
(video_object_layer_shape==rectangle"):
MV.sub.GMCY=(MV.sub.x.sup.GMCY, MV.sub.y.sup.GMCY)=(i.sub.0',
j.sub.0')=((s/2)du[0], (s/2)dv[0])
MV.sup.GMC.sup..sub.--.sup.CbCr=(MV.sub.x.sup.GMC.sup..sub.--.sup.CbCr,MV.-
sub.y.sup.GMC.sup..sub.--.sup.CbCr)=((i.sub.0'>>1).vertline.(i.sub.0-
'& 1),(j.sub.0'>>1).vertline.(j.sub.0'& 1))
where (i.sub.0',j.sub.0')=((s/2)du[0],(s/2)dv[0])
[0036] where du[0] and dv[0] are the global motion parameters
derived from the incoming coded video bit stream and s is specified
by sprite_warping_accuracy, as defined in the MPEG-4 (ISO/IEC
14496-2) specification.
[0037] It is noted that the above equations apply when
(no_of_sprite_warping_point==0 or 1), (sprite_enable==GMC), and
(video_object_layer_shape==rectangle). But the present invention
can also be used when the values of sprite_-enable and
video_object_layer_shape are different. People skilled in the art
will appreciate that as long as the (no_of_sprite_warping_point==0
or 1), this invention applies even when the values of sprite_enable
and video_object_layer_shape are different from the above and the
equations become different.
[0038] FIG. 9 shows a flowchart describing a method of processing
an incoming coded video bit stream comprising a plurality of frames
according to the present invention. Each frame may include a
plurality of macroblocks encoded using block-matching motion
compensation and/or a plurality of macroblocks encoded using global
motion compensation. The flowchart contains the following
steps:
[0039] Step 900: For each frame received in the incoming video
stream, convert the global motion parameters associated with the
frame into a luminance global motion vector and a chrominance
global motion vector. Store the luminance global motion vector and
the chrominance global motion vector for later global motion
compensation luminance/chrominance interpolation operations.
Proceed to step 902.
[0040] Step 902: When decoding a current macroblock, determine
whether the current macroblock is encoded using block-matching
motion compensation or global motion compensation. If
block-matching motion compensation, proceed to step 904, otherwise
if global motion compensation, proceed to step 908.
[0041] Step 904: Extract the macroblock motion vectors stored in
the current macroblock.
[0042] Step 906: Perform the luminance and chrominance bilinear
interpolation operations according to the macroblock motion vectors
extracted in step 904. Use a half-pel resolution for both luminance
and chrominance. Processing is complete.
[0043] Step 908: Perform the luminance bilinear interpolation
operation according to the luminance global motion vector stored in
step 900. Use half-pel resolution and proceed to step 910 when
finished.
[0044] Step 910: Perform the chrominance bilinear interpolation
operation according to the chrominance global motion vector stored
in step 900. Use quarter-pel resolution and when finished,
processing is complete.
[0045] In contrast to the prior art, the present invention performs
bilinear interpolation operations on macroblocks encoded using
global motion compensation according to a luminance global motion
vector and a chrominance global motion vector so that the
block-matching motion compensation and global motion compensation
can be integrated into a single unit. The luminance/chrominance
global motion vectors are converted from a set of global motion
parameters transmitted with each frame in the incoming coded video
bit stream. For an MPEG-4 compliant coded video bit stream having
GMC macroblocks with the no_of_sprite_warping_point parameter set
to either 0 or 1, the global motion compensation calculations can
be simplified to resemble the interpolations operations normally
performed for block-matching. The difference is that for the
chrominance interpolation operations for macroblocks encoded using
global motion compensation, a quarter-pel resolution is used. For
luminance and chrominance interpolation operations for macroblocks
encoded using block-matching motion compensation and for luminance
interpolation operations for macroblocks encoded using global
motion compensation, a half-pel resolution is used.
[0046] It should be noted that when a frame includes only
macroblocks encoded using block-matching motion compensation, there
may be no global motion parameters associated with the frame. In
such case, the present invention will not perform the conversion
process of converting the global motion parameters into a luminance
global motion vector and a chrominance global motion vector because
there are no global motion parameters associated with in the
frame.
[0047] Those skilled in the art will readily observe that numerous
modifications and alterations of the device may be made while
retaining the teachings of the invention. Accordingly, the above
disclosure should be construed as limited only by the metes and
bounds of the appended claims.
* * * * *