Восприятие цвета
От: MichaelP  
Дата: 13.10.05 09:16
Оценка:
Здравствуйте, Vis, Вы писали:

Vis>Итак задача стоит так:


Vis>Итак, после сканирования мы получаем битмап,

Vis>в котором каждый пиксел представлен как RGB.

Vis>Возможно ли сделать так, чтобы картинка была представленна

Vis>в длиннах отражённой волны вместо RBG?

В человеческом глазе есть три типа цветовых рецепторов, каждый со своей кривой спектральной чуствительности. Цвет опрделяется уровнями возбуждения этих трех рецепторов. Понятно, что одного и того же возбуждения мы можем добиться бесконечным количеством разных спектров. Более того, взяв три источника с произвольными спектрами, то, т.к. чуствительность рецепторов практически линейна от интесивности, мы регулируя их интенсивность можем добиться произвольного возбуждения рецепторов. Правда, если мы эти источники выберем плохо, то нам придется в некоторых случаях светить с отрицательной интесивностью. Это, по сути дела, означает, что в качестве базовых цветов мы можем взять произвольные источники, единственно желательно, чтобы они охватывали больший диапазон и отстояли друг от друга подальше. На практике так и происходит. Кривые спектральной чуствительности датчиков в сканерах и фотоаппаратах могут сильно отличаться от модели к модели, но если мы их знаем — мы можем точно сказать, какой цвет в итоге получается.

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

21.10.05 19:59: Ветка выделена из темы Сканирование изображений.
Автор: Vis
Дата: 12.10.05
— Кодт
Re[2]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 13.10.05 20:51
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>В человеческом глазе есть три типа цветовых рецепторов, каждый со своей кривой спектральной чуствительности. Цвет опрделяется уровнями возбуждения этих трех рецепторов. Понятно, что одного и того же возбуждения мы можем добиться бесконечным количеством разных спектров. Более того, взяв три источника с произвольными спектрами, то, т.к. чуствительность рецепторов практически линейна от интесивности, мы регулируя их интенсивность можем добиться произвольного возбуждения рецепторов.


Это интересный вопрос, на самом деле. Что понимается под "интенсивностью"? Скажем, количество излученных фотонов в скунду? Если так, то нет — не линейна. В этом легко убедиться — рисуем в Paint один белый пиксел на черном фоне. На некотором расстоянии рисуем квадратик 2x2 — 4 пиксела. С весьма хорошим приближением мы можем считать, что 4 пиксела излучают в 4 раза больше фотонов в единицу времени, чем один. Но визуально он никак не тянет на "вчетверо ярче". Лучше отодвинуться от монитора подальше, чтобы пространственное разрешение не сбивало с толку.

Для другого эксперимента надо правильно отрегулировать яркость и контрастность на мониторе (ну и/или гамма-коррекцию):





В пространстве sRGB визуально вопринимаемая яркость приблизительно прямо пропорциональна значению. RGB=(255,255,255) выглядит примерно вдвое ярче, чем RGB=(127,127,127) (в MS Paint, в стандартной палитре внизу это — темно-серый цвет, в верхней строке цветных квадратиков). Рисуем белый пиксел и серый на некотором расстоянии от него. Действительно, белый пиксел воспринимается приблизительно вдвое ярче. Теперь вопрос — сколько надо нарисовать серых пикселов, чтобы выровнять яркость? 2? Нет — 4. С большого расстояния 4 серых пиксела действительно выглядят примерно как один белый по яркости.

MP>Правда, если мы эти источники выберем плохо, то нам придется в некоторых случаях светить с отрицательной интесивностью.


О! Дайте-дайте мне фиолетовый цвет в RGB!
Это мне навеяло фокус с "холодными лучами". Если взять рефлектор (раньше такие были для обогрева) и заменить в нем спирать куском сухого льда, то создастся впечатление, что он светит холодными лучами — лицом эти "лучи" чувствуются вполне отчетливо.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[3]: Восприятие цвета
От: MichaelP  
Дата: 14.10.05 06:25
Оценка:
Здравствуйте, McSeem2, Вы писали:


MS>Это интересный вопрос, на самом деле. Что понимается под "интенсивностью"? Скажем, количество излученных фотонов в скунду? Если так, то нет — не линейна.


Считается линейной не по квантам, а по энергии.

MS>В этом легко убедиться — рисуем в Paint один белый пиксел на черном фоне. На некотором расстоянии рисуем квадратик 2x2 — 4 пиксела. С весьма хорошим приближением мы можем считать, что 4 пиксела излучают в 4 раза больше фотонов в единицу времени, чем один. Но визуально он никак не тянет на "вчетверо ярче". Лучше отодвинуться от монитора подальше, чтобы пространственное разрешение не сбивало с толку.


Я здесь не совсем правильно употребил слово "интесивность", имеется в виду, если я правильно помню, яркость. Вообщем, то что на единицу телесного угла.
Также есть еще одна тонкость. Колбочки в центре глаза и перефирии немного по разному воспринимают цвета и, поэтому, цвет фона воспринимается несколько иначе, чем цвет объекта. Но эти различия не очень существенны. Хотя колориметрические таблицы традиционно делаются для углов обзора в 2° и 10°.



MS>В пространстве sRGB визуально вопринимаемая яркость приблизительно прямо пропорциональна значению. RGB=(255,255,255) выглядит примерно вдвое ярче, чем RGB=(127,127,127) (в MS Paint, в стандартной палитре внизу это — темно-серый цвет, в верхней строке цветных квадратиков). Рисуем белый пиксел и серый на некотором расстоянии от него. Действительно, белый пиксел воспринимается приблизительно вдвое ярче. Теперь вопрос — сколько надо нарисовать серых пикселов, чтобы выровнять яркость? 2? Нет — 4. С большого расстояния 4 серых пиксела действительно выглядят примерно как один белый по яркости.


Человек видит в большей степени мозгом, а не глазом. И на его восприятие влияет и фон и окружение. Отличным примером этого является одна из моих любимых оптических иллюзий. Поэтому речь идет, обычно, о чистых экспериментах, когда отсутствуют отвлекающие составляющие.

Про цветовые пространства я не говорил сознательно, иначе можно утонуть в этом вопросе. Но раз уж вы упомянули sRGB, то надо сказать, что в нем яркость не пропорциональна значению. Гамма у него на большом диапазоне 2.2, т.е. (255,255,255) должно быть больше чем в 4-е раза ярче, чем (127,127,127). Но я не специалист по колориметрии и не могу сказать, как надо грамотно ставить эксперимент и может ли человек прямо в лоб количествено оценивать яркость, но 1 и 4 пиксела, имхо, маловато для этого. Может действительно надо рисовать объекты такие, чтобы их угловой размер был в районе 2°?


MS>О! Дайте-дайте мне фиолетовый цвет в RGB!


Если за основные цвета брать монохромные, как, например, в CIE RGB (в sGRB, кстати не так — там гамут еще больше заужен), можно почти математически доказать, что будут существовать неотображаемые цвета. Логично предположить, что кривые спектральной чуствительночти для данного цветового пространства будут непрерывными. Но в силу монохромности у нас будут существовать три точки (соответствующие основным цветам), в которых только одна компоненнта не равна 0, а две остальные равны 0. Отсюда следует, что у каждой кривой чуствительности есть, как миниммум, две области с отрицательными значениями.
Re[4]: Восприятие цвета
От: Багер  
Дата: 14.10.05 07:50
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Человек видит в большей степени мозгом, а не глазом. И на его восприятие влияет и фон и окружение. Отличным примером этого является одна из моих любимых оптических иллюзий. Поэтому речь идет, обычно, о чистых экспериментах, когда отсутствуют отвлекающие составляющие.


Плиз, поясните — в чём иллюзия этой картинки? (Может у меня с английским столь плохо, может с глазами...)
Ваша программа работает корректно? Один звонок и я всё исправлю!

Делаю потенциальные фичи :))
Re[5]: Восприятие цвета
От: Вумудщзук Беларусь  
Дата: 14.10.05 08:01
Оценка:
>Плиз, поясните — в чём иллюзия этой картинки? (Может у меня с английским столь плохо, может с глазами...)
Цвет клеток A и B — одинаков (в RGB смысле ), хотя визуально A гораздо темнее B
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 14.10.05 15:56
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Про цветовые пространства я не говорил сознательно, иначе можно утонуть в этом вопросе. Но раз уж вы упомянули sRGB, то надо сказать, что в нем яркость не пропорциональна значению. Гамма у него на большом диапазоне 2.2, т.е. (255,255,255) должно быть больше чем в 4-е раза ярче, чем (127,127,127).


Какая яркость? Измеренная прибором интенсивность — конечно нелинейна, но воспринимаемая (перцептуальная) яркость — как раз линейна.

Это, на самом деле, очень запутанный вопрос. Я лишь сошлюсь на признанного авторитета в данной области, Charles Poynton и приведу лишь конечный вывод: http://www.poynton.com/notes/color/GammaFQA.html

The nonlinearity of a CRT is very nearly the inverse of the lightness sensitivity of human vision. The nonlinearity causes a CRT's response to be roughly perceptually uniform. Far from being a defect, this feature is highly desirable.


The main purpose of gamma correction in video, desktop graphics, prepress, JPEG, and MPEG is to code intensity into a perceptually-uniform domain, so as to obtain the best perceptual performance from a limited number of bits in each of the R, G, and B (or C, M, Y, and K) components.


Особенно мне понравилось, как он "вывел на чистую воду" некого Timo Autiokari, который выступал с очень агрессивной критикой в адрес работ Чарльза:
http://www.poynton.com/notes/Timo/index.html
http://www.poynton.com/notes/Timo/Timo_intro.html

Здесь не надо быть специалистом по колометрии. sRGB — это все-таки перцептуально-линейное пространство (воспринимая яркость примерно пропорциональна длине вектора RGB). Объяснение и обоснование этому очень простое — при таком кодировании можно обойтись минимальным количеством бит на канал.
Гамма 2.2 — это значение степени для перевода из перцептуально-линейного пространства в физически линейное (linear-light intensity) и обратно (1/2.2).

Я, как образцово-показательный неуч, окольными путями сам обнаружил, что интерполировать цвета в перцептуально-линейном пространстве — это неправильно и объясняется это простой геометрической сущностью:
http://www.rsdn.ru/forum/?mid=695821
Автор: McSeem2
Дата: 26.06.04

http://www.rsdn.ru/Forum/Message.aspx?mid=701951&amp;only=1
Автор: McSeem2
Дата: 01.07.04

http://antigrain.com/research/alpha_blending/alpha_blending01.gif
http://antigrain.com/research/alpha_blending/alpha_blending01.gif

Фокус с интерполяцией между цветами (провал по яркости посередине) доказывает, что sRGB (то, чем мы обычно оперируем в битмапах, а потом отдаем на съедение функциям API) является именно перцептуально-линейным.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[5]: Восприятие цвета
От: MichaelP  
Дата: 17.10.05 07:50
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, MichaelP, Вы писали:


MP>>Про цветовые пространства я не говорил сознательно, иначе можно утонуть в этом вопросе. Но раз уж вы упомянули sRGB, то надо сказать, что в нем яркость не пропорциональна значению. Гамма у него на большом диапазоне 2.2, т.е. (255,255,255) должно быть больше чем в 4-е раза ярче, чем (127,127,127).


MS>Какая яркость? Измеренная прибором интенсивность — конечно нелинейна, но воспринимаемая (перцептуальная) яркость — как раз линейна.


MS>Это, на самом деле, очень запутанный вопрос. Я лишь сошлюсь на признанного авторитета в данной области, Charles Poynton и приведу лишь конечный вывод: http://www.poynton.com/notes/color/GammaFQA.html


Это действительно очень запутанный вопрос. Поэтому я и избегал углубляться в цветовые пространства и не шел далее рецепторов.

Дело в том, что пока мы остаемся на уровне рецепторов — там все более-менее линейно. Но далее сигнал поступает в мозг, а вот там уже все нелинейно. Кстати, если посмотреть на попытки создать визуально равноверное цветовое пространство, то гамма должна быть 3. (CIE Lab, CIE L*u*v*). Но нужно четко сосназавать, что эти пространства не аддитивны. О них можно посмотреть здесь:

http://www.fis.unipr.it/~fermi/PagInternet_English/GCA_Color_Theory.html
http://www.poynton.com/PDFs/coloureq.pdf

Т.е. получается некоторый парадокс. Если надо правильно смешивать цвета (а они смешиваются в рецепторах), то надо работать в линейном прострастнстве, но при этом мы получим неравномерность по интенсивности. И наоборот. Поэтому, может, действительно, выбор гаммы в районе 2 позволяет достичь некоторого компромисса.

В ограниченом наборе случев эту проблему можно решить более строго. Например, если нам надо получить равномерный градиент, то мне казалось бы логичным построить его в, к примеру, в Lab, Затем преобразовать XYZ, а затем sRGB, с учетом его гаммы. Только не забывайте сразу уйти во float или 16-битный цвет, иначе на преобразованиях можно получить большие ошибки квантования. Но, уже в задаче альфа-блендинга (где надо активно складывать цвета) такое решение вряд ли представляется возможным.
Re[6]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 17.10.05 15:05
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Т.е. получается некоторый парадокс. Если надо правильно смешивать цвета (а они смешиваются в рецепторах), то надо работать в линейном прострастнстве, но при этом мы получим неравномерность по интенсивности. И наоборот. Поэтому, может, действительно, выбор гаммы в районе 2 позволяет достичь некоторого компромисса.


MP>В ограниченом наборе случев эту проблему можно решить более строго. Например, если нам надо получить равномерный градиент, то мне казалось бы логичным построить его в, к примеру, в Lab, Затем преобразовать XYZ, а затем sRGB, с учетом его гаммы. Только не забывайте сразу уйти во float или 16-битный цвет, иначе на преобразованиях можно получить большие ошибки квантования. Но, уже в задаче альфа-блендинга (где надо активно складывать цвета) такое решение вряд ли представляется возможным.


Спасибо за инфу. Возможно, что с градиентом именно так и надо делать. В самом деле, в перцептуально линейном RGB между чистыми цветами надо интерполировать по дуге, иначе возникают те самые "провалы по яркости":



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

Но! Что делать в случае градиента в виде серой шкалы? По идее он должен быть линейным, безо всяких гамма-коррекций (опять же, речь идет о перцептуально линейном RGB):



Который из этих вариантов правильный? И что значит "правильный"? Лично я затрудняюсь сказать, хоть и склоняюсь к левому (так кажется логичгным). Но если так, то что делать в случае промежуточных вариантов? Получается, что гамма зависит от пути, по которому мы интерполируем — вообще бардак.

Но в перцептуально линейном RGB, для сглаживания (anti-alias) линейная серая шкала тоже дает не лучший результат:



На левой части черные закругленные углы на белом фоне выглядят явно толще. А белые на черном — наоборот, тоньше. При gamma=1.6...1.9 результат гораздо более адекватен визуально. Хотя серая шкала — перцептуально линейна. Феномен!
Может быть действительно надо всегда интерполировать с учетом гаммы, даже вдоль серой шкалы (gray ramp)? Но это эквивалентно тому, чтобы работать в физически линейном RGB.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[7]: Восприятие цвета
От: MichaelP  
Дата: 18.10.05 16:15
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, MichaelP, Вы писали:



MS>На левой части черные закругленные углы на белом фоне выглядят явно толще. А белые на черном — наоборот, тоньше. При gamma=1.6...1.9 результат гораздо более адекватен визуально. Хотя серая шкала — перцептуально линейна. Феномен!

MS>Может быть действительно надо всегда интерполировать с учетом гаммы, даже вдоль серой шкалы (gray ramp)? Но это эквивалентно тому, чтобы работать в физически линейном RGB.

А почему серая шкала должна быть перцептуально линейна? Чем таким особенным она отличается от лругих цветов?



Вот, кстати, построил градиенты, тем способом, которым я предлагал (желательно, чтобы монитор был откалиброван под sRGB):



Здесь осуществлен переход от красного к синему. Верхний линеен в CIE L*u*v* (и уже из него преведен в sRGB), нижний линеен в sRGB (гамма приблизительно 2.2-2.4). CIE L*u*v*, я выбрал из тех соображений, что для мониторов он подходит больше, чем Lab.

ИМХО, достаточно заметно, что на верхнем градиенте переход более равномерный.


Для серой шкалы отличия заметны гораздо меньше, но все-таки различимы (с трудом )




Для линейной гаммы изображения делать не стал, т.к. там, имхо, неравномерность восприятия очевидна. Но, если захотите — сделать нетрудно.
Re[8]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 18.10.05 18:22
Оценка:
Здравствуйте, MichaelP, Вы писали:

Спасибо! Очень интересная и актуальная для меня тема. Надо бы отделить ветку. Попросим!

MP>А почему серая шкала должна быть перцептуально линейна? Чем таким особенным она отличается от лругих цветов?


Не знаю, на самом деле. Но вот иллюстрация:


Которая из двух серых шкал является правильной? И что значит "правильной"?

MP>Вот, кстати, построил градиенты, тем способом, которым я предлагал (желательно, чтобы монитор был откалиброван под sRGB):


[. . .]

Здесь сразу бросается в глаза "слишком много красного". Вот я тоже построил градиент для сравнения непосредственно в RGB, но с gamma=2.0 (средний):



Кстати, "загадка" со сглаживанием решается очень просто. Причина здесь именно в том, что пикселы с интенсивностью 1.0 и 0.5 действительно визуально отличаются по яркости примерно вдвое. Но для того, чтобы выровнять визуальную яркость, нам надо не два, а четыре темных пиксела.
Растаризатор вычисляет "площадь покрытия" пиксела внутренностью полигона и устанавливает значение непрозначности (opacity) пропорционально этой площади. Рассморим белую горизонтальную линию на черном фоне. При "точном попадании", все пикселы этой линии полностью покрыты (коэффициент 1.0). Но если мы сместим линию на полпиксела вверх, то растаризатор вычислит уже две строки пикселов, перекрытых наполовину (коэффициент 0.5 у обоих линий). Но линия из двух пикселов с яркостью 0.5 (RGB=127,127,127) выглядит явно темнее, чем одна с яркостью 1.0. Вот я нарисовал в MS Paint:



(желательно настроить на sRGB и отойти на 2-3 метра от монитора для "созерцания").
Нижняя линия имеет яркость 0.5 (127,127,127), верхняя, которая приблизтельно соответствует яркости средней — 0.75 (192,192,192). Это примерно соответствует gamma=2.5, то есть 0.5^(1/2.5).
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[9]: Восприятие цвета
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.10.05 06:45
Оценка: 30 (1)
Здравствуйте, McSeem2, Вы писали:
MS>Не знаю, на самом деле. Но вот иллюстрация:
MS>

MS>Которая из двух серых шкал является правильной? И что значит "правильной"?

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

и посмотрим, где серость равномернее. Отойдя на пару метров от монитора.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Восприятие цвета
От: MichaelP  
Дата: 19.10.05 13:53
Оценка:
Здравствуйте, McSeem2, Вы писали:


MS>Здесь сразу бросается в глаза "слишком много красного". Вот я тоже построил градиент для сравнения непосредственно в RGB, но с gamma=2.0 (средний):


MS>


Да, красного больше, но задача была обеспечить равномерный по восприятию (в том числе и по цветовому) переход. Вас же не смущает, что при градиенте с гамма=2 в середине интенсивность не равна 127. Если вы признаете неравномерность восприятия по интенсивности, то почему бы не признать неравномерность восприятия по цвету. Гаммой вы выровняли переход по интенсивности, а вот если смотреть с точки зрения цветовой равномерности, то, имхо, ваш вариант слишком "засиделся" в синем цвете. На довольно большом участке справа перехода цвета практически незаметно.

MS>Это примерно соответствует gamma=2.5, то есть 0.5^(1/2.5).


Да, я и не спорю, выбор хорошей гаммы отличный компромисс между точной цветопередачей и равномерностью восприятия. Просто нельзя все сводить к гамме и не зря мировая научная мысльне превый год бьется над построением перцептуально равномерных пространств. И я бы сразу не стал отбрасывать ее достижения в виде L*u*v* и Lab. Кстати, еще раз обращаю внимание, что эти пространства тяготеют к гамма = 3.
Re[10]: Восприятие цвета
От: MichaelP  
Дата: 19.10.05 14:01
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну, давайте тогда сделаем изображение, состоящее из встречных градиентов однопиксельной высоты:

S>
S>и посмотрим, где серость равномернее. Отойдя на пару метров от монитора.

Чем доказали, что гамма монитора близка к 2.

Кстати, если над этим методом поработать, то получится отличная тестовая картинка для выставления гаммы монитора. Чем-то она мне инуитивно нравится больше стандартных (их, в частности, приводил McSeem2 где-то выше по ветке). Наверное из-за того, что в ней сразу используются все оттенки серого.
Re[11]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 19.10.05 16:34
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Чем доказали, что гамма монитора близка к 2.


Рискну оспорить. Это не гамма монитора, а гамма восприятия (сетчатка глаза плюс обработка мозговой нейросетью). Вот еще одна иллюстрация:



Разглядывать надо уже с расстояния метров 5-7. Гамма монитора здесь уж точно ни при чем — пиксел либо светится, либо не светится. Все пикселы излучают свет одинаковой (с большой точностью) интенсивности. Можно возразить, что здесь может присутствовать некая "паразитная засветка", но это на CRT — там пиксел накрывает чуть большую площадь, чем ему положено — за счет этого возникает дополнительная нелинейность (на принтере — вообще бардак, там пиксел — это клякса, накрывающая с десяток "пиксело-мест"). Но на LCD — все четко, там если и присутствует некая засветка, то настолько незначительная, что ей можно пренебречь.

Итак, что мы видим. Сплошной белый, черезстрочный белый и каждая четвертая линия белого. Но визуально они никак не тянут на соотношение 1.0 : 0.5 : 0.25, хотя интенсивность излучения находится именно в такой пропорции. Визуально же соотношение где-то 1.0 : 0.7 : 0.5.

Что я этим хочу сказать — черезстрочная сетка выглядит примерно в sqrt(2) темнее, чем сполошная белая область. Отсюда и "правильность" gamma=2.0.

И если уж быть совсем чесным, то я не вполне уверен, что sRGB — это именно перцептуально линейное пространство (ну или близкое к перцептуально линейному). Просто Чарльз Пойнтон меня "убедительно убедил" в этом. Ну и мои эксперименты это подтверждают.

Попробую порассуждать.
То, что линейная интерполяция между двумя крайними цветами дает явно видимый провал по яркости, обусловнено как раз геометрической сущностью перцептуально-линейного RGB. Иними словами, в перцептуально линейном RGB используется Евклидова метрика для визуально воспринимаемой яркости: sqrt(r*r+g*g+b*b). В физитчески линейном пространстве используется метрика Манхеттена: r+g+b. И gamma=2.0 — это как раз и есть функция преобразования метрик. Это несколько грубоватая интерпретация, но в первом приближении она верна и подтверждается практикой.

Кстати, в картинке со встречным черезстрочным градиентом и gamma=1.0, видимый провал по яркости посередине появляется именно потому, что перцептуально линейное пространство является чем-то не вполне естественным (хотя и экономным с точки зрения количества бит на пиксел). Цвет RGB=(127,127,127) выглядит примерно вдвое темнее, чем RGB=(255,255,255). Но физическая светимость при этом должна быть уменьшена вчетверо! Если мы ее уменьшим вдвое, например, черезстрочной белой закраской, то мы будем воспринимать ее не вдвое, а в sqrt(2) раз темнее. Другими словами, при gamma=1.0, это не середина "провалена", а края "подняты". Но единственный способ скомпенсировать это — "поднять середину", поскольку "опустить края" мы никак не можем.

MP>Кстати, если над этим методом поработать, то получится отличная тестовая картинка для выставления гаммы монитора. Чем-то она мне инуитивно нравится больше стандартных (их, в частности, приводил McSeem2 где-то выше по ветке). Наверное из-за того, что в ней сразу используются все оттенки серого.


Да, Синклер молодец — и как это я сам не сообразил. Новое слово в настройке гаммы!
По идее, надо еще пустить градиент по вертикали. Вот тогда точно будут представлены все оттенки серого.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[10]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 19.10.05 17:40
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Да, красного больше, но задача была обеспечить равномерный по восприятию (в том числе и по цветовому) переход. Вас же не смущает, что при градиенте с гамма=2 в середине интенсивность не равна 127. Если вы признаете неравномерность восприятия по интенсивности, то почему бы не признать неравномерность восприятия по цвету. Гаммой вы выровняли переход по интенсивности, а вот если смотреть с точки зрения цветовой равномерности, то, имхо, ваш вариант слишком "засиделся" в синем цвете. На довольно большом участке справа перехода цвета практически незаметно.


Ну, я точно так же могу возразить, что в Вашем случае на довольно большом участке слева незаметно никакого градиента, а справа — он слишком резкий. Я лишь "ратую" за то, что мой вариант более симметричный, иными словами, участки справа и слева, на которых почти не заметно градиента приблизительно одинаковы. У Вас же они существенно отличаются. Но, возможно, здесь накладывается индивидуальное воприятие. Надо опросить "незаинтересованных свидетелей" — который из градиентов представляется более симметричным. L*u*v или RGB-gamma=2.0?

MS>>Это примерно соответствует gamma=2.5, то есть 0.5^(1/2.5).


MP>Да, я и не спорю, выбор хорошей гаммы отличный компромисс между точной цветопередачей и равномерностью восприятия. Просто нельзя все сводить к гамме и не зря мировая научная мысльне превый год бьется над построением перцептуально равномерных пространств. И я бы сразу не стал отбрасывать ее достижения в виде L*u*v* и Lab. Кстати, еще раз обращаю внимание, что эти пространства тяготеют к гамма = 3.


Все это очень дорогие пространства. Как, например, делается alpha-blend в L*u*v? А остальные 24 color compositing операции?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[11]: Восприятие цвета
От: McSeem2 США http://www.antigrain.com
Дата: 19.10.05 20:52
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Кстати, если над этим методом поработать, то получится отличная тестовая картинка для выставления гаммы монитора. Чем-то она мне инуитивно нравится больше стандартных (их, в частности, приводил McSeem2 где-то выше по ветке). Наверное из-за того, что в ней сразу используются все оттенки серого.


Вот я поработал, вместо того, чтобы пользу приносить.
http://antigrain.com/stuff/gamma_tuner.zip



Но в принципе, встречно-черезстрочный градиент и не нужен. По крайней мере, по полосам (черезстрочные/сплошные) получается гораздо точнее. Что, факически сводится вот к этому:



У меня лишь можно менять цвет и желаемую гамму. Ну или определить *фактическую* гамму монитора (подстраивая слайдер "Gamma").

Но скажите, люди-добры, какие козлы догадались убрать старые добрые колёсики "яркость" и "контрастность" из LCD мониторов?! Повбывав бы таких "инженеров".
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[12]: Восприятие цвета
От: minorlogic Украина  
Дата: 20.10.05 06:38
Оценка:
Кстати говоря, вертикальные линии толщиной в пиксель лучше не использовать для тестов , так как CRT мониторы смазывают жутко один пиксель . Все более не менее правильные тесты используют горизонтали .


По поводу цветового восприятия , не совсем правильно что человек воспринимает цвет близко к гамме 2.2 , использование гаммы 2.2 (2.0) пошло чисто исторически от тех же CRT мониторов.
Подумайте как бы воспринимал окружающую картинку человек при линейном восприятии гаммы 2.0 при изменении яркости в сотни раз ? А в реальности изменения яркости еще больше.

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


Я всегда работал с цветами так :

Работаем всегда с ЛИНЕЙНЫМИ цветами , которые складываются и отнимаются физически .
Какаю либо коррекцию производим только ПРИ ВЫВОДЕ на устройство (монитор например).
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[12]: Восприятие цвета
От: minorlogic Украина  
Дата: 20.10.05 06:41
Оценка:
Все же лучше использовать горизонтальные полосы , а еще лучше совмесно полосы шириной 1 пиксел и шириной 2 пиксела.

Собственно легкий тест , поставить рядом чередующиеся горизонтальные и вертикальные полосы . На большинстве CRT мониторов они будут различной яркости.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[13]: Восприятие цвета
От: MichaelP  
Дата: 20.10.05 11:45
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Все же лучше использовать горизонтальные полосы , а еще лучше совмесно полосы шириной 1 пиксел и шириной 2 пиксела.


M>Собственно легкий тест , поставить рядом чередующиеся горизонтальные и вертикальные полосы . На большинстве CRT мониторов они будут различной яркости.


Вот, собственно, иллюстрация:



Эту картинку я создал на основе идеи Sinclairа. Обладатели CRT мониторов могут убедится, что две полоски смотряться по разному (на LCD — не так), хотя они абсолютно одинаковые, только одна нарисована вертикальными линиями, а другая — горизонтальными. В этом можно убедиться повернув картинку на 90°.

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

Вот вариант картинки только с горизонтальными линиями:



Еще раз подчеркну, картинка сделана для sRGB, а оно не сводится к простой гамме.
Re[14]: Восприятие цвета
От: minorlogic Украина  
Дата: 20.10.05 11:56
Оценка:
Здравствуйте, MichaelP, Вы писали:


MP>Эту картинку я создал на основе идеи Sinclairа. Обладатели CRT мониторов могут убедится, что две полоски смотряться по разному (на LCD — не так), хотя они абсолютно одинаковые, только одна нарисована вертикальными линиями, а другая — горизонтальными. В этом можно убедиться повернув картинку на 90°.


У меня LCD , тоже разница очень большая.
Ищу работу, 3D, SLAM, computer graphics/vision.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.