COLMAPのmodel_alignerを使用し、復元した3Dモデルを絶対座標に位置合わせ(ジオリファレンス)する。
COLMAPのSfM(Structure from Motion)は画像間の特徴点マッチングのみからカメラ位置と3D点群を復元する。この時点では:
一方、パイプラインの入力動画から抽出した各フレームには、DJIドローンのSRT(Telemetry)ファイルから取得したGPS座標(緯度・経度・高度)が紐づいている。
このGPS情報を使えば:
COLMAPの model_aligner は、各カメラ画像に紐づいたGPS座標(緯度・経度・高度)を入力として受け取り、SfMで復元された任意座標系のモデルをENU座標系(East-North-Up: 東・北・天頂)に変換する。
ENU座標とは地表の一点を原点とし、東方向をX、北方向をY、天頂方向をZとする直交座標系で、ドローンの測位データとの親和性が高い。
model_alignerが一部のセグメントでアクセス違反によりクラッシュ。特にセグメント数が多いほど発生確率が高くなる傾向があった。
GPS座標からENU座標への変換時に、座標スケールの不一致が発生。COLMAPのSfM座標系とGPS絶対座標系の間でスケールが大きく異なる場合に変換処理が破綻する。
model_alignerが失敗した場合は raw model(位置合わせなし) でフォールバック。GPS位置情報は失われるが、メッシュ自体は正常に出力される。
初回失敗時にパラメータを調整して最大2回再試行。それでも失敗した場合はraw modelを採用。
原因を特定するため、以下を調査予定:
一部対策 — 根本原因(座標スケール不一致)の完全解決には至っていないが、実運用上はraw model fallbackで問題なし。絶対座標が必要な場合は別途CloudCompareなどで手動ジオリファレンス可能。