x264 --rn noise reduction...

  • Ich habe tests mit dem x264 --nr Einstellung gemacht. Alles bei --crf 15 und nur ein kleiner Ausschnitt von 100 Frames bei FullHD. Die Quelle hat das Typische Filmkorn-Rauschen. Also gerade auf Ebenen Flächen sieht man relativ starkes Rauschen.

    Die eingebaute x264 noise reduction ist echt schnell. Kostet recht wenig Zeit. Dabei ist es fast egal, welchen Wert man nutzt.

    Dabei sehe ich visuell keinen Unterschied. Allerdings sind die Dateigrößen unterschiedlich:

    • nr 0 - 20,3MB
    • nr 250 - 16,4MB
    • ab nr 750 - 15,6MB


    Kann es sein, das die Obergrenze bei 1000 liegt und alle höhreren Werte auf 1000 herrunter gesetzt werden? Ich hatte nämlich mal einen Lauf mit 50000 gemacht. Die Dateigröße ist wie mit 1000.

    Der Unterschied von 20MB zu 15MB finde ich enorm, denn man sieht visuell keinen Unterschied.

    Hab mal crf eine bitrate gesetzt:
    Mit 19.000:

    • nr0 - 10,4MB
    • nr1000 - 10,1MB


    Mit 10.000:

    • nr0 - 5,26MB
    • nr1000 - 5,20MB


    Mit 1.000:

    • nr0 - 495KB
    • nr 1000 - 491KB

    Ich würde sagen: Mit weniger bitrate bringt NR wenig für die Dateigröße, aber es sieht mit NR besser aus als ohne.

    Dann hab ich noch fft3dfilter bemüht und noch kombiniert mit --nr bei crf 15:

    Dateigrößen dabei:

    • fft3d mit sigma 3.5 + --nr 0 - deutlich Farbabstufungen - 4,8MB
    • fft3d mit sigma 2.5 + --nr 0 - leichte Farbabstufungen - 7,0MB
    • fft3d mit sigma 2.0 + --nr 0 - keine Farbabstufungen - 9,3MB
    • fft3d mit sigma 2.0 + --nr 1000 - sehr leichte Farbabstufungen - 7,3MB

    Für mein Material ist IMHO die optimale Einstellung fft3d mit sigma 2.0 und x264 mit --nr 1000. Man hat kaum wahrnehmbare Farbabstufungen in glatten Flächen und kein merklicher Detailverlust.
    Wobei sigma 2.5 + nr 0 ist visuell leicht schlechter als sigma 2.0 und nr 1000.

    Wenn aber mal vergleicht 20,3MB (crf15, ohne alles) zu 7,3MB (crf15, mit fft3D+NR) ist das doch enorm! Da könnte man besser am crf Wert schrauben.
    Wenn man 2pass macht, wird es ja automatisch angepasst.

    Fazit:

    • Bei HD Material mit Filmkörnung lohnt sich eine NR auf jeden Fall. Aber das war klar ;)
    • Auch wenn man fft3d nutzt, lohnt sich x264 --nr. Lieber einen klein wenig weniger fft3d mit --nr als stärkerer fft3d mit kein --nr ;)
  • Was mich mal interesieren würde ist ob sich am Video auch was ändert wenn man lossless encodiert.

    Da "--nr" nichts anderes ist, als ein Pre-Processing Filter, sollte es sich auf den "lossless" Mode genau so auswirken.
    Es hilft dann eventuell die Datei kleiner zu bekommen, aber "echt" lossless ist es dann nimmer...

  • Bei den Test (von 2006!) wird oft was von verwaschen gesagt. Ich kann selbst bei 1000 kein Weichzeichner erkennen. Woran liegt's? Ist nr bei x264 neu implementiert worden? Oder ist der Algorithmus abhängig von der Bildgröße und wird stärker je kleiner das Material ist?

    Ich glaube da wurde lange nichts mehr geändert und es scheint auch kaum jemand zu benutzen. Es wurde häufig gesagt, dass es ein sehr einfacher Rauschunterdrücker ist und man mit den üblichen Entrauschungsfiltern in Avisynth in der Regel deutlich besser fährt. Der einzige Grund, wieso überhaupt ein "Pre-Processing" Filter in den Encoder eingeabut wurde, war damals, dass der Rauschfilter so die Bewegungserkennungsdaten, die x264 ja so oder so berechnet, mit benutzen kann. Und mit Psy-RDO/Psy-Trellis kann man mittlerweile ohnehin viel mehr "Grain" erhalten anstatt ihn wegzufiltern...

  • Ich denke es lohnt sich auch noch anschließend ein leichtes TemporalSoften() anzuwenden.

    Denn nach fft3D und --nr 1000 bleibt ein rest Rauschen übrig, sieht man gerade auf einfarbige Flächen.

    Man kann den sigma Wert bei fft3D nicht einfach erhöhen um das Rauschen los zu werden, denn dann gehen Details verloren.
    TemporalSoften() alleine bringt es auch nicht, denn zu hohe Filterung damit erkennt man schnell in Ghosting/Verschmierung in Gesichtern.

    Aber die Kombination ist IMHO perfekt!

    Gute Werte bei mir:

    Code
    fft3dfilter(sigma=2.0, plane=4, sharpen=1)
    TemporalSoften(1, 4, 6)


    Wichtig ist die Reihenfolge der Filter.

  • Zitat

    die Kombination ist IMHO perfekt!


    Ein Satz mit X ?

    [Blockierte Grafik: http://img46.imageshack.us/img46/9572/perfectfailex4.th.png][Blockierte Grafik: http://img46.imageshack.us/images/thpix.gif]

    "Das war wohl nix."


    (Die einzige Möglichkeit, bei TemporalSoften Artefakte mit Sicherheit zu vermeiden, ist, es nicht zu verwenden.)
    (Und FFT3D posterisiert auch mit rel. geringem Sigma schon ganz ordentlich, wie man sieht...)

  • Natürlich ist es nicht 100%tig perfekt. Das ist auch wohl schwer möglich. Meiner Meinung nach macht es mehr Sinn Rauschen zu elemenieren und das mit Artefakten zu erkaufen, als das Rauschen mit zu encodieren.
    Insgesamt ist die Qualität mit Rauschfilterung einfach besser. Es sei denn man hat super viel Bitrate übrig ;)

  • Meiner Meinung nach macht es mehr Sinn Rauschen zu elemenieren und das mit Artefakten zu erkaufen, als das Rauschen mit zu encodieren.

    Dem möchte ich widersprechen. Das menschliche Gehirn ist mit Abstand der beste Rauschfilter für Video. Dagegen reagiert es recht empfindlich auf künstlich wirkende Bewegungen von Schleiern im Hintergrund, die durch Detailarmut entstehen (Banding, Pseudo motion - wenn der Codec Helligkeitsänderungen als Bewegung interpretiert).

    Es wurde sogar mal ein Rausch-Erzeugungsfilter entwickelt, der ein wenig Zufall in die höheren Frequenzanteile des Videos bringen sollte, wo die Codecs das Video ansonsten plattgewalzt und gekachelt hätten. Das Fehlen von hohen Frequenzen kann nämlich zu Blockartefakten in sanften Farbverläufen führen, weil der Codec durch Fehlen von Kontrasten unter Umständen die Quantisierung stärker vergröbert als angemessen. Deshalb heißt der Filter auch "BlockBuster".

    Merke: Rauschen ist nicht grundsätzlich schlecht. Manchmal ist es sogar Stilmittel. Und eine überhaupt nicht mehr rauschende "Feuerzangenbowle" (1944) wäre schlicht unglaubwürdig. Rauschen zu eliminieren ist daher so grundsätzlich sicher der falsche Ansatz.

  • Da kann ich nur zustimmen. Das Bildrauschen gibt dem Video einen "natürlichen" Look und kann allerlei Artefakte verstecken. Außerdem erscheint das Bild mit dezentem Rauschen viel detailreicher als ohne. Ich bin daher überhaupt kein Freund von Rauschunterdrückung. Ein Problem besteht darin, dass das Bildrauschen beim Komprimieren oft zu einem unschönen Brei verkommt. Auch x264 hatte damit lange so seine Probleme, wenn man nicht mit übertrieben hohen Bitraten und speziellen CQM's gearbeitet hat. Aber dank Psy-RDO und Psy-Trellis sollte es mittlerweile möglich sein, Bildrauschen (und andere feine Details) auch bei "sinnvollen" Bitraten zu erhalten, anstatt sie platt zu walzen. Teilweise wird behauptet, dass FGO (Film Grain Optimization) noch besser geeignet war, um rauschiges Material zu kodieren. Andererseits war FGO aber für rauscharmes Material eher schädlich, was bei Psy-RDO/Psy-Trellis nicht unbedingt der Fall ist. Der H.264 Standard sieht sogar eine Technik names FGM (Film Grain Modelling) vor. Dabei wird das Rauschen vor dem eigentlichen Kodieren aus dem Video entfernt und bei Dekodieren wieder hinzugefügt. Damit soll es möglich sein, das Bildrauschen möglichst nahe am Original zu erhalten, ohne es tatsächlich kodieren zu müssen. Soweit ich weiß benutzt aber bisher kein H.264 Encoder FGM, dementsprechend auch kein Dekoder. Ob es wirklich nützlich ist, bleibt also abzuwarten...

  • Der H.264 Standard sieht sogar eine Technik names FGM (Film Grain Modelling) vor. Dabei wird das Rauschen vor dem eigentlichen Kodieren aus dem Video entfernt und bei Dekodieren wieder hinzugefügt.


    Das wäre natürlich das beste. Solange es das noch nicht gibt, macht es meiner Meinung aber Sinn das Rauschen raus zu filtern, wenn man vernünftig komprimieren will.
    Wenn man will kann man im vlc einfaches Rauschen beim abspielen hinzufügen ;)

    Die Filme die ich bisher auf Bluray gesehen hab, haben alle relativ starke Filmkörnung im Bild. Und bei allen variierte es stark je nach Szene.

  • Da muss ich MuldeR recht geben x264s Rauscherhaltung ist echt Beispielhaft gut, wobei ich persönlich eine leichte Rauschunterdrückung bei Filmen die so stark Rauschen wie 300 doch bevorzuge, was aber auch daran liegt, dass ich 300 im 'Normalzustand' echt eine Frechheit finde. :)

Jetzt mitmachen!

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