Видеосъёмка сферических панорам

Часть 1, аппаратная


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первое, с чем мы столкнулись, это формат видеокадра. Пропорции традиционного фотокадра — 4:3, а видеокадр имеет пропорции 16:9.

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

Таким образом, оказалось, что собрать сферу из 3 видеокадров, как мы хотели, невозможно — не хватает перекрытия. Это была самая простая наша проблема. Пришлось использовать не три, а четыре камеры. Ну и, соответственно, 4 объектива. К счастью, AirPano обладает достаточным количеством оборудования ;)

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

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

Уже на этом этапе мы всерьез задумались над тем, чтобы для снижения параллакса отказаться от использования профессиональных камер (Canon 5D Mark II). Вместо них можно брать цифровые мыльницы небольшого размера. Из имеющихся на рынке мыльниц более всего подходит камера GoPro, так как она в стандартной поставке оборудована «фишаем» с углом обзора 170 градусов. Мы купили GoPro и провели с ней эксперименты. Из 4-5 таких мыльниц вполне можно собрать компактную конструкцию для съёмки 360 видео, к тому же значительно более дешевую (около 5×450=2250 долларов). Если же покупать камеры за рубежом, то стоимость ещё снизится: 5×259=1300 долларов.

Нужно упомянуть ещё одно из преимуществ использования мыльниц — компактность и малый вес всей конструкции.

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

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

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

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

Следующая проблема, с которой пришлось столкнуться — это синхронизация камер. Все 4 камеры должны снимать синхронно, одновременно делая каждый кадр. К большому сожалению, Canon 5D Mark II не позволяет включить запись видео на всех камерах синхронно. Запись включается только вручную кнопкой SET. Для того чтобы вывести сигнал включения записи на внешнее устройство и таким образом сделать одновременный старт записи на всех 4 камерах, требуется разобрать аппараты и припаять провода к этой кнопке. По понятым причинам мы не сразу решились на этот шаг и вначале стали искать альтернативные пути.

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

Мы попытались задать вопрос в Canon USA, но тут нас поджидала неудача — вопросы на сайте Canon USA принимались только от граждан США. Так мы впервые лично столкнулись с американской политикой двойных стандартов :) Выручил знакомый фотограф, проживающий в Далласе, он отправил в Canon наш вопрос и на следующий день переслал обратно ответ: «Уважаемый потребитель, одновременная запись видео таким образом не включается. Благодарим за интерес к нашей продукции».

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

Через знакомых обратились за консультацией в московское представительство Canon, и там быстро поняли суть вопроса. Выяснилось, что Canon выпускает профессиональные видеокамеры с системами GenLock и V-lock. В камере 5D Mark II всего этого нет.

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

Проблему решили простым методом. Когда мы жаловались на тяжелую судьбу нашему коллеге, Стасу Седову, тот даже удивился простоте вопроса и спросил: «А как в кино камеры синхронизируют? Хлопушкой — синхронизация по звуку».

Это все меняло.

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

Итак, все камеры включаются на запись, затем делается громкий хлопок в ладоши, аналог киношной «хлопушки», — и одновременное начало видеоряда обозначено! Изящное решение, но, к сожалению, как оказалось, лишь частичное. Хлопушка не решала другую важную проблему — фазирование начала кадра в камерах. Камеры по звуку можно фазировать дискретно, т. е. только с точностью до одного кадра. При частоте съёмки 15 к/сек. погрешность будет 1/15 сек. При частоте кадров 30 к/сек, соответственно, 1/30 сек. Для лучшего понимания можно взглянуть на следующий эскиз.

Рассмотрим работу двух камер (в реальной ситуации их было четыре). Предположим, съёмка ведётся с частотой 30 кадров/сек. В верхнем ряду зелёные секторы обозначают время экспозиции первой камеры, красные — второй камеры. Поскольку камеры запускаются вручную, то время экспозиции у всех камер сдвинуто по времени на случайную величину. При подгонке кадров мы можем выбрать точку разреза только дискретно — по частоте кадров. Другими словами, чтобы подогнать камеру с красными секторами к зеленому сектору, придётся выбрать красный кадр A или В, но оба они не совпадают с зелёным кадром. Таким образом, в любом случае есть разница во времени между съёмкой каждой камеры. Величина эта случайна и лежит в промежутке времени, равном длительности кадра.

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

В случае сферической видеосъёмки в движении проблема значительно усугубляется. При перемещении и даже при наклонах устройства за 1/15 сек угол обзора камер, снимающих соседние кадры, изменяется настолько, что граница перехода между кадрами становится весьма заметной. Единственным решением проблемы является жёсткая синхронизация фазы съёмки. В профессиональной технике существует внешняя синхронизация (англ. External Synchronazation) — V-Lock (кадровой развертки) или Gen-Lock (кадровой и чересстрочной развертки). Через специальный разъём подключается внешний генератор (роль которого может выполнять одна из камер, назначенная ведущей), и все камеры снимают «кадр в кадр, строка в строку». На пользовательском уровне проблема практически неразрешима. Поэтому с ней пришлось просто смириться.

Съёмка

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

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

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

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

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

Меню — Настройки ЖКД-видоискателяУст. ЖКД-видоис.Фото и видеоРежим отображения на мониторе — Видео

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

Menu — Live View/Movie func. set.LV func. settingStills+movieScreen settingsMovie display

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

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

  1. Устанавливаем экспозицию в ручном режиме, одинаковую для всех камер (одинаковые ISO, диафрагма, выдержка, баланс белого). Кроме того, устанавливаем одинаковые пресеты (Стиль изображения) для внутрикамерного JPG — они тоже влияют на видеосъёмку. Фокусируемся на бесконечность через live view (автофокус на «фишае» работает нестабильно), блокируем фокус, заклеиваем кольцо фокусировки скотчем, чтобы случайно не сдвинуть.
  2. Переводим все камеры в режим Live View.
  3. Выбираем в меню камеры ручной режим съёмки видео, как было описано выше. Для подтверждения убеждаемся, что в меню стоит следующая пиктограмма:
  4. Поочерёдно включаем запись на камерах А, В, C и D. Съёмка началась.
  5. Делаем громкий хлопок в ладоши. Этот звук и есть наша киношная «хлопушка». По этой метке будет осуществлено выравнивание клипов от всех камер.
  6. Выдвигаем камеры в люк автомобиля и начинаем движение.

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

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

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

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

Вид «из глаз» одной из четырех камер:


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





Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.