同次変換とは? ユークリッド変換とアフィン変換の違いは?

このQ&Aのポイント
  • 同次変換は、1次元多い行列で表現された変換を指す。具体的には、並進を表すために一次元を追加する。
  • 数学的に定義される変換には、ユークリッド変換、アフィン変換、射影変換の3つがある。
  • ユークリッド変換は、線形変換とは異なり、並進を含む。アフィン変換は、線形変換に並進を加えたものである。同次変換を行列で表現する場合、4列目は任意の値で表される。
回答を見る
  • ベストアンサー

同次変換について

前回の質問で同次変換とはどのようなものかおおよそ理解する事が出来ました。 追加質問したのですが、解決できないので新たに再質問させて頂きます。 前回の質問内容:http://okwave.jp/qa/q6934077.html 変換という言葉は理解できました。 同次変換とは、1次元多い行列で表現された変換をさす。 一次元多い理由は、並進を表すため。 数学的に定義される変換は、ユークリッド変換、アフィン変換、射影変換の 3つである。 ユークリッド変換についてよく理解できないので教えてください。 これは線形変換とは異なりますよね。線形変換であれば、並進は含みませんから。 アフィン変換は、線形変換に並進を加えたものだと認識しております。 アフィン変換とユークリッド変換の違いはなんでしょうか? ユークリッド変換の方がアフィン変換より集合的に大きいことはわかるのですが・・・ また同次変換を、 X Y Z 1 と表している記述を良く見ます。 具体例を挙げると、 基準座標系を(x y z 1)、対象座標系(X Y Z 1) と表す。 対象座標系は基準座標系をx軸にθ回転、x軸に3平行移動した ものとする。 X x|1   0    0    3 | Y= y|0  cosθ  sinθ  0 |  Z  z|0  -sinθ  cosθ 0 | 1 1|0   0     0   1 | のように表されると思います。 ここで、同次変換を X Y Z W と表すとすると、変換行列の4列目は、どのようにあらわされるのでしょうか? X x|1   0    0    ? | Y= y|0  cosθ  sinθ  ? |  Z  z|0  -sinθ  cosθ ? | W ?|0   0     0   ?  | 以上、申し訳ありませんがご回答よろしくお願い致します。

  • RY0U
  • お礼率40% (436/1071)

質問者が選んだベストアンサー

  • ベストアンサー
  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.4

#2,#3です。 >ですから、正しく表現するには、 >(4×4)×(4×1)=(4×1)ですね。・・・(A) >もしくは、 >(1×4)×(4×4)=(1×4)ですね。・・・(B) >(A)の表現を採用します。 >基準座標系を(x y z 1):列ベクトル、対象座標系(X Y Z 1):列ベクトルとする。 >基準座標系をx軸にθ回転、x軸に3平行移動した同次変換は、 >(X) ( 1   0    0   0)(x) >(Y)=(0 cosθ -sinθ  0)(y) >(Z) ( 0 sinθ  cosθ  0)(z) >(1) ( 3   0    0   1)(1) >と表されると思います。 > >ここまでで間違いはありますでしょうか? 間違っています。 (A)の表現を採用するといいながら、変換行列は(A),(B)の両方の表現が交じり合ってへんてこな行列になっています。(A)と(B)では行列の掛け算の順序が逆になります。 A#2の参考URLを参考にして下さい。 そしてお書きの変換行列方程式 X= Y= Z= 1= を、行列を使わないで、4つの方程式として書き出して見て下さい。 本来の変換の式になっていることに気が付くと思います。 (A)と(B)の行列表現では、回転と平行移動の合成変換行列を計算する時の 行列の計算順序が逆になることは理解して見えるでしょうか? おかしな合成行列をお書きなので同じ4x4行列でも行列の掛け算の順序を 逆にして見えないかと危惧してます。

RY0U
質問者

補足

ご回答ありがとうございます。 私は、全然理解出来ていないようですね・・・ ご指摘ありがとうございます。 まず、行列の演算について、 (4×4)×(4×1)=(4×1)ですね。・・・(A) もしくは、 (1×4)×(4×4)=(1×4)ですね。・・・(B) の計算自体は正しいですよね? 変換行列の書き方が間違っているという認識なのですが、どうでしょうか? 変換行列に関して、それぞれの成分を行方向と列方向どちらの方向に並べて良いのか理解できていません。NO.3の補足質問では、x成分の変換行列を1行目に、y成分を2行目に、z成分を3行目に、並進を4行目に左から順に並べました。 変換行列の書き方には、規則があるのでしょうか?この点が理解できていないと、 X= Y= Z= 1= の方程式を正しくかけないです。 因みに、NO.2の参考URL3次元座標系と3次元幾何変換でも変換行列は行成分でabcdと並べられていました。 >(A)と(B)の行列表現では、回転と平行移動の合成>変換行列を計算する時の行列の計算順序が逆に >なることは理解して見えるでしょうか? 理解できていないです。。。 計算順序が逆になるとはどういうことですか? 本当に何度も申し訳無いのですが、ご回答よろしくお願い致します。

その他の回答 (3)

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.3

#2です。 A#2の補足について >行列の式に関しては、 >[m×n型][n×p型]=[m×p型] となるという基本は理解しています。 >列ベクトルと行ベクトルの転置は同じになるので、書きやすい列ベクトル >で書かせて頂きましたが、正確には行ベクトルでなければ行列の積と >しては成り立ちませんね。すいません。 本当に分かって見えるのでしょうか? A#2にあげた参考URLをちゃんと熟読して見ましたか? そうなら、以下のような式は書けないはずですが? また、読めば、変換行列も分かるはずだと思いますがね? >書き直します。 >X          |1   0    0    3 | >Y=|x y z 1| |0  cosθ  sinθ  0 |  >Z           |0  -sinθ  cosθ 0 | >1          |0   0     0   1  | 「=」の左側は列ベクトル、右側は行ベクトルで、等号で結ばれるはずないだろう? 行列式は「|」を使い、ベクトルと行列は「 [ ] 」または「 ( ) 」を使って囲って 区別して下さい。 A#2の参考URLの中の変換行列の式の書き方に習って書いて下さい。ちゃんとURLを 見たなら上記のような書き方はしないと思いますが、全く読んでいないなら、参考URL を書いても無駄、回答しても無駄ですね? [X,Y,Z,1]=[x,y,z,1]*A と書いた場合の変換行列Aと [X] [x] [Y]=A*[y] [Z] [z] [1] [1] と書いた場合の変換行列Aと を書いてみて下さい。 質問者さんの書いてる変換行列は上の両者の行列Aを取り違えて見えるようです。 ちゃんとA#2の参考URLのやり方で、やれば両者の行列Aが容易に出てきます。 ちゃんと計算してみて、その結果を補足にお書き下さい。 アフィン変換行列は 「拡大行列*回転行列*平行移動行列」で表せる変換行列ですが、 質問者さんがお書きの同次変換行列は どのような機能をアフィン変換行列に追加したものですか? また、変換後の行列要素(ベクトル成分)を返還前の行列要素(ベクトル成分)を使って書き下した方程式として表してみて補足にお書きください。 そうすれば、後半の変換行列表現が明らかになると思います。 A#2の参考URLを熟読して、x軸の周りの回転行列とx軸方向への平行移動行列を求め、その行列の積を求めてみて下さい。補足質問でお書きの変換行列の正しい行列が出てきますよ。 追加参考URL(アフィン変換)

参考URL:
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?3D%BA%C2%C9%B8%CA%D1%B4%B9
RY0U
質問者

補足

ご回答ありがとうございます。 今まで頂いた参考URLをしっかりと読ませて頂きました。 まず、間違えている点は(行列積を×であらわしています)、 (1×4)×(4×4)=(1×4)の行列式になるという点ですね。 私の書いている行列では、変換後が(4×1)の行列式になって います。列ベクトルや行ベクトルの転置行列は等しくなるから どちらで表現しても良いと勝手に解釈しておりました。 これが間違い・混乱の原因です。 ですから、正しく表現するには、 (4×4)×(4×1)=(4×1)ですね。・・・(A) もしくは、 (1×4)×(4×4)=(1×4)ですね。・・・(B) (A)の表現を採用します。 基準座標系を(x y z 1):列ベクトル、対象座標系(X Y Z 1):列ベクトルとする。基準座標系をx軸にθ回転、x軸に3平行移動した同次変換は、 (X) ( 1   0    0   0)(x) (Y)=(0 cosθ -sinθ  0)(y) (Z) ( 0 sinθ  cosθ  0)(z) (1) ( 3   0    0   1)(1) と表されると思います。 ここまでで間違いはありますでしょうか? 以上、ご回答よろしくお願い致します。

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.2

>変換行列の表し方についてはどうでしょうか? 行列の基礎的な知識がない人の全く駄目な、式として成り立たない、ありえない式です。 変換行列以前の行列を習い始めの頃の基礎を無視した行列の計算式です。 列ベクトル(4行1列の行列とみなせる)に後ろから4行4列の行列を掛けるかけることが出来ると思いますか? 質問は難しいことを聞かれていますが、行列の基本は全く出来ていないとしかいえないね。 (1)「行ベクトルに後ろから変換行列を掛ける」 または (2)「変換行列に後ろから列ベクトルを掛ける」 のどちらかです。 行列演算の基礎的な知識の欠如ゆえ、ごちゃ混ぜの有り得ない式になっている。 (1)と(2)の変換行列は転置の関係にあるので(1)、(2)のどちらの 変換行列を使うかで、変換行列が異なってきます。 座標系の座標ベクトル(あるいは座標点)を列ベクトルで扱うのか、行ベクトルで扱うのか、決めて、 それに応じた変換行列にしないといけないね。 質問者さんのは、そこらがごちゃ混ぜになっている。その辺りの、質問の変換行列の式を正しい表現にして、質問してくれないと、回答者はあきれて、回答も出来ないよ。 式表現を書き直して改めて質問して下さい。 参考URLは 前の方が、座標系の座標を列ベクトルとして扱っています。 後ろの方は、座標系の座標を行ベクトルとして扱っています。 参考になると思うので、行列の演算の基礎の復習とあわせて呼んでみて下さい。 その上で質問があれば補足で質問して下さい。 参考URL http://k-lab.flash.tuis.ac.jp/lect/cg_theory/CGron2.htm http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG

参考URL:
http://k-lab.flash.tuis.ac.jp/lect/cg_theory/CGron2.htm
RY0U
質問者

補足

ご回答ありがとうございます。 式の書き方が悪く申し訳ございませんでした。 行列の式に関しては、 [m×n型][n×p型]=[m×p型] となるという基本は理解しています。 列ベクトルと行ベクトルの転置は同じになるので、書きやすい列ベクトル で書かせて頂きましたが、正確には行ベクトルでなければ行列の積と しては成り立ちませんね。すいません。 書き直します。 X          |1   0    0    3 | Y=|x y z 1| |0  cosθ  sinθ  0 |  Z           |0  -sinθ  cosθ 0 | 1          |0   0     0   1  | で表された同次変換において、対象座標系の4列目がWで表される場合、 どのように表現すれば良いのでしょうか? X          |1   0    0    ? | Y=|x y z ?| |0  cosθ  sinθ  ? |  Z           |0  -sinθ  cosθ ? | W          |0   0     0   ?  | 以上、ご回答よろしくお願い致します。

回答No.1

ユークリッド変換とは物体の大きさや形を変えない変換です。 回転+平行移動 なのでアフィン変換より狭い変換です。

RY0U
質問者

補足

ご回答ありがとうございます。 変換行列の表し方についてはどうでしょうか?

関連するQ&A

  • 行列 同次変換 回転 並進

    行列 同次変換 回転 並進 同次変換について質問させて下さい。 同次変換はよく、(X Y Z 1)のように 4列の行列で表されます。 4行4列の同次変換を表す行列で、 例えば、4行目が(1 2 3 1)とはXに1、 Yに2、Zに3の並進を表しています。 ここで質問なのですが、最後の4列目 はなぜ1と書かれるのでしょうか?

  • 行列 変換行列 行列の積

    変換行列に関して質問させて頂きます。 当方、行列に関する理解が乏しいので基礎を勉強し直しました。 前回、同次変換に関して質問させて頂きました。 URL:http://okwave.jp/qa/q6983574.html 新たに基礎的な部分を質問させて頂きます。 変換行列は回転行列を考えます。 右手系を採用してベクトルをx軸中心にθ回転した回転行列は、 (1   0     0   ) (0  cosθ  sinθ  ) (0  -sinθ  cosθ ) と表します。3行×3列の行列です。 よって、 変換後の列ベクトル(3×1)を (X) (Y) (Z) 変換前の列ベクトル(3×1)を (x) (y) (z) とすると、(3×1)=(3×3)×(3×1)なので (X)  (1   0     0   ) (x)   (Y)= (0  cosθ  sinθ  ) (y)  (Z)  (0  -sinθ  cosθ ) (z)  と表されると思います。 ここまでで間違いがありますでしょうか? ご指摘よろしくお願い致します。   合わせて並進を考える場合について教えて下さい。 例えば、x軸に3移動した場合を4行×4列の変換行列 で示す場合、どのように書けば良いのでしょうか? 添付画像の(A)と(B)どちらでしょうか? 合わせて理由も教えて頂けるとありがたいです。 回転行列を作った手順と同じくすると(A)の 表現で良いと考えているのですがどうでしょうか? 以上、ご回答何卒よろしくお願い致します。

  • 線形変換の問題です

    線形代数の線形変換の問題です  行列       cosπ/4  -sinπ/4   0    sinπ/4   cosπ/4   0       0        0        1        (3行3列の行列の意味です。かっこが省略されています)                      で表される空間内の線形変換によって次の図形はどのような図形に移されるか。 (1) 直線 x / √2 =y / 3√2= z (2) 平面 x + y + z = 1 解答は(1)は 直線 x / -2 = y / 4 = 1 (2)は 平面 √2y + z = 1 となっていますが、どのように計算をするのか分りません。 分りやすく教えてください。

  • 線形変換の証明と問題

    どう証明していいか分からないので、教えてもらいたいです(>_<) (2)のやり方も、教えていただければ、助かります! (1)座標平面上の点を原点回りにθだけ回転する線形変換を考えることにより、 ( cosθ  -sinθ) ^n  =  ( cos nθ  -sin nθ)   sinθ   cosθ         sin nθ   cos nθ を証明せよ。 (2)行列 (cos π/4  -sin π/4  0)   sin π/4  cos π/4   0   0      0       1 で表される線形変換によって、次の図形 平面x+y+z=1はどのような 図形に移されるか? 回答を、ぜひ宜しくお願いします。

  • 同次変換 アフィン変換

    同次変換 アフィン変換 現在、座標変換について勉強しています。 そこで、同次変換とアフィン変換の違いがわかりません。 両者は同じではないのでしょうか? また、射影変換と透視変換も同じように思います。 両者に違いはあるのでしょうか? たくさんの名前がついた変換が存在していて難しいです。 ご回答何卒よろしくお願い致します。

  • 誤差を最小化する相似変換行列の求め方

    三次元の変換行列について質問です。 空間上のある3点について、座標変換前と変換後の座標が与えられているとします。 その座標を元に、行った変換の表す行列を知りたいと考えております。 ただし変換は並進と回転のみとし、剪断変形等は行わないという条件です。 (行列は同次変換の形などで得られれば良いです) ただし、変換前と変換後では三点の相対的な位置関係は完璧には一致しておりません。 そのため得られた変換を元の3点に行った際に、変換後の3点の座標(既知)との 誤差を最小化したいという問題です。 変換が相似変換でなければ疑似逆行列により計算が可能と思いますが、 並進・回転のみなのでどうしようか聞きたいと思い質問をしました。 パラメータは「x, y, z 軸方向の並進移動量 + x, y, z 軸周りの回転量」の6つなので、 プログラムを組んで6パラメータを少しずつ変化させ、 誤差の二乗和が最小となる箇所を探すという方法は思いついております。 ですが、その他に行列計算により解析的に答えを得る方法はないでしょうか。 また、変換前後の3点を元に誤差を最小化する変換行列を得ることが可能であるなら、 座標の情報が3点でなくそれ以上の場合でも計算は可能でしょうか。 よろしくお願いいたします。

  • ユークリッド空間 ユークリッド変換

    ユークリッド空間とはユークリッド変換の対象となる空間であると認識 しています。 ユークリッド変換は、回転、鏡映、平行移動です。 ユークリッド変換は、直交変換+平行移動と説明されたりしますが、 直交変換とはなんでしょうか?直交行列と関係あるのでしょうか? 直交行列は、ある行列Aの転置行列がAの逆行列と等しい行列で ある事は理解できています。 回転行列は直交行列の一つだと認識しています。 線形変換(回転、鏡映、拡大・縮小、剪断)のなかで直交変換に あたるものは回転以外になにがありますでしょうか?鏡映も回転と ほとんど同意なので含まれると考えています。 ユークリッド変換の数学的な定義は調べたのですがわかりませんでした。 ユークリッド変換の数学的な定義を以下のように教えて頂けませんか? ちなみに、 線形変換の定義は、 K上の線形空間V上の変換fで、x,y∈V,a,b∈Kについて常に、 f(ax+by)=af(x)+bf(y)が成り立つもの。 アフィン変換の定義は、 K上のアフィン空間W(線形空間を含む)上の変換fで、x,y∈W,a,b∈Kについてa+b=1のとき、 f(ax+by)=af(x)+bf(y)が成り立たちかつ全単射であるもの。 よく私たちが生活している空間を3次元ユークリッド空間などと呼んだりしますが、 これはなぜでしょうか?ユークリッド空間では、回転と鏡映(対称移動)、平行移動が 定義された空間で私たちが生活している空間とは無関係な気がします・・・ 私たちが生活している空間には、~空間といったような名称があるのですか? 長々と失礼しました。 質問を整理させて頂きます。以下に質問順に番号をふりました。 (1)直交変換とはなんでしょうか? (2)線形変換の中で直交変換であるものはなんでしょうか? (3)ユークリッド変換の定義を教えて貰えないでしょうか? (4)ユークリッド空間と私たちが日常生活している空間は関係あるのでしょうか? 以上、ご回答よろしくお願い致します。

  • 線形変換 アフィン変換 ユークリッド変換

    線形変換、アフィン変換、ユークリッド変換について教えて下さい。 線形変換: 回転、鏡映、剪断、拡大・縮小 アフィン変換: 線形変換+平行移動 ユークリッド変換 回転、鏡映、平行移動 と教えて頂きました。 ここで、疑問なのですが、線形変換,アフィン変換,ユークリッド変換において線形変換だけ平行移動できないということは線形変換は原点を持つが、アフィン変換,ユークリッド変換は原点を持たないという事でしょうか? また、ユークリッド変換はアフィン変換の特殊な場合と教えて頂きました。そして、ユークリッド変換の方がアフィン変換よりも多くの性質を保つとの事なのですがこの点が理解できません。 変換できる項目が少ないほうが多くの性質を保てると言うことなのでしょうか? また、等長変換というものもあるのですがこれはユークリッド変換 と同義でしょうか?ユークリッド変換と何が異なるのでしょうか? 合同変換とは形を変えない変換ですが、線形変換、アフィン変換で拡大・縮小を伴わない場合とユークリッド変換を指していると言う認識で良いでしょうか? 以上、わからなくて困っています。 ご回答何卒、よろしくお願い致します。

  • 誤差を最小化する相似変換行列の求め方

    三次元の変換行列について質問です。 空間上のある3点について、座標変換前と変換後の座標が与えられているとします。 その座標を元に、行った変換の表す行列を知りたいと考えております。 ただし変換は並進と回転のみとし、剪断変形等は行わないという条件です。 (行列は同次変換の形などで得られれば良いです) ただし、変換前と変換後では三点の相対的な位置関係は完璧には一致しておりません。 そのため得られた変換を元の3点に行った際に、変換後の3点の座標(既知)との 誤差を最小化したいという問題です。 変換が相似変換でなければ疑似逆行列により計算が可能と思いますが、 並進・回転のみなのでどうしようか聞きたいと思い質問をしました。 パラメータは「x, y, z 軸方向の並進移動量 + x, y, z 軸周りの回転量」の6つなので、 プログラムを組んで6パラメータを少しずつ変化させ、 誤差の二乗和が最小となる箇所を探すという方法は思いついております。 ですが、その他に行列計算により解析的に答えを得る方法はないでしょうか。 また、変換前後の3点を元に誤差を最小化する変換行列を得ることが可能であるなら、 座標の情報が3点でなくそれ以上の場合でも計算は可能でしょうか。 質問は数学のようですが、この手の計算はCGや画像処理等で多く行われていると 感じたことから、情報工学カテゴリーで質問をさせて頂きました。 よろしくお願いいたします。

  • matlabを使ったアフィン変換

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