Это небольшой урок по определению коэффициентов коррекции поперечной хроматической аберрации (TCA, transverse chromatic aberration), используемых в fulla (программе из поставки hugin, предназначенной для исправления искажений в изображениях, TCA и виньетирования) или модуле коррекции из Panotools.
В противовес прочим подходам (Krause, PTShift), этот подход основан на использовании исключительно свободного ПО (hugin и octave). Он основан на автоматическом создании многих контрольных точек между цветовыми каналами и использовании их в PTOptimizer (или другом приложении), которое автоматически рассчитывает параметры радиальной коррекции.
Наш подход схож с подходом Эрика Краузе (Erik Krause), предложенным ранее, который, по его словам, сработал не очень хорошо. Вероятно, либо контрольные точки были недостаточно хороши, либо изображение было слишком цветастым.
Подробную информация о TCA и её коррекции с использованием panotools можно получить здесь:
-
Хороший вводный материал Пола ван Вальри (Paul van Walree)
-
PTShift, расширение для Photoshop, определяющее коэффициенты коррекции TCA. Это альтернатива нашему подходу. При наличии Photoshop это первый метод, который стоит опробовать.
-
Урок Эрика Краузе, в котором объясняется, как вычислить коэффициенты коррекции TCA при помощи Picture Window Pro и Excel
Оценка параметров радиальной коррекции с помощью hugin
- Используйте RAW или TIFF; попытка скорректировать хроматическую аберрацию в JPEG — колоссальная потеря времени. По возможности избегайте ретуши очень цветастых изображений. Постарайтесь не переэкспонировать фотографии.
- Разделите изображения на отдельные файлы, каждый из которых содержит только красный, зелёный и синий каналы. Это можно сделать при помощи фильтра «Разобрать» в GIMP или с помощью ImageMagick.
- Загрузите их в hugin в следующем порядке: красный, зелёный, синий.
- Назначьте каждому изображению свой «объектив». Выберите равнопрямоугольную проекцию и установите для HFOV значение 10.
- Перейдите на вкладку «Сшиватель». Укажите тип панорамы «равнопрямоугольный» и HFOV, равное 10. Нажмите кнопку «Рассчитать оптимальный размер».
- Перейдите на вкладку «Контрольные точки». Используйте клавишу ‘g’ для создания множества контрольных точек между зелёно-синей и зелёно-красной парами изображений. Порог определения углов со значением 50 и масштаб 2 должны дать много полезных точек по углам изображения.
- Откройте диалог настроек программы и выставьте параметры точной подстройки согласно приведённой ниже иллюстрации:Точно подстройте все контрольные точки (Правка→Точно подстроить все точки) и удалите все точки с корреляцией меньше 98%. Проще всего сделать это из списка контрольных точек. К сожалению, hugin довольно медлителен при ручном выборе большого количества точек. Пользователи версии hugin, вышедшей позднее 10 марта 2006, а также версии 0.6 и выше, могут использовать функцию «выбор по расстоянию» и ввести значение -0.98 для выбора всех точек с корреляцией ниже 0.98.
- Оптимизируйте FoV и c для красного и синего изображений. Этих двух параметров достаточно для большинства объективов. Так или иначе, некоторым объективам свойственны более сложные хроматические аберрации, в результате чего необходимо дополнительно задавать параметры a и b. К таким объективам относится, например, 8мм объектив «Пеленг» класса «рыбий глаз».
- Удалите все ошибочные контрольные точки и переоптимизируйте сшивку (кнопка «Заново оптимизировать сшивку» на панели инструментов).
- Теперь у вас должно быть несколько сотен контрольных точек с средней ошибкой в 0,2 пиксела. Если нет, вернитесь к пункту 8 и повторите действия. Для проверки совпадения изображений можно использовать функцию предпросмотра со способом совмещения «Разница». Несоответствия вызваны либо переполнением параметров коррекции, либо цветом исходного изображения.
- Сохраните файл .pto.
Извлечение параметров коррекции TCA
В fulla и коррекционном расширении PanoTools невозможно напрямую использовать параметры коррекции искажений красного и синего каналов. Поэтому я написал сценарий для octave, который читает файл .pto, отображает корректирующие кривые и вычисляет параметры для fulla.
Этот сценарий также может рассчитать параметры коррекции, основываясь на контрольных точках. Такие параметры возможно даже лучше тех, что рассчитываются программой PTOptimizer.
Если у вас нет доступа к octave, то вот формулы и калькулятор на JavaScript:
scale = hfov_green / hfov_red d_pt = 1 - a_pt - b_pt - c_pt a = a_pt * scale^4 b = b_pt * scale^3 c = c_pt * scale^2 d = d_pt * scale
Используйте те же вычисления для синего канала. Значения a_pt, b_pt, c_pt являются параметрами коррекции искажений для hugin.
Калькулятор использует вывод PTOptimizer для создания командной строки к fulla.
Если результаты устраивают, причин использовать более сложный вариант с octave нет (ну разве что любопытства ради :-)).
Скачайте файл show_tca.m и поместите его в тот же каталог, где находится ваш файл .pto. Для исполнения этого сценария в системе должны быть установлены octave и octave-forge. Я не пробовал использовать его в MATLAB, но думаю, что после несущественных изменений он будет вполне пригоден для использования и в этом пакете для вычислений.
Откройте octave и введите:
octave:2> show_tca(’pano_tutorial.pto’);
Это даст вам два графика:
Первый, приведённый выше, показывает коэффециенты масштаба, необходимые для коррекции TCA в красном и синем каналах на расстоянии от центра изображения. Каждая точка на графике соответствует контрольной точке.
Красная и синяя линии — корректирующие кривые, вычислении при помощи PTOptimizer. Корректирующая кривая также рассчитывается show_tca и отображается линией с точками. Корректирующие кривые должны приходить примерно через центр облака точек.
В моём случае значения, рассчитанные show_tca, выглядят лучше, поскольку зависят только от разницы в расстоянии до центра (сагиттальное расстояние) точек. PTOptimizer сводит до минимума тангенциальное и сагиттальное расстояние между точками. Тем не менее, тангенциальное расстояние в таком случае выходит за рамки интересов коррекции TCA и вызвано ограниченной аккуратностью функции точной подстройки, особенно близко к краю снимков, сделанный с fisheye-объективом.
Этот график показывает тангенциальное и сагиттальное расстояние между контрольными точками красного и зелёного каналов. Несложно заметить существенное тангенциальное расстояние (особенно с большим радиусом), что приводит к получению неоптимальных коэффициентов коррекции при использовании PTOptimizer.
Рассчитанные параметры коррекции выводятся на консоль:
параметры коррекции, считанные из файла pto:
-r 0.0000000:-0.0019056:0.0030218:0.9995177
-b 0.0000000:0.0003038:-0.0006342:1.0012401
новый вариант на основе расстояния до центра снимка:
-r 0.0001368:0.0002725:-0.0006605:1.0007630
-b 0.0011642:-0.0046154:0.0055706:0.9989218
Выберите набор параметров, которые выглядят лучше всего на графике вверху. Подозреваю, что второй набор как правило предпочтительнее.
Параметры коррекции должны быть пригодными для использования при обработке снимков, сделанных одним и тем же объективом на одном и том же фокусном расстоянии. Коэффициенты коррекции могут различаться (несущественно?) по фокусу, а может даже и по диафрагме (но, скорее всего, в существенно меньшей степени).
Коррекция TCA
Рассчитанные коэффициенты коррекции TCA можно использовать в fulla или расширении PanoTools для коррекции.
Коррекция TCA при помощи fulla:
fulla -r 0.0001368:0.0002725:-0.0006605:1.0007630 \ -b 0.0011642:-0.0046154:0.0055706:0.9989218 \ input.tif
Эту операцию можно провести вместе с другими параметрами коррекции в fulla, например, коррекции искажений на основе базы данных PTLens database (ключ -p) или коррекции виньетирования.
Результаты
Вот результаты коррекции снимка, сделанного Canon 300D с 8мм объективом Пеленг типа «рыбий глаз».
Ближе к углу снимка. до обработки:
Там же после обработки:
Похоже, что цвет скорректирован верно. Теперь сравним изображение ближе к центру снимка до обработки…
… и после обработки:
Здесь TCA ещё заметны, но качество уже приемлемо.
А вот полноразмерные снимки: оригинал, скорректированная версия
Авторы: Pablo d’Angelo и Bruno Postle
Источник: http://hugin.sourceforge.net/tutorials/tca/en.shtml
Перевод: Александр Прокудин
Оставить комментарий