Passa al contenuto principale

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.

Scenari Applicabili
  • 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 come 1 (indica ReconstructAT)
  • task_json: Percorso del file di configurazione

Parametri di Configurazione

Parametri Richiesti

ParametroTipoDescrizione
license_idintCodice licenza SDK, unificato come 9200
working_dirstringDirectory di lavoro per file intermedi e risultati finali
gdal_folderstringPercorso dati GDAL (cartella dati esterni SDK)
coordinate_systemJSONSistema di coordinate per posizioni immagine di input
image_meta_dataJSON ArrayInformazioni metadati immagine di input
camera_meta_dataJSON ArrayInformazioni metadati telecamera

Parametri Opzionali

ParametroTipoPredefinitoDescrizione
input_image_typeint1Tipo immagine: 1=RGB, 2=Multispettrale, 3=Infrarosso
remove_small_partboolfalseSe rimuovere piccole componenti connesse dai risultati AT
output_tie_point_lasboolfalseSe generare punti di legame in formato LAS
output_block_change_xmlbooltrueSe generare risultati AT in formato XML ContextCapture
coordinate_system_ATJSON-Sistema di coordinate per risultati AT di output in formato XML
fast_modeboolfalseModalità veloce, adatta per dati con GPS
use_image_position_constraintbooltrueSe utilizzare informazioni posizione immagine come vincoli
use_voc_indexbooltrueSe utilizzare recupero immagine per ricerca coppie di corrispondenza
use_spatial_indexbooltrueSe 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 interno
  • mvs_undistort.xml - Risultati triangolazione aerea non distorti
  • roi.json - Regione di interesse calcolata automaticamente
  • cs.json - Informazioni sistema di coordinate
  • tie_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.