Kameraaufnahme mit Gegenlicht filtern

  • Hallo, nach längerer Abstinenz mal wieder was mit Avisynth gwerkelt.

    Ich habe ein Kameraaufnahme bekommen, bei der leider ordentlich Gegenlicht vorhanden war. Gibt es da einen passenden Filter bzw. hat jemand Erfahrung damit, welche Parameter in welchem Filter hilfreich sein könnten?

    Finde leider zu Gegenlicht nichts passendes in der Suche.

  • Da bietet sich wohl der "HDRAGC"-Filter an (High Dynamic Range - Auto Gain Control). Hat ziemlich viele Knöpfe zum herumdrehen, und ... ich hab ihn kaum jemals benutzt (und die zwei, drei Mal sind schon Jahre her), deswegen kann ich leider keine Tipps oder "Starthilfe" geben.

    Ganz schnell mal im Bildbearbeitungsprogramm folgendes gemacht:

    - Gain auf 200% hochgeschraubt
    - die nunmehr 100% weißen Bereiche als Maske genommen, und
    -- das Original per dieser Maske zurückkopiert

    [Blocked Image: http://img821.imageshack.us/img821/4535/boostandbackcopy.th.jpg]

    Anschließend auch noch den automatischen "Equalize"-Filter ausprobiert, und siehe da, dessen Ergebnis sah fast genauso aus.

  • Erst einmal Dankeschön, werde den Filter mal ausprobieren.

    Was mich im Original und von Dir Erstelltem stört, sind die dunklen Konturen gegen den hellen Hintergrund. Hast Du da eventuell noch einen Tip?

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Die Trauerränder sind ja im Original bereits enthalten. Durch die Aufhellung werden sie nur noch deutlicher sichtbar.

    "Dehalo" ist die grobe Marschrichtung. Hier würde sich vrmtl. anbieten: Eine Maske erstellen, die die Bereiche mit *sehr* großem lokalen Kontrast abdeckt.

    Reine Theorie, ohne es ausprobiert zu haben:

    Code
    c = lastEE = mt_lutxy(c.mt_expand.mt_expand,c.mt_inpand.mt_inpand,"x y - 204 - 5 *")c.mt_merge(MinBlur(2).sbr(),EE)

    Wobei "c" das bereits korrigierte Bild ist.

    Braucht bestimmt noch etwas Feinanpassung. Die Praxis gestaltet sich meistens etwas komplizierter als es die Theorie vermuten lässt. ;)

    Helfer:

  • Ja, an eine Form von Dehalo hatte ich auch schon gedacht.

    Dann hast Du mir erst mal reichlich Stoff geliefert, werde mich wieder melden, egal ob es um Nachfragen oder ein Ergebnis geht.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Immer noch ohne Avisynth - den Prozess mal in der immer noch geöffneten Bildbearbeitung simuliert:

    [Blocked Image: http://img823.imageshack.us/img823/7387/boostandbackcopyandedge.th.jpg]

    MinBlur() hab' ich in der Bildbearbeitung nicht, hab' nen einfachen Radius=3 Medianfilter genommen. Die Kanten über Roberts-Kantendetektor isoliert, Maske mit sich selbst gefiltert und um 2 Pixel geweitet. Dann den Median-Filter per Maske im Modus "Lighten" (d.h. nur heller machen) eingebunden.

    Im direkten Vergleich zur "einfachen Aufhellung" ...
    [Blocked Image: http://img713.imageshack.us/img713/6675/einfacheaufhellung.th.jpg]
    ... ist's doch gar nicht so übel.

  • Hohoho, na das ist ja schon mal nen Ergebnis, was sich sehen lässt.

    Hatte gerade was anderes zu tun. Reallife :D

    Werde noch einge Zeit brauchen, das nachzuvollziehen.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Maske mit sich selbst gefiltert und um 2 Pixel geweitet


    Hier bleibe ich stecken bei meinem Versuch, das in avisynth umzusetzen.

    Wie ist das gemeint?

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Das war eine "Ersatzhandlung", für eine in der Bildbearbeitung nicht verfügbare Methode.

    Es sollen die Bereiche selektiert werden, wo "schwarz" und "weiß" direkt nebeneinander auftreten. In Avisynth z.B. per Masktools:

    > mt_edge("min/max", 200,220,0,0)

    Weil ich in der BB keinen "Min-Max-Kantendetektor" hatte, hab' ich halt den normalen Roberts-Algorithmus genommen. Der selektiert auch Kanten, die für den hier gegeben Zweck besser nicht selektiert werden sollten .... was sich über Selbst-Filterung aber so einigermaßen auf das gewünschte Maß zurechtbiegen lässt.

    Die Entsprechung in Avisynth wäre z.B.

    mt_edge("roberts",0,255,0,255)
    mt_lut("x x * 255 /")

    * * * * *

    Je nach Beschaffenheit des Inputs sollte man noch die "TV-Scale" -vs- "PC-Scale" Problematik berücksichtigen. Input liegt ja (wahrscheinlich) in TV-Scale (16-235) vor, ist ja OK. Die erstellte Maske sollte natürlich den PC-Scale Bereich (0-255) abdecken.

  • Ok, das habe ich jetzt nachvollziehen können, handelt sich um die Methode der Maskenerstellung. Die hast Du ja mit

    Quote

    EE = mt_lutxy(c.mt_expand.mt_expand,c.mt_inpand.mt_inpand,"x y - 204 - 5 *")

    bereits erstellt, welche mir verwertbar erscheint.

    Jetzt hapert es mir noch an der Verwertung der Maske. Bei

    Quote

    c.mt_merge(MinBlur(2).sbr(),EE)

    bleiben mir die Halos zu deutlich stehen.

    Folgendes habe ich mal versucht, da ja dehalo im Gespräch war:
    x=HDRAGC(max_gain = 1.0, max_sat=1, corrector= 0)#gefiel mir besser als das stark aufgehellte Bild
    b=x.dehalo_alpha(rx=2.0, ry=2.0, darkstr=1.5, brightstr=0.1, lowsens=150, highsens=50, ss=1.5)
    EE = mt_lutxy(x.mt_expand.mt_expand,x.mt_inpand.mt_inpand,"x y - 204 - 35 *")
    x.mt_merge(b,EE)
    degrain2()#schien mir angebracht, da durch die Aufhellung etwas körnig

    function degrain2(clip c,int "thSAD") {
    thSAD = Default(thSAD, 400)
    c.converttoyv12()
    source=last
    backward_vec2 = source.MVAnalyse(isb = true, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1)
    backward_vec1 = source.MVAnalyse(isb = true, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1)
    forward_vec1 = source.MVAnalyse(isb = false, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1)
    forward_vec2 = source.MVAnalyse(isb = false, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1)
    source.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=thSAD,idx=1)
    }

    Und was mir gerade noch einfällt, die Quelle ist ja DV, das Ziel ist eine DVD. Zu diesem Zwecke sollte man ja interlaced beibehalten.
    Müsste also die Halbbilder durch den Filter jagen. Gäbe es da ein Problem mit dem jetzigen Aufbau des Filters?

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

    Edited once, last by mawi2006 (February 13, 2011 at 1:42 AM).

  • Jo, werde ich machen.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!