3D再構成と空間の獲得。写真から、点検で計測できる幾何をどう作るか

3D再構成と空間の獲得。写真から、点検で計測できる幾何をどう作るか

第2回で、センサが撮るのは平面の絵か疎な点であり、それだけでは寸法にならないところまで見ました。今回は、その絵と点を空間に組み上げる段階、三次元再構成を扱います。

現場の写真を何十枚も撮って、橋の形を起こす。その形の上で、たわみを測り、前回と重ね、変状の位置を特定する。ここができて初めて、点検は「一枚の画像を見る」から「構造物そのものを扱う」に変わります。写真から形を起こすSfMとMVS、場面を表すNeRFと3Dガウシアンスプラッティング、動きながら作るSLAM、点群を重ねるICP。これらを機構までさかのぼると、最後は、点検で計測に使える幾何、正射影像に行き着きます。

写真は平面。空間はどう起こすか

一枚の写真は、三次元の世界を平面に潰したものです。潰す過程で奥行きが失われています。これを複数枚から取り戻すのが、SfM(structure from motion)です。

対応づけ 同じ点を、別の写真で見つける

やることは、まず対応づけです。重なりのある写真どうしで、同じ点がどこに写っているかを結びます。ただ、明るさや角度が変わっても同じ点だと分かる目印が要る。そこで各画像から、周囲の模様の勾配をまとめた特徴量、いわば点の指紋を取り出します。回転や拡大に強い指紋を使うことで、別の写真の似た指紋どうしを対応候補にできます。

候補には必ず誤りが混じります。まったく違う場所の似た模様が結ばれてしまう。これを外すのが、幾何的な整合性の検査です。正しい対応なら、二枚の画像のあいだには、ある点が片方の画像のどこに写れば、もう片方では必ずこの直線の上に来る、という拘束が成り立ちます。この拘束を、少数の対応から仮に立てては多数決で検証する手順を繰り返し、拘束に合う対応だけを残す。外れ値に強いこの選別があって、対応づけは実用になります。

バンドル調整 姿勢と形を、同時に解く

残った正しい対応から、まず二枚のあいだの相対的な姿勢を、対応点が満たす幾何の拘束から解きます。二台のカメラの位置関係が分かれば、同じ点を二方向から見た視線が空間で交わる場所として、その点の三次元位置が定まります。二本の直線の交点を求めるこの操作を、三角測量と呼びます。こうして二枚から出発した骨組みに、三枚目、四枚目と写真を一枚ずつ足し、そのつど新しい点を三角測量で加えていく。写真が増えるほど誤差もたまるので、要所で全体をまとめて調整し直します。

その調整が、バンドル調整です。推定した三次元点を各画像に投影し直したときのずれ、再投影誤差を、すべての点とすべてのカメラについて足し合わせ、それが最小になるようにパラメータを一括で微調整する。この大規模な最適化を、一枚ずつ足しながら繰り返すやり方が広く使われ、その代表的な実装がCOLMAPです。全部の写真をいっぺんに解く流儀もあり、速い代わりに外れ値に弱い。ここまでで得られるのは、カメラの姿勢と、目印だけの疎な点群です。

疎なままでは形になりません。姿勢が分かった写真をもとに、画素の一つひとつに奥行きを与えて点を密にするのがMVS(multi-view stereo)です。同じ面を複数の視点から見て、どの奥行きなら各画像の見え方がいちばん一致するかを画素ごとに探す。密な点群からは、面を張ってメッシュにし、写真を貼ってテクスチャを付けることもできます。写真だけから形を起こすこの一連を、測量の言葉ではフォトグラメトリと呼びます。

ここに、第2回のスケール不定が効いてきます。写真だけから起こした形は、全体を何倍にしても矛盾しません。倍率の自由が一つ残る。だから正しい寸法を入れるには、既知の長さの基準物、二眼の基線、あるいは緯度経度のような外の手がかりが要ります。形は起こせても、それが何メートルかは、外から与えるのです。

NeRF と 3D Gaussian Splatting

点群やメッシュは、形を点や面で持ちます。近年、場面そのものを別のやり方で表す技術が二つ、再構成を塗り替えました。

NeRF 場面を、関数として持つ

NeRF(neural radiance fields)は、空間を点の集まりとしてではなく、連続的な関数として持ちます。空間の任意の位置と視線の向きを入れると、そこの密度と色が返る。この関数を、小さなニューラルネットが担います。画像を作るときは、カメラから伸ばした光線の上を細かくたどり、各点の密度と色を、手前からの透過率で重み付けて積み重ねる。この体積レンダリングを全画素について行うと、撮っていない視点の画像まで写実的に合成できます。

細部が出せるのには、仕掛けが二つあります。一つは位置符号化です。位置の座標をそのままネットに入れると、なめらかな関数はぼやけた像しか出せない。そこで座標を、いろいろな周期の三角関数に展開してから入れます。高い周期まで混ぜることで、細かな模様まで表せるようになりました。もう一つは、光線上のたどり方です。最初は粗く間隔をあけてたどり、物がありそうな深さの見当をつけてから、そのあたりを細かくたどり直す。この粗密二段のたどり方で、無駄な計算を減らしつつ、境目をはっきり出します。

弱みは三つ。場面ごとに関数を学習し直す必要があり、時間がかかる。描画も、光線ごとに関数を何度も呼ぶので遅い。そして形は関数の中に暗黙に埋まっていて、点群やメッシュのように取り出して測るのが難しい。学習と描画の遅さは、空間をハッシュ表のような格子で持って関数を軽くする改良で大きく縮みましたが、暗黙であるという性質は変わりません。写実的な見え方は得意でも、寸法を測る道具としては回り道になります。

3D Gaussian Splatting 場面を、明示的な粒で持つ

3Dガウシアンスプラッティングは、逆の発想です。場面を、数百万個の三次元ガウス分布、いわば向きと大きさを持った半透明の粒の集まりとして、明示的に持ちます。各粒は、位置と、方向ごとに違う広がり(異方性の共分散)、透明度、そして見る向きで変わる色を持ちます。これらを、撮った写真に合うように最適化します。最適化の途中で、足りない場所には粒を増やし、要らない粒は消す。この増減の制御が、少ない粒で細部まで表す鍵になります。

見る向きで変わる色を持つ、と書きました。金属の反射のように、同じ点でも角度によって色が変わる。これを、向きに応じて値が変わる関数の重ね合わせ、球面調和関数で表します。少ない係数で、角度による色の変化をなめらかに持てる仕掛けです。

画像を作るときは、粒を画面に投影し、画面を小さなタイルに分けて、各タイルにかかる粒を奥行き順に並べ、手前から透明度で重ねていくラスタライズで描きます。関数を何度も呼ぶNeRFと違い、この並べて重ねる処理はGPUと相性がよく、実時間で描けます。並べ替えの順序が、半透明の重なりの見え方を決めるので、そこを速く正しく行うのが実装の勘所です。

3D Gaussian Splattingの実例。同じ場面を手法別に再構成した速度と品質の比較(Gaussian Splatting NeRF 実時間)

上は、この技術の論文が載せた比較です。同じ自転車の場面を、いくつかの手法で再構成し、描画の速さ(fps)と品質(PSNR)を並べています。放射場系のMip-NeRF360が毎秒0.071枚、つまり一枚に十数秒かかるのに対し、3Dガウシアンスプラッティング(Ours)は毎秒135枚。品質はほぼ同等か、上回っています。写実性を保ったまま、描画が千倍以上速い。この速さが、現場を動きながら見る、その場で確認する、という使い方を開きます。

点検にとっての意味は、速さだけではありません。粒として明示的に持つので、点群のように扱え、編集も計測もしやすい。第2回で述べたとおり、点検で欲しいのは寸法を測れる幾何です。写実の美しさより、測れること、扱えることが効く。だから点検の文脈では、明示的で速いこちらが扱いやすい場面が多くなります。もっとも、細いひび割れそのものを粒で表しきれるかは別問題で、微細な模様は依然として高解像度の画像の担当です。再構成は形を、画像は模様を。役割は分かれています。

SLAM と点群配准

SfMは、撮り終えた写真の束をまとめて処理する、後処理の技術です。これに対し、動きながらその場で地図を作る技術がSLAM(simultaneous localization and mapping)です。

SLAM 動きながら、地図と自分の位置を同時に作る

ドローンやロボットが動くと、新しい景色が次々に入ってきます。SLAMは、入ってくる観測から地図を少しずつ広げると同時に、その地図の中で自分がどこにいるかを推定します。地図を作るには自分の位置が要り、位置を知るには地図が要る。この鶏と卵を、両方を少しずつ更新して解きます。

多くのSLAMは、二つの部分に分かれます。一つは、毎フレーム速く動く追跡です。直前の位置から、今どれだけ動いたかを、映像や点群の変化から素早く見積もる。もう一つは、後ろでじっくり効く最適化です。要所のフレーム(キーフレーム)どうしの関係を、大きなつながりのグラフとして解き直し、全体のつじつまを合わせる。カメラだけで解く視覚SLAM、加速度やジャイロを足して揺れと速い動きに強くした視覚慣性SLAM、LiDARの点群を照合して解くLiDAR SLAMがあります。

避けられない弱点が、ドリフトです。一歩ごとの見積もりにわずかな誤差があり、進むほど積み重なって、地図がゆがんでいく。まっすぐな廊下が、ぐるりと回って戻ると、始点と終点がずれる。これを直すのがループ閉じ込みで、前に来た場所にまた戻ったと気づいたとき、そこがつながるようにグラフ全体を補正します。

戻ったと気づく、そこにも工夫が要ります。景色を毎回まるごと照合するのは重いので、画像から拾った特徴を、単語の集まりのように要約しておく。新しい景色の要約が、過去のどれかとよく似ていたら、同じ場所に戻った候補とみなす。この見取りは、いちど見失っても地図の中で自分の位置を取り戻す、再定位にも使われます。動きながら作る以上、誤差はたまる。たまった誤差をどこで気づき、どう畳むかが、SLAMの肝です。

ICP 二つの点群を、重ねる

点検は、五年ごとに繰り返します。今年の点群と、前回の点群。この二つを重ねられなければ、変化は語れません。重ねる代表的な手法がICP(iterative closest point)です。

やり方は素朴です。片方の点群の各点について、もう片方でいちばん近い点を対応相手とみなす。その対応がぴったり合うように、全体の回転と並進を少し動かす。動かしたら対応を取り直し、また動かす。これを繰り返して、二つの点群を同じ座標に載せます。点と点の距離で合わせる素朴な形より、点とその周りの面との距離で合わせる形のほうが、平らな面ではよく合います。

弱点は、初めの位置に敏感なことです。二つの点群が最初から大きくずれていると、いちばん近い点を取り違え、間違った合わせ方に落ち着いてしまう。だから実務では、まず特徴的な形どうしをおおまかに合わせる粗い位置合わせを先にかけ、そのうえでICPで詰める、という二段構えを取ります。

ここが、第5回への橋になります。同じ橋脚でも、撮る角度も光も季節も違う。まずICPのような手法で同じ座標に載せ、そのうえで引き算して、初めて「どこがどう変わったか」が出てくる。重ね合わせは、変化検出の前提です。第5回では、この重ねた先で、状態としてどう覚えておくかを扱います。

点検で使える幾何にする

形を起こし、表し、重ねる。技術はそろいました。しかし、点検で使うには、もう一段あります。歪みのない、計測できる絵にすることです。

写真は、レンズと撮る角度で歪みます。斜めから撮れば、手前は大きく奥は小さく写る。この歪んだ絵の上では、ひび割れの長さを正しく測れません。そこで、真上から見下ろしたように、縮尺をそろえた歪みのない画像に直します。これが正射影像(オルソ)です。直すには、面の高さの分布、いわば凹凸の地図が要ります。三次元再構成で得た形が、その高さの地図になる。それをもとに、地形や構造物の出っ張り引っ込みに応じて、それぞれの画素を真上から見た正しい位置に貼り直す。橋桁のように高さの差が大きいものでは、外形の凹凸まで踏まえて貼り直さないと、縁がずれます。できあがった絵の上では、離れた二点の実距離が、そのまま測れます。

国の参考資料は、この正射影像の作り方を具体的に定めています。撮影では、範囲をラップさせ、対象になるべく正対する。相対角が大きいと、周辺の解像度が落ち、被写界深度からピントも外れるからです。そして重要な一節があります。「時期を変えて別な機器やソフトウエア等で生成するための留意事項」として、合成する前の生写真を納品し、別のソフトでも合成できる保存方法にしたがう、と。合成後の絵だけでなく、合成前の素材を残す。これは、五年後に別の道具で作り直せるようにするための設計です。さらに、できた正射影像には緯度経度などの位置情報を付与する。絵に、世界の中の座標が入るのです。

ここまでを一続きにすると、こうなります。センサで撮り(第2回)、SfMやSLAMで形を起こし、正射影像で歪みを取り、緯度経度で世界に位置づける。この幾何が、点検で計測に使える土台であり、次の段階、状態として覚えておくことの器、いわばデジタルツインの幾何的な土台になります。

この器には、目的に応じた細かさの段階があります。国のPLATEAUのような三次元都市モデルでは、橋の表し方が、外形の縁線だけを高さゼロで持ついちばん粗い段階から、外形の立体、屋根や側面の作り分け、そして部材の形まで持つ細かい段階へと、段階立てて定められています。粗い器は軽くて広く扱え、細かい器は重いが詳しい。どこまでの細かさが要るかは、何を測りたいかで決まります。ただし、そこで定められた細かさは、あくまで構造物の外形までです。ひび割れのような部材表面の細部は、この器の粒度には収まりません。器の解像度と、測りたいものの細かさを取り違えると、外形の器にひび割れを探しに行って見つからない、という空振りが起きます。形の器は再構成が、表面の細部は高解像度の画像が担う。この役割分担が、点検の幾何を設計するときの土台になります。

SLAMのシステム全体像。追跡・地図構築・ループ閉じ込みの三スレッドを並列に回す(ORB-SLAM)

おわりに

写真は、平面に潰れて奥行きを失っています。それをSfMが特徴点の対応とバンドル調整で姿勢と疎な点に起こし、MVSが密にする。ただし、スケールだけは外から与えなければならない。場面の持ち方には、関数として畳み込むNeRFと、明示的な粒として置く3Dガウシアンスプラッティングがあり、前者は写実だが遅く暗黙、後者は実時間で扱えて明示的で、測りやすい。点検で効くのは、測れるこちらです。

動きながら作るSLAMはドリフトをループ閉じ込みで畳み、ICPは二つの点群を重ねて、変化検出の前提を用意する。ここに正射影像と緯度経度が加わって、はじめて、点検で計測できる幾何ができあがります。これが、次に「覚えておく」ための、デジタルツインの器の土台になります。

次回は、その幾何の上で、どこに異常があるかを見つける段階、欠陥検知を扱います。なぜ研究用のベンチマークで強いモデルが、現場では崩れるのか。その構造を掘り下げます。


本記事は「Physical AI 点検・保全 講座」シリーズの第3回です。次回は、欠陥検知の技術を扱います。スライド資料(PDF)は無料でダウンロードいただけます。

出典

  • 出典:Mur-Artal, Montiel & Tardós, "ORB-SLAM: a Versatile and Accurate Monocular SLAM System", IEEE T-RO 31(5) (2015) Fig.1
  • Mildenhall et al. "NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis"(ECCV 2020, arXiv:2003.08934)
  • Kerbl, Kopanas, Leimkühler, Drettakis "3D Gaussian Splatting for Real-Time Radiance Field Rendering"(ACM TOG / SIGGRAPH 2023, arXiv:2308.04079)※本文中の比較図はFig.1(CC BY 4.0で利用)
  • Schönberger & Frahm "Structure-from-Motion Revisited"(COLMAP, CVPR 2016)
  • 国土交通省 道路局 国道・技術課「オルソモザイク画像の生成と保存に関する参考資料(案)」(令和4年3月)
  • 国土交通省 道路局 国道・技術課「機械等によるひびわれ図の生成に関する参考資料(案)」(令和4年3月)
  • SfM/MVS(フォトグラメトリ)、SLAM(視覚/視覚慣性/LiDAR)、ICPは三次元ビジョン・ロボティクスの一般的手法に基づく(特定製品の再構成精度は含まない)
  • 国土交通省 PLATEAU(3D都市モデル・LOD)関連(デジタルツインの器の一例として言及)

📄 講義スライドをダウンロード(L03.pptx)

講座のすべてを、無料でお手元に

ハンドブック、講義スライド一式(PPTX)、そして書籍版。すべて無料でお送りします。