Почему фотограмметрия начинается с RAW: обработка исходных кадров на GPU
Автор: Серженко Фёдор
Tags: Аэрофотосъёмка, Фотограмметрия, Обработка RAW, ALTMapper, CUDA, GPU
Когда ортофотоплан получается недостаточно точным, причину чаще всего ищут в настройках фотограмметрического ПО. Но Agisoft Metashape, Pix4D и RealityCapture работают ровно с тем материалом, который им дали: они не могут извлечь признаки оттуда, где деталей уже нет. Если в тенях на кадре ничего не видно, если дымка съела контраст, если часть маршрута снята с другой экспозицией — эти потери произошли до запуска фотограмметрии, и внутри неё они уже не восстанавливаются.
Поэтому этап между камерой и фотограмметрическим ПО — не техническая формальность, а место, где реально определяется качество итоговой карты. Ниже — о том, что именно происходит с кадром на этом этапе, и почему обработку имеет смысл начинать с RAW, а не с камерного JPEG.

Типичный кадр аэрофотосъёмки: длинные тени от деревьев ложатся поперёк дороги. Всё, что попало в эти тени, фотограмметрическое ПО увидит ровно настолько, насколько его вытянули при обработке
Что теряется до фотограмметрии
Кадры с БПЛА и пилотируемых носителей почти всегда несут на себе объективные проблемы съёмки, и каждая из них бьёт по конкретному месту в фотограмметрическом конвейере.
Глубокие тени. Объекты и рельеф в затенённых участках малозаметны. Алгоритмы сопоставления признаков опираются на видимый локальный контраст, поэтому из тёмных областей извлекается заметно меньше надёжных точек — а значит, эти участки хуже привязываются к соседним кадрам.
Дымка и тени от облаков. Атмосферная дымка снижает локальный контраст, движущиеся тени облаков меняют яркость одного и того же участка от кадра к кадру. И то и другое ухудшает сопоставление.
Неравномерная экспозиция вдоль маршрута. Освещённость меняется в течение полёта, и отдельные кадры оказываются пере- или недоэкспонированными — «выпадают» из общего ряда. Обычно такие кадры отбирают и правят вручную, что тормозит пакетную обработку всего массива.
Камерный JPEG вместо RAW. Внутрикамерная обработка принимает решения за вас — со своим шумоподавлением, своей демозаикой и своей тональной кривой, — и делает это до того, как кадр попадёт к вам. Часть информации, которая была в сыром сигнале сенсора, к этому моменту уже необратимо потеряна.
Каждая из проблем по отдельности кажется терпимой. Вместе они снижают число точек для сшивки и точность итоговых карт, а в худшем случае приводят к самому дорогому исходу во всём процессе — повторному вылету.
Обработка RAW на GPU: что делает конвейер
Фаствидео разрабатывает ПО для быстрой обработки изображений на видеокартах NVIDIA по технологии CUDA. Для аэрофотосъёмки и фотограмметрии мы используем связку из двух продуктов: Fast CinemaDNG Processor — полный конвейер обработки RAW/DNG на GPU — и ALTMapper — модуль адаптивного локального контраста.
Обработка идёт от сырых данных сенсора и выполняется целиком на видеокарте: от распаковки RAW и вычитания тёмнового кадра — через выравнивание яркости, демозаику высокого качества, индивидуальную экспокоррекцию, шумоподавление и цветокоррекцию — до адаптивного локального контраста ALTMapper и сжатия в JPEG или TIFF. Для итоговой карты важен, однако, не столько сам перечень операций, сколько то, в каком порядке и над какими данными они выполняются. Полную последовательность этапов по шагам, поддерживаемые форматы и системные требования мы собрали на странице «Софт для аэрофотосъёмки»; здесь важнее разобраться, почему это вообще работает.
Принципиальный момент — порядок. Демозаика, шумоподавление и тональная обработка выполняются над данными с полной разрядностью, а не над уже сжатым 8-битным JPEG, в котором часть информации отсутствует. Расчёты идут с 32-битной точностью ISP, результат сохраняется в 16 бит. Именно поэтому обработка «с RAW» даёт другой результат, а не просто другой порядок тех же операций.
Работает это независимо от модели камеры: поддерживаются RAW-форматы SONY, Nikon, Canon, Olympus, открытые DNG и CinemaDNG, а также RAW камер машинного зрения — XIMEA, Basler, Hikrobot, Lucid, FLIR.
Локальный контраст — и почему без ИИ
Отдельного разговора заслуживает ALTMapper — этап, на котором кадр приобретает информативность, критичную для сопоставления признаков.
ALTMapper восстанавливает детали в тенях, не разрушая структуру светлых участков; управляет глобальным, локальным и микроконтрастом; ослабляет атмосферную дымку; корректирует точку чёрного; выравнивает освещение по кадру. Применять его можно двумя способами — как встроенный этап внутри GPU-конвейера Fast CinemaDNG Processor или как внешнюю программу, уже к готовым кадрам, перед их передачей в фотограмметрическое ПО. Второй вариант удобен, если менять существующий конвейер обработки не хочется.

Слева исходный кадр, справа результат работы ALTMapper: глубокие тени стали светлее, теней от облаков на поле больше нет
Это классический детерминированный алгоритм: никаких нейросетей. Для фотограмметрии это не идеологический выбор, а требование к результату:
- Алгоритм работает исключительно с реальными пикселями исходного кадра и ничего не «дорисовывает»: он не создаёт текстуру, которой в кадре не было, и не меняет геометрию признаков — а именно на них строится вся последующая привязка
- Повторная обработка того же снимка всегда даёт в точности тот же результат, что важно для воспроизводимых и аттестуемых процессов
- Алгоритм ведёт себя одинаково предсказуемо на любой местности — плотной городской застройке, открытых ландшафтах, горах, лесу, воде — без обучения или подстройки под сцену
При этом ALTMapper не вносит артефактов — ни ореолов, ни цветовых сдвигов, — и полностью сохраняет цвет и метаданные EXIF, так что выходные файлы остаются совместимы с фотограмметрическим ПО.
Частный, но важный сценарий — подавление теней от лёгких облаков; ему посвящён отдельный подробный разбор в статье «Удаление слабых теней от облаков в аэрофотосъёмке и фотограмметрии».
Дымка, точка чёрного и неравномерная яркость кадра
Усиление теней — самая заметная, но не единственная работа, которую ALTMapper делает внутри кадра. Три остальные поправки менее очевидны, а на аэрофотоснимках встречаются едва ли не чаще.
Атмосферная дымка
Съёмка с высоты почти всегда идёт сквозь толщу воздуха, и рассеянный в ней свет добавляется к полезному сигналу. Результат — молочная пелена, которая гасит локальный контраст: дальние планы и нижняя часть кадра теряют детализацию сильнее, чем ближние. Для глаза это просто «мутный кадр», а для фотограмметрии — область, из которой почти не извлекаются характерные точки.
Мы разработали свой алгоритм dehaze для более интеллектуальной работы с дымкой. Этот алгоритм предназначен именно для изображений аэрофотосъёмки, когда камера направлена перпендикулярно поверхности земли. Он отличается от стандартной математической модели дымки, но он даёт интересные результаты.
ALTMapper оценивает и вычитает вклад дымки, восстанавливая локальный контраст и резкость границ на дальних деталях. Кадр становится не просто «контрастнее»: возвращается сама фактура — границы объектов, рисунок растительности, линии дорог, — то есть ровно то, за что цепляются алгоритмы сопоставления признаков.

Слева исходный кадр (14192 × 10640, 151 МПикс), справа результат обработки ALTMapper: дымка убрана, вернулись фактура растительности и границы объектов
Коррекция точки чёрного
Дымка и паразитная засветка осветляют кадр: самые тёмные участки кадра перестают быть по-настоящему тёмными. Из-за этого весь тональный диапазон сжимается, и весь кадр выглядит малоконтрастным. В простейшем варианте ALTMapper корректирует точку чёрного, сдвигая гистограмму влево, а также после этого усиливает тени, что положительно сказывается на визуальном восприятии результата обработки.
Выравнивание яркости по кадру
Яркость редко бывает одинаковой по всему кадру, и причин обычно две. Первая — оптическая: спад яркости к краям кадра, виньетирование объектива. Вторая — сцена: освещение внутри одного кадра само по себе неравномерно, например склон освещён, а долина в полутени.
Для одиночного снимка это косметический дефект, а для фотограмметрии — системная проблема. При съёмке с перекрытием одна и та же точка местности попадает в центр одного кадра и на край соседнего, и из-за виньетирования она имеет там разную яркость. Сопоставление признаков от этого становится менее надёжным, а на готовом ортофотоплане проступает характерный «сотовый» рисунок — видны границы отдельных кадров.
Обе причины устраняются, но на разных этапах. Виньетирование объектива снимается в самом начале RAW-конвейера (шаг 2 в списке выше), когда данные ещё линейны и спад яркости описывается простой моделью — это классическая flat-field коррекция. Неравномерность освещения самой сцены убирает уже ALTMapper: он обрабатывает каждую область кадра сбалансированно, выравнивая освещение по кадру и не разрушая при этом локальный контраст. Порядок здесь принципиален: пытаться исправить виньетирование после тональной обработки — значит бороться со следствием.

Слева исходный кадр: заметен спад яркости к краям — углы примерно на треть темнее центра. Справа после ALTMapper: яркость выровнена по всему полю кадра, фактура читается и в углах.
Все четыре поправки — тени, дымка, точка чёрного и яркость по кадру — действуют внутри одного кадра. Отдельный вопрос — согласовать между собой кадры всего маршрута.
Индивидуальная экспокоррекция вместо ручной правки
«Выпавшие» по экспозиции кадры — отдельная головная боль пакетной обработки: массив нельзя прогнать одним пресетом, потому что часть кадров после него окажется испорчена, и приходится вручную отбирать проблемные и править их по одному.
Fast CinemaDNG Processor применяет индивидуальную коррекцию экспозиции при обработке всей серии: освещённость выравнивается по всему массиву автоматически. Фотограмметрическое ПО получает единообразный, предсказуемый входной материал, а ручной этап из процесса просто исчезает.
Сколько это стоит по времени
Главное возражение против ещё одного этапа в конвейере — «он всё замедлит». На видеокарте оно снимается: полный конвейер RAW→JPEG для 65-мегапиксельного кадра проходит примерно за 32 мс — это 60–70 кадров в секунду, и в эти миллисекунды уже уложены демозаика высокого качества, шумоподавление, тональная обработка и сжатие. Сам ALTMapper успевает работать в реальном времени даже на бортовом модуле NVIDIA Jetson AGX Orin. Иначе говоря, качественная подготовка кадров перестаёт быть отдельной длительной стадией — она растворяется в общем времени обработки.
Развёрнутые бенчмарки по каждому модулю (демозаика, ALTMapper, кодеки JPEG и JPEG2000) и методику измерений мы держим на странице «Софт для аэрофотосъёмки». Все цифры воспроизводимы — их можно проверить на своём GPU на демо-версии.
Измеримый эффект
Всё вышесказанное имеет смысл ровно в той мере, в какой оно меняет итоговые цифры. Один из наших заказчиков перевёл свой процесс на полную обработку RAW на GPU — с ALTMapper и индивидуальной экспокоррекцией — и результат оказался вполне конкретным. Число точек для сшивки (tie points) выросло примерно на треть: более информативные кадры дали алгоритмам сопоставления больше, за что зацепиться, и привязка соседних снимков стала надёжнее. Повторных вылетов стало примерно на пятую часть меньше — а именно пересъёмка из-за брака по качеству исходников остаётся самой дорогой статьёй в аэрофотосъёмке. И сами ортофотопланы вышли точнее — просто потому, что на вход фотограмметрии пошёл заметно более чистый материал.
Попробовать на своих данных
Проверить всё это на бумаге невозможно — эффект зависит от вашей камеры, вашей местности и ваших условий съёмки. Поэтому мы предлагаем бесплатное демо: вы обрабатываете собственные RAW-снимки на собственном GPU и сравниваете результат в вашем фотограмметрическом ПО.
Подробное описание решения, поддерживаемые форматы и системные требования — на странице «Софт для аэрофотосъёмки». Запросить демо, техническую документацию и консультацию можно через форму ниже.
Дополнительные материалы
- Софт для аэрофотосъёмки — описание решения, форматы, системные требования
- ALTMapper — адаптивный локальный контраст на видеокарте NVIDIA
- Удаление слабых теней от облаков в аэрофотосъёмке и фотограмметрии
- Быстрые классические алгоритмы обработки изображений на CUDA
- Фаствидео СДК — полная библиотека обработки изображений на GPU
Проверьте скорость сами — наши цифры воспроизводимы на вашем GPU.