Rauschen aus Realserien entfernen

  • Der Zusammenhang war mir bisher neu - danke, Didée (und Trekkie2 für den Versuch). Wie sieht's bei STMedianFilter aus, ist das auch nur ein Clamp-Filter?
    __

    @ Shane:

    AviSynth-Filter gibt's meist da, wo man immer zuerst danach sucht: http://www.avisynth.org/warpenterprises
    __

    Ich sehe gerade: RemoveGrain kann ich sowieso nicht benutzen - jeder der drei Varianten benötigt mindestens SSE (oder gar SSE2 / SSE3). Nichts für meinen Duron... :heul:

  • Jo, grundsätzlich macht STMedian auch nur "abschneiden" von überschiessenden Werten, also "clamping". Macht aber noch zusätzliche Sicherheits-Checks - z.B. maximaler edge-value, also lokale detailstärke, die nicht überschritten werden darf, etc.

    Ausserdem nimmt STMedian nicht die soundsovielt-höchsten Werte aller 8 (spatial) bzw 9+9 (temporal) Nachbarn zum clamp'en, sondern sucht nach denjenigen zwei sich gegenüberliegenden Pixeln des zentralen Pixels, die sich am ähnlichsten sind, und benutzt deren Werte. Das wiederum entspricht RemoveGrain(mode=5) in der rein spatialen Variante. Temporal wäre das beim RemoveGrain-Paket dann Clense(), wobei clense() aber nur die direkten Vorgänger+Nachfolger - Pixel nimmt, also nicht den kompletten 3x3x3 -"Würfel" auswertet. Dafür gibt's (L)RemoveDust.

  • Gibts da eigentlich auch ne andere Möglichkeit das Rauschen wegzukriegen ohne AVISynth zu benutzen?! Mit AVISynth komm ich nämlich nicht so gut klar...

  • Da lässt du dir das mächtigste Instrumen aber durch die Lappen gehen... :rolleyes:

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • Mit eDeen() ... (2 seiten vorher erwähnt) wäre ich vorsichtig, ist ne spatiale Bombe (ebenso laut Author). Wenn du damit unvorsichtig 704x576 behandelst, kannst du gleich danach auf 352x288 resizen was nachher die Details am TV angeht. ;)
    Selbst wenn jemand nicht soviel Ahnung von Filtern hat, der wird mit LRemovedust() schon recht viel erreichen können - wenn die Source nicht gerade ein Capture aus Kasachstan der 60er Jahre ist (ich meine nicht den Film, sondern WANN det Teil aufgenommen wurde *lol)

  • Wo wir schon mal dabei sind....

    LRemoveDust(4,x) ist sicher sehr sehr fein..
    Allerdings wird bei mir mit (4,2) das Denoising zu sanft..es besteht qausi eine ziemlich hohe Körnung.
    Mit (4,4) wirds dann recht schwamming. Setze ich zusätzlich einen Schärfe Filter ein ,zb limitedsharpen() vertstärkt das wiederrum nur die Reste des Rauschens.
    Mit viel Rauschen werden ebenfalls die Flächen sehr "verflüssigt" mit LRemoveDust(4,x)

    Also ich habe bisher nur gute Erfahrungen mit LRemoveDust ,wenn die Capture Source net allzu verrauscht ist.

    Liegt vielleicht an meiner GesamtKonfig..
    Saa7134 mit PicVideoMjpeg Q19 oder Huffyuv gecapturet via VVCR. Und mit der Qualität(Rauschpegel..) bzw Eigenschaften meines Kabel Anschlusses.

    Mit etwas stärkeren spatioTemporalen Denoisern wie FluxSmoothST(7,7) erhalte ich bei sehr verrauscheten Captures hier bessere Ergebnisse.. Weniger schwimmende Flächen und beim Einsatz von Schärfe weniger "Dreck"
    Zudem FluxSmoothST(7,7) auch noch ganz gut die Details erhält.

    Allerdings bei sauberen Quellen arbeitet LRemoveDust(4,x) sehr gut zudem der Speed einmalig ist.
    Dennoch scheinen sich meine Hoffnungen dahingehend in LRemoveDust(4,x)
    einen "Allround Denoiser" gefunden zu haben bisher nicht zu bestätigen.
    Mit FluxSmoothST(7,7) erhalte ich bei meiner Konfig fast immer gute Ergebnisse.

    Hat jemand einen vorschlag ,wie man die Funktion dahingehend auf die Problematik wie von mir beschrieben optimieren kann ?

    function LRemoveDust(clip input, int _mode, int "limit")
    {
    limit=default(limit,4)
    repmode = 2
    clensed = Clense(input)
    rep=Repair(clensed, input, mode=repmode)
    rg = RemoveGrain(rep, mode=_mode)
    rd=TemporalRepair(rg, rep)
    return LimitChange(rd, input, limit, limitU=255)
    }

    gruss

  • Zitat von acrowley


    LRemoveDust(4,x) ist sicher sehr sehr fein..
    Allerdings wird bei mir mit (4,2) das Denoising zu sanft..es besteht qausi eine ziemlich hohe Körnung.
    Mit (4,4) wirds dann recht schwamming. Setze ich zusätzlich einen Schärfe Filter ein ,zb limitedsharpen() vertstärkt das wiederrum nur die Reste des Rauschens.
    Mit viel Rauschen werden ebenfalls die Flächen sehr "verflüssigt" mit LRemoveDust(4,x)


    Genau das habe ich bei mir auch festgestellt... Schön, dass du das hier ansprichst. ;)

    Ich habe bei Verrauschten Captures eigentlich 3 Filter die ich verwende (vor dem Schärfen)..

    Diese sind:

    Code
    ConverttoYV12()Convolution3d(0,12,8,12,8,2.8,0)RemoveGrain(2)FFT3DFilter(sigma=1.8, ratio=2.0, plane=0, bt=3, bh=32, bw=32)ConverttoYUY2()


    Ich werde auch mal deinen FilterVorschlag testen...
    Wenn es ganz hart kommt, dann nehm ich

    Code
    ConverttoYV12()
    deen("a2d",3,4,1,4)
    RemoveGrain(2)
    FFT3DFilter(sigma=1.8, ratio=2.0, plane=0, bt=3, bh=32, bw=32)
    ConverttoYUY2()

    Eigentlich suche ich auch einen guten Filter, den ich bei verrauschten Captures anwenden kann, der zwar viel wegfiltert, aber dennoch genug Details übriglässt für das Schärfen mit LS...
    Falls jemand noch einen guten Vorschlag diesbezüglich hat, immer her damit :D

    ---

  • Also bei mir ist es mit FluxSmooth eingesetzt simpel aber effektiv

    AviSource....
    FluxSmoothST(7,7)
    Undot()
    BicubicResize() # oder auch lanczos bei sauberen quellen
    limitedsharpen() # ehr selten wenns arg unscharf ist

    Versuche mal FluxSmoothST(7,7) ...ich finde diesem spatio_temporal Denoiser wird net genug beachtung geschenkt.
    Denn eigentlich biete er eine ganze Menge.
    Noch viele Details und unheimlich viel Noise wird weggeschaufelt.

    Gruss

  • weil ich auch derzeit an der Stelle "lerne", mein letztes VHS-Script sah ungefähr so aus:

    Als Beispiel einfach mal komplett. Das Ergebnis (73:39 min:sec) ließ sich mit XviD mit Q=4.06 auf CD-Größe bringen und sieht eigentlich "echt gut" aus. Meine Meinung ;)

    beispielgebende Grüße

    codefish

    ...a seeker of knowledge...swimming in the bitstream...

  • Hossa....du knallst da aber heftig Denoiser rein. Für meinen Geschmack etwas zu viel.
    LRemoveDust(4,2)...Convolution3d....Cnr2....Undot()

    Gut, du sprichst von 1CD Movies...da kann man dann sicherlich mit Denoisern die Begleiterscheinungen von niedriger Bitrate abfangen.
    Ich gehe immer bei Analogen TVCaps auf 2CDs im 2pass.
    Da ist mir mit viel Bitrate, meist im 2000 Bereich,das erhalten der Details wichtig.
    Wenn genug Bitrate bereitsteht, daher mehr Qualität bringens dann viele Denoiser zusammen net.
    Viele Köche verderben den Brei....

    Mit LimitedSharpen() habe ich die besten Ergebnisse erzeilt nach dem Resizen qausi zum Schluss eingesetzt um Schärfe reinzubringen. Also nach allen Rauschfiltern.


    Was ich suche ist ein gute Kombination zu LRemoveDust(4,x) mit kleinem Wert max 4,2 !
    Zb :
    LRemoveDust(4,1)
    FluxSmoothST(5,5)

  • Zitat von acrowley

    Hossa....du knallst da aber heftig Denoiser rein.

    Naja, bei nem VHS-Ripp wahrscheinlich nötig.

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • Der LRemoveDust() ist zwar schon gut, aber nicht absolut universell. Gerade bei etwas stärkerem Rauschen von analogen TV-Caps könnte ich mir vorstellen, dass er nicht ganz so gut "packt". Hängt u.a. mit der "Korngröße" des Rauschens zusammen, die sollte für LRemoveDust nicht allzu groß sein - was sie aber bei analogen TV-Caps oftmals ist.
    Das "Schmieren" bei größeren Werten für "Limit" ist normal. Gegenrezept wäre ein LowPass-Filter. Ist ja eigentlich schon da ... aber ich sollte wohl besser erst mal einen eigenen Thread für LRemoveDust aufmachen, anstatt Versionen davon wild in alle möglichen anderen Threads hineinzuposten ...

    FluxSmooth ist ein sehr guter Filter, und völlig zu Unrecht in Vergessenheit geraten! Flux kombiniert nämlich Methoden von Clense() und TemporalSoften() (FluxSmoothT) bzw. Clense() und Convolution3D (FluxSmoothST).

    Interessant wäre eine Variante mit gleitendem Threshold: bei sehr kleinen Pixel-Unterschieden nur den temporalen Anteil (T) anwenden, bei mittleren Pixeldifferenzen den Temporalen und den Spatialen (ST), und bei Großen nur den Spatialen (S). So in der Art, am besten mit gleitenden Übergängen.

  • Ich habe jetzt FluxSmoothST probiert... Allerdings bin ich davon eher weniger begeistert... Es sind noch zu viele Horizontale Streifen übrig...

    Hier mal meine Ergebnisse... (3MB)
    Filtertest

    Mir pers. Gefällt die Convo_RG2 Combo oder die Convo_RG2_FFT3D combo am besten...

    Naja, Captures sind halt schon etwas noisy...

    ---

  • Insbesondere für analoge VHS-Caps:

    UnDot()
    Cnr2(mode="oxx",scdthr=10,ln=35,lm=192,un=60,um=255,vn=60,vm=255,log=false,sceneChroma=false)
    RemoveDirt(mthreshold=50,pthreshold=20)

    Thresholds in RemoveDirt ggf. anpassen.

  • Zitat von namor82

    Ich habe jetzt FluxSmoothST probiert... Allerdings bin ich davon eher weniger begeistert... Es sind noch zu viele Horizontale Streifen übrig...

    Hier mal meine Ergebnisse... (3MB)
    Filtertest

    Mir pers. Gefällt die Convo_RG2 Combo oder die Convo_RG2_FFT3D combo am besten...

    Naja, Captures sind halt schon etwas noisy...

    Ohje...die Colors sind ja auch (wohl von der Source schon) total "übersteuert"
    Versuche mal zb ColorYUV(levels="PC->TV") ...oder eigene Werte ermitteln mit Histogram()

    Ich denke mal das FluxSmoothST(7,7) da Probleme mit den Farben hat oder so.
    Womit hast du das denn aufgenommen ? Sieht aus wie VHS Capture ?


    @Diedee..ja ein LRemoveDust Thread zb im Avisynth Bereich wäre ein sehr gute Sache

  • Zitat von acrowley

    Ohje...die Colors sind ja auch (wohl von der Source schon) total "übersteuert"
    Versuche mal zb ColorYUV(levels="PC->TV") ...oder eigene Werte ermitteln mit Histogram()


    Also ich finde die Colors gut so... Viel Farbe gefällt mir besser als zu wenig...
    ColorYUV(levels="PC->TV") habe ich schon probiert, gefällt mir überhaupt nicht...

    Es sind VHS-Captures, da hast du recht.
    Ich weiß auch nicht, wieso FluxSmoothST(7,7) so wenig filtert, ich denke das ist ein wirklich sehr weicher Filter, also der filter echt total minimal um die Quelle nicht zu verunstalten...

    Naja, mal schauen was sich noch so ergibt, bin mir dem Ergebnis eigentlich schon etwas zufrieden, jedoch ist mir das immer noch zu wenig Schärfe :(

    grua

    Zitat von grua

    Insbesondere für analoge VHS-Caps:

    UnDot()
    Cnr2(mode="oxx",scdthr=10,ln=35,lm=192,un=60,um=255,vn=60,vm=255,log=false,sceneChroma=false)
    RemoveDirt(mthreshold=50,pthreshold=20)

    Thresholds in RemoveDirt ggf. anpassen.


    Sieht ja schon sehr nett aus. :)

    Allerdings kenne ich mich mit CNR2 überhaupt nicht aus... Hab' mal kurz in die Doku geschaut, jedoch wird da nicht erklärt, was
    "lm, ln" "un, um" "vm,vn" bedeutet und was die machen.

    Dort steht nur

    Zitat

    the n values are the movement sensibility
    higher values will denoise more...
    the m values are the maximum effectiveness of the denoiser
    lower them to reduce the denoising effect...


    über die einzelnen L,V,U Parameter wird nix gesagt :nein:
    Weiß jemand was darüber ?

    RemoveDirt ist doch eine Funktion wie LRemoveDust richtig ? Muss ich mal antesten...

    ---

  • RemoveDirt ist ein temporaler Filter der "Dreck" filtern soll.
    Remove Dirt entfernt Kratzer im Film, Weisse Fädchen die kurz aufblitzen etc. Also zb wie man oft in alten Filmen sieht. Habe ich selber noch nicht probiert.

    Mhh.. also FluxSmoothST() haut eigentlcih schon ganz schön rein.
    Taj aber so ist das wohl..machne Plugins funktionieren nicht so gut mit gewissen Quellen.

    Nimm doch nach dem Resizen zum schärfen limitedsharpen()..dauert zwar lange aber sehr geil .
    Funktion:

Jetzt mitmachen!

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