Jump to content

    
Sign in to follow this  
-=Женек=-

Цветовая развертка, как вычислить?

Recommended Posts

44 minutes ago, ViKo said:

Никогда. Низ картинки весь разбавлен белым.

А верх весь разбавлен чёрным. Максимальная насыщенность — "цветность", выкрученная на максимум, насколько позволяют другие параметры.

Вот цилиндр цветовой схемы HSL. Минимальная насыщенность на оси цилиндра, там всё в градациях серого. Максимальная — на внешней боковой стороне, куда "приклеена" картинка ТС'а.

HSL_color_solid_cylinder_saturation_gray

Share this post


Link to post
Share on other sites
6 часов назад, ae_ сказал:

это развёртка боковой поверхности цилиндра HSL(HSI) при S=100%.

Координата X — это угол 0-360°, он задаёт цв.тон - Hue

Координата Y — это интенсивность или светлость(не яркость) - Lightness

Тогда координаты должны называться H и L, а не X и Y — и то, и другое уже давно занято.

Share this post


Link to post
Share on other sites
5 hours ago, ViKo said:

Никогда. Низ картинки весь разбавлен белым.

Я поступил проще. Загрузил картинку во флеш и просто определяю цвет пикселя в координатах. Нерационально конечно, но место во флеши есть.

Share this post


Link to post
Share on other sites
7 часов назад, ae_ сказал:

Максимальная насыщенность — "цветность", выкрученная на максимум, насколько позволяют другие параметры.

Максимальная насыщенность - когда хотя бы один из цветов равен 0. Когда же все 3 цвета ненулевые, тогда и насыщенность спадает. 

Share this post


Link to post
Share on other sites
18 hours ago, ae_ said:

Насыщенность - Saturation для этой картинки всегда =100%

12 hours ago, ViKo said:

Никогда. Низ картинки весь разбавлен белым.

...

Максимальная насыщенность - когда хотя бы один из цветов равен 0. Когда же все 3 цвета ненулевые, тогда и насыщенность спадает. 

Я предложил формулы перевода точки 3D пространства с координатами HSL в цвет RGB. Но у автора только 2D картинка, поэтому в формулах подставляем H=X; L=Y; S=100%. Именно это я имел ввиду, что для всей картинки насыщенность всегда берём =100% при расчётах.

Что до субъективной насыщенности, я считаю только средняя линия имеет максимальную насыщенность, один цвет обязательно =0 и один цвет обязательно =255. При уходе в белый или чёрный насыщенность падает. Способ показать, что высветление/затемнение ограничивает насыщенность, цилиндр усекают до сдвоенного конуса и термин "насыщенность" заменяют на "цветность":

HSL_color_solid_dblcone_chroma_gray.png

 

Share this post


Link to post
Share on other sites

загружаете в фотошо, считываете в пространстве sRGB, это стандартное пространство для большинства форматов в отсутствие встроенного профиля.

 

по аналоговому изображению без спектроколориметра и полного профилирования всей цепочки вывода вы никак не вычислите стандартных значений RGB. см. Argyll CMS, color.org.

на тех же ресурсах моно поискать описание кривых компрессии для конвертации значений из файла в линейное представление без фотошопа. При условии что картнка была создана без таблиц трансляции в профиле, т.е. чистый TIFF, или JPG без icc. При работе в Wide Gamut icc обычно сохраняют во избежание разночтений; но считывание без icc приведет к некорректным цветам.

 

Есть еще одна особенность. На самом деле в JPEG есть тэг sRGB. Если отсутствует и этот тег и данные icc, то с подачи Adobe и Canon стало принято считать такие фотографии Adobe RGB по умолчанию. Соответственно коррекция в ваше (квазилинейное https://en.wikipedia.org/wiki/CIE_1931_color_space) пространсво меняется. 

 

ae_, совершенно верно. причем не самый информативный срез. В 80х такие картинки использовались для теста оборудования... при проблемах появлялся или бандинг, или цвета скакали при  перполенинии значений

Share this post


Link to post
Share on other sites
03.01.2021 в 05:22, ae_ сказал:

Я предложил формулы перевода точки 3D пространства с координатами HSL в цвет RGB. Но у автора только 2D картинка, поэтому в формулах подставляем H=X; L=Y; S=100%. Именно это я имел ввиду, что для всей картинки насыщенность всегда берём =100% при расчётах.

Почти в точку.

Только вот насыщенность (saturation) принимать как максимальное значение ошибочно. Так как по данному значению определяется именно насыщенность цветовой гаммы. Расчет изображений в формате HLS популярен в машинном зрении.

И похоже автор темы движется именно в этом направлении.

Edited by Droid 77

Share this post


Link to post
Share on other sites
2 hours ago, Droid 77 said:

Только вот насыщенность (saturation) принимать как максимальное значение ошибочно. Так как по данному значению определяется именно насыщенность цветовой гаммы.

Вы голословно назвали моё решение ошибочным, но не показали своё правильное решение.

Автор уже решил вопрос табличным способом, загрузив картинку целиком в память и читая из неё значения RGB по нужным координатам.

Изначально вопрос был как вычислить эти значения без таблицы, алгоритмически. Я привёл формулы, как из координат XY растровой картинки получить значения RGB этой точки.

В этих формулах HSL to RGB значение S нужно принять за константу =1 (100%). По ссылкам никто не ходит, продублирую здесь:

0 ≤ H < 360, 0 ≤ S ≤ 1, 0 ≤ L ≤ 1
C = (1 - |2L - 1|) × S // Вот здесь насыщенность можно просто убрать из формулы при работе с 2D картинкой
X = C × (1 - |(H / 60°) mod 2 - 1|)
m = L - C/2

hsv-to-rgb.gif.8778954934795807a6abbb4813c5c5af.gif

(R,G,B) = ((R'+m)×255, (G'+m)×255, (B'+m)×255)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this