Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

  • Автор темы Автор темы wjaguar
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

wjaguar

Участник
Топикстартер
Сообщения
6
Реакции
0
Приветствую!

Так сложилось что я нынче мейнтейнер mtPaint'а http://mtpaint.sourceforge.net И вчера (точнее, уже позавчера), я захотел пойти навстречу пожеланиям юзеров и сделать в новой версии опцию "Сохранять яркость" при смене цветового тона. Естественно, из моей затеи вышло нечто страшное, и так я узнал как выглядит эффект Гельмгольца-Кольрауша. Как он называется, я узнал несколько позже, мучая Гугль в попытках понять что именно случилось и почему именно со мной. :-)

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

Примечание: Фершильда я на эту тему читал, но толку от него никакого: для формулы Кована-Варэ я еще должен откуда-то угадать основание логарифма, а для собственной формулы Фершильда вместо рабочей формулы только намек плюс ссылка на статью, которой в свободном доступе не наблюдается. :-(
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Добрый вечер!
1. Формула Кована-Варэ -- это первые попытки моделирования эффекта Г/К. Логарифм, разумеется, десятичный -- это у нас десятичный логарифм пишется как Lg, а у них -- Log без указания основания. Если основание иное, то оно указывается. Они даже натуральный логарифм пишут как Loge... Однако же, Вам ни что не мешает написать автору и уточнить, а заодно заполучить нужную статью (думаю, не откажет): http://www.cis.rit.edu/fairchild/
2. Покопайтесь в книге получше -- хантовская модель должна Вам как-то помочь.
3. Если бы эффект Г/К устойчиво и легко моделировался, то Фершильд бы сказал об этом. Увы...
4. Самый верный путь для решения Вашей задачи -- обращаться непосредственно в манселловскую лабораторию. Сам Фершильд человек очень контактный, отвечает быстро.
5. Думаю, однако, что Вы немного не туда копаете. Не в Кольрауше дело. В чем именно -- нужно читать всю книгу Фершильда, поэтому, есть обходной путь: тупо всобачить в программу CIECAM02 (только не по тексту книги -- у них в оригинале полно опечаток -- а по xls-файлу, который лежит у Фершильда на сайте). Думаю, все получится.
P.S.Статьи: http://www.cis.rit.edu/fairchild/pubs.html
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Что до CIECAM02 - так мне нечего туда подставлять, и это не лечится: к иконкам, скинам и спрайтам цветовые профили не положены, да и что-либо калибровать юзера массово неспособны - поэтому на любой вопрос по условиям наблюдения ответ может быть только один - "Всякие!" Да и в книжке открытым текстом написано, что эффект Гельмгольца-Кольрауша эта модель не учитывает.
А что грабли, на которые я наступил, именно из Гельмгольца-Кольрауша - ну, это выглядит единственным подходящим объяснением. Я брал за меру яркости Y из XYZ-координат цвета (цвета люминофоров и гамму брал по ITU-R 709, белая точка D65) - и такая яркость получалась сильно меньше видимой яркости насыщенного красного и синего (если сравнивать их с серым с такой яркостью). С зеленым и с ненасыщенными цветами такого не наблюдалось - но беда в том, что в пиксельной графике насыщенные цвета используются чаще всех остальных, а именно их без ножа и зарезало. :-(

Ну а просить за ради бога формулу лично у Фершильда... стрёмно как-то. :-)
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

wjaguar сказал(а):
Ну а просить за ради бога формулу лично у Фершильда... стрёмно как-то. :-)
Помилуй Бог: что он Вас съест? Нормальный контактный мужик, без комплексов и пальцОв. Пишите смело.
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Боюсь, что ваши проблемы не в учете данного эффекта. А в том, что вы умозрительно считали Y. Его измерять нужно. Сразу и объяснение найдете, и поймете, почему с цветом на экране точно работать можно только через CMS.
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Дело именно в том, что мне нужен НЕ точный результат на данном конкретном компе - а нечто, по возможности близкое к таковому В СРЕДНЕМ. Такая уж предметная область пиксельная графика - что и где можно мерять, когда и сам художник не знает, кто, как и на чем будет на его спрайты или иконки смотреть?
Понятно, где-то спрайт будет выглядеть как-то не так, где-то еще - как-то иначе не так, но такова его судьба. Ну а моя задача - чтобы "как-то не так" не превратилось в моей проге в "ничего похожего", ПРИ УСЛОВИИ что ориентироваться я могу только на "средний монитор по больнице". :-)
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

wjaguar сказал(а):
ПРИ УСЛОВИИ что ориентироваться я могу только на "средний монитор по больнице". :-)
Каковым и является sRGB :).
Понятно.
Во многом соглашусь с Сашей, однако наряду с этим считаю, что нужно смело писать Фершильду, объяснить ситуацию (по возможности кратко и in terms). Можно написать, что Вы прочитали его книгу на русском (экзаменовать он Вас точно не станет, поэтому можно отважно врать), очень ему благодарны и, вот, хотите полученные знания применить на практике. Я бы на его месте тут же растаял и выложил все, что знаю. :)
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Да, вы правы, вам нужна средняя температура по больнице. Fitting данных. Но при чем здесь наука? Смотрите, у меня на мониторе r0g0b200 теоретически должно иметь яркость Y=4. И теоретически должен быть эквивалентен r120g0b0. А имеет Y>7. Соответсвенно, он и выглядит ярче соседнего r120g0b0. При чем здесь эффект Гельмгольца-Кольрауша? Отделяйте мух от котлет.
Каковым и является sRGB
Обычно на этом первое удивление и происходит. Буквально недавно обсуждали. sRGB в некоторых случаях вдвое отличается от реального монитора.
нужно смело писать Фершильду
О чем здесь писать? О поиске средней температуры по больнице?
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

sabos сказал(а):
Буквально недавно обсуждали. sRGB в некоторых случаях вдвое отличается от реального монитора.
Ну, а куда товарищу деваться? Можно конечно миром скинуться профайлами мониторов и усреднить их. Но уж так принято: когда непонятно что, то sRGB :)
А обсуждения sRGB, честно сказать, я не помню...
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

sabos сказал(а):
Но при чем здесь наука? Смотрите, у меня на мониторе r0g0b200 теоретически должно иметь яркость Y=4. И теоретически должен быть эквивалентен r120g0b0. А имеет Y>7. Соответсвенно, он и выглядит ярче соседнего r120g0b0.
Подождите-подождите, Саша: я так понял, что товарищ вывел на экран два патча разного цветового тона и насыщенности, измерил прибором величину Y, уравнял ее и убедился в том, что визуально разница огромна -- патч с выраженной цветностью выглядит субъективно ярче. В этом, как я понял, товарищ и видит проблему.
Я правильно понял?
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

А обсуждения sRGB, честно сказать, я не помню...
Лабораторная работа №1 "Перцептуальное обесцвечивание".
я так понял, что товарищ вывел на экран два патча
Конечно, угадыванием мыслей на расстоянии заниматься рискованно, но я, как начинающий телепат, готов предположить, что коллега пытается в своем графическом редакторе ввести функцию изменения цветового тона. В абстрактных rgb-координатах. И удивляется тому, что при этом не удерживается яркость (или saturation - здесь угадать не могу).
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Alexey Shadrin сказал(а):
Я правильно понял?

Неправильно, конечно. Все куда хуже - единственный "прибор" это сам монитор (правда, не один) так что Y не фактический, а тоже чисто теоретический. Именно в том и задача - найти алгоритм, приемлемо работающий на ОБЫЧНОМ мониторе, какой покупается в магазине, у юзера, который о теории цвета в жизни не слышал и слышать не хочет.
Факт ведь остается фактом - монитор там или не монитор, но не будет (0,255,0) выглядеть в 10 раз ярче чем (0,0,255), а по формулам получается именно это. И при этом нельзя сказать, что формулы не работают _совсем_ - но они не работают для насыщенного синего и красного.

Я не выбираю, какую задачу решать - я должен сыграть как можно лучше теми картами, какие у меня на руках. Список причин, почему при таких условиях задача заведомо не решается точно - не замена хоть какому-то способу решить ее приближенно. В идеальном ли случае, в среднем ли, еще в каком - но хоть что-то всегда лучше чем ничего.
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

Коллега, здесь все очень просто, здесь нет эффекта Гельмгольца-Кольрауша, нет и эффекта Ханта. Здесь достаточно базовой колориметрии. И в ней важно понимать, чем вы жертвуете, переходя от реального rgb в абстрактное. Вы жертвуете точностью. Логично?
не будет (0,255,0) выглядеть в 10 раз ярче чем (0,0,255), а по формулам получается именно это
Для начала отличайте Luminance и Lightness. Для задач сравнения пользуются светлотой, она даже в абстрактном sRGB различается лишь 2.7 раза. А в реальном мониторе разница между (0,0,255) и (0,255,0) может быть меньше двух.
 
Ответ: Вопрос к знающим людям - эффект Гельмгольца-Кольрауша и как с ним бороться

wjaguar сказал(а):
Неправильно, конечно. Все куда хуже
Ну, понятно. Тогда, мне кажется (!), что все-таки имеет смысл:
1. По крайней мере поупражняться с CIECAM02, посмотреть, как она прогнозирует изменение субъективной яркости и, если, несмотря на официальное отсутствие учета эффекта Г/К, результат приличный, то выстроить некую собственную LUT для красных и синих тонов на основании полученных данных.
2. Есть еще один путь, гораздо более простой, но более скучный: существует электронный вариант манселловского атласа от Gretagmacbeth http://www.gretagmacbeth.com/downloads/100_munsell2-en.zip. Имеет смысл, либо программно развинтить эту утилиту, либо просто выписать RGB-значения (сняв их со скриншота), более или менее аппроксимирующие постоянную субъективную яркость на интересующих цветовых тонах. Затем построить графики и, если получится, аппроксимировать их аналитически, если не получится -- через LUT.
 
И всё-таки, с причиной я похоже что угадал

Как говорится, "практика - критерий истины" - так что я реализовал формулу Кована-Варэ и посмотрел что из этого вышло.

Вышло, да, неидеально - но понятное дело, идеальный результат с ТАКОЙ постановкой задачи можно получить разве что случайно. Но по сравнению с тем что было у меня БЕЗ этой коррекции - небо и земля! Нынешний вариант уже можно и юзерам в руки дать... Так что, похоже, программерская интуиция меня не подвела.

Так что спасибо уважаемому Алексею Шадрину за основание логарифма. :-) И главное, за перевод самой книги Фершильда.
 
Ответ: И всё-таки, с причиной я похоже что угадал

wjaguar сказал(а):
Так что спасибо уважаемому Алексею Шадрину за основание логарифма.
Приношу извинения за то, что не осмелился писать логарифмы по отечественным правилам (а ведь была мысль!). В Ханте обязуюсь не допустить этой ошибки.
 
Ответ: И всё-таки, с причиной я похоже что угадал

wjaguar сказал(а):
Вышло, да, неидеально - но понятное дело, идеальный результат с ТАКОЙ постановкой задачи можно получить разве что случайно.
Хорошо бы юзерам в самом начале предлагать образцы для регулировки мниторов хотя бы по краям диапазона...

Всем известно, что "бытовой" монитор с заводскими настройками == не настроенный монитор.
 
Ответ: И всё-таки, с причиной я похоже что угадал

ch_alex сказал(а):
Хорошо бы юзерам в самом начале предлагать образцы для регулировки мниторов хотя бы по краям диапазона...

Да бесполезно это. В принципе бесполезно.

Это фотографию можно правильно и красиво напечатать на бумаге и забыть как страшный сон - а у пикселов жизненный цикл совсем другой. Пикселарт распространяется не в твердой копии, а все в том же RGB - спрайт ли это, скин или иконка, но увидят люди его не так, как его рисовали, а так, как у каждого конкретного юзера показывает монитор (или там экран мобилы, или фиг знает что еще).
В сущности, чем меньше заточена пиксельная картинка под монитор ее автора - тем лучше; поэтому я и вгоняю в прогу общие закономерности но привязываюсь при этом только к абстрактному "среднему" устройству - для пикселарта, разброс характеристик мониторов должен учитывать сам художник, а не софт.
 
Статус
Закрыто для дальнейших ответов.