記事ディレクトリ
1. 点とベクトルの表現
ポイント:空間の基本要素であり、長さも体積もありません。
3次元空間に点aaがあるとします。a 、その座標は [ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T} として表すことができます。[× 、よ、z】て。
ベクトルは 2 点を結ぶことによって形成されます。
ベクトル: ある点から別の点を指す矢印として見ることができます。ベクトルとその座標の 2 つの概念を混同しないでください。ベクトルとは、ベクトルa ⃗ \vec{a}など、空間内にあるものです。ある。ここに⃗ \vec{a}ある複数の実数とは関連付けられていません。この 3 次元空間で特定の座標系を指定した場合にのみ、この座標系におけるベクトルの座標について話すことができます。つまり、このベクトルに対応するいくつかの実数を見つけることができます。
ベクトルa ⃗ \vec{a}ある線形空間基底[ e ⃗ 1 , e ⃗ 2 , e ⃗ 3 ] \left[\begin{matrix}\vec{e}_1, \vec{e}_2, \vec{e}_3\end{matrix} \右][e1、e2、e3]の下の座標は [ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T} です。[× 、よ、z】Tの場合、次の式が成り立ちます。
a ⃗ = [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = e ⃗ 1 x + e ⃗ 2 y + e ⃗ 3 z = xe ⃗ 1 + ye ⃗ 2 + ze ⃗ 3 \begin{aligned} \ vec{a} = \left[\begin{行列} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{行列}\right] \left[\begin{行列} x \\ y \\ z \\ \end{matrix}\right] = \vec{e}_1x + \vec{e}_2 y + \vec{e}_3 z \\ = x \vec{e}_1+ y \vec{e}_2 + z \vec{e}_3 \end{整列}ある=[e1e2e3】 バツyz =e1バツ+e2y+e3z=バツe1+ye2+ze3
2. ベクトルに基づく回転行列RRの導出R
同じベクトルの場合、a ⃗ \vec{a}ある、単位正規直交基底で設定[ e ⃗ 1 , e ⃗ 2 , e ⃗ 3 ] \left[\begin{matrix}\vec{e}_1, \vec{e}_2, \vec{e}_3\end {行列}\右][e1、e2、e3]の下の座標は [ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T} です。[× 、よ、z】T、
1 回転後、単位正規直交基底は[ e ⃗ 1 ' , e ⃗ 2 ' , e ⃗ 3 ' ] \left[\begin{matrix}\vec{e}_1^\prime, \vec{ e} になります。 _2^\素数, \vec{e}_3^\素数\end{行列}\right][e1「、e2「、e3「]、ベクトルa ⃗ \vec{a}ある新しい直交基底の座標は[ x ′ , y ′ , z ′ ] T \left[\begin{matrix}x^\prime, y^\prime, z^\prime\end{matrix}\right です。 ]^\text{T}[バツ「、」y「、」z「】て。
このベクトルは座標系の回転とともに移動しないため、座標の定義によれば、次のようになります。
a ⃗ = [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 ' e ⃗ 2 ' e ⃗ 3 ' ] [ x ' y ' z ' ] \begin{aligned} \vec{a} &= \left[\begin{行列} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{行列}\right] \left[\begin{行列} x \\ y \\ z \\ \end{行列}\right]\ \\ &= \left[\begin{行列} \vec{e}_1^\prime & \vec{e}_2^\prime & \vec{e }_3^\prime \end{行列}\right] \left[\begin{行列} x^\prime \\ y^\prime \\ z^\prime \\ \end{行列}\right] \end{整列しました}ある=[e1e2e3】 バツyz =[e1「e2「e3「】 バツ』y』z「
行列を方程式の両側で同時に乗算したままにする場合[ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] \left[\begin{matrix}\vec{e}_1^\text{ T} \\ \vec{e} _2^\text{T} \\ \vec{e}_3^\text{T}\end{行列}\right] e1Te2Te3T 、持っている
[ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] [ e ⃗ 1 ' e ⃗ 2 ' e ⃗ 3 ' ] [ x ' y ' z ' ] [ e ⃗ 1 T e ⃗ 1 e ⃗ 1 T e ⃗ 2 e ⃗ 1 T e ⃗ 3 e ⃗ 2 T e ⃗ 1 e ⃗ 2 T e ⃗ 2 e ⃗ 2 T e ⃗ 3 e ⃗ 3 T e ⃗ 1 e ⃗ 3 T e ⃗ 2 e ⃗ 3 T e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 1 ' e ⃗ 1 T e ⃗ 2 'e⃗1Te⃗3'e⃗2Te⃗1'e⃗2Te⃗2'e⃗2Te⃗3'e⃗3Te⃗1'e⃗3Te⃗2'e ⃗ 3 T e ⃗ 3 '' ] [ x '' y '' z '' ] \begin{aligned} \left[\begin{matrix} \vec{e}_1^\text{T} \\ \vec{e}_2^ \text{T} \\ \vec{e}_3^\text{T} \\ \end{行列}\right] \left[\begin{行列} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{行列}\right] \left[\begin{行列} x \\ y \\ z \\ \end{行列}\right] &= \left[\begin{行列} \vec{e}_1^\text{T} \\ \vec{e}_2^\text{T} \\ \vec{e}_3^\text{T} \\ \end{行列}\right] \left[\begin{行列} \vec{e}_1^\prime& \vec{e}_2^\prime & \vec{e}_3^\prime \end{matrix}\right] \left[\begin{matrix} x^\prime \\ y^\prime \\ z^ \prime \\ \end{行列}\right] \\ \left[\begin{行列} \vec{e}_1^\text{T} \vec{e}_1 & \vec{e}_1^\text {T} \vec{e}_2 & \vec{e}_1^\text{T} \vec{e}_3 \\ \vec{e}_2^\text{T} \vec{e}_1 & \ vec{e}_2^\text{T} \vec{e}_2 & \vec{e}_2^\text{T} \vec{e}_3 \\ \vec{e}_3^\text{T} \vec{e}_1 & \vec{e}_3^\text{T} \vec{e}_2 & \vec{e}_3^\text{T} \vec{e}_3 \\ \end{行列}\right] \left[\begin{行列} x \\ y \\ z \\ \end{行列}\right] &= \left[\begin{行列} \vec{e}_1^\text{T } \vec{e}_1^\プライム & \vec{e}_1^\text{T} \vec{e}_2^\プライム & \vec{e}_1^\text{T} \vec{e} _3^\プライム \\ \vec{e}_2^\text{T} \vec{e}_1^\プライム & \vec{e}_2^\text{T} \vec{e}_2^\プライム & \vec{e}_2^\text{T} \vec{e}_3^\プライム \\ \vec{e}_3^\text{T} \vec{e}_1^\プライム& \vec{e}_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{行列}\right] \left[\begin{行列} x^\prime \\ y^\prime \\ z^\prime \\ \end{行列}\right] \end{aligned} e1Te2Te3T [e1e2e3】 バツyz e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 バツyz = e1Te2Te3T [e1「e2「e3「】 バツ』y』z「 = e1Te1「e2Te1「e3Te1「e1Te2「e2Te2「e3Te2「e1Te3「e2Te3「e3Te3「 バツ』y』z「
明らかにあります
e ⃗ 1 T e ⃗ 1 = 1 、 e ⃗ 1 T e ⃗ 2 = 0 、 e ⃗ 1 T e ⃗ 3 = 0 、 e ⃗ 2 T e ⃗ 1 = 0 、 e ⃗ 2 T e ⃗ 2 = 1 、 e ⃗ 2 T e ⃗ 3 = 0 , e ⃗ 3 T e ⃗ 1 = 0 , e ⃗ 3 T e ⃗ 2 = 0 , e ⃗ 3 T e ⃗ 3 = 1 , \begin{aligned} \vec{e} _1^\text{T} \vec{e}_1 = 1、\quad & \vec{e}_1^\text{T} \vec{e}_2 = 0、\quad & \vec{e}_1^ \text{T} \vec{e}_3 = 0, \quad \\ \vec{e}_2^\text{T} \vec{e}_1 = 0, \quad & \vec{e}_2^\ text{T} \vec{e}_2 = 1, \quad & \vec{e}_2^\text{T} \vec{e}_3 = 0, \quad \\ \vec{e}_3^\text {T} \vec{e}_1 = 0、\quad & \vec{e}_3^\text{T} \vec{e}_2 = 0、\quad & \vec{e}_3^\text{T } \vec{e}_3 = 1、\quad \\ \end{aligned}e1Te1=1 、e2Te1=0 、e3Te1=0 、e1Te2=0 、e2Te2=1 、e3Te2=0 、e1Te3=0 、e2Te3=0 、e3Te3=1 、
したがって、さらに単純化すると、
[ e ⃗ 1 T e ⃗ 1 e ⃗ 1 T e ⃗ 2 e ⃗ 1 T e ⃗ 3 e ⃗ 2 T e ⃗ 1 e ⃗ 2 T e ⃗ 2 e ⃗ 2 T e ⃗ 3 e ⃗ 3 T e ⃗ 1 e ⃗ 3 T e ⃗ 2 e ⃗ 3 T e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 1 ' e ⃗ 1 T e ⃗ 2 ' e ⃗ 1 T e ⃗ 3 ' e ⃗ 2 T e ⃗ 1'e⃗2Te⃗2'e⃗2Te⃗3'e⃗3Te⃗1'e⃗3Te⃗2'e⃗3Te⃗3'][x'y'z' ] [xyz] = [ e ⃗ 1 T e ⃗ 1 ' e ⃗ 1 T e ⃗ 2 ' e ⃗ 1 T e ⃗ 3 ' e ⃗ 2 T e ⃗ 1 ' e ⃗ 2 T e ⃗ 2 ' e ⃗ 2 T e ⃗ 3 ' e ⃗ 3 T e ⃗ 1 ' e ⃗ 3 T e ⃗ 2 ' e ⃗ 3 Te ⃗ 3 ' ] [ x ' y ' z ' ] = def R [ x ' y ' z ' ] \begin {整列} \left[\begin{行列} \vec{e}_1^\text{T} \vec{e}_1 & \vec{e}_1^\text{T} \vec{e}_2 & \ vec{e}_1^\text{T} \vec{e}_3 \\ \vec{e}_2^\text{T} \vec{e}_1 & \vec{e}_2^\text{T} \vec{e}_2 & \vec{e}_2^\text{T} \vec{e}_3 \\ \vec{e}_3^\text{T} \vec{e}_1 & \vec{e }_3^\text{T} \vec{e}_2 & \vec{e}_3^\text{T} \vec{e}_3 \\\end{行列}\right] \left[\begin{行列} x \\ y \\ z \\ \end{行列}\right] &= \left[\begin{行列} \vec{e}_1^ \text{T} \vec{e}_1^\prime & \vec{e}_1^\text{T} \vec{e}_2^\prime & \vec{e}_1^\text{T} \ vec{e}_3^\prime \\ \vec{e}_2^\text{T} \vec{e}_1^\prime & \vec{e}_2^\text{T} \vec{e}_2 ^\プライム & \vec{e}_2^\text{T} \vec{e}_3^\プライム \\ \vec{e}_3^\text{T} \vec{e}_1^\プライム & \ vec{e}_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{行列}\ right] \left[\begin{行列} x^\prime \\ y^\prime \\ z^\prime \\ \end{行列}\right] \\ \left[\begin{行列} x \\ y \\ z \\ \end{行列}\right] &= \left[\begin{行列} \vec{e}_1^\text{T} \vec{e}_1^\prime & \vec{e} _1^\text{T} \vec{e}_2^\プライム & \vec{e}_1^\text{T} \vec{e}_3^\プライム \\ \vec{e}_2^\text{ T} \vec{e}_1^\プライム & \vec{e}_2^\text{T} \vec{e}_2^\プライム& \vec{e}_2^\text{T} \vec{e}_3^\prime \\ \vec{e}_3^\text{T} \vec{e}_1^\prime & \vec{e }_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{matrix}\right] \ left[\begin{行列} x^\prime \\ y^\prime \\ z^\prime \\ \end{行列}\right] \\ & \overset{def}{=} R \left[\begin {行列} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \end{aligned} e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 バツyz バツyz = e1Te1「e2Te1「e3Te1「e1Te2「e2Te2「e3Te2「e1Te3「e2Te3「e3Te3「 バツ』y』z「 = e1Te1「e2Te1「e3Te1「e1Te2「e2Te2「e3Te2「e1Te3「e2Te3「e3Te3「 バツ』y』z「 =デフ_ _R バツ』y』z「
このRRR は、回転行列と呼ばれるベクトルの回転を記述します。
上記の導出プロセスは、ベクトルの代数的関係と 3 次元座標軸の回転角度を使用した導出プロセスに基づいています (第 3 章 - 数学の基礎知識 -> 座標変換) を参照してください。
回転行列RRR には次のような特性があります。
-
回転行列RRRは行列式 1 の直交行列です。逆に、行列式 1 の直交行列も回転行列です。オールン_n次元の回転行列は特別な直交群SO ( n ) SO(n)SO ( n )。 SO ( n ) = { R ∈ R n × n ∣ RRT = I , det ( R ) = I } SO(n) = \{ R \in \R^{n \times n} | RR^\text{T} = I、\text{det}(R) = I \}SO ( n )={ R∈Rn × n ∣RRT=私は、それ( R )=私}
-
回転行列RRRは直交行列 (Orthogonal Matrix、直交行列とは、その逆行列が自身の転置となる行列です) であり、回転行列R − 1 R^{-1}R− 1 は逆回転を表します
3. ベクトルのユークリッド変換
コンピューター ビジョンとロボット工学では、ユークリッド/剛体変換 (または剛体変換) が非常に一般的な変換です。
ユークリッド変換は 2 つの部分で構成されます。
- 回転: 回転行列で表すことができます。
- 平行移動: 平行移動ベクトルで表すことができます。
分からない場合は、 「【数学的知識】剛体の基本運動と平行移動と回転」の記事を参照してください。
次のような回転と平行移動のプロセスがあるとします。世界座標系にベクトルa ⃗ 1 \vec{a}_1があります。ある1、1 回転後R 1 t 2 R_{1t2}R1t2 _ _および翻訳t 1 t 2 t_{1t2}t1t2 _ _その後、ベクトルa ⃗ 2 \vec{a}_2が得られます。ある2とすると、 a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 \vec{a}_2 = R_{1t2} \vec{a}_1 + t_{1t2} という関係が成り立ちます。
ある2=R1t2 _ _ある1+t1t2 _ _
4. ユークリッド変換には非線形の制限があります
ユークリッド変換は、回転と平行移動を含む剛体変換です。平行移動は線形ですが、回転は非線形です。
回転については、回転行列、四元数、または回転軸と回転角度を使用して説明できます。どのように説明されるかに関係なく、回転の性質は非線形です。
2 つの変換を実行すると、R 1 t 2 、 t 1 t 2 R_{1t2}、 t_{1t2}R1t2 _ _、t1t2 _ _和R 2 t 3 、t 2 t 3 R_{2t3}、t_{2t3}R2t3 _ _、t2t3 _ _
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 a ⃗ 3 = R 2 t 3 a ⃗ 2 + t 2 t 3 = R 2 t 3 ( R 1 t 2 a ⃗ 1 + t 1 t 2 ) + t 2 t 3 \begin{aligned} \vec{a}_2 &= R_{1t2} \vec{a}_1 + t_{1t2} \\ \vec{a}_3 &= R_{2t3} \vec {a}_2 + t_{2t3} \\ &= R_{2t3} (R_{1t2} \vec{a}_1 + t_{1t2}) + t_{2t3} \end{aligned}ある2ある3=R1t2 _ _ある1+t1t2 _ _=R2t3 _ _ある2+t2t3 _ _=R2t3 _ _( R1t2 _ _ある1+t1t2 _ _)+t2t3 _ _
上記の変換には 2 つの回転行列がありますが、2 つの回転の組み合わせR 2 t 3 × R 1 t 2 R_{2t3} \times R_{1t2}R2t3 _ _×R1t2 _ _加算など、2 つの回転行列の単純な線形結合とは等しくありません。
同様に、クォータニオンを使用して回転を記述する場合、クォータニオンの乗算も非線形になります。
5. 変換行列TT を使用するT は非線形性を解きます
ユークリッド変換の非線形問題は同次座標の方法で解くことができます。
同次座標は、追加の座標を追加することで標準座標を拡張します。回転と平行移動は単一の行列で表すことができるため、変換が簡単になります。
具体的な解決策は、3 次元ベクトルの末尾に 1 を加えて同次座標と呼ばれる 4 次元ベクトルに変換することです。このユークリッド変換では、
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 \vec{a}_2 = R_{1t2} \vec{a}_1 + t_{1t2}ある2=R1t2 _ _ある1+t1t2 _ _
回転行列と平行移動ベクトルを同じ変換行列 (Transformation Matrix) に書き込み、同時に次元を拡張します。
[ a ⃗ 2 1 ] = [ R 1 t 2 t 1 t 2 0 1 × 3 1 ] [ a ⃗ 1 1 ] = T [ a ⃗ 1 1 ] \begin{aligned} \left[\begin{matrix} \ vec{a}_2 \\ 1 \end{行列}\right] &= \left[\begin{行列} R_{1t2} & t_{1t2} \\ 0_{1 \times 3} & 1 \\ \end {行列}\right] \left[\begin{行列} \vec{a}_1 \\ 1 \\ \end{行列}\right] \\ &= T \left[\begin{行列} \vec{a }_1 \\ 1 \\ \end{行列}\right] \end{整列}[ある21】=[R1t2 _ _01 × 3t1t2 _ _1】[ある11】=T[ある11]
TTTは変換行列です。
同次座標の意味は、ユークリッド変換を線形関係として表現することです。
したがって、ユークリッド変換が同次座標になった後、次のようになります。
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 [ a ⃗ 2 1 ] = T [ a ⃗ 1 1 ] \begin{aligned} \vec{a}_2 &= R_{1t2} \vec{ a}_1 + t_{1t2} \\ \left[\begin{行列} \vec{a}_2 \\ 1 \end{行列}\right] &= T \left[\begin{行列} \vec{a }_1 \\ 1 \\ \end{行列}\right]\end{整列}ある2[ある21]=R1t2 _ _ある1+t1t2 _ _=T[ある11]
変換行列TTTのプロパティ:
-
変換行列TTT は特殊ユークリッド群SE SESE:
SE ( 3 ) = { T = [ R t 0 1 × 3 1 ] ∈ R 4 × 4 ∣ R ∈ SO ( 3 ) , t ∈ R 3 } SE(3) = \{ T = \left[\ begin{行列} R & t \\ 0_{1\times3} & 1 \\ \end{行列}\right] \in \R^{4\times4} | R \in SO(3), t \in \R^3 \}SE ( 3 )={ T=[R01 × 3t1】∈R4 × 4∣R __∈そ( 3 ) 、t∈R3 } -
変換行列の逆行列は、逆変換を表します。
T − 1 = [ RT − RT t 0 1 × 3 1 ] T^{-1} = \left[\begin{matrix} R^\text{T} & - R^\text{T} t \\ 0_{1\times3} & 1 \\ \end{行列}\right]T− 1=[RT01 × 3− Rtt _1】