Aankondiging

Collapse
No announcement yet.

Belichtingscompensatie

Collapse
Deze discussie is gesloten.
X
X
 
  • Weergaveopties
  • Begin
Clear All
new posts

  • Belichtingscompensatie

    Hallo,

    Mocht er iemand geïnteresseerd zijn, ik heb PhotoShop curves aangemaakt voor belichtingscompensatie (+/- 1 ev). Ze zijn berekend in Matlab op basis van twee beelden uit mijn Canon G2, waarbij ik enkel de sluitertijd heb veranderd.

    Hierbij even een voorbeeldje.

    Origineel 1 (1 stop onderbelicht):
    <img src="/uploaded/Michael/orig.jpg" border=0>

    Origineel 2 (correct belicht):
    <img src="/uploaded/Michael/correct.jpg" border=0>

    Belichtingscompensatie van de eerste foto:
    <img src="/uploaded/Michael/1_up.jpg" border=0>

    Sterkere compensatie is mogelijk door dezelfde curve meerdere keren toe te passen (bv. 2x voor 2 ev), een minder grote compensatie door de curves te "faden".
    Ik weet niet of ze ook bruikbaar zijn met andere camera's, maar ik zie niet direct waarom niet.
    Ik denk wel dat er nuttige dingen mee te doen zijn, bijvoorbeeld in combinatie met layer masks om bepaalde gebieden selectief te compenseren.

    Hier de links voor de curves:
    http://www.student.kuleuven.ac.be/~m9715918/curves/1up.acv
    http://www.student.kuleuven.ac.be/~m9715918/curves/1down.acv



  • #2
    Erg knap gedaan

    Je kan je curven eens vergelijken met compensatie door laagvermenging, optie screen als beschreven in het artikel iso-boosting (tricks en tips). De kleuren zullen ongetwijfeld accurater zijn, maar heb je niet meer ruis?

    In dat geval kan je mischien compenseren met screen en de kleuren terugbrengen met curves. Zo heb je het beste van de twee. Kan je met Matlab specifieke curves maken per kleur?

    'T is maar een idee voor je vrije tijd. Alhoewel, student.kuleuven, vrije tijd?...

    Proficiat voor je input!


    Comment


    • #3
      Interessant...

      Ik heb eens nagegaan wat die screen methode precies doet en het blijkt equivalent te zijn met een parabolische curve die verzadigt in het "wit-punt" (voor opacity 100%). (Voor de wiskundig aangelegden: out = 2*in - in^2)

      Ik heb mijn methode vergeleken met de jouwe (zowel met opacity 100% als 75%)en het verschil was niet of nauwelijks zichtbaar. (ik moest ze al van elkaar aftrekken om het te zien).
      Een kenmerk van jouw methode is dat die geen clipping produceert, terwijl die van mij juist het clipping gedrag van de camera bij overbelichting gaat nabootsen. Mijn curves zijn inderdaad nauwkeuriger, maar jouw methode is dan weer volledig camera onafhankelijk.

      Qua ruis is er geen verschil en dat is ook logisch als je bedenkt dat de screen methode eigenlijk gewoon een parabolische curve is.

      Ter vergelijking heb ik de karakteristieken van beide methoden eens uitgeplot.
      Rood is de screen curve (opacity 100%), blauw is mijn empirische curve.
      Je ziet dat ze zeer dicht bij elkaar liggen. Opacity 75% zal de rode curve nog wat naar beneden trekken, zodat ze nog beter overeen komen.

      <img src="/uploaded/Michael/curves.gif" border=0>

      Het is inderdaad perfect mogelijk om met Matlab curves voor rood, groen en blauw apart te maken, maar aangezien ze zo dicht bij elkaar lagen, had ik het gemiddelde genomen. Hieronder heb ik de curves voor rood, groen en blauw in de respectievelijke kleuren uitgeplot. Je ziet dat ze praktisch niet verschillen, wat trouwens ook logisch is...

      <img src="/uploaded/Michael/curves2.gif" border=0>

      (Sorry voor de uitgebreide post, maar ik vond dit echt wel interessant... )

      Comment


      • #4
        Even ter informatie:

        Ik heb even een kleinste kwadraten fitting gedaan van de screen methode en mijn curves en het blijkt dat de twee het best overeen komen voor opacity = 86,6%.

        Dan krijg je de volgende curves: (blauw = mijn curve, rood = screen curve)

        <img src="/uploaded/Michael/opt2.gif" border=0>

        Merk op dat het verschil meestal te verwaarlozen is. Het verschil zit vooral in het clipping gedrag.

        Comment


        • #5
          Kan je de term "clipping gedrag" wat nader uitleggen? In wat resulteert het?


          Jean-Luc

          http://pbase.com/jle56/

          Comment


          • #6
            Clipping is een effect dat je bekomt in overbelichte zones. Het betekent dat pixels die zo helder zijn dat ze boven het bereik van de camera komen, gewoon de maximale intensiteit toegewezen krijgen.
            Als bijvoorbeeld een pixel zo helder is, dat hij eigenlijk zou moeten voorgesteld worden door de waarde 284, dan zal de camera die pixel noodgedwongen op 255 zetten. 255 is immers de maximale waarde die kan worden voorgesteld met 8 bits. M.a.w. "witter dan wit" wordt "maximaal wit" en "roder dan rood" wordt "maximaal rood".
            In de laatste curve die ik gepost heb, is dat duidelijk te zien. De blauwe curve bereikt vanaf pixelwaarde 224 het maximum van 255, waarna hij afvlakt en op 255 blijft steken. Pixels die helderder zijn dan 224 in het oorspronkelijke beeld, zullen dus bij compensatie +1 ev (een verdubbeling van de lichtintensiteit) buiten het bereik van de camera vallen en "overbelicht" worden. Dit is niet het geval bij de rode curve (screen methode), omdat die enkel pixelwaarden die reeds op 255 liggen, op 255 zal afbeelden.

            Clipping is uiteraard normaal gesproken een ongewenst effect. Als je echter zo realistisch mogelijk wil nabootsen hoe het beeld eruit zou gezien hebben als je bv. de sluitertijd had verdubbeld, dan moet je eigenlijk ook dat effect in rekening brengen. De camera zou het immers ook gedaan hebben.

            Ik hoop dat ik het hiermee enigszins heb kunnen verduidelijken.


            Comment


            • #7
              Helemaal gesnopen dankzij jouw accurate uitleg.
              Dank U,
              Jean-Luc

              Jean-Luc

              http://pbase.com/jle56/

              Comment


              • #8
                Michael, zeer interessant wat je hier met Matlab gedaan hebt!
                Zou het technisch ook mogelijk zijn om op deze manier een correctiecurve te maken voor de white balance? Stel dat je bijv. per vergissing een foto genomen hebt op de stand Tungsten terwijl het eigenlijk Cloudy moest zijn...

                mvg,
                Bob
                [ http://photos.explore.be/ ]
                mvg,
                Bob

                Comment


                • #9
                  Goed idee.
                  Verandering van witbalans is inderdaad ook mogelijk.
                  Ik heb het eens getest voor een omzetting van cloudy naar tungsten. De resulterende curves voor rood, groen en blauw zijn hieronder te zien. Dit is duidelijk een nogal extreme compensatie, dus zeker niet aan te raden, tenzij in noodgevallen. Wat me hier opvalt, is dat de blauwe curve enkele knikken vertoont, gescheiden door rechte stukken. Vermoedelijk hebben de ingenieurs van Canon dus benaderende curven geprogrammeerd, op basis van rechte stukken. ("piecewise linear", of "stuksgewijze lineair") Een ander opvallend kenmerk is het grillig gedrag van de blauwe curve voor waarden beneden 32. Ik weet niet goed wat ik daaruit moet opmaken (toevallig, ruis ?). Misschien heeft het iets te maken met het slechte gedrag van de blauwe receptoren in de CCD voor donkere gebieden (veel ruis). Dit zal het in elk geval niet zo eenvoudig maken om hiervoor een PhotoShop curve op te stellen.

                  <img src="/uploaded/Michael/cloud2tung.gif" border=0>

                  Ik heb het uitgetest op de volgende twee foto's. Dit zijn trouwens de foto's die ik gebruikt heb om de curves te berekenen. Het is een scène aan mijn bureau, verlicht met een halogeen bureaulamp.

                  Witbalans Cloudy:
                  <img src="/uploaded/Michael/cloudy.jpg" border=0>

                  Witbalans Tungsten:
                  <img src="/uploaded/Michael/tungsten.jpg" border=0>

                  Cloudy, gecorrigeerd in PhotoShop:
                  <img src="/uploaded/Michael/c2t.jpg" border=0>

                  Zoals ik al zei, was het niet eenvoudig om hiervoor een PhotoShop curve op te stellen. Daarom heb ik de correctie ook eens uitgevoerd in Matlab, op basis van de meer gedetailleerde curves die ik daar berekend had.

                  Dit was het resultaat:
                  <img src="/uploaded/Michael/c2t_ml.jpg" border=0>

                  Het meest opvallende hieraan is dat de rode CD-hoes paars/roze is geworden.
                  Dit is eenvoudig te verklaren. De verzadiging van het rood in die hoes was zodanig hoog, dat de Cloudy setting voor een sterke oververzadiging heeft gezorgd. Dit betekent dat de rode component sterk geclipt was (zie uitleg in mijn vorige post) en dus niet meer correct kon worden gerecupereerd.
                  De overige kleuren zijn er zo te zien vrij goed uit gekomen.

                  Ik heb het nog niet uitgetest op andere foto's, dus ik weet niet of het resultaat altijd even goed zal zijn.

                  Ik heb deze curve ondertussen ook beschikbaar gesteld, dus ik zou zeggen, test het zelf eens uit en zie of het bruikbaar is.
                  http://www.student.kuleuven.ac.be/~m9715918/curves/cloud2tung.acv

                  In principe zou ik curves kunnen opstellen voor alle mogelijke witbalans-conversies, maar daar heb ik nu geen tijd voor. Misschien iets voor binnenkort...

                  Comment


                  • #10
                    Knap gedaan! Maar zoals je zegt is het niet echt praktisch, behalve voor een noodgeval misschien. Van cloudy naar tungsten is natuurlijk ook zowat het meest extreme voorbeeld.

                    Ik heb net ook vastgesteld dat de belichtingstijd varieert met de gekozen witbalans instelling! In Av-mode koos de camera 1/50s bij WB cloudy en 1/40s bij WB tungsten. Vreemd...

                    mvg,
                    Bob
                    [ http://photos.explore.be/ ]
                    mvg,
                    Bob

                    Comment


                    • #11
                      Cowboy,

                      de verschillende belichtingstijden hoeven niet perse vreemd te zijn en kan zelfs per camera en gebruikt algoritme verschillen. De camera heeft op basis van de gekozen witbalans andere data nodig, (dwz zal ze anders verwerken en soms dus ook anders vergaren), vandaar dat je de correctie achteraf in de meeste gevallen nooit exact kunt krijgen. Dit zie je bv bij het clippen van rood in de grafiek van Michael, waarbij het rood ook niet correct kan worden hersteld (de benodigde data ontbreken immmers, zie overigens ook de reflectie in de tafel, cyaan=te weinig rood). Je kunt in PS zelf met de curves prutsen, maar dat is zeer veel werk en voor de meeste gebruikers is het werken met curven niet intuitief inzichtelijk, dus als je een dergelijke correctie ooit nodig hebt, kunnen de actions van Michael erg handig zijn.

                      Michael,

                      het grillige gedrag voor blauw (tot ca 24) is naar mijn mening geen toeval, maar inderdaad ruis in het blauwe kanaal. Bij veel camera's zal ook rood een dergelijk gedrag vertonen; meestal is het groen-kanaal het schoonste. Dit maakt het inderdaad lastig om op telkens kleine stukjes met curves te moeten corrigeren.

                      Erik

                      Comment


                      • #12


                        de verschillende belichtingstijden hoeven niet perse vreemd te zijn en kan zelfs per camera en gebruikt algoritme verschillen. De camera heeft op basis van de gekozen witbalans andere data nodig, (dwz zal ze anders verwerken en soms dus ook anders vergaren), vandaar dat je de correctie achteraf in de meeste gevallen nooit exact kunt krijgen.

                        Ja, dat is ook wat ik aanvankelijk dacht over die verschillende belichtingstijden. Maar hoe verklaar je dan het volgende? De camera biedt de mogelijkheid om foto's in RAW mode te bewaren. Zo'n RAW bestand bevat de data zoals die uit de CCD komen, zonder witbalans, sharpening, etc. (ook meer dan 8 bits per kleur) Als je zo'n bestand naar je PC hebt gedownload, kan je achteraf nog eenvoudig en accuraat de witbalans e.d. instellen (met de bijgeleverde software van Canon). Dit alles uiteraard zonder verandering van belichtingstijd.

                        Mijns inziens moet de camera dus ook in staat zijn om de witbalans in te stellen onafhankelijk van de belichtingstijd. De camera beschikt immers net zo goed over de 'RAW' CCD data, voordat die gecomprimeerd wordt naar JPEG.
                        Als dat niet zo is, dan zou het schieten in JPEG een voordeel bieden t.o.v. schieten in RAW, namelijk dat de camera in het eerste geval de optimale belichtingstijd kiest voor de gekozen witbalans. Of zie ik het verkeerd?

                        Comment


                        • #13
                          Hmm... Zonet even uitgetest. Blijkbaar neemt de camera ook een andere belichtingstijd voor Tungsten als je in RAW mode werkt. Als dit een invloed heeft op de kwaliteit van de foto, dan blijkt hieruit dat je ook in RAW mode best op voorhand de correcte witbalans instelt... De verschillende belichtingstijd geldt overigens enkel voor Tungsten. Al de andere witbalansen gaven 1/6 s, terwijl Tungsten 1/5 s koos.

                          Comment


                          • #14
                            Dag Michael,

                            Maar hoe verklaar je dan het volgende? De camera biedt de mogelijkheid om foto's in RAW mode te bewaren. Zo'n RAW bestand bevat de data zoals die uit de CCD komen, zonder witbalans, sharpening, etc. (ook meer dan 8 bits per kleur) Als je zo'n bestand naar je PC hebt gedownload, kan je achteraf nog eenvoudig en accuraat de witbalans e.d. instellen (met de bijgeleverde software van Canon). Dit alles uiteraard zonder verandering van belichtingstijd.
                            In RAW-mode maakt de camera geen gebruik van een witbalans-algoritme, maar verzamelt inderaad alleen de gegevens van het CCD. Hier kun je met de geschikte software achteraf de gewenste witbalans-algortime toepassen. Ik vraag me echter af (en ik denk dus van niet) of je _precies_ hetzelfde resultaat krijgt door bv een foto met JPEG->WB:Tungsten te nemen en daarna een foto in RAW (niet-Tungsten, maar Cloudy) en deze achteraf naar Tungsten te converteren...

                            Je moet de RAW-modus denk ik niet als een soort extra meta-witbalans zien, maar een aparte opnamemodus (zonder WB-correctie) naast de door de camera gecorrigeerde WB-foto's.

                            Erik

                            Comment

                            Working...
                            X