AviSynth - geeignet für Bildbearbeitung?

  • Nur noch mal zur Kontrolle. Ich habe das mit dem Supersampling jetzt wie folgt gelöst (vereinfachte Darstellung):

    Code
    Spline36Resize(Round(640 * 1.5 / 2) * 2, Round(480 * 1.5 / 2) * 2) # SupersamplingRGBtoYV12()ff_LimitedSharpenFaster(ss_x=1.0, ss_y=1.0)YV12toRGB()Spline36Resize(640, 480) # Auf Zielgröße bringen

    Dabei wird der Chroma-Anteil mitskaliert. Eigentlich müsste am Ende stehen:

    Code
    # Sei clip = Spline36Resize(640, 480).
    
    
    RGBtoYV12().MergeChroma(clip.RGBtoYV12(), 1)

    Wegen der zusätzlichen Farbraumumwandlungen - die im Übrigen durchaus noch vertretbar wären - habe ich darauf aber verzichtet. Ein Unterschied zu oben ist ohnehin nicht (wirklich) erkennbar.

    Didée: Du sorgst beim Supersampling für eine Teilbarkeit durch 8. Brächte das bei Bildern überhaupt Vorteile? Mir fällt da eigentlich nur das JPG-Format ein, das davon profitieren könnte.

    5 Mal editiert, zuletzt von Archimedes1 (14. Januar 2009 um 22:20)

  • Da ich mit den Resize-Ergebnissen von JASC Paint Shop Pro bei Computergrafiken ohne Antialiasing gar nicht begeistert war (alle verfügbaren Varianten erhalten das Aliasing im wesentlichen), habe ich mal alle in Fritz Photo verfügbaren Varianten verglichen:

    Außer PointResize (welch Überraschung...) brachten alle beim Verkleinern auf eine erheblich kleinere Fläche (etwa 1/4 Seitenlänge) wesentlich überzeugendere Ergebnisse mit gutem Antialiasing, lediglich GaussResize ließ bei der Voreinstellung (p=75) noch leichte Ansätze zurück - was hier daran lag, dass Linien-Pixel in "Mittellage" einen größeren Unterschied zur "Übergangslage" (zwischen zwei Ziel-Pixeln) haben. Eine Einstellung von p=25 sorgte für ein gleichmäßigeres, dadurch aber auch etwas weicheres Ergebnis.

    Außerdem sind alle Filter in der Lage, RGBA zu verarbeiten (z.B. transparente PNGs), außer die EDI-Filter. Und auch die Gamma-Korrektur verwirft den Alpha-Kanal.
    __

    Nettes Extra in AviSynth 2.5.8: Die "Blackman"-Filterung ist aus dem Audiobereich bekannt (z.B. Filterung der FFT-Spektralanalyse). Vielleicht kommen ja auch noch Hamming und Hanning dazu? :D

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    Einmal editiert, zuletzt von LigH (22. Januar 2009 um 10:13)

  • Außerdem sind alle Filter in der Lage, RGBA zu verarbeiten (z.B. transparente PNGs), außer die EDI-Filter. Und auch die Gamma-Korrektur verwirft den Alpha-Kanal.

    Da bei NNEDI, EEDI2 und bei der (experimentellen) Gamma-Korrektur eine Umwandlung in den YV12-Farbraum erfolgt, bleibt der Alpha-Kanal auf der Strecke. Eigentlich ist das immer dann der Fall, wenn eine YV12-Farbraumumwandlung durchgeführt worden ist. :ohoh:

    Man müsste in solchen Fällen den Alpha-Kanal getrennt verarbeiten und abschließend mit MergeARGB dem RGB-Bild wieder zuführen. Das würde allerdings einen Rattenschwanz von Farbraumumwandlungen nach sich ziehen (nach jeder YV12-Filterung müsste man sofort wieder in den RGB-Farbraum umwandeln).

    5 Mal editiert, zuletzt von Archimedes1 (30. Januar 2009 um 20:16)

  • Hi archimedes, ich bin zufällig über Fritz Photo gestolpert(hab nach GPU beschleunigten Filtern gesucht)und gleich mal ausprobiert. Ist ne Klasse Idee, aber wie schon jmd anderer am Anfang dieses Threads fragte, wo ist die Vorschau Funktion? Du stellst die Parameter für die Filter doch sicher auch nicht nach Erfahrungswerten ein, die Möglichkeiten laden doch gerade dazu ein zu experimentieren. Ich bin beim Sichten der verfügbaren AVS Editoren z.Z. beim AvsP hängengeblieben. Ich hab es noch nicht getestet, aber damit sollte es möglich sein die FritzP AVS mit einer Vorschau zu testen.

  • Ich habe mir das mit dem Alpha-Kanal noch mal angeschaut. Ich werde in den betreffenden Scripts wohl einen Schalter "KeepAlphaChannel" (Voreinstellung: False) einbauen. Im Script "FritzPhotoResize" habe ich schon mal dafür gesorgt, dass ein evtl. vorhandener Alpha-Kanal in jedem Fall erhalten bleibt. Ein entsprechendes Update habe ich bereits hochgeladen. Und ja, eine Vorschau wird’s demnächst - irgendwann einmal – auch geben. Ansonsten ist das fertig generierte Bild doch eine prima "Vorschau". :D

  • Wenn man Serien schießt und nicht mit einer Kollektion unterschiedlichster Motive(Panorama, unterschiedliche Qualität bei Helligkeit oder Schärfe, aus der Bewegung, Unterwasser, ... also ganz normale Urlaubsfotos ;) ) zu tun hat, dann habt ihr natürlich recht.

  • Meine Rettungsmaßnahmen für den Alpha-Kanal sehen jetzt wie folgt aus: Unter Einstellungen erscheint bei den in Frage kommenden Grafikformaten ein Schalter "Transparente Farbe behalten". Ist dieser aktiviert, so wird dafür gesorgt, dass nach einer YV12-Filterung der Alpha-Kanal wieder zugeführt wird. Die betreffenden Scripts habe ich bereits angepasst. Danke auch noch mal an LigH für den Test.

  • Ich habe gerade die Unterstützung für LimitedSharpenFasterMod (LSFmod) implementiert. Alle Parameter können unter Einstellungen vorgenommen werden. Zudem können über Vorlagen verschiedene Default-Werte geladen werden. Momentan bieten sich zwei Vorlagen an: "Range sharpening (Smode 3)" (identisch mit Smode 3 von LSF) und "Nonlinear Sharpening (Smode 5)" gemäß der Beschreibung von LSFmod.

    Code
    Sharpen mode:
      =1 : Unsharp masking (from warpsharp)
      =2 : Unsharp masking (from variableblur) 
      =3 : Range sharpening
      =4 : Nonlinear sharpening (original  version)
      =5 : Nonlinear sharpening (corrected version)
  • (@ LigH) - Das war wohl die Erklärung zu "Lmode=3", nicht zu "Smode=3". (Smode ist im Quelltext nämlich gar nicht erklärt...)
    "limited sharpening" gilt für jeden Modus, darum geht's ja gerade in LSF.

    'Ne gute Übersetzung ist schwierig. Wörtlich bietet sich "Bereichs-Schärfung" an, gleichfalls korrekt wären auch "Intervall-Schärfung" oder gar "Spann-Schärfung".

    Nochmal kurz zum Prinzip: Smode=3 schärft ein Pixel in Relation zum lokalen [min,max]-Intervall der Umgebung des Pixels (d.h. es werden eigentlich nur *zwei* Umgebungs-Pixel benutzt: das dunkelste und das hellste, und dann wird gegen (min+max)/2 geschärft).
    Die meisten anderen Schärfungsmethoden benutzen einen gewichteten Mittelwert *aller* Pixel in einer Umgebung, um das aktuelle Pixel zu schärfen.

    "range" war halt kurz und knackig für's englische. Wie man das am besten ins Deutsche zwingt, das ist wohl Geschmackssache ...


    edit: die LSFmod ist wohl vorzuziehen. Da ist die nötige Korrektur drin, um z.B. bei "flachen" Bildbereichen ein ungewolltes Verstärken von Banding zu vermeiden, oder zumindest zu reduzieren.

    Nagging: Man nehme Didée's LSF, füge die von Didée vorgeschlagene Korrektur hinzu, mixe noch die Hälfte von Didée's SeeSaw dazu. So. Dann schnell noch ein paar zusätzliche RemoveGrain-Modi erlauben und eine "show"-SubtitleFunktion für die Parameter dazuklemmen - fertig ist ein neues Script mit (C) LaTo. :rolleyes:
    Na ja. Aber, wenigstens die Parameter-Überprüfung (Assert) ist löblich.

    3 Mal editiert, zuletzt von Didée (5. Februar 2009 um 13:08)

  • Die Idee mit "Bereichsschärfen" kam mir auch schon, klingt aber irgendwie etwas eigenartig. "Lokales Schärfen"? Ich glaub’, ich nenn’ die Vorlage einfach "LimitedSharpen (Smode 3)", dann weiß man, was gemeint ist.

    Nagging: Man nehme Didée's LSF, füge die von Didée vorgeschlagene Korrektur hinzu, mixe noch die Hälfte von Didée's SeeSaw dazu. So. Dann schnell noch ein paar zusätzliche RemoveGrain-Modi erlauben und eine "show"-SubtitleFunktion für die Parameter dazuklemmen - fertig ist ein neues Script mit (C) LaTo. :rolleyes:
    Na ja. Aber, wenigstens die Parameter-Überprüfung (Assert) ist löblich.


    :lol:

  • So, das Update ist hochgeladen. Ich habe die zwei Vorlagen zu LSFmod jetzt wie folgt benannt: "LimitedSharpen (Smode 3)" und "LimitedSharpen (Smode 5)". Vorlagen können in der INI-Datei selbstständig hinzugefügt werden. Die Schlüsselwörter haben nun auch ein anderes Format bekommen (Beispiele: %%Width%%, %%Height%%) - wegen der Eindeutigkeit. :rolleyes:

  • Zu früh. ;)

    Ein genauerer Blick zeigt: er hat's noch nicht mal richtig gemacht.

    LaTo hat zwar die richtigen Versatzstücke genommen, aber er hat sie nicht richtig eingepflanzt...

    Originalcode LSFmod v1.4:

    Code
    minmaxavg    = mt_average(dark_limit,bright_limit,U=1,V=1)minmaxavgM   = mt_average(dark_limit  .mt_lutxy(tmp,"x y < x 1 + x y > x 1 - x ? ?",U=1,V=1),\                         bright_limit.mt_lutxy(tmp,"x y < x 1 + x y > x 1 - x ? ?",U=1,V=1),U=1,V=1)

    Das sind *zwei* LutXY, und im Mittel wird das Banding-Problem der flachen Bildbereiche nur zu 50% reduziert ("Zufallsprinzip").

    Richtig wäre:

    Code
    minmaxavg    = mt_average(dark_limit,bright_limit,U=1,V=1)minmaxavgM   = mt_lutxy(minmaxavg,tmp,"x y < x 1 + x y > x 1 - x ? ?",U=1,V=1)

    Das ist nur *ein* LutXY, und das Problem wird (soweit möglich) zu 100% reduziert.


    Soviel vom Prinzip her. Weil in LSFmod v1.4 aber noch mehr/andere Smode existieren, bei denen nach dem min/max/average noch zusätzliche 3x3-Kernels angewendet werden, müsste (sollte) es eher so aussehen:

  • (@ LigH) - Das war wohl die Erklärung zu "Lmode=3", nicht zu "Smode=3". (Smode ist im Quelltext nämlich gar nicht erklärt...)

    Ich hatte nur im Quelltext von "LimitedSharpenFaster.avsi" im lib-Verzeichnis von Fritz Photo gesucht, wusste ja nichts von "LimitedSharpenFasterMod". Insofern also Schwarzer Peter beim Fragesteller für ungenaue Erklärung der Voraussetzungen. :cool:


    "Bereichsschärfen" wäre auch mein Vorschlag gewesen, bevor ich in den Quelltext schaute - danach kam keiner mehr von mir... ;)

Jetzt mitmachen!

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