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_point | JSON | 対空標点グループ情報 |
対空標点データ構造
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 | 説明 |
---|---|---|
中国 | 4490 | CGCS2000地理 |
中国 | 4547-4554 | CGCS2000ガウス投影 |
全球 | 32601-32660 | UTM北半球 |
全球 | 32701-32760 | UTM南半球 |
品質評価
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. 測定プロセス
- AT結果ビューアで画像をロード
- 対空標点の対応地物を見つける
- ピクセル位置を正確にマーク
- マルチビュー一貫性をチェック
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復元に使用
# ...
次のステップ
- 最適化されたAT結果をReconstruct3Dに使用
- 大規模データタイリング処理について学習
- 基本概念をチェックして対空標点使用を理解
ヒント:対空標点はマッピング精度を保証する鍵です。適切な対空標点配置と正確な測定が高精度結果を得るための基礎です。