Як використовувати покадрову фотозйомку камерою GoPro для сервісу «Mapillary»

За минулі півроку зросла популярність web-сервісу «Mapillary»: завантажено понад півмільйона фотографій, причому понад 100 тисяч штук — тільки за останні 10 днів!

На перший погляд здається, що для цієї справи потрібен звичайний смартфон. А що, якби для збору фотознімків для «Mapillary» можна було використовувати екшн-камеру, наприклад, GoPro? Встановлену на велосипед, шолом або навіть автомобіль? Як виявилося, це можливо.

І ось минулого тижня я зробив невелику поїздку і зібрав близько 1700 фотографій за півгодини, користуючись функцією TimeLapse. На моїй 32-гігабайтної SD-картці це гостилося лише 3,4 гігабайти. Я міг би ще кататися більше 4 годин і зняв би близько 150 тисяч фотографій, перш ніж моя картка пам'яті заповнилася б повністю!

Однак, це не зовсім тривіальна справа, тому, вважаю, потрібно пояснити докладніше, як це робиться. Головна проблема в тому, що GoPro не містить в собі GPS-приймача. Як же картографічний сервіс дізнається, куди помістити фотографії? Ми самі повинні передати йому цю інформацію, тому доведеться використовувати окремий GPS-приймач. Особисто я користувався своїм смартфоном HTC One — тим самим, що я використовував раніше, щоб робити звичайні фотографії для «Mapillary».

Коротенько, процедура така:
  • Зміцнити камеру на велосипеді або мотоциклі з допомогою різноманітних кріпильних пристосувань.
  • Запустити програму для запису GPS-треку. Я користувався програмою geopaparazzi, але є і багато інших, які працюють не гірше.
  • Налаштувати GoPro на покадрову зйомку. Я вибрав налаштування: 5MP, medium, narrow, 1s.
  • Запустити GoPro і кататися.
  • Вивантажити фотографії і трек GPX в комп'ютер.
  • Програмою gpx2exif прив'язати фотографії до географічних координат, синхронізуючи часу зйомки з GPX-треком.
  • Завантажити фотографії в Mapillary.
Начебто, виглядає не надто важким. Розпишемо ці дії більш докладно на прикладі моєї поїздки на минулого тижня.

image

Я закріпив GoPro на переднє ліве крило моєї Mazda RX8, щоб отримати гарний вид на середину дороги.

image

Потім я зміцнив свій смартфон HTC One в салоні автомобіля на спеціальний кріплення. Користуючись програмою "GoPro App", я приєднався до камери і вивів на попередній перегляд зображення місцевості, як її бачить GoPro. Це зручно, але, насправді, не дуже-то й потрібно, оскільки з початком запису попередній перегляд зникне. Необхідно тільки, щоб смартфон знаходився в машині в тому місці, де добре ловиться сигнал GPS-супутників. Якщо ви користуєтеся додатком «GoPro App», витратьте трохи часу, щоб налаштувати час на камері: різниця поточного часу на пристроях повинна бути як можна менше. Як ви побачите пізніше, вам доведеться врахувати різницю часу, щоб виконати синхронізацію треку і фото. І чим меншу корекцію доведеться вносити, тим легше буде виконати роботу.

image

Перевіримо налаштування камери ще раз: повинен бути включений режим покадрової зйомки «time-lapse photos». Це легко зробити за допомогою програми GoPro App, але можна і на самій GoPro. Я вибрав 5MB, Medium, вузьке поле зору (Narrow), щоб отримати вигляд, схожий на той, що я знімаю з допомогою телефону. Еквівалентна фокусна відстань (в перерахунку на 35-мм камери) складе приблизно 20 мм. Налаштування GoPro за замовчуванням передбачають широке поле зору, з великими оптичними спотвореннями, тому в цій поїздці я відмовився від цього режиму. Я планую в іншій статті описати інший сценарій, коли я робив фотографії для Mapillary з ширококутного 4К-відеопотоку. Це було складніше, так що поки пропустимо розповідь.

При обраної налаштуванні 1 кадр в секунду, відстань між фотографіями складе 10-20 метрів при швидкості 40-80 км/ч. Рекомендація Mapillary про один кадр за дві секунди більше підходить для велосипеда, а я планую, звичайно, рухатися швидше, ніж на велосипеді!

Запустимо додаток для запису GPS-треку. В даному випадку я користувався програмою geopaparazzi. У цьому додатку є кнопка для старту запису. Я натиснув кнопку і підтвердив запропоноване ім'я файлу для збереження треку. ОК. Тепер все готово. Залишається тільки запустити зйомку, і вперед!

image

Накатавшись, зупинимо запис на камері і на GPS-приймачі. Ось тепер і починається справжня робота! Нам потрібно виконати геоприв'язку, перш ніж ми зможемо завантажувати наш матеріал Mapillary. У Geopaparazzi я експортував трек в GPX-файл і сам собі послав його по пошті. З GoPro я просто витягнув картку і скопіював з неї фотографії на ноутбук.

Перше, що я захотів зробити — це подивитися, як виглядала моя поїздка. Я виконав команду:

geotag-g väla_to_billesholm.gpx \
-o väla_to_billesholm.png \
-D 1-s 2048x2048


В результаті вийшла непогане зображення у високому дозволі всієї карти шляху. зауважте використання опції-D, щоб встановити більший проміжок між маркерами на карті. Це необхідно, тому що geotag за замовчуванням налаштований на короткі треки, як, наприклад, швидка велопрогулянка. На отриманому зображенні видно час і становище ключових точок поїздки. Потрібно збільшити масштаб в декількох характерних місцях, де ми зможемо вручну перевірити збіг часу на камеру і GPS-приймач і якомога точніше визначити похибка годин між ними. На етапі синхронізації ми зможемо скоригувати цю різницю, і важливо визначити її правильно.

Я виконав команду:

geotag-R 20140505T12:39:00+02-20140505T12:41:00+02 \
-g väla_to_billesholm.gpx \
-o krop.png-D 0.1
, яка згенерувала таку картинку:

image

Я можу відшукати фотографію, де я в'їжджаю під міст, і звірити показання годин.

image

Дані EXIF цієї фотографії показують, що вона була зроблена в 12:39:11. Розглядаючи карту, бачимо, що ми проходили під тунелем у 12:39:14. Таким чином, помилка складає 3 секунди. Можна використовувати це значення в процесі геопривязки, але краще спочатку звіримося з іншою фотографією.

image

Я згенерував карту шляху через Мерарп, тому що я зможу впізнати такі об'єкти, як будівлі і перехрестя. Не слід використовувати перехрестя, на яких ви зупинялись (як, наприклад, мій поворот направо). Шукайте такі орієнтири, поруч з якими ви перебували в русі. Я шукав перший проїзд праворуч, вгорі карти, і знайшов фотографію, зняту в 12:46:10.

image

Я взяв на замітку кілька орієнтирів, про які я точно знаю, де вони знаходяться: попереджувальний знак посередині, біла розмітка біля перехрестя, стовп вуличного освітлення.

Ще один цікавий спосіб перевірки, якими можна скористатися, якщо ви перебували у місці, де є знімки Google street view, можна порівняти два зображення.

image

На знімках Google street view видно дорожній знак, розмітку на перехресті, дерево і стовп освітлення. Але зауважте, що немає паркану, замість нього ростуть ялинки. Ясно, що будівництво почалося вже після того, як в цьому місці проїхав автомобіль Google. Google говорить, що знімок зроблений у вересні 2011 року — приблизно 2,5 роки тому — звичайно, щось змінилося.

З даних треку GPX через Мерарп видно, що перехрестя пройшли в 12:46:13, що на 3 секунди пізніше, ніж зафіксовано камерою на фотографії. І знову ми маємо помилку в 3 секунди. Це радує: виходить, на протязі всього треку помилка однакова. Можна продовжити і синхронізувати всі 1500 фотографій, використовуючи команду:

geotag-g väla_to_billesholm.gpx \
20140505_TimeLapse/*JPG-t 3-v


Я задав зсув часу з допомогою опції "-t -3" і скористався опцією "-v", щоб спостерігати за процесом. Оскільки скрипт являє собою обгортку над програмою командного рядка «exif_file», кілька процесів стартують на обробці кожного файлу; це займає деякий час, але в кінці всі ваші фотографії будуть містити інформацію для геопривязки, взяту з GPX.

image

Коли прив'язка геоінформації до фотографій завершилася, можна завантажити фотографії на mapillary.com. Увійдіть на сайт, натисніть на вашому імені, виберіть «Upload images», натисніть кнопку «Choose files». Вибравши всі файли, прокрутіть вниз і натисніть кнопку «Start Uploading». Колірна гамма на сайті така, що не завжди зрозуміло, чи почалася завантаження. Просто прокрутіть сторінку вгору, і ви побачите червоні індикатори завантаження під кожним зображенням.

image

І нарешті, коли завантаження завершиться, натисніть на ваше ім'я, виберіть «my uploads»', і ви побачите нові зображення для вашого треку.

image

Натисніть на вашу останню завантаження, щоб переглянути фотографії в Mapillary!

image

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

А тепер — уповільнена відеозйомка
Налаштування в GoPro для описаного способу фотографування не даремно називаються «Time Lapse» — «сповільнена зйомка». З фотографій можна зробити відеофільм. Оскільки ми знімали один кадр в секунду — якщо ми зробимо відео з частотою 25 кадрів в секунду, ми отримаємо 25-кратне прискорення. Це ж здорово! Подивіться, що у мене вийшло:



Це відео робилося так::
  • Перейменуємо всі фотографії, щоб імена файлів мали номери, починаючи з 0000. Я задав імена подібні foo-0000.jpeg. Щоб полегшити собі життя, я написав ruby-скрипт, що створює жорсткі посилання з необхідними іменами. Потім можна скористатися командою ffmpeg, щоб зібрати відеофільм, що:

    ffmpeg-f image2-i foo-%04d.jpeg \
    -r 25-s 1280x960 ../myvid.mp4
    

  • Ця команда стискає 7-мегапіксельні фотографії формату 4:3 відеофільм з чіткістю 960p HD.
  • Потім я з допомогою відеоредактора OpenShot виконав обрізку до 16:9, додав звук, додав карту і перетиснув в 720p із середньою якістю для більш швидкого закачування в web.


Установка gpx2exif
В цій статті широко використовувалася команда geotag. Ця команда включена в ruby gem «gpx2exif». У статті використовувалися можливості, наявні у версії 0.3.6. Однак, на момент публікації статті була доступна версія 0.3.1. Тому поясню, як встановити найсвіжішу версію.

Installing Ruby on Ubuntu
Перше, що знадобиться — це Ruby. Установка залежить від операційної системи. Я користуюсь Ubuntu 14.04 і RVM, тут я дам інструкції, відповідні до моєї OS. А вам я рекомендую сходити на сайти ruby-lang.org і rvm.io за порадою, підходящим для вашої платформи.

sudo apt-get install curl
curl-sSL https://get.rvm.io | sudo bash-s stable --ruby
sudo usermod-g rvm craig
# logout and login to get RVM group
source /etc/profile.d/rvm.sh

Частина програми, яка створює зображення у форматі PNG, використовує для своєї роботи ImageMagick. Стосовно до Ubuntu це означає, що потрібно спочатку встановити кілька залежностей:

sudo apt-get install imagemagick imagemagick-doc libmagickwand-dev
gem install rmagick # Requires libmagickwand-dev to compile


Установка з rubygems.org
Коли ruby встановлений, просто інсталюйте gem:
gem install gpx2exif

Потім виведіть список командою «gem list», щоб дізнатися, яка версія встановилася в результаті. Якщо вона старша, ніж 0.3.5, то слідуйте інструкціям нижче.

Встановлення з github
Встановіть git, а потім виконаєте команди:

git clone https://github.com/craigtaverner/gpx2exif
cd gpx2exif
bundle install
rake build
gem install pkg/gpx2exif-0.3.6.gem

Якщо все пройшло вдало, значить, ви зібрали і встановили самий свіжу версію Ruby Gem.

Зауваження від перекладача:
1) Що таке «Mapillary»? Як висловився Zverik: «Mapillary для знімків — як OpenStreetMap для карт». Якщо говорити коротко, то це аналог Google street view і Яндекс-панорам, що працює за принципом краудсорсингу. Користувачі завантажують свої геопрівязанние фотографії, які потім відображаються на карті разом з лінією пройденого шляху. Ліцензія на вміст дозволяє використовувати інформацію, отриману з фотографій, у OpenStreetMap.
2) Для геопривязки фотографій є ще такий скрипт на Python'е: https://github.com/mapillary/mapillary_tools/краплі/master/python/geotag_from_gpx.py
3) Про все, згадане в пунктах 1 і 2, я дізнався зі статті "Народні панорами" у блозі користувача Zverik.
4) найзручніший спосіб зафіксувати розбіжність у показаннях годин — сфотографувати камерою показання годин на GPS-пристрої.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.