【このテーマでは、きちんと記事にまとめる暇のない、速報的なメモ書きを掲載します。】
この記事は、"PhotoScanを極める"テーマのこちらの記事(2017年)などへの補足という位置づけです。
Agisoft MetashapeなどのSfM-MVSソフトウェアでは、SfMの段階において、「バンドル調整」と呼ばれる最適化によりカメラパラメータを推定します(「写真のアラインメント」「カメラの最適化」)。
ここでの最適化とは目的関数を最小化することです。
コンピュータビジョンでいうところの「純粋な」SfMにおける目的関数は再投影誤差の二乗和などであり、要は画像だけでカメラパラメータを求めます。一方、Agisoft Metashapeなどの、いわゆる写真測量用途に使われるSfM-MVSソフトウェアでは、GNSSやTSなどで測った標定点や撮影位置の座標も利用可能、つまり目的関数に組み込むことができます
(さらに、各画像の光軸の向きの情報も動員できるものがありますが、以下ではそれは使わない状況を想定します)。
これらがどのように目的関数に組み込まれているのかについては公開されていないようですが、
写真測量におけるバンドル調整の理論(参考:日本写真測量学会「解析写真測量 -改訂版-」「三次元画像計測の基礎」)やユーザーマニュアルの記述を参考にすると、
目的関数 = 再投影誤差の2乗和 + α 標定点残差の2乗和 + β 撮影位置残差の2乗和 …(1)
のようになっていると予想されます。
ここでα, βは第1項に対する第2, 3項の相対的な重みであり、Metashapeではこちらのページなどで説明した「タイポイント精度」「マーカー精度」「カメラ精度」といった設定項目で決められます。
これらの設定はα, βを通じて最適化の結果、つまりカメラパラメータに大きな影響を与えます。例えば
- 「タイポイント精度 [pix]」を大きくすると、相対的に標定点や撮影位置の座標が重視される
- 「カメラ精度 [m]」を大きくすると、相対的にタイポイントの定める共線条件が重視される
ようになります。
一方、上式(1)のように2乗和で構成される目的関数では、各項の2乗和の計算に用いられるデータ数も、α, βと同様に結果に大きな影響を与えます。例えば、画像数が2倍になると、撮影位置の情報は2倍にしかならない一方で、一般に画像ペアの数は一般にそれ以上に増えるため共線条件式の数も2倍を超えて増え、相対的に第1項「再投影誤差の2乗和」が大きくなり、つまり共線条件が強い影響力を持ちます。
より平易に言えば、α, βにかかる設定を何も変えずとも、画像が増えれば相対的によりタイポイントに(画像間の特徴点のマッチングに)頼るようになります。画像の縮小倍率(アラインメント精度)や、1画像あたり上限特徴点数(キーポイント制限)などを変更してタイポイントを増やした場合にも、同様の影響があります。
反対に、画像が少ない、テクスチャに乏しい、縮小倍率が大きい、キーポイント制限が小さいなどの場合には、タイポイントが少ないため、相対的に標定点や撮影位置が重視されます(結果に強い影響を持ちます)。その結果、例えば撮影位置残差が、「カメラ精度 [m]」で設定した値より小さくなることもあります。例えば撮影位置をRTK-GNSSで測位し、カメラ精度 [m]をX, Y: 0.015, Z: 0.030と与えた場合においても、撮影位置の残差がmmオーダーになったりします。
これは回帰分析・機械学習における過適合 (overfitting)に似て、モデルを誤差にまで無理にあてはめている(誤差にまで合わせこむようにカメラパラメータを捻じ曲げている)というよろしくない状況ですが、共線条件が少ない状況では、上記の目的関数の第1項に対して第3項が大きくなり、そうなってしまうわけです。
カメラ精度 [m]などに、想定される測位誤差を設定したにも関わらず、残差のRMSなどがそれより小さくなる場合には、タイポイントの量ないし質が足りないと判断すべきでしょう。
また本稿では詳しく触れていませんが、テクスチャや画質の問題でマッチングが難しく、共線条件が信頼できない状況でも、タイポイントが少なかったり、タイポイント精度 [pix]に大きな値を設定したりすることで、同様の第2, 3項重視が起こります。