catalinaの備忘録スマートフォン用の表示で見るcatalinaの備忘録ソフトウェアやハードウェアの備忘録。後で逆引きできるように。2019-09-23OpenMVGを試してみる(環境構築+α)夏が終わって秋らしい気候になってきました。秋は色々と創作意欲を刺激されるイベントが多いので、今のうちから準備をやっていきたいと思います。OpenMVGとは公式はこれですね。github.comMultiViewGeometryの略で、複数視点から三次元ジオメトリを再構成しようってやつです。技術的なカテゴリとしてはフォトグラメトリとかSLAMに近いもののようです。これらの細かい区別はよくわかりません。モチベーションなんでこういうのに興味を持ったかというと、ARアプリと3Dプリンタを組み合わせるときに大事な技術になるのではないかという思いからです。以前のエントリで、ゲーム中の登場アイテムを3Dプリンタで制作してARエフェクトを出してみるってのをやりました。catalina1344.hatenablog.jpこれの最大の問題点は工数がかかりすぎという点で、趣味レベルで余暇を使ってやっているとはいえざっとこれくらいかかりました。それぞれ1か月ARアプリ1か月スケールアップを考えたとき、一番ネックになりそうなのはモデリングかなと思っていて、ここをツール群を使って自動化したいなと考えました。画像からの3Dモデル再構築ってどうなのだろうってことで試してみました。ゲーム中のSSを解析したりする行為は著作権やソフトウェア利用許諾に記載されているリバースエンジニアリングの禁止条項にかかる懸念はありますので、それはその問題として別途解決しておく必要はあります。OpenMVG実行環境をdockerで作るまずは環境作りからです。winwowsを使用します。公式リポジトリをcloneしてきて、ビルドパラメータを修正します。dockerfile末尾でmakeしている箇所の-jオプションを削除します。make;jオプションを削除する意味まずmakeのjオプションはジョブの個数を指定するオプションです。デフォルトの指定だと4プロセス平行に走らせるという意味です。windowsのデフォルト設定ではコンテナに1CPUしか割り当てていません(うちの環境だけかも?)この1CPU環境でjオプションを指定しているとコンテナごと応答なし状態になってしまったので、1プロセスでやってしまうということにしました。起動パラメータまた、このdockerfileのあるディレクトリの一つ上の階層にdocker-compose.ymlファイルを配置します。openMVGのdockerfileが生成するコンテナの起動パラメータをまとめただけのものです。./work:/mnt/work/動作確認チュートリアルらしいファイルが置かれているので叩いてみます。対象ファイルは/opt/openMVG/src/software/SfM/tutorial_demo.py.inですが、そのままではパス指定がダメなので少し編集しますLinux上で編集したりするの大変なので、/mnt/workにでもコピーしてきて編集するのが楽です。(docker-composeでホスト側にマウントするよう指定した)冒頭の部分を次のように書き換えます。"/../../openMVG/exif/sensor_width_database"これでOK。tutorial_demo.py.inです。建物の画像をダウンロードしてきて、解析した結果をtutorial_outディレクトリに出してくれます。ply形式なので、meshlabとかで見られます。いじってみる(失敗)チュートリアルのコードを見ると、GitHub上から画像データをダウンロードしてきて、それをもとにSfMをやってるということがわかります。自前のデータを用意して差し替えてみましょう。コードを次のようにしてみました。read.と言われてしまいます。このエラーの原因は、直前のプロセスまでに生成されているべきSFM_data.binが存在しないために発生するエラーです。sfm_dataが生成されていないかというと、今回はゲーム中の適当な画像を使ったのでexifヘッダが存在しないためでした。OpenMVGの実装上、jpegフォーマットのexifヘッダからカメラ内部パラメータを推測しているようです。(カメラパラメータは、例えばテストデータとして使っているリポジトリにはK.txtなどといった形で記載されているものです。)さらに少しいじってみる(少し進展した)step1でsfmdata\jsonを生成していますが、ここでカメラ内部パラメータを与えることができます。適当に引っ張ってきた値なので、使用する画像に合わせたパラメータに置き換える必要があります。)pIntrisics.wait()これで、plyファイルが出力されるようになりました。meshlabで見てみるとこんな感じになりました。うーん、よくわからないですね。13:13OpenMVGを試してみる(環境構築+α)Tweet広告を非表示にする関連記事2019-03-15OpenCV4.0をソースコードからインストールする想像以上に手間取りました。C/C++でプログラミングをしているとmakefileが必要に...2017-08-05外出先からDNNの学習状況を確認したい今回はchainerでの学習進捗を見るのが目的ですが、あんまりchai...2017-05-04ChainerでMTGのカードを分類する(識別フェーズ)黄金週間なので趣味プログラミングに没頭です。»プロフィールid:Catalina1344ソフトウェアやハードウェアの備忘録。後で逆引きできるように。OpenMVSで3D再構築するOpenMVGを試してみる(環境構築+α)父の日ですね月別アーカイブ忍者AdMaxはてなブログをはじめよう!Catalina1344さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。