View Full Version : VirtualDub-like "blend" deinterlace...
vkamicht
17th September 2006, 04:35
Hello everyone. For my intents and purposes, rather than a "real" deinterlace method I'm finding that VirtualDub's default blend deinterlace works very well for my video in question and compresses nicely. (I did doubleweave then applied the blend filter, so it's 60 fps)
However when inspecting the areas on screen that were interlaced I can see what almost looks like jagged edges from interpolation...
Also what I've been trying lately is EEDI2 interpolation which also happens to work very nicely with the video in question.
First of all, can someone even tell me how VD's blend deinterlace works?
I tried to create my own blend using avisynth but I couldn't find a real way to average the two frames together or anything, as that's how I initially thought it was done. In the end I had a script which split the fields, used EEDI2 on each, doubleweaved them back together (so it was at about 640x960 at that point) then bicubic resized it back to 640x480. This worked *somewhat* but the areas which should be clean (static areas) ended up looking a bit off because of the individual interpolation performed. VD's blend blurs these but they still look clean in comparison.
Still new to some of this stuff so excuse me if I got some terms wrong. Anyone understand what I'm trying to do here? :)
Thanks for the help...
foxyshadis
17th September 2006, 06:33
Blend deinterlace is a vertical (1,2,1) kernel, which means each line is blended vertically with its neighbors, to give a decent impersonation of two whole frames blended. You can simulate it in avisynth with mt_convolution("1","1 2 1",chroma="process") from masktools. But if you think it looks good for the speed, you need to try leakkernelbob, smoothdeinterlace, or tdeint. (LeakKernelBob should be even faster than the virtaldub plugin, though it's more complex.)
The reason you're having trouble with EEDI2 is that you're using it wrong; the proper usage is SeparateFields().EEDI2(field=-2), which properly bobs it based on the field order. Use AssumeTFF/BFF beforehand if it still bobs up and down. (One will be correct.)
If you have enough time for EEDI2, I really suggest you look at mvbob's SecureDeint; it's based on EEDI2 but works better at keeping even more original detail, with little slowdown. The full mvbob, however, is twice as slow, but even more detailed and artifact-free still.
Chainmax
17th September 2006, 07:03
I thought that the current recommendation for same rate deinterlacing was
For TFF Clips:
Interp = SeparateFields().SelectEven().EEDI2(field=1)
TDeint(order=1,field=1,edeint=Interp)
For BFF Clips:
Interp = SeparateFields().SelectEven().EEDI2(field=0)
TDeint(order=0,field=0,edeint=Interp)
Besides, isn't SecureDeint a bobber?
foxyshadis
17th September 2006, 07:19
He said he bobbed his video, so I recommended bobbers.
There's no good reason to carry around two different field order versions of that, you only need one for bobbing and one for same-rate, with field=-1 or -2. (And tdeint's field/order on automatic.) Anyway, I've come to have more confidence in securedeint - perhaps I just trust scharfis more - especially given their extremely similar performance characteristics.
1000 frames of TDeint/EEDI2 for bobbing: 2:11
1000 frames of SecureDeint: 2:08 (uses EEDI2 by default)
1000 frames of EEDI2 alone: 1:57 (obviously the bottleneck)
Same video segment each run, it had very soft and very hard parts. Some big slowdowns in the last 400 frames. The same-rate numbers are roughly the same, a little higher actually, as you'd expect.
Chainmax
17th September 2006, 07:29
He said he bobbed his video, so I recommended bobbers.
...
I didn't read that. My bad :o.
vkamicht
17th September 2006, 13:21
Blend deinterlace is a vertical (1,2,1) kernel, which means each line is blended vertically with its neighbors, to give a decent impersonation of two whole frames blended. You can simulate it in avisynth with mt_convolution("1","1 2 1",chroma="process") from masktools. But if you think it looks good for the speed, you need to try leakkernelbob, smoothdeinterlace, or tdeint. (LeakKernelBob should be even faster than the virtaldub plugin, though it's more complex.)
The reason you're having trouble with EEDI2 is that you're using it wrong; the proper usage is SeparateFields().EEDI2(field=-2), which properly bobs it based on the field order. Use AssumeTFF/BFF beforehand if it still bobs up and down. (One will be correct.)
If you have enough time for EEDI2, I really suggest you look at mvbob's SecureDeint; it's based on EEDI2 but works better at keeping even more original detail, with little slowdown. The full mvbob, however, is twice as slow, but even more detailed and artifact-free still.
Thanks for the replies. I've already tried many of the deinterlacers you mentioned, but I have reasons not to use them. I'm using pretty high xvid compression and using one of those adds 5 mb alone to the video (and I'm talking about something that'll be around 20mb in the end, so it's a big chunk) Not to mention that with my video in question all of them are terrible at recognizing static lines on the screen and they create unneeded artifacts on those.
In any case I'm toying around with the Merge function right now and it may be what I was looking for, though the projected file size so far looks way bigger than I expected.
scharfis_brain
17th September 2006, 17:37
if you are looking strictly of blending but want to knock out the stairstepping, you may try this:
Assume?ff()
SeparateFields().EEDI2(field=-2)
Merge(last, last.deleteframe(0))
this will give you eedi interpolated bobbed & blended video.
affter333
31st December 2006, 12:16
if you are looking strictly of blending but want to knock out the stairstepping, you may try this:
Assume?ff()
SeparateFields().EEDI2(field=-2)
Merge(last, last.deleteframe(0))
this will give you eedi interpolated bobbed & blended video.
Hi: Your site is down
Where can I get the lastest MVbob ?
I searched for a while but couldn't find MVbob script..
thank !!
Chainmax
31st December 2006, 16:57
As a semi-related question: what would the speed and image quality differences between resizing to quarter resolution and just using SeparateFields().SelectEven/Odd() be? If the answer depends on the kind of resizing used, please specify.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.