由旋转矩阵计算欧拉角的方法
算法一:直接法
- bool isRotationMatrix(cv::Mat &R)
- {
- cv::Mat R_t;
- cv::transpose(R,R_t);
- cv::Mat shouldBeIdentity=R_t*R;
- cv::Mat I = cv::Mat::eye(3,3,shouldBeIdentity.type());
- return norm(I,shouldBeIdentity)< 1e-6;
- }
- void getEulerAngles(cv::Mat matrix)
- {
- assert(isRotationMatrix(matrix));
- float sy=sqrt(matrix.at<double>(0,0)*matrix.at<double>(0,0)+matrix.at<double>(1,0)*matrix.at<double>(1,0));
- bool singular = sy<1e-6;
- if(!singular)
- {
- theta_x=atan2(matrix.at<double>(2,1),matrix.at<double>(2,2));
- //theta_x= theta_x*180.0/3.1416 ;
- theta_y=atan2(-matrix.at<double>(2,0), sy);
- //theta_y= theta_y*180.0/3.1416 ;
- theta_z=atan2(matrix.at<double>(1,0), matrix.at<double>(0,0));
- //theta_z= theta_z*180.0/3.1416 ;
- }
- else
- {
- theta_x=atan2(-matrix.at<double>(1,2), matrix.at<double>(1,1));
- //theta_x= theta_x*180.0/3.1416 ;
- theta_y=atan2(-matrix.at<double>(2,0), sy);
- //theta_y= theta_y*180.0/3.1416 ;
- theta_z=0;
- //theta_z= theta_z*180.0/3.1416 ;
- }
- Debug("theta_x");
- Debug(theta_x);
- Debug("theta_y");
- Debug(theta_y);
- Debug("theta_z");
- Debug(theta_z);
- }
NOTE:需要判断奇异性(singularity)!
算法二:拆分法
- void getEulerAngles(cv::Mat &R,cv::Mat &t,cv::Mat &euler_angles)
- {
- cv::Mat camMatrix,rotMatrix,transVect,theta_x,theta_y,theta_z;
- cv::Mat rotation_vec;
- cv::Mat projMatrix = cv::Mat(3,4,CV_64FC1);
- //cv::Mat euler_angles = cv::Mat(3,1,CV_64FC1);
- cv::Mat out_intrinsics = cv::Mat(3,3,CV_64FC1);
- cv::Mat out_rotation = cv::Mat(3,3,CV_64FC1);
- cv::Mat out_translation = cv::Mat(4,1,CV_64FC1);
- cv::hconcat(R,t,projMatrix);//将R、t拼接维投影矩阵
- cv::decomposeProjectionMatrix(projMatrix,out_intrinsics,out_rotation,out_translation,
- cv::noArray(),cv::noArray(),cv::noArray(),euler_angles);
- //将投影矩阵分解为旋转矩阵和相机(内参)矩阵
- Debug("Euler Angle");
- Debug(euler_angles);
- }
无需判断奇异性,直接调用库函数,相对简单
转载自:https://blog.csdn.net/lircsszz/article/details/80118051
http://www.taodudu.cc/news/show-1217173.html
相关文章:
- Matlab--绘图总结
- 谈均值、方差、标准差、协方差的概念及意义
- 最小二乘法(1)
- 张正友标定Opencv实现、标定流程以及图像坐标转为世界坐标
- 畸变校正详解
- 双线性内插插值原理
- TX2刷机flashOS finished后,卡在determining IP address解决方案
- Jetson-TX2安装opencv教程
- Jetson TX2板载相机opencv调用打开
- 单独像对相对定向的部分基本概念
- 单独像对相对定向元素解析
- 模型点计算
- 连续法相对定向元素
- 绝对圆锥曲线
- aarch64(ARMv8)交叉编译环境下载
- 施密特正交化的几何解释
- 信赖域算法
- 最优化系列
- 向量和矩阵范数总结
- 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
- 矩阵的四个基本子空间
- 对角化和A 的幂
- 选主元的高斯-约旦(Gauss-Jordan)消元法解线性方程组/求逆矩阵
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC
- PCL1.8.0+Windows+VS2013配置
- 正规方程的推导过程
- (多变量线性回归)正规方程求解特征参数的推导过程
- 你应该要掌握的7种回归分析方法
- 目标识别、目标跟踪算法总结
- 牛顿法与拟牛顿法学习笔记
由旋转矩阵计算欧拉角的方法相关推荐
- 从旋转矩阵计算欧拉角
从旋转矩阵计算欧拉角 从旋转矩阵中找到所有可能的欧拉角的简单方法,在计算机图形学.视觉学.机器人学和运动学中,欧拉角的确定有时是必要的一步.然而,解决方案可能是明显的,也可能不是. 旋转矩阵 我们从三 ...
- 学习笔记17 --使用matlab自带函数,将旋转矩阵计算成欧拉角
个人环境是使用matlab2017b 该公式计算欧拉角有个要求,必须是3x3的旋转矩阵(尝试过4x4的计算不了).matlab自带的由旋转矩阵计算欧拉角公式是,rotm2eul(),其可以指定旋转顺序 ...
- 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异
概述 在3D图形学中,几何变换大致分为三种:平移变换(Translation).缩放变换(Scaling).旋转变换(Rotation),而其中又以旋转变换(Rotation)最为复杂,通常旋转变换( ...
- 从某一点出发沿任意一方向旋转矩阵计算思考与实现
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 上期讲到 绕任一向量旋转矩阵计算思考与实现 点击前往 点击前往 问题提出 之前讲到绕任一向量旋转矩阵实现,原来的向量都是从原点出 ...
- 图形学笔记(四)变换——三维变换(三维旋转与欧拉角)、MVP变换、视图变换、投影变换(正交投影与透视投影)
图形学笔记(三)变换--缩放.镜像.切变 图形学笔记(五)光栅化--屏幕.像素.屏幕空间.视口变换.基础图元与三角形.采样.包围盒.锯齿或走样 文章目录 1 三维空间中的变换 1.1 三维空间中的齐次 ...
- 如何让python图案旋转_python实现旋转和水平翻转的方法
如下所示: # coding=utf-8 import glob import os from PIL import Image def rotate_270(imgae): "" ...
- ios键盘横屏_iOS横竖屏旋转及其基本适配方法 转
目录 一.最让人纠结的三种枚举 二.两种屏幕旋转的触发方式 三.屏幕旋转控制的优先级 四.开启屏幕旋转的全局权限 五.开启屏幕旋转的局部权限(视图控制器) 六.实现需求:项目主要界面竖屏,部分界面横屏 ...
- 2022年最简单旋转PDF页面的方法推荐
有时候,我们打开一个PDF文件就会发现,有些PDF页面会被颠倒或错误旋转,会影响我们阅读,那遇到这种情况,要如何将其旋转到正确的位置?今天我们就借助金闪PDF编辑器给大家推荐几个简单的旋转PDF页面的 ...
- PDF文件旋转最好用的方法
PDF文件旋转最好用的方法,很多情况下收到一份PDF文件,打开阅读或编辑时发现页面是反方向,需要针对个别的页面进行旋转,或者是整篇文章进行旋转,以使整个排版看起来更合理.方便.美观.小编给大家整理了一 ...
最新文章
- python实现文件搜索_python实现搜索指定目录下文件及文件内搜索指定关键词的方法...
- gentoo下gnome的抓图功能
- python os.chdir函数
- 文巾解题 136. 只出现一次的数字
- go mysql教学_Go语言之对Mysql简单操作
- JVM调优:常见垃圾回收算法
- 浙南联合训练赛20180414
- go 公众号 关注 监听_golang微信公众平台之消息接入
- php设置文字大小、,html字体大小怎么设置
- msf生成php木马,11.7 Weevely3生成网页木马、Backcookie后门生成工具、使用msf生成木马、一句话变形技巧和使用...
- 原创|批处理|Monkey自动测试工具批处理版
- WinRAR是什么?------压缩工具
- mysql的外文图书_外文数据库
- 向量的加减法与内外积
- 创新彰显实力,方正璞华又获一项国家发明专利
- 关于【正点原子STM32F1开发指南】第五章delay.c文件里fac_us=SystemCoreClock/8000000的保姆级详解
- 康奈尔rtems笔记(1)
- win7虚拟机时间不能修改怎么办
- 「斐讯」N1-YYF 固件
- 进程同步/异步的区别
热门文章
- Royal TS 一款非常好用的SSH客户端,XShell的完美代替品
- Hystrix面试 - 基于 request cache 请求缓存技术优化批量商品数据查询接口
- ZooKeeper管理员指南
- 银行业务队列简单模拟(队列queue)
- C语言 结构体练习之投票
- linux查看openjdk的安装的路径
- [极客大挑战 2019]PHP
- Redux中的功能式React式编程简介
- 团队建设及管理上的举措_为什么在副项目上工作是您作为开发人员的最佳举措...
- matlab中函数或变量无法识别怎么办_用MATLAB巧解微分方程实例分析