メインコンテンツまでスキップ

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. 反復最適化

# 第1回最適化
reconstruct_full_engine.exe -reconstruct_type 3 -task_json optimize_v1.json

# 結果チェック、異常点調整

# 第2回最適化
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復元に使用
# ...

次のステップ


ヒント:対空標点はマッピング精度を保証する鍵です。適切な対空標点配置と正確な測定が高精度結果を得るための基礎です。