旋转向量-旋转矩阵

今天接触到摄像机标定,其中用到旋转矩阵的知识,就具体恶补学习了一下,顺便做个笔记。

物体在空间中的旋转

物体在三维空间中的旋转,可以被分为解为在直接坐标系下,分别先后围绕x,y,z坐标轴旋转得到。旋转的角度也就是我们常听到的角度roll,pitch,yew。如果已知这几个角度,就可以直接通过每一步的矩阵相乘得到整个旋转矩阵。

R=R(yaw)R(pitch)R(roll)

具体可以参考 wiki。

由旋转向量得到旋转矩阵

除了由上述办法,旋转还可以理解为围绕空间中某一个向量,直接一次旋转某一个角度得到。
在openCV标定时得到的旋转向量 r 就是用这种方式,其模为旋转角度,单位向量代表围绕该轴旋转。
参考opencv的Rodrigues2函数,可以直接由如下公式得到旋转矩阵:
旋转角度 θ=norm(r)
单位向量 (rx,ry,rz)=r/θ
旋转矩阵

R=cos(θ)I+(1cos(θ))rrT+sin(θ)0rzryrz0rxryrx0

其中 I 为单位矩阵, rT r 的转置。
所以
rrT=rxrxryrxrzrxrxryryryrzryrxrzryrzrzrz

求解 旋转矩阵的过程还可以反变换求出 旋转向量,这里就不写了,具体可以参考opencv文档。

由旋转向量直接求解旋转过程

得到旋转矩阵之后,当然可以通过旋转矩阵乘以某向量得到旋转后的向量,但是如果我们首先已知的是旋转向量,我们也可以直接通过它求得某向量旋转后的表达式,不需要先转换成旋转矩阵
这里用 r 表示待旋转的向量, v 为旋转向量的单位向量 θ 为旋转角,旋转后的向量可以表示为

r=rcos(θ)+(1cos(θ))(vr)v+sin(θ)(v×r)

你可能感兴趣的:(OpenCV笔记)