旋转矩阵
相机可以看成三维空间的刚体,于是位置是指相机在空间中的哪个地方,而姿态则是指相机的朝向。
内积可以描述向量间的投影关系。
外积表示向量的旋转。
a×b=⎣⎢⎡ia1b1ja2b2ka3b3⎦⎥⎤=⎣⎢⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎥⎤=⎣⎢⎡0a3−a2−a30a1a2−a10⎦⎥⎤b≜a∧b
a∧记为a反对称矩阵。
我们设某个单位正交基 (e1,e2,e3) 经过一次旋转, 变成了(e1′,e2′,e3′)。我们有:
[e1,e2,e3]⎣⎢⎡a1a2a3⎦⎥⎤=[e1′,e2′,e3′]⎣⎢⎡a1′a2′a3′⎦⎥⎤
可以写为:
⎣⎢⎡a1a2a3⎦⎥⎤=⎣⎢⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′⎦⎥⎤⎣⎢⎡a1′a2′a3′⎦⎥⎤≜Ra′.
这个矩阵由两组基之间的内积组成,刻 画了旋转前后同一个向量的坐标变换关系。
旋转矩阵的集合定义为:
SO(n)={R∈Rn×n∣RRT=I,det(R)=1}
变换矩阵
[a′1]=[R0Tt1][a1]≜T[a1]
矩阵$ T $称为变换矩阵。
矩阵又称为特殊欧氏群(Special Euclidean Group):
SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}
求解该矩阵的逆表示一个反向的变换:
T−1=[RT0T−RTt1]
旋转向量
任意旋转都可以用一个旋转轴和一个旋转角。这种表示法只需一个三维向量即可描述旋转。同样,对于变换矩阵,我们使用一个旋转向量和一个平移向量即可表达一次变换。这时的维数正好是六维。
设旋转轴为n,旋转角为θ,它对应的旋转向量为θn。
旋转向量到旋转矩阵的过程由罗德里格斯公式(Rodrigues’s Formula )表明:
R=cosθI+(1−cosθ)nT+sinθn∧
θ=arccos(2tr(R)−1)
欧拉角
欧拉角则提供了一种非常直观的方式来 描述旋转——它使用了三个分离的转角,把一个旋转分解成三次绕不同轴的旋转:
- 绕物体的 Z 轴旋转,得到偏航角 yaw;
- 绕旋转之后的 Y 轴旋转,得到俯仰角 pitch;
- 绕旋转之后的 X 轴旋转,得到滚转角 roll。
欧拉角的一个重大缺点是会碰到著名的万向锁问题,欧拉角不适于插值和迭代,往往只用于人机交互中。

四元数
找不到不带奇异性的三维向量描述方式,。三维旋转是一个三维流形,想要无奇异性地表达它,用三个量是不够的。
四元数 是 Hamilton 找到的一种扩展的复数. 它既是紧凑的,也没有奇异性。
q=q0+q1i+q2j+q3ky
⎩⎪⎪⎪⎨⎪⎪⎪⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
q=[s,v],s=q0∈R,v=[q1,q2,q3]T∈R3
单位四元数表示三维空间中任意一个旋转。 假设某个旋转是绕单位向量$ n = [n_x, n_y, n_z]^T 进行了角度为\theta$的旋转,那么这个旋转的四元数形式为:
q=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]T
亦可从单位四元数中计算出对应旋转轴与夹角:
{θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]T/sin2θ
在四元数中, 任意的旋转 都可以由两个互为相反数的四元数表示。
用四元数表示旋转
p′=qpq−1
四元数到旋转矩阵的转换
R=⎣⎢⎡1−2q22−2q322q1q2−2q0q32q1q3+2q0q22q1q2+2q0q31−2q12−2q322q2q3−2q0q12q1q3−2q0q22q2q3+2q0q11−2q12−2q22⎦⎥⎤
q0=2tr(R)+1,q1=4q0m23−m32,q2=4q0m31−m13,q3=4q0m12−m21
相似变换
相似变换比欧氏变换多了一个自由度,它允许物体进行均匀的缩放,其矩阵表示为:
TS=[sR0Tt1]
仿射变换
与欧氏变换不同的是,仿射变换只要求$ A $是一个可逆矩阵,而不必是正交矩阵。仿射变换也叫正交投影。经过仿射变换之后,立方体就不再是方的了,但是各个面仍然是平行四边形。
TA=[A0Tt1]
射影变换
射影变换是最一般的变换,它的矩阵形式为:
TP=[AaTtv]
从真实世界到相机照片的变换是一个射影变换。如果相机的焦距为 无穷远,那么这个变换则为仿射变换。