Правильный способ сделать баланс белого - использовать только одну ссылку (белый). Если вы не можете получить желаемые результаты только с одной ссылкой, вы введете ложный цвет, только если попытаетесь использовать несколько ссылок.
Если у вас есть оттенок на всем изображении (например, постоянное количество цветной воды между целью и камерой), вы должны вычесть оттенок света из данных изображения, а затем применить баланс белого (умножение каналов).
Ваш научный способ получить приличный цвет для объекта, лежащего под слоем цветной светящейся воды, будет:
0) установить камеру на запись в формате RAW
1) настроить баланс белого с помощью белой карты, сфотографированной отдельно
2) фотографировать черно-белую карточку отдельно при одинаковом освещении в режиме ручной экспозиции с желаемой экспозицией
3) поместите их в воду и сфотографируйте их там
4) экспортировать изображения с помощью Dcraw без каких-либо изменений с помощью команды dcraw -w -T -4 -o 4 image.raw
, где image.raw
- фактическое имя изображения. Пример плохого экспорта из Adobe Camera RAW с полностью нейтральными настройками - вот почему вы должны использовать dcraw. (Это кривые тона, которые я ожидал быть прямыми)
dcraw -w -T -4 -o 4 *.raw
также действует (все изображения будут преобразованы).
5) вы должны взять значения пикселей черно-белых пятен как отдельно, так и под водой (bS, bW, wS, wW соответственно), используя RawDigger или ImageJ, и решить систему уравнений:
bW=B*bS+T
wW=B*wS+T
для каждого компонента (R, G, B)
Это даст вам T (оттенок, постоянное линейное добавление к каждому цвету, яркость воды) и B (мультипликатор баланса белого).
6) Затем, чтобы нормализовать цвет, нужно вычесть T и разделить результат на B для каждого изображения (GIMP имеет аритметические режимы для слоев, версии GIMP для разработки поддерживают 16 бит).
В итоге вы получите изображение с нормализованными цветами. Тем не менее, цвета не будут выглядеть точно так же, как сфотографированные без воды (тем не менее, цифровые камеры никогда не дают точного цвета).
Вы не получите хороших результатов, если не используете изображения RAW.
Подсказка: если ваша черная карта имеет пиксельные значения выше нуля, когда фотографируется отдельно, на самом деле она не черная, и вы не должны делать это (0,0,0).
Я готов вдаваться в подробности, как только вы признаете, что действительно готовы сделать все это.