您的位置:首页 > 其它

旋转向量-旋转矩阵

2015-07-22 17:32 176 查看
今天接触到摄像机标定,其中用到旋转矩阵的知识,就具体恶补学习了一下,顺便做个笔记。

物体在空间中的旋转

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

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

具体可以参考wiki

由旋转向量得到旋转矩阵

除了由上述办法,旋转还可以理解为围绕空间中某一个向量,直接一次旋转某一个角度得到。

在openCV标定时得到的旋转向量r\textbf{r}就是用这种方式,其模为旋转角度,单位向量代表围绕该轴旋转。

参考opencv的Rodrigues2函数,可以直接由如下公式得到旋转矩阵:

旋转角度 θ=norm(r)\theta=norm(\textbf{r})

单位向量 (rx,ry,rz)=r/θ(r_x,r_y,r_z)=\textbf{r}/\theta

旋转矩阵

R=cos(θ)I+(1−cos(θ))rrT+sin(θ)∣∣∣∣∣0rz−ry−rz0rxry−rx0∣∣∣∣∣
R=cos(\theta)\textbf{I}+(1-cos(\theta))\textbf{rr}^T+sin(\theta)\begin{vmatrix}
0&-r_z&r_y\\
r_z&0&-r_x\\
-r_y&r_x&0
\end{vmatrix}

其中I\textbf{I}为单位矩阵,rT\textbf{r}^T为r\textbf{r}的转置。

所以

rrT=∣∣∣∣∣rx∗rxry∗rxrz∗rxrx∗ryry∗ryrz∗ryrx∗rzry∗rzrz∗rz∣∣∣∣∣
\textbf{rr}^T=\begin{vmatrix}
r_x*r_x&r_x*r_y&r_x*r_z\\
r_y*r_x&r_y*r_y&r_y*r_z\\
r_z*r_x&r_z*r_y&r_z*r_z
\end{vmatrix}

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

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

得到旋转矩阵之后,当然可以通过旋转矩阵乘以某向量得到旋转后的向量,但是如果我们首先已知的是旋转向量,我们也可以直接通过它求得某向量旋转后的表达式,不需要先转换成旋转矩阵

这里用r\textbf{r}表示待旋转的向量,v\textbf{v}为旋转向量的单位向量,θ\theta为旋转角,旋转后的向量可以表示为

r′=rcos(θ)+(1−cos(θ))(v⋅r)v+sin(θ)(v×r)
r'=\textbf{r}cos(\theta)+(1-cos(\theta))(\textbf{v}\cdot\textbf{r})\textbf{v}+sin(\theta)(\textbf{v}\times\textbf{r})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: