Мостостроительство
Aug. 15th, 2017 07:30 pmСтандартные инструметы вроде панорамы в Фотошопе и align_image_stack из Hugin выравнивать изображения отказались, скорее всего потому что между первым и последним кадрами приличная разница (лишний мост). Поэтому пришлось делать по-другому:
- Вбить названия файлов в электронную таблицу;
- Найти пару ключевых точек — одну в левом верхнем углу, вторую в правом верхнем;
- Каждый файл открыть в Фотошопе, подвести мышку к первой ключевой точке, записать в таблицу координаты x0 и y0 из информационной панели, повторить со второй ключевой точкой и записать её координаты x1 и y1;
- Наделать с помощью формул в электронной таблице командные строки для ImageMagick;
- Скопировать их в теримнал.
Пример команды:
convert
orig/2013_0527_1104.tif
-extent 5178x3652-241-1231
-rotate 0.368461030248915
-crop 3008x1692+398+1500
-resize 1920x1080
aligned/frame11040.png
Эта команда выполняет следующие действия:
- Добавить пустое пространство вокруг картинки так, чтобы правая ключевая точка оказалась точно в центре;
- Повернуть картинку так, чтобы линия между ключевыми точками была под тем же углом к горизонту, как у остальных кадров;
- Кадрировать, выдержав заданное соотношение сторон;
- Подогнать разрешение, чтоб было как у видео.
Чтобы получить требуемый угол поворота, нужно посчитать угол между горизонтом и линией, соединяющей ключевые точки α = 180° · atan((y1 - y0) / (x1 - x0)) / π, вычесть из него среднее значение α и изменить знак на прoтивоположный.
В этом же месте можно добавить панорамирование, немного сдвигая рамку от кадра к кадру.
Чтобы сделать переход от кадра к кадру более плавным, можно добавить промежуточные кадры для интерполяции, сложив соседние с весами, например, так:
composite
-blend 66x34
aligned/frame11043.png
aligned/frame16170.png
-alpha Set
inter/frame11041.png
Когда все кадры готовы, остаётся слить их в одно видео с помощью ffmpeg:
ffmpeg
-framerate 6
-i 'inter/frame%*.png'
-pix_fmt yuv420p
-c:v libx264
-r 6
tz_timelapse.mp4
no subject
Date: 2017-08-16 02:11 am (UTC)