Zum Hauptinhalt springen

ReconstructAT - Aerotriangulation

Überblick

Die ReconstructAT-Schnittstelle wird für die Durchführung der Aerotriangulation verwendet und ist die bevorzugte Schnittstelle für professionelle Anwender, die eine feine Kontrolle benötigen. Diese Schnittstelle bietet detaillierte Parametereinstellungen und unterstützt erweiterte Funktionen wie Kamera-Gruppierung, POS-Import und Kontrollpunkt-Import.

Anwendungsszenarien
  • Benötigen feine Kontrolle über Aerotriangulations-Parameter
  • Müssen Aerotriangulations-Ergebnisse überprüfen und optimieren
  • Multi-Kamera-System-Rekonstruktion
  • Müssen Kontrollpunkte integrieren

Schnittstellennutzung

Kommandozeilen-Nutzung

reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json

Parameterbeschreibung

  • reconstruct_type: Fest als 1 (zeigt ReconstructAT an)
  • task_json: Konfigurationsdatei-Pfad

Konfigurationsparameter

Erforderliche Parameter

ParameterTypBeschreibung
license_idintSDK-Lizenzcode, einheitlich als 9200
working_dirstringArbeitsverzeichnis für Zwischendateien und finale Ergebnisse
gdal_folderstringGDAL-Datenpfad (SDK-externe Datenordner)
coordinate_systemJSONKoordinatensystem für Eingabebildpositionen
image_meta_dataJSON ArrayEingabebild-Metadateninformationen
camera_meta_dataJSON ArrayKamera-Metadateninformationen

Optionale Parameter

ParameterTypStandardBeschreibung
input_image_typeint1Bildtyp: 1=RGB, 2=Multispektral, 3=Infrarot
remove_small_partboolfalseOb kleine verbundene Komponenten aus AT-Ergebnissen entfernt werden sollen
output_tie_point_lasboolfalseOb Verknüpfungspunkte im LAS-Format ausgegeben werden sollen
output_block_change_xmlbooltrueOb AT-Ergebnisse im ContextCapture XML-Format ausgegeben werden sollen
coordinate_system_ATJSON-Koordinatensystem für XML-Format AT-Ausgabeergebnisse
fast_modeboolfalseSchnellmodus, geeignet für Daten mit GPS
use_image_position_constraintbooltrueOb Bildpositionsinformationen als Einschränkungen verwendet werden sollen
use_voc_indexbooltrueOb Bildabruf für Matching-Paar-Suche verwendet werden soll
use_spatial_indexbooltrueOb GPS-Distanz für Matching-Paar-Suche verwendet werden soll

Datenstruktur-Beschreibung

Bild-Metadaten

{
"id": 1, // Eindeutige Bild-ID
"path": "path/to/image.jpg", // Absoluter Bildpfad
"group": "camera_1", // Kamera-Gruppen-ID (optional)
"meta_data": { // Bildinformationen (erforderlich)
"width": 6000, // Bildbreite (Pixel)
"height": 4000, // Bildhöhe (Pixel)
"camera_id": 1, // Entsprechende Kamera-ID (optional, wird durch Kamera-Metadaten überschrieben, wenn 'pre_calib_param' bereitgestellt wird)
"pos": [lon, lat, alt], // Position [Längengrad, Breitengrad, Höhe]
"pos_sigma": [1.0, 1.0, 2.0], // Positionsgenauigkeit (Meter)
"orientation": [...], // Rotationsmatrix (9 Werte, optional)
"position_constant": false, // Ob Position fixiert werden soll
"relative_altitude": 100.0, // Relative Flughöhe (optional)
"focal_length_in_35mm": 24, // 35mm-äquivalente Brennweite
"pre_calib_param": [...], // Vor-Kalibrierungsparameter (optional, wird überschrieben, wenn 'focal_length_in_35mm' bereitgestellt wird)
"dewarp_flag": false // Verzerrungskorrektur-Flag (optional, aus DJI XMP-Daten)
}
}

Kamera-Metadaten

{
"id": 1, // Eindeutige Kamera-ID
"meta_data": {
"camera_name": "DJI FC6310", // Kameraname
"width": 6000, // Sensorbreite (Pixel)
"height": 4000, // Sensorhöhe (Pixel)
"parameters": [ // Kamera-Intrinsics (optional, 10-Elemente-Array, placeholder_param ist derzeit Platzhalter-Parameter)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}

Koordinatensystem

{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected, 4=ECEF
"epsg_code": 4326, // EPSG-Code (erforderlich für Geographic/Projected/ECEF)
"wkt": "...", // WKT-String (kann epsg_code ersetzen)
"origin_point": [lon, lat, alt], // LocalENU-Ursprung (nur für type=0 benötigt)
"offset": [0, 0, 0] // Versatz relativ zum Koordinatensystem-Ursprung
}

Vollständige Konfigurationsbeispiele

Basis-Aerotriangulation-Konfiguration

{
"license_id": 9200,
"working_dir": "C:/Projects/AT_Task",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "DJI FC6310",
"width": 5472,
"height": 3648
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "C:/Images/DJI_0001.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123456, 22.123456, 100.5],
"pos_sigma": [2.0, 2.0, 3.0]
}
},
{
"id": 2,
"path": "C:/Images/DJI_0002.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123556, 22.123456, 100.8],
"pos_sigma": [2.0, 2.0, 3.0]
}
}
],
"output_tie_point_las": true,
"output_block_change_xml": true
}

Multi-Kamera-Gruppenkonfiguration

{
"license_id": 9200,
"working_dir": "C:/Projects/MultiCamera_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "Camera_Nadir",
"width": 6000,
"height": 4000
}
},
{
"id": 2,
"meta_data": {
"camera_name": "Camera_Oblique",
"width": 6000,
"height": 4000
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "nadir/IMG_0001.JPG",
"group": "nadir",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 1,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [0.05, 0.05, 0.10]
}
},
{
"id": 2,
"path": "oblique/IMG_0001.JPG",
"group": "oblique_forward",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 2,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [0.05, 0.05, 0.10]
}
}
],
"fast_mode": true
}

Hochpräzisions-RTK/PPK-Konfiguration

{
"license_id": 9200,
"working_dir": "C:/Projects/RTK_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "DJI P1",
"width": 8192,
"height": 5460,
"parameters": [8839.5, 8839.5, 4096, 2730, 0, 0, 0, 0, 0, 0]
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "C:/RTK_Images/IMG_0001.JPG",
"meta_data": {
"width": 8192,
"height": 5460,
"camera_id": 1,
"pos": [114.12345678, 22.12345678, 150.123],
"pos_sigma": [0.02, 0.02, 0.05], // Hochpräzisions-RTK
"orientation": [
// 3x3-Rotationsmatrix (falls IMU-Daten verfügbar)
]
}
}
],
"use_image_position_constraint": true
}

Ausgabeergebnisse

Nach Abschluss der Aerotriangulation wird folgendes im Arbeitsverzeichnis generiert:

1. Zwischenergebnis-Verzeichnis (milestones/)

  • mvs.xml - Aerotriangulations-Ergebnisse in internem Format
  • mvs_undistort.xml - Unverzerrte Aerotriangulations-Ergebnisse
  • roi.json - Automatisch berechneter Interessensbereich
  • cs.json - Koordinatensystem-Informationen
  • tie_points.las - Verknüpfungspunkt-Wolke (falls aktiviert)

2. Export-Ergebnisse (products/AT/)

  • block_exchange.xml - ContextCapture-Format Aerotriangulations-Ergebnisse (falls aktiviert)

3. Log-Dateien (log/)

  • log.txt - Detailliertes Verarbeitungsprotokoll

ROI-Nutzungsbeschreibung

Die nach der Aerotriangulation generierte roi.json enthält drei ROI-Typen:

{
"rois": [
{
"type": "Smart", // Intelligent basierend auf spärlichen Punkten berechnet
"roi": {
"boundary": [...], // 2D-Grenzscheitelpunkte
"min_z": 100.0, // Minimale Höhe
"max_z": 200.0 // Maximale Höhe
}
},
{
"type": "Maximal", // Basierend auf Bildpositionen und spärlichen Punkten
"roi": {...}
},
{
"type": "Frustum", // Basierend auf Bild-Frustums
"roi": {...}
}
]
}

Beste Praktiken

1. Bildvorbereitung

  • Stellen Sie sicher, dass Bild-EXIF vollständige GPS-Informationen enthält
  • Empfohlene Bildüberlappung >60%
  • Vermeiden Sie unscharfe oder überbelichtete Bilder

2. Parameteroptimierung

  • Standard-GPS: Verwenden Sie Standard pos_sigma [2.0, 2.0, 3.0]
  • RTK/PPK: Setzen Sie kleinere pos_sigma wie [0.05, 0.05, 0.10]
  • Schnellmodus: Aktivieren Sie fast_mode, wenn GPS verfügbar ist

3. Multi-Kamera-Verarbeitung

  • Verwenden Sie group-Parameter zur Identifizierung verschiedener Kameras
  • Verwenden Sie unabhängige camera_id für jede Kameragruppe
  • Stellen Sie sicher, dass Kameraparameter genau sind

4. Große Datensatz-Optimierung

  • Aktivieren Sie fast_mode zur Beschleunigung der Verarbeitung
  • Erwägen Sie die Verwendung von remove_small_part zur Ergebnisbereinigung
  • Setzen Sie vernünftige Speichernutzungsgrenzen

Häufige Fragen

F: Aerotriangulation fehlgeschlagen mit "unzureichende Bildabstimmung"

A: Überprüfen Sie:

  • Ist die Bildüberlappung ausreichend (>60%)
  • Sind GPS-Informationen genau
  • Ist die Bildqualität gut

F: Wie kann die Aerotriangulations-Genauigkeit verbessert werden?

A:

  • Verwenden Sie hochpräzise POS-Daten (RTK/PPK)
  • Setzen Sie angemessene pos_sigma-Werte
  • Verwenden Sie OptimizeAT zum Hinzufügen von Kontrollpunkten

F: Wie werden Multi-Kamera-Systeme eingerichtet?

A:

  • Erstellen Sie unabhängige camera_meta_data für jede Kamera
  • Verwenden Sie group-Parameter zur Unterscheidung von Bildern verschiedener Kameras
  • Stellen Sie sicher, dass Kamera-Intrinsics genau sind

Nächste Schritte

  • Verwenden Sie OptimizeAT zur Optimierung der Aerotriangulations-Ergebnisse
  • Verwenden Sie Reconstruct3D für 3D-Rekonstruktion
  • Überprüfen Sie Grundkonzepte, um den vollständigen Workflow zu verstehen

Hinweis: ReconstructAT bietet maximale Flexibilität, erfordert aber auch mehr Parametereinstellungen. Wenn Sie nur eine schnelle Rekonstruktion benötigen, empfehlen wir die Verwendung von ReconstructFull.