美文网首页
OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化

OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化

作者: 搬砖侠之初级小菜鸡 | 来源:发表于2016-12-19 16:24 被阅读0次

    处理三维旋转问题时,通常采用旋转矩阵的方式来描述。一个向量乘以旋转矩阵等价于向量以某种方式进行旋转。除了采用旋转矩阵描述外,还可以用旋转向量来描述旋转,旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧度)。旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)变换进行转换。

    算法过程


    式中,norm为求向量的模。反变换也可以很容易的通过如下公式实现
    OpenCV实现Rodrigues变换的函数为

     int  cvRodrigues2(const  CvMat*  src,  CvMat*  dst,  CvMat*  jacobian=0);

    src为输入的旋转向量(3x1或者1x3)或者旋转矩阵(3x3)。

    dst为输出的旋转矩阵(3x3)或者旋转向量(3x1或者1x3)。

    jacobian为可选的输出雅可比矩阵(3x9或者9x3),是输入与输出数组的偏导数。

    可以用上述方式法验证以下例子

    验证代码如下:

    #include

    #include

    voidmain()

    {

    inti;

    doubler_vec[3]={-2.100418,-2.167796,0.273330};

    doubleR_matrix[9];

    CvMatpr_vec;

    CvMatpR_matrix;

    cvInitMatHeader(&pr_vec,1,3,CV_64FC1,r_vec,CV_AUTOSTEP);

    cvInitMatHeader(&pR_matrix,3,3,CV_64FC1,R_matrix,CV_AUTOSTEP);

    cvRodrigues2(&pr_vec,&pR_matrix,0);

    for(i=0;i<9;i++)

    {

    printf("%f\n",R_matrix[i]);

    }

    }

    http://blog.sina.com.cn/s/blog_5fb3f125010100hp.html

    相关文章

      网友评论

          本文标题:OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化

          本文链接:https://www.haomeiwen.com/subject/qpytvttx.html