Beste Methode für frameabhängiges Deinterlacen?

  • Bin gerade dabei, einen Film mit neuen Szenen zu encoden - das Originalmaterial ist zu 99% progressiv, die neu eingeschnittenen Szenen müssen deinterlaced werden. Verwendet habe ich dazu Yadif (Yadif(order=-1)). Was hinten rauskommt ist relativ gute Qualität, abgesehen von den Credits an Anfang und Ende der Films. Sie sind weiß auf schwarz, und egal ob vertikal scrollend oder statisch (mit leichtem Gewackel), Yadif führt zu angefressenen, quasi "blinkenden" Stellen an den Beinchen (Serifen) und dünnen Strichen. Abgesehen davon erhöht sich durch Yadif für alle Szenen die Bitrate leicht - ich verwende x264 mit --crf 23. Die End-Credits ohne Yadif encoded brachte sogar eine Bitraten-Einsparung von 50%.

    Nun weiß ich nicht genau, wie Yadif arbeitet, aber scheinbar vergreift er sich mehr oder weniger an allen Frames. Ideal wäre ein Deinterlacer mit optimalem "Durchblick" beim Erkennen von Szenen mit Interlacing-Artifakten, aber mit vergleichbarer Geschwindigkeit. Progressive Szenen soll er tunlichst in Ruhe lassen. Und natürlich soll er mit Avisynth arbeiten.

    Kann mir jemand da was empfehlen?

  • - LeakKernelDeint: sehr schnell. Hat aber keine Erkennung von "dieser Frame ist insgesamt progressiv" (haben fast alle Deinterlacer *nicht* )

    - FieldDeint: schnell, und hat eine solche Frame-weite Erkennung zuschaltbar. (Glaub' ich zumindest - hab's schon eeewig nicht mehr verwendet, das Ding ist eigentlich veraltet, und nicht mehr "Stand der Technik")

    - TDeint: die Universalwaffe, etwas langsamer. Frame-weite Erkennung kann über "tryweave=true" zugeschaltet werden. Bessere Ergebnisse gibt es, wenn man die einhundertsiebenunddreißig verfügbaren Parameter für die jeweilige Quelle speziell anpasst.


    Eindeutige Empfehlung: wenn es sowieso *nur* um die eingeschnittenen Szenen geht, dann wär's das beste, diese Szenen vorher zu deinterlacen, und dann erst einzubinden. Oder alternativ, im Script mit Trim+Trim - Konstrukten - oder einfacher, mit stickboy's RemapFrames - nur die entsprechenden Szenen zu deinterlacen.

    Weil, so schlau wie Du's gerne hättest, so schlau ist kein Automat. Jeder Filter wird entweder zu viel erkennen (also mitunter dort deinterlacen wo er nicht soll), oder eben zu wenig (also mitunter dort nicht deinterlacen wo er es tatsächlich sollte). Fehlerfreie automatische Erkennung ist ein Wunschtraum.


    Mein Ceterum Censeo: Yadif ist prima wenn's schnell gehen muss, und für Echtzeitfilterung. Wenn's aber auf *Qualität* ankommt, dann sind Yadif und ich wie zwei gleichgepolte Magnete: sie kommen einfach nicht zusammen ...

  • - TDeint: die Universalwaffe, etwas langsamer. Frame-weite Erkennung kann über "tryweave=true" zugeschaltet werden. Bessere Ergebnisse gibt es, wenn man die einhundertsiebenunddreißig verfügbaren Parameter für die jeweilige Quelle speziell anpasst.

    Ich denke, der frameweise check erfolgt mit "full = false".

    Ach so - TDeint ist klasse.

    Gruß

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • - TDeint: die Universalwaffe, etwas langsamer. Frame-weite Erkennung kann über "tryweave=true" zugeschaltet werden. Bessere Ergebnisse gibt es, wenn man die einhundertsiebenunddreißig verfügbaren Parameter für die jeweilige Quelle speziell anpasst...


    Aaaaaaaaaaaaaaaaaaaaaargh!

    Eindeutige Empfehlung: wenn es sowieso *nur* um die eingeschnittenen Szenen geht, dann wär's das beste, diese Szenen vorher zu deinterlacen...


    Eindeutig wahr, nur ist's den zeitlichen Aufwand wirklich nur bei hochwertigem Material oder "Lieblingsfilmen" wert. Was hältst du vom "Decomb"-Deinterlacer in Handbrake? Laut FAQ macht der genau, was ich will, nur habe ich mich damit noch nicht näher befasst. Die Handbrake-GUI ist mir nicht kompliziert genug, hehe. Und dann kann man dem Ding auch keine Scripts, sondern nur DVDs verfüttern.

    Zitat

    The decomb filter looks at each pixel of each frame of a video. It then only deinterlaces frames that show visible amounts of combing.
    When a frame shows a significant amount of combing, decomb runs a tweaked version of HandBrake's "Slower" deinterlacing filter. That's yadif, a spatially (within one frame) and temporally (between several frames) aware deinterlacer. The tweak is that it uses a looks at more pixels when generating the spatial predictions. When a frame is only very slightly combed, decomb runs a blending deinterlacer called a lowpass-5 filter.

    Auf "stickboy's RemapFrames" werfe ich auch einen Blick, danke für den Tip.

  • Ruuuhig, ich hab doch schamlos übertrieben. Es sind natürlich keine 137 Parameter in TDeint zum Einstellen, sondern eigentlich viel weniger ... sagen wir mal, es sind "gefühlte" 100 Parameter. :D

    Das "Decomb" in Handbrake müsste wohl (?) das bereits erwähnte FieldDeint sein ... Decomb ist ein Paket mit mehreren Filtern, und darin enthalten ist eben auch FieldDeint.
    Was ich davon halte? Na, sagen wir mal ... wenn Donald Graft meine Meinung dazu hören würde, wäre er bestimmt nicht sehr erfreut. ;)
    (Die Comb-Erkennung ist m.E. nicht wirklich gut - entweder es erkennt zu wenig, oder es macht zu viel, wie oben bereits angesprochen.)

    Übrigens sehe ich nicht ein, warum es mehr Arbeit machen sollte, die Szenen vor dem Einschneiden zu deinterlacen. Das macht höchstens genau so viel Arbeit, und wahrscheinlich sogar weniger Arbeit. (siehe: diese ganze Diskussion hier! :zunge: ) ... man muss es halt nur *rechtzeitig* machen, nicht erst hinterher.
    (Falls es Gründe geben sollte, warum man das nicht vorher machen kann, dann wollen wir diese Gründe hier wahrscheinlich lieber nicht hören...)

  • Was gefällt Dir an TDeint nicht? TDeint guckt doch Frame für Frame nach, ob deinterlaced werden muß. Das ist doch das, was Du willst! Hier meine Standardeinstellung für Fälle, wo ich nicht mehr weiter weiß (und ich weiß schon lange nix:)):

    TDeint(full=false, tryweave=true, MI=32, blockx=8, slow=2)

    full=false:
    check all input frames for combing first (also das, was Du willst)

    MI=32, blockx=8
    Legt die Empfindlichkeit für die Interlaced-Erkennung fest (das sind die alten Default-Parameter, die gefallen mir besser als die neuen)

    slow=2
    slowest (should have the best accuracy)

    tryweave=true
    Guck selber nach: LINK

    Gruß

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • Na, ich fühle ungefähr 75 Parameter bei TDEInt. (kopfkratz)

    Bin gerade beim testen. Die Sensitivitätseinstellungen (Default) bei TDEInt lassen schonmal die Credits unangetastet, und mit full=false kann man ihn auch zum Überspringen nicht-interlacter Frames bringen. Dafür erkennt er wirklich interlaced credits nicht (auf default-Einstellung), und das Blend/Bob-Ergebnis gefällt mir bei Yadif besser. Qualitätsmäßig am nächsten ran kommt TDEint mit modified ELA-2, nach meinem Gefühl, aber draußen ist's noch nicht dunkel genug. ;)

    Die Tests mit TDEInt sehen komischerweise in den stark verschlierten Teilen heller bzw. "ausgewaschener" aus als mit Yadif. Teste gerade ohne Anwendung von "ColorMatrix" davor, aber eigentlich sollte das keinen Unterschied machen - ? (Quelle ist eine DVD per DGDecode_mpeg2source) Schenit mir, dass da bei einem eine zusätzliche Farbraumwandlung stattfindet, obwohl sie laut FAQ beide mit YV12 und YUY2 arbeiten.

    Ich bin mir nicht sicher, ob Handbrake das Decomb-Paket von Donald Graft verwendet - zum einen ist Yadif wohl keine Graft-Schöpfung, und die Handbrake-Auswahl scheint mir nur ein "Nachrüstsatz" für Yadif zu sein, der bessere Erkennung für interlaced frames bringt. Es gibt nur Yadif oder Blend als Interpolationsmöglichkeiten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!