[M4IF Technotes] Quarter pel interpolation
the_ether
the_ether btinternet.com
Wed Dec 12 23:28:30 EST 2001
I understand how to find the search area and how big it should be. I also
understand how to work out the half-pel samples.
What I don't understand is how to work out the qtr-pel samples. The
description in the ISO documentation seems to suggest that in qtr-pel mode,
the half-pel samples are calculated in a different way to non qtr-pel mode.
Nor do I understand the use of the filter coefficients.
The two books I have describe half-pel and then mention how wonderful 1/4
pel is, but neither explain how to implement it.
Can someone please explain how to calculate the samples?
Regards
graham
----- Original Message -----
From: "Vinod Kumar" <kmr iis.fhg.de>
To: "Biju Ravindran" <ravi_biju yahoo.com>
Cc: <technotes lists.m4if.org>
Sent: 11 December 2023 12:03
Subject: Re: [M4IF Technotes] Quarter pel interpolation
Hello Biju
I am forwarding a note by Gary Sullivan which helped me implement the
quarter-sample interpolation
Thanx Gary
" I think some concrete examples are in order.
Here are four. Consider macroblock (i,j) having
its upper left corner at (x,y) position
(i*16, j*16) in the current picture.
Example 1: (MVx, MVy) = (5.25, 0.25)
The integer part of the MV is (5, 0)
The components of the MV are positive, so
the area needed is biased to the right
and below the area needed for the integer MV.
Thus the area needed in the reference picture
is the 16x16 area having its upper left
corner at position (i*16+5, j*16), plus one extra
column to the right and one extra row below
that area. Thus the area needed in the
reference picture is the 17x17 area having
its upper left corner at position (i*16+5, j*16).
Example 2: (MVx, MVy) = (-5.25, -0.25)
The integer part of the MV is (-5, 0)
The components of the MV are negative, so
the area needed is biased to the left
and above the area needed for the integer MV.
Thus the area needed in the reference picture
is the 16x16 area having its upper left
corner at position (i+16-5, j*16), plus one extra
column to the left and one extra row above
that area. Thus the area needed in the
reference picture is the 17x17 area having
its upper left corner at position (i*16-6, j*16-1).
Example 3: (MVx, MVy) = (5.25, -0.25)
The area needed in the reference picture is
the 17x17 area having its upper left corner
at position (i*16+5, j*16-1).
Example 4: (MVx, MVy) = (-5.25, 0.25)
The area needed in the reference picture is
the 17x17 area having its upper left corner
at position (i*16-6, j*16).
The same is true whether quarter pel or half pel
motion is in use.
Perhaps this could have been explained better
by saying to get an integer motion vector by
rounding the position toward negative infinity
and then grabbing a 17x17 area starting from there.
-Gary S. "
Hope this helps
Biju Ravindran wrote:
>
> Hi All,
> Could any body give a brief description about
> how the quarter pel interpolation is done in Mpeg-4
> for motion compensation?
>
> =====
> ciao,
> -biju
>
> __________________________________________________
> Do You Yahoo!?
> Check out Yahoo! Shopping and Yahoo! Auctions for all of
> your unique holiday gifts! Buy at http://shopping.yahoo.com
> or bid at http://auctions.yahoo.com
> _______________________________________________
> Technotes mailing list
> Technotes lists.m4if.org
> http://lists.m4if.org/mailman/listinfo/technotes
--
Vinod Kumar MV
Research Engineer
Video Coding Group
Fraunhofer Institut für Integrierte Schaltungen
Am Weichselgarten 3, D-91058 Erlangen,
Phone : +49 (0) 9131 / 776 363
Fax : +49 (0) 9131 / 776 999
_______________________________________________
Technotes mailing list
Technotes lists.m4if.org
http://lists.m4if.org/mailman/listinfo/technotes
More information about the Mp4-tech
mailing list