Как компУтир передает цвета?
С помощью трех типов цветных точек: красных (R), зеленых (G) и синих (B). Сочетание RG дает желтый, BG - зеленовато-голубой ("циан"), RB - малиновый ("маджента"). Каждый цвет обычно имеет градации яркости от 0 до 255. Например, G = 255 - это ярко-зеленый, как разрешающий сигнал светофора, G = 100 - это темно-зеленый, как хвоя в сумрачном лесу.
А где же белый, серый и черный? А они получаются тогда, когда R = G = B. Когда R = G = B = 255 - чистый белый (как стандартный фон в ЖЖ), R = G = B = 0 - чисто черный, R = G = B = 128 - серый, ну и промежуточные градации.
А что, если R не совсем равно G и не совсем равно B? А вот тут-то и получаются "платья".
Возьмем исходную картинку... я уже не буду постить ее в 100500-й раз, это уже может раздражать, но чтобы быть уверенным, что речь идет об одном и том же,
даю ссылку.
Открываем ее в графическом редакторе, применяем инструмент "пипетка" :) и что же мы видим?
На поясе цвет:
R,G,B = 97, 84, 75
чуть-чуть в другом месте:
R,G,B = 104, 91, 75
чуть-чуть в другом месте:
R,G,B = 65, 49, 34
- цифры вроде как приблизительно равны, а вроде как и не очень равны :) Если считать их "достаточно равными", то имеем положение между черным и серым, отсюда - те, кто видят черный. Если считать их "недостаточно равными", то везде преобладание красного и зеленого - то есть, см. выше - это желтый. Отсюда - те, кто видят желтый. А как правильно? А никак! Ситуация как раз "на грани", когда одни видят одно, а другие - другое.
В верхней части платья, где падает свет: R,G,B = 141,126,93 - яркость увеличилась и увеличились различия между числами. Как следствие - тот, кто видел черный, может теперь увидеть золотой.
Теперь посмотрим на те места, которые по мнению одних - белые, а по мнению других - синие.
На заднице: R,G,B = 131,148,192
На спине: R,G,B = 144,159,200
На плече, в самом ярком месте: R,G,B = 190,203,248
Опять то же самое: числа то ли приблизительно равны, то ли уже нет. Преобладает синий и те, кто замечает это преобладание, говорят, что там платье синее. А те, кто не замечает - белое.
Но это еще не все!
Наши мозги имеют такое свойство - делать поправку на освещение. Когда задается вопрос о тканях или чем-то подобном, имеется в виду не просто цвет, который я вижу здесь и сейчас, а цвет, который этот материал имел бы при неком нормальном, "стандартном" освещении. Или вот не скажете же вы про небесно-голубую детскую игрушку, что она темно-синяя, если смотрите на нее в полумраке. Понятно, что глаза видят именно темно-синее, но вы вносите поправку.
В темноте яркость всех цветов меньше - это значит все R,G,B составляющие уменьшаются.
Еще в темноте "сочные" цвета становятся серыми - т.е. R,G,B еще и приближаются друг к другу.
Соответсвенно, когда мы вносим поправки на темноту, мы увеличиваем все R, G, B и, кроме того, стараемся добавить сочности - т.е. составляющие, которые чуть больше других, делаем сильно больше.
Ну а при ярком свете - все наоборот.
А если еще и свет - не белый, а с оттенком, то мозг еще пытается уменьшить этот оттенок.
А при чем тут это платье? А при том, что по этой фотке непонятно, куда делать поправку.
Одни люди, глядя на очень яркий фон по краям, делают вывод, что сцена снята где-то на солнцепеке или в каком-то ярко-желтом свете. Мозг делает поправку: "убрать желтый", "сделать все темнее".
И таким образом серый-с-желтизной пиксель трактуется как черный-без-желтизны или темно-темно-серый-практически-черный-практически-без-желтизны:
R,G,B = 97,84,75 ---> R,G,B = 40,40,40
А светло-светло-синий превращается в нормальный-темно-синий:
R,G,B = 131,148,192 ---> R,G,B = 0,0,100
Другие люди, глядя на тот же фон, делают вывод... да в общем такой же вывод, только они думают, что этот самый свет падает только "с той стороны", а спина модели находится в тени, т.е. излишне затемнена. И они делают поправки только наоборот:
R,G,B = 97,84,75 ---> R,G,B = 130,130,40 (золотистый)
R,G,B = 131,148,192 ---> R,G,B = 220,220,220 (белый)
Такие вот дела :)