Hintergrundrauschen , gepaart mit Grain und Unschärfe...

  • Hallo , einen schönen Samstag wünsche ich.

    Heute hatte ich malwieder Zeit mich mit meinen Videos zu beschäftigen.
    Ich hänge hier allerdings immernoch an diesem HD-Capture.

    Ich habe hier ein Sample hochgeladen , erstellt mit SelectRangeEvery(22500,250) und XviD @ QP=2 ansonsten wäre das zu groß geworden. Gefiltert wurde im Sample noch nicht.
    http://www.axifile.com/?7359292

    Was mich stört ist dieses Rauschen im Hintergrund , besonders auf einfarbigen Flächen zu sehen , außerdem ist das ganze ziemlich unscharf , da aber ziemlich viel Grain vorhanden ist , bekomme ich das ganze nicht geschärft.

    Mein bisheriges Script sieht so aus:

    Code
    Deblock(quant=35)
    DeLogo(480,192,"RO","HD",Lmix=2.0,Cmix=1.0,PP=1,name2="HD_grad2.bmp",amount=1.0)
    Crop(0,0,1916,1080)
    DeGrainMedian(limitY=5,limitUV=7,mode=2)
    AddBorders(2,0,2,0)

    Zufrieden bin ich damit noch nicht. Deshalb bin ich für Vorschläge dankbar...

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Also, für mich stellt sich das ganze etwa so dar:

    1)
    Das Material ist ein gutes Stückchen entfernt von der theoretischen "Schärfe" von Full-HD. (Mit Ausnahme des Intros). Sieht für mich nicht nach einer neuen Abtastung des Masters aus, sondern viel eher nach einem stinknormalen Upscale von SD-Material.

    2)
    Processing von HD ist langsamer, sehr viel langsamer als von SD. (Sehr) grobe Fausformel: temporale Filter laufen 5x langsamer, bei gleicher Effektivität. Spatiale Filter laufen entweder 5x langsamer bei nur ~45% Effektivität, oder 5x5 = 25x langsamer (!!) bei gleicher Effektivität wie bei SD. (*)

    3) Das Material scheint böse Aussetzer und Blocking in ultra-hi-motion zu haben, siehe die Frames ab 1350~1500 im Sample. (Ist nicht alles nur Xvid's Schuld, oder?)

    4) Auch noch ein Apekt: das Logo, das ja zunächst mal auch noch da ist.


    (*)Durch die größere Skalierung wird u.a. auch die Korngröße des Grains größer. Auswirkung im Extrem: ein spatialer 3x3-Filter, der bei SD "gut greift", ist bei HD u.U. unwirksam, und man bräuchte einen 5x5-Filter oder gar einen 7x7-Filter, um die gleiche Effektivität zu erreichen. Der Geschwindigkeitsverlust dieser größeren Kernels ist O(x²), also quadratisch. Quadratisches Verhalten der Geschwindigkeit, bei 500% zu bearbeitender Fläche, oh-oh ... Problem ist wohl klar.


    Summa Sumarum:

    m.E. lohnt es sich nicht, da irgendwelchen Aufwand zu betreiben, da das Material sowieso nur gefaktes pseudo-HD ist. Kannste genauso gut Deine DVD hernehmen und selber auf HD hochskalieren. Sieht vermutlich auch nicht schlechter aus (1), geht viel schneller (2), die Probleme von (3) gibt's erst gar nicht, und (4) ist dann auch kein Thema.
    Das Intro kannste ja von dem Capture nehmen - wenigstens das ist scharf.

    Merke - nur weil etwas in "High Definition" ausgestrahlt wurde, muss es noch lange nicht gut sein. Gutes SD kann oft besser sein als nicht-so-gutes HD. Oder zumindest nicht wirklich schlechter.

    .

    .

    .

    Ansonsten ... irgendwo im Keller hätte ich da wohl noch ein Script herumfahren, mit dem man da brauchbare Verbesserung erreichen könnte. Wenn Du noch im Mai anfängst, wäre das Processing bei 24/7 @ 100% vermutlich bis Weihnachten fertig.:D

  • Danke für die Infos werde ein wneig herumprobieren.
    Kannst du mir ein Paar Denoiser mit 7x7 Matrix nennen ?

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Hmmh, was fällt mir denn spontan ein?

    Deen / eDeen kannste soweit aufdrehen ...
    MedianBlur geht auf Wunsch noch viel weiter ...
    VagueDenoiser müsste ~ähnliches~ fertigbringen, aber mit dem kenn' ich mich nicht aus ...
    FFT3D kann's im Prinzip auch richten ...

    ... und noch das andere halbe Dutzend, das mir gerade nicht einfällt.

    Wobei die Nachteile sind:
    - VagueDenoiser: hab' ich keinen Draht zu, kann ich echt nix zu sagen
    - Deen: altes Spiel - sobald er wirkt, wirkt er oft zu stark
    - MedianBlur: laaangsaaahhm bei größeren Kernels
    - FFT3D: bügelt mir desöfteren zu viel weg ... vor allem dann, wenn der kritische Bereich da liegt, wo FFT3D mit seinen "Sigma3"/"Sigma4" Frequenzen zupackt. Muss man halt probieren, ist auch Geschmackssache. In diesem Fall hier ist's ja noch so, dass so etwas wie "hochfrequentes" Detail kaum da ist. Und das "Grain" hat hier eine Korngröße von mehreren Pixeln pro Korn, d.h. es ist in diesem Sinne in der spatialen Ebene eher niederfrequent ...

  • Hmm....
    Und wenn ich 720p draus mache , ist mein Script aus #1 totaler Mist ?

    Also medianblur(5,5,5,true) gibt mir schöne Aquarelle aus :lol:

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Zitat

    Und wenn ich 720p draus mache , ist mein Script aus #1 totaler Mist ?


    Probier's aus und gib Bescheid.
    (Tipp: BicubicResize(704,576) erspart Dir jede weitergehende Filterung ...)

    Zitat

    Also medianblur(5,5,5,true) gibt mir schöne Aquarelle aus


    Joho, das ist ja auch ein 11x11 MedianBlur. Für 5x5 braucht's MedianBlur(2,2,2), für 7x7 ist's MedianBlur(3,3,3), usw.

    Einerlei: einen Median-Filter nimmt man ganz bestimmt nicht für "direkte" Filterung, dafür ist der meistens ungeeignet. Ist eher ein Hilfs-Filter ...


    Also, wenn ich mir das Sample nochmal näher anschaue ... ich weiß wirklich nicht, was da jetzt "echt" ist und was nicht. Über weite Teile ist's ein Block-Festival, wo nur die "leeren" 8x8-Blöcke (bzw. deren Kompensationen) hin-und-her-schwirren ... dann hab ich auch quasi "statischen" Encode-Noise gesehen, der langsam durch die Gegend kriecht (Original im Capture? XviD bei der Re-Compression? Beides?)

    Also, ich würd' da echt die Finger von lassen ...

    Wenn das Dein ein-und-alles-Lieblingsfilm ist, dann würd' ich mich nach einer besseren Source umsehen. Das Ding hier ist so wie's ist, und bleibt auch am besten so, basta. Man kann's eigentlich nur verschlimmbessern, und das dauert noch zu lange.

  • Ich mach das jetzt so :

    Code
    AVCSource("video.dga")
    Deblock(quant=32, aOffset=16, bOffset=24)
    DeLogo(480,192,"RO","HD",Lmix=2.0,Cmix=1.0,PP=1,name2="HD_grad2.bmp",amount=1.0)
    MedianBlur(3,3,3,true)
    Spline36Resize(1280,720)

    Sieht gar nicht sooo schlecht aus. MedianBlur komtm mir zwar sehr Holzhammer-ig vor , dafür bin ich aber auch dieses "Hintergrundrauschen" los. Das hässliche Logo ist dank dir ja auch weg.

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • @ LigH - das ist schon klar.:) Wollte sagen: weil ich VagueDenoise eigentlich nie verwende, weiß ich nicht aus dem Ärmel, wie man an welchen Parametern drehen muss, um einen ~ähnlichen~ Effekt wie bei veränderlicher Kernel-Größe eines traditionellen spatialen Filters zu erreichen.


    @ Eastermeyer - äh, bist Du Dir da sicher? Gefühlsmäßig würde ich eher die tonnenzahl der spatialen Presse etwas reduzieren, und dafür noch einen temporalen Filter dazu nehmen. Temporal ist vom Grundprinzip her sowieso der "mächtigere" Ansatz; rein spatiale "tabula rasa" Filterung hat irgendwie immer etwas armseliges an sich ...

    Die Reduzierung auf 720p ist jedenfalls absolut okay: diese Quelle verliert dadurch nichts.

  • Um VagueDenoiser noch mal zu demonstrieren, habe ich mein altes Array4x4-Script ausgebuddelt (und erst mal ein wenig überarbeitet, was die Darstellung der Bereichsecken angeht).

    Was die Rauschfilterung alleine angeht, ist es sicherlich ein beeindruckender Ansatz, der von VagueDenoiser genutzt wird. Allerdings muss man auch immer gut aufpassen, dass die Details dabei nicht untergehen.

    Mit NxN-Kernels hat Wavelet-Decomposition nichts zu tun; die "nsteps" beeinflussen aber, bis zu welcher Tiefe das Bild auseinandergenommen wird, und dadurch auch, in welchen Frequenzbereichen die Rauschfilter arbeiten. Das Maximum wird durch die Bilddimensionen bestimmt. Man kann das Bild nicht feiner auflösen als die nächst kleinere Zweierpotenz. Und das Minimum ergibt sich optisch aus dem Versagen der Filterung...

    Der zweite Parameter, der die Arbeitsweise sichtlich beeinflusst, ist die Filtermethode. Und wer der adaptiven Filterstärke nicht vertraut, der muss mit dem "Threshold" experimentieren.

    Im Anhang zwei Beispiele, wie man Array4x4 verwenden kann. Für den konkreten Fall wird das passende Skript sicher leicht abzuleiten sein.

    Original-Ausschnitt, seeehr verrauscht
    Array4x4-Demo mit VagueDenoiser
    Je ~ 2 MB, HuffYUV-YV12 (ffdshow); 9 Frames, Speckle in Frame 6 beachten!

    So richtig interessant wird VagueDenoiser wohl erst, wenn man ihm Vergleichsmaterial (auxclip) für die Wiener-Doppelfilterung vorgibt (in der Dokumentation mit DeGrainMedian). Da kommen dann aber vermutlich auch Didée-typische Laufzeiten heraus (entschuldige, Meister)... ;)

  • Moin Loide!

    Auch auf die Gefahr zu spät zu kommen, hab ich da auch noch nen Vorschlag.

    Als ich mit Brother Johns "Werner" beschäftigt war kam mir der Gedanke mal auszuprobieren ob man nicht RemoveDust mit Hilfe von MedianBlur etwas kräftiger machen kann.

    Herausgekommen ist folgende Funktion:

    Code
    function RemoveDust_wMB(clip input, int "repmode", int "TRsmooth", int "mbt_temporalradius",bool "_grey",int "mbcw_RadiusLuma", int "mbcw_RadiusChroma", int "mbcw_WeightLuma", int "mbcw_WeightChroma"){ ##  RemoveDust_wMB() = "Remove Dust with MedianBlur"#  this is an modfied version of Kassandro's RemoveDust by Redfox.##  It allows higher spatial and temoral Radii by using #  MedianBlur instead of RemoveGrain and Clense.##  Requiers:#  - Medianblur (http://www.avisynth.org/tsp/)#  - Repair (http://home.arcor.de/kassandro/RemoveGrain/RemoveGrain.rar)##  I repeat:#  Idea: Kassandro#  Modification: Redfox#  Clear and understandable?!? ;-)repmode= default(repmode, 2)				# Modi of RepairTRsmooth= default(TRsmooth, 0)				# DON'T USE IT!!!mbt_temporalradius = default(mbt_temporalradius, 2)	# Radius of the temporal Median_grey = default(_grey, false)				# For black/white Moviesmbcw_RadiusLuma = default(mbcw_RadiusLuma, 2)		# Radius of the spatial Median (Luma)mbcw_RadiusChroma = default(mbcw_RadiusChroma, 1)	# Radius of the spatial Median (Chroma)mbcw_WeightLuma = default(mbcw_WeightLuma,20)		# value of the centerweight (Luma)mbcw_WeightChroma = default(mbcw_WeightChroma,5)	# value of the centerweight (Chroma)mbt = medianblurt(input, radiusy=0, radiusu=0, radiusv=0, temporalradius=mbt_temporalradius, calcborder=true)rep=Repair(mbt, input, mode=repmode, modeU=repmode)mbcw = medianblurcw(rep, radiusy=mbcw_RadiusLuma, radiusu=mbcw_RadiusChroma, radiusv=mbcw_RadiusChroma, weighty=mbcw_WeightLuma, weightu=mbcw_WeightChroma, weightv=mbcw_WeightChroma, calcborder=true)return TemporalRepair(mbcw, rep, grey=_grey, smooth=TRsmooth)}

    Für "Werner" war das Overkill, aber vileicht kann das skript bei diesem Material helfen.

    Ich würde folgendes skript vorschlagen:

    Ich muss allerdings zugeben das ich nicht genau weis was dieser Centerwigth parameter genau macht. Ich dachte erst das der in etwa den verschidenen Removegrainmodi entspricht, aber bei meinen testes verhielt der sich unterschiedlich. (naturlich habe ich beim vergleichen von MedianBlur nen Radius von 1 benuzt; den hat ja auch RemoveGrain)

    Wärend die "zurückhaltenderen" RemoveGrain-Modi mehr Pixel unangetastet liessen und dafür die die sie als Noisy identifizerit haben komplett erntfernen, Scheint MedianBlurCW alle pixel gleich anzupacken, wird aber bei höheren CW-Werten beim entfernen immer zurückhaltender - es erinert mich etws an RemoveGrain mit Limitern. Ich kann mir daruf keinen Reim machen.

    Ich hatte eigentlich vor dieses Thema in einem eigenen Tread anzusprechen, mit algemeinen Fragen und RFCs zu eingen Ideeen meinerseits bezüglich Median (hab schon eingige Bilder gebastelt) aber wo die sache jetz akut ist muss das wohl jetzt ge/erklärt werden.

    BTW: Kannst du nicht mal ca 15-25 Frames von den Originalmaterial uploaden? Sooo gross können die ja nicht sein. man braucht ja keine 250 Frames um sich ein Bild von der noisy zu machen.

    P.S.:
    Und wenn ich zu spät damit komme dan geschiet dir das ganz recht.:ja: ;) Solche "Wie Filter ich hier am besten?" Themen kommen ins algemeine Avisynth-unterforum, das soltest du wissen. :so-nicht: Nicht jeder hat immer Zeit sich durch alle Unterfohren zu klicken, ich letzte Woche zum Beispiel nicht. (Sorry :()

  • So ~ganz~ richtig ist das nicht ... der größte Knackpunkt ist, dass repair() ja immer noch auf 3x3 Pixel begrenzt ist. Ergo: erst wird ein temporaler Median mit Radius=2 durchgeführt (das ist ziemlich stark, und ziemlich langsam), und dann wird dieser aufwändige Filter durch "repair(2)" wieder fast völlig unwirksam gemacht (etwa zu 92%). Am Ende kriegste dadurch also fast nur die "temporale Entschärfung des spatialen Filters" - die andere Hälfte "spatiale Entschärfung des temporalen Filters" reduziert sich von selbst zurück auf den rein spatialen Filter ...

    Früher hatte ich mal ne Script-Simulation von Repair() mit größeren Radien ausprobiert ... in Hinsicht auf "RemoveDust" stellte es sich aber heraus, das *dieses* Konzept bei Einsatz von größeren Kernel-Radien längst nicht so hübsch funktioniert wie es das im kleinen 3x3-Bereich tut. Mit Limitierung ging's da auch wieder etwas besser, aber insgesamt war's einfach nicht der große Reißer ... auf jeden Fall wird die Sache durch den großen Radius so langsam, dass das Ergebnis den Aufwand eigentlich nicht mehr rechtfertigt. Der eigentliche Punkt an (L)RemoveDust ist ja, dass er sein recht ordentliches Ergebnis ziemlich *schnell* liefert. Mit 5x5-Median'ern kommt man da einfach nicht mehr hin ...


    Und betreffs:

    Zitat von RedFox

    Ich muss allerdings zugeben das ich nicht genau weis was dieser Centerwigth parameter genau macht. Ich dachte erst das der in etwa den verschidenen Removegrainmodi entspricht, aber bei meinen testes verhielt der sich unterschiedlich. (naturlich habe ich beim vergleichen von MedianBlur nen Radius von 1 benuzt; den hat ja auch RemoveGrain)


    Es ist zwar nicht völlig das gleiche, aber im Endeffekt ist's eigentlich fast das Gleiche.

    Beispiel:


    Wünsche viel Spaß beim Erstellen der zugehörigen Liste für alle Möglichkeiten eines 5x5 Kernels, oder gar für 7x7 ... :D

Jetzt mitmachen!

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