Перейти к содержимому

Open

Фотография

О спектрах, качестве света (CRI) и цветовой температуре


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 06:47

Некоторое время назад понадобилось мне научиться определять разницу в цвете некоторых своих препаратов (здесь рассказывал). Казалось бы, чего проще, есть цифры RGB одного цвета, есть другого, какая проблема посчитать разницу? На деле, как обычно в реальном мире, когда погружаешься в тему, то все оказывается сильно сложнее. Расчеты оказались очень громоздкими. В итоге пришлось погружаться в тему серьезно и все эти цветовые расчеты затянули с головой. Не знаю, для чего оно все мне надо, но мне интересно и этой причины вполне достаточно.

 

В итоге, написал для себя программу (точнее черновик программы) для цветовых расчетов. Ну как написал, в основе собственно расчетов код написанный нашим крупнейшим специалистом по цвету, Михаилом Сартаковым (в свободном доступе у него на сайте cielab.xyz), в его математику я даже вникать не стал. Я только переделал под себя то, что мне нужно (у него там 20 тыс строк кода), перевел на С++ (в оригинале был js).

 

К чему все это я здесь пишу? Есть несколько полезных штучек, которые в принципе можно было бы прикрутить к светильникам. Например, можно вывести из спектра то, каким цветом мы его видим, рассчитать цветовую температуру и качество цветопередачи. Для морских светильников это не актуально (нет в них  цветовой температуры, и по качеству цветопередачи их никто не оценивает). А для пресноводных может быть полезно. Ну а для бытового (комнату освещать) вообще было бы супер. 

 

К примеру, ради интереса, загрузил в программу модель светильника BEAMS MAX (12 каналов), на предмет посмотреть, можно ли на МАКСе получить чистый цвет разной цветовой температуры без стороннего цветового оттенка. (Интерес чисто теоретический - для морского аквариума такой цвет нам не нужен). Оказалось можно, вот пожалуйста, циферки ползунков справа внизу. Чистый цвет примерно 11500 Кельвинов с практически нулевым сторонним цветовым оттенком. Оттенок показывает параметр Tint - смещение в красную сторону минус, в зеленую плюс. На показанном ниже спектре он практически нулевой. Это при том, что набор светодиодов на данном светильнике вообще-то приспособлен совсем не для такого спектра, а для синего-морского. Кроме нулевого оттенка у данного спектра еще и очень высокий показатель качества света (в быту): качество цветопередачи (по самым последним методикам) 95.5 %. (Устаревший CRI еще выше, 96.7).

Если отвлечься от морского аквариума, то для глаза адаптированного к стандартному дневному свету он будет казаться светло-голубым (цвет показан в прямоугольнике с цифрами Lab под спектром). Над морским аквариумом, он, конечно, будет сильно желтить (т. к. мы привыкли, чтобы там была синева, и все что теплее кажется желтым)

Screenshot_6.jpg


  • Sleepy, DNK, CryX и еще 1 это нравится
Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#2 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 07:46

Для сравнения, солнечный спектр 5700К и легкий зеленый оттенок (видимо от листвы (летом снимал), цветопередача по всем критериям >99%

Screenshot_3.jpg

 

Лампочка ремез с диодами SunLike (очень хороший бытовой свет, но ужасное исполнение, и, к сожалению, недавно снята с производства): почти такой же свет по всем параметрам, цветопередача очень на высоте (лишь слегка хуже солнечного, что естественно)

Screenshot_2.jpg

 

 

И обычная бытовая лед-лампочка с "белыми" диодами. Самое смешное, что диоды там действительно светят типа как белым цветом (4100К при околонулевом цветном оттенке), но посмотрите на качество цветопередачи - полный провал. То есть под таким светом цветные предметы будут выглядеть совсем тухло.

Screenshot_4.jpg


  • Sleepy, DNK и Dmitry_N это нравится
Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#3 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 19 931
  • Меня зовут:Дмитрий

Отправлено 14 Январь 2023 - 09:15

Карен, браво. Это просто новогодний подарок! Давно хотел добавить вывод этой информации к нашей программе, но во-первых, после того, как будут сделаны более насущные дела, а во-вторых, посмотрел - сколько там всего надо сделать и разобраться - ужОс, в глазах темнеет. Оказывается, добрый человек Михаил Сартаков это сделал, а ты всё уже на С++ перевёл! Красавец. Моё восхищение! В очередной раз ты порадовал всё аквариумное сообщество!

 

Сейчас с дизайнером интерфейсов обсудим, куда и как это прикрутить в интерфейсе, потом побеспокою тебя насчёт исходников.



#4 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 09:26

Карен, браво. Это просто новогодний подарок! Давно хотел добавить вывод этой информации к нашей программе, но во-первых, после того, как будут сделаны более насущные дела, а во-вторых, посмотрел - сколько там всего надо сделать и разобраться - ужОс, в глазах темнее. Оказывается, добрый человек Михаил Сартаков это сделал, а ты всё уже на С++ перевёл! Красавец. Моё восхищение! В очередной раз ты порадовал всё аквариумное сообщество!

 

Сейчас с дизайнером интерфейсов обсудим, куда и как это прикрутить в интерфейсе, потом побеспокою тебя насчёт исходников.

Вот вот, там не просто ужОс, а настоящий "кошмар летящий на крыльях ночи". Все эти малопонятные хроматические адаптации, штук 8 по разным авторам, точки белого такие, сякие... Я на очень поверхностном уровне, лишь слегка коснулся темы (потратив пару месяцев), и многие куски кода тупо оттранслировал себе не вникая в суть.

 

Из нерешенных проблем - если считать цвет из спектра, то как раз для важной нам синей части спектра, рассчитанный по спектру  цвет получается зависимым от яркости (что в реале не так). То есть, один и тот же синий спектр при большой яркости при расчете получается фиолетовым, а не синим, причем разница с очень большая. Я так и не понял, почему так получается, в полиграфии есть эффект "blue turns purple", у Спартакова есть калькуляторы учитывающие этот эффект, но у него для полиграфии заточено, и как применить непонятно. Впрочем, если что к нему обратиться можно, он дядька очень доброжелательный и общительный.


Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#5 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 19 931
  • Меня зовут:Дмитрий

Отправлено 14 Январь 2023 - 09:41

То есть, один и тот же синий спектр при большой яркости при расчете получается фиолетовым, а не синим, причем разница с очень большая. Я так и не понял, почему так получается, в полиграфии есть эффект "blue turns purple",

Да, с синим заморочки всегда. Там даже есть такой термин "полиграфический синий". В общем, куда ни кинь - везде клин, тема непростая вся целиком и даже отдельные её кусочки - чёрт ногу сломит.
 

Впрочем, если что к нему обратиться можно, он дядька очень доброжелательный и общительный.

Обратись, пожалуйста. Мне кажется, он может быть обрадован тем, что теперь его работа переведена на С++ - это самоценно.



#6 Sleepy

Sleepy

    Продвинутый пользователь

  • Администраторы
  • Cообщений: 18 421
  • Меня зовут:Николай
  • Откуда:Москва

Отправлено 14 Январь 2023 - 09:52

К чему все это я здесь пишу? Есть несколько полезных штучек, которые в принципе можно было бы прикрутить к светильникам. Например, можно вывести из спектра то, каким цветом мы его видим, рассчитать цветовую температуру и качество цветопередачи. Для морских светильников это не актуально (нет в них  цветовой температуры, и по качеству цветопередачи их никто не оценивает). А для пресноводных может быть полезно.

А что если не только выводить, но и по аналогии с TV/AV режимами на фото, можно было бы фиксировать какое-то (какие-то) значение (значения), а система под них пересчитывала бы остальные составляющие?

 

На примере: Мы дёргаем ползунки диодов, получаем какой-то CCT и интегральную мощность. Дальше нажимаем кнопку "Сделай круче!" и система сама бы предлагала другой спектр (спектры) с теми же заданным нами cct и "мощностью", но бОльшим (лучшим) CRI (ведь спектр для получения данного cct далеко не единственный). Также можно подумать и над обратными задачками...

 

Не знаю на сколько это может быть большинству конечных пользователей, но для пытливых умов поковыряться - мне кажется могло бы быть интересным... 


  • DNK это нравится

С Уважением, Николай.

Я не отвечаю на "аквариумные" вопросы в личке. Пишите на форум, пожалуйста.


#7 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 09:52

Еще, подкину мысли тебе на будущее. Опять же, для моря не надо, но для пресняка или для домашнего света, было бы здорово дать пользователю возможность крутить не отдельные каналы, а просто регулировать цветовую температуру - теплее-холоднее, в цифрах. При этом программа расчитывает сама яркости каналов так, чтобы суммарно получилась заданная температура, при максимальном CRI. Только как считать в эту (обратную) сторону я не знаю. Боюсь только перебором вариантов по Баесу. Но математика этого дела - это не ко мне вопрос, я знаю только что наши биологические программы так считают генетику (по Баесу, он же метод Монте-Карло, кидаем кости :) )

 

>> Мне кажется, он может быть обрадован тем, что теперь его работа переведена на С++ - это самоценно.

Да не, ценности никакой нет, я лишь кусочки перевел очень сильно урезав, у него там под полиграфию все заточено и под научный интерес и под 20 тыс строк кода на все случаи жизни, а я лишь поделку для себя сделал. Моя прога к массовому применению не пригодна (не кривляюсь, оно действительно так). Он свой спектральный калькулятор уже лет 12 пишет: https://cielab.xyz/s...ectralcalc.php 


  • DNK это нравится
Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#8 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 09:55

Не знаю на сколько это может быть большинству конечных пользователей, но для пытливых умов поковыряться - мне кажется могло бы быть интересным... 

Вот, выше как раз примерно про это и писал - как рассчитать положение ползунков под заданную температуру в кельвинах. И кроме как перебором по Баесу решения не вижу. А перебор по Баесу я не умею (и даже формул не знаю). Но как-то такое считают.


  • DNK это нравится
Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#9 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 19 931
  • Меня зовут:Дмитрий

Отправлено 14 Январь 2023 - 09:58

было бы здорово дать пользователю возможность крутить не отдельные каналы, а просто регулировать цветовую температуру - теплее-холоднее, в цифрах.

Да, имея такую базу дальше можно наворачивать почти до бесконечности :)

Он свой спектральный калькулятор уже лет 12 пишет: https://cielab.xyz/s...ectralcalc.php 

Охренеть. Теперь тем, кто далёк от этой темы, наверное, станет немного понятнее, "как глубока кроличья нора"...

#10 Sleepy

Sleepy

    Продвинутый пользователь

  • Администраторы
  • Cообщений: 18 421
  • Меня зовут:Николай
  • Откуда:Москва

Отправлено 14 Январь 2023 - 14:23

Вот, выше как раз примерно про это и писал - как рассчитать положение ползунков под заданную температуру в кельвинах. И кроме как перебором по Баесу решения не вижу. А перебор по Баесу я не умею (и даже формул не знаю). Но как-то такое считают.

А в каком виде хранится информация о влиянии отдельного ползунка на спектр? Это одномерный массив? (Кол-во излучения при максимальном положении ползунка для каждой частоты в спектре им формируемом) ?


С Уважением, Николай.

Я не отвечаю на "аквариумные" вопросы в личке. Пишите на форум, пожалуйста.


#11 Карен

Карен

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 900
  • Откуда:Камчатка

Отправлено 14 Январь 2023 - 14:56

Как у Димы в светильнике я не знаю, а у меня (и в стандартных колориметрических расчетах) система такая:

 

Спектр - массив float[109], 109 значений, замеры излучения от 370 до 730 нм через 3 нм.

Суммарный спектр = каждый спектр умножить на положение ползунка (от 0 до 1) и все сложить. Тут вообще сложностей нет, пять минут на написание кода.

 

Замуты начинаются именно с цветовыми расчетами, матрицы какие-то перемножаются, еще какая-то темная магия, куча значений, перемножается, делится, тангенсы, арктангенсы и все такое прочее. Ты наверняка такое любишь, а я лишь готов терпеть, но вникать - увольте. Когда в одной функции расчета энергии света в чужом коде разом обнаружились и постоянная Планка, и скорость света и число Авогадро и что-то еще связанное с энергией, я понял что разбираться точно не буду - работает и ладно.

 

Если совсем кратко собственно по цвету, то сначала из спектра рассчитывают координаты XYZ - это примерно то же, что и RGB, но для человеческого мозга. Рассчитывают по довольно простым формулам используя готовые табличные данные чувствительности каждого из трех компонентов нашего цветного зрения к данной длине волны.  Далее из этих XYZ выводится цветовая температура, причем напрямую не рассчитывается, а прикидывается итерациями, и Lab значения. И уже из Lab можно рассчитать RGB для показа цвета на компе. Но это только в общих принципах кажется просто, на деле там куча всего еще считается и еще большая куча берется из таблиц (они реально большие). Ну и результаты разные в зависимости от того, под какие условия просмотра все это считалось (смотреть будете при белом свете или при лампах накаливания и так далее)


  • DNK это нравится
Самодельные тесты: NO3, NO2, PO4, Si, KH, Ca, Mg.
от крипта...

#12 Kronid Titov

Kronid Titov

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 27
  • Меня зовут:Kronid
  • Откуда:Москва

Отправлено 22 Январь 2023 - 02:29

Вот тебе и лучик белого света, белого цвета  :O ...






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных