При просмотре GIF-анимации или других зацикленных роликов всегда заметен переход от конца видеоролика к началу, как бы скачок на исходную позицию. Специалисты из Microsoft Research выпустили программу автоматической обработки видео, которая элегантно решает эту проблему.
Алгоритмы работы описаны в научной работе. Если вкратце, то программа изолирует все движущиеся объекты в кадре, определяет скорость их движения. После этого осуществляется оптимизация движения элементов таким образом, чтобы первый и последний кадр видеоролика совпадали. Грубо говоря, некоторые объекты нужно чуть замедлить, а другие — чуть ускорить. Оптимизация практически незаметна на глаз и выглядит очень естественно (см видео под катом).
Кроме бесшовных анимаций, программа позволяет создать красивые спецэффекты. Например, «заморозить» некоторые объекты в кадре, в то время как остальные продолжат движение.
Как показано на видео, интерфейс очень дружественный к пользователю: программа автоматически распознаёт все движущиеся объекты. Работая с отдельным объектами, достаточно выделить их мышкой: замораживание или зацикливание доступно как для всего видео, так и для отдельных объектов. Очень красиво, когда вы замораживаете весь пейзаж, при этом запуская движения только цветочков или флагов на ветру.
В общем, специалисты Microsoft Research, сами того не зная, сделали идеальный инструмент для GIF-анимации.
Поэкспериментировать с программой можно самостоятельно: она доступна для бесплатного скачивания с сайта Microsoft Research (для работы требуется 64-битная версия Windows 7 или Windows 8 с 8 ГБ оперативной памяти и установленными runtime-компонентами Visual Studio).
Авторы научной работы считают, что их метод можно использовать для сжатия видеороликов. В самом деле, часовую съёмку водопада размером 1 гигабайт можно легко сжать в 1 мегабайт, просто зациклив 10-секундный отрезок. Возможно, зацикливание отдельных объектов в кадре будут применяться в алгоритмах видеокомпрессии нового поколения.
При этом авторы признают, что у технологии есть определённые ограничения. Например, при обработке видеоролика, где девушка в развевающемся платье сидит на камнях у берега моря всё отлично обрабатывается, пока она случайно не двигает рукой в конце ролика — такие спонтанные движения портят всю картину. Собственно, алгоритм в нынешней реализации просто сотрёт это движение из видеоролика.
Кроме того, программа даёт забавные глюки в некоторых ситуациях. Например, при зацикливании оживлённого трафика на автомагистрали некоторые автомобили пропадают посреди дороги. Не очень красиво выглядят и качающаяся на волнах лодка, поскольку алгоритм динамично меняет её форму.
Демонстрационные видеоролики
Научная работа (pdf)
Автор: alizar