Deinterlacing vor Filteranwendung ?

  • Hallo,

    sollte man eigentlich interlaced Material immer deinterlacen, bevor man AviSynth Filter anwendet, oder sollte man es nur bei bestimmten Filtern tun ?

    Gruß Herbie

    Gruß
    Herbie

  • WENN Du deinterlacen möchtest, dann tu das als erstes, aber ansonsten solltest Du bei normalen Interlacing auf das Deinterlacen verzichten, da das Ergebnis sonst etwas unsauberer werden kann. Aber bitte beachten, dass interlaced deutlich mehr Bitrate braucht, um gut auszusehen und nicht alle Codecs das können. Bei mpeg2 auf DVD liegst Du interlaced aber (grundsätzlich) richtig

  • Zitat von Selur

    @BaronVald aka. Kampfmurmel ;) :
    Was fällt den alles zu "normalen Interlacing" und was nicht?

    Cu Selur


    Hi Selur, also heute abend bin ich wirklich friedlich:

    http://forum.gleitz.info/showthread.php?t=14791 :)

    Also wenn ich son restore24 Krams mit Geisterbildern etc. habe, dann versuche ich das wieder hinzubiegen, aber "stinknormale" Interlacingkämme dürfenauch bei der Kampfmurmel überdauern ;)

  • ob man vor dem filter deinterlacen soll, oder nicht, haengt immer ganz von dem filter ab, den Du verwenden willst.

    wenn DU z.b. nur farbe/helligkeit aendern willst, musst Du nicht deinterlacen,
    sobald aber resizer und denoiser ins spiel kommen, muss man entweder mindestens die hallbilder separieren (schlechter) oder aber vorher mit einem Fullframerate deinterlacer (bobber) deinterlacen, dann FIltern und ganz zum schluss wieder reinterlacen.

    sag doch einfach mal, was Du tun moechtest

    Edited.

  • Hi,

    @ scharfis brain

    Angenommen ich möchte einen Denoiser einsetzen, wäre deinterlacen, so wie Du es schriebst, besser, als das interlaced Material erst mal auf Halbbilder separieren > SeparateFields (), dann filtern und danach wieder den interlaced Frame bilden.
    Womit wird denn zum Schluß reinterlaced ?
    Ich dachte, wenn einmal deinterlaced ist, dann wars das. Man kann dies doch nicht mehr rückgängig machen, höchstens, das Vollbild in 2 Halbbilder teilen, aber ohne zeitlichen Versatz. Meinst Du das ?

    Herbie

    Gruß
    Herbie

  • es gibt mehrer weg, interlaced video zu filtern.

    1)

    separatefields()
    noisefilter()
    weave()

    ist nicht so gut, weils zw. den fields einen versatz von 1/2 pixel gibt. d.h. kanten werden nicht entrauscht.

    2)

    separatefields()
    evn=selecteven().noisefilter()
    odd=selectodd().noisefilter()
    interleave(evn,odd)
    weave()

    vermeidet das problem von 1), hat aber den nachteil, dass man nicht die komplette bewegungsinformation zum denoisen benutzen kann...

    3)

    kernelbob() #dies ist ein script, welches aus kerneldeint einen bobber macht
    #(aus 50 hallbiern werden 50 VOllbilder / sec
    noisefilter()
    # dies ist das reinterlacing:
    separatefields().selectevery(4,0,3).weave() #fuer TTF 4,1,2 nutzen

    diese methode ist die beste mgl, da sie statische bereiche sauber denoised und in bewegten bereichen die komplette bewegungsinformation nutzen kann.

  • Zitat


    Ich kapier das nicht.
    Warum soll ich den zuerst deinterlacen, danach filtern und auch noch reinterlacen - damit mach ich doch doppelt und dreifach Bildinformationen kaputt. Sei doch bitte so nett, und erkläre das etwas genauer :hm:


    Zitat von scharfis_brain

    diese methode ist die beste mgl, da sie statische bereiche sauber denoised und in bewegten bereichen die komplette bewegungsinformation nutzen kann.


    Beim deinterlacen vorher sind doch schon Bewegungsinformationen verloren gegangen das es kracht?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • viperzahn, Du verstehst das falsch.

    ich deinterlace auf 50fps, sodass alle bewegungsinformation erhalten bleibt.
    ein herkoemmlicher deinterlacer macht nur 25fps ein bobber aber 50fps.

    wenn ich nun auf 50 fps deinterlace, dann hab ich bei statischen bereichen ein perfektes zitterfreies bild und in bewegten bereichen, je nach der interpolation des bobbers, ein fluessiges, scharfes bild, das (Wichtig!) nicht auf & ab zittert.

    auf dieses video kann man dann seine Filter anwenden:
    - framerate conversion (normwandlung)
    - denoiser
    - resizer

    danach, selectiert man das bildzeilen, so, dass man moeglichst die zeilen wieder in den output uebernimmt, die der bobber eh einfach unangetastet durchschleift

    (ein bobber nimmt ein halbbild, streckt es auf doppelte groesze und interpoliert daten oder nimmt sie aus dem vorherigen halbbild, je nachdem ob das pixel bewegt ist oder statisch.)

    somit ist methode 3) die beste.
    es ist IMO auch fast egal, ob man TMC kernel oder DGbob nimmt. die interpoaltion spielt keine uebergeornete rolle, da sie nicht in den output gelangt...

  • Aaachso! Danke für die Erklärung :)


    Denn man gleich der Vollständigkeit halber, wie reinterlace ich denn, wenn meine Quelle BFF ist? [Sorry, Du merkst, ich kenn mich mit inerlaced Material überhaupt nicht aus :(]

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Ah, Moment!

    Zitat von scharfis_brain

    auf dieses video kann man dann seine Filter anwenden:
    - framerate conversion (normwandlung)
    - denoiser
    - resizer

    danach, selectiert man das bildzeilen, so, dass man moeglichst die zeilen wieder in den output uebernimmt, die der bobber eh einfach unangetastet durchschleift


    Aber durch Anwendung der oben genannten Filter werden doch die unangetasteten Zeilen mit den interpolierten ["ein bobber nimmt ein halbbild, streckt es auf doppelte groesze und interpoliert daten oder nimmt sie aus dem vorherigen halbbild, je nachdem ob das pixel bewegt ist oder statisch"] verrechnet, so das es gar nicht mehr möglich ist nur gefilterte Quellzeilen zu bekommen?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Zitat von scharfis_brain

    das istdoch der sinn der sache, dass man beide halbbilder nutzen kann...


    Das will ich natürlich nicht bestreiten.
    Nur, wenn ich mit SeparateFields() arbeite, werden nachfolgende Filter ausschließlich auf die Pixel des jeweiligen Fields angewendet. Arbeite ich dagegen mit kernelbob() wird aus einem Field ein Vollbild berechnet. Wende ich darauf jetzt Filter, wie z. B. eine Skalierung an, werden aus den bereits [durch kernelbob()] interpolierten Pixels nochmals neue Pixel errechnet, so das ich im Endergebnis doch weiter weg vom Original sein muß, oder?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • ist es eben nicht, da in statische bereichen die spaitiale information des anderen halbbilds mitgenutzt wird.
    ausserdem ist die interpolation von kerneldeint oder tomsmocomp denen der avisynth-internen resizer DEUTLICH ueberlegen.

    mach' doch einfach einen Test. einmal mit sepfields und einmal methode 3)

    und vergleiche beide resultate.

    mehr will ich das jetzt nicht breitkauen.

    guck Dir das hier mal als beispiel an.
    http://forum.doom9.org/showthread.php…=interlaced+OMG

  • Hallo scharfi,

    auch auf die Gefahr hin dich zu stressen, aber kannst du mir mal verraten worauf ich beim Anschauen der Bilder achten muss. Ich weiß nicht, sind meine Augen schon so schlecht, aber irgendwie erkenne ich keinen Unterschied...:hm:

    MfG raschi


  • die oberen beiden bilder sind verkleinerungendes originals.
    links meine methode 3) rechts die alte,herkoemmliche methode.
    meins ist schaerfer (schau'Dir die diagonalen Kanten an, v.a. die schrift!)

    mitte:das original

    unten: vertikal auf 576 pixel vergroeszert.

    links meinde methode, rechts alte methode

    meine methode, bringt bei der schrift deutlcihe verbesserungen, und auch die kanten sind sauberer (es gibt keine doppelkannteneffekte mehr, wie im rechten bild)

  • Hallo Forum,

    hallo scharfis brain,

    Nochmal zu Version 1 und 2, die Du nicht empfiehlst.
    Ist es denn nicht so, dass normalerweise Version 1 bei räumlichen Filtern und Version 2 bei zeitlichen Filtern Anwendung findet ? (stand mal irgendwo in der Fachpresse). Wollte ich nur mal hier erwähnen.

    Jetzt zu Version 3:

    Also

    kernelbob() ok
    noisefilter() ok

    Jetzt das Reinterlacing !

    Separate Fields() ok
    Selectevery (4,0,3) Was macht selectevery und sind das Standardwerte ?
    Weave() ok
    für TFF 4,1,2 nutzen was ist TFF und was sind das für Werte ?

    Das wären noch meine beiden Fragen in dieser Sache, vielleicht könntest Du mir nochmals auf die Sprünge helfen, wäre super. Dann werde ich am Wochenende mal probieren.

    Danke.

    Herbie

    Gruß
    Herbie

  • ob Du 4,0,3 oder 4,1,2 nehmen musst, musst Du probieren,
    je nach fieldorder des quellvideos liefert nur eines der beiden ein korrektes, scharfes ergebnis.

    4,0,3 und 4,1,2 bestimmen die auswahl der halbbilder aus dem progressiven video.
    4 ist die anzahl der fields (hier 4), wobei aber nur 2 selektiert werden.
    bei 4,0,3 jeweils die fields 0,3,4,7,8,11,12,15

    bei 4,1,2 jeweils die fields 1,2,5,6,9,10,13,14

    das fuehrt dazu, dass 4,0,3 Bottom field first fliefert (BFF)
    und 4,1,2 Topofield first fliefert (TFF)

Jetzt mitmachen!

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