Aller au contenu principal

ReconstructAT - Triangulation Aérienne

Aperçu

L'interface ReconstructAT est utilisée pour effectuer la Triangulation Aérienne (Aérotriangulation), et c'est l'interface préférée pour les utilisateurs professionnels nécessitant un contrôle fin. Cette interface fournit des paramètres détaillés et supporte des fonctionnalités avancées telles que le regroupement de caméras, l'importation POS et l'importation de points de contrôle.

Scénarios Applicables
  • Besoin d'un contrôle fin sur les paramètres de triangulation aérienne
  • Besoin de vérifier et d'optimiser les résultats de triangulation aérienne
  • Reconstruction de système multi-caméras
  • Besoin d'intégrer des points de contrôle

Utilisation de l'Interface

Utilisation en Ligne de Commande

reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json

Description des Paramètres

  • reconstruct_type: Fixe à 1 (indique ReconstructAT)
  • task_json: Chemin du fichier de configuration

Paramètres de Configuration

Paramètres Requis

ParamètreTypeDescription
license_idintCode de licence SDK, unifié à 9200
working_dirstringRépertoire de travail pour les fichiers intermédiaires et résultats finaux
gdal_folderstringChemin des données GDAL (dossier de données externes du SDK)
coordinate_systemJSONSystème de coordonnées pour les positions d'image d'entrée
image_meta_dataJSON ArrayInformations de métadonnées d'image d'entrée
camera_meta_dataJSON ArrayInformations de métadonnées de caméra

Paramètres Optionnels

ParamètreTypeDéfautDescription
input_image_typeint1Type d'image: 1=RGB, 2=Multispectral, 3=Infrarouge
remove_small_partboolfalseS'il faut supprimer les petites composantes connectées des résultats AT
output_tie_point_lasboolfalseS'il faut générer les points de liaison au format LAS
output_block_change_xmlbooltrueS'il faut générer les résultats AT au format XML ContextCapture
coordinate_system_ATJSON-Système de coordonnées pour les résultats AT de sortie au format XML
fast_modeboolfalseMode rapide, adapté aux données avec GPS
use_image_position_constraintbooltrueS'il faut utiliser les informations de position d'image comme contraintes
use_voc_indexbooltrueS'il faut utiliser la récupération d'image pour la recherche de paires de correspondance
use_spatial_indexbooltrueS'il faut utiliser la distance GPS pour la recherche de paires de correspondance

Description de la Structure de Données

Métadonnées d'Image

{
"id": 1, // ID unique d'image
"path": "path/to/image.jpg", // Chemin absolu d'image
"group": "camera_1", // ID de groupe de caméra (optionnel)
"meta_data": { // Informations d'image (requis)
"width": 6000, // Largeur d'image (pixels)
"height": 4000, // Hauteur d'image (pixels)
"camera_id": 1, // ID de caméra correspondant (optionnel, sera écrasé par les métadonnées de caméra si 'pre_calib_param' est fourni)
"pos": [lon, lat, alt], // Position [longitude, latitude, élévation]
"pos_sigma": [1.0, 1.0, 2.0], // Précision de position (mètres)
"orientation": [...], // Matrice de rotation (9 valeurs, optionnel)
"position_constant": false, // S'il faut fixer la position
"relative_altitude": 100.0, // Altitude de vol relative (optionnel)
"focal_length_in_35mm": 24, // Distance focale équivalente 35mm
"pre_calib_param": [...], // Paramètres de pré-calibration (optionnel, sera écrasé si 'focal_length_in_35mm' est fourni)
"dewarp_flag": false // Indicateur de correction de distorsion (optionnel, des données DJI XMP)
}
}

Métadonnées de Caméra

{
"id": 1, // ID unique de caméra
"meta_data": {
"camera_name": "DJI FC6310", // Nom de caméra
"width": 6000, // Largeur de capteur (pixels)
"height": 4000, // Hauteur de capteur (pixels)
"parameters": [ // Paramètres intrinsèques de caméra (optionnel, tableau de 10 éléments, placeholder_param est actuellement paramètre de remplacement)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}

Système de Coordonnées

{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected, 4=ECEF
"epsg_code": 4326, // Code EPSG (requis pour Geographic/Projected/ECEF)
"wkt": "...", // Chaîne WKT (peut remplacer epsg_code)
"origin_point": [lon, lat, alt], // Origine LocalENU (nécessaire seulement pour type=0)
"offset": [0, 0, 0] // Décalage relatif à l'origine du système de coordonnées
}

Exemples de Configuration Complète

Configuration de Base de Triangulation Aérienne

{
"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
}

Configuration de Groupe Multi-Caméras

{
"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
}

Configuration RTK/PPK Haute Précision

{
"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], // RTK haute précision
"orientation": [
// Matrice de rotation 3x3 (si données IMU disponibles)
]
}
}
],
"use_image_position_constraint": true
}

Résultats de Sortie

Après l'achèvement de la triangulation aérienne, ce qui suit sera généré dans le répertoire de travail:

1. Répertoire de Résultats Intermédiaires (milestones/)

  • mvs.xml - Résultats de triangulation aérienne au format interne
  • mvs_undistort.xml - Résultats de triangulation aérienne non distordus
  • roi.json - Région d'intérêt calculée automatiquement
  • cs.json - Informations du système de coordonnées
  • tie_points.las - Nuage de points de liaison (si activé)

2. Résultats d'Exportation (products/AT/)

  • block_exchange.xml - Résultats de triangulation aérienne au format ContextCapture (si activé)

3. Fichiers de Journal (log/)

  • log.txt - Journal de traitement détaillé

Description d'Utilisation ROI

Le roi.json généré après la triangulation aérienne contient trois types de ROI:

{
"rois": [
{
"type": "Smart", // Calculé intelligemment basé sur les points épars
"roi": {
"boundary": [...], // Sommets de limite 2D
"min_z": 100.0, // Élévation minimale
"max_z": 200.0 // Élévation maximale
}
},
{
"type": "Maximal", // Basé sur les positions d'image et points épars
"roi": {...}
},
{
"type": "Frustum", // Basé sur les frustums d'image
"roi": {...}
}
]
}

Meilleures Pratiques

1. Préparation des Images

  • Assurez-vous que l'EXIF d'image contient des informations GPS complètes
  • Chevauchement d'image recommandé >60%
  • Évitez les images floues ou surexposées

2. Optimisation des Paramètres

  • GPS Standard: Utilisez le pos_sigma par défaut [2.0, 2.0, 3.0]
  • RTK/PPK: Définissez un pos_sigma plus petit comme [0.05, 0.05, 0.10]
  • Mode Rapide: Activez fast_mode quand GPS est disponible

3. Traitement Multi-Caméras

  • Utilisez le paramètre group pour identifier différentes caméras
  • Utilisez un camera_id indépendant pour chaque groupe de caméra
  • Assurez-vous que les paramètres de caméra sont précis

4. Optimisation de Grand Jeu de Données

  • Activez fast_mode pour accélérer le traitement
  • Considérez l'utilisation de remove_small_part pour nettoyer les résultats
  • Définissez des limites raisonnables d'utilisation de mémoire

Questions Fréquentes

Q: La triangulation aérienne a échoué avec "correspondance d'image insuffisante"

R: Vérifiez:

  • Le chevauchement d'image est-il suffisant (>60%)?
  • Les informations GPS sont-elles précises?
  • La qualité d'image est-elle bonne?

Q: Comment améliorer la précision de triangulation aérienne?

R:

  • Utilisez des données POS haute précision (RTK/PPK)
  • Définissez des valeurs pos_sigma appropriées
  • Utilisez OptimizeAT pour ajouter des points de contrôle

Q: Comment configurer des systèmes multi-caméras?

R:

  • Créez des camera_meta_data indépendants pour chaque caméra
  • Utilisez le paramètre group pour distinguer les images de différentes caméras
  • Assurez-vous que les paramètres intrinsèques de caméra sont précis

Prochaines Étapes

  • Utilisez OptimizeAT pour optimiser les résultats de triangulation aérienne
  • Utilisez Reconstruct3D pour la reconstruction 3D
  • Vérifiez Concepts de Base pour comprendre le flux de travail complet

Note: ReconstructAT fournit une flexibilité maximale, mais nécessite aussi plus de paramètres de configuration. Si vous avez juste besoin d'une reconstruction rapide, nous recommandons d'utiliser ReconstructFull.