OPENCVでUSBカメラを動かしながら撮影した画像列から、
カメラがどのように動いたかを推定したいと考えています。
物体の3次元復元ではなく、カメラの6自由度の運動パラメータの復元がしたいのです。
FindFundamentalMat()を使って、2枚の画像間の対応点から
基礎行列(F行列)を求めることは出来ました。
しかし、このF行列から運動パラメータを復元する方法が分かりません。
参考書やウェブで調べても、F行列の求め方や、
F行列が回転・並進の運動パラメータと未知の内部パラメータの情報を含む、
といった説明はあるのですが、
そこから回転と並進の運動パラメータを復元する説明がなく、
「F行列からRとtが復元できる」と簡単に書かれているばかりです。
具体的にどのような操作をすれば、F行列から回転Rと並進tが求まるのでしょうか?
また、最終的に得たい情報は「各軸回りの回転角は何度か?」と
「各軸方向にどれだけ動いたか?」であるわけですが、
F行列から求まるRはどのような形になるのでしょうか?
参考書ではRは『3×3の行列』だとしているのですが、
R=
|1 0 0 | |cosY 0 sinY||cosZ -sinZ 0|
|0 cosX -sinX| |0 1 0 ||sinZ cosZ 0|
|0 sinX cosX| |-sinY 0 cosY||0 0 1|
だともされています。
単純に、この3つの行列の掛け算結果が3×3行列の形で求まるのでしょうか?
できれば、実例をあげて説明していただくか、
そのようなものが掲載されている書籍かサイト(できれば日本語で)を
教えていただけますでしょうか。
どうかよろしくお願いします。
なお、参考書として以下を利用しています。
「コンピュータビジョン-視覚の幾何学-」佐藤淳著 コロナ社刊 1999年
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは.
基礎行列の特異値分解の結果を利用して回転行列と歪み対称行列を分離するのですから,
回転行列が3*3行列Rとして出てくるのは当然です.
軸周りの回転角が必要なら,この回転行列Rをさらに分解します.
質問者様が書いておられる回転行列は所謂,
「Eular角による表現」というもので,quaternion等と同じく,
回転行列の表現の一つです.
det(R)=1の回転行列Rの分解方法は「まともな方法で調べれば」すぐに出てきます.
ただし,Eular角の表現は一意に決まらなかった(6通り?)気がしますが.
老婆心ですが,その段階で躓いているとするとこれから相当に大変ですよ.
No.1
- 回答日時:
こんにちは.
カメラが校正されているかどうかで話が変わってきます.
校正されているなら基礎行列から基本行列(参考書85項)を作って分解してください.
未校正の場合は基礎行列は7DOFしかないので,
内部パラメターは全ては計算できません.
普通は焦点距離f,相対的なRとtで(1+3+3)DOFを復元します.
参考文献は[1]辺りが適切でしょう.
著者様の研究室のページ(検索すればすぐ分かります)からPDFが入手できます.
[1]が難解であれば[2]を奨めます.
当該分野で比類無き教科書です.
質問に関することがかかれている章
「Epipolar Geometry and the Fundamental Matrix」
は参考 URL からPDFサンプルが入手できます.
[1] 金谷健一,松永 力,基礎行列の分解: 焦点距離の直接的表現
情報処理学会研究報告, 2000-CVIM-120-7,2000.1.20-21,pp. 49-56
[2] Multiple View Geometry in Computer Vision Second Edition
Richard Hartley and Andrew Zisserman,
Cambridge University Press, March 2004.
参考URL:http://www.robots.ox.ac.uk/~vgg/hzbook/
回答ありがとうございます。
紹介いただいた文献を読んで頑張ってみようと思います。
ただ、ざっと目を通したのですが、いずれの文献でも
Rは「3×3の回転行列」であるとされるのみで、
>Rはどのような形になるのでしょうか?
の明確な答えは記載されていないように思います。
できましたら、その点だけでもお教えいただけませんでしょうか。
それとも、Rは手法などで変化して一概にこうだと言えないものなのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- 数学 上三角行列のn乗の証明 2 2023/07/23 21:45
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- DIY・エクステリア 乾電池を直列にすれば3V 並列では1、5Vがあるように フックの法則によれば バネにも直列 並列があ 2 2023/01/30 21:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- 物理学 力学の微分の質問です。 答えを教えてください。至急です。 問題1ある軸の上を並進運動している物体の位 2 2023/01/31 15:10
- 写真 著作権フリーの無料画像 3 2022/12/07 18:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォートランで行列の計算
-
繰り返し1行~28行までを順順に...
-
!(否定)演算子について
-
MATLABにおける行の挿入方法
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
UserForm1.Showでエラーになり...
-
教えて下さい
-
一つのTeratermのマクロで複数...
-
配列数式の解除
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
On ErrorでエラーNoが0
-
String""から型'Double'への変...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
エクセルに張り付けた写真のフ...
-
【VBAエラー】Nextに対するFor...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
H8マイコン C言語でのプロ...
-
!(否定)演算子について
-
C言語で余りがマイナスになる場合
-
MATLABのデータ抽出についてお...
-
mathematicaの質問です
-
MATLABの参考書
-
c言語
-
パイソンのプログラミングにつ...
-
≪C言語≫キー入力の判断について
-
Matlabのspdiags関数
-
cのプログラミングで虚数を含...
-
OPENCVを使ったエピポーラ幾何...
-
フォートラン77での微分と行列
-
Numpyのrandom.multivariate_no...
-
収束計算
-
MATLABにおける行の挿入方法
-
フランク行列の逆行列を求める...
-
BLASのレベル3の『ssyrk』や『s...
-
Z80のフラグレジスタについて
おすすめ情報