본문으로 건너뛰기

OptimizeAT - 제어점 제약 AT 최적화

개요

OptimizeAT 인터페이스는 제어점을 사용하여 항공삼각측량 결과를 최적화하는데 사용됩니다. 이 인터페이스는 연결점 측정을 완료한 후 호출되며, 지상기준점(GCP)을 도입하여 AT의 절대 정확도를 향상시킵니다.

사용 사례
  • 높은 절대 정확도가 필요한 측량 프로젝트
  • 지상기준점 데이터가 있는 프로젝트
  • AT 정확도 검증 및 개선 필요
  • 공학측량 및 전문 지도 제작

워크플로우

인터페이스 호출

명령줄 호출

reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_config.json

매개변수 설명

  • reconstruct_type: 3으로 고정 (OptimizeAT 표시)
  • task_json: 구성 파일 경로

구성 매개변수

OptimizeAT는 ReconstructAT와 동일한 매개변수를 사용하며, 추가로 제어점 매개변수를 포함합니다:

필수 매개변수

ReconstructAT의 모든 필수 매개변수와 추가로:

매개변수타입설명
control_pointJSON제어점 그룹 정보

제어점 데이터 구조

ControlPointGroup

{
"coordinate_system": { // 제어점 좌표계
"type": 3, // 일반적으로 투영 좌표계
"epsg_code": 32650 // 예: UTM Zone 50N
},
"points": [ // 제어점 목록
// ControlPoint 객체 배열
]
}

ControlPoint

{
"id": "GCP001", // 제어점 이름
"coordinate": [x, y, z], // 제어점 좌표
"usage": 0, // 0=제어점, 1=검사점, 2=비활성화
"observations": [ // 이미지 관측
{
"id": 1, // 이미지 ID
"uv": [1234.5, 2345.6] // 픽셀 좌표
}
]
}

완전한 구성 예제

기본 제어점 최적화

{
"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": [...], // ReconstructAT와 동일
"image_meta_data": [...], // 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, // 검사점
"observations": [
{
"id": 2,
"uv": [1567.8, 2345.6]
}
]
}
]
}
}

고정밀도 측량 프로젝트 구성

{
"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 고정밀도
"position_constant": false // 최적화 허용
}
}
],
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 4978 // 고정밀도를 위한 ECEF
},
"points": [
// 균등하게 분포된 여러 제어점
{
"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": [...]
}
]
}
}

제어점 배치 원칙

1. 수량 요구사항

  • 최소: 3개 제어점 (해결에 필요)
  • 권장: 5-8개 제어점 + 2-3개 검사점
  • 대면적: 50-100개 이미지당 최소 1개 제어점

2. 분포 요구사항

이상적인 제어점 분포:

+-----+-----+-----+
| GCP | GCP | GCP |
+-----+-----+-----+
| GCP | CHK | GCP | GCP: 제어점
+-----+-----+-----+ CHK: 검사점
| GCP | GCP | GCP |
+-----+-----+-----+

3. 고도 분포

  • 서로 다른 고도 레벨에 제어점 배치
  • 모든 제어점이 같은 평면에 있는 것을 피함
  • 산악 프로젝트에서 고도 변화에 특별한 주의

측정 정확도 요구사항

픽셀 정확도

  • 이상적: < 1 픽셀
  • 허용 가능: < 2 픽셀
  • 개선 필요: > 3 픽셀

다중 시점 관측

  • 각 제어점이 최소 2개 이미지에서 보임
  • 이상적으로는 3-5개 이미지
  • 시야각 차이 > 15°

좌표계 고려사항

1. 좌표계 일관성

{
// 이미지 위치는 일반적으로 WGS84
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},

// 제어점은 일반적으로 지역 투영 좌표계
"control_point": {
"coordinate_system": {
"type": 3,
"epsg_code": 32650 // 프로젝트 위치에 기반하여 선택
}
}
}

2. 일반적인 좌표계

지역EPSG설명
중국4490CGCS2000 지리좌표계
중국4547-4554CGCS2000 가우스 투영
전세계32601-32660UTM 북반구
전세계32701-32760UTM 남반구

품질 평가

1. 최적화 보고서 해석

최적화 후 로그에서 정확도 보고서 확인:

[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. 정확도 기준

프로젝트 유형수평 정확도수직 정확도
지형도 제작< 0.05m< 0.10m
공학 측량< 0.10m< 0.15m
일반 응용< 0.30m< 0.50m

모범 사례

1. 제어점 수집

  • RTK/토탈스테이션과 같은 고정밀 장비 사용
  • 안정적이고 쉽게 식별 가능한 특징 선택
  • 자세한 점 설명과 사진 기록

2. 측정 과정

  1. AT 결과 뷰어에 이미지 로드
  2. 제어점에 해당하는 특징 찾기
  3. 픽셀 위치를 정확하게 표시
  4. 다중 시점 일관성 확인

3. 반복적 최적화

# 첫 번째 최적화
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v1.json

# 결과 확인, 이상점 조정

# 두 번째 최적화
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v2.json

4. 일반적인 문제 처리

큰 잔차

  • 측정 정확도 확인
  • 제어점 좌표 검증
  • 점을 검사점으로 설정하는 것을 고려

체계적 편향

  • 좌표계 설정 확인
  • 제어점 좌표계 검증
  • 카메라 보정 문제 고려

출력 결과

최적화된 AT 결과는 동일한 위치에 저장됩니다:

  • milestones/mvs_optimized.xml - 최적화된 내부 형식
  • products/AT/block_exchange_optimized.xml - 최적화된 교환 형식
  • log/optimization_report.txt - 최적화 보고서

예제: 완전한 워크플로우

import subprocess
import json

# 1. 초기 AT 실행
at_config = {
"license_id": 9200,
"working_dir": "C:/Project",
# ... 기타 매개변수
}
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. 제어점 측정 수행 (일반적으로 외부 소프트웨어에서 수행)

# 3. 최적화 구성 준비
optimize_config = at_config.copy()
optimize_config["control_point"] = {
"coordinate_system": {"type": 3, "epsg_code": 32650},
"points": [
# 제어점 데이터
]
}
with open("optimize_config.json", "w") as f:
json.dump(optimize_config, f)

# 4. 최적화 실행
subprocess.run(["reconstruct_full_engine.exe", "-reconstruct_type", "3", "-task_json", "optimize_config.json"])

# 5. 최적화된 결과를 3D 재구성에 사용
# ...

다음 단계


팁: 제어점은 매핑 정확도를 보장하는 핵심입니다. 적절한 제어점 배치와 정확한 측정이 고정밀도 결과를 얻기 위한 기반입니다.