Удаление слабых теней от облаков в аэрофотосъёмке и фотограмметрии
Автор: Серженко Фёдор
Tags: Аэрофотосъёмка, Фотограмметрия, Удаление теней от облаков, Aerial Clarity, CUDA, GPU
При работе с исходными данными существуют проблемы с тенями облаков на кадрах, полученных в приложениях аэрофотосъёмки и фотограмметрии. Облака отбрасывют тени на ландшафт, затемняя различные объекты и это мешает в работе. Это неизбежно, и мы часто получаем изображения с тенями, поэтому имеет смысл удалить тени, чтобы подготовить данные для картографирования и 3D-визуализации.
Каков стандартный метод удаления облачных теней при обработке изображений? Как правило, нужно создать маску и применить фильтр к определенной области кадра, например, к затенённой области. В качестве альтернативы можно выделить объекты, на которые фильтр не должен воздействовать. Это можно сделать и в разных слоях. Тем не менее, это ручной подход, который работает очень медленно и неточно. Кроме того, тени часто не имеют чётких границ, что затрудняет определение границ маски и последующее ееё плавное нанесение на изображение.
Алгоритм Aerial Clarity основан на классических идеях обработки изображений; мы не используем машинное обучение (ML) или искусственный интеллект (AI). Этот алгоритм хорошо подходит для удаления слабых теней, у которых обычно отсутствует чёткая граница. Предварительные тесты показывают, что реализация этого алгоритма с условием максимального распараллеливания на NVIDIA GeForce RTX 4090 даёт производительность порядка 5-7 ГПикс/с и более для 16-битных RGB-изображений с высоким разрешением. В настоящее время такая скорость работы принципиально невозможна для любой системы на базе искусственного интеллекта.
Важно отметить, что этот алгоритм применим только к мягким теням от облаков. Он не предназначен для подавления глубоких теней. На примеденном ниже изображении показан пример мягких теней и результат обработки.

Слева исходное изображение в формате JPG (150 мегапикселей, камера PhaseOne iXM-RS 150F)
Справа результат обработки с помощью алгоритма Aerial Clarity
Характеристики алгоритма
- Автоматическое удаление облачных теней на аэрофотоснимках (только мягкие тени)
- Разрешение изображения не ограничено, одна из самых больших матриц имеет 245,7 мегапикселей (IMX811 с разрешением 19200 × 12800)
- Высокая производительность благодаря реализации параллельного алгоритма на CUDA
В отличие от подходов ИИ, которые требуют обучающих данных и часто имеют дело с обобщенными типами теней, классический подход к задачам компьютерного зрения основан исключительно на характеристиках изображений на уровне пикселей, статистике и детерминированной фильтрации.
- Положительные моменты:
- Программа работает очень быстро на графических процессорах NVIDIA даже при очень высоком разрешении изображений
- Нет необходимости в сборе данных, аннотировании и обучении, нет зависимости от больших размеченных наборов данных
- Надёжность при удалении или ослаблении мягких и рассеянных теней, которые характерны для аэрофотосъёмки и фотограмметрии
- Недостатки:
- Алгоритм неприменим к глубоким теням
- Удаление теней может привести к появлению незначительных следов на изображении
- Алгоритм менее адаптивен к сложным, изменяющимся типам теней по сравнению с методами искусственного интеллекта
Удаление теней с помощью решений на базе ИИ, хотя и является потенциально более гибким методом, часто требует тщательной подготовки и может быть затруднено при работе с новыми сценами или с другими типами теней. Для крупных проектов по аэрофотосъёмке и фотограмметрии, где скорость и надёжность имеют решающее значение, классические методы являются эффективным решением.
Возможности программного обеспечения
- Входные/выходные форматы: 8 бит JPG или 8/16-бит TIFF
- Управление силой подавления теней
- Обработка одиночных кадров и/или серий изображений
- Возможно сжатие на видеокарте по алгоритмам JPEG или JPEG2000 с очень высокой производительностью
- OS Windows-10/11, Linux Ubuntu / L4T (Jetson Xavier/Orin)
- Совместимость со всеми видеокартами NVIDIA GPUs (Jetson, GeForce, Quadro), CUDA-12.6
Предварительные бенчмарки для алгоритма подавления теней
- Разрешение исходного кадра: 14204 × 10652 (150 МПикс, камера Phase One iXM-RS 150F), формат JPG
- Условия теста: все данные находятся в памяти видеокарты, измерения времени включают только операции на видеокарте
- Параметры для удаления теней: по умолчанию
- Софт: Windows-11, CUDA-12.6
- Железо: AMD Ryzen9 7950X (16 ядер, 4.5–5.7 ГГц), NVIDIA GeForce RTX 4090
- Время обработки на цпу: 25 секунд (пока нет оптимизации)
- Время работы на видеокарте: 20-25 мс
Дополнительные материалы
- Почему фотограмметрия начинается с RAW: обработка исходных кадров на GPU — полный конвейер, частью которого является удаление теней от облаков
- Софт для аэрофотосъёмки — описание решения, форматы, системные требования
- Tonemap — адаптивный локальный контраст на видеокарте NVIDIA