单目相机三维姿态解算
单目相机三维姿态解算
Abstract:This passage mainly describes how to solve pose(Yaw,Pitch,Roll)with signal camera in three-dimensional,which bases on OpenCV library.
Key words: OpenCV; Pose;Signalcamera
摘 要:本文主要描述的是利用开源计算机视觉库OpenCV解决单目相机的三维姿态解算问题,最终能求出单目相机相对于已知物体的三维姿态欧式角,即俯仰角,偏航角,滚轮角。
1 总体设计方案
本文的单目相机姿态解算能应用于无人机、机器人姿态解算系统,能测量出相机相对于被检测物体平面的三维姿态角,即俯仰角、偏航角、滚轮角。
2 相机标定
2.1针孔摄像机模型
2.1棋盘标定法
本文使用棋盘标定法进行相机的标定。棋盘标定法又称“张氏标定”,是由张正有于1988年提出的单面棋盘格的摄像机标定方法。
OpenCV提供calibrateCamera()函数进行标定,利用该函数我们能得出相机的内参数,包括相机基本矩阵
其中k1,k2为径向畸变,p1,p2为切向畸变,对普通摄像头我们一般只需要前四个系数,但对于畸变很大的摄像头,如鱼眼摄像头,我们应该采用5-8个系数向量。
相机姿态估计的基本思想是利用相机的内参数以及已知物体在空间坐标与与之一一对应的图像坐标的投影关系来求出此时物体相对于已知物体在三维空间坐标的外参数,也即是旋转矩阵以及平移向量。
此关键算法是解决N点透视投影问题,也称作PNP(Perspective-N-Point)问题。
3.1 3D点(X,Y,Z)与2D(x,y)点的联系
根据上述的针孔投影关系:x = f * (X/Z),我们可以容易地得出下列投影关系:(这里我们引入了fx:水平像素表示的焦距,fy:竖直像素表示的焦距,因为像素在大多情况下为矩形而不是正方形)
因此,我们需要引入旋转平移矩阵[R|t],其中,R为3*3旋转矩阵,t为3*1平移向量。有下列矩阵
我们用x表示图像像素平面的某一点的矩阵,X表示为世界坐标系的某一点的矩阵,M为相机基本矩阵,即有:x =M*[R|t]*X。
3.2 PNP(Prespective-N-Point)问题
OpenCV提供solvePnP以及solvePnPRanssac函数来求解出相机相对于已知物体的三维空间坐标系的旋转和平移向量。
根据上式x = M*[R|t]*X,要求出外参数[R|t],我们必须知道相机基本矩阵M,以及已知物体在三维空间坐标点X,与之对应的图像像素坐标点x。
图六 PNP问题的理解(已知特征点在图像坐标与空间坐标的关系)
4 三维姿态欧式角解算
4.1 旋转矩阵R
可以用下面代码表示的以上的旋转矩阵转换成三维姿态角(滚轮角、偏航角、俯仰角)的过程:
4.2 相机三维姿态欧式角
4.2.1 偏航角Yaw
由上图我们可以知道,偏航角就是绕Yaw Axis(Z轴)旋转的角度。
4.2.2 滚轮角Roll
由上图我们可以知道,偏航角就是绕Roll Axis(Y轴)旋转的角度。
4.2.3 俯仰角Pitch
由上图我们可以知道,偏航角就是绕Pitch Axis(X轴)旋转的角度。
5 实验结果
5.1 相机标定得出内参数
利用张正友棋盘法计算出相机内参数,包括相机基础矩阵M1,畸变向量D1:
5.2 求解物体在图像上的三维空间坐标轴(即PNP问题)
本文使用OpenCV提供的projectPoints函数解算出已知空间轴坐标点对应的图像坐标上的坐标点。最后将对应图像坐标点连在一起即为物体的空间坐标系。
图十一 物体的三维空间坐标系在图像中的表示(红色为X轴,绿色为Y轴,蓝色为Z轴)
5.3 求解三维姿态角
实验情况一:相机位于已知物体的上方,与物体空间坐标轴平行,没有偏转。即:偏航角,滚轮角,俯仰角理论上都为0度。
图十二 相机位于已知物体的上方(与物体空间坐标轴平行,没有偏转)
实验情况二:相机平面与物体平面成45度角但左右没有偏转。即:理论上,偏航角为0度,滚轮角为0度,俯仰角为45度。
图十三 相机平面与物体平面成45度(与物体空间坐标X轴Y 轴平行,与Z轴成45度)
6 结束语
从实验结果中可以看出,误差正负5°左右,个人认为误差主要是标定结果(内参数)以及角点特征提取不准造成的。
[1] OpenCV.2.Computer.Vision.Application.Programming.Cookbook.pdf
[3] Gregory G.Slabaugh - Computing Euler angles from a rotation matrix
单目相机三维姿态解算相关推荐
- 相机矫正_实战 | 我用位姿解算实现单目相机测距
在项目过程中,总遇到需要单目视觉给出目标测距信息的情况,其实单目相机本不适合测距,即使能给出,精度也有限,只能在有限制的条件下或者对精度要求很不高的情况下进行应用.该文结合SLAM方法,通过3D-2D ...
- 实战 | 巧用位姿解算实现单目相机测距
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在项目过程中,总遇到需要单目视觉给出目标测距信息的情况,其实单目相 ...
- 九七的视觉工程 | 普通单目相机成像过程及相机内参详解
相机成像过程及相机内参详解 一.定义介绍 本节以小孔成像模型为例,详细介绍了普通单目相机的成像过程,相机内参及内参矩阵的详细含义.本节所述的成像原理与大部分相机成像原理类似,读懂此节可满足大部分与 ...
- 基于OpenCV的单目相机标定与三维定位
相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...
- python捷联惯导的姿态解算_自动驾驶中高精地图的大规模生产:视觉惯导技术在高德的应用...
导读:导航.驾驶辅助.自动驾驶等技术的不断发展对地图的精细程度提出了更高的要求.常规的道路级地图对于智能交通系统存在很多不足,针对自动驾驶应用的需求,我们提出了利用视觉惯导技术制作高精地图的方法. 本 ...
- 重磅直播|GDR-Net:基于几何信息指导的单目6D物体姿态估计算法(CVPR2021作者开讲啦)...
大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微信群内完成答疑. 本期由清华大学自动化系BBNC Lab王谷博士分享,分享的主题为<基于几何 ...
- 单目相机空间定位文献阅读
关键词 单目相机:Monocular camera 单目相机空间定位:Monocular camera geolocation 大范围单目PTZ相机空间定位:Large-range Monocular ...
- 基于单目相机的2D地图构建
第一章 引言 1.1 研究背景 同时定位和建图(SLAM)是机器人和自主导航中的一个重要领域.它是指机器人在未知环境中移动并使用其传感器和里程计信息构建环境地图并同时估计其在此地图中位置的过程.SLA ...
- 华为诺亚方舟加拿大实验室提出BANet,双向视觉注意力机制用于单目相机深度估计...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章的作者是华为加拿大诺亚方舟实验室,是一篇将双向注意力机制用于弹幕深度估计的工作.主要的创新点在 ...
最新文章
- Linux文件内容查看相关命令
- 分布式锁实现:Redis
- Cs Round#56 D Find Path Union
- 数据结构--快速排序
- python核心编程:web服务器日志分析简单脚本
- javascript --- 异步按顺序执行
- python matplotlib.pyplot 填充曲线下面积
- 不服!女性为何成为科技领域的“隐形人”?讲讲崛起中的“她”力量
- 努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT
- 【中科院】分子生物学-朱玉贤第四版-笔记-第14-16讲 真核生物基因表达调控
- SQL Server数据库的创建方法
- 借助 Finder 的Jitouch插件实现 Chrome 三指在 New Tab 中打开链接
- 港科喜讯 | 香港科大校长史维教授获法国政府颁授勋章
- 服务器文件变更监控,监控文件夹变化并ftp到服务器
- IEC61499和PLCopen 运动控制
- JPEG图像压缩探索_zigzag扫描(原创)
- t440p安装黑苹果+win10双系统记录
- 2022年京东五月份有什么活动?京东打折力度最大是什么时候?
- 1 C++ 11 新特性
- 可由一个尾指针唯一确定的链表有_可由一个尾指针唯一确定的链表有________、________、________。...
热门文章
- MacOS安装npm
- android 小米键盘输入法,Facemoji输入法小米版
- springboot状态机模式
- Transphorm第三代经JEDEC认证的GaN半导体将助力稳态光电全新的1.6 kW钛金级ATX PC游戏电源
- 【整理】22款免费在线图表制作工具
- 案例4加减乘除四则运算
- Vue子组件绑定事件无效
- 冲突杀手meld -- git使用meld作为对比或合并工具_zhou
- python在mac上打不来_我可以打开jupyter笔记本,但无法在Mac上运行带有python脚本的笔记本...
- P3437 [POI2006]TET-Tetris 3D