从今天开始,把自己学习OpenCV的心得记录下来,以系列的形式贴到博客中,以期交流与备查之用,笔记内容主要偏向于算法的理解。
    处理三维旋转问题时,通常采用旋转矩阵的方式来描述。一个向量乘以旋转矩阵等价于向量以某种方式进行旋转。除了采用旋转矩阵描述外,还可以用旋转向量来描述旋转,旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧度)。旋转向量与旋转矩阵可以通过罗德里格斯(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 <stdio.h>
#include <cv.h>

void main()
{
    int i;
    double r_vec[3]={-2.100418,-2.167796,0.273330};
    double R_matrix[9];
    CvMat pr_vec;
    CvMat pR_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--罗德里格斯(Rodrigues)变换相关推荐

  1. Rodrigues变换

    从今天开始,把自己学习OpenCV的心得记录下来,以系列的形式贴到博客中,以期交流与备查之用,笔记内容主要偏向于算法的理解.处理三维旋转问题时,通常采用旋转矩阵的方式来描述.一个向量乘以旋转矩阵等价于 ...

  2. OpenCV离散傅立叶变换DFT的实例(附完整代码)

    OpenCV离散傅立叶变换DFT的实例 OpenCV离散傅立叶变换DFT的实例 OpenCV离散傅立叶变换DFT的实例 #include "opencv2/core.hpp" #i ...

  3. OpenCV使用F变换过滤

    OpenCV使用F变换过滤 使用F变换过滤 目标 模糊变换应用 代码 解释 使用F变换过滤 目标 本教程向您演示如何使用F变换进行图像过滤.你会看见: 背后的基本理论 不同设置的插图. 模糊变换应用 ...

  4. OpenCV使用F变换进行修补

    OpenCV使用F变换进行修补 使用F变换进行修补 目标 介绍 模糊变换应用 代码 解释 使用F变换进行修补 目标 在本教程中,您将学习使用F变换修复图像的工作原理.它包括: 背后的基本理论 三种不同 ...

  5. OpenCV离散傅立叶变换

    OpenCV离散傅立叶变换 离散傅立叶变换 目标 源代码 解释 将图像放大到最佳尺寸 兼顾复杂和真实的值 进行离散傅立叶变换 将真实和复杂的值转换为幅度 裁剪并重新排列 归一化 结果 离散傅立叶变换 ...

  6. Python+OpenCV:形态学变换

    Python+OpenCV:形态学变换 理论 形态学变换是基于图像形状的一些简单操作. 它通常在二值图像上执行.它需要两个输入,一个是我们的原始图像,另一个是结构元素(structuring elem ...

  7. OpenCV Laplacian 拉普拉斯变换

    ::返回OpenCV算子速查表 OpenCV Laplacian 拉普拉斯变换 1. 函数 2. 例程 原图 Sobel和Scharr的处理结果 Laplacian 1. 函数 OpenCV官方文档链 ...

  8. opencv之伪彩变换

    opencv之伪彩变换 我们在处理红外图像时,由于红外图像都是16位的数据,灰度范围较大,对比度不明显,经常通过直方图均衡的方式将图像增强进行8位的显示. 红外图像在一定程度上反映了环境中物体的温度变 ...

  9. 基于Python利用OpenCV实现Hough变换的形状检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们将学习如何借助霍夫变换技术来检测图像中的直线和圆. 什么是 ...

  10. opencv 其他形态学变换

    如何使用OpenCV函数 morphologyEx 进行形态学操作: 开运算 (Opening) 闭运算 (Closing) 形态梯度 (Morphological Gradient) 顶帽 (Top ...

最新文章

  1. 导致用户体验差造成网站跳出率过高的原因有哪些?
  2. maven 通用pom.xml
  3. BD云20MB/s不限速,随时下架!
  4. 7.3(java学习笔记)网络编程之UDP
  5. centos7上安装nodejs
  6. mysql 身份证算年龄
  7. 华师计算机学院在职研究生,2021年华南师范大学在职研究生招生简章
  8. 牛年第一瓜!阿里女员工被骗500多万!初中文化水平男子,滴滴开豪车,诈骗4000多万被判无期!...
  9. 文件服务器查询重复文件,DupScout – 重复文件扫描、删除或移动的免费工具
  10. 高维统计理论 Gauss与Rademacher复杂度
  11. 【目标检测】0、目标检测方法发展综述
  12. XiaoHu日志 6/3~6/5
  13. 老王卖西瓜python_Python老王视频习题答案
  14. 再也不怕面试官问我平时都从什么途径学习了
  15. Linux命令 - gunzip命令
  16. 三十八载,Oracle伴我同行—记我的职业成长之路
  17. 开源防火墙pfSense的安装及初始化
  18. QT5.9.4 + cmake + VC2017 运行”run cmake“出现错误:xxx is not able to compile a simple test
  19. JAVA微信公众号完整版教程扫一扫登录/自动回复/客服消息
  20. 周星驰电影全集+BT种子下载+高清版MKV+周星驰系列电影合集

热门文章

  1. Pentaho Data Integration - Kettle 入门指南
  2. 简易 责任链的两种实现方式
  3. 【Linux 命令】云服务器 ECS (CentOS) 开启防火墙操作
  4. 【Java】数组的使用
  5. C#LeetCode刷题-线段树
  6. 通用职责分配软件原则之5-控制器原则
  7. 正则表达式与python re
  8. git 别名_Git别名简介:使用Git的更快方法
  9. firebase使用_如何开始使用Firebase Hosting
  10. regexbuddy使用记录