YUV420P16 Material entrauschen

  • Hi zusammen,


    Zum ent-rauschen nutze ich (meist) den dfttest in Kombination mit den dither-tools.

    Ich habe hier Video Material in BT2020 das sehr stark rauscht und in den 709 Farbraum gebracht werden soll...

    Hier mein - nicht funktionierendes - Script:

    Nun beschwer sich Avisynth ... oder besser gesagt dfttest ... das der "Eingangs Farbraum" nicht passt.

    Soweit ich das (aus der dfttest Doku) sagen kann, erwartet dfttest doch ein 8-bit planares Bild. In: Y8, YV12, YV16, YV24, RBG24 oder RGB32 um zu funktionieren.

    Ich bin mir nicht sicher, aber interleaved (DoubleWide) kann der nicht, also Stacked - deshalb ConvertFromDoubleWidth ... ich gehe davon aus das YUV420P16 doubleWidth ist.

    Dennoch mault er rum:

    Code
    1. ...
    2. -sao --no-open-gop --y4m --fps 24000/1001 --output "test2.h265" --input -
    3. avs2pipemod[error]: ConvertFromDoubleWidth: Input double width clip must be YV12
    4. , YV16, YV24, Y8, RGB24 or RGB32
    5. (02.avs, line 21)
    6. x265 [error]: unable to open input file <->

    Also ... wie bekomme ich den Clip entrauscht ?
    Geht das überhaupt so mit dem dfttest ?


  • Bin ja kein wirklicher Avisynth+ nutzer, aber irgendwie ist das Skript merkwürdig,..


    Einerseits verwendest Du lsb_in=true,

    Zitat

    When lsb=true, the input is supposed to have 16-bit pixel components, of the same format as the output given with lsb=true.

    Quelle: http://avisynth.nl/index.php/Dfttest#.C2.A0lsb_in

    wandelst den Inhalt aber vorher nach 10bit,

    Verwendest lsb=false,

    Zitat

    bool lsb = false


    When lsb=true, dfttest outputs 16-bit pixel components by separating the most significant bytes (MSB) and the least significant bytes (LSB). The top part of the frame contains the MSB of all pixels and the bottom part their LSB. Therefore the output frame height is doubled. Use this if you want to perform the dithering later, with a separate tool.

    Quelle: http://avisynth.nl/index.php/Dfttest#.C2.A0lsb

    für den Output, aber verwendest in GradFun3 lsb_in=true und lsb=true,...


    Bei z_ConvertFormat gibst Du YUV420P16 aus, wendest dann Spline64Resize an bist immer noch bei YUV420P16, wandelst dass dann nach YUV 4:4:4 mit ConvertToYV24() und verwendest 'ConvertFromDoubleWidth' mit 10bit, wenn ich mir aber http://avisynth.nl/index.php/ConvertStacked durchlese steht da:

    Zitat

    int bits = 16


    Bit depth of returned clip. Must match the original bit depth. For example,



    -> das ganze Skript sieht für mich nicht richtig bzw. sehr merkwürdig aus.


    Cu Selur

  • Ja, ergibt für mich so auch keinen Sinn.


    Spontan würde

    1. ich Zeile 17 und 18 durch

    Code
    1. ConvertToStacked()

    und

    2. Zeile 26 durch

    Code
    1. ConvertFromStacked()
    2. ConvertBits(10, dither=0) # für 10-Bit Ausgabe. Bei 8-Bit- oder 12-Bit-Ausgabe entsprechend anpassen.

    ersetzen.


    Man muß immer im Kopf mitdenken, ob man gerade das "gehackte" Format hat (also 16 bit als 8 bit stacked oder interleaved (doublewidth)) oder das "native" avs+-Format hat. Je nach dem ob die Filter nur mit dem alten oder auch mit dem neuen Format klarkommen, muß man entsprechend dazwischen immer hin- und herwandeln. Für den Output als y4m-Pipe mit 10 oder mehr Bits braucht man das native Format.