То, что вы хотите сделать, может быть очень сложной проблемой. Теория цвета, коррекция цвета / баланс белого и т. Д. - очень сложная область. Чтобы убедиться, что я понимаю, вы пытаетесь создать алгоритм, который может правильно установить баланс белого сцены на основе источника света в сцене. Может быть возможно сделать то, что вам нужно, и многие алгоритмы, которые вам нужно использовать, должны быть доступны в наши дни.
Некоторые моменты, которые следует учитывать, и факторы, влияющие на вашу обработку:
- Нет источника света в сцене
- Например: солнце освещает сцену из-за фотографа
- Другой пример: внешняя вспышка или другое освещение
- Это, вероятно, самая большая проблема, и она делает практически невозможной коррекцию цвета на основе источника света
- Несколько источников света
- Возможно наличие нескольких источников света с одинаковой цветовой температурой
- Более важным является несколько источников света с различной цветовой температурой
- Ключевой вопрос: что вы хотите случиться, если сцена освещается несколькими источниками света разного цвета?
- Источники рассеянного и точечного света
- Пример: солнце, освещающее комнату через окно, с дополнительным освещением, освещающим затененные части
- Ключевой вопрос: На каком источнике вы хотите баланс белого?
- Источники света радикального цвета
- Иногда у вас есть сцены, освещенные первичными источниками света радикальных цветов
- Например: красный, зеленый, синий, фиолетовый, желтый и т. Д.
- Синюю / Желтую / Красную плоскость можно рассматривать как крайности нормальной цветовой температуры
- Зеленый / фиолетовый / пурпурный плоскости можно считать крайностями оттенка
- Ни один насыщенный цвет, основной или дополнительный, не является хорошей целью для цветовой балансировки сцены, так как это, вероятно, приведет к выраженному цветовому оттенку в вашем изображении.
- Ключевой вопрос: что вы делаете, когда ваша сцена не имеет общего окружающего или основного освещения и полностью или преимущественно освещена радикальными цветами?
Если мы исключим освещение в сцене и радикальные цвета из проблемного пространства, возможно, можно будет определить и измерить цветовую температуру источников освещения в сцене. В наши дни есть несколько довольно продвинутых алгоритмов обнаружения формы, которые, при наличии хорошей базы или известных форм источников света, позволят идентифицировать все источники света в сцене. После того, как вы определили каждый источник света, вы, вероятно, могли бы использовать какое-то трехстороннее вычисление, чтобы определить цветовую температуру источника света, взяв значения зеленого, красного и синего субпикселя или значения пикселя RAW байера с надлежащими весами для генерации трех яркости. пики. Среднее значение отсчетов в области источника света (как обнаружено на предыдущем этапе идентификации) может привести к довольно точным показаниям цветовой температуры (но, вероятно, не совсем точным, поскольку цифровые данные всегда будут менее точными, чем исходные аналоговые данные).
Ваш алгоритм становится особенно сложным, когда вы используете нестандартное или радикальное освещение сцены. Источники чрезвычайно насыщенного света не будут хорошими целями баланса белого, поскольку они далеки от «белого» диапазона цветовой гаммы. Очень важно знать, какая часть вашей сцены наиболее «нейтральна», чтобы вы могли выбрать правильный «серый или белый», на котором будет основываться баланс белого, поскольку именно так работает баланс белый . Может быть возможно сбалансировать цвет вашей сцены на основе другого базового цвета, например красного, но я не знаю точно, как вам нужно изменить существующие математические формулы, чтобы приспособиться к такому подходу (довольно много сложной математики участвует в теории цвета.)
Самая сложная ситуация - когда в сцене нет источников света. Если сцена освещается источником света вне сцены, было бы практически невозможно рассчитать ее цветовую температуру. Если вы хотите использовать радикальный подход к дизайну камеры, вы можете установить базовые датчики измерения освещенности со всех сторон корпуса камеры. Это позволило бы измерять свет со всех сторон, однако оно не было бы полностью точным, и выгоды для всей дополнительной сложности, вероятно, были бы незначительными. Другой подход может заключаться в создании устройства с дистанционным управлением, которое могло бы подключаться к нескольким точечным измерителям, которые могли бы обеспечить точные показания освещенности камеры для любого источника света, на который вы указываете метр. Сцены с несколькими источниками света или источниками с радикальным цветом по-прежнему создают очень сложный алгоритм.
Попытка определить цветовую температуру ваших сцен источников света, например, по простой фотографии с карты коррекции цвета, будет чрезвычайно трудной, если не выпуклой. Вы должны будете сделать слишком много предположений или заранее знать, какой свет освещает вашу сцену. Как правило, именно поэтому баланс белого / коррекция цвета обычно выполняются путем установки баланса белого в сценах на основе известного нейтрального цвета в сцене. Фотосъемка ландшафта дважды при одном и том же освещении, один раз с картой цветовой коррекции и однажды без нее, позволяет выбрать допустимый нейтральный или чистый белый цвет во время последующей обработки, что позволит установить правильный цветовой баланс. У меня есть паспорт X-Rite ColorChecker, который включает в себя два ряда образцов для коррекции цвета. Один ряд предназначен для пейзажей, а другой - для портретов, и они переходят от слегка прохладных к слегка теплым цветным пятнам. Я могу установить тот цветовой баланс, который мне нужен для моих сцен, который обычно теплее для пейзажной фотографии, и более нейтральный белый тон (5500k-6500k) для таких вещей, как живая природа или макро.
Если вы делаете что-то значительно более специализированное, вы можете определить меньшее проблемное пространство, в котором вы можете создать алгоритм, который будет делать то, что вам нужно. Проблемное пространство должно быть довольно узким, с достаточно четко определенными параметрами и пределами, чтобы генерировать достаточно хорошо известные данные, чтобы помочь алгоритму принимать правильные решения при балансировке сцены белого. Для любой сцены без первичных источников света в кадре будет очень сложно выполнить какой-либо автоматический баланс белого или цветовую коррекцию.