ReconstructAT - Triangolazione Aerea
Panoramica
L'interfaccia ReconstructAT è utilizzata per eseguire la Triangolazione Aerea (Aerotriangolazione), ed è l'interfaccia preferita per utenti professionali che richiedono un controllo fine. Questa interfaccia fornisce impostazioni dettagliate dei parametri e supporta funzionalità avanzate come il raggruppamento delle telecamere, l'importazione POS e l'importazione dei punti di controllo.
- Necessità di controllo fine sui parametri di triangolazione aerea
- Necessità di verificare e ottimizzare i risultati della triangolazione aerea
- Ricostruzione di sistema multi-telecamera
- Necessità di integrare punti di controllo
Utilizzo dell'Interfaccia
Utilizzo da Riga di Comando
reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json
Descrizione Parametri
reconstruct_type
: Fisso come1
(indica ReconstructAT)task_json
: Percorso del file di configurazione
Parametri di Configurazione
Parametri Richiesti
Parametro | Tipo | Descrizione |
---|---|---|
license_id | int | Codice licenza SDK, unificato come 9200 |
working_dir | string | Directory di lavoro per file intermedi e risultati finali |
gdal_folder | string | Percorso dati GDAL (cartella dati esterni SDK) |
coordinate_system | JSON | Sistema di coordinate per posizioni immagine di input |
image_meta_data | JSON Array | Informazioni metadati immagine di input |
camera_meta_data | JSON Array | Informazioni metadati telecamera |
Parametri Opzionali
Parametro | Tipo | Predefinito | Descrizione |
---|---|---|---|
input_image_type | int | 1 | Tipo immagine: 1=RGB, 2=Multispettrale, 3=Infrarosso |
remove_small_part | bool | false | Se rimuovere piccole componenti connesse dai risultati AT |
output_tie_point_las | bool | false | Se generare punti di legame in formato LAS |
output_block_change_xml | bool | true | Se generare risultati AT in formato XML ContextCapture |
coordinate_system_AT | JSON | - | Sistema di coordinate per risultati AT di output in formato XML |
fast_mode | bool | false | Modalità veloce, adatta per dati con GPS |
use_image_position_constraint | bool | true | Se utilizzare informazioni posizione immagine come vincoli |
use_voc_index | bool | true | Se utilizzare recupero immagine per ricerca coppie di corrispondenza |
use_spatial_index | bool | true | Se utilizzare distanza GPS per ricerca coppie di corrispondenza |
Descrizione Struttura Dati
Metadati Immagine
{
"id": 1, // ID univoco immagine
"path": "path/to/image.jpg", // Percorso assoluto immagine
"group": "camera_1", // ID gruppo telecamera (opzionale)
"meta_data": { // Informazioni immagine (richiesto)
"width": 6000, // Larghezza immagine (pixel)
"height": 4000, // Altezza immagine (pixel)
"camera_id": 1, // ID telecamera corrispondente (opzionale, sarà sovrascritto dai metadati telecamera se viene fornito 'pre_calib_param')
"pos": [lon, lat, alt], // Posizione [longitudine, latitudine, elevazione]
"pos_sigma": [1.0, 1.0, 2.0], // Precisione posizione (metri)
"orientation": [...], // Matrice di rotazione (9 valori, opzionale)
"position_constant": false, // Se fissare la posizione
"relative_altitude": 100.0, // Altitudine di volo relativa (opzionale)
"focal_length_in_35mm": 24, // Lunghezza focale equivalente 35mm
"pre_calib_param": [...], // Parametri di pre-calibrazione (opzionale, sarà sovrascritto se viene fornito 'focal_length_in_35mm')
"dewarp_flag": false // Flag correzione distorsione (opzionale, da dati DJI XMP)
}
}
Metadati Telecamera
{
"id": 1, // ID univoco telecamera
"meta_data": {
"camera_name": "DJI FC6310", // Nome telecamera
"width": 6000, // Larghezza sensore (pixel)
"height": 4000, // Altezza sensore (pixel)
"parameters": [ // Intrinseci telecamera (opzionale, array di 10 elementi, placeholder_param è attualmente parametro segnaposto)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}
Sistema di Coordinate
{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected, 4=ECEF
"epsg_code": 4326, // Codice EPSG (richiesto per Geographic/Projected/ECEF)
"wkt": "...", // Stringa WKT (può sostituire epsg_code)
"origin_point": [lon, lat, alt], // Origine LocalENU (necessario solo per type=0)
"offset": [0, 0, 0] // Offset relativo all'origine del sistema di coordinate
}
Esempi di Configurazione Completa
Configurazione Base Triangolazione Aerea
{
"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
}
Configurazione Gruppo Multi-Telecamera
{
"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
}
Configurazione RTK/PPK Alta Precisione
{
"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 alta precisione
"orientation": [
// Matrice di rotazione 3x3 (se dati IMU disponibili)
]
}
}
],
"use_image_position_constraint": true
}
Risultati di Output
Dopo il completamento della triangolazione aerea, verrà generato quanto segue nella directory di lavoro:
1. Directory Risultati Intermedi (milestones/
)
mvs.xml
- Risultati triangolazione aerea in formato internomvs_undistort.xml
- Risultati triangolazione aerea non distortiroi.json
- Regione di interesse calcolata automaticamentecs.json
- Informazioni sistema di coordinatetie_points.las
- Nuvola punti di legame (se abilitato)
2. Risultati di Esportazione (products/AT/
)
block_exchange.xml
- Risultati triangolazione aerea formato ContextCapture (se abilitato)
3. File di Log (log/
)
log.txt
- Log di elaborazione dettagliato
Descrizione Utilizzo ROI
Il roi.json
generato dopo la triangolazione aerea contiene tre tipi di ROI:
{
"rois": [
{
"type": "Smart", // Calcolato intelligentemente basato su punti sparsi
"roi": {
"boundary": [...], // Vertici confine 2D
"min_z": 100.0, // Elevazione minima
"max_z": 200.0 // Elevazione massima
}
},
{
"type": "Maximal", // Basato su posizioni immagine e punti sparsi
"roi": {...}
},
{
"type": "Frustum", // Basato su frustum immagine
"roi": {...}
}
]
}
Migliori Pratiche
1. Preparazione Immagini
- Assicurarsi che EXIF immagine contenga informazioni GPS complete
- Sovrapposizione immagine raccomandata >60%
- Evitare immagini sfocate o sovraesposte
2. Ottimizzazione Parametri
- GPS Standard: Utilizzare
pos_sigma
predefinito [2.0, 2.0, 3.0] - RTK/PPK: Impostare
pos_sigma
più piccolo come [0.05, 0.05, 0.10] - Modalità Veloce: Abilitare
fast_mode
quando GPS è disponibile
3. Elaborazione Multi-Telecamera
- Utilizzare parametro
group
per identificare telecamere diverse - Utilizzare
camera_id
indipendente per ogni gruppo telecamera - Assicurarsi che i parametri telecamera siano accurati
4. Ottimizzazione Dataset Grandi
- Abilitare
fast_mode
per accelerare l'elaborazione - Considerare l'utilizzo di
remove_small_part
per pulire risultati - Impostare limiti ragionevoli di utilizzo memoria
Domande Comuni
D: Triangolazione aerea fallita con "corrispondenza immagine insufficiente"
R: Verificare:
- È sufficiente la sovrapposizione immagine (>60%)?
- Sono accurate le informazioni GPS?
- È buona la qualità immagine?
D: Come migliorare la precisione della triangolazione aerea?
R:
- Utilizzare dati POS alta precisione (RTK/PPK)
- Impostare valori
pos_sigma
appropriati - Utilizzare OptimizeAT per aggiungere punti di controllo
D: Come configurare sistemi multi-telecamera?
R:
- Creare
camera_meta_data
indipendenti per ogni telecamera - Utilizzare parametro
group
per distinguere immagini da telecamere diverse - Assicurarsi che gli intrinseci telecamera siano accurati
Prossimi Passi
- Utilizzare OptimizeAT per ottimizzare risultati triangolazione aerea
- Utilizzare Reconstruct3D per ricostruzione 3D
- Verificare Concetti Base per comprendere il flusso di lavoro completo
Nota: ReconstructAT fornisce massima flessibilità, ma richiede anche più impostazioni parametri. Se hai solo bisogno di ricostruzione veloce, raccomandiamo di utilizzare ReconstructFull.