Vapoursynth und Masking Erfahrungen/Empfehlungen?

  • Hi,

    spiele momentan mit dem Gedanken bei Hybrid die Option hinzuzufügen, dass man bei Vapoursynth Filter nur auf bestimmte durch Masken definierte Bereiche anwendet.

    Dies müsste ja mit:

    Code
    core.std.MaskedMerge([org, filtered] , mask)

    machbar sein.

    Die Idee ist hierbei, dass der Benutzer sich einfach aus einer Menge von Masken sich eine Maske auswählt und diese dann verwendet wird.

    Da ich so gut wie 0-Erfahrung angeht was das erstellen von Masken angeht, wollte ich mal Fragen ob jemand bestimmte Skripte zur Erstellung von Masken empfehlen kann?

    Ideal wären natürlich Skripte/Funktionen bei denen man über ein paar Parameter den Bereich der Maske einschränken/erweitern kann.

    Würde mich freuen wenn eventuell der ein oder andere eventuelle Maskskripte/Funktionen teilen könnte.

    Cu Selur

  • Naja es kommt schon stark darauf für was man die Masken am Ende verwenden möchte.

    Die Einsteigerkandidaten wären zb Prewit, Sobel, TCanny, TEdgeMask.

    Siehe auch https://blog.kageru.moe/legacy/edgemasks.html

    std.Binarize kann auch sehr nützlich sein. Das erzeugt eine gleichmäßige Maske ohne Abstufungen. Also jeder Pixel ist "aus" oder "an".

    VapourSynth Paketmanager VSRepo + GUI

    Avisynth Paketmanager AVSRepo + GUI

    Einmal editiert, zuletzt von FatFaster (12. September 2021 um 22:59)

  • Ja, den Blogeintrag zu kagefunc.py kannte ich schon. :)

    Zitat

    Naja es kommt schon stark darauf für was man die Masken am Ende verwenden möchte.

    Typisch wären:

    1. edge masks: nur Kanten oder nach um Kanten soll gefiltered werden

    2. luma mask: nur helle (Bereich) oder dunkle (Bereich) Teile des Bildes sollen gefiltered werden.

    3. motion masks: nur unbewegliche oder bewegliche Elemente sollen gefiltered werden.

    Frage ist halt was macht Sinn den Leuten zur Auswahl zu stellen?

    Cu Selur

  • Hier mal ein Beispiel dafür wie es aussieht wenn man nur alles mit Werten < 30 (also dunkel) filtert (hier deblocked):

    Code
    clipFiltered = core.deblock.Deblock(clip=clipFiltered)
    clipMask = clip
    clipMask = core.std.BinarizeMask(clipMask, 30)
    clipMask = core.std.InvertMask(clipMask)
    clip = core.std.MaskedMerge(clip, clipFiltered, clipMask)

    Cu Selur

Jetzt mitmachen!

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