双目标定(一)单目标定与矫正的基本介绍
1.单目相机标定
首先,任何标定都是用基于小孔模型的数学模型去近似相机模型,我们需要用fx = f/dx, fy = f/dy,图像坐标系中的光心原点坐标(和可能的缩放因子ks)这5个相机内参数,切向畸变参数和径向畸变参数,共5+N个参数来“近似”整个相机投影模型。这是我们需要求解的量。
1.1求解标准的内参数矩阵
想想我们平时用opencv(matlab等)进行单目标定时,我们需要提前测量出:棋盘格格点之间的物理距离。
在像平面和棋盘格平面一个单应性映射。假设棋盘格平面就在世界坐标xoy上,即z坐标为0:
设A为内参数矩阵:
其中 γ γ \gamma称为skew参数,如果成像的横轴和纵轴不平行则skew参数不为0。且 γ=fx∗cotα γ = f x ∗ c o t α \gamma = fx* cot\alpha,其中 α α \alpha为横轴纵轴的夹角。
由重投影可以得到:
即:
由于r1,r2正交(一个绕x旋转,一个绕y旋转),而且r1,r2的模为1,所以得到两个约束方程:
每一张标定图像可以得到一个世界坐标系到当前相机坐标系的单应性矩阵,一个单应性矩阵可以得到两个约束方程,那么只要三张图像就可以求解处内参数矩阵的所有参数(如果不考虑skew参数 γ γ \gamma,即两张含标定板的图像就可以标定处所有内参数
1.2求解畸变参数(待更新)
由于畸变计算公式为:
径向畸变:
切向畸变:
我们将标定板中n个格点通过内外参数投影到像面上,再进行畸变计算公式矫正;如果畸变参数正好,点会与像平面上的吻合。所以这个步骤可以用优化的方式(如高斯牛顿、LM算法)来做,最小化投影误差之和,来优化得到畸变参数。
当然,上述1.1,1.2两部分都是在拍20张含有标定板(标定板占整张图像一定比例,最好是约一半,不能达到的话,至少应让标定板涵盖图像的各个角落),然后用最小二乘的优化方法来估计最好的内参数和畸变参数。
2.双目相机标定
2.1 双目之间位姿关系(旋转和基线长度)
双目标定包含两部分:求解每个相机的内参数矩阵(单目标定);求解两个相机之间的旋转和平移参数(严格意义上是6个参数)
我们一般在标定好单目(如上述1)后,再进行双目标定。
标定单目时,我们可以到外参数,即标定板所代表的世界坐标系到当前像面坐标系的位姿变换 Pi P i P_i(旋转和平移):
同时得到左相机和右相机相对于同一位置的标定板的位姿变换 Pl,Pr P l , P r P_l,P_r,那么左右相机的相对位姿即为:
P=P−1lPr P = P l − 1 P r P=P_l^{-1}P_r
从中即可得到两相机的平移和旋转关系,也即旋转和基线长度关系。
当然,这个过程也常常是在拍多张含有标定板的图像后进行最小二成优化的方法来求解最佳的P。
2.2 双目矫正
由于双目的主要作用常常是三角测量测距,这要求两个相机光心所在直线完全平行且等高。但现实的双目立体视觉系统中,不存在完全的共面行对准的两个相机图像平面的(理想情况:两相机图像平面平行,光轴和图像平面垂直,且光心连线与相机坐标系横轴平行)。
所以我们要对左右相机出来的图片进行立体校正,使得图片看起来就和理想共面行对准的相机拍摄出来的一样:
校正前:
矫正后:
(待续)
参考
1.https://blog.csdn.net/u011574296/article/details/73826420
2.https://blog.csdn.net/pinbodexiaozhu/article/details/43373247
双目标定(一)单目标定与矫正的基本介绍相关推荐
- 单目标定:OpenCV4实现单目标定及矫正
1 程序环境 系统环境:Windows 10: 编译器:Visual Studio 2015: Opencv版本:Opencv4.1.2版本: 2 原理 主要为张正友标定法,利用棋盘格进行标定,原理参 ...
- 相机标定——单目标定和双目标定
相机标定--单目标定和双目标定 1.标定目的 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相 ...
- 双目标定(二)单目标定基本原理
主体思路,先处理纯二维平面的畸变问题(此处略过),矫正图片后,再来求解相机内外参数.基本思路是求得每个标定板对应的单应矩阵,再联合优化所有标定板数据得到相机内参矩阵,再得到每个标定板对应的外参. 1. ...
- 使用opencv实现单目标定相机标定(摘抄)
使用opencv实现单目标定 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像. 相机 ...
- 单目标定---从原理到实现(c++)(利用张氏标定法)
文章转自:https://www.cnblogs.com/zyly/p/9366080.html 双目视觉是建立在几何数学的基础上,数学推导是枯燥乏味的.因此这里不去过多的介绍数学原理,只是简要的叙述 ...
- OpenCV3+VS2017+单目标定+双目标定+双目测距
理论知识请参考<学习OpenCV中文版>(公式,函数描述方面可能有错误注意一下,还有不要看<学习OpenCV3中文版>,可以看<Learning OpenCV3>英 ...
- OpenCV | 双目相机标定之OpenCV获取左右相机图像+MATLAB单目标定+双目标定
博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 原本网上可以搜到很多关于双目相机标 ...
- 结构光三维重建之单目标定的一种方法——建立“相位-像点-真实三维坐标”之间的关系
结构光三维重建之单目标定的一种方法--建立"相位-像点-真实三维坐标"之间的关系 1.目的 为了让像我一样刚接触结构光三维扫描的朋友们能更快速地理解整个框架,我先介绍一下写作本文的 ...
- 单目标定(免费拿走不谢)
单目标定源代码 OpenCV版本4.0.0 Visual studio2017版本 如果遇到任何问题,或者有错误的地方,欢迎评论留言指正 本段代码亲测可用,直接复制即可 注意:有些路径是需要更改的,注 ...
最新文章
- 凶猛的飞禽 超跑奥迪
- redis异常解决:JedisDataException: ERR Client sent AUTH, but no password is set
- 紧急通知:360 网站卫士前端公共库已停止服务
- 在 Pycharm下使Python2和Python3共用Anaconda中的各种库/包的解决方法
- 用这10个小技巧加速Python编程
- mybatis多对一,一对一,多对多resultMap映射,pojo映射,传参集合,封装的对象传参
- HDU1171-Big Event in HDU
- PHP能得到你是从什么页面过来的,r…
- fill和memset的区别
- 2021-4-25科学计算器开高次根号
- mysql jdbc 水晶报表,水晶报表Crystal Report2008使用JDBC连接MySQL数据库-详细步骤
- 阿里云解析DNS个人版对比免费版有哪些优势?
- 耐心看完,越到后面越精彩
- R语言 第2章 数据对象与数据读写(2)
- 哪些人不适合做程序员
- grbl控制3轴机械臂 原理 实现 (四) 之GRBL源码修改驱动三轴机械臂
- IE自动化(易语言填表原理分析)
- 利用photoshop cs5新增功能之“智能填充
- svmtrain和svmpredict简介
- 二进制数据转换为十六进制字符串