Re: New paper on motion compensation

Lourens Veen <[email protected]> Fri, 26 Jul 2002 13:30:40 +0200
Newsgroups gmane.comp.multimedia.ogg.tarkin.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thursday 25 July 2002 22:52, Lourens Veen wrote:
> I just got this off Slashdot, so at least some of you probably
> already know, but here's a post for those who hadn't seen it yet,
> and ofcourse for discussion of the used techniques.

Well, I've read some more and while I haven't really studied the 
math very hard, it does look promising indeed. The authors describe 
an algorithm that is meant to take a sequence of partially 
overlapping frames shot by a stationary camera that is free to 
zoom, rotate, pan and tilt, transform them all to a single 
coordinate system, and then combines all the images to create a 
single high-resolution image. If the object displayed is planar (ie 
a flat face) the camera is also allowed to move. Furthermore the 
algorithm is pretty robust; small violations of these rules still 
give good results, and according to the paper it can be implemented 
quite efficiently. Page 25 in the aforementioned paper shows a nice 
example of the technology at work. Another interesting result is at 
the top of page 28. Finally, there is GPLled code available on 
sourceforge (http://comparametric.sourceforge.net/), I'll have a 
look at that soon as well.

So, how to use this in video compression? Assuming a static scene 
for a moment (ie no moving objects, as in the image on page 25), we 
could throw the image sequence through this algorithm, wavelet or 
simply JPEG compress the resulting high-res image, and for each 
frame store the 8 floats that describe the transformation from our 
source image to the frame at hand. Using texture mapping hardware 
this costs about 0 CPU to play back. Seeking would not require 
playing back from the last keyframe, since once you have the 
high-res image any frame based on it can be rendered at once.

However, most scenes feature moving objects. The image at the top of 
page 28 in the paper shows what happens then. Big mess, if you want 
to use it in the way I described above. However, once you have 
overlapping frames, it's trivial to find areas that don't match up. 
These areas could be masked out according to a majority rule (ie in 
that image, if there are 5 frames showing grass, and 1 frame 
showing a player, the codec decides it's grass). After transforming 
this mask back to the video frames, we can split the frames into 
objects, which can then be pushed through the algorithm again to 
yield a separate high-res image for each object, and a separate 
bunch of transformations for each object. A frame then consists of 
a list of objects and a set of masks (which could be RLE 
compressed, or perhaps a zerotree-encoded quadtree is more 
efficient) where each object is a reference to a high-res image and 
a set of transformation coefficients.

This splitting up into objects might also remove the problem of a 
moving camera, if the objects are sufficiently similar to planar 
surfaces.

So, what do you think?

Lourens
- -- 
GPG public key: http://home.student.utwente.nl/l.e.veen/lourens.key
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE9QTLvvmNyqZHWDvURAhV9AKCwFWfKb0gTlezJRoxGU4XySN68lACfUIIQ
RsJYW8GJgXdV7GEi9tBk5Bc=
=3Fta
-----END PGP SIGNATURE-----


--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to '[email protected]'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.