"homogene" Bildflächen verändern ständig ihre Farbe

  • Ein kleines Problem hier:

    Hab folgenden Bildausschnitt und ein Problem mit x264:
    s. Anhang

    Das Problem ist, das das Bildrauschen x264 dazu veranlaßt, die Fläche teilweise im größerem Umfang zu verfärben, es pumpt also zwischen heller uind dunkler der Flächen, mal werden teilweise die helleren Flächen dunkler und mal umgekehrt.
    Zudem pumpt das ganze Bild leicht, so eine Art "flackern".

    Quasi so wie eine art von "Artefakten", nur das es eben keine sind, sondern Veränderungen der Farbe.

    In einer anderen Einstellung ist das sogar ganz extrem auffällig. Als wenn Flecken auf der Wand sind, die wie von Geisterhand größer und/oder kleiner werden ... sehr unschön ...

    Hab zum Test mal in VC1 mit 15Mbit kodiert und da gibt es dieses Problem komischerweise nicht, obwohl da 6 mal schneller kodiert wird.

    Ich verwende folgende Einstellungen für x264:

    Code
    x264-1069.exe --crf 20 --level 4.1 --keyint 24 --min-keyint 1 --ref 3 --psy-rd 0.2:1.0 --trellis 1 --aq-mode 1 --aq-strength 1.0 --no-fast-pskip --subme 7 --partitions p8x8,b8x8,i8x8 --8x8dct --vbv-bufsize 25000 --vbv-maxrate 30000 --mixed-refs --b-adapt 2 --bframes 3 --b-pyramid --direct auto --weightb --scenecut 40 --me umh --merange 16 --sar 1:1 --threads auto --thread-input --progress --no-psnr --no-ssim --nr 0 --stats "D:\HD\FILM\stats.log" --output "D:\HD\FILM\output.264" "D:\HD\HD0.avs"

    Geht schon ordentlich langsam das Kodieren, aber zufrieden bin ich dennoch nicht mit dieser Szene ... wo hab ich die falschen Einstellungen oder Kombinationen ? Wie gesagt, VC1 sieht an dieser Stelle wesentlich besser aus.

    Habs auch schon mit --aq-strength 0.5 versucht, bringt aber auch keine Abhilfe ...

    Irgendwelche Tips ? Bin mit meinem Latein am Ende.

    MFG

  • 1. checken das auch eine aktuelle Version verwendet wird
    2. psy-rd auf 1.0:0.7 einstellen
    3. Zum VC-1 Vergleich: Wenn Du nicht etwa die gleiche Zielgröße beim x264 und beim VC-1 Encode erhalten hast sagt der Vergleich leider sehr wenig aus.
    Wird auch beides mal das .avs File als Quelle verwendet?
    4. Wie sieht der Text im .avs File aus?
    5. Hast Du eventuell ein kleines ca. 30 Sekunden oder so Sample mit dem man selber versuchen kann das Problem nachzustellen und heraus zu bekommen was da schief läuft?
    6. Welcher Decoder wird beim Playback verwendet? (wurde dort eventuell das Deblocking deaktiviert?)

    Cu Selur

  • Also:

    1. Jop, ist die 1069 (von x264.nl), also recht aktuelles Build.

    2. Mit ähnlichen Werten hatte ich auch schon rumgespielt, brachte aber leider überhaupt nichts :nein:

    3. Jop, 15Mbit sind absolut vergleichbar mit der Original-Quelle. BTW: VC1 macht das nicht wirklich "besser", es verschleiert es nur, dadurch wirkt es optisch besser. X264 verstärkt dort an zwei Stellen das Rauschen unheimlich und das erkennt dann sogar ein blinder als " :hm:

    3a) Nein, es wurde ein anderer Encoder verwendet (Mainconcept), es wurde zudem direkt die Quelle (MKV) geladen. Also keine direkt exakt vergleichbare Situationen ... mir kam es aber nur darauf an, ob dort etwas besseres oder schlechteres raus kommt.

    4. Bis damals quasi nur das Öffnen der MKV-Quell-Datei in Avisynth, keine Filter oder sonstwas, nix. Geöffnet über DirectShow:

    Code
    DirectShowSource("D:\HD\FILM\video.mkv", audio=false)

    5. Jop, ist aber leider ca. 68 MB groß ...

    6. Als Decoder ist in FFDshow (VFW-Decoder) wmv9 eingestellt. Wüßte nicht wo man da dann noch nach dem Deblocking schauen könnte ... Die Quelle ist eigentlich nicht direkt verblockt. Sieht überall recht "ordentlich" aus ...

    Zum Sample-Clip:

    Es kommt ein Szenenwechsel drin vor, zur Einfachheit:
    - Alles bis zu dem Szenenwechsel = Szene 1
    - Alles nach dem Szenenwechsel (wo man dann das Fenster sieht) = Szene 2

    Probleme hatte ich in Szene 1 links oben, neben dem kleinen Kamin und habe in Szene 2 links neben dem Fenster an der schrägen Wand.

    Im nachhinein habe ich dann noch den TemporalSoften(1, 4, 6,mode=2,scenechange=5) eingesetzt, der hat die Probleme in Szene 1 zufriedenstellend gelöst, in Szene 2 bleibt das Problem aber trotzdem SEHR deutlich weiter bestehen, zwar etwas minimiert aber immernoch deutlich vorhanden.

    Die dunklen Stellen an der roten Tapete vergrößern sich und "wandern" obwohl da nicht sonderliches stört (außer dem Noise), auch der TemporalSoften kann das nicht beheben.

    Die Stellen die x264 da stört sind mir extrem aufgefallen, sind viel extremer als im original, alles andere im Video ist super mit den Einstellungen, nur hier an dieser Tapete scheitert es irgendwie.

    Würde den Effekt von TemporalSoften gerne behalten (es sei denn es gibt da noch etwas besseres), in Verbindung mit LimitedSharpen() ist das Ergebnis sehr gut (Quelle ist recht unscharf).

    Wenn es da noch etwas anderes gibt ... her damit :ja: ;)


    Sample (ca. 68 MB):

    Passwort: doom9

    MFG

    2 Mal editiert, zuletzt von mbc (4. Januar 2009 um 02:33)

  • "Geöffnet über DirectShow" was den Nachteil hat, dass falls der DirectShowDecoder der für das Material verwendet wird eventuell schon den Fehler produziert, x264 da nicht viel machen kann, wird man aktuell aber wohl nicht ändern können da das Handling von vc-1 Material noch umständlich ist.

    Ich teste es mal an. :)

    Cu Selur

  • Hab gerade mal einen Testencode mit:

    Code
    ffmpeg -i "video-cut-008.mkv" -vcodec rawvideo  -vsync 0 -an  -pix_fmt yuv420p -f rawvideo - | x264 --crf 18 --level 4.1 --ref 4 --keyint 250 --min-keyint 25 --scenecut 40 --bframes 16 --b-bias 0 --b-pyramid --weightb --direct auto --b-adapt 2 --ratetol 1 --cplxblur 20 --qcomp 0.6 --qblur 0.5 --vbv-maxrate 50000 --vbv-bufsize 62500 --qpmin 1 --qpmax 51 --qpstep 4 --ipratio 1.4 --pbratio 1.3 --chroma-qp-offset 0 --direct-8x8 -1 --partitions i4x4,i8x8,p8x8,b8x8 --me umh --merange 40 --subme 9 --mixed-refs --8x8dct --trellis 2 --aq-mode 1 --aq-strength 1 --deadzone-inter 8 --deadzone-intra 8 --threads auto --filter 0,0 --no-psnr --no-ssim --progress --fps 23.976 --output "test.mp4" - 1920x1080

    gemacht und spontan würde ich sagen sieht es gut aus, siehe: http://netload.in/dateiFB4ISCqvio/test.mp4.htm.
    -> eventuell hilft '--deadzone-inter 8 --deadzone-intra 8' Falls ja, liegt/lag das Problem am Rauschen im entsprechenden Bildbereich, welches geglättet wurde und jetzt erhalten bleibt.

    geht auch mit mencoder:

    Code
    mencoder "video-cut-008.mkv" -really-quiet -ovc raw -noskip -mc 0 -nosound -demuxer 35 -vfm ffmpeg -vf format=i420 -ofps 23.976 -of rawvideo -o - | x264 --crf 18 --level 4.1 --ref 4 --keyint 250 --min-keyint 25 --scenecut 40 --bframes 16 --b-bias 0 --b-pyramid --weightb --direct auto --b-adapt 2 --ratetol 1 --cplxblur 20 --qcomp 0.6 --qblur 0.5 --vbv-maxrate 50000 --vbv-bufsize 62500 --qpmin 1 --qpmax 51 --qpstep 4 --ipratio 1.4 --pbratio 1.3 --chroma-qp-offset 0 --direct-8x8 -1 --partitions i4x4,i8x8,p8x8,b8x8 --me umh --merange 40 --subme 9 --mixed-refs --8x8dct --trellis 2 --aq-mode 1 --aq-strength 1 --deadzone-inter 8 --deadzone-intra 8 --threads auto --filter 0,0 --no-psnr --no-ssim --progress --fps 23.976 --output "test.mp4" - 1920x1080

    Cu Selur

    Ps.: man könnte mencoder&ffmpeg auch ohne eine separate x264 Version betreiben, mache ich i.d.R. aber nicht, da die x264 builds meist aktueller sind als die MPlayer/Mencoder builds die ich verwende. :)

  • Der Recher ist ausgelastet (bin noch mit scharfis_brain`s-Sache anderweitig beschäftigt).

    Soweit schonmal kurz:

    DANKE fürs Testencoden !!! Problem, sieht auf dem PC gut aus, auf dem großen TFT aber nicht viel besser als meine Variante.

    Ich habe mir jetzt aber mal Deine "man x264 0.0.9" runtergeladen und mich über deadzone informiert (finde im Netz nur sehr wenig).

    Hier sagst Du Wert runter für mehr Rauscherhaltung, im PDF steht "Wert hoch für mehr Erhaltung" und im Netzt kommte ich nur soviel finden das es anscheind doch der kleinere Wert ist, also wirds im PDF wohl falsch sein.

    BTW: KLasse Sache mit dem PDF wirklich sehr gut und verständlich erklärt, vor allem mit Beispielen und Angaben welche Werte nun was bezwecken. Für "Noobs" wie mich sehr hilfreich (wenn wohl leider auch nicht mehr ganz aktuell) !!! So ausführlich beschrieben hab ich das noch nirgends gefunden.

    Ja, mit dem pipen durch ffmpeg oder mencoder hatte ich "damals" auch schon versucht klappte aber nie so wie es sollte ...
    Hat anscheind vorteile gegenüber DirectShow, machs jetzt mal zusätzlich auch damit ...

    MFG

  • Ja, ist ein Fehler im pdf. :)
    "wenn wohl leider auch nicht mehr ganz aktuell" -> nein, leider nicht, aktuell wenig Zeit da ich mich mit sx264 beschäftige in der Freizeit. :)

    Zitat

    Hat anscheind vorteile gegenüber DirectShow, machs jetzt mal zusätzlich auch damit ...


    Hat den Vorteil:
    1. ist unabhängig on Decodern im System
    2. geht sowohl unter Linux als auch Windows

    Schraub auch mal psy-rd auf 1:1 hoch. :)

    Cu Selur

  • Zitat

    "wenn wohl leider auch nicht mehr ganz aktuell" -> nein, leider nicht, aktuell wenig Zeit da ich mich mit sx264 beschäftige in der Freizeit.

    Kenne ich nur zugut ... hab Dein Programm gesehen, nicht schlecht, bastel gerade auch an etwas ""ähnlichem"", aber auch da komme ich nicht wirklich weit, zudem ich jetzt ja noch mit dem "Avisynth-kram" hinterherhinke ... und der Rechner ist auch nicht der Schnellste was das encoden angeht ... :hm: :nein:

    Zitat

    Schraub auch mal psy-rd auf 1:1 hoch.


    Hab ich jetzt gemacht.

    BTW: Ich nutze ja noch AVISYNTH-Filter, wie krieg ich die in Verbindung mit ffmpeg oder mencoder (sind hier ja nur reine Decoder fürs pipen).

    Ich kann zwar mit ffmopeg oder mencoder das Avisynth-Skript öffnen, was aber nur etwas bringt, wenn ich die beiden als encoder einsetze, weil ansonsten ja wieder DS durch AVISYNTH verwendet wird ...

  • Zitat

    Okay, wusste nicht, dass Du auch Avisynthfilter nutzen willst.

    Nun, TemporalSoften() macht da recht gute Arbeit, die Stellen werden größtenteils dadurch schon kompensiert und zudem hat man da ja eh wieder unnötig viel Noise beigefügt. Ich werde wohl nie verstehen was das njnendlich zum FIlm oder Felling beitragen soll. Etwas rauschen ist ja ok, aber hier ist es ja teilweise recht heftig ...

    Ist ja aber kein Thema, hab ja wieder was dazu gelernt, hab das pipen seit damals nicht mehr probiert, schön zu wissen das es jetzt geht ... kann für die Zukunft ja mal hilfreich sein :ja:

    Zitat

    Eventuelles filtern kann übrigens auch der Grund für Deine Probleme sein.


    Also mit Filter wirds irgendwie besser ... deshalb hab ich sie jetzt drin gelassen. Durch weniger Rauschen wird halt auch weniger "fehlberechnet". Ist zwar nicht ganz weg aber immerhin ... die deadzone hat das dann noch weiter minimiert ... da kann man (ich) mit leben, perfekt kriegt man sowas eh nicht hin und ich bin auch kein "pixelfanatikerperfektionist" ... über die eine stelle kann man hinweg gucken.
    Wo man an der einen Stelle besser schraubt, wirds an der anderen wieder schlechter ... Quelle ist halt auch nicht optimal, "shit happens"

    So wie es aussieht ist hat der große TFT einen stärkeren Kontrast, das ruft diesen Fehler natürlich weiter hervor, zudem scheint der Player (PCH) das wohl auch nicht unbedingt gut kaschieren zu können, oder eben er macht seine Arbeit zu gut ... :hm: nun ja ... aufm PC (und dessen TFT) siehts besser aus ... zumindest nicht ganz so sichtbar.

    Zitat

    ffmpegSource


    Google ich nach ...

  • Das Problem, was mbc beschreibt, tritt verstärkt bei HD in Erscheinung. Der Encoder ist nicht die Ursache, sondern der verwendete 8-bit 4:2:0 Farbraum. Wir haben zwar eine riesige Auflösung, aber nur 256 diskrete Werte im Kanal. Davon stehen aber z.B. nur 235 - 16 = 219 Helligkeitswerte Y nach ITU-R BT.601 zur Verfügung, was in bestimmten Situationen zu unvermeidlichen Artefakten führt.

    Der Effekt mit den Flecken in großen Flächen - auch BANDING genannt - ist besonders in Anime und CGI Videos vorhanden (große homogene Flächen).
    Die neue HD Technik mit ihren präzisen digitalen Displays erfordert nun verstärkt Maßnahmen des Bildingenieurs vor der Kodierung, um solche Artefakte zu verhindern bzw. nicht noch zu verstärken. Das ist eine echte Herausforderung.
    Im Allgemeinen wird ein Rausch/Grain-Verfahren zur Bekämpfung von Banding eingesetzt und dann enkodiert. Die Video-Quellen sind dabei 10 bit RGB, um Präzision zu bewahren.

    Das gesamte Thema ist von DigitalVision+SONIC auf 22 Seiten hervorragend behandelt worden, was ihr hier:
    http://www.digitalvision.se/resources/docu…lu-ray_Disc.pdf
    nachlesen könnt.

    6 Mal editiert, zuletzt von fz1 (4. Februar 2009 um 15:35)

  • Zitat

    sondern der verwendete 8-bit 4:2:0 Farbraum.


    bzw. die Decoder und ihr Upsampling. Mit x264 und aktiviertem PsyRDO und Adaptive Quantization oder DeadZones ist banding aber nur kaum noch ein Problem.

    Zitat

    große homogene Flächen


    ... eher sanfte Farbübergänge

Jetzt mitmachen!

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