【このテーマの記事は、UAV写真測量について、日々の文献調査や研究で得た、PhotoScanに限らない一般的な情報を掲載していきます。用語の説明は「PhotoScanを極める」に譲ります。】
<はじめに>
標定点には対空標識(板)を置く必要があるが、平坦でない地面に直接置いては安定しないし、周囲の草などに隠れやすい。そこで、上方視界を確保しつつ、しっかり固定するために、杭や距離標など、棒状の物の上に設置されることがある。
しかし、秋の写真測量学会で、このような置き方に否定的な意見を耳にした。
鉛直にそそり立つような地物は下向きの撮影では再現が難しいので、対空標識の周辺、つまり杭自体の3次元形状が十分に再現されず、標定の誤差になる、という趣旨の意見だ。
この記事では、この問題について考察する。
<PhotoScanでは大丈夫>
確かに、対空標識を鉛直な杭に載せると、杭は隠れてしまうか、たとえ隠れなくても、SfMにおいて表面に十分な点が生成されない恐れがある。つまり、対空標識周辺の3次元点群が低密度・不正確になる。
もし、SfM(またはその後のMVS)で生成された3次元点群を参考にSfMの座標系における標定点の位置を決めるならば、例えば3次元点群の中から対空標識の中心に相当する点を選んで標定を行うならば、これは確かに問題だ。上記の発言は、このような標定点の定義方法を想定しているように思う。
しかし、少なくともPhotoScanを普通に使う限りは、何も心配は要らない。
なぜならば、PhotoScanでは、標定点は、3次元点群の上で定義するものではないためだ。その代わり、複数の画像上で目視/自動で判読した対空標識の画像座標から、三角測量の原理で(Triangulationで)推定された3次元位置に定義される。
よって、対空標識周辺が立体的で点群の出来が悪くても、標定点は影響を受けずに定義できる。標定点は動いたり隠れたりしない限り、起伏の大きいところに置いても構わないし、極端な話、宙に浮いていても良いはずだ。
<CGでの実験>
PhotoScanの場合、標定点が宙に浮いていても構わないことを、簡単な実験で確認した。
はじめにBlenderで、特徴点が豊富なランダム模様の水平面を用意し、平面上および15 m、20 m上空に、下図のように対空標識を配置した。各対空標識は、一辺1 mの立方体の上面であり、PhotoScanが自動検出できる「黒地に白丸」で描かれている。
斜め上から見ると、次のようになる。
次に、画素数1500×1000、画面距離f = 1000のピンホールカメラで、100 m上空の下表の位置から、9枚の画像を撮影(レンダリング)した。
例として下に X= 25.000_Y= -10.000_Z= 100.000.png (半分に縮小)を示す。
その後、9枚の画像をPhotoScanに読み込み、SfM(「写真のアラインメント」)を行った後、宙に浮いた4つの対空標識をマーカーとして追加した。マーカーの世界座標としては真値(設定値)を与え、画素座標は「マーカーの検出」で自動検出させた。
さらにその後、これら4点を標定点として用いて、バンドル調整(「カメラの最適化」)を行った。真の内部パラメータはf = 1000のみであるが、それを知らない体で、cx, cy, k1, k2, p1, p2も、同時に最適化している。バンドル調整後のスクリーンショットを下に示す。
4つの標定点が平面上空に浮いている様子と、対空標識周辺、いや対空標識である立方体上面自体にも、一切の点が生成されていないことがわかる。
しかし、標定点残差のRMSは0.00155 mと小さかった。内部パラメータも、下のスクリーンショットのように、fは真値1000 pixに近く、真値が0の他のパラメータは軒並み小さい値となっている。
この状態で、簡単な精度検証として、別途標定点のマーカーと同様に用意しておいた検証点のマーカーをインポートした。その結果、下のスクリーンショットのように、検証点誤差も小さく、RMSは0.00748 mであった。
全マーカーの再投影誤差のRMSが0.063 pix、解像度は平面上15 mで0.085 mであるから、大雑把に平均で0.063 pix × 0.085 m/pix = 0.0054 mくらいの検証点誤差は、カメラパラメータが完璧であっても生じるわけである。実際に、全カメラの外部パラメータと内部パラメータ(f)に全て真値を与え、外部パラメータはほぼ完全に、内部パラメータは完全に真値に固定した状態でアラインメント・バンドル調整をしても、検証点誤差RMSは0.00738 mとなった(外部パラメータは完全には真値に固定できないので、少し)。これを踏まえると、上記の検証点誤差RMS 0.00748 mは、限界に近い精度であることがわかる。
以上から、対空標識が10 m以上も上空に浮いていて、対空標識周辺に点群が存在しなくても、標定の精度上全く問題ないことが確認できた。
PhotoScanを使う場合、対空標識中心(標定点)の画素座標が適切に検出/判読できる、つまり画像上で対空標識が明瞭に写ることが重要で、対空標識の周辺の点群がよく出来ているかどうかは標定に関係ないのだ。もちろん、対空標識と杭のせいで、カメラパラメータの推定に悪影響を与えるほど大規模に、点群が少ない or 低精度な領域が生じるなら話は別だが、現実にはカメラの視野を埋め尽くすほど対空標識を置いたりはしないから、そんなことは考えにくい。