ein einfaches RemoveDirtMC: Entrauschen und Entstören!

  • [übersetzung meines postings bei doom9.org]

    hallo leute,

    ich bin bereits recht zufrieden mit dieser einfachen RemoveDirtMC funktion. sie ist recht schnell, entrauscht gut und erzielt sehr gute komprimierbarkeit. sie ist optimiert für eher leichtes entrauschen von dvd quellen, entfernt aber auch stärkere spot-störungen ohne artefakte!

    benötigt werden: RemoveDirt, RemoveGrain, MVTools 1.1.1

    Hinweis: isb=false/true gegensätzlich zur mvtools-readme, aber die ergebisse entsprechen nur so meinen erwartungen
    MVFlow in MVTools 1.1.1 ist fehlerhaft für idx=1 bei pel=2

  • Hi Eriman,

    der Hauptunterschied ist eben, dass ich im Interesse der Spotentfernung das Entrauschen nicht limitieren will. D.h. obiges Skript ist v.a. für Filme interessant, die nicht nur verrauscht sind, sondern v.a. auch viele weisse oder schwarze Störflecken enthalten. Lediglich auf die Vermeidung von Blockartefakten wurde wert gelegt, weniger auf die von Detailverlust bei Bewegungen. Hier kann obiges Skript daher stärker Details verschmieren. Dafür ist allerdings auch die Komprimierbarkeit besser.

    mfg.

  • ich habe mal direkt gegen Didée Filter verglichen. Tatsächlich erhält mein Skript mehr Details. Sorry, aber ich verstehe LRemoveDust nicht vollständig und kann das auch nicht detailliert erklären. Mein Ansatz ist einfach ganz anders.

    Ich nutze die Blockbildungserkennung/vermeidung von RemoveDirt aus.
    RemoveDirt und die MVTools arbeiten hier auf den gleichen Blöcken. Solange Framebereiche also gut zeitlich voraus und zurückrekonstruiert werden können (keine Blockbildung bei Überlagerung), erfolgt ein zeitliches MinMax-Clipping zw. aktuellem Frame und den bewegungskompensierten Nachbarframes. Damit ergibt sich ein weitaus stärkerer Entrauscheffekt, als bei mvdenoise. Gleichzeitig werden Spots entfernt.

  • Zitat von Heini011

    ich habe mal direkt gegen Didée Filter verglichen. Tatsächlich erhält mein Skript mehr Details. Sorry, aber ich verstehe LRemoveDust nicht vollständig


    Jo, schon klar. Hab' gestern auch mal einen Vergleich gefahren zwischen FFT3DFilter(), Undot() und ReduceBy32().
    Ergebnis: FFT3DFilter denoised viel wirksamer als Undot, und erhält viel mehr Detail als Reduce.

    Äpfel mit Birnen, wirklich ... Bananen vielleicht noch? Oder jemand mit Ananas?


    Alter, wenn isch greife nur in apfelkiste, nehme Heinis apfel und Didées apfel, guckst du:

    [Blockierte Grafik: http://img152.imageshack.us/img152/6199/36437o1sy.th.png] [Blockierte Grafik: http://img222.imageshack.us/img222/1866/364377vb.th.png]

    Krass ey, Heini seim apfel isch ja halbes noise da immer noch !


    Dabei ist gegen RemoveDirtMC überhaupt nichts einzuwenden: schöner Filter. Schön einfach, schöne Ergebnisse wenn Rauschen nicht zu stark.

    Aber der Vergleich eines simplen RemoveDust (temporaler Cleaner wird mit spatialem Vorschlaghammer repariert, ohne Motion-Adaptiveness) mit einem RemoveDirt (temporaler Cleaner wird mit Hilfe einer dreistufigen Motion-Adaptiveness repariert), der noch zusätzlich von aktiver Bewegungskompensation unterstützt wird, ... der hinkt eben ein wenig.

    [alte Leier]
    Ausserdem ist LRemoveDust kein Filter "von mir". RemoveDust ist von Kassandro, und hat schon immer viel Detail gekillt. Deswegen hatte ich mal zwecks Brauchbarmachung eine L-imitierung vorgeschlagen, die übernommen worden ist.
    [/alte Leier]

  • @ Heini011
    Also Für mich ist derzeit MCNR_simple2() einfach der Gott :D unter den denoisern
    wenn auch noch nicht perfekt (Artefakte und blöcke treten zwar manchmal auf aber dass liegt wohl eher an denn mvtools) wass da an details im bild ist hab ich noch von keinem anderen denoiser gesehen selbst Verschmutzungen werden entfernt!

    Deine funktion test ich bald aber auf den ersten blick sieht sie zumindest vom speed her besser aus und ich denke mal für leichtes rauschen mit verschmutzungen sollte dein RemoveDirtMC reichen

    Aber wie heisst es so schön konkurrenz belebt das Geschäft :ja:

  • eine etwas stärkere Rauschunterdrückung und kompensatorische Schärfung...

  • für stärker verrauschtes und störbehaftetes Videomaterial...

    RemoveNoiseMC: RemoveDirtMC + MVDenoise

    Rev. 5

  • Hi,

    wollte das Script mal testen und fand da wohl einen Flüchtigkeitsfehler:

    Zitat

    limit = default(rdlimit,8)



    als ichs in rdlimit umbenannt hab und die aktuelle RemoveDirt runtergeladen hab, lief es. Davor war nen Syntaxfehler, weil rdlimit nicht definiert war.


    Bye,


    DeepVD

  • Hi DeepDVD,

    danke für den Hinweis. Ich habe das Skript nochmal aktualisiert.
    Aber die default-Werte sind eh nur als Ausgangspunkt für eigene Anpassungen gedacht. Es ist nicht sinnvoll, hier irgendwelche allgemeinen default Werte zu empfehlen.

    Das Skript wurde optimiert auf das Erhalten von Details, nicht auf maximale Entrauschwirkung und Komprimierbarkeit. Es kann daher noch mit spatialen Filtern kombiniert werden.

    Hier ein paar Beispiele:

    gutes Videomaterial, das aber eine starke Körnigkeit und/oder Spots aufweist:

    Code
    function hq_filter(clip c){  c=c.RemoveNoiseMC(rdlimit=6,rgrain=1,denoise=8)  c=c.LimitedSharpenFaster(Smode=4,strength=18,wide=false,ss_x=1.3,ss_y=1.3)  return c}


    älteres oder stärker verrauschtes Videomaterial:

    Code
    function mq_filter(clip c){  c=c.RemoveNoiseMC(rdlimit=11,rgrain=2,denoise=8)  c=c.deen("a3d",rad=1,thrY=2,thrUV=3,min=0.5,tthY=1,tthUV=2,scd=4)  c=c.LimitedSharpenFaster(Smode=4,strength=18,overshoot=1,wide=false,ss_x=1.3,ss_y=1.3)  return c}


    starkes Rauschen oder Analog-Capture:

    Code
    function lq_filter(clip c) {  c=c.RemoveNoiseMC(rdlimit=18,rgrain=2,denoise=14)  c=c.VagueDenoiser(threshold=0.8, nsteps=6, chromaT=0.8, percent=75)  c=c.deen("a3d",rad=3,thrY=3,thrUV=5,min=0.25,tthY=2,tthUV=4,scd=6)  c=c.LimitedSharpenFaster(Smode=4,strength=22,overshoot=1,wide=false,ss_x=1.3,ss_y=1.3)  return c}

    "Extremfall"

    Code
    function vlq_filter(clip c) {
      c=c.RemoveNoiseMC2(rdlimit=24,rgrain=3,denoise=16)
      c=c.VagueDenoiser(threshold=1.0, nsteps=6, chromaT=1.0, percent=75)
      c=c.deen("a3d",rad=3,thrY=5,thrUV=9,min=0.25,tthY=2,tthUV=4,scd=6)
      c=c.LimitedSharpenFaster(Smode=4,strength=25,overshoot=1,wide=false,ss_x=1.3,ss_y=1.3)
      return c
    }

Jetzt mitmachen!

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