Як обчислити кольорову температуру джерела світла, що освітлює зображення?


14

Як я можу обчислити (чорний еквівалент тіла) кольорову температуру джерела світла, що висвітлює задане зображення? Нижче наведені скріншоти Adobe Lightroom, що маніпулюють кольоровою температурою та зміною гістограм RGB. Враховуючи RGB компоненти зображення, як я можу взятись до його обчислення? Я повинен очікувати єдиного значення - Еквівалентна температура чорного тіла джерела освітлення, правда?

4600К 23810К


Я не впевнений, що це має сенс. Температура кольору є властивістю світла, як лампи, що використовуються для освітлення сцени під час зйомки зображення. Я не знаю, чи самі зображення мають кольорову температуру. Мовляв, яка кольорова температура звичайного зеленого зображення? Зеленого немає навіть у спектрі чорних тіл. Це було вироблено темно-зеленим предметом, освітленим джерелом високої температури, або світло-зеленим об'єктом, освітленим джерелом низької температури?
ендоліт

Остання частина мого запитання - "Я повинен очікувати єдиного значення - Еквівалентна температура чорного тіла джерела освітлення, правда?" Невже мені було незрозуміло? Якщо так, будь ласка, не соромтеся запропонувати зміни. Якщо у вас зелена поверхня, вона повинна виглядати по-різному в залежності від джерела освітлення. Я намагаюся побачити зелений і обчислити (чорний еквівалент тіла) джерела освітлення - як це роблять Photoshop та Light Room ?. Навіть звичайний зелений об’єкт не повинен виглядати як - # 00FF00 (шестнадцятковий rgb).
Лорд Лох.

@endolith - я вніс деякі зміни. Ви вважаєте, питання зараз зрозуміліше?
Лорд Лох.

Гаразд, це має більше сенсу, але я все ще не впевнений, що це можливо. Чи не можуть два відтінки зеленого, освітлені різними джерелами кольорової температури, створювати однакові вихідні зображення? Тож як можна визначити кольорову температуру освітлювача, не знаючи властивостей об’єкта та камери?
ендоліт

@endolith - це можна? Я не впевнений. Я думаю, що це може. Камери вбудовані в систему контролю балансу білого. Але більшість зображень мають кілька відтінків, і це, здається, аналізується за допомогою гістограм - стохастично. Тому може бути певний інтервал перебування при певній температурі. Крім того, камери та фотографії також мають деякі метадані. У мене є відчуття, що рівняння для цього є експертним приводом - хтось (експерт) його калібрував, щоб дати число. Так само, як * C або * F - Хто вирішив, що точка замерзання води повинна бути встановлена ​​на 0 * C або 32 * F?
Лорд Лох.

Відповіді:


10

У цьому документі (завантаження у форматі PDF) наведені наступні формули для розрахунку корельованої колірної температури (CCT). Вони прямо не кажуть (або я це пропустив), але їх приклад приводить мене до висновку, що вони приймають значення RGB у діапазоні 0-255.

1. Перетворіть значення RGB в тристімульні значення CIE (XYZ) наступним чином:

Х=(-0,14282)(R)+(1.54924)(Г)+(-0,95641)(Б)
Y=(-0,32466)(R)+(1.57837)(Г)+(-0,73191)(Б)=Яллумiнанcе
Z=(-0,68202)(R)+(0.77073)(Г)+(0,56332)(Б)

2. Обчисліть нормовані значення хроматичності:

х=Х/(Х+Y+Z)
у=Y/(Х+Y+Z)

3. Обчисліть значення CCT з:

ССТ=449н3+3525н2+6823.3н+5520,33

де н=(х-0,3320)/(0,1858-у)

Які можуть бути об'єднані, щоб утворити таке рівняння:

ССТ=449н3+3525н2+6823.3н+5520,33
де н=((0,23881)R+(0,25499)Г+(-0,58291)Б)/((0,11109)R+(-0,85406)Г+(0,52289)Б)

Я не впевнений у застосуванні цього до зображення, але якщо ви хочете лише одного, узагальнюючого числа, ніж ви могли б використати якесь усереднення? Або знайдіть прийнятне "середнє" значення RGB для зображення (наприклад, центроїд) і скористайтеся цим для обчислення температури або (набагато більш обчислювально дорогий варіант) обчисліть температуру для кожного пікселя на зображенні та отримайте середнє значення цих результатів .

Також майте на увазі, що CCT - це лише приблизна метрика для більшості кольорів, оскільки лише одна крива в кольоровому просторі насправді являє собою колір, який можна отримати з реального радіатора чорного кузова. Таким чином, для всіх інших кольорів обчислена кольорова температура є просто наближенням температури чорного тіла, яку вона найбільш близько представляє. Таким чином, для деяких кольорів (особливо зелених) це насправді може бути дещо безглуздою цінністю, принаймні у фізичному сенсі. Це добре проілюстровано на наступному зображенні (зі статті вікіпедії про кольорову температуру ).

Чорна лінія на зображенні позначає плацківський локус кольорів, які фактично можуть бути отримані блоком випромінювання тіла. Менші лінії перетину являють собою ізотерми наближення CCT поблизу.

Крім того, оскільки ваше питання стосується конкретно Adobe Lightroom, я знайшов це під час пошуку:

Повзунки [в Adobe Lightroom] регулюють не темп темпу світла тіла, а компенсацію, застосовану до зображення, щоб компенсувати темп темпу світла тіла. Це йде навпаки.

Тож майте на увазі, що кольорова температура, яку ви бачите на слайдері Lightroom, не буде такою ж, як у розрахунку за наведеними вище формулами.


Будь ласка, майте на увазі, що перетворення RGB-XYZ, використане вище, схоже на колірний простір, який використовується певним обладнанням. Це, звичайно, неправильно для sRGB, саме те, що, ймовірно, використовується у випадку ОП. Зверніться до правильних перетворень у стандарті sRGB
awdz9nld

Зауважимо також, що компонент Y в CIE 1931 позначає яскравість, на відміну від освітленості
awdz9nld

0

Я підрахував деякі кольори за вашими формулами, і, як я бачу, в деяких випадках це працює, тоді як в інших випадках - наприклад, червоний (255 0 0) і синій (0 0 255) - він дає неправильну відповідь:

  • білий (255 255 255): n = 0,4049, CCT = 8890,77 K -> здається, правильний
  • жовтий (255 255 0): n = -0,6646, CCT = 2410,65 K -> здається, правильний
  • зелений (0 255 0): n = -0,2986, CCT = 3785,42 K -> здається, правильний
  • блакитний (0 255 255): n = 0,9902, CCT = 16168,7 K -> здається, правильний
  • пурпурова (255 0 255): n = -0,5428, CCT = 2783,54 K -> здається, правильна

проте:

  • червоний (255 0 0): n = 2.1497, CCT = 40938.6 K -> здається, неправильно

  • синій (0 0 255): n = -1.1148, CCT = 1672.45 K -> здається, неправильно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.