フォトグラメトリの写真って何枚撮ればいい?
記事の表紙にララ・クロフト。あとで説明したいです。
- フォトグラメトリの写真って何枚撮ればいい?ってよく聞かれます。
初心者(未経験者)に聞かれたらまあとりあえず数十枚撮ってみてソフトで処理すればいいと答えますが、経験者(一年?~)からだったらこう答えたい。
(by vlad https://www.facebook.com/photo.php?fbid=1168046383361606&set=gm.1038982822976229&type=3&theater )
しませんが。
記事の導入として
自分の前回の記事で紹介したこちらの作例をもう一回見ていただきたい。
少年B , Single Camera Head Scanning, Raw Mesh - 3D model by Yu (@FFT_kedar) - Sketchfab
撮影枚数16枚です。(シングルカメラ)
少ないでしょうね。 専用のスタジオ作って撮るんだったら僕は同時撮影で少なくとも60枚を撮りたかったです。
でも16枚撮ればこのクオリティのモデルが作れます。
- さて、感覚で撮るをやめましょう
二年前に読んでめっちゃためになった参考資料を紹介したい。
Where and how many images required for good photogrammetry 3D scan (By vlad)
彼はまずローポリの椅子を例にしてフォトグラメトリの撮影方法について説明します。
被写体から理想なテクスチャを取得するために、被写体すべての面に対して一つの面に少なくとも一枚の写真が必要です。(もっと簡単な例でいうと、コピー機は紙、つまり板ポリのテクスチャが撮れます的な。 また理想な立方体のテクスチャを撮るなら6枚が必要)
そして形状をスキャンする時はフォトグラメトリでは写真と写真の間の視差で形状を計算します。 一つの理想な面を撮るのに少なくとも3枚の写真が必要です。
また、それぞれ90度となる3つのサーフェイスに対して、写真と写真の繋がりを考えると、もともとサーフェイスを撮るための3組、合計9枚の写真を繋ぎ合わせるために、角に追加2組合計6枚。
合計少なくとも15枚を撮るべきだといいます。
クオリティがめっちゃ下がりますが、5枚でもある程度のテクスチャと形状が撮れます。
vladさんの資料はまだ半分残っていますが、ここでは一旦記事冒頭のフェイシャルスキャンに戻ります。
- 人の顔をローポリでに。
初代のララ・クロフトみたいなポリゴンを想像してみましょう。
現実のものは無限のサーフェイスを持っています。(トゥームレイダー最新作のよりはるかに多いポリゴン数)ここまで説明してきたシナリオ通りにすべてをきれいに撮るのがまず不可能です。
つまり現実の被写体を簡単に複数の面で構成されると考えて撮影すればいいと考えられます。vladさんが出したローポリの椅子のように。
これだったらフォトグラメトリの写真を最低限何枚撮ればいいかわかると思います。
サーフェイスの数が6。
すべての平面に対して1枚
→ 6枚
簡易撮影バージョン (サーフェイス数3に対して5枚のメソッド)
→ 6 + 9(エッジに向けての9枚)
→15枚 があればちょうどそんな感じに撮れるはずです。
ちなみに今回の撮影枚数は16でした。
(サーフェイス1と5が近いことや、2つのサーフェイスのなす角が90度より小さいことからモデルをもっと簡略化することもできます。その分のクオリティがさがります。)
逆に必要最低限の撮影枚数ではなく、最高なクオリティにスキャンをしたいなら何枚がいいかというと、無限/無制限です。
現実の物体は無限な面を持っていますから。
→必要な解像度で被写体を簡略化してそれに合わせた撮影方法でやればいいと思います。
面で考えましょう。
- vladさんの資料の続きです。 オーバーラップについて
フォトグラメトリは基本「ステレオ」情報、視差で三次元形状を計算します。
この図でいう赤い範囲から形状が計算されます。およそカメラ1、カメラ2の映ってる範囲それぞれの6、7割です。これがフォトグラメトリでよく言われるオーバーラップ率です。
しかし実世界のカメラはレンズの歪みや解像、ボケなどの影響で、センサーの隅の画素で計算された三次元形状は信頼性が低いか、そもそもボケで計算できなかったりします。つまり元写真で見た6割オーバーラップ率を有するデータセットは実際の処理では6割より低いオーバーラップ率となります。
そのため、大体のソフトは高い(60%-80%↑)オーバーラップ率をおすすめしています。
ちなみに
Do not limit the number of images, RealityCapture can handle any.
Taking pictures for photogrammetry – RealityCapture Support
(メモリ16GB->2500枚ぐらいまで)