Jak obliczyć temperaturę barwową źródła światła oświetlającego obraz?

14

Jak obliczyć (w kolorze ciała) temperaturę barwową źródła światła oświetlającego dany obraz? Poniżej znajdują się zrzuty ekranu programu Adobe Lightroom manipulującego temperaturą kolorów i przesunięciem histogramów RGB. Biorąc pod uwagę składniki RGB obrazu, jak przejść do jego obliczenia? Powinienem oczekiwać jednej wartości - Temperatura ekwiwalentu czarnego ciała źródła światła, prawda?

4600 tys 23810 K.

Lord Loh.
źródło
Nie jestem pewien, czy to ma sens. Temperatura barwowa jest właściwością światła, podobnie jak lampy używane do oświetlania sceny podczas robienia zdjęcia. Nie wiem, czy same obrazy mają temperaturę barwową. Jaka jest temperatura barwowa zwykłego zielonego obrazu? Zielony nie ma nawet w spektrum ciała czarnego. Czy został wytworzony przez ciemnozielony obiekt oświetlony źródłem wysokiej temperatury, czy jasnozielony obiekt oświetlony źródłem niskiej temperatury?
endolith
Ostatnia część mojego pytania - „Powinnam oczekiwać jednej wartości - Temperatura ciała równoważnego czarnego ciała źródła oświetlenia, prawda?” Czy byłem niejasny? Jeśli tak, możesz zaproponować zmiany. Jeśli masz zieloną powierzchnię, będzie ona wyglądać inaczej w zależności od źródła oświetlenia. Usiłuję zobaczyć kolor zielony i obliczyć (ekwiwalent czarnego ciała) temperaturę źródła oświetlenia - jak to robią Photoshop i Light Room ?. Nawet zwykły zielony obiekt nie pojawi się jako - # 00FF00 (rgb hex).
Lord Loh.
@endolith - Wprowadziłem kilka zmian. Czy uważasz, że pytanie jest teraz jaśniejsze?
Lord Loh.
Ok, to ma sens, ale wciąż nie jestem pewien, czy to możliwe. Czy dwa odcienie zieleni oświetlone różnymi źródłami temperatury barwowej nie dają identycznych obrazów wyjściowych? Jak więc określić temperaturę barwową źródła światła, nie znając właściwości obiektu i kamery?
endolith
@endolith - czy to możliwe? Nie jestem pewien. Myślę, że może. Aparaty mają wbudowaną kontrolę balansu bieli. Ale większość obrazów ma wiele odcieni i wydaje się to analizowane histogramami - stochastycznie. Zatem może istnieć przedział ufności przebywania w określonej temperaturze. Poza tym aparaty i zdjęcia mają także metadane. Mam wrażenie, że równanie do tego jest napędem eksperckim - ktoś (ekspert) skalibrował go, aby podać liczbę. Podobnie jak * C lub * F - Kto zdecydował, że temperatura zamarzania wody będzie ustawiona na 0 * C lub 32 * F?
Lord Loh.

Odpowiedzi:

10

Ten artykuł (plik pdf do pobrania) podaje następujące wzory do obliczania skorelowanej temperatury barwowej (CCT). Nie mówią wprost (lub mi tego brakowało), ale ich przykład prowadzi mnie do wniosku, że przyjmują wartości RGB w zakresie 0-255.

1. Przekształć wartości RGB na wartości trójbodźca CIE (XYZ) w następujący sposób:

X=(-0,14282)(R)+(1,54924)(sol)+(-0,95641)(b)
Y=(-0,32466)(R)+(1,57837)(sol)+(-0,73191)(b)=jallumjanzandomi
Z=(-0,68202)(R)+(0,77073)(sol)+(0,56332)(b)

2. Oblicz znormalizowane wartości chromatyczności:

x=X/(X+Y+Z)
y=Y/(X+Y+Z)

3. Oblicz wartość CCT z:

dodoT.=449n3)+3525n2)+6823.3n+5520,33

gdzie n=(x-0,3320)/(0,1858-y)

Które można połączyć w celu utworzenia następującego równania:

dodoT.=449n3)+3525n2)+6823.3n+5520,33
gdzie n=((0,23881)R+(0,25499)sol+(-0,58291)b)/((0,11109)R+(-0,85406)sol+(0,52289)b)

Nie jestem pewien co do zastosowania tego do obrazu, ale jeśli chcesz tylko jednej liczby uogólniającej, to może mógłbyś użyć jakiegoś uśrednienia? Znajdź akceptowalną „średnią” wartość RGB obrazu (np. Centroid) i użyj jej do obliczenia temperatury lub (opcja o wiele bardziej kosztowna obliczeniowo) oblicz temperaturę dla każdego piksela na obrazie i weź średnią z tych wyników .

Należy również pamiętać, że CCT jest jedynie przybliżoną miarą dla większości kolorów, ponieważ tylko pojedyncza krzywa w przestrzeni kolorów reprezentuje kolor, który można uzyskać z prawdziwego czarnego grzejnika na świecie. Tak więc dla wszystkich innych kolorów obliczona temperatura barwowa jest po prostu przybliżeniem czarnej temperatury ciała, którą najbardziej reprezentuje. Dlatego w przypadku niektórych kolorów (zwłaszcza zieleni) może to być w pewnym sensie wartość bez znaczenia, przynajmniej w sensie fizycznym. Jest to dobrze zilustrowane na poniższym obrazie (z artykułu w Wikipedii na temat temperatury barwowej ).

Czarna linia na obrazie reprezentuje locus kolorów Planckiego, który może być faktycznie wytworzony przez promieniowanie bryły bloku. Mniejsze linie przecięcia reprezentują izotermy przybliżenia CCT w pobliżu.

Ponadto, ponieważ twoje pytanie odnosi się konkretnie do Adobe Lightroom, znalazłem to podczas wyszukiwania:

Suwaki [w Adobe Lightroom] nie dostosowują temperatury czarnego ciała światła, ale kompensację zastosowaną do obrazu w celu kompensacji temperatury czarnego ciała światła. Odwrotnie.

Należy więc pamiętać, że temperatura kolorów widoczna na suwaku Lightroom nie będzie taka sama jak temperatura obliczona na podstawie powyższych wzorów.

Sam Maloney
źródło
Należy pamiętać, że zastosowana powyżej transformacja RGB-XYZ wydaje się być specyficzna dla przestrzeni kolorów używanej przez określony sprzęt. Z pewnością nie jest poprawny w przypadku sRGB, co najprawdopodobniej jest używane w przypadku OP. Sprawdź poprawne przekształcenia w standardzie sRGB
awdz9nld,
Należy również zauważyć, że składnik Y w CIE 1931 oznacza luminancję, w przeciwieństwie do iluminacji
awdz9nld,
0

Obliczyłem niektóre kolory według twoich wzorów i, jak widzę, w niektórych przypadkach działa, podczas gdy w niektórych innych przypadkach - takich jak czerwony (255 0 0) i niebieski (0 0 255) - daje złą odpowiedź:

  • biały (255 255 255): n = 0,4049, CCT = 8890,77 K -> wydaje się być poprawny
  • żółty (255255): n = -0,6646, CCT = 2410.65 K -> wydaje się być poprawny
  • zielony (0255 0): n = -0,2986, CCT = 3785.42 K -> wydaje się być poprawny
  • cyjan (0255255): n = 0,9902, CCT = 16168,7 K -> wydaje się być poprawny
  • karmazynowy (255 0 255): n = -0,5428, CCT = 2783,54 K -> wydaje się być poprawny

jednak:

  • czerwony (255 0 0): n = 2.1497, CCT = 40938.6 K -> wydaje się być błędny

  • niebieski (0 0 255): n = -1.1148, CCT = 1672.45 K -> wydaje się być błędny

Tamas
źródło