Любительская аэрофотосъёмка в OSM. Часть 2

Sep 16, 2020 01:50

Аэрофотосъёмка




Планирование маршрута

Для того чтобы получить хороший результат - нужно озаботиться получением хорошего исходного материала. Чтобы программа обработки могла восстановить точную карту высот из снимков для получения ортофотоплана - нужно сделать множество снимков с перекрытием с разных ракурсов. Оптимальнее всего получается летать по маршруту в виде “змейки” на одной и той же высоте, равномерно делая снимки по всей площади. Камера при этом должна быть направлена вниз (в надир). Иногда делают дополнительные снимки под углом, но это больше нужно для построения 3D-моделей и лучшей проработки фасадов зданий, для ортофотоплана (где фасады не отображаются) оно избыточно.


Есть несколько программ планирования и управления полёта, как платных, так и бесплатных. Я в основном пользуюсь программой Litchi, там нет автоматического построения маршрута (рисовать его придётся полностью вручную), но в остальном довольно удобная программа. Есть и полностью автоматические программы, например DroneDeploy и Pix4Dcapture, там можно просто обвести интересующий район, выбрать параметры полёта (высоту и перекрытие) и нажать на старт - всё остальное она сделает сама. Однако мониторинг и управление в процессе полёта там довольно убогие и в случае возникновения проблем придётся переключаться на другие программы управления.
Выбор параметров полёта

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

Одним из главных параметров маршрута является высота полёта. Чем выше - тем большую площадь на земле охватывает снимок, меньше перспективные искажения, меньше влияние наземных помех, но тем и меньше итоговое разрешение снимка. Для оценки разрешения используют термин ground sampling distance (GSD), которое оценивается как расстояние между соседними пикселями изображения на уровне земли.


Для его определения можно воспользоваться одним из калькуляторов (например https://support.pix4d.com/hc/en-us/articles/202560249-TOOLS-GSD-calculator), либо можно просто грубо оценить по формуле GSD = H/Fpix, где H - высота полёта, а Fpix - фокусное расстояние в пикселях.

Фокусное расстояние в пикселях показывает Agisoft Metashape в диалоге калибровки, для кадра 3:2 его можно примерно вычислить как Fpix = Wpix * F35mm/36, где Wpix - ширина кадра в пикселях, а F35mm - фокусное расстояние в 35 мм эквиваленте (константа 36 в формуле - это ширина стандартного кадра для 35-мм фотоплёнки). На примере Mavic 2 Pro: Fpix = 5472*28/36 = 4256.

В реальности истинное фокусное расстояние будет отличаться от этих цифр, одна из задач обработки - вычислить корректное значение этих параметров. Например, для моего экземпляра Mavic 2 Pro оно оказалось в районе 4342 ± 7 (вычисленное значение колеблется от полёта к полёту).

Таблица приблизительного разрешения для разных высот для некоторых коптеров:

КоптерFpixВысота полёта, мРазмер снимка на уровне земли, мGSD, см/pix
Mavic 2 Pro4256100
200
300
500129x86
257x171
386x257
643x4292
5
7
12
Phantom 3 Advanced2311100
200
300
500173x120
346x240
519x360
865x6004
9
13
22
Phantom 4 Pro3648100
200
300
500157x100
315x200
472x300
787x5003
5
8
14

Этот размер пикселя соответствует разрешению снимка для центра кадра. До краёв кадра в силу геометрии расстояния больше и соответственно разрешение пропорционально уменьшается. Плюс к этому объективы у коптеров конечно не идеальны и имеют довольно значительную дисторсию и виньетирование. Софт коптера про это знает и автоматом корректирует их при формировании jpeg. Если же сделать снимок в raw-формате и отключить встроенный профиль объектива - можно увидеть что на самом деле видит сенсор камеры. Пример одного и того же кадра в raw (dng) и jpeg:



Этак коррекция конечно не проходит бесследно и из-за неё дополнительно уменьшается разрешение по краям кадра. Кроме того, разрешение самого объектива зависит от выбранной диафрагмы и как правило меньше разрешения матрицы.

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

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


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

Продольное перекрытие регулируется при помощи выбора скорости полёта коптера и интервала с которым делаются снимки. Минимальный интервал зависит от коптера и режима съёмки. Для Mavic 2 Pro он составляет 2 секунды при съёмке в JPEG и 5 секунд для DNG. Максимальная скорость полёта зависит от коптера и условий съёмки. Если освещение не очень яркое и высота полёта небольшая - быстро летать не следует. К примеру, при скорости в 15 м/с и интервале снимков в 5 секунд между снимками коптер успеет переместиться на 75 метров, что для высоты съёмки в 100 м даст продольное перекрытие всего в 13% чего явно недостаточно. Кроме того, на высокой скорости и низкой высоте может появиться смаз изображения, если за время выдержки коптер успеет сместится на дистанцию более размера 1 пикселя. Поэтому же обычно не стоит летать при низкой освещённости - большая выдержка потребует совсем черепашьей скорости полёта или вообще остановки в точках фотографирования, иначе изображение будет смазанным. Можно, конечно, увеличить чувствительность (поднять ISO) для сокращения выдержки, но это приведёт к увеличению шумов на изображении, поэтому этим увлекаться не стоит.

Поперечное перекрытие задаётся при помощи выбора расстояния между параллельными линиями маршрута. Чем меньше это расстояние - тем больше перекрытие, но и тем меньше общая площадь съёмки за один полёт.

Стандартным минимумом для съёмки с коптеров считается 60% перекрытия. Но есть важный нюанс - этот минимум для самой высокой точки снимаемых объектов. Если снимаются невысокие объекты (например одноэтажные здания в сельской местности) - их высота обычно не превышает десятка метров, поэтому в расчёте их можно не учитывать. Но в городской застройке часто встречаются куда более высокие объекты, типовая 9-ти этажка - уже метров 30, 16-ти этажка - 50, а некоторые здания и трубы иногда и более сотни метров, что уже может быть сравнимо с высотой полёта. Для иллюстрации, в чём тут причина, дело в банальной геометрии:


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


У здания слева нормально проработался только низ, а вот верхние этажи - нет, что приводит к искажениям формируемой карты высот и соответственно кривому ортофотоплану для этих зданий. Чтобы этого избежать - нужно или поднимать высоту съёмки или делать снимки более часто, чтобы в результате увеличить процент перекрытия, чтобы и для верхних этажей его было достаточно.
Выбор места взлёта/посадки

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

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

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

Пример такого маршрута:



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

У некоторых программ управления (например в Litchi) при срабатывании автовозврата и наличии связи с пультом выдаётся запрос и даётся несколько секунд на возможную отмену. Но нужно быть внимательным при этом, т.к. когда заряд падает ниже определённого процента - коптер останавливает программу уже без всяких запросов и включает автопосадку. Этот процент зашит в настройках коптера (обычно в районе 15%), и иногда его можно уменьшить или вообще отключить при помощи специальных хакерских программ.
Глушилки GPS



Несколько лет назад этой проблемы не было - можно было спокойно пустить коптер в полёт по автономному маршруту и он без проблем летал себе и делал снимки независимо от наличия связи. Первый звоночек был в мае 2018, незадолго до чемпионата мира по футболу. В один из полётов коптер (тогда это был Phantom 3 Advanced) неожиданно потерял спутники, остановил программу и перешёл в режим зависания, при этом его начало постепенно сносить в сторону ветром. А так как связи с пультом не было (закрывали дома), через 15 секунд включился режим автоматической посадки и коптер начал садиться. Потом помеха пропала, сработал автовозврат и аппарат вернулся на точку старта (это я постфактум восстановил картину произошедшего по логам коптера). В те дни в Питере как раз проходил экономический форум, так что я тогда подумал что это из-за него глушилки использовали.

Дальше всё было более/менее спокойно, пока не наступил 2020 год. Проблемы начались практически сразу, первый сбой был в конце февраля, и затем уже практически в каждый день полётов, хотя бы разок да сбойнёт, а иногда и по несколько раз. Сами помехи относительно кратковременные, максимум на пару минут, но из-за них становятся недоступными автоматические режимы полёта + коптер перестаёт отображаться на карте, что затрудняет управление. Само управление с пульта при этом обычно не пропадает (как было бы при целенаправленном глушении коптеров), поэтому можно продолжать управлять коптером вручную, главное не потерять при этом ориентацию.

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



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

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



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



И как только она повернула и отъехала метров на 300 - приём спутников восстановился.

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

Квадрокоптеры, openstreetmap, Аэрофотосъёмка

Previous post
Up