Log in

View Full Version : What do you use for Deinterlacing and/or IVTC postprocessing?


Chainmax
13th January 2004, 17:39
I've seen a lot of threads lately with alternate deinterlacing methods. I was mostly using KernelDeint as deinterlacer and postprocessor but reading those threads made me curious. What do you guys use and why?

Chainmax
17th January 2004, 00:07
Anyone?

Chainmax
20th January 2004, 18:48
:(

Xesdeeni
20th January 2004, 20:36
I'm a bit biased, but I use SmoothDeinterlacer (http://biphome.spray.se/gunnart/video/AVSPorts/SmoothDeinterlacer/) (2.5.x version (http://www.avisynth.org/warpenterprises/)) for deinterlacing and Decomb (http://neuron2.net/[/url]) (2.5.x version (http://www.avisynth.org/warpenterprises/)).

Xesdeeni

qwerpoi
20th January 2004, 20:54
For anime, I've recently been doing manual deinterlacing with some avisynth functions I made, simply because I was tired of trying to figure out if video imperfections were coming from bad deinterlacing or from bad dvd transfers (and it's not as time consuming as it might seem). But for all around stuff, it's hard to beat decomb 4 or 5. Basically, if I want total automation, I use decomb 4, and if I want to tweak something to perfection, I manually deinterlace it.

bilu
21st January 2004, 01:27
Haven't tried MarcFD's SangNom but it seems very cool :)

http://forum.doom9.org/showthread.php?s=&threadid=69052

Bilu

Chainmax
22nd January 2004, 00:06
What about scripts like SSTomsMoComp, TMCBob, funkyDeint et al? Does anyone use them?

Mug Funky
22nd January 2004, 14:17
well, naturally i use funkydeint :)

for postprocessing it uses a simple blur(0,1).blur(0,-1). doesn't change the output much - keeps (almost) all the detail except for combs which get 0wned...

i'd recommend TMCbob though - it's a little nicer. i only use funkydeint because i'm forever tweaking it (like adding in the new functions of overlay from the latest jan 15th binary, meaning i can maintain YV12 all the way through... YAY! layer is gone forever, and good riddance)

mf
22nd January 2004, 14:31
Hopefully, one day, I can use "Extreme field matching" :D. Till then, Decomb with overrides (next time gonna try YATTA).

Mug Funky
22nd January 2004, 14:35
mf: have you seen bilu's formula yet? i haven't tried it but it might make a painless substitute for YATTA

mf
22nd January 2004, 15:34
Originally posted by Mug Funky
mf: have you seen bilu's formula yet? i haven't tried it but it might make a painless substitute for YATTA
That was for decimating, not field matching :confused:

Mug Funky
22nd January 2004, 16:06
ah. my bad. didn't read it properly :scared:

Chainmax
22nd January 2004, 17:19
So, it seems that standalone deinterlacers like regular TomsMoComp or KernelDeint don't get much love around here...

mf, what do you use for straight up deinterlacing?

bilu
22nd January 2004, 17:36
@mf

Good to see the old avatar back :D

Bilu

mf
22nd January 2004, 18:24
Originally posted by Chainmax
mf, what do you use for straight up deinterlacing?
SSTomsMoComp, and when that proves lacking I start hacking and slashing at it till it looks nice (or till I give up).

Chainmax
22nd January 2004, 22:20
Any chance you could make something like SSKernelDeint?

mf
22nd January 2004, 23:10
Originally posted by Chainmax
Any chance you could make something like SSKernelDeint?
I tried. It looks crap.

Mug Funky
23rd January 2004, 07:35
Originally posted by Chainmax
So, it seems that standalone deinterlacers like regular TomsMoComp or KernelDeint don't get much love around here...

nonsense... those are building blocks. without them there'd be nothing but bobbing and blending.

Chainmax
24th January 2004, 01:17
What I mean was that it seems that here, people in the know seem to use functions rather than the regular dll-based filters. I know the filters themselves are hld in high regards, I discovered KernelDeint because Richard Berg recommended it to me.

LB
4th February 2004, 00:20
If you check out the high end de-interlacing stuff, like algolith's plugins for various NLE's, you'll see they have a VERY good de-interlacing filter. But not only they, they have an AA filter too. Yes, AA. Pretty incredible eh? Maybe one of the more programming oriented individuals on this board can whip up a thread for AA in avisynth eh?

mf
4th February 2004, 10:01
Originally posted by LB
But not only they, they have an AA filter too. Yes, AA. Pretty incredible eh? Maybe one of the more programming oriented individuals on this board can whip up a thread for AA in avisynth eh?
AA ? ASCII-Art or Anti-Aliasing? If you mean converting sharp jaggy edges to crisp smooth edges, I could whip out a scripted filter.

Chainmax
4th February 2004, 17:41
Originally posted by LB:
If you check out the high end de-interlacing stuff, like algolith's plugins for various NLE's, you'll see they have a VERY good de-interlacing filter. But not only they, they have an AA filter too. Yes, AA. Pretty incredible eh? Maybe one of the more programming oriented individuals on this board can whip up a thread for AA in avisynth eh?
What is an NLE? :o
Anyway, is there a version of algolith's deinterlacing filter for avisynth?

sh0dan
4th February 2004, 18:13
Originally posted by Chainmax
What is an NLE? :o
Ask in the proper forum (http://forum.doom9.org/forumdisplay.php?s=&forumid=68) :D (just kidding, of course)

alucard83
4th February 2004, 18:46
I use Decomb5 for IVTC and Area based Deinterlace(interpolate instead of blending) for most of my encodes, particularly anime, and the results are fantastic. Any movie type encodes I use kernel deint. The reason I use area deinterlacer for my animes is because for some reason, every other deinterlacer I tried blurs or still leaves interlaced artifacts on-screen(yes, even kerneldeint and TomsMoComp) even after exhaustive tweaking. For some reason, KD only works well on movies for me...

Chainmax
7th February 2004, 02:49
How about the following functions:

function TMCkernelbob(clip input, int "th", bool "TFF")

{
function kernelbob(clip a, int th, int ord)
{
f=a.kerneldeint(order=ord, sharp=false, twoway=false, threshold=th)
e=a.separatefields.trim(1,0).weave.kerneldeint(order=1-ord, sharp=false, twoway=false, threshold=th)
interleave(f,e)
}


th = default(th,7)
input = (TFF == true) ? input.assumetff.addborders(0,4,0,4) : input.assumebff.addborders(0,4,0,4)
input = input.converttoyuy2(interlaced=true)

x=input.separatefields.selecteven.tomsmocomp(0,-1,0).separatefields.selectodd
y=input.separatefields.selectodd.tomsmocomp(0,-1,0).separatefields.selecteven
a=interleave(x,y).weave.swapfields.kernelbob(th,0).crop(0,0,0,-1).addborders(0,1,0,0)
#select TMC's extra-lines and deinterlace them

b=input.kernelbob(th,0)
#take the input clip and deinterlace it

layer(a,b,"fast").crop(0,4,0,-4)
#mix both to get a higher resolution
}
function TMCBob(clip c, bool TFF, int th) {

c = (TFF == true) ? c.assumetff : c.assumebff
c1=c.converttoyuy2(interlaced=true)

# use DGbob for getting the interlacing-mask
c2a=c1.dgbob(order=1,thresh=th)
c2b=c2a.trim(1,0)
c3a=subtract(c2a.selecteven(), c2a.selectodd())
c3b=subtract(c2b.selecteven(), c2b.selectodd())
c3=interleave(c3a,c3b).greyscale()
c3=layer(c3,c3.levels(0,1,255,255,0),op="lighten",level=255).levels(129,1,143,0,255)

# use TMC(0,-1,0) to get the extra lines, shift the odd frame one line up
c4=c1.separatefields.tomsmocomp(0,-1,0)
c4a=c4.selecteven
c4b=c4.selectodd
c4=interleave(c4a,stackvertical(c4b.crop(0,0,0,-c4.height+1),c4b.crop(0,0,0,-1)))

# fill the interlaced areas with TMC's extra lines
overlay(c1.doubleweave, c4, mask=c3)

}
(I saw them on the SSTomsMoComp thread)? Has anyone else than mf, Mug Funky or scharfis_brain treid them?


mf: in the SSTomsMoComp thread, you posted this:
inputyv12 = last
inputyv12.ConvertToYUY2(interlaced=true)
input = last

input.KernelDeint(order=1, map=true)

#Telecide(order=1)

Subtract(input, last)
ConvertToYV12()
subtracted = last
#inputyv12.Binarize(threshold=0, Y=128, U=128, V=128)
BlankClip(subtracted, color=$808080)
grey = last
OverlayMask(subtracted, grey).GreyScale()
#ConvertToRGB32()
#ResetMask()
#ColorKeyMask($808080, 0)
#return subtracted
#Levels(0, 1.0, 255, 255, 255)
Invert()
lumamask = last

lumamask.PointResize(lumamask.width/2, lumamask.height/2)
chromamask = last

#YToUV(chromamask, chromamask, lumamask)
#mask = last

#maskedmap = last

#white = BlankClip(maskedmap, color=$FFFFFF)
#black = BlankClip(maskedmap, color=$000000)

#Layer(black, maskedmap)
#ConvertToYV12()
#Invert()
#mask = last

input.SSTomsMoComp("bff")
ConvertToYV12()
sstmc = last

MaskedMerge(inputyv12, sstmc, lumamask, U=1, V=1)
y = last

MaskedMerge(inputyv12.UToY(), sstmc.UToY(), chromamask, U=1, V=1)
u = last
MaskedMerge(inputyv12.VToY(), sstmc.VToY(), chromamask, U=1, V=1)
v = last

YToUV(u, v, y)
You said it wasn't quite finished, do you plan to complete it in the future?

soujir0u
7th February 2004, 04:33
Originally posted by mf
AA ? ASCII-Art or Anti-Aliasing? If you mean converting sharp jaggy edges to crisp smooth edges, I could whip out a scripted filter.

Heh I would love to see that script... :)

LB
21st March 2004, 11:55
Originally posted by mf
AA ? ASCII-Art or Anti-Aliasing? If you mean converting sharp jaggy edges to crisp smooth edges, I could whip out a scripted filter.

Anti-Aliasing. Probably slow the encode down a hell of a lot (so this is a no-no for you mf :p -- though, it might be fun to see what a negative fps encoding rate looks like :D ) but adding a touch of AA to some scenes with a conditional filter might be kinda handy for those hard to reach combed leftovers.

mf
21st March 2004, 14:01
What makes you think it'd fix combed leftovers?

LB
22nd March 2004, 02:40
Because I have an AA filter in my NLE program and it cleans up jaggey edgest from poor deinterlaced frames or nasty blends on edges. Not perfect, but hey, anything that works is better than nothing.