アプリ版:「スタンプのみでお礼する」機能のリリースについて

透視投影で撮影された平面を、正面から撮影したように投影変換する処理を教えてください。
または、射影ひずみの補正といわれるものでしょうか?
私なりにいろいろと調べまして、
「画像の平面内の四頂点の座標を求めることができれば、平面の傾きを求めることができる。」
というところまでたどり着きまして、平面の角度を求めるところまではいきました。
しかし、その後の行列変換がわかりません。
単に回転であれば、

1    0    0
0 cosθ -sinθ
0 sinθ cosθ


cosθ 0 sinθ
0   1    0
-sinθ 0 cosθ

をかければよいかと思っていましたが、奥行きの収縮などの関係がわかりません。
どの様な行列をかければ求めることができるのか教えてください。
このような研究をしていますが、行列は苦手なので、簡単な質問でしたらすみません。

A 回答 (2件)

アフィン変換と透視投影の座標変換は以下のURLに詳しく載っていると思いますので、勉強してください。


中に座標変換の式も載っていると思います。
アフィン変換や透視投影の理解に役立つようにイメージ図のあるHPも余分にあげておきました。参考になるかと思います。

アフィン変換と透視投影
http://nis-lab.is.s.u-tokyo.ac.jp/nis/CG/cgtxt/i …
http://www.geocities.co.jp/Hollywood/5174/td.html
http://www-antenna.ee.titech.ac.jp/~hira/hobby/e …
http://hawk.ise.chuo-u.ac.jp/makino-lab/person/i …
http://kawanobe.rs.sanno.ac.jp/~matsunaga_y/rink …
http://navi.cs.kumamoto-u.ac.jp/lecture/computer …

プログラムでの座標変換
http://www.saturn.dti.ne.jp/~npaka/xna/Primitive …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
がんばって勉強してみます。

お礼日時:2008/01/17 01:29

 


まだ見てるかな?
 
射影変換とかホモグラフィと呼ばれる方法で座標変換できます。
変換前の座標を(X,Y)とし、変換後の座標を(x,y)とおくと
 
 (x,y) = ( (A*X+B*Y+C)/(G*X+H*Y+1) , (D*X+E*Y+F)/(G*X+H*Y+1) )
 
という変換式です。文字A~Hは「画像の平面内の四頂点の座標」から決まる定数です。
 
A~Hの求め方は、少々面倒ですが8次元連立一次方程式を解いて求めます。
変換前の4点の座標を(X1,Y1)(X2,Y2)(X3,Y3)(X4,Y4)とし、変換後の4点の座標を(x1,y1)(x2,y2)(x3,y3)(x4,y4)とすると、連立方程式は次のようになります。
 
X1*A + Y1*B + C - x1*X1*G - x1*Y1*H = x1
X1*D + Y1*E + F - y1*X1*G - y1*Y1*H = y1
X2*A + Y2*B + C - x2*X2*G - x2*Y2*H = x2
X2*D + Y2*E + F - y2*X2*G - y2*Y2*H = y2
X3*A + Y3*B + C - x3*X3*G - x3*Y3*H = x3
X3*D + Y3*E + F - y3*X3*G - y3*Y3*H = y3
X4*A + Y4*B + C - x4*X4*G - x4*Y4*H = x4
X4*D + Y4*E + F - y4*X4*G - y4*Y4*H = y4
 
手計算するのは大変なので、この方程式を行列で書き直してエクセルに計算させれば簡単に定数A~Hが求まります。
 
エクセルの行列計算が判らないとか、プログラムに組み込みたいとか、他になにかあったらこの回答に補足してください。
OpenCVならこんなサイトがありました。
http://chihara.naist.jp/opencv/?%BC%CD%B1%C6%CA% …
 
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そのような変換式があるとは知りませんでした。
論文に記載するものなので、透視投影の原理から変換式を求めるような感じにしたいと思います。

お礼日時:2008/01/19 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!