PDA

View Full Version : Deinterlacing - Ugh.


MLS
15th September 2004, 18:31
I was wondering if perhaps someone could give a list of different ways of deinterlacing pure interlaced (I understand there are many) and perhaps give the pros and cons of each? I've tried fielddeinterlace() and kerneldeint() and can't get away from the annoying lines on horizontal planes in the video that are caused by these methods. I've played some interlaced DVDs in Mediaplayer Classic and they do not have any combing or annoying lines, so it must be possible. I just don't know how to do it with AVISynth.

Thanks,

/MLS

P.S. I've searched but most of the threads are full of techno-jargon that I don't fully understand :(.

joshbm
16th September 2004, 01:52
Well I'm not an expert with all the techo-jargan ;), I'm just a newbie that has had some experience with some of the deinterlacers below, so if an expert wants to come in and correct me, please DO :)!

There are a couple sites you can visit:
> Doom9 (http://www.doom9.org/ivtc-tut.htm#InterlacingDeinterlacing)
> AnimeMusicVideos.com (http://www.animemusicvideos.org/guides/avtechbeta/interlaceremoval.html) (not only for anime, scroll down to "4) Full Frame Deinterlace")

Deinterlacers

KernelDeint()
Pros: Great Quality, Latest version is indeed fast, I use this solution a lot.
Cons: Sometimes yields jagged edges on intricate details and moving parts.

FieldDeinterlace()
Pros: To my knowledge, this yields fairly good quality video after some tweaking.
Cons: I believe this is just a simple deinterlacer which discards one of the fields (a loss of information). Causing jagged edges.

SmoothDeinterlacer()
Pros: Provides relatively smooth edges and video.
Cons: Sometimes it can cause artifacts I've noticed around edges.

DGBob()
Pros: Faster than SmoothDeinterlacer(), supposedly yields very similar output. Can be both bobbed (59.94i > 59.94p) or can be used as a normal deinterlacer (59.94i > 29.97p).
Cons: Sometimes yields deinterlacing artifacts.

TomsMoComp()
Pros: Very smooth and fluid video, edges are very smooth.
Cons: Very smooth, sometimes too smooth, blurring the image.

SangNom()
Pros: Deinterlaces fairly well, causing smooth edges (anti-aliasing) and keeping information.
Cons: Has weird deinterlacing artifacts-- especially around edges.

What do I use?
A hybrid of most of em ;). I combine most of them into 1 simple deinterlacer. Yields good quality for me, but others find it does not do the same wonders for them.

Any at all additions and corrections to my list from a newbies standpoint are welcomed :D.

Regards,
Josh

Mug Funky
16th September 2004, 04:52
Tritical just wrote a new one - check the avisynth development section.

it's like a mixture of kerneldeint and tomsmocomp i suppose. it also checks both directions, and so it can recover more vertical detail than most of them.

pros: near perfect deinterlacing on pure interlaced sources if you're lucky enough

cons: can leave some single-pixel artefacts ala tomsmocomp, and also will shimmer a little in near-static areas, and may leave combs behind in moving areas (the thresholding isn't quite there yet, maybe?). it's ELA mode (tomsmocomp-esque) can give oddness, but it can use a kernel-based approach too. both have their merits. it's also a little slow, if you're used to the speed of leak's optimised kerneldeint.

this filter is brand new and in very early development, so if you have problems with it, just ask tritical (and maybe give a sample as he's working blind for the most part) and he'll be happy to work on it, or give you some settings that will work better.

[edit]

this filter is probably your best hope if you've got field-blended-PAL and need to use restore24 on it.

joshbm
16th September 2004, 05:41
Yes, I've tried this deinterlacer "KDeint". This may become my new favorite toy :D.

joshbm
16th September 2004, 05:49
Hey, maybe my script will work for you like it does for me :p.


function merge(clip a,clip b,float "opacity"){
opacity=default(opacity,0.5)
return a.MergeLuma(b,opacity).MergeChroma(b,opacity)
}

function MaskDeint2(clip a,bool "bob",int "order")
{
bob=default(bob,false)
findOrder=default(order,getparity(a) ? 1 : 0)

a=a.ConvertToYV12()
v1=(bob==false) ? a.KernelDeint(order=findOrder,sharp=false,twoway=false) :
\ a.KernelBob(order=findOrder,sharp=false,twoway=false)

v2=(bob==false) ? a.TDeint(order=findOrder,mode=0) :
\ a.TDeint(order=findOrder,mode=1)

v3=(bob==false) ? a.FieldDeinterlace(Blend=False,Chroma=True) :
\ a.DGBob(order=findOrder,thresh=10)

v4=(bob==false) ? a.ConvertToYUY2().SmoothDeinterlace().ConvertToYV12() :
\ a.ConvertToYUY2().SmoothDeinterlace(doublerate=true).ConvertToYV12()

over1=merge(v1,v4)
over2=merge(v2,v3)
return merge(over1,over2)
}


It works GREAT for me. It's perfect quality-- as if I had Progressive Scan mode switched on my camera. Especially with the new KDeint. The down side is, it could be a bit slow if your computer is not up to par. Runs at about 14 fps on my system (which is quite hefty :(-- 3.2 Ghz P4, 1 GB RAM).

Regards,
Josh

niiyan
16th September 2004, 14:42
Here is another deinterlacer: AutoDeint.
It's the function of AviUtl-like deinterlace included in warpsharp.dll.
It works in YUY2/YV12.

Usage:
AutoDeint("") #automatic mode
or
AutoDeint("blend") #blend mode

I don't know the pros and cons.

joshbm
16th September 2004, 22:00
Wow, I didn't know about AutoDeint()... Works really well for me.

MLS
21st September 2004, 02:39
Thanks for the input, I will test them out :)

/MLS