View Full Version : Interpolating missing field, which is the best way?
hanfrunz
9th October 2004, 22:13
Hello everyone,
I often use this simple way of deinterlacing:
separatefields().selecteven().bicubicresize(720,576)
because i want to get a "filmlook". So my aim is not to have a deinterlacing to watch on a computermonitor. I want to see the result on an normal videomonitor or tv-set. Is there maybe a better way to do that with sharper results? I don't want to use both fields to interpolate, only the odd or even. So i would need a tool which interpolates the missing field only with the information of the other field. And it should look sharper on a tv-set as normal doubling the field.
Any ideas?
Manao
9th October 2004, 23:10
Try either Sangnom ( http://jourdan.madism.org/~manao/SangNom.zip ) or
TDeint ( http://forum.doom9.org/showthread.php?s=&threadid=82264 ).
Edit : but if you want t o watch it on an interlaced display, you should keep it interlaced.
hanfrunz
10th October 2004, 00:32
but if you want t o watch it on an interlaced display, you should keep it interlaced.
but i want that "filmlook", I like a second in 25 parts. 50 are too smooth for me...
Didée
10th October 2004, 10:06
In this (http://forum.doom9.org/showthread.php?s=&postid=553035#post553035) comparison SangNom wasn't all that brilliant in interpolating a missing field. TDeint & TomsMoComp did the job better. And the smoothest result was given by TDeint *plus* TomsMoComp with doubling the vertical resolution first.
But why do you throw away one field when it is available? The job of a normal deinterlacer is just that: take one field, use from the other field what is usable, and interpolate what's missing. The result is 25p (or 30p), just as you want, but with much better resolution in not-moving parts.
hanfrunz
16th October 2004, 19:28
Hello again,
i made a lot of tests the last days. I tried KernelDeint and TomsMoComp. Kerneldeint looks VERY good. TomsMoComp, sometimes adds very ugly artifacts (black or grey pixels). But my aim is to get a "filmlook". And this is not possible with these deinterlacers. I always had some parts of the picture with slow movements, clouds for example, which are not interlaced, because this movement is not detected. And so i still have this clean 50fps look. So i wrote a very simple deinterlacer myself, which just does this:
- throw away one field
- blend line n and n+2 together -> n+1
So one field stays untouched and sharp, the other field looks a little blurry, but this looks okay and better than:
separatefields().selecteven().bicubicresize(720,576)
or
separatefields().selecteven().pointresizeresize(720,576)
Is this a "standard" process or a new deinterlacer? If it is new, i will post the code...
hanfrunz
scharfis_brain
16th October 2004, 19:37
your method equals to:
separatefields().selecteven().bilinearresize(720,576)
or:
loadplugin("ibob.dll")
avisource("video.avi")
ibob().selecteven()
did you also tried those methods:
loadplugin("kerneldeint.dll")
avisource("video.avi")
kerneldeint(threshold=0,order=1or0)
loadplugin("tomsmocomp.dll")
avisource("video.avi")
separatefields().selectodd()
tomsmocomp(-1,-1,0) #or (-1,-1,1) for a softer result
all those methods will apply a dumb deinterlacing due to disable motion check, so there will be no more 50fps-look in near to static areas.
hanfrunz
16th October 2004, 21:20
Ahhh i see, i never had the idea to turn motioncompensation off.
I will check that!
hanfrunz
scharfis_brain
16th October 2004, 21:23
please do not mix up motion compensation with motion checking.
hanfrunz
16th October 2004, 22:21
mmmh if you use:
separatefields().selecteven().bilinearresize(720,576)
both fields are changed, see this script. With my filter one field is an exact copy of the source and the other is interpolated.
Or do i make a mistake here?
bars=colorbars(720,576)
ibars=bars.separatefields().selecteven().bilinearresize(720,576)
a=ibars.separatefields().selecteven()
b=ibars.separatefields().selectodd()
c=bars.separatefields().selecteven()
d=bars.separatefields().selectodd()
e=stackvertical( subtract(a,c), subtract(a,d) )
f=stackvertical( subtract(b,c), subtract(b,d) )
stackhorizontal( e, f )
hanfrunz
scharfis_brain
16th October 2004, 22:28
hm.. this may be the issue, you are receiving with all avisynth-internal resizers:
they seem to change all lines on size doubling to maintain the correct spatial position of the frames.
so, forget about that 1st method I described above. try the other three ones, to see, how they do perform for your needs.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.