the basic idea of my codec

Maciek UrbaƄski <[email protected]> Thu, 20 Jun 2002 09:46:35 +0200
Newsgroups gmane.comp.multimedia.ogg.tarkin.devel
Message-ID <000901c2182e$9b88ef00$3000a8c0@limdul>
Prelude: I'm writing this after reading large amounts of PS and PDF files,
with few very interesting and other - just a wild mathematican's babble. But
my ideas orginate in those few good papers, so the're worth mentioning. If
you don't understand what-the-heck-he's-writing-about - just check them up.
If oyu can't find them - drop me a note on my home adress [email protected] ,
and I'll mail them back to you. The papers are:

Adaptive Wavelet Transform via Lifting, (Roger Claypoole, Richard Baraniuk
and Robert Nowak (very clever adaptive, update-then-predict transform)
The Red-Black Wavelet Transform and the Lifting Scheme, Geert Uytterhoeven
and Adhemar Bultheel (the r-b wavelet transform)
A Perceptually Based Physical Error Metric for Realistic Image Synthesis
Maehesh Ramasubramanian, Sumanta N. Patanaik, Donald P. Greenberg (masking
in detail)

Some facts:
- predict step of 1D wavelet exploits coherency among 1D neighours of pixel
to predict it's value
- in 2D pixel has more neighbours than in 1D
- in 3D even more
- when small wavelet kernel is used in predict phase, prediction is bad for
smooth images, but good for rough ones
- when large wavelet kernel is used in predict phase, prediction is good for
smooth images, but bad for rough ones, additinally - quantization introduces
"ringing" effect around the edges
- we can perform predict-then-update wavelet transform or
update-then-predict transform
- masking functions (or images)  can be computed in hierarchical manner
(top-to-down)

Proposition:
Let's perform red-black wavelet transform with update then predict step
(only for red pixels). The update step would be a normal update step of
red-black transform. It sould be performed for all scales without performing
the predict step (leave the black-ones alone!). Then going form top to down
(reverse = enlarging picture each scale) we:
- calculate the masking coeficient per pixel from "averages" = red ones (per
pixel)
- evealuate, which predict kernel would best decorelate the "averages" = red
ones, and perform the update step on rest of data = black ones (thus
producing the "detail")
- quantize the "detail" according to masking coeficient

In this way:
- predict uses 2D or even 3D neighourhood (uses "averages" rather than
orginal signal, but this allows adaptivity)
- when signal is locally rough - small kernel is used
- when signal is locally smooth - large kernel is used
- quantization is done according to human visual system

pros:
- together with correct motion estimation, and performed in 3D should beat
the crap of MPEG, an such ;-)

cons:
- complicated and slow


...but computers are getting faster, and there is large enough amount of
MMX/MMX2/SSE/SSE2/AltiVEC-wizards around to make it faster. And computers
will be faster and faster, and the standard sohuld stand for a long time.
;-)

Well that's my idea.

Since i've got exam tomorrow, and a large paper to write, I will be doing
exactly nil with those ideas - for a week at least. After this - I'm going
to write a VirtualDub filter for experimenting with various kernels and
masking functions and adaptivitiy criterion. It will be 2D, and source will
be freely avaiable. Then if the idea will work - I will need some help with
per/pixel motion esitmation, and we can go 3D (well, 2D+T).

Comments and extensions are welcome.

Maciek


--- >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.