やること
前回、写真群から3Dモデルを再構築する手法である「フォトグラメトリ」「NeRF(Neural Radiance Fields)」「3D Gaussian Splatting」を比較しました。3D Gaussian Splattingはメッシュデータが取り出せないため利用が難しいという状況です。
フォトグラメトリとNeRFはメッシュデータが取り出せます。私たちが行っている「遠隔足測定サービス」では、足の写真からフォトグラメトリで3Dモデルを作成して測定しています。そんなこともあり、今回はフォトグラメトリとNeRFの精度の比較をしてみました。
手法
フォトグラメトリ
3DF Zephyerというソフトを使用しました。
NeRF(Luma AI)
Luma AIというオンラインサービスを使用しました。
NeRF(ローカル)
こちらを参考に、Nvidiaが発表した「Instant-ngp」を実装しました。
使用した写真
足長と足囲の精度を比較します。足囲にメジャーを巻いて、足をぐるっと60枚撮影しました。
フォトグラメトリは、無地よりも派手な柄のある物体の3D化の方が得意です。足は比較的無地に近く、フォトグラメトリが苦手とする被写体です。フォトグラメトリの精度は、照明の当て方などの撮影環境によっても大きく左右されます。今回は照明にあまり気を使わずに撮影していますので、撮影環境によってはフォトグラメトリでいくら頑張ってもこれくらいの精度にしかならない、という雰囲気がお分かりいただけるかなと思います。
外観
フォトグラメトリ
床はキレイに取れていますが、肌の表面がゆらゆらしています。肌は特徴点が検出されにくく難しいのです。
NeRF(Luma AI)
床の判定とトリミングは自動でやってくれています。
NeRF(ローカル)
手動でトリミングしてメッシュデータを出力しました。テクスチャは出力できないため頂点カラーだけで進めていくことに注意してください。
解像度
フォトグラメトリとNeRF(Luma AI)の解像度を比較すると、フォトグラは字や目盛りまで見えています。
表面
フォトグラメトリ
やはり肌の表面がゆらゆらしています。はみ出たメジャーが消失しているように、細くて浮いている棒のようなものが苦手です。
NeRF(Luma AI)
表面の状態は比較的良好。はみ出たメジャーは棒のようになっています。Luma AIのメッシュ生成処理が優秀なんだと想像しますが、実際どんな処理をしているかは不明。
NeRF(ローカル)
頂点カラーで表示しているため表面は許してください。スムージング等の処理はなし。浮遊ゴミが多いです。はみ出たメジャーは同じく棒になっています。
ぐるぐる回した動画アップしてあります。
足囲の測定
足囲の断面をかかと側から見たところです。フォトグラメトリとNeRF(Luma AI)はキレイですね。NeRF(ローカル)はトポロジーがめちゃくちゃで、「座標だけ取っといたから後は頑張ってね」と言われている感じ。
手動で足囲を測定します。デコボコしている場合は空気を読んで真ん中あたりに線を引いてやります。3つ重ねてみると、数mmの違いがあります。この数mmがオーダー靴では大きな違いになる場合があります・・・
測定値
すべて手作業で1回だけなので何も統計的なことは言えないことにご注意ください。
足長 [mm] | 足囲 [mm] | |
実測 | 229.0 | 224.0 |
フォトグラ | 224.7 | 227.7 |
NeRF(Luma AI) | 228.9 | 226.5 |
NeRF(ローカル) | 230.8 | 226.2 |
フォトグラよりもNeRF勢の方が良いような気がしています(それってあなたの感想ですよね?)。NeRF(ローカル)は表面こそポコポコしますが、点の座標の精度は高いのではないかと思います。
まとめ
テクスチャを重視する場合は依然としてフォトグラが有利です。フォトグラでうまく3D化できないデータセットの場合(浮いた棒や反射・光沢がある場合)、NeRFは有望な選択肢になることが感じられました。