ConvertToXXX() und matrix angabe...

  • Wenn ich bei ConvertToXXX() eine Matrix angeben möchte, erhalte ich immer nur diesen Fehler:

    Zitat

    Avisynth open failure:
    ConvertToYUY2: invalid "matrix" parameter (RGB data only)

    Benutzt die neuste Version AviSynth v2.58 build Aug 30 2008

    Mein skript:

    Code
    DirectShowSource("film.avi",audio=false)
    ConvertToYUY2(matrix="PC.601")

    EDIT: Da wir schonmal beim Thema sind, wo liegt der Unterschied zwischen "PC.601" und "PC.709" ? Im AviSynth Wiki steht dazu nicht wirklich was...

    Einmal editiert, zuletzt von 3ds (14. Oktober 2008 um 10:22)

  • Der Parameter "matrix" ist nur interessant, wenn man zwischen RGB und YUV konvertiert. Der Unterschied zwischen 601 und 709 besteht in der Gewichtung der Farbanteile, wieviel rot, grün und blau zur Bestimmung der Helligkeit Y und davon ausgehend zur Bestimmung der Blau-Differenz U und Rot-Differenz V berechnet wird.

    Wenn der "...Source"-Filter schon eine YUV-Variante liefert, kann nicht mehr in YUV umgerechnet werden - ist ja schon YUV. Innerhalb von YUV-Formaten kann ColorMatrix() von tritical die Farbigkeit nachträglich korrigieren.
    __

    P.S.: Eine AVI-Datei mit DirectShowSource öffnen? Darauf stehen bei uns Stockhiebe auf die Fußsohlen! :motz:

    AviSource hat den Parameter "pixel_type". Damit kann man den VfW-Codec bitten, er möge doch gleich das gewünschte Format liefern. Standard ist wohl "YV12".

  • Ich öffne eigentlich keine .avi ;) Aber das nur nebenbei...

    Ich möchte SpatialSoften nutzten, welches ja nur in YUY2 arbeitet:
    http://avisynth.org/mediawiki/SpatialSoften

    Wenn ich nichts mache, kommt: SpatialSoften: requires YUY2 input

    Also sollte ein ConvertToYUY2(matrix = "pc.601") das machen was ich möchte. Tut's aber nicht, es kommt zu dem Fehler.

    Aber nun hab ich es:

    Code
    ...
    ConvertToRGB()
    ConvertToYUY2(matrix = "pc.601")
    SpatialSoften(1,4,6)
  • Dieses YV12->RGB->YUY2 hin-und-hergefummle ist nicht nur unnötig umständlich, sondern kostet auch Zeit, und ist mit (geringen) Verlusten behaftet.

    WENN diese Konvertierung der Farbmetrik sein MUSS (was ich bezweifeln möchte...), dann mach das besser mit ColorMatrix(), wie LigH bereits empfohlen hatte.

  • Naja, am schönsten wäre es natürlich SpatialSoften würde nicht YUY2 vorraussetzten. Tut es aber leider. Bisher habe ich auch keinen guten Ersatz gefunden. Wobei die Rauschunterdrückung mit SpatialSoften+TemporalSoften auch nicht so ganz das wahre ist, aber besser als die ganzen Plugins die ich ausprobiert habe...

    EDIT: Hab mit ColorMatrix() angesehen. Ich verstehe aber nicht wie mir das helfen sollte.
    Ich vermute mein Eingangs-Format liefert YV12 ich muß das in YUY2 konvertieren, für SpatialSoften. Am ende soll es in x264 gehen, welches IMHO wieder YV12 braucht.
    Mit ColorMatrix kann ich doch nur die Farbverteilung ändern, nicht aber den eigentlichen Farbraum oder verstehe ich da was falsch?

    EDIT2: Ich sehe gerade pixel_type gibt's auch bei DirectShowSource() ;)

    EDIT3: Also ich mache es z.Z. so:


    Eine leichte Farbänderung kann ich sehen. Die Abweichung ist mit PC.601 aber am kleinsten.

    3 Mal editiert, zuletzt von 3ds (14. Oktober 2008 um 15:17)

  • Allein die Aktion

    YUV -> RGB -> YUV

    verursacht bereits eine "Farbverschiebung".

    Ausserdem können spatiale Blur-Filter durch unvermeidliche Rundungsfehler auch die Farben auch noch ein wenig ändern (Ein Fehler von +/-1 in den Chrominanz-Ebenen kann manchmal recht "deutlich" sein, wenn man Vorher-nachher im direkten Vergleich betrachtet.)

    Es fehlt noch Deine Erklärung, warum Du glaubst, die Konvertierung der Farbmetrik zu benötigen!

  • Es fehlt noch Deine Erklärung, warum Du glaubst, die Konvertierung der Farbmetrik zu benötigen!


    Ich habe Vorher-/Nachher-Vergleiche gemacht. Ohne matrix angaben sieht das Bild halt stärker "anders" aus als mit ;)

    Aber ich glaube ich mache es jetzt anders. Hab gerade FFT3DGPU gefunden, sieht besser aus.

  • Dein Hauptproblem wird ziemlich sicher in "DirectShowSource" liegen.

    Deine m2ts-Datei enthält wahrscheinlich AVC-Video. Wenn du das demultiplext, kannst du DGAVCDec als ordentlichen AVC-Quellfilter verwenden. Und der versteht auch verschiedene Farbmetriken.

    Ein weiterer Grund, warum Video an PC-Monitoren farbschwächer erscheint, kann sein, dass Fernseher die Farben und Kontraste stärker anzeigen, als sie im Material gespeichert wurde (PC- / TV-Bereich für Luma und Chroma).

  • Ist mir alles klar. Dennoch bleibt es dabei, wenn man SpatialSoften einsetzten will, muß man YUY2 haben. Zum Schluß benötigt x264 aber YV12.

    Somit kommt man einfach nicht ohne Konvertierung aus.

    Aber wie gesagt, ich glaube ich nutzte besser FFT3DGPU und das arbeitet direkt mit YV12 ;)

Jetzt mitmachen!

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