Распространенность смартфонов с возможностью свободного использования режима видеосъемки, а также камер вроде GoPro, сделала популярными видеоролики от первого лица, особенно сделанные во время поездок и путешествий. А в ближайшем будущем в эту когорту наверняка войдут и материалы, снятые с помощью Google Glass. Такие видеоролики бывают весьма занимательны, но у них есть одна общая проблема: сильное дрожание камеры, особенно при ускорении (так называемый формат time-lapse). Ее инновационное решение предложили специалисты из Microsoft Research.
Time-lapse часто используется при монтаже видеоклипов с однотипным содержанием, например, поездкой на велосипеде или покорением какой-либо вершины. Казалось бы, тут можно вспомнить про традиционную технологию программной стабилизации изображения. Ее работа основана на обрезке пикселей по краям изображения для создания более плавного перехода между кадрами. Однако при увеличении скорости воспроизведения такой алгоритм явно не позволяет сгладить дрожание камеры. Алгоритм же, предложенный разработчиками из Microsoft Research и принадлежащий к формату hyperlapse, является гораздо более сложным, однако и эффективность его впечатляет. Работает он следующим образом.
Сначала выполняется реконструкция движения камеры в 3D с расчетом ее расстояния и угла наклона к окружающим объектам. Затем алгоритм «рисует» более плавный маршрут движения и склеивает пиксели из множества присутствующих в видео кадров, чтобы заново смоделировать каждый момент перемещения и при этом не оставить пустых мест в изображении (так как камера движется уже по другому маршруту). Результатом является ускоренное в 10 раз видео со впечатляющей плавностью воспроизведения. Сравнение с традиционными методами стабилизации можно оценить на видео ниже.
При таком результате есть, впрочем, и недостатки. Так, видео при обработке таким алгоритмом несколько теряет в качестве. Поскольку каждый кадр отрисовывается заново, иногда можно заметить, как те его части, которые в данный момент времени не присутствовали в изначальном видео, постепенно подгружаются, подобно текстурам в компьютерной игре при движении по уровню.
Еще одним более очевидным недостатком разработки Microsoft Research является время, необходимое для обработки исходного видео (иными словами, требуемая вычислительная мощность). Так, по словам разработчиков, на обработку 10-минутного отрезка сейчас уходит порядка двух часов при использовании среднестатистического настольного компьютера. Впрочем, изначально та же операция занимала не менее 300 часов, поэтому можно сказать, что прогресс в оптимизации достигнут впечатляющий.
Серые прямоугольники – кадры исходного видео. Красная линия – сглаженный маршрут камеры. Серые точки – элементы 3D-модели окружающей среды, полученной путем анализа расположения объектов относительно камеры в каждом кадре
В будущем Microsoft надеется создать пользовательское приложение на основе разработанного алгоритма. Возможно, поначалу оно окажется простой программой с непритязательным интерфейсом, нацеленной на использование локальных вычислительных ресурсов. Однако при наличии достаточного к ней интереса она вполне может получить дополнительную оптимизацию, а вероятно, и возможность использования облачных мощностей Windows Azure, что значительно увеличит скорость ее работы.
Те, кого интересуют технические детали работы алгоритма, могут посмотреть это видео. Кроме того, полный доклад и демонстрационные ролики в высоком разрешении можно скачать на странице проекта.