ReconstructAT - Triangulação Aérea
Visão Geral
A interface ReconstructAT é usada para realizar Triangulação Aérea (Aerotriangulação), e é a interface preferida para usuários profissionais que requerem controle fino. Esta interface fornece configurações detalhadas de parâmetros e suporta recursos avançados como agrupamento de câmeras, importação POS e importação de pontos de controle.
Cenários Aplicáveis
- Necessita controle fino sobre parâmetros de triangulação aérea
- Necessita verificar e otimizar resultados de triangulação aérea
- Reconstrução de sistema multi-câmera
- Necessita integrar pontos de controle
Uso da Interface
Uso da Linha de Comando
reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json
Descrição dos Parâmetros
reconstruct_type
: Fixo como1
(indica ReconstructAT)task_json
: Caminho do arquivo de configuração
Parâmetros de Configuração
Parâmetros Obrigatórios
Parâmetro | Tipo | Descrição |
---|---|---|
license_id | int | Código de licença SDK, unificado como 9200 |
working_dir | string | Diretório de trabalho para arquivos intermediários e resultados finais |
gdal_folder | string | Caminho de dados GDAL (pasta de dados externos do SDK) |
coordinate_system | JSON | Sistema de coordenadas para posições de imagem de entrada |
image_meta_data | JSON Array | Informações de metadados de imagem de entrada |
camera_meta_data | JSON Array | Informações de metadados da câmera |
Parâmetros Opcionais
Parâmetro | Tipo | Padrão | Descrição |
---|---|---|---|
input_image_type | int | 1 | Tipo de imagem: 1=RGB, 2=Multiespectral, 3=Infravermelho |
remove_small_part | bool | false | Se remover componentes conectados pequenos dos resultados AT |
output_tie_point_las | bool | false | Se gerar pontos de amarração em formato LAS |
output_block_change_xml | bool | true | Se gerar resultados AT em formato XML ContextCapture |
coordinate_system_AT | JSON | - | Sistema de coordenadas para resultados AT de saída em formato XML |
fast_mode | bool | false | Modo rápido, adequado para dados com GPS |
use_image_position_constraint | bool | true | Se usar informações de posição de imagem como restrições |
use_voc_index | bool | true | Se usar recuperação de imagem para busca de pares correspondentes |
use_spatial_index | bool | true | Se usar distância GPS para busca de pares correspondentes |
Descrição da Estrutura de Dados
Metadados de Imagem
{
"id": 1, // ID único da imagem
"path": "path/to/image.jpg", // Caminho absoluto da imagem
"group": "camera_1", // ID do grupo da câmera (opcional)
"meta_data": { // Informações da imagem (obrigatório)
"width": 6000, // Largura da imagem (pixels)
"height": 4000, // Altura da imagem (pixels)
"camera_id": 1, // ID da câmera correspondente (opcional, será sobrescrito pelos metadados da câmera se 'pre_calib_param' for fornecido)
"pos": [lon, lat, alt], // Posição [longitude, latitude, elevação]
"pos_sigma": [1.0, 1.0, 2.0], // Precisão da posição (metros)
"orientation": [...], // Matriz de rotação (9 valores, opcional)
"position_constant": false, // Se fixar a posição
"relative_altitude": 100.0, // Altitude de voo relativa (opcional)
"focal_length_in_35mm": 24, // Distância focal equivalente a 35mm
"pre_calib_param": [...], // Parâmetros de pré-calibração (opcional, será sobrescrito se 'focal_length_in_35mm' for fornecido)
"dewarp_flag": false // Flag de correção de distorção (opcional, de dados DJI XMP)
}
}
Metadados da Câmera
{
"id": 1, // ID único da câmera
"meta_data": {
"camera_name": "DJI FC6310", // Nome da câmera
"width": 6000, // Largura do sensor (pixels)
"height": 4000, // Altura do sensor (pixels)
"parameters": [ // Intrínsecos da câmera (opcional, array de 10 elementos, placeholder_param é atualmente 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 (obrigatório para Geographic/Projected/ECEF)
"wkt": "...", // String WKT (pode substituir epsg_code)
"origin_point": [lon, lat, alt], // Origem LocalENU (necessário apenas para type=0)
"offset": [0, 0, 0] // Deslocamento relativo à origem do sistema de coordenadas
}
Exemplos de Configuração Completa
Configuração Básica de Triangulação 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
}
Configuração de Grupo Multi-Câmera
{
"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
}
Configuração RTK/PPK de Alta Precisão
{
"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 precisão
"orientation": [
// Matriz de rotação 3x3 (se dados IMU estiverem disponíveis)
]
}
}
],
"use_image_position_constraint": true
}
Resultados de Saída
Após completar a triangulação aérea, o seguinte será gerado no diretório de trabalho:
1. Diretório de Resultados Intermediários (milestones/
)
mvs.xml
- Resultados de triangulação aérea em formato internomvs_undistort.xml
- Resultados de triangulação aérea sem distorçãoroi.json
- Região de interesse calculada automaticamentecs.json
- Informações do sistema de coordenadastie_points.las
- Nuvem de pontos de amarração (se habilitado)
2. Resultados de Exportação (products/AT/
)
block_exchange.xml
- Resultados de triangulação aérea formato ContextCapture (se habilitado)
3. Arquivos de Log (log/
)
log.txt
- Log de processamento detalhado
Descrição de Uso ROI
O roi.json
gerado após a triangulação aérea contém três tipos de ROI:
{
"rois": [
{
"type": "Smart", // Calculado inteligentemente baseado em pontos esparsos
"roi": {
"boundary": [...], // Vértices de fronteira 2D
"min_z": 100.0, // Elevação mínima
"max_z": 200.0 // Elevação máxima
}
},
{
"type": "Maximal", // Baseado em posições de imagem e pontos esparsos
"roi": {...}
},
{
"type": "Frustum", // Baseado em frustums de imagem
"roi": {...}
}
]
}
Melhores Práticas
1. Preparação de Imagens
- Certifique-se de que o EXIF da imagem contenha informações GPS completas
- Sobreposição de imagem recomendada >60%
- Evite imagens desfocadas ou superexpostas
2. Otimização de Parâmetros
- GPS Padrão: Use
pos_sigma
padrão [2.0, 2.0, 3.0] - RTK/PPK: Configure
pos_sigma
menor como [0.05, 0.05, 0.10] - Modo Rápido: Habilite
fast_mode
quando GPS estiver disponível
3. Processamento Multi-Câmera
- Use parâmetro
group
para identificar câmeras diferentes - Use
camera_id
independente para cada grupo de câmera - Certifique-se de que os parâmetros da câmera sejam precisos
4. Otimização de Dataset Grande
- Habilite
fast_mode
para acelerar o processamento - Considere usar
remove_small_part
para limpar resultados - Configure limites razoáveis de uso de memória
Perguntas Comuns
P: Triangulação aérea falhou com "correspondência de imagem insuficiente"
R: Verifique:
- A sobreposição de imagem é suficiente (>60%)?
- As informações GPS são precisas?
- A qualidade da imagem é boa?
P: Como melhorar a precisão da triangulação aérea?
R:
- Use dados POS de alta precisão (RTK/PPK)
- Configure valores
pos_sigma
apropriados - Use OptimizeAT para adicionar pontos de controle
P: Como configurar sistemas multi-câmera?
R:
- Crie
camera_meta_data
independentes para cada câmera - Use parâmetro
group
para distinguir imagens de câmeras diferentes - Certifique-se de que os intrínsecos da câmera sejam precisos
Próximos Passos
- Use OptimizeAT para otimizar resultados de triangulação aérea
- Use Reconstruct3D para reconstrução 3D
- Verifique Conceitos Básicos para entender o fluxo de trabalho completo
Nota: ReconstructAT fornece máxima flexibilidade, mas também requer mais configurações de parâmetros. Se você apenas precisa de reconstrução rápida, recomendamos usar ReconstructFull.