Schlecht Deinterlaced Progressives Material mit QTGMC filtern

  • Ich habe hier Material da wurde scheinbar die Hälfte der Zeilen weggeworfen (Deinterlaced obwohl es schon progressive war) und dann einfach wieder neucodiert.

    Also 1080p -> 540p -> 1080p

    Nun sind an schrägen Kanten nicht nur Treppeneffekte sondern runde Treppen, also richtig Zeilen verwoben.

    Habe mich lange mit den Chat-KIs unterhalten und kam zu diesem Ergebnis:

    Solange das Bild sich bewegt kann ich das Kantenflimmern durch folgende Zeile ganz gut entfernen.

    QTGMC(Preset="Very Slow", InputType=3, ProgSADMask=0 ,EdiMode="NNEDI3")


    Doch sobald das Bild stehen bleibt, beendet QTGMC scheinbar seine Arbeit und die Treppen bleiben stehen.

    Darum hat mir die KI noch folgende Funktion genannt:

    damit erziele ich gute Ergebnisse und die Details bleiben erhalten:

    Nur weiß ich überhaupt nicht, was ich da mache. Ob ich irgendwas noch beachten muss, oder ob die Funktion Nachteile hat?

    Mir wäre es lieb, wenn QTGMC mit seiner NNEDI3 Funktion schon alles erledigen würde.

    Also ich brauche einen QTGMC Filter, der sich auch um die Standbilder kümmert. Ein mehrfaches Ausführen von QTGMC hat die Kanten nicht so schön gerade gemacht wie PureVerticalDAA

    Habt ihr da Anmerkungen? Kann man die Funktionen noch verbessern, oder was weglassen?

  • Quote

    Habe mich lange mit den Chat-KIs unterhalten und kam zu diesem Ergebnis:


    ¯\_(ツ)_/¯

    Das PureVerticalDAA was Du da hast ist ein modifiziertes DAA zu sein, was mehrere Pässe macht. DAA_core ist ein leicht modifiziertes:

    Code
    function daa(clip c) {
      nn = c.nnedi2(field=-2)
      dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
      dblD = mt_makediff(c,dbl,U=3,V=3)
      shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3) # das Original verwendet 11 bei SD und 20 bei HD
      DD = shrpD.repair(dblD,13)
      return dbl.mt_adddiff(DD,U=3,V=3)
    }


    was dann einfach passes-Mal angewerndet wird,.....

    Was Du also machst ist 3x DAA anwenden,... sehe da nichts besonderes.
    ¯\_(ツ)_/¯

    Quote

    Habt ihr da Anmerkungen? Kann man die Funktionen noch verbessern, oder was weglassen?


    Ohne Quellmaterial würde ich empfehlen vielleicht mal andere AA filter noch anzutesten.
    (https://web.archive.org/web/2025120604…xternal_filters z.B. Santiag)

    Cu Selur

  • Danke, ja also das mit den 3 Durchläufen war mir klar, aber diese ganzen anderen Parameter sind mir ein Rätsel. Aber ich habe diese Woche schon viele Variationen ausprobiert. Deins jetzt auch.

    Fazit: das was ich da gepostet habe, erzeugt schon mit das beste Ergebnis. Ich kriege die Kanten auch noch einen Tick gerader gebogen, aber dann kommt zu viel unnatürliche Schärfe rein. So wie oben ist es der beste Mittelweg. (bis jetzt)

    Santiag schlug mir die KI auch vor, aber das brachte bei mir fast nix.

  • Mal versucht: Zu Downsizen (die Höhe zu halbieren) und dann wieder zu mit NNEDI3 upscalen (+ CAS)?

    Ja, ich habe mal die geraden und mal die ungeraden Zeilen durch (selectOdd bzw Even) entfernt und danach wieder upscaled. Aber da hatte ich das Gefühl, dass ich wichtige Informationen wegwerfe und alles nur noch unschärfer wird um dann wieder künstliche Schärfe hinzuzufügen.

    Aber wenn du magst, kannst du mich mit Beispielscripten zuballern. Ich habe Zeit und probiere sie alle aus. Ich habe auch schon viel getestet. Das Script ist mein jetziger Stand. Es behält viele Details bei. Es fügt natürliche Schärfe hinzu und es entfernt viele der Treppen, aber nicht alle.

    Ein zusätzlicher Turn um 90° -> DAA -> turnback machte viel kaputt, darum heisst die Funktion PureVerticalDAA

  • In AviSynth wäre:

    Code
    LWLibavVideoSource(...) # oder was auch immer für ein SourceFilter
    PointResize(1920,540) # PointResize ist hier bewusst gewählt
    nnedi3_rpow2(rfactor=2,nsize=6,cshift="spline36resize",fwidth=1920,fheight=1080) # spline36resize könne man auch durch was anderes ersetzen
    CAS(sharpness=0.70) # 0.7 scheint mir okay


    das was mir vorschwebt.

    Cu Selur

  • Versuch auch mal:

    Code
    LWLibavVideoSource(...) # oder was auch immer für ein SourceFilter
    PointResize(1920,540) # PointResize ist hier bewusst gewählt
    DAA()
    nnedi3_rpow2(rfactor=2,nsize=6,cshift="spline36resize",fwidth=1920,fheight=1080) # spline36resize könne man auch durch was anderes ersetzen
    CAS(sharpness=0.70) # 0.7 scheint mir okay
  • Weil es von nnedi2 keine 64bit Version gibt, musste ich also in der DAA() nnedi2 durch nnedi3 ersetzen und habe folgendes draus gemacht:

    Das Ergebnis ist relativ schlecht, unscharf, Details verschwinden.

  • Auch wenn Du die Werte von Original DAA verwendest?

    Im Vapoursynth (zu faul für Avisynth) mit:

    Code
    clip = core.std.Crop(clip, left=240, right=240, top=0, bottom=0) # cropping to 1440x1080
    # contrast sharpening using CAS
    clip = core.cas.CAS(clip, sharpness=0.700)
    # adjusting resolution before resizing
    clip = core.fmtc.resample(clip, w=1440, h=540, kernel="point", interlaced=False, interlacedd=False) # before YUV420P8 after YUV420P16
    # resizing using NNEDI3CL
    # current: 1440x540 target: 1440x1080
    clip = edi_rpow2.nnedi3cl_rpow2(clip, rfactor=2, nsize=3, nns=4) # 2880x1080
    # resizing 2880x1080 to 1440x1080
    clip = core.fmtc.resample(clip, w=1440, h=1080, kernel="spline64", interlaced=False, interlacedd=False) # before YUV420P16 after YUV420P16

    => https://slow.pics/c/k70TB9oy

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!