Aller au contenu principal

OptimizeAT - Optimisation AT Contrainte par Points de Contrôle

Aperçu

L'interface OptimizeAT est utilisée pour optimiser les résultats de triangulation aérienne en utilisant des points de contrôle. Cette interface est appelée après avoir terminé la mesure des points de liaison, améliorant la précision absolue de l'AT en introduisant des points de contrôle au sol (GCP).

Cas d'Usage
  • Projets d'arpentage nécessitant une haute précision absolue
  • Projets avec des données de points de contrôle au sol
  • Besoin de vérifier et d'améliorer la précision AT
  • Arpentage d'ingénierie et cartographie professionnelle

Flux de Travail

Appel d'Interface

Appel en Ligne de Commande

reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_config.json

Description des Paramètres

  • reconstruct_type: Fixé à 3 (indique OptimizeAT)
  • task_json: Chemin du fichier de configuration

Paramètres de Configuration

OptimizeAT utilise les mêmes paramètres que ReconstructAT, avec des paramètres de points de contrôle supplémentaires :

Paramètres Requis

Tous les paramètres requis de ReconstructAT, plus :

ParamètreTypeDescription
control_pointJSONInformations du groupe de points de contrôle

Structure de Données des Points de Contrôle

ControlPointGroup

{
"coordinate_system": { // Système de coordonnées des points de contrôle
"type": 3, // Généralement système de coordonnées projeté
"epsg_code": 32650 // ex., UTM Zone 50N
},
"points": [ // Liste des points de contrôle
// Tableau d'objets ControlPoint
]
}

ControlPoint

{
"id": "GCP001", // Nom du point de contrôle
"coordinate": [x, y, z], // Coordonnées du point de contrôle
"usage": 0, // 0=point de contrôle, 1=point de vérification, 2=désactivé
"observations": [ // Observations d'image
{
"id": 1, // ID d'image
"uv": [1234.5, 2345.6] // Coordonnées pixel
}
]
}

Exemples de Configuration Complète

Optimisation Basique des Points de Contrôle

{
"license_id": 9200,
"working_dir": "C:/Projects/AT_Optimize",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [...], // Identique à ReconstructAT
"image_meta_data": [...], // Identique à ReconstructAT
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // UTM Zone 50N
},
"points": [
{
"id": "GCP001",
"coordinate": [500123.456, 2500123.456, 123.456],
"usage": 0,
"observations": [
{
"id": 1,
"uv": [2736.5, 1824.3]
},
{
"id": 5,
"uv": [1892.7, 2104.8]
}
]
},
{
"id": "GCP002",
"coordinate": [500223.456, 2500223.456, 125.678],
"usage": 0,
"observations": [
{
"id": 3,
"uv": [3104.2, 1567.9]
},
{
"id": 7,
"uv": [2345.6, 1890.2]
}
]
},
{
"id": "CHECK001",
"coordinate": [500323.456, 2500323.456, 127.890],
"usage": 1, // Point de vérification
"observations": [
{
"id": 2,
"uv": [1567.8, 2345.6]
}
]
}
]
}
}

Configuration de Projet d'Arpentage Haute Précision

{
"license_id": 9200,
"working_dir": "C:/Projects/HighPrecision_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [...],
"image_meta_data": [
{
"id": 1,
"path": "IMG_0001.JPG",
"meta_data": {
"pos": [114.123, 22.123, 150.0],
"pos_sigma": [0.05, 0.05, 0.10], // RTK haute précision
"position_constant": false // Permettre l'optimisation
}
}
],
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 4978 // ECEF pour haute précision
},
"points": [
// Plusieurs points de contrôle distribués uniformément
{
"id": "GCP_NW",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_NE",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_SW",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_SE",
"coordinate": [...],
"usage": 0,
"observations": [...]
},
{
"id": "GCP_CENTER",
"coordinate": [...],
"usage": 0,
"observations": [...]
}
]
}
}

Principes de Placement des Points de Contrôle

1. Exigences de Quantité

  • Minimum : 3 points de contrôle (requis pour la solution)
  • Recommandé : 5-8 points de contrôle + 2-3 points de vérification
  • Grande zone : Au moins 1 point de contrôle par 50-100 images

2. Exigences de Distribution

Distribution idéale des points de contrôle :

+-----+-----+-----+
| GCP | GCP | GCP |
+-----+-----+-----+
| GCP | CHK | GCP | GCP : Point de Contrôle
+-----+-----+-----+ CHK : Point de Vérification
| GCP | GCP | GCP |
+-----+-----+-----+

3. Distribution d'Élévation

  • Placer les points de contrôle à différents niveaux d'élévation
  • Éviter tous les points de contrôle sur le même plan
  • Porter une attention particulière aux changements d'élévation dans les projets montagneux

Exigences de Précision de Mesure

Précision Pixel

  • Idéal : < 1 pixel
  • Acceptable : < 2 pixels
  • Nécessite amélioration : > 3 pixels

Observations Multi-Vues

  • Chaque point de contrôle visible dans au moins 2 images
  • Idéalement 3-5 images
  • Différence d'angle de vue > 15°

Considérations du Système de Coordonnées

1. Cohérence du Système de Coordonnées

{
// Positions d'images généralement en WGS84
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},

// Points de contrôle généralement en système de coordonnées projeté local
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // Choisir selon l'emplacement du projet
}
}
}

2. Systèmes de Coordonnées Communs

RégionEPSGDescription
Chine4490CGCS2000 Géographique
Chine4547-4554Projection Gauss CGCS2000
Global32601-32660UTM Hémisphère Nord
Global32701-32760UTM Hémisphère Sud

Évaluation de Qualité

1. Interprétation du Rapport d'Optimisation

Après l'optimisation, vérifiez le rapport de précision dans les journaux :

[INFO] Control Point Residuals:
GCP001: 0.023m (X), 0.015m (Y), 0.041m (Z)
GCP002: 0.019m (X), 0.022m (Y), 0.038m (Z)

[INFO] Check Point Errors:
CHECK001: 0.045m (X), 0.052m (Y), 0.068m (Z)

[INFO] RMS Error: 0.048m

2. Standards de Précision

Type de ProjetPrécision HorizontalePrécision Verticale
Cartographie Topographique< 0.05m< 0.10m
Arpentage d'Ingénierie< 0.10m< 0.15m
Applications Générales< 0.30m< 0.50m

Meilleures Pratiques

1. Collecte de Points de Contrôle

  • Utilisez des équipements haute précision comme RTK/Station Totale
  • Choisissez des caractéristiques stables et facilement identifiables
  • Enregistrez des descriptions détaillées des points et des photos

2. Processus de Mesure

  1. Chargez les images dans le visualiseur de résultats AT
  2. Trouvez les caractéristiques correspondantes pour les points de contrôle
  3. Marquez précisément les positions pixel
  4. Vérifiez la cohérence multi-vues

3. Optimisation Itérative

# Première optimisation
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v1.json

# Vérifier les résultats, ajuster les points anormaux

# Deuxième optimisation
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v2.json

4. Gestion des Problèmes Courants

Grands Résidus

  • Vérifier la précision de mesure
  • Vérifier les coordonnées des points de contrôle
  • Considérer définir le point comme point de vérification

Biais Systématique

  • Vérifier les paramètres du système de coordonnées
  • Vérifier le système de coordonnées des points de contrôle
  • Considérer les problèmes de calibration de caméra

Résultats de Sortie

Les résultats AT optimisés sont sauvegardés au même emplacement :

  • milestones/mvs_optimized.xml - Format interne optimisé
  • products/AT/block_exchange_optimized.xml - Format d'échange optimisé
  • log/optimization_report.txt - Rapport d'optimisation

Exemple : Flux de Travail Complet

import subprocess
import json

# 1. Exécuter AT initial
at_config = {
"license_id": 9200,
"working_dir": "C:/Project",
# ... autres paramètres
}
with open("at_config.json", "w") as f:
json.dump(at_config, f)

subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "1", "-task_json", "at_config.json"])

# 2. Effectuer la mesure des points de contrôle (généralement fait dans un logiciel externe)

# 3. Préparer la configuration d'optimisation
optimize_config = at_config.copy()
optimize_config["control_point"] = {
"coordinate_system": {"type": 3, "epsg_code": 32650},
"points": [
# Données des points de contrôle
]
}
with open("optimize_config.json", "w") as f:
json.dump(optimize_config, f)

# 4. Exécuter l'optimisation
subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "3", "-task_json", "optimize_config.json"])

# 5. Utiliser les résultats optimisés pour la reconstruction 3D
# ...

Prochaines Étapes


Conseil : Les points de contrôle sont la clé pour assurer la précision de la cartographie. Un placement approprié des points de contrôle et une mesure précise sont la base pour obtenir des résultats de haute précision.