Pular para o conteúdo principal

OptimizeAT - Otimização AT Restrita por Pontos de Controle

Visão Geral

A interface OptimizeAT é usada para otimizar resultados de triangulação aérea usando pontos de controle. Esta interface é chamada após completar a medição de pontos de ligação, melhorando a precisão absoluta da AT através da introdução de pontos de controle terrestre (GCP).

Casos de Uso
  • Projetos de levantamento que requerem alta precisão absoluta
  • Projetos com dados de pontos de controle terrestre
  • Necessidade de verificar e melhorar a precisão AT
  • Levantamento de engenharia e mapeamento profissional

Fluxo de Trabalho

Chamada da Interface

Chamada por Linha de Comando

reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_config.json

Descrição dos Parâmetros

  • reconstruct_type: Fixo como 3 (indica OptimizeAT)
  • task_json: Caminho do arquivo de configuração

Parâmetros de Configuração

OptimizeAT usa os mesmos parâmetros que ReconstructAT, com parâmetros adicionais de pontos de controle:

Parâmetros Obrigatórios

Todos os parâmetros obrigatórios do ReconstructAT, mais:

ParâmetroTipoDescrição
control_pointJSONInformações do grupo de pontos de controle

Estrutura de Dados dos Pontos de Controle

ControlPointGroup

{
"coordinate_system": { // Sistema de coordenadas dos pontos de controle
"type": 3, // Geralmente sistema de coordenadas projetado
"epsg_code": 32650 // ex., UTM Zone 50N
},
"points": [ // Lista de pontos de controle
// Array de objetos ControlPoint
]
}

ControlPoint

{
"id": "GCP001", // Nome do ponto de controle
"coordinate": [x, y, z], // Coordenadas do ponto de controle
"usage": 0, // 0=ponto de controle, 1=ponto de verificação, 2=desabilitado
"observations": [ // Observações da imagem
{
"id": 1, // ID da imagem
"uv": [1234.5, 2345.6] // Coordenadas do pixel
}
]
}

Exemplos de Configuração Completa

Otimização Básica de Pontos de Controle

{
"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": [...], // Mesmo que ReconstructAT
"image_meta_data": [...], // Mesmo que 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, // Ponto de verificação
"observations": [
{
"id": 2,
"uv": [1567.8, 2345.6]
}
]
}
]
}
}

Configuração de Projeto de Levantamento de Alta Precisão

{
"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 alta precisão
"position_constant": false // Permitir otimização
}
}
],
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 4978 // ECEF para alta precisão
},
"points": [
// Múltiplos pontos de controle distribuídos uniformemente
{
"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": [...]
}
]
}
}

Princípios de Colocação de Pontos de Controle

1. Requisitos de Quantidade

  • Mínimo: 3 pontos de controle (necessários para a solução)
  • Recomendado: 5-8 pontos de controle + 2-3 pontos de verificação
  • Área grande: Pelo menos 1 ponto de controle por 50-100 imagens

2. Requisitos de Distribuição

Distribuição ideal de pontos de controle:

+-----+-----+-----+
| GCP | GCP | GCP |
+-----+-----+-----+
| GCP | CHK | GCP | GCP: Ponto de Controle
+-----+-----+-----+ CHK: Ponto de Verificação
| GCP | GCP | GCP |
+-----+-----+-----+

3. Distribuição de Elevação

  • Colocar pontos de controle em diferentes níveis de elevação
  • Evitar todos os pontos de controle no mesmo plano
  • Prestar atenção especial às mudanças de elevação em projetos montanhosos

Requisitos de Precisão de Medição

Precisão de Pixel

  • Ideal: < 1 pixel
  • Aceitável: < 2 pixels
  • Precisa melhorar: > 3 pixels

Observações Multi-Vista

  • Cada ponto de controle visível em pelo menos 2 imagens
  • Idealmente 3-5 imagens
  • Diferença de ângulo de visão > 15°

Considerações do Sistema de Coordenadas

1. Consistência do Sistema de Coordenadas

{
// Posições das imagens geralmente em WGS84
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},

// Pontos de controle geralmente em sistema de coordenadas projetado local
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // Escolher baseado na localização do projeto
}
}
}

2. Sistemas de Coordenadas Comuns

RegiãoEPSGDescrição
China4490CGCS2000 Geográfico
China4547-4554Projeção Gauss CGCS2000
Global32601-32660UTM Hemisfério Norte
Global32701-32760UTM Hemisfério Sul

Avaliação de Qualidade

1. Interpretação do Relatório de Otimização

Após a otimização, verifique o relatório de precisão nos logs:

[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. Padrões de Precisão

Tipo de ProjetoPrecisão HorizontalPrecisão Vertical
Mapeamento Topográfico< 0.05m< 0.10m
Levantamento de Engenharia< 0.10m< 0.15m
Aplicações Gerais< 0.30m< 0.50m

Melhores Práticas

1. Coleta de Pontos de Controle

  • Use equipamentos de alta precisão como RTK/Estação Total
  • Escolha características estáveis e facilmente identificáveis
  • Registre descrições detalhadas dos pontos e fotos

2. Processo de Medição

  1. Carregue imagens no visualizador de resultados AT
  2. Encontre características correspondentes para pontos de controle
  3. Marque posições de pixel com precisão
  4. Verifique consistência multi-vista

3. Otimização Iterativa

# Primeira otimização
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v1.json

# Verificar resultados, ajustar pontos anômalos

# Segunda otimização
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v2.json

4. Tratamento de Problemas Comuns

Grandes Resíduos

  • Verificar precisão de medição
  • Verificar coordenadas dos pontos de controle
  • Considerar definir o ponto como ponto de verificação

Viés Sistemático

  • Verificar configurações do sistema de coordenadas
  • Verificar sistema de coordenadas dos pontos de controle
  • Considerar problemas de calibração da câmera

Resultados de Saída

Resultados AT otimizados são salvos no mesmo local:

  • milestones/mvs_optimized.xml - Formato interno otimizado
  • products/AT/block_exchange_optimized.xml - Formato de intercâmbio otimizado
  • log/optimization_report.txt - Relatório de otimização

Exemplo: Fluxo de Trabalho Completo

import subprocess
import json

# 1. Executar AT inicial
at_config = {
"license_id": 9200,
"working_dir": "C:/Project",
# ... outros parâmetros
}
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. Realizar medição de pontos de controle (geralmente feito em software externo)

# 3. Preparar configuração de otimização
optimize_config = at_config.copy()
optimize_config["control_point"] = {
"coordinate_system": {"type": 3, "epsg_code": 32650},
"points": [
# Dados dos pontos de controle
]
}
with open("optimize_config.json", "w") as f:
json.dump(optimize_config, f)

# 4. Executar otimização
subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "3", "-task_json", "optimize_config.json"])

# 5. Usar resultados otimizados para reconstrução 3D
# ...

Próximos Passos


Dica: Os pontos de controle são a chave para garantir a precisão do mapeamento. A colocação adequada de pontos de controle e medição precisa são a base para obter resultados de alta precisão.