20.01.2013 Views

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

SHOW MORE
SHOW LESS

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 */

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!