Почему возникает цветовой оттенок при использовании неправильного баланса белого?

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

Если, например, мы сделаем снимок при ярком дневном свете, но установим баланс белого на 3200K, эта фотография будет выглядеть «холоднее» или иметь больше синего цвета.

Что камера пытается сделать, что приводит к синему цвету? Почему не любой другой цвет?

Тот факт, что для меня больше синего, говорит о том, что он либо пытается уменьшить другие цвета, либо пытается увеличить уровень синего, но я не могу объяснить, почему он пытается сделать то же самое.

Я просмотрел этот вопрос, но либо я его не понял, либо он не ответил на тот же вопрос, что и у меня: что *точно* такое баланс белого?

Ответы (1)

Баланс белого применяется при обработке необработанных данных. Цель баланса белого — достичь R = G = B для нейтральных (серых, неокрашенных, ахроматических) областей изображения. Вся проблема возникает из-за того, что цветовые каналы датчиков (у типичного Байера это R, G1, B, G2) имеют разную «чувствительность», а отклики зависят еще и от спектра света. Как правило, для дневного света зеленые каналы примерно на полступени до одной ступени более чувствительны, чем красный и синий; для лампы накаливания отклики в зеленом и красном каналах близки друг к другу, а отклик в синем канале отстает. Итак, для выравнивания откликов применяются коэффициенты баланса белого путем умножения линейных необработанных данных в соответствующих каналах. Чтобы добавить к этому некоторые цифры,

// Olympus E-M5 CameraGroup= 6
{"Olympus", "E-M5", "Tungsten", {1.296875f, 1.0f, 3.265625f, 1.0f}},
{"Olympus", "E-M5", "3300K CCT", {1.546875f, 1.0f, 2.578125f, 1.0f}},
{"Olympus", "E-M5", "3600K CCT", {1.640625f, 1.0f, 2.367188f, 1.0f}},
{"Olympus", "E-M5", "3900K CCT", {1.734375f, 1.0f, 2.203125f, 1.0f}},
{"Olympus", "E-M5", "FL-W", {2.000000f, 1.0f, 2.601562f, 1.0f}},
{"Olympus", "E-M5", "4300K CCT", {1.851562f, 1.0f, 2.125000f, 1.0f}},
{"Olympus", "E-M5", "4500K CCT", {1.921875f, 1.0f, 2.148438f, 1.0f}},
{"Olympus", "E-M5", "4800K CCT", {1.976562f, 1.0f, 1.945312f, 1.0f}},
{"Olympus", "E-M5", "Daylight", {2.078125f, 1.0f, 1.820312f, 1.0f}},
{"Olympus", "E-M5", "Cloudy", {2.281250f, 1.0f, 1.640625f, 1.0f}},
{"Olympus", "E-M5", "6600K CCT", {2.304688f, 1.0f, 1.734375f, 1.0f}},
{"Olympus", "E-M5", "Shade", {2.476562f, 1.0f, 1.437500f, 1.0f}},
{"Olympus", "E-M5", "Flash", {2.351562f, 1.0f, 1.617188f, 1.0f}},

Чтобы преобразовать в фотографические стопы / EV, рассчитайте log2 чисел. Сверху видно, что если изображение снято при дневном свете, то синий канал нужно умножить на 1,8. Если баланс белого установлен на вольфрам, он будет умножен на гораздо большую величину, в 3,3 раза. Вот почему он будет синеватым.

Большое спасибо, это беспокоило меня весь день, но это заставило меня щелкнуть. Если я вас правильно понимаю, это будет означать, что у датчика вообще нет базы или родного баланса белого?
@James Нет, датчики не имеют собственного баланса белого при любых нормальных источниках света. Дневной свет или вспышка с пурпурным фильтром, таким как CC40m, приводят к чему-то близкому к естественному балансу белого. Так же и лампы накаливания с сильным синим фильтром.
Большинство датчиков вообще не записывают информацию о цвете. Они записывают монохроматические значения яркости для каждого пикселя. Пиксели фильтруются для красного, зеленого или синего света, но для каждого пикселя существует только одно значение яркости. Концепция аналогична использованию цветных фильтров при съемке на черно-белую пленку. Красный фильтр приведет к тому, что красный свет, проходящий через фильтр, будет иметь более высокую тональную ценность (ярче серый) на пленке, чем такие же яркие синие или зеленые объекты.
Чтобы получить цвет из этой информации, алгоритм демозаики, используемый вашей камерой (JPEG) или компьютерным приложением для преобразования фотографий (raw), сравнивает относительную яркость соседних пикселей, отфильтрованных с помощью разных цветов, и интерполирует значения R, G и B для каждого пикселя.
@ Майкл Кларк - они записывают информацию о цвете. Представление цвета в виде интенсивностей ничем не отличается от цветного TIFF. TIFF с тремя каналами, каждый из которых «монохроматический», или байеровский необработанный файл с 4 каналами, каждый из которых также «монохроматичен», отличаются только пространственно.
@Michael Clark: чтобы получить цвет, необходимо применить цветовое преобразование. Демозаика восстанавливает только отсутствующие значения интенсивности. Биннинг — это разновидность демозаики, в результате которой получаются полные триплеты, и для правильной интерпретации необходимы только преобразования цвета и тона.
Все зависит от того, как вы определяете информацию о цвете . Большинство людей предполагают, что каждый пиксель записывает значение красного, зеленого и синего цветов. Это не так (кроме специализированных датчиков, произведенных не компанией Bayer). Каждый пиксель записывает одно значение яркости, поэтому он монохроматичен. Даже несмотря на то, что часть зеленого и синего света, например, попадет в нижнюю часть пикселя, отфильтрованного красным, и наоборот. Все, что воспринимает каждый пиксель, — это общее количество света, достигающего дна колодца, независимо от того, какого он цвета. Отсутствующих значений интенсивности нет . Только интерполированный цвет с датчиком Байера.
@Michael Clark: хорошо, когда мы смотрим на растровый отпечаток CMYK, считаем ли мы его цветным изображением? И кстати, цветной дисплей?
@Michael Clark: Каждый канал монохроматичен, будь то обычный TIFF или обычный RAW. Когда мы выполняем демозаику, мы можем захотеть восстановить пространственные свойства, восполнив недостающие интенсивности для цветовых каналов. Это то, что мы интерполируем. Это не то же самое, что интерполяция цвета. Многие алгоритмы демозаики не зависят от цвета, и при тестировании они работают не хуже алгоритмов, использующих преобразование цвета в Lab, YCC и т. п.
@IliahBorg Данные в необработанном файле отличаются от файлов CMYK или TIFF. Все значения в необработанном файле — от 0 до 255 (для 8-битной глубины). Нет 255Б, 255Г, 255Р. Есть только номер. Для TIFF или CMYK или любого другого типа растрового изображения существуют определенные значения для отдельных цветов. Не так с необработанными данными. Разница в интенсивности между соседними пикселями, отфильтрованными для разных цветов, используется для получения цвета, а не сами голые значения яркости.
@Michael Clark: Дорогой Майкл, данные в необработанном файле именно такие - интенсивность красного, зеленого, синего, вторичного зеленого. Это может быть нормализовано как 0..255R и т. д. Если вы будете интерполировать из растра CMYK или RGB, это будет то же самое, используя разницу интенсивности, потому что неявная гипотеза в этом заключается в том, что интенсивность изменяется медленно.
Вы когда-нибудь делали фотографии, используя цветные фильтры и черно-белую пленку? Фильтры не ограничивают прохождение всего света, кроме цвета фильтра, они только уменьшают интенсивность этого другого света. То же самое относится и к фильтрам Байера. Если у вас есть источник чистого красного света, достаточно яркий, чтобы насытить красный канал, зеленые пиксели все равно будут обнаруживать часть (но не близкую к насыщению) этого света, и даже пиксели с синим фильтром будут обнаруживать гораздо меньшее его количество. Интерполяция цвета будет учитывать чувствительность других пикселей к красному свету и компенсировать ее.
@Майкл Кларк: Да. Это верно и для цветной прозрачной пленки (кстати, это тоже стохастическое растровое изображение с пространственными пустотами). Вопрос решается назначением правильного цветового пространства. Цвет не интерполируется, интенсивности пространственно интерполируются (или нет, в случае биннинга). Поначалу те, кто кодировал сырые конвертеры, пытались представить публике продукты как нечто «черное волшебство». Мы далеко позади, ведь в 2003 году уже было очевидно, что необработанные данные представляют собой нормальное изображение.