サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
moitkfm.blogspot.com
画像からの三次元復元処理や拡張現実感のための位置合わせ処理において、画像を撮影したカメラの位置・姿勢が必要になることがある。ここでは、カメラの内部パラメータ(焦点距離、画像中心座標、アスペクト比など)は既知とし、カメラの外部パラメータ(並進と回転)を求める方法を紹介する。 カメラの位置・姿勢は、三次元位置が既知の点Pとその画像上での観測座標pの複数の対応から求めることが出来る。このような問題はPerspective-n-Pont Problem(PnP問題)として知られている。OpenCVにはPnP問題を解くための関数cv::SolvePnPが用意されている。この関数の入力は三次元位置が既知の点の配列(objectPoints)とその画像上での観測座標の配列(imagePoints)、カメラの内部パラメータ行列、歪係数を入力とし、カメラの外部パラメータ(回転ベクトル、並進ベクトル)を推定す
これから何度かに分けて、Structure-from-Motion(SfM)法で画像から三次元情報を復元してくれるVisualSfMというソフトの使い方を説明していこうと思います。VisualSfMは、Changchang Wu博士(現在、Google?)が作成したソフトで、マルチコア計算機で特徴抽出、マッチング、バンドル調整を効率よく計算できるようになっています。 さらに、SfM法で得られるのは疎な形状情報なので、密な形状復元を行いたい場合はPMVS/CMVSを後処理で行うことが出来るようになっています。ただし、PMVS/CMVSを使う場合には、別途PMVS/CMVSの実行ファイルをダウンロードしておく必要があります。 また、密な復元+面貼りが可能なCMP-MVS用の入力データの書き出しを行うことも出来ます。 ソフトウェアはVisualSfMのトップページにあるリンクからダウンロードする
2枚の画像から抽出した特徴点を対応付ける。特徴点の抽出方法はOpenCVを使った特徴点抽出を参照。 対応付けを行うためにはcv::DescriptorMatcherクラスを用いる。 最初にcv::DescriptorMatcher::createでオブジェクトを生成する。この時、マッチングの方法を指定することが出来る。下記のコードではBruteForceを指定して全探索によって対応点を見つけている。 使い方は、DescriptorMatcher::matchを呼び出し、2枚の画像から抽出した特徴量と対応付け結果を格納するためのDMatch配列を引数として渡すだけ。 ただし、一方向のみの探索では、対応付け対象の特徴点が複数の特徴点と対応づく可能性がある。誤対応を減らすためには、Discriminabilityのチェックや下記のコードのおまけにあるようなクロスチェックを行う必要がある。 #in
このページを最初にブックマークしてみませんか?
『moitkfm.blogspot.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く