Görüntüyü aydınlatan ışık kaynağının renk sıcaklığını nasıl hesaplayabilirim?


14

Belirli bir görüntüyü aydınlatan ışık kaynağının (siyah gövde eşdeğeri) renk sıcaklığını nasıl hesaplayabilirim? Aşağıda, Adobe Lightroom'un renk sıcaklığını ve RGB Histogramlarındaki bir değişikliği işleyen ekran görüntüleri bulunmaktadır. Görüntünün RGB bileşenleri göz önüne alındığında, görüntüyü nasıl hesaplayabilirim? Tek bir değer beklemeliyim - Aydınlatma kaynağının kara cisim dengi sıcaklığı, değil mi?

4600K 23810K


Bunun mantıklı olduğundan emin değilim. Renk sıcaklığı, görüntü çekilirken bir sahneyi aydınlatmak için kullanılan lambalar gibi bir ışık özelliğidir. Görüntülerin kendilerinin renk sıcaklığı olup olmadığını bilmiyorum. Düz yeşil bir görüntünün renk sıcaklığı nedir? Yeşil, kara cisim spektrumunda bile değil. Yüksek sıcaklık kaynağı tarafından aydınlatılan koyu yeşil bir nesne veya düşük sıcaklık kaynağı tarafından aydınlatılan açık yeşil bir nesne tarafından mı üretildi?
endolit

Sorumun son kısmı - "Tek bir değer beklemeliyim - Aydınlatma kaynağının kara cisim dengi sıcaklığı, değil mi?" Belirsiz miydim? Öyleyse, düzenlemeleri önermekten çekinmeyin. Yeşil bir yüzeyiniz varsa, aydınlatma kaynağına bağlı olarak farklı görünecektir. Yeşil rengi görmeye ve aydınlatma kaynağının (siyah gövde eşdeğeri) sıcaklığını hesaplamaya çalışıyorum - Photoshop ve Light Room nasıl yapıyor ?. Düz yeşil bir nesne bile - # 00FF00 (rgb hex) olarak görünmemelidir.
Lord Loh.

@endolith - Bazı değişiklikler yaptım. Sizce soru şimdi daha açık mı?
Lord Loh.

Tamam, bu daha mantıklı, ama yine de mümkün olduğundan emin değilim. Farklı renk sıcaklığı kaynakları tarafından aydınlatılan iki yeşil ton, aynı çıktı görüntüleri üretemez mi? Öyleyse aydınlatıcının renk sıcaklığını nesnenin ve kameranın özelliklerini bilmeden nasıl anlayabilirsiniz?
endolit

@endolith - Yapabilir mi? Emin değilim. Bence olabilir. Kameralar Beyaz dengesi kontrolüne sahiptir. Ancak çoğu görüntünün birden fazla tonu vardır ve bu histogramlarla analiz edilir - stokastik olarak. Bu nedenle, belirli bir sıcaklıkta olmanın bir güven aralığı olabilir. Ayrıca, kameralar ve resimler de bazı meta verilere sahiptir. Bunun için denklemin uzman sürücü olduğunu hissediyorum - birisi (uzman) bir sayı vermek için kalibre etti. * C veya * F gibi - Suyun donma noktasının 0 * C veya 32 * F olarak ayarlanmasına kim karar verdi?
Lord Loh.

Yanıtlar:


10

Bu makale (pdf indir) İlişkili Renk Sıcaklığını (CCT) hesaplamak için aşağıdaki formülleri vermektedir. Açıkça söylemiyorlar (ya da özledim), ancak örnekleri beni 0-255 aralığında RGB değerleri aldıklarını çıkarmaya itiyor.

1. RGB değerlerini aşağıdaki gibi CIE tristimulus değerlerine (XYZ) dönüştürün :

X=(0.14282)(R)+(1.54924)(G)+(0.95641)(B)
Y=(0.32466)(R)+(1.57837)(G)+(0.73191)(B)=Illuminance
Z=(0.68202)(R)+(0.77073)(G)+(0.56332)(B)

2. Normalize edilmiş kromatiklik değerlerini hesaplayın:

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

3. ŞNT değerini şuradan hesaplayın:

CCT=449n3+3525n2+6823.3n+5520.33

where n=(x0.3320)/(0.1858y)

Aşağıdaki denklemi oluşturmak için birleştirilebilir:

burada  n = ( ( 0.23881 ) R + ( 0.25499 ) G + ( - 0.58291 ) B ) / ( ( 0.11109 ) R + ( - 0.85406 ) G + ( 0.52289 ) B )

CCT=449n3+3525n2+6823.3n+5520.33
where n=((0.23881)R+(0.25499)G+(0.58291)B)/((0.11109)R+(0.85406)G+(0.52289)B)

Bunu bir görüntüye uygulamak konusunda emin değilim, ama sadece tek bir genelleme numarası istiyorsanız, belki de bir çeşit ortalama kullanmaktan daha iyidir? Ya görüntü için kabul edilebilir bir "ortalama" RGB değeri bulun (örneğin, sentroid) ve bunu bir sıcaklığı hesaplamak için kullanın veya (çok daha hesaplama açısından pahalı bir seçenek) görüntüdeki her piksel için sıcaklığı hesaplayın ve bu sonuçların ortalamasını alın .

Ayrıca, CCT'nin çoğu renk için sadece yaklaşık bir metrik olduğunu unutmayın, çünkü renk uzayındaki tek bir eğri aslında gerçek bir dünya siyah gövde radyatöründen elde edilebilen rengi temsil eder. Bu nedenle, diğer tüm renkler için, hesaplanan renk sıcaklığı, en yakın şekilde temsil ettiği siyah vücut sıcaklığının yaklaşık bir değeridir. Bu nedenle, bazı renkler (özellikle yeşillikler) için aslında en azından fiziksel anlamda biraz anlamsız bir değer olabilir. Bu, aşağıdaki görüntüde iyi gösterilmiştir ( renk sıcaklığı hakkındaki wikipedia makalesinden ).

Görüntüdeki siyah çizgi, aslında blok gövde radyasyonu ile üretilebilecek Planckian renk odağını temsil eder . Daha küçük kesişme çizgileri, yakın görüşteki CCT yaklaşımının izotermlerini temsil eder.

Sorunuzun uygun Adobe Lightroom başvuran beri Ayrıca buldum bu çevrede ararken:

Kaydırma çubukları [Adobe Lightroom'da] ışığın siyah gövde sıcaklığını değil, ışığın siyah gövde sıcaklığını telafi etmek için görüntüye uygulanan telafiyi ayarlar. Bu tersine gidiyor.

Bu nedenle, Lightroom kaydırıcısında gördüğünüz renk sıcaklığının yukarıdaki formüllerden hesaplananlarla aynı olmayacağını unutmayın.


Yukarıda kullanılan RGB-XYZ dönüşümünün belirli bir donanım tarafından kullanılan renk alanına özgü göründüğünü lütfen unutmayın. OP'nin durumunda büyük olasılıkla kullanılan sRGB için kesinlikle doğru değildir. SRGB standardında
awdz9nld

Ayrıca CIE 1931'deki Y bileşeninin aydınlatmanın aksine parlaklığı ifade ettiğini unutmayın
awdz9nld 26:14

0

Formüllerinize göre bazı renkler hesapladım ve bazı durumlarda gördüğüm gibi işe yarıyor, bazı durumlarda - kırmızı (255 0 0) ve mavi (0 0 255) gibi - yanlış cevap veriyor:

  • beyaz (25525525255): n = 0.4049, CCT = 8890.77 K -> doğru gibi görünüyor
  • sarı (255255 0): n = -0.6646, CCT = 2410.65 K -> doğru görünüyor
  • yeşil (0 255 0): n = -0.2986, CCT = 3785.42 K -> doğru görünüyor
  • camgöbeği (0 255255): n = 0.9902, CCT = 16168.7 K -> doğru gibi görünüyor
  • eflatun (255 0 255): n = -0.5428, CCT = 2783.54 K -> doğru gibi görünüyor

ancak:

  • kırmızı (255 0 0): n = 2.1497, CCT = 40938.6 K -> yanlış görünüyor

  • mavi (0 0 255): n = -1.1148, CCT = 1672.45 K -> yanlış görünüyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.