Начнем действовать формально и выберем на этом пятне пару контрольных точек по одной с каждой стороны границы (правая – эталонная). Для того чтобы уменьшить вероятность неудачного выбора, выделим небольшую область и размоем ее достаточно сильно (Рис. 7.43а). Наша задача – добиться того, чтобы цвет второй контрольной точки был равен цвету эталонной точки (в координатах RGB), с помощью изменения цветовых кривых для основных цветов RGB. Изменяем цветовые кривые, конечно, только для левого фрагмента.
Рис. 7.43.
Цвет наших контрольных точек наиболее различается по красному каналу, поэтому на цветовой кривой этого канала выбираем точку кривой, соответствующую яркости красного канала для второй контрольной точки. Перемещаем выбранную точку кривой по вертикали так, чтобы значение R-координаты второй контрольной точки стало равным значению этой координаты эталонной контрольной точки. Так же поступаем для зеленого и синего каналов (Рис. 7.43б). Параметры полученных кривых сохраняем на диске, а в крайнем случае, записываем. Коррекцию, размытие и выделение областей отменяем. Затем сохраненные кривые применяем для всего левого кадра. Пробуем немного изменять кривые, оценивая результат по всему левому кадру.
К сожалению, результат выравнивания цвета по контрольным точкам полностью зависит от того, насколько удачно они выбраны. В идеале обе точки должны указывать на одну и ту же физическую точку в реальном пейзаже. Практически же вторая контрольная точка попадает на какую-то реальную точку, близкую к нужной (потому что совместить фрагменты с точностью до пикселя редко удается). Поэтому остается только надеяться, что цвет этой точки очень близок к цвету нужной. Так ли это на самом деле, станет видно по визуальной оценке результата выравнивания. Если результат удручающий, значит цвет реальных точек, выбранных в качестве контрольных, различен!
Рис. 7.44.
Сильное размытие окрестности контрольной точки помогает справиться с этой проблемой, но только частично. Дополнительный плюс размытия состоит в том, что цвет размытых областей на разных кадрах можно сравнивать и на глаз.
Выравнивание цвета по контрольным точкам дает хорошие результаты в тех случаях, когда пересечение фрагментов содержит пятна, цвет точек которых мало меняется от точки к точке (например, стволы берез, водная гладь или облака). В других ситуациях можно попробовать выравнивание по контрольным областям.
Найдем однородную по цвету физическую область, присутствующую на обоих фрагментах и выделим пересечение изображений этой области (Рис. 7.44а).
Будем менять (по очереди) цветовые кривые каналов для левого фрагмента так, чтобы RGB-гистограмма выделенной области для левого фрагмента как можно точнее совпала с RGB-гистограммой выделенной области для правого фрагмента (эталонной). На рисунке 7.45 показаны гистограммы контрольных областей на левом и правом кадрах до обработки.
Рис. 7.45.
Напомню, что для того чтобы сдвинуть гистограмму вправо (влево), нужно, не меняя наклона, поднимать кривую вверх (вниз). Для того, чтобы сделать гистограмму шире (уже), нужно делать участок кривой круче (положе). При необходимости можно применить эти преобразования только к части гистограммы (для конкретного интервала яркостей канала цветности). На рисунке 7.46 показаны гистограммы красного канала контрольных областей на левом и правом кадрах до и после обработки левого кадра.
Рис. 7.46.
На рисунке 7.47 показаны RGB-гистограммы контрольных областей на левом и правом кадрах после обработки левого кадра.
На рисунке 7.48 показаны откорректированные цветовые кривые для левого кадра.
Рис. 7.47.
Выравнивание цвета по контрольным областям тоже не гарантирует высокого качества результата (даже при идеальном совпадении гистограмм). Поскольку гистограмма – это результат усреднения (в данном случае – по площади пятна), то при сравнении гистограмм не учитывается распределение точек одной яркости по площади пятна. Поэтому даже идеальное совпадение гистограмм не обязательно приведет к совпадению цвета каждой точки выделенной области для правого фрагмента с цветом этой точки на эталонном фрагменте.