motion estimation and compensation for very low bitrate video coding
motion estimation and compensation for very low bitrate video coding
motion estimation and compensation for very low bitrate video coding
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
D.2 Pseudo-code of the implementation 201<br />
// normal case<br />
else<br />
{<br />
(*current).feature = O;<br />
// next point<br />
(*current).next = new point;<br />
(*(*current).next).contour = num;<br />
(*(*current).next).vpos = posv;<br />
(*(*current).next).hpos = posh;<br />
(*(*current).next).next = NULL;<br />
(*(*current).next).previous = current;<br />
return track_<strong>for</strong>ward(edged,type,typer,num,pDouble,pTraced,<br />
(*current).next);<br />
}<br />
}<br />
else<br />
// the point is a gap<br />
{<br />
(*current).feature = G;<br />
// no next point<br />
(*current).next = NULL;<br />
return G;<br />
}<br />
return 0;<br />
}<br />
/* Recursive tracking of half-boundaries in backwardd direction */<br />
short track_backward(contour *edged,short type,short typer,short num,<br />
picture pDouble, picture pTraced, Point current)<br />
{<br />
// similar to track_<strong>for</strong>ward routine but <strong>for</strong> the<br />
// (*current).previous point<br />
}<br />
D.2.3 Inverse Kriging System<br />
/* Determine the system matrix A <strong>and</strong> the solution vector B<br />
<strong>for</strong> the Inverse Kriging Interpolation, as exposed in Chapter 5 */<br />
determine_system(wireframe wF, <strong>motion</strong> mField, double **A, double *B);<br />
{<br />
// Initialization<br />
A = 0;<br />
<strong>for</strong> (e<strong>very</strong> block #i of the <strong>motion</strong> vector field)<br />
{<br />
/* Backwards <strong>motion</strong> field to be reversed<br />
Determine origin of the <strong>motion</strong> vector according to the<br />
center position (posv[i],posh[i]) of the block */<br />
VertOrigin = MaxVector+posv[i]+vertical_component(mField,i);<br />
HoriOrigin = MaxVector+posh[i]+horizontal_component(mField,i);<br />
/* Determine into wich triangle, made out of vertices<br />
(Top1V,Top1H), (Top2V,Top2H), <strong>and</strong> (Top3V,Top3H), is located<br />
the origin of the <strong>motion</strong> vector */