[XviD-devel] image pre-processing

Marc FD xvid-devel@xvid.org
Thu, 5 Dec 2002 18:45:44 +0100


Hi ^^

i've some experience in image filtering,and i know how works 
many avisynth/VDub filters, so i think i'll start to do this part.

first, i've a question :

>> do we want encoder-independant denoising ??
+ cool for linux (and "joe") users
+ no additionnal compexity in encoder (just 1 call/frame)
+ cool stuff to add in interface ^^
- interface even bigger
- bigger source code/binaries

WARNING, it's not for compressibility !!
only to improve noisy source encoding.

if i do it, i think i'll go for a bunch of the best/faster spatial filters.
IMHO, temporal filtering is crap, i can explain why if you want.
but can we add 2 frame delay in encoding ? i like fast 3d filtering ^^

i'll of course add assembly for the more popular methods after.

now, the the good stuff : integrated pre-processing.
here's how i see it :

syskin's MEanalysis saves computed values (sad,dev) in mb array.
(even more values could be computed if it's needed)

then, we call the pre-processing engine after MEanalysis.
it uses all the data computed to evaluate the situation 
(panning, dissolve, low/mid/high motion, crispness, ect..)
BTW, we could even improve adaptive quantisation with.

then, for each situation, we begin to play.
for low-motion&pannings, nothing serious.... maybe early skip ?

for med/high-motion and dissolves, prefiltering is really
usefull. these pictures are going to be very bitrate-demanding,
and wouldn't be seen long. important too, quantization is NOT a
solution. why ? because there is too much data to compensate,
prediction is less accurate, and if we have a lot of motion, the errors
accumulated will make everything worse and worse...
let's filter the image a lot. many aspects are interessing :
we can blur or simplify the image. it's _not_ the same.
it's a matter of taste, lowpass blur looks bad but helps a lot
the encoder. simplification ("smart-blur", we avoid edges)
is less helping, but looks better. i like a mix of the two :  
removing details and adding a bit motion blur.

many other things can be done. we can improve quality at
all bitrates, and of course, the pre-processor can be fully
configurable, with presets, global values, ect...

sounds good, no ? ^^