AviSynth - geeignet für Bildbearbeitung?

  • Alles neu, macht der Mai.


    Die Tooltips sind erstellt – vorerst aber nur in englischer Sprache. Wer bessere Erklärungen für die Tooltips beisteuern kann, nur her damit.


    Dann habe ich dem Skriptinspektor auch noch ein paar "Lernstufen" hinzugefügt: "Anfänger", "Fortgeschrittener" und "Experte". Ein "Experte" sieht alle Parameter, ein "Fortgeschrittener" nur die wichtigsten Parameter usw. "Anfänger" ist dabei Teilmenge von "Fortgeschrittener" und "Fortgeschrittener" ist Teilmenge von "Experte". Diese Informationen zu den Levels können ebenfalls im Skript untergebracht werden.


    Diese optionalen Informationen (für den Skriptinspektor) sehen nun wie folgt aus (Beispiel: GradFun2DBMod):



    Der erste Boolesche Wert steht für die Sichtbarkeit des Parameters (False würde z. B. bedeuten, dass der Parameter im Skriptinspektor gar nicht erscheint). Der zweite Wert definiert, ob der Parameter den Status "Read Only" hat. Der dritte Wert definiert den gewünschten Level. Zur Auswahl stehen: "Beginner", "Intermediate" und "Expert".


    Anschließend kann eine Definition für eine Auswahlliste ("PickList") folgen. Im Anschluss daran, können dann Informationen für einen Tooltip stehen.


    Wenn Informationen zu einem Parameter gänzlich fehlen, arbeitet das Programm mit Standardvorgaben. "True, False, Beginner" im Skript ist identisch mit der Standardvorgabe.

  • Der Skriptinspektor kann auf Wunsch jetzt auch einen Schriftarten- und Farbauswahldialog anzeigen (siehe Skript "Subtitle").


    Bei der (einfachen) Eingabeüberprüfung ist mir aufgefallen, dass bei den AviSynth-Typen "float" und "int" das Minuszeichen nicht eingegeben werden konnte. Und bei "int" konnten keine Hexadezimalzahlen eingegeben werden. Das habe ich berichtigt.


    Um auch beliebige Werte in einem Eingabefeld zuzulassen, habe ich dem Skriptinspektor einen Schalter hinzugefügt, wo man die Eingabeüberprüfung deaktivieren kann. So lässt sich zum Beispiel in einem Feld, wo man eine Farbe eingeben kann, statt einer Zahl auch ein String (z. B. "color_gray50") eingeben.

  • Kann mir jemand erklären, warum


    Code
    1. T01 = Crop(0 * Width / 4, 0 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T02 = Crop(1 * Width / 4, 0 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T03 = Crop(2 * Width / 4, 0 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T04 = Crop(3 * Width / 4, 0 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T05 = Crop(0 * Width / 4, 1 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T06 = Crop(1 * Width / 4, 1 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T07 = Crop(2 * Width / 4, 1 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T08 = Crop(3 * Width / 4, 1 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T09 = Crop(0 * Width / 4, 2 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T10 = Crop(1 * Width / 4, 2 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T11 = Crop(2 * Width / 4, 2 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T12 = Crop(3 * Width / 4, 2 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T13 = Crop(0 * Width / 4, 3 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T14 = Crop(1 * Width / 4, 3 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T15 = Crop(2 * Width / 4, 3 * Height / 4, Width / 4, Height / 4).FFT3DFilter()T16 = Crop(3 * Width / 4, 3 * Height / 4, Width / 4, Height / 4).FFT3DFilter()StackVertical(StackVertical(StackHorizontal(StackHorizontal(T01, T02), StackHorizontal(T03, T04)), StackHorizontal(StackHorizontal(T05, T06), StackHorizontal(T07, T08))), StackVertical(StackHorizontal(StackHorizontal(T09, T10), StackHorizontal(T11, T12)), StackHorizontal(StackHorizontal(T13, T14), StackHorizontal(T15, T16))))


    etwa doppelt so schnell ist, wie


    Code
    1. FFT3DFilter()


    ?


    Einen notwendigen Überlappungsbereich im 1. Skript lassen wir mal außen vor.


    Getestet mit AviSynth 2.60 (Version vom 27.09.2009) unter Windows 7. Das gleiche "Phänomen" habe ich im Windows-XP-Modus, wo ich AviSynth 2.58 installiert habe.

  • Der dünne Dull deckte dem dicken Dull das Dach. Danach dankte der dicke Dull dem dünnen Dull dafür, dass der dünne Dull dem dicken Dull das Dach deckte.


    So ähnlich muss sich die Geschichte zugetragen haben. :grübeln:


    Was hat das jetzt mit dem neuen Update zu tun? Nichts! :ani_lol: Oder doch? :grübeln:


    Die Änderungen:


  • Es gab Updates für die Plugins NNEDI2 und EEDI3. Die Updates für NNEDI3 und die ImageMagick-Bibliotheken waren schon im letzten "leisen" Update enthalten.


    Fürs Antialiasing habe ich jetzt auch noch "SantiagMod" mit ins Boot geholt. Man könnte jetzt natürlich auch noch mit Masken (siehe MaskTools) arbeiten, habe ich aber vorerst gelassen (benötigt außerdem den YV12-Farbraum).


    Original (PointResize von 3264x2448 auf 1024x768) >>


    SantiagMod(type="EEDI3", strh=1, strv=1) >>
    SantiagMod(type="EEDI3", strh=2, strv=2) >>


    SantiagMod(type="NNEDI3", strh=1, strv=1) >>
    SantiagMod(type="NNEDI3", strh=2, strv=2) >>

  • In einem speziellen Fall wurde das Programm gar nicht gestartet. Habe daraufhin die Windows-Nachrichten zur Installation und Deinstallation von Fonts geändert.


    Zudem gab es Updates von den folgenden Plugins: "FFmpegSource2", "Mask Tools 2" , "NNEDI3" und "SmoothAdjust".

  • Mit der Umstellung auf Version 2.6.0 von AviSynth, habe ich auch gleich die Probleme mit den Verschiebungen in den Farbkanälen bei Farbraumumwandlungen (von RGB32 nach YV12 und wieder zurück) behoben.


    Die Verzeichnisnamen im Vorlagen-Verzeichnis werden nun ebenfalls übersetzt. Ebenso die Parameter-Beschreibungen im Skript-Inspektor (die Übersetzungen sind aber noch nicht fertig).


    Zudem habe ich "NLMeansCL" zu den Entrauschern hinzugefügt.

  • Habe die Seite "AviSynth-Skripte" mit Drag-and-Drop-Funktionalitäten erweitert. Skripte können nun direkt an die gewünschte Stelle in der Jobliste platziert werden. Auch ein Sortieren der Jobliste ist damit möglich.


    Über das Kontextmenü in den Vorschaufenstern kann man nun individuell bestimmen, ob man das Bild vor oder nach einer Filteranwendung angezeigt haben möchte.

  • :daumen: Danke.


    Bin mir jetzt nur nicht ganz sicher, welche Antworten du auf "Seite 13" siehst, eventuell andere als ich? Hängt ja von der Anzahl der Antworten pro Seite ab...


    Nimm lieber die Antwort-#Nummer rechts oben als Link. Dann finde auch ich, wo es schon mal um das Resizen "ohne Gamma-Fehler" ging.

  • Das hat schon seine Richtigkeit - das betrifft nämlich die ganze Seite (und eine Nachricht auf der folgenden Seite). Alles hat seinen tieferen Sinn. :lol:


    Bei der Erzeugung des JPEG-Formats konnte man bisher "Chroma Subsampling" (löblich: Farbunterabtastung) nicht explizit aus- bzw. abwählen. Das habe ich, neben ein paar anderen Dingen, geändert.


    In den Optionen für das JPEG-Format kann man nun explizit den Farbraum (RGB, Graustufen, YCbCr, CMYK, YCbCrK), die Farbunterabtastung (4:1:1, 4:2:2, 4:4:4), die DCT-Methode, sowie eine optimierte Huffman-Tabelle (für eine stärkere Kompression) auswählen.

  • Nun ja, aber...


    Wenn du 10 Beiträge pro Seite eingestellt hast, siehst du auf Seite 13 die Beiträge 121-130.


    Wenn ich 20 Beiträge pro Seite eingestellt habe, sehe ich auf Seite 13 die Beiträge 241-260.


    Verlinkst du dagegen den ersten Beitrag, ab dem die Diskussion losgeht, lese ich von da aus auch die folgenden weiter unten. Egal auf welcher Seiten-Nummer.
    __


    Progressiv-Encodierung wäre auch schön; und adaptive Makroblock-Kompression ... aber das bleibt ein Traum. Außer xat.com JPEG Optimizer hat so was kein einziges Tool, fürchte ich.


  • Link geändert. Wusste gar nicht, dass man die Anzahl der Beiträge pro Seite einstellen kann. :D


    Progressiv-Encodierung wäre auch schön


    Die Option nennt sich "Als progressives JPG abspeichern".

  • Zoomen ist jetzt auch ohne erneutes Laden und Verarbeiten der Bilder möglich (war bisher mit AviSynth-Mitteln gelöst).


    Bei einem Test ist mir aufgefallen, dass AviSynth einen einmal reservierten Speicher für die Skript-Umgebungsvariable nicht mehr abgibt. Wenn man zunächst ein kleines Bild geladen hatte und anschließend ein größeres Bild, dann vergrößerte sich auch der Speicher für diese Skript-Umgebungsvariable. So weit, so gut. Wenn man nun aber wieder ein kleineres Bild geladen hatte, dann verringerte sich der Speicher dagegen nicht (er blieb gleich). Das ist natürlich nicht gerade speicherfreundlich. Ich lasse diese Skript-Umgebungsvariable nun nach jedem Gebrauch löschen (durch einen speziellen AviSynth-Befehl) und erzeuge bei Bedarf einfach eine Neue. Sollte das aus irgendeinem Grunde nicht funktionieren (wird bei Start des Programms getestet), dann benutzt das Programm automatisch die alte Methode.


    Zu guter Letzt habe ich dann auch noch eine zusätzliche Seite "Zuschneiden" hinzugefügt. Hier kann man im Vorfeld ein Bild drehen und beschneiden.