ReconstructAT - Triangulación Aérea
Descripción General
La interfaz ReconstructAT se utiliza para realizar Triangulación Aérea (Aerotriangulación), y es la interfaz preferida para usuarios profesionales que requieren control fino. Esta interfaz proporciona configuraciones detalladas de parámetros y soporta características avanzadas como agrupación de cámaras, importación POS e importación de puntos de control.
Escenarios Aplicables
- Necesita control fino sobre parámetros de triangulación aérea
- Necesita verificar y optimizar resultados de triangulación aérea
- Reconstrucción de sistema multi-cámara
- Necesita integrar puntos de control
Uso de la Interfaz
Uso de Línea de Comandos
reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json
Descripción de Parámetros
reconstruct_type: Fijo como1(indica ReconstructAT)task_json: Ruta del archivo de configuración
Parámetros de Configuración
Parámetros Requeridos
| Parámetro | Tipo | Descripción |
|---|---|---|
license_id | int | Código de licencia SDK, unificado como 9200 |
working_dir | string | Directorio de trabajo para archivos intermedios y resultados finales |
gdal_folder | string | Ruta de datos GDAL (carpeta de datos externos del SDK) |
coordinate_system | JSON | Sistema de coordenadas para posiciones de imagen de entrada |
image_meta_data | JSON Array | Información de metadatos de imagen de entrada |
camera_meta_data | JSON Array | Información de metadatos de cámara |
Parámetros Opcionales
| Parámetro | Tipo | Por Defecto | Descripción |
|---|---|---|---|
input_image_type | int | 1 | Tipo de imagen: 1=RGB, 2=Multiespectral, 3=Infrarrojo |
remove_small_part | bool | false | Si remover componentes conectados pequeños de resultados AT |
output_tie_point_las | bool | false | Si generar puntos de enlace en formato LAS |
output_block_change_xml | bool | true | Si generar resultados AT en formato XML de ContextCapture |
coordinate_system_AT | JSON | - | Sistema de coordenadas para resultados AT de salida en formato XML |
fast_mode | bool | false | Modo rápido, adecuado para datos con GPS |
use_image_position_constraint | bool | true | Si usar información de posición de imagen como restricciones |
use_voc_index | bool | true | Si usar recuperación de imagen para búsqueda de pares de coincidencia |
use_spatial_index | bool | true | Si usar distancia GPS para búsqueda de pares de coincidencia |
Descripción de Estructura de Datos
Metadatos de Imagen
{
"id": 1, // ID único de imagen
"path": "path/to/image.jpg", // Ruta absoluta de imagen
"group": "camera_1", // ID de grupo de cámara (opcional)
"meta_data": { // Información de imagen (requerido)
"width": 6000, // Ancho de imagen (píxeles)
"height": 4000, // Alto de imagen (píxeles)
"camera_id": 1, // ID de cámara correspondiente (opcional, será sobrescrito por metadatos de cámara si se proporciona 'pre_calib_param')
"pos": [lon, lat, alt], // Posición [longitud, latitud, elevación]
"pos_sigma": [1.0, 1.0, 2.0], // Precisión de posición (metros)
"orientation": [...], // Matriz de rotación (9 valores, opcional)
"position_constant": false, // Si fijar posición
"relative_altitude": 100.0, // Altitud de vuelo relativa (opcional)
"focal_length_in_35mm": 24, // Distancia focal equivalente a 35mm
"pre_calib_param": [...], // Parámetros de pre-calibración (opcional, será sobrescrito si se proporciona 'focal_length_in_35mm')
"dewarp_flag": false // Bandera de corrección de distorsión (opcional, de datos DJI XMP)
}
}
Metadatos de Cámara
{
"id": 1, // ID único de cámara
"meta_data": {
"camera_name": "DJI FC6310", // Nombre de cámara
"width": 6000, // Ancho de sensor (píxeles)
"height": 4000, // Alto de sensor (píxeles)
"parameters": [ // Intrínsecos de cámara (opcional, array de 10 elementos, placeholder_param es actualmente parámetro placeholder)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}
Sistema de Coordenadas
{
"type": 2, // 0=LocalENU, 1=Local, 2=Geographic, 3=Projected, 4=ECEF
"epsg_code": 4326, // Código EPSG (requerido para Geographic/Projected/ECEF)
"wkt": "...", // Cadena WKT (puede reemplazar epsg_code)
"origin_point": [lon, lat, alt], // Origen LocalENU (solo necesario para type=0)
"offset": [0, 0, 0] // Desplazamiento relativo al origen del sistema de coordenadas
}
Ejemplos de Configuración Completa
Configuración Básica de Triangulación Aérea
{
"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
}
Configuración de Grupo Multi-Cámara
{
"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
}
Configuración RTK/PPK de Alta Precisión
{
"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 de alta precisión
"orientation": [
// Matriz de rotación 3x3 (si datos IMU están disponibles)
]
}
}
],
"use_image_position_constraint": true
}
Resultados de Salida
Después de completar la triangulación aérea, se generará lo siguiente en el directorio de trabajo:
1. Directorio de Resultados Intermedios (milestones/)
mvs.xml- Resultados de triangulación aérea en formato internomvs_undistort.xml- Resultados de triangulación aérea sin distorsiónroi.json- Región de interés calculada automáticamentecs.json- Información del sistema de coordenadastie_points.las- Nube de puntos de enlace (si está habilitado)
2. Resultados de Exportación (products/AT/)
block_exchange.xml- Resultados de triangulación aérea en formato ContextCapture (si está habilitado)
3. Archivos de Registro (log/)
log.txt- Registro detallado de procesamiento
Descripción de Uso de ROI
El roi.json generado después de la triangulación aérea contiene tres tipos de ROI:
{
"rois": [
{
"type": "Smart", // Calculado inteligentemente basado en puntos dispersos
"roi": {
"boundary": [...], // Vértices de límite 2D
"min_z": 100.0, // Elevación mínima
"max_z": 200.0 // Elevación máxima
}
},
{
"type": "Maximal", // Basado en posiciones de imagen y puntos dispersos
"roi": {...}
},
{
"type": "Frustum", // Basado en frustums de imagen
"roi": {...}
}
]
}
Mejores Prácticas
1. Preparación de Imágenes
- Asegúrese de que el EXIF de imagen contenga información GPS completa
- Superposición de imagen recomendada >60%
- Evite imágenes borrosas o sobreexpuestas
2. Optimización de Parámetros
- GPS Estándar: Use
pos_sigmapor defecto [2.0, 2.0, 3.0] - RTK/PPK: Configure
pos_sigmamás pequeño como [0.05, 0.05, 0.10] - Modo Rápido: Habilite
fast_modecuando GPS esté disponible
3. Procesamiento Multi-Cámara
- Use parámetro
grouppara identificar diferentes cámaras - Use
camera_idindependiente para cada grupo de cámara - Asegúrese de que los parámetros de cámara sean precisos
4. Optimización de Conjunto de Datos Grande
- Habilite
fast_modepara acelerar el procesamiento - Considere usar
remove_small_partpara limpiar resultados - Configure límites razonables de uso de memoria
Preguntas Comunes
P: La triangulación aérea falló con "coincidencia de imagen insuficiente"
R: Verifique:
- ¿Es suficiente la superposición de imagen (>60%)?
- ¿Es precisa la información GPS?
- ¿Es buena la calidad de imagen?
P: ¿Cómo mejorar la precisión de triangulación aérea?
R:
- Use datos POS de alta precisión (RTK/PPK)
- Configure valores
pos_sigmaapropiados - Use OptimizeAT para agregar puntos de control
P: ¿Cómo configurar sistemas multi-cámara?
R:
- Cree
camera_meta_dataindependiente para cada cámara - Use parámetro
grouppara distinguir imágenes de diferentes cámaras - Asegúrese de que los intrínsecos de cámara sean precisos
Próximos Pasos
- Use OptimizeAT para optimizar resultados de triangulación aérea
- Use Reconstruct3D para reconstrucción 3D
- Verifique Conceptos Básicos para entender el flujo de trabajo completo
Nota: ReconstructAT proporciona máxima flexibilidad, pero también requiere más configuraciones de parámetros. Si solo necesita reconstrucción rápida, recomendamos usar ReconstructFull.