Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#1 | Link |
German doom9/Gleitz SuMo
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 7,207
|
Recent comparison of deinterlacers?
Not sure where to put, as it is not really specific to e.g. AviSynth, VapourSynth or ffmpeg as hosting system...
I know a few more or less good deinterlacers (including basic video manipulation functions): Weave, Bob, KernelDeint, Yadif, TDeint, QTGMC... But I was surprised during the last week when a thread in the VideoHelp forum asked about libavfilter deinterlacers integrated in ffmpeg. They mentioned BWDIF, which I learned means "Bob Weave De-Interlacing Filter". I never heard of that one. Completely missed any kind of discussion about it. And completely misunderstood it from its basic sounding name, thought it only applies "bob" or "weave", without any smart interpolation. I only marginally noticed the existence of its predecessor, w3fdif (Weston 3 Field De-Interlacing Filter). Now that I learned about them, I found that BWDIF already exists for a while and has been discussed, completely unnoticed by me. So I wonder, is there a thread I should know if I am curious how good it is in specific cases of complicated material? Did anyone recently test several deinterlacers to handle a hard task? |
![]() |
![]() |
![]() |
#2 | Link |
Registered User
Join Date: Nov 2004
Location: Poland
Posts: 2,869
|
BWDIF is ok, but nothing crazy good. Better than w3fdif, YADIF, but not really on pair with motion adaptive ones.
BWDIF is "based on yadif with the use of w3fdif and cubic interpolation algorithms". It's relatively fast, which is its best feature. Don't expect miracles, but it's good choice when trade between quality/speed is important. In avs, vs there is really nothing better than QTGMC. In pro world you have deinterlacing in Alchemist (Alchemist File now), Tachyon which are similar to QTGMC (in some aspects better in others worse). They are fairly quick though as they use GPU. You have BWDIF in vapoursynth as well. Last edited by kolak; 7th November 2022 at 22:09. |
![]() |
![]() |
![]() |
#4 | Link | |
Registered User
Join Date: Mar 2012
Location: Texas
Posts: 1,675
|
Quote:
Here's a clip of the scrip below: deint-comparison.mp4 Code:
DGSource("SAT1.FFS.2011.03.21.dgi") a = QTGMC().Subtitle("QTGMC()") b = BWDIF(field=-2).Subtitle("BWDIF(field=-2)") c = DGBob(mode=1).Subtitle("DGBob(mode=1)") d = PVBob(mode=1).Subtitle("PVBob(mode=1)") top = StackHorizontal(a,b) bot = StackHorizontal(c,d) StackVertical(top,bot) AssumeFPS(10)
It would be nice to see some results of ML deinterlacers, if anyone has access to them. |
|
![]() |
![]() |
![]() |
#6 | Link | ||
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 3,212
|
Quote:
There's nothing better than QTGMC() period, even outside Avisynth and VapourSynth. In QTGMC() they would not jump at all and there would be no aliasing, as if everything was really progressive. This is for new sources. When it comes to old sources, QTGMC() shines 'cause it can even get rid of some analog stripes and other kind of noise, thus delivering a clean and perfect picture. Alchemist is used for live feeds, so it makes sense if you get like a 30i feed that you may wanna bob to 59,940p, blend to 50p and re-interlace to 25i in the best possible way, or for instance if you get 29,970p live feeds that you may wanna interpolate to 50p (instead of just blending it to 50p) and divide in fields to get 25i, all live, via SDI, but I wouldn't use it for files. Quote:
QTGMC() is free, open source, totally customizable, tweakable and it works everywhere on CPU and on any NVIDIA card if you use KTGMC() with OnCUDA() in Avisynth. For file-based workflows, I use BWDIF() when time is important and QTGMC() for everything else (like for UMatic, BetaCAM, 1 inch type c remastering workflows etc). It's the right way to do it, it's the open source friendly way to do it and it's the way that supports this great community we're part of. I've sent those files everywhere to different studios (and obviously aired them) and Avisynth / FFAStrans has been praised by other TVs and professionals. I mean, honestly, in this day and age there's literally no reason to go for ultra pricey stuff from Telestream when they literally add nothing to what open source has been capable of doing for years and the sooner companies toss their products and begin embracing open source, the better, 'cause it means that more and more professionals will contribute. Last edited by FranceBB; 8th November 2022 at 18:33. |
||
![]() |
![]() |
![]() |
#7 | Link | |
Registered User
Join Date: Jan 2015
Posts: 1,113
|
Quote:
Unless, of course, you're dealing with non-linear field behavior. Or you care about keeping the original scanlines intact. Yadifmod2 + Nnedi3 delivers "more correct" results by default, even if it doesn't look as good as QTGMC in certain cherry-picked scenarios, but it still can't handle some types of non-linear field behavior correctly. TFM(mode=0,pp=0,micmatching=0).converttorgb().blur(0,1).sharpen(0,1) is the "safest" choice in the sense that it doesn't have any really spectacular failure modes no matter what you throw at it.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers. Last edited by Katie Boundary; 8th November 2022 at 19:34. |
|
![]() |
![]() |
![]() |
#9 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,625
|
Not really; at least not what is usually meant as "motion-adaptive", such as BWDIF
BWDIF will weave (the "W" in BWDIF stands for weave) a static content scene resulting in full resolution, yadif will deinterlace it resulting in ~1/2 spatial resolution Quote:
|
|
![]() |
![]() |
![]() |
#10 | Link | |
Registered User
Join Date: Nov 2004
Location: Poland
Posts: 2,869
|
Quote:
It has good and bad sides- not much of a control is bad side. If you have combing on small portion of a frame it will treat it as progressive and you have no control over it. Frame reconstruction itself is very decent, but if you want to get totally new progressive file (don't care about original fields, which is the case for most scenarios) QTGMC is better. Alchemist is much faster though- all you need is GTX 1080. Of course Tachyon is not Telestream, which just license it. It's the most common app where you can actually use it and I agree that pricing is as of today very questionable. You could probably license engine from Cinnafilm which gives very detailed control over processing. Last edited by kolak; 8th November 2022 at 20:51. |
|
![]() |
![]() |
![]() |
#11 | Link | |
Registered User
Join Date: Nov 2004
Location: Poland
Posts: 2,869
|
Quote:
BWDIF is used with combing detection, so for hybrid masters I don't break 95% (it's all set to be oversensitive, so I don't miss combing) of progressive parts. This processed few million minutes now ![]() Last edited by kolak; 8th November 2022 at 20:54. |
|
![]() |
![]() |
![]() |
#13 | Link |
Big Bit Savings Now !
Join Date: Feb 2007
Location: close to the wall
Posts: 1,907
|
https://videoprocessing.ai/benchmarks/deinterlacer.html
Realtime visualisation of a selectable sample rectangle. I hold my breath for MFDIN L Deinterlacer, hoping to become public. https://arxiv.org/abs/2109.14151 https://arxiv.org/pdf/2109.14151 Tokyo Market looks well, other samples are jagged, don't seem to be interlaced... Missing QTGMC though...why,MSU?
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain) "Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..." Last edited by Emulgator; 13th November 2022 at 13:09. |
![]() |
![]() |
![]() |
#14 | Link |
Registered User
Join Date: Aug 2002
Location: Italy
Posts: 322
|
...my question is: which is the best FFMPEG deinterlacer ?
__________________
Hybrid Multimedia Production Suite will be a platform-indipendent open source suite for advanced audio/video contents production. Official git: https://forart.it/HyMPS |
![]() |
![]() |
![]() |
#16 | Link | |
Registered User
Join Date: Jan 2015
Posts: 1,113
|
Quote:
Neither of those things happens unless the content was originally 60hz or 50hz natively interlaced.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers. Last edited by Katie Boundary; 6th March 2023 at 05:24. |
|
![]() |
![]() |
![]() |
#18 | Link | ||
Registered User
Join Date: Sep 2007
Posts: 5,625
|
Quote:
The yadif deterioration can be less noticable if the source has low effective resolution to begin with. eg. If the static scene has been selectively lowpassed, or uses thick fonts, or is blurry. You should notice the static scene yadif quality loss on fine static credits, static scenes with buildings, windows (lines at certain angles), higher quality scenes with higher frequency detail, and/or static scenes in mixed content cartoons/anime where you might be applying a deinterlacer instead of field matching. Yadif will degrade it signficantly more than if the field pairs were simply weaved. The yadif quality loss is measurable/quantifiable with test charts. Also, yadif 2x will tend to cause flicker in a static scene. Sometimes bwdif can have detection problems, but the avisynth version of bwdif has a threshold setting. Tdeint is another option for mixed i/p content or with static scenes using tryweave=true Quote:
It's probably source dependent, but estdif (default settings), looks significantly worse on that sample in this thread in terms of aliasing and bob flicker. Maybe the default settings are not ideal ? |
||
![]() |
![]() |
![]() |
#20 | Link |
Registered User
Join Date: Feb 2023
Posts: 10
|
I'm curious, how does BWDIF compare with yadifmod2? For some stuff I'm working on, QTGMC results in static elements like logos move up and down from one frame to the next when doubling the frame rate. I was recommended yadifmod2 because it handles static elements better.
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|