- 締切済み
OPENCVを使ったエピポーラ幾何からのカメラ運動推定
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年
- sinsyu-ya
- お礼率50% (1/2)
- C・C++・C#
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- echoes_x86
- ベストアンサー率65% (21/32)
こんにちは. 基礎行列の特異値分解の結果を利用して回転行列と歪み対称行列を分離するのですから, 回転行列が3*3行列Rとして出てくるのは当然です. 軸周りの回転角が必要なら,この回転行列Rをさらに分解します. 質問者様が書いておられる回転行列は所謂, 「Eular角による表現」というもので,quaternion等と同じく, 回転行列の表現の一つです. det(R)=1の回転行列Rの分解方法は「まともな方法で調べれば」すぐに出てきます. ただし,Eular角の表現は一意に決まらなかった(6通り?)気がしますが. 老婆心ですが,その段階で躓いているとするとこれから相当に大変ですよ.
- echoes_x86
- ベストアンサー率65% (21/32)
こんにちは. カメラが校正されているかどうかで話が変わってきます. 校正されているなら基礎行列から基本行列(参考書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.
関連するQ&A
- 行列
ロール(φ)ピッチ(θ)ヨー(ψ)で回転する場合ということで、X軸→Y軸→Z軸(Z軸→X軸→Y軸ではない)という順番に回転をかけると以下のマトリクスが得られます。 つまり「-SinY」の値から、Y軸に何度回転したかが分かるわけです。 しかしこの時例えば「-SinY」が、0.5だとすると、これは30度か150度になるわけですが、一体どっちなのかという判別が付きません。 つまりCosYの値が+なのか-なのかが分かりません。 どうやって判別すればいいのでしょうか。 教えてください。 このCosYが+か-かを判別できれば、以下のマトリクスから全てを導けるのですが・・・。 CosY*CosZ, CosY*SinZ, -SinY, 0 CosX*SinY*CosZ+SinX*SinZ, CosX*SinY*SinZ-SinX*CosZ, CosX*CosY, 0 SinX*SinY*CosZ-CosX*SinZ, SinX*SinY*SinZ+CosX*CosZ, SinX*CosY, 0 0, 0, 0, 1
- 締切済み
- 数学・算数
- ラグランジュの乗数法について質問があります
「半円の直径を1辺に持ち、その半円に内接する四角形のうちで、面積が最大のものを求める。」 という問題がわかりません。 【考えた方法】 この四角形を四角形ABCDとする。半円の直径上にある辺をABとし、四角形の他の頂点をCDとする。また、円の直径をO、∠DOA=x、∠DOC=y、∠COB=zとする。円の半径をrとする。 (四角形の面積)=r^2×(sinx+siny+sinz)/2=r^2×S/2とおく。 以上の設定より、次の2式が成り立つ。 x+y+z=π (x, y, zはそれぞれπより小さい(1)) sinx+siny+sinz=S ラグランジュの乗数法より cosx - λ = 0 cosy - λ = 0 cosz - λ = 0 よって、λ = cosx = cosy = cosz 条件(1)より、x = y = z よってx = y = z = π/3 以上のように考えたのですが、(x, y, z) = (π/3, π/3, π/3)の場合、Sが最大値を取るかどうかどのように判断すればよいのかわかりません。 出てきた数値を用いるならば、正三角形を3つ合わせた台形が面積最大になる。と思うのですが、どうなのでしょうか? ご回答よろしくお願いします。
- ベストアンサー
- 数学・算数
- 連立三角方程式
角度の範囲を絞るところがわからないので質問します。 問、0°≦x<360°,0°≦y<360°の範囲で次の連立方程式を解け。 sinx+siny=1・・・(1),cosx-cosy=√3・・・(2) (1)からsinx=1-siny・・・(1)' -1≦siny≦1より、1-siny≧0であるからsinx≧0 したがって0°≦x≦180°・・・(3) (2)からcosx=√3+cosy・・・(2)' -1≦cosy≦1より、√3+cosy>0であるからcosx>0 ここがわからないところです。したがって 0°<x<90°,270°<x<360°・・・(4) 自分はcosxは1になることもあるので、0°≦x<90°だと思いました。 また、√3+cosy≧√3-1なので、cosx≧√3-1だからxの範囲はさらに絞られるのではと思いました。 解答では、(3)と(4)の共通範囲をとって、0°<x<90°とし、(1)'(2)'の両辺を平方し、辺辺加えて √3cosy-siny+2=0 ,siny=√3cosy+2・・・(5) 上記のようにして、siny>0 より 0°<siny<180°(5)の両辺を平方して、sin^2y=1-cos^2yを代入して整理して(2cosy+√3)^2=0,cosy=-√3/2これを(2)’に代入してcosx=√3/2 xとyの範囲に注意して、y=150°、x=30°が答えでした。 どなたか、cosx>0のとき0°<x<90°となることを教えてください。お願いします。
- ベストアンサー
- 数学・算数
- (sinx)^2=cosyの微分
(sinx)^2=cosyの微分 (sinx)^2=cosyを 微分するときに siny=√{1-(cosx)^2} というのが途中に出てきますが これはどこからでてきたのでしょうか?? 微分はdy/dxです
- ベストアンサー
- 数学・算数
- 考え方あってますか?
「0≦x≦2π、0≦y≦2πのとき cosx-siny=1かつcosy+sinx=-√3を解け。」という問題を解いたのですが考え方があってるか見てください。特に確かめてほしいのは⇔や⇒の使い方があってるかとか本当に⇔や⇒でいいのかです。 解答は cosy+sinx=-√3 (cosx-siny)^2=1 cosy+sinx=-√3・・・(1) ⇒ (cosy+sinx)^2=3・・・(2)⇔sin(x-y)=1・・・(3)⇔x-y=2/π,-2/3π・・・(4) (2)⇔(3)⇔(4)(これは(2)(3)(4)を満たすx,yの組み合わせの集合は全て同じ。という意味ですよね?)だから(1)⇒(4)。 (1)⇒(4)の意味するところは(1)が成り立てば必ず(4)が成り立つということ。 集合の包括関係で言えば0≦x≦2π、0≦y≦2πの範囲で(4)を満たすx,yの組み合わせの集合の中に(1)を満たすx,yの組み合わせの集合があるということだから (4)と同値のx=y+2/π,y-2/3π・・(5)は(1)でも成り立っている? だからあとは(5)を(1)に代入して (1)⇔ cos(y+π/2 , -3/2π)-siny = 1 cosy+sin(y+π/2,-3/2π)=-√3cosy+cosy=-√3 ⇔ -siny-siny=1 cosy+cosy=-√3 これらを同時に満たすyはy=7/6π。(5)からx=5/3π(x,y)=(5/3π,7/6π) 考え方あってますか? . この質問に補足する.
- 締切済み
- 数学・算数
- 三角関数の問題です。
次の連立方程式を解け。(0°≦x≦y≦180°) cosx + cosy = √6/2 sinx + siny = √6/2 どういうアプローチをかけたら良いのかさっぱり分かりません。考え方だけでも教えていただけないでしょうか?よろしくお願いします。
- ベストアンサー
- 数学・算数
お礼
回答ありがとうございます。 紹介いただいた文献を読んで頑張ってみようと思います。 ただ、ざっと目を通したのですが、いずれの文献でも Rは「3×3の回転行列」であるとされるのみで、 >Rはどのような形になるのでしょうか? の明確な答えは記載されていないように思います。 できましたら、その点だけでもお教えいただけませんでしょうか。 それとも、Rは手法などで変化して一概にこうだと言えないものなのでしょうか。