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).
- 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ètre | Type | Description |
---|---|---|
control_point | JSON | Informations 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égion | EPSG | Description |
---|---|---|
Chine | 4490 | CGCS2000 Géographique |
Chine | 4547-4554 | Projection Gauss CGCS2000 |
Global | 32601-32660 | UTM Hémisphère Nord |
Global | 32701-32760 | UTM 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 Projet | Précision Horizontale | Pré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
- Chargez les images dans le visualiseur de résultats AT
- Trouvez les caractéristiques correspondantes pour les points de contrôle
- Marquez précisément les positions pixel
- 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
- Utilisez les résultats AT optimisés pour Reconstruct3D
- Apprenez le traitement de tuilage de données à grande échelle
- Consultez Concepts de Base pour comprendre l'utilisation des points de contrôle
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.