go to bottom
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Обновлённый редактор спектров и пигментов

По ссылке на объект в облаке найдёте архив с утилитой и инструкцией:
https://cloud.mail.r...
Пароль 84653025
Для PC, Windows.

Трудно остановиться в процессе выдумывания новых возможностей утилиты, но я притормаживаю и выкладываю то, что есть. Повторяю инструкцию здесь.

Утилита SpDistrEdit.exe создана для того, чтобы один homo sapiens мог наглядно объяснить другому, как спектральные характеристики источника света влияют на восприятие глазом сцены, в которой присутствуют различные пигменты. Основной язык интерфейса английский, но вываливающиеся подсказки - на русском.

Диапазон видимого света дискретизирован для удобства. Считаем, что присутствуют длины волн от 380 нм до 700 нм с шагом 5 (дискретная шкала из 65 точек). Спектром (spectral distribution, SD) будем называть таблицу, которая для каждой длины волны даёт мощность, которая на неё приходится. Таблица нормализуется так, что средняя мощность равна единице, иначе говоря, сумма мощностей равна 65 – количеству точек на шкале длины волны света. Забегая вперёд, предупреждаем, что при редактировании спектра можно не соблюдать нормализацию, но если результат творчества актуализировать, то он нормализуется.

Пигмент в нашей терминологии – нечто такое, что неравномерно поглощает свет (равномерность – частный случай неравномерности). Конкретный пигмент задаётся таблицей, которая для каждой длины волны даёт долю пропущенного света. Английский термин для пигмента (reflectance distribution, RD) понимаем расширительно – или пигмент отражает свет (как малахит), или пигмент пропускает свет (как изумруд).

При работе утилиты есть некоторый текущий (актуальный) спектр и набор пигментов, среди которых один выбран в качестве текущего. Переходим к описанию интерфейса. Главное окно программы:

Для форума

Слева три графика. Цифрой 1 обозначен график текущего спектра на белом фоне, цифрой 2 – график текущего пигмента на чёрном фоне, цифрой 3 – результат фильтрации текущего спектра текущим пигментом на фоне получившегося цвета.

Справа вверху цифрой 4 обозначена палитра имеющихся пигментов. На нём галочкой помечен текущий пигмент. После запуска программы палитра включает 14 пигментов из той коллекции (TCS), что используется для оценки CRI света. Можно вручную добавлять пигмент (как - разговор дальше). Показ пигмента возможен в двух вариантах: близком к номинальному или с яркостью, максимально возможной для монитора. В палитре цвета даются по первому варианту. Текущий пигмент выделяется в палитре галочкой и плюс номер его пишется после слов «RD number». Выбор пигмента делается щелчком на палитре.

Внизу цифрой 5 обозначена полоса подсказок на русском языке насчёт назначения кнопок и картинок окна. Подсказка выскакивает при пронесении курсора мышки над элементом окна. Разберём назначение кнопок.

«Show carpet» (освежить-показать окно сравнения всех пигментов)

Высвечивается окно, где пигменты представлены во всех возможных парных сочетаниях.

Для форума


Для хранения спектров и пигментов предусмотрено два формата файлов, оба по сути текстовые. Первый примитивный – PST. Если хочется порезвиться с ним с помощью MS Excel, то расширение надо сменить на txt. После загрузки Notepad или MS Excel увидите два столбика: в первом дискретная шкала длин волн (в нанометрах), во втором соответствующие значения мощности спектра (или коэффициента пропускания пигмента). Кнопки для загрузки-сохранения:
«Load and replace the reflectance distribution from *.PST»
Загрузить пигмент с заменой текущего.
«Load and add a new reflectance distribution from *.PST»
Загрузить пигмент и добавить его в палитру.
«Save the reflectance distribution as *.PST»
Сохранить текущий пигмент.
«Load (replace) the spectral distribution from *.PST»
Загрузить спектр.
«Save the spectral distribution as *.PST»
Сохранить спектр.
«Get black body radiation for temperature»
Назначить текущий спектр, как излучение абсолютно чёрного тела при заданной температуре (по Кельвину). Предустановленный спектр - излучение ЧТ при 6500К.
«Show CIE1964»
Высвечивание окна с цветовой диаграммой. Если вдруг захочется.

Для форума


«times filter SD by RD»
Перед кнопкой находится окошко для ввода числа, задающего кратность фильтрации текущего спектра текущим пигментом. Изначально она однократная. При нажатии кнопки текущий спектр заменяется на фильтрованный (с нормализацией до стандартной яркости, то есть единичным средним значением).
«times increase RD»
Кратно усилить текущий пигмент. Кратность задаётся в том же окошке, что и для предыдущей команды.
«Compose reflectance distributions»
Добавить новый пигмент, как композицию двух пигментов из палитры, номера которых задаются в двух окошках радом с кнопкой. Номера не обязательно разные.

«Add RD in RDC-widow»
Высвечивается окошко без границы и заголовка, в которое добавляется текущий пигмент для сравнения контраста разных пигментов. Умещается до двух троек. Каждая тройка рисуется в максимально ярком и в натуральном вариантах.

Для форума


Перетаскивая окошко, можно подтащить его к цвету, с которым хочется сравнить. Большая левая картинка главного окна освежается при замене спектра, но окошко сравнения в этом смысле на шаг запаздывает, обновляясь лишь при добавлении очередного пигмента.
«Close RDC-widow»
Закрыть окно сравнения (если мешается).
«Show RDC-widow»
Открыть окно сравнения.

Технические моменты
Использовались таблицы CIE_xyz_1964_10deg, а цвета для монитора формировались по стандарту AdobeRGB.

Продвинутый редактор спектров и пигментов

Переходим к другому формату хранения FNC. Продвинутый формат совмещает две функции - непрерывную базовую и дискретную поправку. Первая часть предусмотрена потому, что вручную задавать 65 чисел утомительно, а тут мы можем просто таскать мышкой 9 маркёров (белые прямоугольники) и таким образом быстро менять 9 узлов сплайн-функции. Она рисуется «плавной» линией в окне редактора. Базовая функция непрерывная, но практически используются значения в 65 точках нашей дискретной шкалы волн. Для вызова редактора предусмотрено три кнопки:

«Edit the reflectance distribution»
Редактировать текущий пигмент.

«Edit the spectral distribution»
Редактировать текущий спектр.

«Show the distribution editor window»
Открыть окно редактора. Разница в действии трёх кнопок – лишь в том, какое распределение будет загружено изначально.
Как и в главном окне, надписи на английском, но есть полоса для подсказок на русском. Вид окна:

Для форума


Редактирование возможно как мышкой, так и клавиатурой. На иллюстрации цифрой 1 помечена зона задания узлов сплайна с помощью клавиатуры (альтернатива – таскать мышкой на графике маркёры-квадратики), цифрой 2 - полоса подсказок, цифрой 3 - зона задания дискретных значений с помощью клавиатуры (альтернатива – таскать мышкой движок линейки вдоль правой стороны окна).

На графике направление слева направо - длина волны, снизу вверх - мощность излучения или доля пропускаемого света. Горизонтальные чёрные линии соответствуют 0 и 1.

Каждый из 9 узлов - две координаты. Кроме изменения перетаскиванием маркёров, в левом верхнем углу есть элементы более точного задания. Номер текущего узла можно менять щелчком по нему, можно кнопочками «Next» и «Prev».

Дискретная поправка может заменять непрерывное значение в любой из 65 точек шкалы длины волны. Для точного задания отведён правый верхний угол окна. В каждой точке задаётся следующее:
1.Флажком - включена ли для этой точки дискретная поправка.
2.Номер точки.
3.Длина волны.
4.Дискретное значение (оно игнорируется, если для точки дискретность не включена).
Для непрерывной функции в любой момент некий узел сплайна является текущим. Для задания дискретной поправки предусмотрена текущая точка на шкале длины волны. Выбор её делается щелчком под соответствующим столбиком на картинке (выделяется маленькой чёрной рамкой) или кнопочками «Next» и «Prev». У включённых точек под столбиком рисуется квадратик соответствующего цвета. Для облегчения жизни длина волны высвечивается под графиком при нахождении курсора мышки на столбике.

Для иллюстрации я выбрал грубую попытку имитации "бирюзового провала". Пройдёмся по кнопочкам. Обращаем внимание, что окно редактора появляется не как модальное, то есть, другие окна остаются доступными. Эффекты от действия кнопок редактора видны сразу в главном окне.

«Add as a new reflectance distribution»
Добавить новый пигмент в палитру.
«Replace the reflectance distribution»
Заменить текущий пигмент.
«Save *.FNC»
Сохранить распределение в формате FNC (полную информацию).
«Load *.FNC»
Загрузить имеющееся распределение в формате FNC.
«Save *.PST»
Сохранить в формате PST (просто таблица с двумя столбцами). Если точка шкалы включена как дискретная, то берётся дискретное значение, иначе от базовой функции.
«Replace the spectral distribution»
Заменить текущий спектр.

При сохранении или актуализации проводится нормализация: отрицательные значения обрезаются нулём, для пигментов обрезается сверху единицей, для спектра пропорционально меняются значения, чтобы среднее было единичным.

Для красоты на цветастый график наложены черные кривые – графики чувствительности трёх типов колбочек человеческого глаза. Это для напоминания, что по краям участка видимого спектра яркость мизерная.

А с чего может начать работу редактор? Вернёмся к главному окну. Кнопка "Редактор функций для пигмента": подбираются узлы базовой функции, которые более-менее отражают текущий пигмент. Если в данном сеансе уже с этим пигментом была работа редактором, то последние дискретные значения используются, если их не слишком много, иначе всё делается дискретным. Аналогично работает кнопка "Редактор функций для спектра" - берётся текущий спектр. А кнопка "Показать окно редактора функций распределения" просто возобновляет последнюю работу, если она была, а если нет, то грузится текущий спектр.


Изменено 4.9.25 автор Торопыжка
2025-09-0404/09/2025 10:06:22
#3219143
Нравится KAA78
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Что бы такое-эдакое предложить людям для разминки? А сможет ли кто-нибудь понятно объяснить и проиллюстрировать с помощью утилиты старый способ определения температуры расплавленной стали с помощью "зелёного стекла"?
Зелёное стекло клиновидное. Благодаря этому можно менять толщину светофильтра, через которую рассматривается светящийся металл. Стекло градуировано. Металлург должен уловить толщину, через которую расплав видится красным. То есть, если тонко, то видится зелёным, если достаточно толсто, то красным.

Если совсем коротко, то вопрос, как так может быть, что один и тот же пигмент (как материал) в тонком слое зелёный, а в толстом слое красный.

Премию назначить, что ли... Эдак тысячу усыхающих.

Изменено 4.9.25 автор Торопыжка

2025-09-0404/09/2025 10:16:36
#3219144
Модератор , Советник
Советник аквафорума

Аватар пользователя

18735 14091
Москва
2 час.

Торопыжка

Полагаю, что конкретно мой ответ был бы не очень интересен.
Вообще, в связи с некоторым уменьшением посещаемости форума (форумов вообще), узости темы, ну и в связи с редким появлением тут главного возбудителя-ньюсмейкера активного обсуждения тут ожидать не стоит.
2025-09-0404/09/2025 11:17:03
#3219150
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

6038 5458
Russian Federation
14 час.

Торопыжка
Конкретный пигмент задаётся таблицей,

Как получать эти таблицы для пигментов? Это реально сужает все возможности проги почти до нуля. Ну, как или где взять данные скажем по красной и синий полоске у неона. Я и пожертвовать одним неоном готов, и спектрофотометр есть, но как?
2025-09-0404/09/2025 11:35:37
#3219151
Нравится Торопыжка
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Дамир184
Нанять Константина...
2025-09-0404/09/2025 11:37:18
#3219152
Нравится Дамир184
Модератор , Советник
Советник аквафорума

Аватар пользователя

18735 14091
Москва
2 час.

Дамир184
Ну, как или где взять данные скажем по красной и синий полоске у неона.


Синий цвет полоски у неона вообще имеет интерференционную природу, а не пигментную. Причем, полоска и отражает свет не диффузно, и цвет от угла тоже меняется.
2025-09-0404/09/2025 13:05:26
#3219161
Модератор , Советник
Советник аквафорума

Аватар пользователя

18735 14091
Москва
2 час.

Торопыжка

Было бы наверно еще здорово иметь возможность подгружать ICC/ICM профиль имеющегося монитора (у всех, кто как-то на компьютере с цветом работает, обычно такой есть), пересчитывать получающийся под данным источником цвет пигмента в Lab и отображать на экране уже с учетом конкретного профиля. Кстати, какой профиль монитора вы используете сейчас в данный программе: SRGB?

Ну и до кучи, еще можно deltaE посчитать, с которым данный монитор отображает данный пигмент, освещенный данным спектром. А то можно взять источник света с таким ядреным кривым спектром, что монитор будет отображать вид пигмента с огромной погрешностью. И хорошо бы эту погрешность понимать.
2025-09-0404/09/2025 13:33:54
#3219164
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Constantin_K
Я не буду сильно глубоко зарываться в точность передачи цвета, так как ПО не для этого делалось. Достаточно, если два цвета, которые должны были бы различаться в реальности, различались бы в имитации на мониторе.

Что касается размеров, то действительно кое-что выглядит мелковато на экране высокого разрешения. Но в окошке сравнения цветов (RDC window) прямоугольнички вполне солидные. Могу добавить версию с увеличенными размерами.
2025-09-0404/09/2025 13:55:48
#3219166
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Торопыжка
По ссылке на объект в облаке найдёте архив с утилитой и инструкцией:
https://cloud.mail.r...
Пароль 84653025
Для PC, Windows.

Старая ссылка сделана дохлой. Нот новая:
https://cloud.mail.r...
Пароль всё тот же 84653025

Учтено в первую очередь пожелание насчёт увеличения размеров символов. Ведь приложение предназначено для людей серьёзных, а на экране, где 2560 или больше по горизонтали, обычные прежде шрифты становятся мелковаты. Другие дополнения малозначительны, поэтому инструкцию здесь, в теме, не заменяю. А в архиве по ссылке есть обновлённая инструкция в формате PDF, DOC.
2025-09-1414/09/2025 19:09:02
#3220006
Модератор , Советник
Советник аквафорума

Аватар пользователя

18735 14091
Москва
2 час.

Торопыжка
Учтено в первую очередь пожелание насчёт увеличения размеров символов.

А окошко по-больше сложно сделать? Я понимаю, что там delfi и все координаты пиксельные, а не векторные, чтобы окно сделать резиновым. Но увеличить все ровно в два раза пропорционально вроде не должно быть слишком сложно, насколько я понимаю. Как раз в нормальный монитор влезет по вертикали.
2025-09-1414/09/2025 23:26:31
#3220033
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Constantin_K
Не сложно. Просто в голову не пришло. Ведь мышкой указывать легче, чем пальцем.
2025-09-1515/09/2025 05:24:26
#3220049
Модератор , Советник
Советник аквафорума

Аватар пользователя

18735 14091
Москва
2 час.

Торопыжка

Просто у меня это выглядит вот так:
Фотография для форума аквариумистов #607583

И автоматически ищешь, за что ухватить, чтобы растянуть окошко. Однако, нет...
2025-09-1515/09/2025 08:28:39
#3220059
Свой на Aqa.ru, Советник
Советник аквафорума

Аватар пользователя

1 7680 6722
Воронеж
5 час.

Constantin_K
И у меня так же. Но большего не хочется. Когда-то Delphi так криво делало автоматическое растягивание, что я зарёкся этим пользоваться. А делать умное растягивание можно, но геморройно.
2025-09-1515/09/2025 19:26:23
#3220150



Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Польвователь
Top