プロが教える店舗&オフィスのセキュリティ対策術

matlabを使ったアフィン変換を考えています。三次元座標(x,y,z)=(100,30,35), (X,Y,Z)=(105,28,34)が分かっていて(x,y,z)から(X,Y,Z)への回転(α、β、γ)および移動(dx,dy,dz)を求めたいのですがどのようにプログラミングを行えばよいのでしょうか?よろしくお願いします。

A 回答 (2件)

アフィン変換とは何かから考えたほうが良いです。


アフィン変換は
回転、平行移動 など色々ありますので・・・・。
たとえば質問者さんの例を平行移動のアフィン変換だけとするなら、
X=x-a
Y=y-b
Z=z-c
のa,b,cを求めるだけでも、変換行列できます。

とりあえず2次元の画像を回転のアフィン変換でグルグル回すところからやってみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

なるほど!きちんとアフィン変換を分かっていないので、まずは回転などから始めて理解していきたいと思います。どうもありがとうございました。

お礼日時:2009/11/18 12:41

affine transform の定義がよく分からないが,


下の wikipedia にあるので良ければ,

点 x が,
y = A*x + b
で点 y に写る.
A は, 3x3 の行列で, b は 3 次の縦ベクトル.

4点 x1, x2, x3, x4 (縦ベクトル)を選んで,
これらが,y1, y2, y3, y4 に写るとすると,
[y1, y2, y3, y4;1, 1, 1,1]
= [A, b; 0, 1]*[x1, x2, x3, x4;1, 1, 1,1]
なる関係式から,
[A, b; 0, 1] =
[y1, y2, y3, y4;1, 1, 1,1] * inv([x1, x2, x3, x4;1, 1, 1,1])
で, A と b を求めればよい.

参考URL:http://en.wikipedia.org/wiki/Affine_transformation
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。ご指摘の通りAとbを求めればよい
と思いますが、具体的には回転(α、β、γ)および移動(dx,dy,dz)はどのように求めたらよいのでしょうか?幼稚な質問ですみません。

お礼日時:2009/11/17 20:59

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