Verblockungen vermindern/'neutralisieren'

  • Salve,

    ich lese mich nu schon seit Tagen wieder durchs Netz, auf der Suche nach ner akzeptablen Lösung für mein Problem:
    Quelle ist nen x264-Video, 720p, welches auf DVD-Norm soll, also 576p. Grundsätzlich ja kein problem...
    Schärfe vom Ursprungsmaterial ist größtenteils erstklassig, ebenso minimales Rauschen, was also keinerlei Filter bedarf. Den Schärfeverlust beim downsizen hab ich schlichtweg mit dem einfachen sharpen-filter ausgeglichen. Seesaw und LimitedSharpenFaster hatte ich ausprobiert, hat mir jedoch nicht die gewünschten Ergebnisse gebracht.

    So, Problem ist nu, dass stellenweise recht starke Verblockungen auftreten, also diese einfarbigen 8x8 Makroblöcke bei größeren Flächen mit gleicher/ähnlicher Farbgebung. Hab ma 2 Bildausschnitte angefügt, die das recht deutlich machen. Beim blauen Bild (Wasser) tritt in dem dunklen Bereich links der Luftblasen nen recht deutliches Pulsieren auf. Beim roten (ne Zimmerdecke) gibts nen stärkeres 'Flackern', welches die Verblockungen recht auffällig macht.

    [Blockierte Grafik: http://img505.imageshack.us/img505/3172/water1qc9.th.png] [Blockierte Grafik: http://img505.imageshack.us/img505/3001/red1jx6.th.png]

    Wie man sich wohl denken kann, würd ich diese Verblockungen gern loswerden, bzw. irgendwie kaschieren. Andererseits möchte ich den Rest des Videos, also die Szenen in denen wunderbare Schärfe herrscht, davon unberührt lassen. Die Verblockungen treten bereits in der Quelle auf, also nicht erst nach dem resizen; wie man im Script sieht, hab ich den deblocker vom Decoder aktiviert, wobei dieser eben nicht sonderlich viel nutzt.

    Bei der schier endlosen Menge an Filtern, die es gibt, bin ich nu etwas überfordert. Ich hab null Ahnung, welcher da evtl. das kann, was ich möchte. Ebenso gäbe es ja verschiedene Möglichkeiten, z.b. auch Grain hinzufügen, um das ganze zu 'verdecken' (wobei auch das dann nur an Stellen geschehen sollte, an denen diese starke Blockbildung auftritt). Die durchschn. Bitrate wird über 6000kbit/s liegen, daher sollte es zumindest kein Problem sein, würde die Komprimierbarkeit durch Grain oder so schlechter werden. Beim rumspielen hab ich in diesen Problemzonen z.b. mit dem FFT3D-filter halbwegs nette Ergebnisse gehabt, jedoch wurde hier eben alles weicher, was wiederum weniger schön ist.

    Die eierlegende Wollmilchsau kann ich wohl nicht erwarten, das ist mir klar, jedoch wäre ich dankbar über nen paar Tipps, mit welchem Filter ich da evtl. gewünschte Resultate erzielen kann.

    Da das wie gesagt auch nur in einigen wenigen Szenen vorkommt, könnt ich nen passenden Filter doch sicher auch ausschließlich für die entsprechenden Frames einsetzen. Mir würde jedoch nur die etwas umständliche Methode in den Sinn kommen, die Stücke mit Trim() zu teilen, für jedes Stück nen eigenes Script zu erstellen und dieses Stückwerk anschließend wieder zusammenzusetzen. Oder geht das einfacher? ^^

    Fragen über Fragen...
    Hoffe mal, das ist nicht zuviel zum lesen, aber lieber etwas ausführlicher als die Hälfte vergessen ;)

    Danke scho mal für Antworten

    Wally

    ------------------
    Bisher verwendetes Script...

  • Ausprobieren könntest Du

    - Deblock
    - DeblockQED,
    - Deblock_QED_MT2 ...

    und bei jedem ist der "quant"-Input eine wichtige Stellgrösse. Ich habe einmal versucht, eine blockige DVD-Quelle zu entblocken. Leider waren ich mit den Ergebnissen nicht so zufrieden (Verblockungen waren immer noch gut zu sehen). Und etwas Bessers habe ich nicht gefunden!

    Hinsichtlich der Frame-Begrenzungen solltest Du Dich mal bzgl. "ApplyRange" oder der stickboy-Function "JDL_ApplyRange" schlau machen. Die Suche im engl. Forum sollte ausreichend Anwendungsbeispiele aufzeigen.

    Gruss

    PS: Berichte mal bitte vom Ergebnis und von Deinen Einstellungen... meine verblockte DVD wartet immer noch auf eine entsprechende Bearbeitung.

  • Ich habe mich gerade selbst mal ein bisschen schlau(er) gemacht bzgl. der Filterung einzelner Sequenzen. Sofern Du dieselben Einsellungen für die verschiedenen Sequenzen vornimmst, bietet sich ReplaceFramesSimple (auch von stickboy) an:


    Gruss

  • Ich habe noch einmal mit meiner "Verblockung" rumgespielt und die folgenden Filter(-alternativen) ausprobiert:

    Code
    [size=10]#Deblocking	#DeBlock()	#DeBlock_QED()	#DeBlock_QED(quant1=20,quant2=24)	#Deblock_qed(quant1=20,quant2=24, aOff1=2,bOff1=4,aOff2=4,bOff2=8 )#by Didee	#DeBlock_QED_MT2()	DeBlock_QED_MT2(quant1=20,quant2=24, aOff1=2,bOff1=4,aOff2=4,bOff2=8 )#GradFun2db        #GradFun2db()#default thr 1.2	GradFun2db(thr=1.6)

    [/size]

    Deblock verbessert das Material etwas, Deblock_QED/QED_MT2 dagegen schon etwas mehr. Mit den von Didée vorgeschlagenen Parametern habe ich nicht weiter "rumgespielt", vielleicht ergeben sich bei anderen Einstellungen weitere Verbesserungen. Die Anwendung von GradFun2db führt m.E. allenfalls zu leichten Verbesserungen.

    Ferner habe ich im englischen Forum ein script von mp4guy gefunden, welches wie folgt lautet:

    [/size]

    Die Anwendung des letztgenannten Skripts produziert das mit Abstand beste Ergebnis für meine Quelle. Mit den thSAD- und sigma-Einstellungen sollte man ein wenig "rumspielen", da diese sich massgeblich auf das Ergebnis auswirken.

    Frage an die Avisynth-Profis:
    Kann mir jemand helfen, aus dem o.a. Skript eine Funktion "DeblockSharpen" zu erstellen ? Ich habe es versucht, indem ich "source=last" durch "source=clp" ersetzt habe, bekomme aber jetzt einen Fehlerhinweis, dass mvmask damit nicht einverstanden ist.


    Gruss

  • hio, danke erstma für die Antworten :)

    Die deblock-filter hab ich auch schon durchgehabt, haben jedoch seltsamerweise selbst mit extremen Parametern nichts zur Bildverbesserung in den entsprechenden Szenen beitragen können.

    Das letzte Script werd ich ma ausprobieren, hoffe das bewirkt was.
    Ich schätze, das sollte auch vor dem croppen/resizen angewendet werden, richtig?


    Wally

  • Eine weitere Möglichkeit bestünde in der Anwendung von TempGaussMC_beta1 (von Didée).

    Verblockte Bereiche werden damit schon (erfolgreich) behandelt, jedoch nicht in dem Masse, wie das o.a. mp4guy-Skript. Andererseits habe ich den Eindruck, dass die Details mit TempGaussMC_beta1 besser erhalten bleiben. Scheint wie immer, alles "nur" eine Frage der Abwägung zu sein. :ani_lol:

    Auch bei TempGaussMC gibt es Inputs, die da heissen thSAD1und thSAD2. In der Anleitung zum Skript schreibt Didée "... am besten die Finger von Veränderungen bei diesen Parametern lassen ...". Ich habe trotzdem ein bisschen damit herumgespielt und die Werte erhöht, habe jedoch keine wesentlichen Änderungen bewirken können. Da könnte Didée wohl selber nur etwas sagen (und auch grundsätzlich zu der Frage, an welchen Stellschrauben im Skript gedreht werden muss/kann, um eine noch bessere "Entblockung" zu erreichen).

    Gruss

  • Ähhh, TempGaussMC_beta1 ist in erster Linie ein Deinterlacer. Wallys Material ist aber Progressiv.

    Zitat

    Den Schärfeverlust beim downsizen hab ich schlichtweg mit dem einfachen sharpen-filter ausgeglichen.


    Wenn man schon HD als Ausgangsmaterial hat, sollte man erst schärfen und dann das Bild verkleinern. Und auch nicht mit einem so stark weichzeichnenden Resizer wie Bilinear sondern besser mit einem schärferen wie Spline16 oder Spline36.

    Zitat

    Seesaw und LimitedSharpenFaster hatte ich ausprobiert, hat mir jedoch nicht die gewünschten Ergebnisse gebracht.


    Sharpen() kann nichts was LSF oder SeeSaw nicht auch können, außer wesendlich mehr Bildfehler zu produzieren, die sich negativ auf Bildqualität und Kompremierbarkeit auswirken.

  • Verkleinern würde ich mit Spline36Resize. Schärfen würde ich gar nicht (evtl. kontraproduktiv). Und wenn du viiiiiiiiiiiiiiiiiiiiel Zeit zur Verfügung hast, dann kannst du ja auch mal TNLMeans darauf ansetzen. :D

  • ...
    Die Anwendung von GradFun2db führt m.E. allenfalls zu leichten Verbesserungen.
    ...

    öhm, are u kidding me? ^^
    aufgrund der aussage hatte ich das gar nicht weiter beachtet und habs dann ma allein ausprobiert, nachdem ich das script von mp4guy ausprobiert hatte (welches zwar nett aussah, aber mit ~1fps nich unbedingt meinem zeitrahmen entspricht).

    GradFun2db macht exakt das, was ich mir gewünscht hab! die verblockten stellen werden weicher, grobe 8x8 blöcke sieht man nicht einen einzigen mehr und das bild wird wesentlich angenehmer, in beiden szenen, aus denen ich die obigen bilder hatte. die schärfe bleibt, soweit ich das auf den ersten blick sehen konnte, großteils behalten und performance von dem ding ist ja auch erstklassig :)


    Wenn man schon HD als Ausgangsmaterial hat, sollte man erst schärfen und dann das Bild verkleinern. Und auch nicht mit einem so stark weichzeichnenden Resizer wie Bilinear sondern besser mit einem schärferen wie Spline16 oder Spline36.

    ich hatte irgendwo mal aufgeschnappt, dass es beim downsizen relativ egal sei, welchen resizer man nutzt; nen flüchtiger test hatte mir das bestätigt (war wohl zu flüchtig), daher hatte ich den genommen.
    aber danke für die info, sieht doch wesentlich besser aus mit Spline36 :)


    Sharpen() kann nichts was LSF oder SeeSaw nicht auch können, außer wesendlich mehr Bildfehler zu produzieren, die sich negativ auf Bildqualität und Kompremierbarkeit auswirken.

    mmmh, mag sein, dass ich SeeSaw völlig blödsinnig konfiguriert habe, aber im direkten vergleich von
    Sharpen(0.3) vs SeeSaw(NRlimit=0, NRlimit2=3)
    gewinnt sharpen bei mir. mit nrlimit=0 soll SS ja nicht denoisen, was ich auch nicht will, jedoch werden hier bereiche geschärft, die ich als völlig überflüssig betrachte, wie bspw. leichte farbverläufe an ner wand, die unscharf wie sie sind besser aussehen und wohl auch bitrate sparen. was schärfer werden soll, bspw. details in gesichtern, verarbeitet sharpen wunderbar, ohne das unnötige zu verarbeiten, wie SS es tut.


    also erstmal vielen dank... mein hauptproblem dürfte mit GradFun2db erlösung gefunden haben :)

    wally


    edit:
    dass ich nen deblocker vor dem croppen/resizen anwenden muss, ist mir klar. warum aber vor dem resizen schärfen und nciht erst danach?
    ebenso GradFun2db; sollte ich das auch unbedingt vorm resizen anwenden, oder ist der zeitpunkt da egal? immerhin wäre das nur die halbe anzahl pixel, dieverbastelt werden müssen und würde somit wohl reichlich performancegewinn bringen, wenn ichs nach dem resizen anwende.

  • gradfun2db sollte ans Ende und ich würde den Threshold erhöhen,..

    danke, habs mal ans ende gepackt. ...nutze nu jedoch zusätzlich (bzw. ersatzweise, wie mans sehen will) noch das gradfunkmirror-script, da sonst die ränder nicht beachtet werden, was hin und wieder doch nen wenig schräg aussieht.

    mit dem threshold hab ich ma nen bissl gespielt, musste bei höheren werten jedoch feststellen, dass sich verstärkt 'auras' um detaillierte/bewegte objekte bilden, die vor nem verblockten hintergrund stehen, den gradfun bearbeitet.

    über 1.2 will ich da schon gar nicht gehen; diese aura fällt dann schon zu sehr auf und der positive effekt bei den verblockten bereichen hält sich zu nem höheren thr. dann auch in grenzen.

  • Mit dem Wert musste testen, nutze gradfun2d i.d.R. nur in bestimmten Bereichen (trim), wenn Werte > 1.2 mit deiner Source Probleme machen, dann nimm niedrigere. ;)

    nuja, werd wohl doch noch probieren müssen. das avs-script an sich sah beim anschauen erstklassig aus, nachm encoden (HCEnc) wars jedoch nichmal mehr was für die tonne.
    hab schon die alternativen (internen) matrizen vom HC ausprobiert, da ich gelesen hab, dass die von gradfun erreichten effekte sonst meist wieder zunichte gemacht werden (was ich über den gesamten film ziemlich extrem beobachten konnte), aber selbst damit wollts nicht wirklich was werden.

  • Hi, bin durch diesen Thread mal auf gradfun2db & gradfunkmirror gekommen. Mein Problem ist in den angehängten Bildern gut zu erkennen, nähmlich führt die Verwendung von diesem Filter zu bunten vertikalen Streifen.

    Das verwendete Skript:

    Code
    aviSource("0906.avi")
    lanczosresize(640,480)
    #gradfunkmirror(2.0)

    Es spielt auch keine Rolle, ob ich erst resize oder erst gradfunkmirror benutze, auch andere Werte für gradfunkmirror ändern nichts. Hat jemand eine Idee?

  • Ihr müsst mit gradfun2db nur aufpassen, dass beim Encoden die Blöcke nicht zurückkommen. Déjà Vu?

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • Ihr müsst mit gradfun2db nur aufpassen, dass beim Encoden die Blöcke nicht zurückkommen. Déjà Vu?

    joa, exakt das ist passiert, teilweise siehts sogar noch ne ecke schlimmer aus als vorher.
    hab deinen thread ma durchgearbeitet... zwar nur die hälfte verstanden aber ma schaun, ob da bei den vorschlägen doch was passendes dabei ist, was ich umsetzen kann. ^^
    du hattest es da ja auch relativ viel von einstellungen, die ausschließlich das encoden von x264 betreffen (das -crf), jedoch möcht ich ja mpeg2 und hab entsprechendes nicht.

    nuja, zur not versuch ichs ma mit künstl. rauschen in den schwierigsten szenen und hoffe, ich krieg das ding dieses jahrtausend nochma fertig.

  • ausschließlich das encoden von x264 betreffen

    Ja. Ist aber im Endeffekt wurscht, weil die Encoder allesamt solches Rauschen entfernen (soweit ich weiß).
    Im Endeffekt hab ich's aufgegeben. Wenn die Qualität zu schlecht ist, fliegt das Teil in den Müll.

    Brauchbar fand ich gradfun2db beim Postprocessing. Allerdings schau ich nicht mehr übern PC, insofern ist das mittlerweile keine Lösung mehr.

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • hab nochma bissl rumprobiert und sollt das nächste mal vielleicht genauer testen, welch gravierende auswirkungen ne andere matrix hat ^^

    hatte die FOX genommen, da irgendwo gelesen, dass man eher sowas in der richtung nutzen sollte, um das starke quantisieren in den bereichen zu vermeiden.
    nuja, evtl. hab ich falsch gelesen oder so, zumindest wars mit der MPEG-matrix erheblich besser und die änderung von gradfun bleibt zumindest großteils erhalten.

    was mich nur erstaunt hat, war der wirklich herbe schärfeverlust nach dem encoden (nicht nur zum original HD, sondern zum bereits skalierten avs-script).
    kann ich zumindest nicht so ganz nachvollziehen, aber scheint wohl normal zu sein... zumindest hat CCE dasselbe ergebnis gebracht (wenn auch minimal schärfer).
    edit: doch nix mit schärfeverlust, nur die offenbar weniger gute idee, die mpv beim testen mit directshow wiederzugeben.

Jetzt mitmachen!

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