3046

Стабилизация по двум точкам

Хочу поделиться своим рецептом стабилизации видео в Adobe After Effects, который я использую для своих таймлапсов. Разработать этот алгоритм мне пришлось из-за того, что я не смог найти ни одной программы, которая бы справилась с такой задачей. Для стабилизации обычным сдвигом кадра в одной плоскости объектив моей камеры слишком широкоугольный и создаёт слишком большие искажения. Необходимо использовать поворот виртуальной камеры с правильным углом обзора и в 3D пространстве.


Способ крайне прост, и я уверен, что «изобрел» велосипед. Если вы знаете, как сделать то же самое проще – напишите в комментариях, я буду благодарен.


Сперва покажу исходный ролик и ролик, стабилизированный при помощи Warp Stabilizer VFX.

В большом разрешении:

https://youtu.be/2KDe7Qx_vtQ

https://youtu.be/LRSzjPILm5Y


Оставлю результат работы стандартного стабилизатора без комментариев и расскажу, как делаю я. Постараюсь расписать всё максимально подробно, чтобы последовательность этих действий мог повторить человек, не знакомый с интерфейсом AE.

К инструкции прилагаю и архив с проектом, который пошел на иллюстрации: https://drive.google.com/uc?id=0B-qnBT1qgOj6UjN0SzBuQU43ZWM

Итак, приступим.

0. Для начала настроим After Effects для работы с сериями снимков. Идем в Edit → Preferences → Import и устанавливаем стандартной длиной импортируемых изображений один кадр.

1. Создаем проект:
1.1. Просто перетаскиваем и кидаем папку с серией кадров или видео-файл.
1.2. Добавляем два Null-объекта и две камеры. Первая камера будет лишь местом крепления для основной, второй.

Фокусное расстояние обеих камер должно соответствовать эквивалентному фокусному расстоянию вашего фотоаппарата (28 мм в моём случае). Важно чтобы правильное значение было установлено при создании камер, а не после, иначе они не окажутся в нужном положении.
Camera 1 должна иметь тип Two-Node Camera, а Camera 2One-Node Camera.


1.3. Делаем видеоряд и Null-ы трехмерными с помощью соответствующих чекбоксов и не забываем растянуть временные шкалы всех объектов сцены на всю её длину.

2. Теперь сделаем отслеживание двух точек, звезд в данном случае.
2.0. Кликаем правой кнопкой по видеоряду и выбираем из выпадающего списка Track Motion.
2.1. Выберем самую примечательную звезду поближе к краю кадра, но не исчезающую за ним на протяжении всего ролика, и поставим на неё маркер. Размер внешней рамки маркера выберем, глядя на то, как сильно мотало камеру при съемке.
2.2. Запустим отслеживание и дождемся окончания процесса. Возможно, что-то пойдет не так, и придется останавливать, перемещать маркер вручную, менять размер области отслеживания и запускать дальше.

2.3. После завершения процесса нажимаем Edit target... и выбираем Null 1 и тыкаем OK.

2.4. Нажимаем Apply, оставляем X and Y как есть, OK.

2.5. Повторяем всё с пункта 2.0. по 2.4. для Null 2. Вторую точку лучше выбрать поближе к другому краю кадра. Чем больше расстояние между точками – тем лучше.

Примерно так должен выглядеть предпоказ сцены с двумя Null-объектами и их траекториями после всех описанных выше манипуляций:

3. Далее необходимо привязать Point of Interest камеры 1 к Null 1.

3.0. Нужно раскрыть свойства вышеуказанных объектов как на иллюстрации чтобы было удобно с ними работать.

3.1. Зажимаем Alt и кликаем по значку с часами в строчке Point of Interest., появляется строка expression.

3.2. Из неё тянем кнопку в виде спирали и вешаем связь на строку Position в свойствах Null 1.

4. Теперь так же, с помощью Alt и клика по иконке часов, открываем окно expression параметра Z Rotation у Camera 1. В этот раз заполняем блок ввода (Ctrl+C, Ctrl+V) следующим кодом, решающим матричное уравнение:

xA = thisComp.layer("Null 1").transform.position[0] - transform.position[0];
yA = thisComp.layer("Null 1").transform.position[1] - transform.position[1];
zA = 0;
xB = thisComp.layer("Null 2").transform.position[0] - transform.position[0];
yB = thisComp.layer("Null 2").transform.position[1] - transform.position[1];
zB = 0;
xC = 0;
yC = 0;
zC = transform.position[2];
xn = xA - xC;
yn = yA - yC;
zn = zA - zC;
A1 = xn;
B1 = yn;
C1 = zn;
D1 = -xC * xn - yC * yn - zC * zn;
A2 = (yB - yA) * (zC - zA) - (zB - zA) * (yC - yA);
B2 = - (xB - xA) * (zC - zA) - (zB - zA) * (xC - xA);
C2 = (xB - xA) * (yC - yA) - (yB - yA) * (xC - xA);
D2 = -xA * ((yB - yA) * (zC - zA) - (zB - zA) * (yC - yA)) + yA * ((xB - xA) * (zC - zA) - (zB - zA) * (xC - xA)) - zA * ((xB - xA) * (yC - yA) - (yB - yA) * (xC - xA));
xD = -D1 / A1;
yD = 0;
zD = 0;
xE = (B2 * D1 / B1 - D2) / (A2 - B2 * A1 / B1);
yE = - (A1 * xE + D1) / B1;
zE = 0;
ED = Math.sqrt(Math.pow(xE - xD, 2) + Math.pow(yE - yD, 2) + Math.pow(zE - zD, 2));
DC = Math.sqrt(Math.pow(xD - xC, 2) + Math.pow(yD - yC, 2) + Math.pow(zD - zC, 2));
CE = Math.sqrt(Math.pow(xC - xE, 2) + Math.pow(yC - yE, 2) + Math.pow(zC - zE, 2));
EDC = Math.acos((Math.pow(DC, 2) + Math.pow(CE, 2) - Math.pow(ED, 2)) / 2 / DC / CE) / Math.PI * 180;
if ((xE > xD && yE > yD) || (xE < xD && yE < yD)) EDC;
else - EDC;

5. Перемотаем время на самое начало и прикрепим камеру 2 к камере 1. Для этого просто выберем Camera 1 из выпадающего меню Parent в строке Camera 2.

Если всё прошло гладко, то теперь камера 2 намертво прибита к звездному небу. Её начальное положение соответствует первому кадру серии, а потом она сваливается куда-то вбок.

6. Настраиваем направление и угол обзора камеры 2. Тут всё делается на глаз.

6.1. Раскроем её свойства и покрутим значения углов поворота (X/Y/Z Rotation или Orientation). Если крутить их с зажатым Ctrl, то значения будут меняться плавнее. Важно не менять расположение камеры, оно должно быть 0, 0, 0.

6.2. Изменим фокусное расстояние и, соответственно, угол обзора камеры так, чтобы в кадре не появлялись черные области фона. Делается это в настройках из, пункта 1., которые появятся по двойному клику по камере. В данном случае фокусное расстояние пришлось увеличить с 28 до 31 мм, угол обзора при этом уменьшился с 65.5° до 60.3°.

Если целью было обездвижить звездное небо, то нужно убедиться, что область обзора вписывается в кадр на всей длине видеоролика.
6.3. Иначе нужно создать точки на временной шкале и покрутить значения на каждой из них.

Вот и результат всех этих действий:

В 4К-видеоформате


Спасибо за внимание.

Лига фотографов

68K постов33.8K подписчика

Правила сообщества

Правила и рекомендации:

1. Фотографии

Каждая фотография должна содержать тег [моё] и быть хорошего качества.

Не принимаются:

- Размытые фотографии, на которых отсутствует фокус или присутствует смаз, за исключением случаев, когда это является авторской задумкой.

- Фотографии с большим количеством шумов.

- Фотографии с явными провалами в тенях или пересветами.

Все такие фотографии будут перенесены в общую ленту.

2. Описание процесса съемки

Приветствуется описание процесса съемки, условий, места и минимальной информации о технике, на которую была сделана фотография.

3. Критика и советы

Если вы хотите получить критику или советы по своей фотографии, добавьте тег "хочу критики".

Если на фотографии нет тега "хочу критики", но вам хочется сделать несколько замечаний по опубликованной работе, то лучшим решением будет спросить у автора, не хотел бы он получить конструктивную критику. И только получив утвердительный ответ, размещайте ваши замечания и советы в комментариях.

4. Обсуждение моделей

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

Все комментарии подобного рода будут скрываться, а пользователь будет заблокирован.

5. Оскорбления

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

6. Исключения

Посты о фотографах, выставках, техниках, жанрах, оборудовании, а также различные уроки (свои, скопированные, переведенные) являются исключением для пунктов 1-2.

1
Автор поста оценил этот комментарий

Тож ничё не понял. Таймлапс, насколько я знаю, это когда камера зафиксирована на одном месте (ну в крайнем случае мееедленно едет по рельсе метр-другой) и снимает доолго, целую ночь, месяц или год.

А тут камера несётся, а снимает не так долго.

раскрыть ветку (1)
14
Автор поста оценил этот комментарий
Это гиперлапс – таймлапс, при котором камера передвигается вместе со штативом. В данном случае съёмка велась один час, кадры делались раз в 20 секунд.
показать ответы
6
Автор поста оценил этот комментарий

все круто, если это работает! а где скрипт взял:? только не говори, что сам взял и написал, а то я пойду в таксисты. за проект, конечно спасибо, но на будущее... если выкладываешь проект делай сразу версию для 12 афтера... там даже кнопочка такая есть. save as 12

раскрыть ветку (1)
10
Автор поста оценил этот комментарий
Скрипт писал сам. Сперва пытался решать тригонометрическим методом и чуть с ума не сошел...

Хорошо, про 12 буду иметь ввиду.
показать ответы
12
Автор поста оценил этот комментарий

Это кадры с поезда? А так очень кропотливая работа, напишите на reddit, там больше профессионалов в AE сидит.

раскрыть ветку (1)
8
Автор поста оценил этот комментарий
Кадры с капота машины. #comment_49865128

Не люблю Reddit, но об этом подумаю.
показать ответы
3
Автор поста оценил этот комментарий
А что делать с поворотом звёзд относительно горизонта?
Хотя, почему бы и не повернуть вторую камеру вместе с небом?)
раскрыть ветку (1)
6
Автор поста оценил этот комментарий
Так камера и поворачивается. Иначе горизонт был бы завален.
2
Автор поста оценил этот комментарий

ТС, а выкладывал в группу АЕ ?

Очень годно! Спасибо

раскрыть ветку (1)
5
Автор поста оценил этот комментарий
Нет, эта инструкция существует только здесь.
1
Автор поста оценил этот комментарий

А где гифка "ДО"? С чем сравнивать?

раскрыть ветку (1)
5
Автор поста оценил этот комментарий
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

@moderator, добавьте, пожалуйста в пост гифу и ссылку на видео с исходным видео.


Чтобы было так:

Сперва покажу исходный ролик и ролик, стабилизированный при помощи Warp Stabilizer VFX.

[Гифка исходная, нужно добавить]

[Гифка стабилизированная, уже есть]

В большом разрешении.

Исходник: https://youtu.be/2KDe7Qx_vtQ

Стабилизация: https://youtu.be/LRSzjPILm5Y

Предпросмотр
показать ответы
0
Автор поста оценил этот комментарий

Два(!) года назад) Что побудило вас спустя столь значительное время сделать пост?

раскрыть ветку (1)
4
Автор поста оценил этот комментарий
Вот этот пикабушник.
#comment_94167052
2
Автор поста оценил этот комментарий
Тчень интересное решение. А как вы с мерцанием разбираетесь обычно?
раскрыть ветку (1)
4
Автор поста оценил этот комментарий
С помощью RE:Vision DEFlicker.
4
Автор поста оценил этот комментарий

а с чего снято? Машина? Поезд? лодка? катер? :D

раскрыть ветку (1)
4
Автор поста оценил этот комментарий
С машины. Тут подробнее:
#comment_49865128
показать ответы
3
Автор поста оценил этот комментарий
Там запутанная система. Она предлагает сначала контактировать в сообществах словом, а после постами. Я долгое время постоянно добавлял посты, которые удалялись автомодерацией. Но однажды пообщался в теме для набивания рейтинга и поныл на счёт забаненного поста, к счастью там был модератор сообщества и вернул пост, а дальше с рейтингом автомодерация меня уже не трогала. Предлагаю вам сначала найти раздел r/time-lapse набрать в комментах рейтинга, потом начать постить ваши работы с ютьюба или гифкой. Гифки можно сразу кидать в r/gifs, но тоже при достаточном рейтинге, иначе скроет автомодерация. Там очень приятная аудитория, всегда можно найти сабреддит по интересу, ваши работы там оценят в разы лучше чем здесь. А как наберёте рейтинга и набьете руку на изучении ресурса, откопайте раздел по AE для разработчиков, такой раздел для фотошопа там точно есть, и выкладывайте своё творение, желательно видео форматом, на английском, отдача будет колоссальной. Но это если у вас будет желание потратить на это время. Но честно скажу, вы найдёте людей по интересам и они поделятся с вами опытом и вы их научите.
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Я немного полазил и вспомнил, что проблемы у меня были больше с комментариями. Нашел свой удачный пост, который не был обделен вниманием. Но там я так и не смог ответить ни одному комментатору.

https://www.reddit.com/2vz8aj/


А еще я нашел раздел After Effects. Он почти мертв, выкладывать там бессмысленно...
https://www.reddit.com/r/AfterEffects/

показать ответы
2
Автор поста оценил этот комментарий

Красиво получается.

Вот мой, так сказать, таймлапс длинною в год ), может даже идею новую подам. https://www.youtube.com/watch?v=KCSfsNhN67Q


.. А можно ли улучшить это видео? Хотя я так и не понял какая такая первая и вторая камера? Я так далеко не заходил.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Отличное видео. Жаль, техническое качество подкачало, камеру бы туда получше. Хорошо бы стабилизировать, и сложности в этом нет, но нужны иходники. Плавный переход на стыках уже увековечил их такими, что в глазах двоится.


P.S. Хотелось бы и мне снять подобное, но из моей квартиры вид никудышный.

Иллюстрация к комментарию
3
Автор поста оценил этот комментарий

Там всегда найдутся умельцы, вы им подскажите, они вам. Кто-то подскажет как из этого сделать эффект новый для стабилизации, частенько там сидят разработчики AE, никогда не знаешь насколько ценна ваша работа, пока вы не покажите её профессионалам. Я в этом посте вижу возможность создания автоматизированной стабилизации для тайм-лапс движения - закидываем кадры, а эффект уже автоматически все стабилизирует.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

показать ответы
15
Автор поста оценил этот комментарий
@Morn91 я хоть АЕ и не пользуюсь, но про композ всегда интересно почитать на пикабушечке, такое не часто встретишь.
единственное, мне способ показался несколько замудрённым, если бы такой шот я стабилайзил, я бы просто отречил эти две точки и устанавил стабилизацию по трём функциям translate, rotate, scale. и результат получается тот же или нет?
как я понял, вы делаете стабилизацию в 3D пространстве, но нет правильного лэйаута на сцену, камера и точки находятся в рандомном положении. просто если делать именно 3D стабилизацю, нужно оттречить 3D камеру, спроджектить из этой камеры исходник на плашку и снимать со второй камеры, которая будет иметь значения первой камеры, но усредненные до необходимой степени стабилизации.
кстати, если вы так серьёзно подходите к стабилизации, то могу посоветовать добавить в вашу схему еще андисторсию. снять грид вашей линзы на камере, по нему андистортить изображение, проводить все ваши манипуляции и в конце задистортить получившийся результат обратно.
сам работаю композером в кино и рекламе уже 4 года, основной софт nuke.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Всё сделано через камеру-посредник именно для упрощения. Пытаться сделать только через функции было бы просто неразумно.
Сдесь обязательно и проще всего делать именно через вращение камеры, не лежащей в плоскости кадра. Привлекать перемещение и масштабирование смысла нет.
Искажегия линз были исправлены ещё на этапе проявки в Camera RAW.
2
Автор поста оценил этот комментарий
Ворп это адобовский инструмент? Я не работал с АЕ.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Это стандартный стабилизатор, не 3D. Пример его работы в начале поста.
0
Автор поста оценил этот комментарий

А почему не сделать одной кнопкой в Warp Stabilizer в адоб премьер? Он обрабатывает видео и не нужно тречить точки. Конечно тречить точки вручную может получиться лучше результат, но для начала я всегда пробую Warp Stabilizer https://youtu.be/ZK5f3STwUQo

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Рекомедую сперва прочесть вступительную часть поста.
3
Автор поста оценил этот комментарий

Хм, однако. Почитал с удовольствием.  Но выглядит прям оверкиллом, сам буду делать в блендере: там можно и 2д трекинг делать и 3Д и намного проще.


Вот, по-быстрому затестил на не самом удачном исходнике, снятом с рук 500 мм стеклом.

https://www.youtube.com/watch?v=EF-4pcS4J38

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Для 500 мм хватит и Warp-а. А для 28 мм он не работает.
показать ответы
4
Автор поста оценил этот комментарий

@moderator, добавьте, пожалуйста в пост гифу и ссылку на видео с исходным видео.


Чтобы было так:

Сперва покажу исходный ролик и ролик, стабилизированный при помощи Warp Stabilizer VFX.

[Гифка исходная, нужно добавить]

[Гифка стабилизированная, уже есть]

В большом разрешении.

Исходник: https://youtu.be/2KDe7Qx_vtQ

Стабилизация: https://youtu.be/LRSzjPILm5Y

Предпросмотр
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

@admin, можно попросить внести изменения в пост, как я просил @moderator комментарием выше (#comment_95102941) час назад? Или, может, это не разрешено?

показать ответы
2
Автор поста оценил этот комментарий

На Яндекс-Диске какие-то ограничения на скачивания. Добавлю зеркало на Google Drive:
https://drive.google.com/uc?id=0B-qnBT1qgOj6UjN0SzBuQU43ZWM

1
Автор поста оценил этот комментарий

ну дай видос в оригинале

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

ты как то все усложнил, можно намного проще, без камер и експрешенов

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Как? Я заинтересован.

показать ответы
2
Автор поста оценил этот комментарий

Здравствуйте!


Теперь все в порядке?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Да, спасибо!
2
Автор поста оценил этот комментарий

Почему-то вас там забанили.
А так 25 тысяч подписчиков немаленькое число для реддита, онлайна мало из-за разницы в часовых поясах. И всегда хороший пост может убежать из сообщества на главную, так больше людей увидит.
Есть ещё такой
https://www.reddit.com/r/AfterEffectsTutorials/

И чем профессиональней сообщество, тем меньше людей, но я думаю вы понимаете почему.  

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Аккаунт я удалил сам. Можно сказать, психонул. Комментарии я пытался оставять и пока пост был ещё свежий. И я мог их оставлять, просто никто кроме меня их не видел.

За всю историю сообщества AfterEffects максимальная оценка поста была 443, а наибольшее число комментариев – 56. Не думаю, что мой пост будет читабельнее и его увидет большее число людей. Он просто утонет в безвестности. Заморачиваться ради этого и не стоит.
А AfterEffectsTutorials совсем-совсем мертв.
1
Автор поста оценил этот комментарий

@moderator, сделайте, пожалуйста как было, и не нужно так издеваться.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

@moderator, пожалуйста, удалите блок текста и два видео (выделенные на приложенном скриншоте красным), которые предыдущий @moderator по недоразумению или злому умыслу добавил в начало моего поста.

@admin, пожалуйста, сделай так, чтобы хотя бы сейчас эти люди прочли моё сообщение и поняли, что в нём написано.

Иллюстрация к комментарию
показать ответы
1
Автор поста оценил этот комментарий

@moderator, сделайте, пожалуйста как было, и не нужно так издеваться.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
2
Автор поста оценил этот комментарий
Гиф слишко большого размера. Уменьшите, пожалуйста
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

@moderator, сделайте, пожалуйста как было, и не нужно так издеваться.

показать ответы
2
Автор поста оценил этот комментарий
Гиф слишко большого размера. Уменьшите, пожалуйста
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вот, 9.94 MB: https://i.imgur.com/ZePseyL.gif

И еще замените, пожалуйста, ссылку
https://yadi.sk/d/K_mZzsGy3MaJTm
на
https://drive.google.com/uc?id=0B-qnBT1qgOj6UjN0SzBuQU43ZWM
А то Яндекс объявил какой-то лимит на скачивания...


Большое спасибо.

Предпросмотр