空中測量研究室の技術ノート【2冊目】

山口大学の1研究室による研究メモです。UAV写真測量, ドローン測量, フォトグラメトリ, SfM/MVSなどと呼ばれる技術の情報があります。

Metashapeを使ったCGシミュレーションでCritical Configurationを調べる

本記事では、前記事:バンドル調整でパラメータの不定性を確認するにはどうするか を踏まえ、前記事で第2の検証方法として挙げた「2. 最適化を実施したときの目的関数値が、θiを誤った値に固定した場合とθiを正しい値に固定した場合で、有意に変わらないかを調べる。」を実演したい。

具体的には、CG空間上で、完全な水平面を、理想的なピンホールカメラを鉛直下向きに向けて撮影した画像セットをMetashapeで解析して、この「平行光軸撮影で、光軸に直交する平面状の被写体を撮ること」が、内部パラメータの一部にとってCritical Configurationであるかどうか(不定になるかどうか)を、調べてみる。不定性を調べる内部パラメータとしては、次の2つをとりあげる。

①準備

使用するCG画像はこんな感じだ。対空標識も写っているが、平面上にあり、飛び出してはいない。6年ほど前のCGシミュレーションに使った画像を利用している。

CG画像の例

まず、内部パラメータに真値を与え、固定してしまう。理想的なピンホールカメラで撮影(レンダリング)しているので、f以外のパラメータは0だ。

内部パラメータを真値に固定する様子

そしてアラインメントをする。言い遅れたが撮影位置は、このように3×5のグリッド状に配置されている。

アラインメントの結果

アラインメント後に一応、ダメ押しのバンドル調整「カメラアラインメントを最適化」をする。

ダメ押しのバンドル調整

その後、再投影誤差RMSをチェックする。撮影位置・向きの情報も、標定点も使っていないバンドル調整なので、目的関数は再投影誤差RMSだ。最小化されているのは、括弧の外にある無次元の値のはずで、今回は0.0112334だ。これが、fもK1も正しい場合の目的関数値として、ベンチマークになる。

再投影誤差RMSの確認

焦点距離fの不定性の検証

準備ができたので、fの不定性の確認に進もう。焦点距離fを固定したまま、値を誤った値1234に変更する。

fを固定したまま、誤った値に変更

このとき、再投影誤差RMSは大きくなるが、当然だから気にしない。fを固定したまま、バンドル調整を行う。

fを誤った値に固定したまま、バンドル調整

バンドル調整後に、目的関数(再投影誤差RMS)をチェックすると、0.0112335となっていて、fが真値の場合の0.0112334とほとんど変わらない。0.0000001だけ大きいのが気になるが、実はMetashapeでは通常のアラインメント直後の「カメラアラインメント最適化」でも最後の桁が増えることはよくあるので、意味のない差と思われる。さらに、今度はfの値を別の誤った値123, 2345, 3456に固定してバンドル調整すると、いずれの場合もぴったり0.0112334になった。

fの値が誤っていても、最適化後の目的関数値が変わらない。

つまり、fが誤っていても、他のパラメータ(今回の場合、f以外の内部パラメータは全て固定されているので、外部パラメータしかないが)がそれに連動して誤る(fの誤りをカバーしようとする、と言えるかもしれない)ことで、目的関数の増加を防げたということだ。これがまさに、上で言うところのfの不定性を示している。

 

③K1の不定性の検証

次にK1の不定性を調べるため、fに真値2000を入れてバンドル調整をやり直し、②の開始時の状態(①の終了時の状態)に戻す。その後、K1に謝った値-0.05を入れて、

K1を固定したまま、誤った値に

すべての内部パラメータを固定したまま、バンドル調整を実施する。

誤ったK1含め、すべての内部パラメータを固定して、バンドル調整

モデルビューで、点群とカメラの配置双方に、ボウル状の変形が確認できる。K1が誤った値に固定されている条件で目的関数を小さくするため、外部パラメータが連動して誤った(K1の誤りをカバーしようとして誤った)ためだ。

ボウル状変形が発生

しかし興味があるのは、目的関数である再投影誤差RMSだ。今回は0.110368と、K1が真値の場合の値0.0112334より増えている。K1を+0.05にすると0.0798123, -0.1にすると0.542339、-0.01にすると0.0118658と、K1の値によって差は異なるが、真値の場合と比べて一貫して増えている

目的関数が増えている

これは、K1はfと異なって、不定ではないことを示している。つまり今回のconfiguration(撮り方と被写体の組み合わせ)は、fにとってはcriticalであるが、K1にとってはcriticalではない

④余談:方法1

ちなみに、再び①の終了時の状態に戻して、K1の固定を外してバンドル調整を実施し、

K1を含めてバンドル調整

「歪曲プロット」のダイアログで、K1の推定値に加えて「誤差」(おそらく標準偏差の推定値)が確認できる。この値0.00779871が、真値(今回は0だが)や推定値-5.1518e-05に対してかなり大きいことから、K1は不定ではないにしろ、やはりよく言われている通り、平行光軸撮影ではK1の 推定のバラつきが大きいこと確認できる。なお「誤差」欄の値が本当に、分散共分散行列などから求めた推定値の標準偏差ならば、その確認は前記事の検証方法1「最適解における分散共分散行列において、θiの分散が非常に大きいかを調べる。」に相当する。

K1の推定値の標準偏差(おそらく)を確認