Как удалять хроматические аберрации с помощью Hugin

Это небольшой урок по определению коэффициентов коррекции поперечной хроматической аберрации (TCA, transverse chromatic aberration), используемых в fulla (программе из поставки hugin, предназначенной для исправления искажений в изображениях, TCA и виньетирования) или модуле коррекции из Panotools.

В противовес прочим подходам (Krause, PTShift), этот подход основан на использовании исключительно свободного ПО (hugin и octave). Он основан на автоматическом создании многих контрольных точек между цветовыми каналами и использовании их в PTOptimizer (или другом приложении), которое автоматически рассчитывает параметры радиальной коррекции.

Наш подход схож с подходом Эрика Краузе (Erik Krause), предложенным ранее, который, по его словам, сработал не очень хорошо. Вероятно, либо контрольные точки были недостаточно хороши, либо изображение было слишком цветастым.

Подробную информация о TCA и её коррекции с использованием panotools можно получить здесь:

  • PTShift, расширение для Photoshop, определяющее коэффициенты коррекции TCA. Это альтернатива нашему подходу. При наличии Photoshop это первый метод, который стоит опробовать.
  • Урок Эрика Краузе, в котором объясняется, как вычислить коэффициенты коррекции TCA при помощи Picture Window Pro и Excel

Оценка параметров радиальной коррекции с помощью hugin

  1. Используйте RAW или TIFF; попытка скорректировать хроматическую аберрацию в JPEG — колоссальная потеря времени. По возможности избегайте ретуши очень цветастых изображений. Постарайтесь не переэкспонировать фотографии.
  2. Разделите изображения на отдельные файлы, каждый из которых содержит только красный, зелёный и синий каналы. Это можно сделать при помощи фильтра «Разобрать» в GIMP или с помощью ImageMagick.
  3. Загрузите их в hugin в следующем порядке: красный, зелёный, синий.
  4. Назначьте каждому изображению свой «объектив». Выберите равнопрямоугольную проекцию и установите для HFOV значение 10.
  5. Перейдите на вкладку «Сшиватель». Укажите тип панорамы «равнопрямоугольный» и HFOV, равное 10. Нажмите кнопку «Рассчитать оптимальный размер».
  6. Перейдите на вкладку «Контрольные точки». Используйте клавишу ‘g’ для создания множества контрольных точек между зелёно-синей и зелёно-красной парами изображений. Порог определения углов со значением 50 и масштаб 2 должны дать много полезных точек по углам изображения.
  7. Откройте диалог настроек программы и выставьте параметры точной подстройки согласно приведённой ниже иллюстрации:Точно подстройте все контрольные точки (Правка→Точно подстроить все точки) и удалите все точки с корреляцией меньше 98%. Проще всего сделать это из списка контрольных точек. К сожалению, hugin довольно медлителен при ручном выборе большого количества точек. Пользователи версии hugin, вышедшей позднее 10 марта 2006, а также версии 0.6 и выше, могут использовать функцию «выбор по расстоянию» и ввести значение -0.98 для выбора всех точек с корреляцией ниже 0.98.
  8. Оптимизируйте FoV и c для красного и синего изображений. Этих двух параметров достаточно для большинства объективов. Так или иначе, некоторым объективам свойственны более сложные хроматические аберрации, в результате чего необходимо дополнительно задавать параметры a и b. К таким объективам относится, например, 8мм объектив «Пеленг» класса «рыбий глаз».
  9. Удалите все ошибочные контрольные точки и переоптимизируйте сшивку (кнопка «Заново оптимизировать сшивку» на панели инструментов).
  10. Теперь у вас должно быть несколько сотен контрольных точек с средней ошибкой в 0,2 пиксела. Если нет, вернитесь к пункту 8 и повторите действия. Для проверки совпадения изображений можно использовать функцию предпросмотра со способом совмещения «Разница». Несоответствия вызваны либо переполнением параметров коррекции, либо цветом исходного изображения.
  11. Сохраните файл .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’);

Это даст вам два графика:

 

plot of correction curves

 

Первый, приведённый выше, показывает коэффециенты масштаба, необходимые для коррекции 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
Перевод: Александр Прокудин

1 Trackback / Pingback

  1. Выпущен hugin 0.6

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.