Перейти к основному содержимому

API ReconstructFull

ReconstructFull — это самый простой и удобный интерфейс полной реконструкции, подходящий для быстрого запуска проектов и новых пользователей. Он автоматически обрабатывает полный рабочий процесс извлечения метаданных изображений, вычисления воздушной триангуляции и 3D-реконструкции.

🎯 Особенности Интерфейса

  • Высокая степень автоматизации: Автоматически читает GPS и информацию о камере из EXIF изображений
  • Простая конфигурация: Минимально необходимо только указать путь к изображениям
  • Всё в одном: Генерирует финальные результаты непосредственно из изображений
  • Интеллектуальная оптимизация: Автоматически выбирает оптимальные параметры обработки

📋 Детали Параметров

Обязательные Параметры

Имя ПараметраТипОписаниеПример Значения
license_idintID лицензии SDK9200
working_dirstringПуть к рабочему каталогу"C:/Projects/MyProject"
gdal_folderstringКаталог данных GDAL"C:/MipMap/SDK/data"
coordinate_systemobjectВходная система координатСм. описание ниже
image_meta_dataarrayСписок изображенийСм. описание ниже
input_image_typeintТип изображения1=RGB, 2=Мультиспектральный, 3=Инфракрасный
resolution_levelintУровень точности1=Высокий, 2=Средний, 3=Низкий

Опциональные Параметры - Управление Выводом

Имя ПараметраТипЗначение по УмолчаниюОписание
generate_objboolfalseГенерировать модель формата OBJ
generate_plyboolfalseГенерировать модель формата PLY
generate_osgbboolfalseГенерировать формат OSGB (косая фотография)
generate_3d_tilesboolfalseГенерировать 3D Tiles (Cesium)
generate_lasboolfalseГенерировать облако точек LAS
generate_pc_plyboolfalseГенерировать облако точек PLY
generate_pc_osgbboolfalseГенерировать облако точек OSGB (LOD)
generate_pc_pntsboolfalseГенерировать облако точек PNTS (3D Tiles)
generate_geotiffboolfalseГенерировать ортофото
generate_tile_2DboolfalseГенерировать 2D тайлы
generate_2D_from_3D_modelboolfalseГенерировать ортофото из 3D модели

Опциональные Параметры - Система Координат

Имя ПараметраТипЗначение по УмолчаниюОписание
coordinate_system_3dobjectLocal/LocalENUВыходная 3D система координат
coordinate_system_2dobjectLocalENUВыходная 2D система координат

Опциональные Параметры - Расширенные Функции

Имя ПараметраТипЗначение по УмолчаниюОписание
gcp_pathstring-Путь к файлу контрольных точек
gcp_coor_sysobject-Система координат контрольных точек
use_image_position_constraintbooltrueИспользовать ограничение позиции изображения
fast_modeboolfalseБыстрый режим (пониженное качество)
min_avali_memory_sizefloat16.0Минимальный размер доступной памяти (ГБ)
output_block_change_xmlboolfalseВывод Block Exchange XML

📝 Детали Структур Данных

Объект coordinate_system

{
"type": 2, // 1=Проекция, 2=Географическая, 3=Геоцентрическая
"type_name": "Geographic",
"label": "WGS 84", // Название системы координат
"epsg_code": 4326 // Код EPSG
}

Элементы массива image_meta_data

Базовый формат (автоматическое чтение EXIF)

{
"id": 1, // Уникальный идентификатор
"path": "C:/Images/DJI_0001.JPG", // Путь к изображению
"group": "camera_1" // Опционально: группировка камеры
}

Полный формат (пользовательские метаданные)

{
"id": 1,
"path": "C:/Images/IMG_0001.JPG",
"group": "nadir", // Имя группы камеры
"meta_data": { // Пользовательские метаданные
"width": 6000, // Ширина изображения (пиксели)
"height": 4000, // Высота изображения (пиксели)
"pos": [114.123456, 22.123456, 100.5], // [Долгота, Широта, Высота]
"pos_sigma": [0.05, 0.05, 0.10], // [Точность X, Точность Y, Точность Z] (метры)
"focal_length": 24.0, // Фокусное расстояние (миллиметры)
"pixel_size": 0.00391 // Размер пикселя (миллиметры)
}
}

Параметр группировки камеры (group)

Используется для мультикамерных систем, для обработки изображений с разных камер в группах:

"image_meta_data": [
{"id": 1, "path": "nadir/IMG_001.jpg", "group": "nadir"},
{"id": 2, "path": "nadir/IMG_002.jpg", "group": "nadir"},
{"id": 3, "path": "oblique_f/IMG_001.jpg", "group": "oblique_forward"},
{"id": 4, "path": "oblique_b/IMG_001.jpg", "group": "oblique_backward"},
{"id": 5, "path": "oblique_l/IMG_001.jpg", "group": "oblique_left"},
{"id": 6, "path": "oblique_r/IMG_001.jpg", "group": "oblique_right"}
]

Распространенные сценарии группировки:

  • Пятиобъективная косая камера: nadir, oblique_forward, oblique_backward, oblique_left, oblique_right
  • Двухкамерная система: wide_angle, telephoto
  • Многодроновое сотрудничество: drone_1, drone_2, drone_3
  • Многовременная: morning, afternoon

Объяснение параметров pos и pos_sigma

Параметр pos:

  • Формат: [Долгота, Широта, Высота] или [X, Y, Z] (в зависимости от системы координат)
  • Единица: Градусы и метры для географической системы, метры для проекционной системы
  • Назначение: Переопределить GPS информацию в EXIF или предоставить позицию для изображений без GPS

Параметр pos_sigma:

  • Формат: [σ_X, σ_Y, σ_Z]
  • Единица: Метры
  • Значение: Стандартное отклонение измерения позиции в каждом направлении (1σ)
  • Назначение: Используется как вес в оптимизации воздушной триангуляции, более высокая точность (меньше σ) означает больший вес

Типичные значения:

Метод Позиционированияσ_X/σ_Yσ_ZОписание
RTK фиксированное решение0.02-0.05m0.05-0.10mМаксимальная точность
PPK постобработка0.03-0.08m0.08-0.15mВысокая точность
Обычный GPS2-5m3-8mСтандартная точность
Ручная оценка0.5-2m1-3mНизкая точность

📝 Примеры Конфигурации

Минимальная Конфигурация

{
"license_id": 9200,
"working_dir": "C:/Projects/QuickStart",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},
"image_meta_data": [
{"id": 1, "path": "C:/Images/DJI_0001.JPG"},
{"id": 2, "path": "C:/Images/DJI_0002.JPG"},
{"id": 3, "path": "C:/Images/DJI_0003.JPG"},
{"id": 4, "path": "C:/Images/DJI_0004.JPG"},
{"id": 5, "path": "C:/Images/DJI_0005.JPG"}
],
"generate_obj": true,
"generate_geotiff": true
}

Пример Конфигурации Мультикамерных Групп

{
"license_id": 9200,
"working_dir": "D:/Projects/MultiCamera",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Мультикамерная группировка изображений
"image_meta_data": [
// Надирная камера
{"id": 1, "path": "nadir/IMG_001.jpg", "group": "nadir"},
{"id": 2, "path": "nadir/IMG_002.jpg", "group": "nadir"},

// Передняя косая камера
{"id": 3, "path": "forward/IMG_001.jpg", "group": "oblique_f"},
{"id": 4, "path": "forward/IMG_002.jpg", "group": "oblique_f"},

// Больше групп камер...
],

"generate_osgb": true,
"generate_3d_tiles": true
}

Пример Пользовательской POS Конфигурации

{
"license_id": 9200,
"working_dir": "D:/Projects/PPK_Project",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Использование высокоточных PPK постобработанных данных позиции
"image_meta_data": [
{
"id": 1,
"path": "images/DJI_0001.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"pos": [114.305421, 22.596013, 120.543], // Точная позиция после PPK обработки
"pos_sigma": [0.03, 0.03, 0.05] // PPK точность
}
},
{
"id": 2,
"path": "images/DJI_0002.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"pos": [114.305512, 22.596089, 120.621],
"pos_sigma": [0.03, 0.03, 0.05]
}
}
// ... больше изображений
],

"generate_obj": true,
"generate_geotiff": true
}

Пример Полной Конфигурации (с GCP)

{
"license_id": 9200,
"working_dir": "D:/Projects/HighPrecision",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,

// Входная система координат - WGS84
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Выходная система координат - UTM
"coordinate_system_3d": {
"type": 3,
"label": "WGS 84 / UTM zone 50N",
"epsg_code": 32650
},

// Контрольные точки
"gcp_path": "D:/Projects/HighPrecision/gcps.txt",
"gcp_coor_sys": {
"type": 3,
"label": "WGS 84 / UTM zone 50N",
"epsg_code": 32650
},

// Список изображений
"image_meta_data": [
{"id": 1, "path": "D:/Data/flight1/IMG_001.JPG"},
{"id": 2, "path": "D:/Data/flight1/IMG_002.JPG"},
// ... больше изображений
],

// Генерировать все форматы
"generate_obj": true,
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_las": true,
"generate_geotiff": true,
"generate_tile_2D": true
}

💾 Структура Вывода

После завершения обработки в рабочем каталоге будет создана следующая структура:

working_dir/
├── products/ # Финальные результаты
│ ├── models/ # 3D модели
│ │ ├── model.obj # Формат OBJ
│ │ ├── model.mtl # Файл материала
│ │ ├── textures/ # Изображения текстур
│ │ └── tileset.json # 3D Tiles
│ ├── pointcloud/ # Данные облака точек
│ │ └── cloud.las # Облако точек формата LAS
│ └── orthophoto/ # Ортофото
│ ├── ortho.tif # GeoTIFF
│ └── tiles/ # Данные тайлов
├── milestones/ # Промежуточные результаты
│ ├── at_result/ # Результат воздушной триангуляции
│ ├── roi.json # Диапазон ROI
│ └── report.html # Отчет об обработке
└── log/ # Файлы журнала
└── log.txt # Подробный журнал

🎯 Рекомендации по Использованию

Подходящие Сценарии

  • ✅ Быстрое прототипирование и тестирование
  • ✅ Стандартные проекты аэрофотосъемки
  • ✅ Автоматизированная пакетная обработка
  • ✅ Обучение для начинающих

Неподходящие Сценарии

  • ❌ Необходимость тонкого контроля параметров обработки
  • ❌ Необходимость использования контрольных точек
  • ❌ Необходимость проверки промежуточных результатов
  • ❌ Специальные камеры или датчики

🔧 Продвинутые Техники

1. Пакетная обработка нескольких проектов

import json
import subprocess
from pathlib import Path

def batch_process(project_list):
for project in project_list:
# Создать конфигурацию
config = {
"license_id": 9200,
"working_dir": f"./output/{project['name']}",
"gdal_folder": "./data",
"coordinate_system": {"type": 2, "epsg_code": 4326},
"image_meta_data": [
{"id": i+1, "path": str(img)}
for i, img in enumerate(project['images'])
],
"input_image_type": 1,
"resolution_level": 2,
"generate_obj": True,
"generate_geotiff": True
}

# Сохранить конфигурацию
config_path = f"./config_{project['name']}.json"
with open(config_path, 'w') as f:
json.dump(config, f, indent=2)

# Выполнить обработку
subprocess.run([
"reconstruct_full_engine.exe",
"-reconstruct_type", "0",
"-task_json", config_path
])

2. Автоматическая оптимизация параметров

def optimize_parameters(image_count, available_memory_gb):
"""Автоматически выбирать параметры на основе размера проекта"""

# Уровень разрешения
if image_count < 100:
resolution_level = 1 # Высокая точность
elif image_count < 500:
resolution_level = 2 # Средняя точность
else:
resolution_level = 3 # Низкая точность (большие проекты)

# Форматы вывода
if available_memory_gb > 32:
formats = {
"generate_obj": True,
"generate_osgb": True,
"generate_3d_tiles": True,
"generate_las": True
}
else:
formats = {
"generate_obj": True,
"generate_las": False
}

return resolution_level, formats

3. Мониторинг прогресса

import re
import time
from threading import Thread

def monitor_progress(log_file):
"""Мониторинг прогресса обработки"""

def read_progress():
with open(log_file, 'r') as f:
f.seek(0, 2) # Перейти в конец файла
while True:
line = f.readline()
if line:
match = re.search(r'\[PROGRESS\] (\d+)%', line)
if match:
progress = int(match.group(1))
print(f"\rПрогресс: {'█' * (progress//2)}{'░' * (50-progress//2)} {progress}%", end='')
time.sleep(0.1)

thread = Thread(target=read_progress, daemon=True)
thread.start()

❓ Часто Задаваемые Вопросы

В: Почему некоторые изображения не были использованы?

О: ReconstructFull автоматически отфильтрует изображения плохого качества:

  • Размытые изображения
  • Изображения без GPS информации
  • Дублированные или очень похожие изображения

Вы можете проверить отфильтрованные изображения и их причины в журнале.

В: Как обрабатывать изображения без GPS?

О: Для изображений без GPS информации вам нужно:

  1. Использовать интерфейс ReconstructAT (поддерживает обработку без GPS)
  2. Или вручную добавить GPS информацию в EXIF
  3. Или использовать внешний POS файл
В: Недостаточно памяти при обработке большого проекта?

О: Решения:

  1. Уменьшить resolution_level до 2 или 3
  2. Уменьшить количество одновременно генерируемых форматов вывода
  3. Использовать блочную обработку (требует других интерфейсов)

🔗 Связанные Ссылки

  • Детали систем координат
  • Описание метаданных изображений
  • Сравнение форматов вывода
  • Интерфейс ReconstructAT (больше контроля)

ReconstructFull — лучший выбор для начала использования MipMapEngine SDK. По мере накопления опыта вы можете исследовать другие интерфейсы для большего контроля.