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.