Как мне автоматически корректировать цвета в изображении? - PullRequest
3 голосов
/ 16 июля 2010

Я буду работать с набором произвольных изображений. Некоторые из них могут нуждаться в некоторой коррекции цвета.

Я открыл изображение, которое нужно исправить в Photoshop и заметил, что желтые цвета были немного выше в гистограмме. Я применил Auto Color, и это улучшило изображение.

Как это работает? Как реализовать это? Нужно ли искать пики в гистограмме и усреднять их на основе другие пики?

Язык / синтаксис не должен иметь большого значения.

1 Ответ

6 голосов
/ 16 июля 2010

Это не просто, и это требует практики и искусства, но вот теория.

Такие инструменты, как Photoshop и Picasa, имеют автоматическую коррекцию цвета на одной кнопке.Он должен делать предположения о том, какими должны быть средние цветовые распределения, и они, вероятно, работают в цветовом пространстве Lab, а не в цветовом пространстве RGB, с которым вы знакомы.Поскольку этот подход является эвристическим, для некоторых изображений он будет неверным.Например, если вы делаете снимки в ярком, но покрытом лесом лесу, окружающий свет имеет ярко выраженный зеленый оттенок, и вы просто не можете покачивать цвета, чтобы сделать белый объект белым, потому что вам пришлось бы слишком сильно толкнуть в красный, чтобы испортитьНапример, зеленая рубашка.Точно так же изображения с позднего полуденного оранжевого солнца смещены в желтый цвет, и для исправления это слишком сильно толкает в синий цвет.В режимах автоцвета могут быть значения останова, чтобы избежать чрезмерной компенсации.

Теперь цветовое пространство Lab - странный зверь, и об этом буквально целые книги.Это трехканальное пространство с яркостью на одном канале (это самый простой) и каналами, которые так мало связаны с тем, как мы думаем о цвете, поэтому их просто называют «а» и «б».Каналы a и b кодируют все данные о цветности (все, что не является яркостью) в измерениях, которые можно приблизительно назвать желто-синими и зелено-красными.Вот еще одна странность: гамма Lab намного больше, чем могут выдержать наши глаза (RGB и CMYK меньше, чем наша визуальная гамма), что приводит к невозможным цветам, например, к насыщенному красному почти без яркости.Мы можем описать это, но наше восприятие теряет цвет по мере уменьшения яркости (именно поэтому в ночное время все выглядит сине-серым).

Так как бы вы поступили так алгоритмически?Во-первых, вам нужно по-настоящему понять модели восприятия, преобразовать изображения в пространство восприятия, настроить двухосное распределение в соответствии с довольно сложными ожиданиями нормалей, а затем привести результат обратно в пространство RGB, чтобы его можно было визуализировать.Да, это может быть реализовано в карманной камере, но это нетривиально и часто требует подсказок (например, установка ожидаемой цветовой температуры на солнечную или затененную, вольфрамовую или флуоресцентную и т. Д.).Отсутствующие человеческие алгоритмы наведения будут чаще ошибаться, и без ручной маскировки некоторые цветовые оттенки, такие как зеленый лес, не могут быть приятно выполнены на изображении в целом.

tl; dr

...