Как выровнять стопку изображений для таймлапса с помощью инструментов FOSS

Я взял несколько серий кадров, которые собираюсь обработать в таймлапс. Когда я просто запустил StopMotion, чтобы преобразовать их в последовательность фильмов, я понял, что изображение выглядит рывками по двум основным причинам:

  • Некоторые серии были сняты в ветреную погоду, из-за чего штатив камеры немного трясся.
  • Остальные были сняты камерой смартфона в режиме HDR. Поскольку эти изображения уже обработаны, их поле зрения немного различается, что видно при их последовательном просмотре. Похоже, что уровень масштабирования между ними немного изменился — однако иногда изменение происходит только по одной оси, при этом изображение слегка искажается.Поскольку это артефакт постобработки, инструменты, основанные на геометрии объектива, могут здесь не работать. Я сделал эту часть отдельным вопросом .

Как я могу выровнять эти изображения, чтобы соответствующая последовательность изображений не выглядела рывками? Ограничения:

  • Только инструменты FOSS, доступные в Linux
  • Каждая последовательность состоит примерно из 250 изображений (эквивалентно 10 секундам при 25 кадрах в секунду), поэтому требуется высокий уровень автоматизации. Некоторые из представленных здесь подходов хорошо работают для последовательности HDR из 3 экспозиций, но плохо подходят для более длинных последовательностей.

Ответы (1)

У Hugin есть учебник на своем веб-сайте, который послужил хорошей отправной точкой.

Необходимые инструменты:

  • Хьюгин
  • ImageMagick
  • Баш-оболочка

Создать проект Hugin

Запустите Hugin и обязательно выберите «Интерфейс» > «Дополнительно» (Эксперт тоже подойдет). Перейдите в окно Panorama Stitcher .

Установите поле зрения (50° отлично подошло для камеры моего смартфона), параметры объектива и тип проекции. Прямолинейный должен работать в большинстве случаев.

Загрузите изображения для вашей последовательности.

Создание контрольных точек

Контрольные точки — это элементы изображения, которые Хьюгин использует для выравнивания. Каждая пара последовательных кадров должна иметь общие контрольные точки, чтобы правильно их выровнять.

По-прежнему на вкладке « Фотографии » в разделе « Сопоставление объектов » выберите стратегию создания контрольных точек. У меня хорошо сработало выравнивание стека изображений , возможно, вам придется немного поэкспериментировать.

Прежде чем сделать это в первый раз, вам необходимо убедиться, что контрольные точки созданы между парами хронологически последовательных изображений (по умолчанию изображения сортируются по экспозиции). Перейдите в меню « Файл» > «Настройки» и перейдите на вкладку « Детекторы контрольных точек ». Выберите «Выровнять стопку изображений» и нажмите «Редактировать…» . В разделе Аргументы добавьте --use-given-order. Затем закройте оба диалога с помощью OK .

Выберите первую группу фотографий и нажмите « Создать контрольные точки » . К сожалению, Hugin не может обрабатывать более 128 изображений за один раз. Если в вашей серии более 120 изображений, просто повторите этот шаг партиями по 120 изображений. Обязательно включите последнее изображение каждой партии в следующую партию. Обработка может занять некоторое время.

Теперь перейдите на вкладку Контрольные точки . Выберите изображение № 0 на левой панели и изображение № 1 на правом. Вы должны увидеть контрольные точки, общие для изображений. Нажмите кнопку со стрелкой вправо, чтобы двигаться вперед по серии. Каждая пара последовательных изображений должна иметь общий набор контрольных точек. (Это может не всегда работать, когда камера движется, например, при съемке цейтраферной съемки из движущегося автомобиля.)

Если в вашей последовательности много облаков, на предыдущем шаге могли быть созданы контрольные точки на небе. Поскольку они могут испортить выравнивание, нам нужно их удалить: вернитесь на вкладку « Фотографии », выберите все изображения, щелкните правой кнопкой мыши список и выберите « Контрольные точки» > «Удалить контрольные точки на облаках» . Это займет некоторое время. Он может пропустить некоторые контрольные точки, но, по моему опыту, он уменьшает их количество настолько, чтобы выравнивание работало должным образом.

Примечание. Судя по всему, последние версии Hugin могут исключать облачные области уже при создании контрольной точки, в зависимости от выбранной стратегии.

Проверьте параметры объектива

Перейдите в окно быстрого предварительного просмотра панорамы ( Вид > Окно быстрого предварительного просмотра ) и проверьте предварительный просмотр сферы. Изображение должно заполнять только часть сферы с почти прямоугольными контурами и минимально искаженными краями (аналогично старомодным ЭЛТ-телевизорам).

Если контуры изображения почти круглые, вам может потребоваться изменить параметры объектива. (Я обнаружил, что это произошло с HDR-изображениями — очевидно, постобработка в устройстве сбрасывает информацию об объективе.) Вернитесь в Panorama Stitcher и на вкладке « Фотографии » выберите все изображения и щелкните правой кнопкой мыши список. Тогда либо:

  • Измените их на заведомо исправные параметры объектива ( Lens ) — объектив вашей камеры должен быть в базе данных, если вы ранее обрабатывали изображение без HDR с того же устройства.
  • Или вручную установить поле зрения ( Редактировать переменные изображения ).

Затем проверьте еще раз в Fast Panorama Preview .

Рассчитать выравнивание

Вернувшись в окно Panorama Stitcher , на вкладке « Фотографии » выберите один из следующих вариантов в разделе « Оптимизировать» > «Геометрический» :

  • Позиции (y, p, r) для коррекции только движения камеры
  • Позиции и вид (y, p, r, v), чтобы также устранить артефакты обработки HDR.это еще не работает для описанных выше артефактов, где изображения слегка искажены по одной оси. Все еще пытаюсь понять, как с этим бороться...

Щелкните Рассчитать . Это снова займет некоторое время.

Выравнивание и обрезка

Перейдите в окно предварительного просмотра быстрой панорамы .

На вкладке « Проекция » выберите ту же проекцию, что и тип вашего объектива. На вкладке « Переместить/перетащить » нажмите «По размеру » и на вкладке « Обрезка » выберите «Автообрезка HDR» .

Рендерим кадры

Вернувшись в окно Panorama Stitcher , перейдите на вкладку Stitcher .

В разделе Поле зрения щелкните Вычислить поле зрения . (Возможно, это уже установлено правильно.)

В разделе Размер холста щелкните Вычислить оптимальный размер .Затем в разделе «Обрезка » нажмите «Обрезка по размеру изображения » .(Не используйте здесь параметр обрезки, так как это может оставить пустые области рядом с границами некоторых изображений.)

Отмените выбор всего в разделе «Панорамные выходы» .

В разделе «Переназначенные изображения » выберите «Без коррекции экспозиции, низкий динамический диапазон» .

Щелкните Сшить . Вам будет предложено выбрать префикс — это путь и строка, которые будут добавлены к каждому сгенерированному файлу. Рекомендую поместить сгенерированные файлы в отдельный каталог.

Рендеринг кадров снова займет некоторое время.

Очистка изображений

После того, как Hugin закончит свою работу, вы получите серию изображений. Не хватает только двух вещей:

  • Изображения представлены в формате TIFF — это формат, который Hugin использует внутри компании, и изменить его невозможно.
  • После выравнивания изображений Хьюгин обрезал их до той части, которая преобразуется каждым кадром в серии. Таким образом, полученные изображения будут немного меньше исходных.

К счастью, эти две вещи можно исправить за один шаг. В качестве бонуса, если вы сделали кадры с разрешением выше, чем ваше целевое разрешение для последовательности видеороликов, этот шаг также изменит их размер.

Запустите bash, перейдите в каталог, содержащий сгенерированные файлы, затем запустите:

for i in *.tif ; do convert $i -resize 1920x1080^ -gravity center -extent 1920x1080 `echo $i | sed s/.tif/.jpg/` ; done
rm *.tif

(если ваше целевое разрешение отличается от 1920×1080, соответствующим образом измените первую строку.)

Это будет масштабировать каждое изображение, чтобы заполнить ваше целевое разрешение, и обрезать его до размера, если пропорции не совсем подходят. Вторая строка удалит файлы, сгенерированные Hugin.

Вот и все! Теперь используйте ваш любимый инструмент, чтобы превратить полученную последовательность изображений в видеоклип.

1) Здесь не требуется Bash, подойдет любая оболочка POSIX. 2) Закавычите свои переменные, например, используйте "$i"вместо $i3) Используйте расширение параметра вместо эха sed, например, convert "$i" "${i%.tif}.jpg"4) Используйте mogrifyвместо, convertчтобы вам не нужен цикл. Примерmogrify -resize '1920x1080^' -gravity center -extent 1920x1080 -format jpg -- *.tif