Rauschen entfernen...

  • Hallo Profis,

    Ich brauche eure Hilfe. Ich habe einen AVISynth-Script erstellt, der ein
    leicht verrauschtes und interlaced Capture-Video verbessert.
    Ich möchte, dass ihr mal den Script ansieht.
    Vielleicht hat da jemand einige Verbesserungsvorschläge:

    # Plugins laden
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\Convolution3DYV12.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\Decomb510.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\UnFilter.dll")
    # Capture-Video laden
    AviSource("P:\Virtual VCR\Capture.avi")
    # Anfang und Ende wegschneiden (trimmen)
    Trim(1889,118879)
    # Aus jedem einzelnen Field ein eigenständiges Frame erzeugen
    SeparateFields()
    # Der Conversion3D-Filter arbeitet nur im YV12 Farbraum,
    # also den Farbraum von YUY2 nach YV12 konvertieren.
    ConvertToYV12()
    # Interlacen (Gegenteil von SeparateFields!)
    Weave()
    # Mit dem Decomb-Filter deinterlacen
    FieldDeinterlace(full=true,threshold=15,dthreshold=1,blend=true)
    # Hohe Frequenzen glätten, die über der VHS-Bandbreite liegen
    unfilter(-100,0)
    # Rauschen reduzieren, also denoisen
    Convolution3d (preset="vhsBQ")
    # Schärfe wiederherstellen
    unfilter(100,0)
    # Resizen und croppen
    LanczosResize(672,544,8,12,738,546)
    # Schwarze Pixel hinzufügen
    AddBorders(24,16,24,16)
    # Farbraumkonvertierung von YV12 nach YUY2
    ConvertToYUY2()
    # Farbton (hue), Sättigung (sat), Helligkeit (bright) und Kontrast (cont) einstellen
    Tweak(hue=0.0,sat=0.9,bright=0.0,cont=1.0)

    Mein Videorecorder (Sharp VC-GH611), hat hinten nur zwei Scartanschlüsse.
    Ich besitze eine TV-Karte von Pinnacle (PCTV Pro). Diese Karte hat zwei
    Video-Anschlüsse (Compite und S-Video). Ich habe den VHS-Rekorder mittels
    Adapter (Scart-Composite-S-Video) mit dem Composite-Anschluss der
    TV-Karte verbunden. Dies ist die einzige Möglichkeit, um ein vernünftiges Bild
    zu bekommen, das jedoch leicht verrauscht (In der Nähe sehe ich unruhige
    Linien, aber in der Ferne ist das Bild recht gut) und interlaced ist.
    Wenn ich den Rekorder jedoch mit dem S-Video-Anschluss der TV-Karte
    verbinde, habe ich ein SW-Bild mit einem Punktmuster, was für mein Vorhaben
    nicht in Frage kommt.
    Ich weiss, dass S-Video besser als Composite ist. Jetzt möchte ich halt das
    Beste daraus machen und mit AVISynth das Capture-Bild verbessern.
    Ich habe den VHS-Film mit Virtual VCR aufgenommen (Einstellungen:
    Auflösung=720x576, Farbraum=YUY2, Codec=Huffyuv 2.1.1, Audio-Frequenz=48kHz,
    Audio-Resolution=16).
    Ich möchte den AVS-Script mit CCE laden und dann anschliessend das Capture-Video
    zu einem DVD-konformen MPEG-Video encoden.
    Also kann ich mit AVISynth noch mehr herausholen? Mir geht es einfach nur darum,
    wie ich das leichte Rauschen am besten entfernen und das Video deinterlacen kann.

  • Ich kenne mich nicht sonderlich mit Captures aus, insofern kann ich dir nicht sagen, ob ds deine Sachen das Optimale sind, aber:

    • Bringt es gar nichts, SeparateFields und Weave hintereinander auszuführen, wenn du dazwischen nichts machst. Da du interlaced bist, wäre ConvertToYV12(interlaced=true) besser gewesen.
    • Die YV12-Version von Convolution3D wurde nie fertiggestellt. Sie ist im Funktionsumfang eingeschränkt und auch fehlerhaft. Daher sollte man nur die YUY2-Version verwenden. Dann brauchst du auch die Farbformatkonvertierungen nicht.

    Gruß
    Arlsair

  • # Hohe Frequenzen glätten, die über der VHS-Bandbreite liegen
    unfilter(-100,0)
    # Rauschen reduzieren, also denoisen
    Convolution3d (preset="vhsBQ")
    # Schärfe wiederherstellen
    unfilter(100,0)

    wo hast du denn das her???
    Lasse Convolution3d wenn dann das relle Korn bearbeiten, sonst gehen dir mit dem vorherigen Schärfen auch noch die letzten Details flöten.
    Und ein späteres Schärfen hat keine Qualitätsrückgewinnung zur Folge, sondern du schärfst mit 100 zudem auch alle "Nebenwirkungen" des Temporalen Schärfens von Convolution3d

    Gruss Inc.

    Edit: Nochwas, wenn du interlaced material mit temporalen filtern bearbeitest, solltest du die Interleave Methode nutzen oder vorher deinterlacen.

  • Also, dann sollte im AVISynth-Script folgende Zeilen stehen:

    # Plugins laden
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\convolution3d.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\Decomb510.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\UnFilter.dll")
    # Capture-Video laden
    AviSource("P:\Virtual VCR\Capture.avi")
    # Anfang und Ende wegschneiden (trimmen)
    Trim(1889,118879)
    # Mit dem Decomb-Filter deinterlacen
    FieldDeinterlace(full=true,threshold=15,dthreshold =1,blend=true)
    # Rauschen reduzieren, also denoisen
    # entspricht 'Convolution3D (preset="vhsBQ")' ---> VirtualDubMod stürzt ab!
    Convolution3D (0,32,128,16,64,10,0)
    # Resizen und croppen
    LanczosResize(672,544,8,12,738,546)
    # Schwarze Pixel hinzufügen
    AddBorders(24,16,24,16)
    # Farbton (hue), Sättigung (sat), Helligkeit (bright) und Kontrast (cont) einstellen
    Tweak(hue=0.0,sat=0.9,bright=0.0,cont=1.0)

    Welche Erfahrungswerte habt ihr für Convulution3D und FieldDeinterlace
    genommen, die wirklich optimal sind, vorallem in Bezug auf Capturing?

  • Setze den Fielddeinterlace auf full=false!
    Denn dann wird auch nur dort deinterlaced wo's auch nötig ist, somit würden dann auch deine Thresholds sinn machen, da die Thresholds bei Full=true eh nix bringen, da fielddeinterlace sodann eh constant arbeiten würde.

    "Optimale" Settings zum Entruaschen gibts leider nicht, da musst du dich ran tasten.

    Ich habe z.B. letztens die drei ersten Aliens Folgen auf Pro7 gecaptured und der 2te Teil, obwohl er neueren Datums ist, hatte WESENTLICH mehr Rauschen im Broadcasting als z.B. der erste Teil, welcher übrigens Mono war. Und es lag nicht am Wetter oder Signalweg, .... d.h. jede Übertragung ist anders und erfordert spezielles filtern.

  • Zitat von incredible

    Edit: Nochwas, wenn du interlaced material mit temporalen filtern bearbeitest, solltest du die Interleave Methode nutzen oder vorher deinterlacen.


    Es deinterlaced vorher. Da braucht man sich nicht mehr um die Felder zu kümmern.

    Gruß
    Arlsair

  • hehe, das hat er wohl aus der Capture-FAQ.
    Das steht beim PAL-60 capturing.
    also die sache mit unfilter bringt wirklich was, da man hierbei wirklich nur den grain der uebertragung wegnimmt und nicht das wirkliche bilddetail.
    und nach dem denoising kann man dann mit 100,0 die kanten wieder etwas steiler stellen, aber das wuerde ich heute auch nicht mehr benutzen, dann lieber meine VHSsharp-funktion (kombination aus unsharpmask & warpsharp fuer horizontales schaerfen)

  • Zitat von arlsair

    Es deinterlaced vorher. Da braucht man sich nicht mehr um die Felder zu kümmern.


    Da habe ich in meinem ersten Posting wohl zu schnell die Zeilen übersprungen ;)

    @ Scharfis_Brain

    Mich würde deine VHSsharp Funktion mal interessieren, da ich generell ein Fan deiner avsi's bin!
    Zwar ohne vorher unfilter (-xx,0) anzuwenden habe nach den Noise-filtern bei Capts. ebenso lediglich mit Unfilter(xx,0) geschärft.

    Als ich Kwag deine 60ito24p Funktion gezeigt hatte, wollte er dir glatt zu Weihnachten ein paar Puertoricanerinnen von seiner Insel zu dir schicken! Sozusagen als kleine "Donation". Übrigens sind die angekommen?? :cool:

    Gruß
    Inc.

  • VHSsharp-Funktion?
    Das klingt ziemlich interessant!
    Woher nehme ich den ensprechenden Filter? Ich habe unter http://www.avisynth.org/warpenterprises nachgeschaut.
    Ist diese Funktion etwa ein Bestandteil des WarpSharp Packages
    (warpsharppackage_25_dll_20031103.zip)?

    Ich habe über die Reihenfolge der eingesetzten Filter nachgedacht,
    weil ich denke, dass diese Reihenfolge einen Einfluss auf das gefiltertes
    Video-Bild haben. Ich würde die Filter/Funktionen in der folgenden Reihenfolge
    einsetzen:

    1. Trim
    2. LanczosResize
    3. AddBorders
    4. FieldDeinterlace
    5. Convolution3D
    6. VHSsharp
    7. Tweak

    Was meint ihr dazu?

  • VHSsharp ist eine individuelle Funktion von mir, die aus mehreren AVIsynthfiltern zusammengestellt ist.

    Ich werde sie nachher mal rauskramen...

    incredible:

    Zitat

    Als ich Kwag deine 60ito24p Funktion gezeigt hatte, wollte er dir glatt zu Weihnachten ein paar Puertoricanerinnen von seiner Insel zu dir schicken! Sozusagen als kleine "Donation". Übrigens sind die angekommen??

    hm... hier ist nichts angekommen....


  • diese Funktion macht nichts anderes, als das Video in der vertikalen um den faktor oversize zu vergroeszern, dann wird ein scharfzeichner deiner Wahl benutzt und danach wird das video wieder verkleinert.
    das ganze geschieht, um den schaerfungseinfluss des schaerfungsfilters nur auf die horizontale richtung einzuschraenken, denn VHS hat ja in der vertikalen genausoviel detail, wie die TV-Ausstrahlung.

  • Zitat von scharfis_brain

    ...., denn VHS hat ja in der vertikalen genausoviel detail, wie die TV-Ausstrahlung.

    das kann nicht sein, SVHS hat 400 Zeilen (oder noch ein paar mehr) und VHS 200 Zeilen. Die TV Ausstrahlung hat aber eher soviel wie SVHS als wie VHS.

    sorry, falls das jetzt zu spitzfindig war, aber mir stach das irgendwie ins Auge.


    ....cu

  • hehe, na dann werd' ich mal weiter drin rum stochern:

    VHS = 200 linien
    SVHS = 400 linien soweit okay.

    das gibt aber die HORIZONTALE Aufloesung an. d.h. ich kann bei VHS max. 200 senktrechte lininen aufloesen also ungefaehr sowas hier: |||||||||||||||||||
    dabei misst man aber nicht die VERTIKALE aufloesung.

    meine Funktion versucht nun diese unscharfen kanten wieder aufzurichten ohne die vertikale anzutasten, da bei VHS in der vertikalen garkein informationsverlust entstehen kann.

    also nochmal kurz'n'buendig:

    horizontale aufloesung
    -------> unscharf

    |
    |
    | vertikale aufloesung
    |
    |
    V
    scharf

  • Also dann...

    Import("VHSSharp.avs")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\convolution3d.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\Decomb510.dll")
    LoadPlugin("G:\Multimedia\AviSynth\Plugins\warpsharp.dll")
    AviSource("P:\Virtual VCR\Capture.avi")
    FieldDeinterlace(full=false,threshold=15,dthreshold =1,blend=true)
    Trim(1889,118879)
    LanczosResize(672,544,8,12,738,546)
    AddBorders(24,16,24,16)
    Convolution3D (0,32,128,16,64,10,0)
    VHSSharp(2)
    Tweak(hue=0.0,sat=0.9,bright=0.0,cont=1.0)

    ...sieht gar nicht so schlecht aus...:-)))

  • fuer vhssharps oversize sind erst parameter ab 4 aufwaerts sinnvoll (vorsicht, laaaaaangsam)

    ausserdem solltest Du unbedingt die Parameter des Warpsharp-Filters anpassen, denn der ist in meiner Funktion etwas sehr agressive eingestelllt.

  • Dreamcatcher


    Kannst die Funktion ja auch als textfile mit der Endung .avsi in den Pluginsordner von AVS 2.5 ablegen, wird dann nach bedarf autom. geladen, wie bei den anderen Filtern auch.

    Somit musst du nur noch VHSsharp(x) im script eingeben und nicht mehr die ganzen LoadPlugin's vorab. Da ich mal davon ausgehe, dass wir hier von Avisynth 2.5x reden ;)

Jetzt mitmachen!

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