Построение 3D-карт из данных LiDAR с помощью ИИ
Аэросъёмка LiDAR даёт облако точек: 50–200 точек на квадратный метр, каждая с координатами XYZ и интенсивностью возврата. Из этих данных нужно извлечь структурированную информацию — здания, деревья, дороги, рельеф — и построить точную 3D-модель территории. Алгоритмы классического point cloud processing работают, но медленно и с множеством edge cases. ИИ ускоряет и автоматизирует этот пайплайн.
Стадии обработки LiDAR данных
1. Нормализация и фильтрация шума — удаление выбросов (птицы, артефакты), нормализация высот относительно DTM (цифровой модели рельефа). Open3D, PDAL — стандартные инструменты. ИИ на этом этапе: нейросетевой детектор выбросов лучше статистических методов (LOF, SOR) на сложном рельефе.
2. Классификация точек — каждой точке присваивается класс: ground, vegetation, building, water, power lines, noise. Классический алгоритм: LASTools, CloudCompare. ИИ-подход: PointNet++, RandLA-Net, KPConv.
3. Сегментация объектов — выделение отдельных зданий, деревьев, столбов из облака точек одного класса.
4. Реконструкция поверхностей — из сегментированных точек строим mesh: LoD1 (Box-model здания), LoD2 (с крышей), LoD3 (детальный фасад).
ИИ-классификация облаков точек
RandLA-Net — current state-of-the-art для large-scale outdoor scenes. Ключевое: random point sampling + local feature aggregation (LFA). Работает с 10M+ точек напрямую без воксельного разбиения.
import torch
from randlanet import RandLANet
model = RandLANet(
num_classes=8, # ground, veg_low, veg_med, veg_high, building,
# water, powerline, noise
decimation=4,
num_neighbors=16
).cuda()
# Входные данные: (B, N, 3) - координаты xyz
# Опционально: (B, N, F) - дополнительные features (интенсивность, RGB)
point_coords = torch.rand(2, 100000, 3).cuda()
features = torch.rand(2, 100000, 1).cuda() # интенсивность
logits = model(point_coords, features) # (B, N, num_classes)
На Semantic3D benchmark: mIoU = 0.927. На реальных авиационных LiDAR данных после fine-tuning — 0.89 по 7 классам (ground + vegetation уровни + building + infrastructure).
Автоматическое выделение зданий и построение LoD
После классификации: все точки класса «building» разбиваются на отдельные строения через DBSCAN clustering. Каждое строение — отдельный point cluster.
LoD1 (Block model): минимальный описывающий прямоугольник (minimum oriented bounding box) + высота из точек крыши. Полностью алгоритмический, 100% автоматизация.
LoD2 (Roof model): детекция формы крыши (flat, gabled, hipped, mansard). Классификатор PointNet++ на нормализованном roof point cloud: 93% accuracy на 8 типах крыш. Геометрическая реконструкция скатной поверхности через RANSAC plane fitting.
LoD3 (Detailed facade): требует дополнительных данных (наземные лазерные сканы или фото). Только на LoD3 видны окна, двери, архитектурные детали.
DTM и DSM
DSM (Digital Surface Model) — высота первого возврата = всё, включая растительность и здания. DTM (Digital Terrain Model) — только земля, после фильтрации объектов.
Разница DSM - DTM = nDSM (normalized Digital Surface Model) — «высота над землёй». Это основа для расчёта объёмов зданий, высоты деревьев, биомассы.
Классический алгоритм построения DTM: Progressive Densification (Axelsson). Нейросетевой фильтр CLOTH_NET: лучше на сложном рельефе (мосты, склоны, плотная растительность).
Форматы и интеграция
- LAS/LAZ — стандартный формат облаков точек
- CityGML — стандарт 3D-городских моделей (LoD1–LoD3)
- 3D Tiles (Cesium) — для веб-визуализации больших территорий
- IFC — для BIM-интеграции (строительство)
Сроки
| Площадь территории | Pipeline настройка | Обработка |
|---|---|---|
| 1–10 км² (пилот) | 3–5 недель | 1–3 дня |
| 10–500 км² (район города) | 5–8 недель | 3–14 дней |
| 500+ км² (регион) | 6–10 недель | 2–6 недель |
Стоимость рассчитывается по площади и требуемому уровню детализации (LoD).







