Как сделать сферическое видео

Обработка «видео 360», очистка изображения: алгоритм и его реализация на C#

В последнее время, в связи с растущим трендом виртуальной реальности, все более актуальными становятся съемка/монтаж/обработка видео в формате «видео 360».

В данной статье я хочу рассказать об одном эксперименте по обработке «видео 360», который хорошо иллюстрирует некоторые особенности такого формата. Забегая вперед скажу, что эксперимент потребовал реализации несложного алгоритма и, конечно, без написания программы не обошлось.

16eebed8f3194fb39c608af20f72d5f8

Что такое «видео 360»?

В рамках проекта Университета ИТМО Video360Production.com мы не только снимаем видео 360, но и попутно решаем целый «букет» сопутствующих задач — специализированная обработка панорамного видео, разработка интерактивных приложений для шлемов виртуальной реальности и многое другое.

«Видео 360» (панорамное видео), создается специальным образом — несколько видео камер смотрят «во все стороны», затем потоки синхронизируются и сшиваются в одну сплошную картинку. Одним из стандартов панорамного видео является сферическая развертка — сшитая сфера 360*360 разворачивается на кадр с соотношением сторон 2:1 (эквидистантная развертка), что позволяет кодировать панорамное видео в привычном H.264 и хранить во вполне смотрибельном виде.

При просмотре «видео 360» можно крутить мышкой или пальцем (на смартфоне, планшете), панорамное видео поддерживает YouTube и Facebook. Особенно эффектно оно смотрится в гарнитурах виртуальной реальности — Oculus Rift, Samsung Gear VR, Google Cardboard и др.

Вот так, например, выглядит концерт группы «Браво» в формате «видео 360»:

Панорамное видео может быть не только снято на видео камеру, но и получено из 3D-движков, как, например, трейлер «WARCRAFT: SKIES OF AZEROTH»:

Постановка задачи

Одной из типовых задач обработки видео является замена изображения — в программах видео монтажа есть соответствующие инструменты, позволяющие заменить статическое изображение или даже динамическое. В последнем случае используется трекинг «по ключам», что позволяет качественно и в (полу-)автоматическом режиме заменить заданный фрагмент изображения на некоторый другой.
А как обстоит дело с «видео 360»? Практика показывает, что все не так просто…

В качестве эксперимента я взял вот такое видео, собранное из UnrealEngine в формат панорамного видео и поставил задачу, на первый взгляд, несложную — очистить все баннеры, висящие сверху над «дорожкой», по которой едет тележка.

Кстати, этот ролик хорошо знают все, кто имел дело с Oculus Rift и аттракционами:

Задача оказалась не из простых.

Какие сложности возникают при попытке трекинга изображения в «видео 360»? Помимо трудностей конкретного примера (быстрое движение вагонетки, сложная текстура объектов) проявляется характерная особенность эквидистантной развертки — нетипичное искажение изображения — «изгибание» и растягивание по мере приближения к нижней/верхней части кадра. Оно и понятно — верхняя/нижняя часть кадра, строго говоря, соответствуют полюсам сферы, растянутым на ширину кадра.

Вот как это выглядит:

669c58bb27ae48fbb327e4035e401e73

Издалека надпись почти прямоугольная, однако по мере приближения начинает закругляться кверху:

8f4bed6d6d084b8d841a6590094b8d35

d0c620ba89ae4373a4a7e1ad61b606bd

2f1b28e8e826491690813683d5b3b7cb

Когда вагонетка у самого баннера, начинается полное безобразие:

c829d674530749ae9f26d4657ba23555

cbf4821d881a4c0b857e641e582734b1

Из сопутствующих сложностей — высокая скорость движения на отдельных участках, из-за чего изображение баннера сильно размыто:

01177b40825b411197e356f0ba254a95

Алгоритм

Использование стандартных средств трекинга (например, в After Affects) для данных баннеров не дает хорошего результата — ключей получается очень много, они нестабильны, захватить изображение сложно. Из-за этого вставка белого фона (а точнее — фона цвета баннера, он не идеально белый) получается неточно, в некоторых случаях и вовсе мимо. Вручную править 7-15 ключей на каждом кадре — адская задача. Фактически, это покадровая реставрация ролика.

В связи с этим возникла идея оптимизировать данный процесс. Действительно, если посмотреть на задачу глазами программиста — баннеры должны неплохо распознаваться и вполне реально придумать несложный алгоритм, который позволил бы их «очистить». Также довольно очевидно, что программу проще сделать в интерактивном стиле, чтобы либо указывать алгоритму стартовую точку, либо указывать область для поиска.

Итак, после некоторых экспериментов, получилась такая последовательность действий:

Программа

a3fc53d02fd444548628dfc2560956d1

Программа содержит следующие элементы:

1. В верхней части — отображается текущий кадр. На нем, при помощи красной рамочки, можно обозначить рабочую область — где алгоритм будет выполнять поиск баннера.
2. Снизу слева — увеличенный вид рабочей области. Алгоритм начинает работать автоматически и сразу показывает результат (очищенный баннер).

Размеры рамочки можно менять, что позволяет делать увеличение и работать даже с очень мелкими деталями:

0d8e8fa4d47f416c9a6ac41a5aa12d8a

3. Правая часть — панель настроек, содержащая имя файла, номер кадра, стрелки для перехода на следующий/предыдущий, опция «автосохранения при переходе к следующему».

Width и Height — позволяют регулировать ширину/высоту красной рамочки
Delta, BlockLength — параметры алгоритма.

Алгоритм работает следующим образом:

1. В заданной рамочкой области начинает искать точки, отличающиеся от заданного «фоного» цвета баннера не более чем на Delta. Delta можно менять, тем самым сужая или расширяя количество цветов.
2. Затем производится построковый анализ и остаются лишь те точки, которые образуют непрерывные группы длиной BlockLength, причем в каждой строчке по две — начальная и конечная (отмечены красным):

327ba702e5fd41c7bdecc09aa9786876

Таким образом, формируется граница баннера нужной толщины BlockLength, «изнутри» по фоновым точкам.
3. Блоки соединяются прямыми линиями с фоновым цветом (закраска баннера, отмечено желтым):

de053e7d29ef49b2a0db979dad08d41d

С правильной настройкой значений по умолчанию для Delta и BlockLength алгоритм работает просто прекрасно! Часто можно листать кадры друг за другом без каких-либо дополнительных действий, иногда лишь подвигая рамку вслед за движением баннера по кадру. Иногда, параметры можно уточнить.

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

c4cabf840dac467e98166fc7b7b382e0

С помощью данной программы я обработал все баннеры в ролике примерно за 1,5-2 часа.

Выводы

Конечно, данная задача является очень частной. Однако, на ее примере хорошо видны характерные особенности «видео 360» — искажение изображения, которое делает невозможным применение стандартных средств обработки видео.

Скорее всего, довольно скоро появятся плагины, которые будут учитывать эквидистантную проекцию панорамного видео (кстати, бывают и другие проекции. ) и прямо в родном After Effects успешно справляться с этой и другими задачами.

А пока что… приходится изобретать. Надеюсь, данная статья будет кому-то полезна и поможет сократить время/силы при решении собственных задач.

Источник

Все о панорамном видео 360 градусов на Youtube – как смотреть, загрузить, скачать

Камеры для съемки панорамного видео становятся все более популярными и доступными. Каждый может снимать свои ролики в формате 360. Популярный видеохостинг Youtube не остался в стороне и добавил функция просмотра сферического видео. В этой статье мы подробно разберем все возможности и секреты видео 360 на Youtube.

youtube video 360

Как найти видео 360 на youtube

Ну ютубе скопилось большое количество сферических видеороликов. Их тематика очень разная – от развлекательных, до научно-популярных и образовательных. Как же найти панорамное видео на youtube и как понять, что оно снято именно в формате 360?

Здесь все очень просто, достаточно ввести запрос «видео 360» или «vr 360 video» в строке поиска. Сервис найдет большое количество видеороликов в формате 360. Правда выдача будет очень хаотичная и направленность роликов весьма рандомная.

Лучший способ найти сферическое видео на youtube – ввести интересующий вас запрос, например, «Сафари» и применить фильтр. Эта кнопка расположена под строкой поиск. Нажав на нее, вы увидите большое количество рубрик. Здесь необходимо выбрать именно «360°».

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

Можно заметить, что под описанием ролика стоит значок «360°», он говорит о том, что видео снято в сферическом формате.

Как смотреть панорамное видео на Youtube

Теперь, когда нужное видео на 360 градусов найдено на youtube, остается только выбрать один из вариантов как его посмотреть.

На компьютере

Просмотр панорамного видео на ютубе не сильно отличается от обычного. Главным отличие видео 360 является возможность менять направление обзора, вращая сферу во все стороны.

В окне просмотра в верхнем левом углу будет расположена панель управления в виде кружка с кнопками. С их помощью можно вращать видео в соответствующие стороны. Но гораздо удобнее крутить видео 360 мышкой (зажимая левую кнопку) или кнопка со стрелками на клавиатуре.

youtube video 360 04

Каких-то специальных настроек для панорамного просмотра здесь не. Только если видео 360 снято в стереоскопическом формате, тогда на кнопке настроек появится надпись «3D».

В этом случае можно включить просмотр в режиме 3D через красно-синие (анаглифные) очки.

На телефоне

При просмотре видео 360 через приложение youtube на телефоне есть два способа управления обзором:

В очках vr

Видео 360 на youtube можно посмотреть в VR режиме. Этот способ дает возможность наибольшего погружения. Зритель словно перемещается в место съемки как в виртуальной реальности.

Для этого можно использовать гарнитуру виртуальной реальности (Oculus, HTC Vive и др.) или обычный смартфон с VR очками (например, Google Cardboard или VR Box). Стоимость последних значительно ниже.

Подходящую модель можно выбрать в статье – обзор очков виртуальной реальности для телефона.

Для запуска VR режима на телефоне, нужно нажать на кнопку в виде очков в нижнем правом углу. После этого эран разделится на две части. Такой формат необходим для очков виртуальной реальности.

Далее вставляем телефон в гарнитуру и одеваем ее на голову. Теперь управлять обзором можно вращением головы. Повернувшись в любую сторону, можно видеть все что там происходит.

В vr режиме можно управлять видеороликом. Для отображения панели управлению нужно нажать на экран или воспользоваться функциональной кнопкой на vr гарнитуре (если такая имеется).

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

Как загрузить видео 360 на youtube

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

Как же сделать сферическое видео для ютуба? Для съемки такого видео используют специальные панорамные камеры, которые снимают все 360 градусов одновременно. Для монтажа vr видео можно использовать обычные видеоредакторы. Для добавления эффектов потребуется специальный софт. Все этапы создания видео 360 мы опишем в отдельной статье.

Итак, панорамное видео есть, а как же залить его на youtube? Сферическое видео выглядит как фотопанорама в эквидистантной проекции и имеет соотношение сторон 2:1. Если просто загрузка 360 видео на youtube, то он так и будет воспроизводиться в эквидистантной проекции.

Как же правильно добавить 360 видео в youtube? На данный момент, в настройках нет возможности указать, что видеоролик снят в панорамном формате. Для того, чтобы видеофайл принял сферический вид, перед загрузкой необходимо добавить в ролик метаданные через специальное приложение «360 Video Metadata Tool» (скачать можно на странице – версии для Windows и Mac OS).

Программа не требует установки и имеет очень простой интерфейс:

После запуска нужно нажать кнопку «Open», выбрать ролик и поставить галочки напротив параметров видео:

После нажимаем «Inject and save» (Обработать и сохранить), вводим имя файла и сохранить. Через некоторое время панорамный ролик появится в папке с исходным видео 360. Теперь видеофайл имеет необходимые метаданные.

Остается только добавить видео 360 на youtube как обычный ролик. Если видео открыть сразу после загрузки, тогда оно воспроизведется в 2D формате. Необходимо дождаться окончания обработки и появления максимального качества в настройках просмотра.

Как скачать видео 360 с youtube

Скачать видео 360 градусов с ютуб можно с помощью сервиса savefrom.net или программ-загрузчиков. Единственный минус заключается в том, что в большинстве приложений ролик скачается в формате «Равноугольная карта».

Такой формат распознается далеко не во всех плеерах для видео 360. Единственная программа, которая понимает его – CyberLink PowerDVD. В ее настройках есть возможность выбрать «Формат проецирования 360 — Равноугольная карта».

Как же скачать панорамное видео с youtube так, чтобы можно было посмотреть его в любом проигрывателе? Решение есть – программа ClipGrab. Это единственный загрузчик, который скачивает видео 360 с ютуба в нормальном формате, да еще и в максимальном качестве.

Разобраться в программе ClipGrab не составит большого труда. Переходим на вкладку «Загрузки» и вставляем ссылку на видео с Youtube. Далее выбираем качество (максимально доступное), жмем «Скачать» и выбираем путь для сохранения. После завершения процесса загрузки панорамный ролик можно будет открыть в любом плеере для видео 360.

Источник

Статьи / Съемка сферических 360-видеоклипов (360 видео)

Данная статья написана не как сухое руководство пользователя по съёмке сферических видеоклипов, а как история наших экспериментов по этому вопросу со всеми совершенными ошибками, подчас курьезными, и лирическими отступлениями.

360 видео. История появления

Ещё около десяти лет тому назад, когда первые цифровые камеры стали доступны широкому кругу пользователей, идея сферического изображения была такой же виртуальной, как и сама виртуальная реальность. Прорыв произошёл в последние 5-6 лет. За это время сферические панорамы успели определиться как жанр: зритель может вместе с панорамными фотографами взмыть в небеса, погрузиться в пучины океанов, побывать в самых дальних уголках нашей планеты и даже поджариться вместе с яичницей в духовом шкафу. Ощущения присутствия в точке съёмки, которые дает сферическая панорама, на порядок превосходят самую дорогую и профессиональную традиционную фото- и видеосъёмку. С точки зрения визуализации окружающего пространства традиционные жанры остались далеко позади.

С развитием технологий самые смелые панорамные фотографы стали задавать вопрос: а можно ли снимать не только статические сферы, когда зритель находится лишь в неподвижной точке съёмки? Можно ли снимать сферы в движении, давая возможность зрителю передвигаться в пространстве и при этом смотреть по сторонам? Тогда это казалось фантастическим.

Тем не менее, прогресс неумолимо двигался вперёд, и фантастика стала реальностью.

Одной из первых сферические видеоролики представила компания Immersive Media www.immersivemedia.com

Несколько лет назад мы случайно увидели на сайте CNN интерактивный видеорепортаж, сделанный Immersive Media после землетрясения, которое практически полностью разрушило столицу Гаити:

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

Весной 2011 года мы заинтересовались съёмкой 360 видео и обратились в Immersive Media с запросом цен на оборудование. Но предложение Immersive Media выбило нас из колеи: 63 тысячи долларов за камеру и сопутствующее оборудование, срок поставки — несколько месяцев. Мы задумались.

Кроме высокой стоимости оборудования, нас смущали низкие характеристики снимаемого видео, слабые по меркам нынешнего времени. Анализ видео с Гаити показал, что размер кадра в ролике составляет 1792х896 пикселей, битрейт — 1600 Кбит/сек при частоте кадров 15 к/сек.

Надо сказать, что мы уже имели большой опыт съёмки сферических панорам и умели делать то, что делает мало кто в мире: съёмка сфер в воздухе с вертолетов, самолетов, радиоуправляемых моделей, воздушных шаров, подводная съёмка сфер. На сайте AirPano.ru сейчас выставлены виртуальные туры, снятые в воздухе примерно в 350 интересных местах Земли. Некоторые наши работы являются уникальными с технической точки зрения. Так, мы сняли сферическую панораму на скорости 250 километров в час в колонне вертолетов, сделали гигапиксельную панораму в воздухе на высоте 1 км и научились снимать сферические панорамы в небе ночью. Кроме съёмок панорам, у нас имелся опыт монтажа видеоклипов на уровне приблизительно «выше среднего».

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

Начало. Первые трудности

В качестве видеокамеры решено было взять камеру Canon 5D Mark II, позволяющую снимать в формате Full HD 1080p. С помощью Canon мы предполагали получить более широкий динамический диапазон, чем в ролике с Гаити, снятом с использованием матриц, применяемых в недорогих мыльницах. В качестве объектива мы выбрали Sigma 10мм fisheye, у которого обрезана бленда. Мы часто используем такие объективы в обычных съёмках. Сама процедура обрезки, когда Андрей Зубец на кухне ножовкой спиливает бленду с объектива, выглядит вот так:

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

Наш план изготовления «360 видео» был таким: снять обычное видео одновременно с трех камер, затем разбить видео на отдельные кадры, из этих кадров склеить сферические панорамы, а потом из панорам снова собрать видео, но уже 360 градусов. Как видите, ничего сложного 🙂

Но при практическом осуществлении этого простого плана мы обнаружили большое количество препятствий, подчас просто непреодолимых. Неделю длился мозговой штурм, и ещё неделю мы экспериментировали со съёмкой и сборкой материала. Через две недели на сайте появился наш первый тестовый ролик, который через 10 минут завалил сервер 🙂 Далее мы расскажем, как мы боролись с трудностями, и что из этого получилось.

017sm

Для крепления камер было изготовлено вот такое устройство.

IMG 1112smIMG 1130sm

Однако при этом не будет решена главная проблема: синхронная съёмка всех камер (об этом будет сказано чуть позже).

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

Однако для любительской съёмки качество материала, получающегося с мыльниц, будет вполне достаточным. Не случайно все известные производители готовых устройств для съёмки 360 видео используют матрицы мыльниц для своих конструкций, аппаратно встраивая синхронизацию и одновременное управление экспозицией на всех матрицах.

Тем не менее, взвесив все плюсы и минусы, а также учитывая, что зеркалки с объективами у нас уже были, а мыльницы ещё надо было покупать, мы решили пока отказаться от их использования и снять наше тестовое видео с помощью зеркальных камер. Все технические приемы и алгоритмы сборки, описанные в нашей статье для зеркальных камер, полностью применимы и для мыльниц. И если кто-то захочет сделать на коленке установку для съемки 360-видео, мы бы рекомендовали начать именно с мыльниц именно исходя из соображений стоимости, веса и размеров.

Среди аксессуаров Canon был обнаружен Wireless File Transmitter WFT-E4 II A, в описании которого указано, что с его помощью можно одновременно делать снимки с 10 камер. Но можно ли включать таким же образом запись видео, было непонятно.

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

Через знакомых обратились за консультацией в московское представительство Canon, и там быстро поняли суть вопроса. Выяснилось, что Canon выпускает профессиональные видеокамеры с системами GenLock и V-lock (http://en.wikipedia.org/wiki/Frame_synchronizer). В камере 5D Mark2 всего этого нет.

Там же нам снова предложили припаять провода к кнопке SET и вывести их наружу. Мы уже почти вскрыли первую камеру, но все же в последний момент отказались по следующим соображениям. Даже если мы припаяемся к кнопкам SET всех 4 камер, Canon не нормирует параметр «время старта записи» от момента нажатия кнопки «запись видео». Не факт, что время старта записи стабильно, или хотя бы у каждой камеры одинаково. Вполне вероятно, что это величина случайна, и разборка камер будет сделана зря, и как результат будут испорчены 4 камеры.

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

frames

Съёмка

Перед съёмкой мы оклеили байонеты всех 4 камер бумажным строительным скотчем для того, чтобы во время движения в матрицы через байонет не надуло дорожной пыли. Мы планировали снимать видео с вертолета и хотели проверить работоспособность системы на скорости 100-120км/ч. Для съёмки на низких скоростях этого делать не нужно. Обёрнутые скотчем 4 камеры, выдвинутые на шесте из люка автомобиля, выглядели очень забавно.

Для того, чтобы после склейки видео со всех 4 камер выглядело единообразно, необходимо отключить все автоматические функции камеры: экспозицию, баланс белого и снимать в ручном режиме. И здесь нас подстерегала ещё одна неприятность, уже из разряда курьёзных, корни которой кроются в неинтуитивно сделанном меню у камер Canon, а также отсутствии надлежаще написанной документации. Мы провели несколько тестовых съёмок, и каждый раз видели, что временами яркость кадров на нашем видео отличается. Вначале мы грешили на то, что на одной из камер может случайно провернуться колесико настроек, когда мы вытаскиваем конструкцию в люк автомобиля, потом стали думать, что сами камеры немного разные, из разных партий. Но на третий день (а каждая съёмка вместе с обработкой занимала целый день) мы пришли к выводу, что у нас банально не работает ручной режим Manual, несмотря на то, что мы его явно установили. И если в объектив какой-либо из камер попадало солнце, камера автоматически немного притемняла кадр, а когда машина поворачивала в сторону, яркость снова восстанавливалась.

Когда мы это поняли, разгадка была найдена быстро.

При фотосъёмке для того, чтобы зафиксировать параметры экспозиции, надо перевести камеру в режим Manual (M), повернув на корпусе диск установки режимов в положение M. И оказалось, что в режиме видеосъёмки камера игнорирует режим Manual, пока его специально не включишь глубоко в недрах интуитивно непонятных и нелогично названных пунктов меню. Это происходит в противоречии с официальным руководством пользователя и выглядит явным недочетом в прошивке Canon.

Работа видео в режиме Manual включается не поворотом управляющего диска на корпусе камеры, а так:

Для английской версии меню:

На финальной съемке в одной из камер по случайности не был выставлен режим Manual. Но поскольку мы уже провели 4 дня на тестировании, мы решили не переснимать наш первый тестовый ролик «вокруг Кремля», и внимательный зритель может заметить, как иногда меняется яркость некоторых частей видео.

С целью облегчить последующую сортировку материала на камеры были наклеены стикеры A, B, C, D. Таким же образом были помечены и флеш-карты каждой камеры. Съёмка начиналась в такой последовательности:

2. Переводим все камеры в режим Live View.

3. Выбираем в меню камеры ручной режим съёмки видео, как было описано выше.

Для подтверждения убеждаемся, что в меню стоит следующая пиктограмма: 020a

4. Поочерёдно включаем запись на камерах А, В, C и D. Съёмка началась.

5. Делаем громкий хлопок в ладоши. Этот звук и есть наша киношная «хлопушка». По этой метке будет осуществлено выравнивание клипов от всех камер.

6. Выдвигаем камеры в люк автомобиля и начинаем движение.

Следим за таймером, так как максимальное время записи составляет 12 минут. Это определяется файловой системой флеш-карты камеры, в которой размер файла не может быть более 4Gb.

IMG 1227smIMG 1160sm

Итак, с использованием данной методики в апреле 2011 было снято несколько тестовых видеоклипов в движении с автомобиля, а также с вертолета над МКАД.

— Видео о съёмке с автомобиля

— Видео о съёмке с вертолета

Обработка материала

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

На этапе разработки методики мы использовали для обработки компьютер средней мощности: некогда знаменитый Intel Core 2 Duo 3.3 GHz, 8 GB RAM, RAID0 2xRaptor HDD.

На таком компьютере панорамы для видеоклипа собирались 2-3 часа, что, конечно, сильно замедляло работу. Стали вспоминаться студенческие времена, когда в институте на кафедре мы уходили пить чай во время загрузки Windows 3.1

Поэтому мы взяли компьютер посерьёзнее: мощный ПК с процессором Intel Core i7 Extreme Edition 3.3 GHz, 24 GB RAM, SSD накопитель PCI-E 480Gb OCZ RevoDrive X2 Series SSD, и это позволило в несколько раз сократить время обработки. Теперь процесс сборки занимал не более 20 минут! В особенности хочется отметить работу SSD HDD при работе с массивами небольших файлов. Скорость доступа в данном случае является решающим фактором. С таким мощным компьютером половину кружки чая уже приходилось оставлять на столе 🙂

Разборка видео на отдельные кадры

Итак, в нашем распоряжении оказались одновременно снятые клипы с 4 разных камер со звуковыми метками начала съёмки.

Как из этого материала получить сферическое видео? Мы начали с разборки всех клипов на отдельные кадры. В видео-редакторе Sony Vegas все четыре клипа были открыты одновременно.

001sm

Как видим на скриншоте, все клипы выравниваются по всплеску (хлопок в ладоши) на звуковой дорожке. Производим разрез по месту, обозначенному хлопком. Таким образом получаем квазисинхронные видеодорожки. Синхронизация по времени сделана с точностью до одного кадра.

004sm

Выделяем начало каждого клипа и безжалостно отрезаем. Сдвигаем все клипы к началу и отрезаем сразу все концы клипов. Таким образом, получаем четыре клипа равной длинны, синхронизированные по времени съёмки с точностью до одного кадра.

006sm

Далее каждый клип экспортируется в отдельные папки A, B,C,D как отдельные изображения формата JPEG.

007

На данном скриншоте показаны установки экспорта.

В результате экспорта мы получили в папках последовательности jpg-кадров от каждой камеры.

009

Легко догадаться, что названия папок и индекс клипа соответствуют меткам на камерах A, B, C, D.

Для снижения результирующего потока при демонстрации сферического видео в интернете во время экспорта частота кадров была снижена вдвое до 12 кад/сек, т.к. съёмка велась при скорости 24 кад/сек.

Сортировка кадров

Далее с помощью самодельной программы-сортировщика, написанной на Бейсике, каждые четыре кадра с одинаковыми номерами помещались в отдельную папку. В итоге получаем набор папок с индексом P в начале имени папки (P- panorama).

010

Содержимое папок распределено так, как показано на скриншоте ниже:

016

Итак, в папках, число которых равно числу кадров, мы получили последовательности квазисинхронных кадров, из которых предстояло собрать эквидистантные проекции (панорамы) для каждого кадра будущего сферического видеоролика.

Сборка панорам

Сборка панорам велась по шаблону в пакетном режиме с помощью популярной программы для склейки панорам PTGui PRO.

Дойдя до этого момента, хочу особенно отметить работу видеокарты Asus GTX460 DIRECTCU TOP/2DI/1G использующую технологию CUDA. Данная технология позволяет производить вычисления, связанные с трансформацией изображения, средствами процессора видеокарты. Это позволило сократить время на обработку нескольких тысяч файлов в 3-5 раз.

Итак, вкратце расскажем, как делалась сборка.

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

Итак, собираем эту панораму, проставляя контрольные точки по заднему плану (помним, что на переднем у нас параллакс), оптимизируем панораму, и шаблон проекта сборки готов.

В нашем случае максимальный размер видеопанорамы получился 3088х1544 пикселя. Следует заметить, что для кодирования видеоизображений необходимо выполнить условие: размер сторон кадра должен быть кратен 16. И кроме того, для трансляции через интернет мы приняли решение сократить на 30% и без того огромный поток видео. Поэтому размер результирующей панорамы в нашем шаблоне был уменьшен до 2720х1360 пикселей.

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

(метка 1 на скриншоте ниже).

005sm

Следующий шаг: выбрать текущий открытый проект как шаблон для сборки всех остальных проектов (метка 2). Затем переходим к построению проектов: «Generate new projects» (метка 3).

013sm

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

Затем все полученные панорамы были обработаны («подкрашены») в пакетном режиме в Adobe Photoshop для придания насыщенности и красочности изображению. Уже на этом этапе было заметно, что полученный материал превосходит по динамике светотени и детализации репортаж из Гаити.

Сборка видеоклипа.

Мы приближаемся в завершению сборки сферического видеоклипа. На данном этапе нам потребуется видеоредактор Adobe Premiere не ниже версии CS5. В видеоредакторе создаём проект с установками как на скриншоте, приведённом ниже:

018sm

Частота кадров равна 12 кад/сек, как при экспорте отдельных кадров. Разумеется, можно было оставить и 24 кад/сек, или 25 или 30 кад/сек в зависимости от режима съёмки в камере. Но в таком случае поток кодируемого видео возрастает вдвое, и далеко не всякий пользователь сможет посмотреть ваш сферический видеоролик. Ещё раз прошу обратить внимание на то, что мы создаём видеоряд с размером кадра больше, чем Full HD 1080p, а далеко не каждый пользователь интернета может себе позволить себе смотреть видео Full HD 1080p онлайн из-за пропускной способности своего канала или сервера, отдающего видео. Разумеется, можно и уменьшать размер кадра, тем самым снижая битрейт и давая возможность пользователям с низкоскоростным каналом интернета смотреть сферическое видео онлайн. В данном случае, уповая на технический прогресс, который не стоит на месте, мы оставили размер кадра 2720х1360.

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

019sm

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

frame22sm

На таймлайне расположены наши отдельные картинки, из которых будет сформирован наш ролик. На данном этапе на видео можно наложить некоторые эффекты. Мы использовали только эффект затемнения в начале и конце клипа. Титры и другие эффекты проще применить уже при создании веб-страницы, используя возможности flash.

Экспорт осуществлялся во flash контейнер f4v, позволяющий кодировать видеопоток формата выше чем Full HD 1080p. Разумеется, в установках экспорта надо не забывать ввести нестандартный для видео наш размер кадра.

frame23sm

В зависимости от производительности вашего компьютера процесс импорта изображений в Adobe Premiere может занять время до десятков минут, а процесс кодирования f4v видеоклипа может затянуться и на несколько часов.

Демонстрация 360 видео в интернете

Остался вопрос: как показать полученное 360 видео зрителю. Если выложить его на YouTube, то на экране будет показано развернутое на 360 градусов плоское изображение, настолько же далекое от 360 видео, насколько пасущаяся на лугу овечка далека от хорошо приготовленного шашлыка:

— Видео о съёмке с вертолета

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

Для демонстрации сферического видеоизображения мы использовали единственный доступный для нас flash плеер компании KRPANO http://krpano.com/video/ (бета версия), к которому мы написали самодельный интерфейс. Звуковое сопровождение у нас независимо от видеоряда и служит фоном. Т.е. при остановке движения и статическом просмотре сферы в режиме «пауза» звуковое сопровождение не прерывается.

Разобравшись с методикой создания сферического видеоряда и добившись положительных результатов в адаптации бета версии flash плеера, мы столкнулись с ещё одной проблемой. Было непонятно, как показать это видео широкому кругу зрителей, так как банально не хватало ресурсов на сервере провайдера. Как только количество одновременных обращений к видео превышало совсем небольшую цифру 5, наш сайт, расположенный в России на виртуальной площадке Masterhost, переставал функционировать, а посетители видели сообщение «Service Temporary Unavailable». Конечно, в таких условиях показывать видео панорамы не представлялось возможным, и наш сайт сменил прописку. Мы переехали на выделенный сервер, расположенный в Германии. Аналогичные условия в России стоили в несколько раз дороже. После анализа рынка мы выбрали именно Германию из-за очень хорошего соотношения цена-качество, а также наличия поддержки на русском языке.

Выводы

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

Из-за сильного параллакса на переднем плане возможности использования конструкций из зеркальных камер для съёмки 360 видео несколько ограничены. Однако зеркалки вполне можно использовать там, где нет переднего плана: например, при съёмке видео с вертолета.

Для снижения параллакса можно использовать цифровые мыльницы небольшого размера.

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

И в обоих случаях (зеркалки и мыльницы) не будет решена важная проблема: синхронная съёмка всех камер. Для этого нужно вмешиваться в электронику на уровне производителей.

Тем не менее, наши эксперименты показывают, что и на любительском уровне можно достичь вполне приемлемых результатов в съёмке 360 видео с использованием бюджетных решений, без необходимости тратить десятки тысяч долларов на специализированное оборудование.

Тестовое видео

Высокое разрешение

360 видео, тестовая съемка. Высокое разрешение, поток 7Мбит/с
(только для высокоскоростного интернета):

Низкое разрешение

360 видео, тестовая съемка. Низкое разрешение, поток 2Мбит/с:

Что дальше?

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

Производители тоже не сидят на месте, компания Sony выпустила видеомыльницу Sony bloggie MHS-PM5K. На эту камеру одевается специальная зеркальная насадка, после чего камера снимает 360 видео, правда, невысокого качества:
http://habrahabr.ru/blogs/gadgets/86160/
http://www.youtube.com/watch?v=LjVodf2Bnwg

Разрабатывается насадка для iPhone 4, позволяющая снимать 360 видео:
http://www.iphones.ru/iNotes/131920

Кроме Immersive Media, в интернете можно найти и другие компании, выпускающие профессиональное оборудование для съемки 360 видео.

И если к съемке 360 видео приложить грамотную режиссуру и качественную обработку, то получаются клипы профессионального качества, которые интересно смотреть. Примеры некоторых из них приводятся ниже.

Получит 360видео в дальнейшем широкое распространение или останется экзотическим мультимедийным материалом? Покажет время.

Обсуждение

Добавить комментарий вы можете на этой странице

Источник