1.はじめに
colmapが最後まで動き、嬉しくなったので、今度は動画をもとに3Dモデル作成に挑戦した。ある対象の周りを静止画で何十枚も撮るのは結構大変。動画で撮影したものから3Dモデルができれば便利ではと考えた結果です。。
参考にしたのは、以下のサイトです。
サイト1:https://blog.goo.ne.jp/yoossh/e/d1278b39229eca47774fe5646a2bb2d7
サイト2:https://buaiso.blogspot.com/2018/11/colmap.html
2.実行
実行は以下の順序で行った。
(1) 動画から静止画の作成
(2) 静止画に対しcolmapの適用
3.動画から静止画の作成
参考にしたサイト1,2でも用いている ffmpeg というフリーソフトを用いてDOS窓から
ffmpeg -i akatsuka_20220815.mp4 -vf framestep=10 -vcodec png images\img-%03d.png
とした。-i, -vf -vcodec などのパラメータの意味はよくわからないが、 xxx.mp4 は入力する動画ファイル、出力はimgesというフォルダーの中に連番で img-xxx.png という静止画ファイルができるようにした。 framestep=10 は間引くフレーム数。最初このパラメータなしで実行したところ約30秒の動画から849枚の静止画が作成されたので、10フレーム毎の間引きとしたところ85枚に減少した。
【近くの公園での動画】 【抽出した静止画の一枚】
4. 静止画に対するcolmapの適用
当初、パラメータの調整ができるマニュアルモードで行おうと思ったが、最初の Feature extraction の Camera model を設定するところで困ってしまった。上記サイト2では、設定の例が示されているが、その背景にある理屈がよくわからなかったので、サイト1にしたがいAutomatic reconstruction でやってみることにした。この場合、下に示すパラメータ設定画面に max_image_size の項がないことが問題となる。一方、Data type として Video frames を設定すれば、カメラパラメータの設定を避けることができる(本当は何らかの設定がされているはず。どうなっているのだろう)。また、非力な実行環境を考慮して Quality を low に設定した。これで、Runさせるとなぜか最後まで実行できた。
【Automatic reconstructionでのパラメータの設定】
【Qualityをlowに設定したときのDense reconstructionの結果】
このように、lowではさすがに出来上がった点群の品質が低かったので、上の設定で Quality を medium にして実施すると、6枚目のステレオマッチングのところで落ちてしまった。Feature extraction と Feature matching の部分はできていたようだったので、Sparce reconstruction からマニュアルで実施。
Dense reconstruction では max_image_size を500に設定して実施した。その結果、画質は lowのときに比べ数段向上した。
【Qualityをmediumに設定したときのDense reconstructionの結果】
その後、QualityをHighにして実施すると、Automatic reconstruction の Feature matching の部分で「GPUメモリが足りない。SiftGPUが十分サポートされていない。」とのエラーが出る。結局、前回のブログに示した実行環境では mediumで得た成果が限界のようだ。これ以上良い質の成果を colmap を用いて出すためには、PCのメインメモリやGPUメモリを 増設しなければいけないようだ。
5. その他
4.にあげた例の動画は、歩きながら左側面を撮ったものであった。左右両面が一度に撮れればいいなと思い、歩きながら前方を撮影した動画で colmap を適用してみた。結果を以下に示す。
【歩きながら前方を撮影した動画からのDense reconstructionの結果】
そろそろPCを買い替え、実行環境を強力にしようかな。
※コメント投稿者のブログIDはブログ作成者のみに通知されます