Bitte um Hilfe bei Modifikation des Toon() Scripts.

  • Hallo, ich würde gerne toon() meinen Wünschen entsprechend „moden“, aber leider reicht mein "Leihen-wissen" bezüglich avisynth nicht aus. Anfangen will ich erstmal mit einem langen Text der erklären soll weswegen ich eine mod dieses Scripts haben möchte:D. (Sollte vielleicht besser übersprungen werden.)

    An toon() gefällt mir besonders gut das es auch Linien erwischt die andere Plugins oder Scripte nicht erfassen, außerdem werden auch leichte Details wie zum Beispiel erötungs Linien durch leichte Verdunklung betont, und awarsharp durch die Maske eben nur auf die die Verdunkelten Linien wirkt. Ich mag die Deformation die awarsharp anrichtet, wen es auf den gesamten Frame angewendet wird, nicht mehr, hinzu kommt das feine Details durch das warsharpening an Deutlichkeit verlieren. Das Problem an toon ist, auch bei der dll, das sich der Ersteller aus Ego gründen weigert die awarpsharp Einstellungen veränderbar zumachen. Seine „Default-Setings“ führen, jedenfalls mit meiner awarpsharp.dll, zu aliasing an den verdünnten Linien.

    1.
    MoMonster hat damals schon mit seiner leichten Modifikation den „depth“ und der „blurlevel“ Wert einstellbar gemacht. Was mir persönlich fehlte war der "cm" Wert. der per default auf 0 war, ich aber 1, meist bevorzuge. Diesen hab ich ohne weiteres durch einen schnellen Blick ins Skrip ändern können. Mein erstes Problem ist aber, dass mir das "linethining" Stellen weise noch nicht stark genug ist, besonders bei "HDTV-Material", noch stärker awarpsharp Einstellungen führen eben wieder zur aliasing der Linien. Ohne Maske würde ich einfach awarpsharp ein zweites mal mit niedrigeren „settings“ aufrufen. Ich bin kläglich daran gescheiter Es, innerhalb des scripst, unter den gleichen Bedingungen, ein zweites mal aufrufbar zu machen. Mein wunsch wer es den zweiten Aufruf der Funktion zusätzlich abschaltbar zu machen um das sie, wen sie nicht benötigt wird, den Rechner nicht belastet.

    Toon + cm:

    Code
    [size=8][NOPARSE]function toon2k(input, float "str", int "l_thr", int "u_thr", int "wdepth", int "wlevel", int "wcm"){sstr	= string(default(str,1.0))lthr	= string(128+default(l_thr,2))uthr	= string(128+default(u_thr,12))ludiff	= string(default(u_thr,12)-default(l_thr,2))wdepth	= default(wdepth,22)wlevel	= default(wlevel,2)wcm	        = default(wcm,1)input.mt_expand().mt_inpand().mt_makediff(input)mt_logic(last,last.aWarpsharp(depth=wdepth,blurlevel=wlevel,cm=wcm), "min")mt_lutxy(last,last.mt_expand(),"y "+lthr+" <= 128 y "+uthr+" >= x "+uthr+" y - 128 * x y "+lthr+" - * + "+ludiff+" / ? 128 - "+sstr+" * 128 + ?")return mt_makediff(input,last,U=2,V=2)}[/NOPARSE][/SIZE]


    Toon + cm + einer der unsäglichen Versuche einen 2ten awarpsharp Aufruf möglich zu machen:nein::

    Code
    [size=8][NOPARSE]function toon2k(input, float "str", int "l_thr", int "u_thr", int "wdepth", int "wlevel", int "wcm", int "bwdepth", int "bwlevel", int "bwcm"){sstr	= string(default(str,1.0))lthr	= string(128+default(l_thr,2))uthr	= string(128+default(u_thr,12))ludiff	= string(default(u_thr,12)-default(l_thr,2))wdepth	= default(wdepth,18)wlevel	= default(wlevel,2)wcm	= default(wcm,1)bwdepth	= default(bwdepth,8)bwlevel	= default(bwlevel,2)bwcm	= default(bwcm,1)input.mt_expand().mt_inpand().mt_makediff(input)mt_logic(last,last.aWarpsharp(depth=wdepth,blurlevel=wlevel,cm=wcm),last,last.aWarpsharp(depth=bwdepth,blurlevel=bwlevel,cm=bwcm), "min")mt_lutxy(last,last.mt_expand(),"y "+lthr+" <= 128 y "+uthr+" >= x "+uthr+" y - 128 * x y "+lthr+" - * + "+ludiff+" / ? 128 - "+sstr+" * 128 + ?")return mt_makediff(input,last,U=2,V=2)}[/NOPARSE][/SIZE]

    2.

    Würde ich ganz gerne noch eine Antialiasing Funktion in die Maske integriert haben, nicht um wirklich schlimme aliasing Probleme zu beheben, sondern um den Linien den letzten kick zu geben.
    Gedacht hab ich an unten folgendes Script. Ich weiß weder ob die Routine zur Festlegung des aaa Bereichs nicht in der „linedarkening-Maske“ schon Kontraproduktive ist oder überhaupt integriert werden kann.

    Wünschen würde, hoffe ich Wünsche mir nicht zu viel, ich mir diese Funktion auch wieder ein-/aus- schaltbar, erstmal hab ich Angst davor das es einen negativen Effekt auf scrollende Kredits haben würde, weswegen ich es Szenen basierend ausschalten können möchte, zweitens falls es mal schnell gehen muss, aa ist ja meist ganz schön larm. Und am leibsten mit den Stärke Einstellungen.

    5 Mal editiert, zuletzt von max2k (15. März 2009 um 10:03)

  • "Toon2k()" mit zusätzlichen Parametern:

    warp_times: 0,1,2,3 oder 4 - Anzahl der aWarpSharp-Durchgänge

    th_luma/chroma, type, aathr: die entsprechenden Parameter von "antialiasing()", die man jetzt beim Aufruf von "Toon2k(...)" zusätzlich mit angibt.
    Wenn aathr=-1, dann wird *kein* Antialiasing durchgeführt.

    Nebenbei die Funktion antialiasing() von MaskTools v1.5 auf MaskTools v2.x angepasst.

    Bitte testen ob's auch funktioniert - ich hab's gar nicht ausprobiert, nur schnell hingeschrieben.


    Edit: kleinen Fehler korrigiert. Das Script funktioniert, technisch. Das was es macht ist aber schlecht. Ausserdem ist "sobel" als edgemask-Methode viel zu schwach, die Maske bleibt ja fast völlig schwarz. "prewitt" nehmen, sonst sieht man nach dem Antialiasing kaum noch einen Effekt.

    2 Mal editiert, zuletzt von Didée (15. März 2009 um 17:06)

  • Danke dir.

    Ich werde es heute Nacht mal ausgiebig testen. Kann sein "Das was es macht ist aber schlecht" daran liegt das die Stärken der Funktionen, zum Beispiel sind es die original "antialiasing()" Einstellungen, noch nicht angepasst sind.

  • Eher und hauptsächlich deswegen, weil der LineDarken-Effekt durch einen nicht-kontinuierlichen Filter erzeugt wird. Das erzeugt "Bruchstücke" von Linien, die entweder verstärkt oder nicht verstärkt werden. Auch ist die Funktion Antialiasing() nicht die allertollste (die gab's in -zig verschiedenen Versionen, - hmh, hab' ich damals nicht sogar daran mitgebastelt..?), auch wegen der verwendeten Edgemask. (Die erzeugt eine binäre S/W-Maske ... brrrr, das war bestimmt nicht nicht von mir.)

    (Fast) Alles, was Pixel entweder zu 100% oder zu 0% mit einem starken Effekt versorgt, ist eigentlich eine Garantie für Artefakte.

    Wär' ich an Cartoons interessiert, dann würde ich da ein paar Sachen ändern ... andere EdgeMask, vermutlich EEDI2 zum Interpolieren, eine weichere Differenz zum Verstärken von Linien, etc.pp. ...
    Zum Glück interessieren mich Toons eher recht wenig. :)


    Ah, übrigens ...

    Zitat

    Was mir persönlich fehlte war der "cm" Wert. der per default auf 0 war, ich aber 1, meist bevorzuge. Diesen hab ich ohne weiteres durch einen schnellen Blick ins Skrip ändern können.

    Ja, den cm-Parameter hast Du brav eingefügt. Was Dir aber entgangen ist, ist dass der erzeugte Effekt im Script überhaupt nicht verwendet wird. Chroma-Warp hin oder her, am Ende kommt nur das unveränderte Original-Chroma 'raus. ;)

  • aath < 0 ? last : last.antialiasing(th_luma,th_chroma,type,aath)

    Ist ein Tipo oder. Richtig wer

    aath > 0 ? last : last.antialiasing(th_luma,th_chroma,type,aath)

    oder ?

  • Nein, das ist kein Tippfehler. So wie ich's geschrieben habe ist es richtig.

    WENN: (aath kleiner Null)
    -> DANN: (kein antialiasing)
    ---> SONST: (antialiasing mit threshold 'aath')

Jetzt mitmachen!

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