Маппинг с помощью Insta360 X3

#Kanach Yerevan

Наш основной актив в Kanach Yerevan — это "народная" карта деревьев, которую мы формируем руками. Самая трудоёмкая часть работы — это определение координат нового дерева, используя неточный телефонный GPS и ориентирование на местности. Есть множество факторов, которые сильно снижают производительность этого процесса "в поле" и я ищу способы сделать этот процесс более технологичным, чтобы ускорить его.

Зачем это нужно

Две главные проблемы в ручном маппинге — это люди и время. Люди — это волонтёры, которые готовы ходить по городу и добавлять деревья на карту. Они в целом не очень охотно собираются, тем более в -10, +40, в дождь и когда горит городская свалка (это покрывает 80% времени). Использование Street View позволяет перенести эту трудоёмкую работу в домашние условия, распределять её, искать волонтёров-удалёнщиков.

Время критично потому, что мапим обычно реактивно: когда анонсированы планы на вырубку улицы или нескольких, мы мапим их в первую очередь. Но на это может не быть 4-6 недель, т.к. волонтёров у нас сильно меньше, чем городских озеленителей, занимающихся вырубкой. Отснять текущее состояние улицы может один человек за несколько минут на машине или за несколько час пешком. И тогда на руках уже будет материал, который позволит визуально оценить состояние деревьев.

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

Я нашёл для экспериментов камеру Insta360 X3, чтобы понять насколько этот подход работает на практике, прежде чем покупать камеру. У камеры есть два основных режима работы.

Интервальное фото

Этот режим лучше всего подходит для пешеходной съёмки. В этом режиме камера делает один снимок раз в 3 секунды, в максимально возможном разрешении (11968×5984 или 72MP) и сохраняет пачку фотографий. При средней скорости ходьбы получается один кадр каждые 4 метра, чего вполне достаточно для маппинга. Детализация получается достаточная, чтобы на снимках можно разглядеть серьёзные повреждения, определить вид дерева, зафиксировать его общий вид.

Каждый файл .insp представляет из себя JPEG с двумя круглыми изображениями, с передней и задней линизы, и кучей метаданных.

360 raw photo

В сыром виде они не слишком пригодны для использования: нужно конвертировать с помощью Insta360 Studio. На выходе получается уже более понятное изображение в "равнопромежуточной" проекции, стандартной для всех сервисов, работающих с 360 изображениями. Попутно все изображения выравниваются вертикально и по компасу.

360 raw photo

GPS координаты в режиме интервального фото камера не пишет вообще, их надо собирать отдельно. Я использовал GPS Logger. Полученные от Insta360 Studio файлы сложил в папку converted, рядом положил трек в GPX, и прописал координаты в картинки:

exiftool -geotag "$GPX_FILE" "-geotime<"'${DateTimeOriginal}+04:00' -overwrite_original converted/

В целом, это всё. Получается папка с потэганными картинками. Её можно грузить сразу в Mapillary Desktop Uploader, удалить лишние и выгрузить в облако.

Интервальное видео

Этот режим больше подходит для съёмки с машины, велосипеда, самоката. Камера пишет видео в разрешении 7680×3840 (8K, 29MP) с интервалом 0.2 сек, то есть 5 кадров в секунду. На средней для города скорость 40 км/ч получается один кадр каждые 2,2 метра, чего вполне достаточно для нужд маппинга. На выходе получается ускоренное видео, с которым надо поработать, чтобы подружить его с GPS треком, но это всё легко автоматизируется. Я написал для себя скрипты на питоне, которые автоматизируют большую часть работы.

После обработки видео получается такая же пачка JPEG файлов с координатами. Я перепроверил их координаты и почистил от мусора в Photini, потом загрузил в Mapillary.

Некоторые выводы

В целом я склоняюсь к тому, чтобы работать с видео таймлапсом.

  • Он применим и для пешей, и для автомобильной съёмки, меньше разных операций нужно выполнять.
  • Он есть на всех 360 камерах, в отличие от интервального фото.
  • Формально разрешение разное, но по факту, отличить широколистный вяз от мелколистного не получится даже на 72 мегапикселях, а расположение дерева и общий его вид хорошо понятны и в 29 мегапикселях.
  • Mapillary как платформа, в целом, хороша, но для целевой карты нужно что-то своё, где будет не мешанина из треков, а только один самый свежий для каждой улицы, с возможностью просмотреть архив. Это план на какое-то очень далёкое будущее.

Обнаруженные проблемы

Качество GPS. Камера не имеет собственного GPS приёмника (что в целом типично для 360 камер). Её можно подключить к телефону и она кое-как будет записывать координаты, но результаты у меня получились ужасные. Гораздо практичнее придерживаться подхода когда GPS трек пишет отдельное устройство, в моём случае — телефон и GPS Logger.

Расползание времени. Записанное камерой время создания файла не подходит для последующей синхронизации с GPS. У меня, например, оно не только на 9 секунд отличалось от времени начала записи, но ещё и часовой пояс камера прописала неправильно (сохранила местное время под видом UTC). Лучшее решение — при включении записи показать время на устройстве, которое пишет GPS (у меня это телефон), в идеале в первом же кадре. Тогда можно будет прописать в файл корректное точное время:

DATE="2026-02-26T08:53:17.000000Z" exiftool -CreateDate="$DATE" -ModifyDate="$DATE" -TrackCreateDate="$DATE" -MediaCreateDate="$DATE" src/stretched.mp4