今、新幹線から撮影した動画からパースマップに使えるような背景CGモデルを復元できないかなぁと思い、いろいろと試行錯誤しています。
とりあえず、新幹線からiPhoneで動画を撮影してきて、試しにその動画から自分の昔作ったステレオマッチングのプログラムをオプティカルフローの計算に応用してフレーム間での視差計算をさせてみました。アルゴリズムは評価関数にSSDを用いたブロックマッチングです。
ブロックマッチングでx, y方向のオプティカルフローを計算させて、オプティカルフローの大きさを色の濃さに置き換えています。
オプティカルフロー計算のアルゴリズムはいろいろあるようですが、とりあえず自分がすぐに使えるものがブロックマッチングだったので、この手法を使いました。結果、それなりに視差計算ができて良かったです。
しかし、ここからが問題です。
何のキャリブレーションも行っていなくて、かつ、画角やfar clip、 near clipの情報がわからない絵から3次元モデルを復元しなければならないというのは結構面倒なはず。
とりあえず、私は3次元モデルの処理は簡単な処理しかやった経験がなかったので、今はまだ基本的な座標変換などのプログラムを作っています。今のところ射影変換の逆変換が無事できるようになりました。
視差マップにカメラパラメータを与えてあげて、簡易なモデルをおこすプログラムなら作ったことがあるのですが、複数の未知パラメータの視差マップをうまいこと重ねてひとつのモデルを作るというのはやったことがないです。これができるようになったら結構応用していろいろと楽しいことができそうです。
復元したモデルの確認にMayaを使おうと思って、久しぶりにplug-inを作っていたのですが、ノードプラグインでダーティフラグを立てるためのattributeAffects関数が思ったように動かなくて嫌になってしまいました。
こういう手続きの部分で時間がとられてしまうのは本当に無駄に感じます。Maya 2009でプラグインの中でQtのGUIを呼び出して使おうとすると何を言う間もなく即落ちするし...
自分でOpenGLで3D Viewerを作りかけて放置したやつがあるので、もうそっちで全部作ってしまおうかとも考えています。自分で1から作ったソフトウェアはバグがあっても原因究明がすぐにできるのでいいです。
とりあえず、新幹線からiPhoneで動画を撮影してきて、試しにその動画から自分の昔作ったステレオマッチングのプログラムをオプティカルフローの計算に応用してフレーム間での視差計算をさせてみました。アルゴリズムは評価関数にSSDを用いたブロックマッチングです。
ブロックマッチングでx, y方向のオプティカルフローを計算させて、オプティカルフローの大きさを色の濃さに置き換えています。
オプティカルフロー計算のアルゴリズムはいろいろあるようですが、とりあえず自分がすぐに使えるものがブロックマッチングだったので、この手法を使いました。結果、それなりに視差計算ができて良かったです。
しかし、ここからが問題です。
何のキャリブレーションも行っていなくて、かつ、画角やfar clip、 near clipの情報がわからない絵から3次元モデルを復元しなければならないというのは結構面倒なはず。
とりあえず、私は3次元モデルの処理は簡単な処理しかやった経験がなかったので、今はまだ基本的な座標変換などのプログラムを作っています。今のところ射影変換の逆変換が無事できるようになりました。
視差マップにカメラパラメータを与えてあげて、簡易なモデルをおこすプログラムなら作ったことがあるのですが、複数の未知パラメータの視差マップをうまいこと重ねてひとつのモデルを作るというのはやったことがないです。これができるようになったら結構応用していろいろと楽しいことができそうです。
復元したモデルの確認にMayaを使おうと思って、久しぶりにplug-inを作っていたのですが、ノードプラグインでダーティフラグを立てるためのattributeAffects関数が思ったように動かなくて嫌になってしまいました。
こういう手続きの部分で時間がとられてしまうのは本当に無駄に感じます。Maya 2009でプラグインの中でQtのGUIを呼び出して使おうとすると何を言う間もなく即落ちするし...
自分でOpenGLで3D Viewerを作りかけて放置したやつがあるので、もうそっちで全部作ってしまおうかとも考えています。自分で1から作ったソフトウェアはバグがあっても原因究明がすぐにできるのでいいです。