from:https://blog.csdn.net/u011574296/article/details/73826420

参考:

机器视觉学习笔记(6)——双目摄像机标定参数说明 
机器视觉学习笔记(8)——基于OpenCV的Bouguet立体校正 
双摄像头立体成像(三)-畸变矫正与立体校正

人类可以看到3维立体的世界,是因为人的两只眼睛,从不同的方向看世界,两只眼睛中的图像的视差,让我们可以看到3维立体的世界。类似的,要想让计算机“看到”3维世界,就需要使用两个摄像头构成双目立体视觉系统。

想要让双目视觉系统知道视差,首先应该知道双目视觉系统中两个摄像头之间的相对位置关系。。任意两个坐标系之间的相对位置关系,都可以通过两个矩阵来描述:旋转矩阵R和平移矩阵T。

我们可以同时对两个摄像头进行标定,分别得到二者相对同一坐标系的旋转矩阵和平移矩阵,然后就可以获得两个摄像头之间的相对位置关系,这就是双目标定!

一、双目立体标定

双目摄像机需要标定的参数:摄像机内参数矩阵,畸变系数矩阵,本征矩阵,基础矩阵,旋转矩阵以及平移矩阵(其中摄像机内参数矩阵和畸变系数矩阵可以通过单目标定的方法标定出来)

双目摄像机标定和单目摄像机标定最主要的区别就是双目摄像机需要标定出左右摄像机坐标系之间的相对关系

我们用旋转矩阵R和平移矩阵T来描述左右两个摄像机坐标系的相对关系,具体为:将左摄像机下的坐标转换到右摄像机下的坐标。

假设空间中有一点P,其在世界坐标系下的坐标为PWPW,其在左右摄像机坐标系下的坐标可以表示为:

Pl=RlPW+Tl
Pr=RrPW+Tr

其中 PlPl 和 PrPr 又有如下的关系:

Pr=RPl+T
注:双目摄像机分析中往往以左摄像机为主坐标系,但是R和T却是左相机向右相机转换,所以Tx为负数

综合上式,可以推得:

R=RrRTl
T=Tr−RTl

lRl,Tl为左摄像头经过单目标定得到的相对标定物的旋转矩阵和平移向量,Rr,Tr为右摄像头经过单目标定得到的相对标定物的旋转矩阵和平移向量 
左右相机分别进行单目标定,就可以分别得到Rl,Tl,Rr,Tr,带入上式就可以求出左右相机之间的旋转矩阵R和平移T。

求得的R和T就是立体标定要得到的结果。

单目摄像机需要标定的参数,双目都需要标定,双目摄像机比单目摄像机多标定的参数:R和T,主要是描述两个摄像机相对位置关系的参数,这些参数在立体校正和对极几何中用处很大

那么得到了立体标定的结果,下一步我们该做什么呢? 
答案是:立体校正。

二、立体校正

在介绍立体校正的具体方法之前,让我们来看一下,为什么要进行立体校正?

双目摄像机系统主要的任务就是测距,而视差求距离公式是在双目系统处于理想情况下推导的,但是在现实的双目立体视觉系统中,是不存在完全的共面行对准的两个摄像机图像平面的。所以我们要进行立体校正。立体校正的目的就是,把实际中非共面行对准的两幅图像,校正成共面行对准。(共面行对准:两摄像机图像平面在同一平面上,且同一点投影到两个摄像机图像平面时,应该在两个像素坐标系的同一行),将实际的双目系统校正为理想的双目系统。

理想双目系统:两摄像机图像平面平行,光轴和图像平面垂直,极点处于无线远处,此时点(x0,y0)对应的级线就是y=y0

立体校正前:

立体校正后:

Bouguet校正原理

校正过程中两个图像平面均旋转一半的R,这样可以使重投影畸变最小,此时两个摄像机图像平面共面(畸变校正后光轴也平行),但是行不对准 
极点是两个相机坐标系原点的连线和图像平面的交点,要想使得极点处于无穷远处(即行对准),就必须两个摄像机的图像平面和两个相机坐标系原点的连线平行 
可以计算RrectRrect矩阵使得极点处于无穷远处:

Rrect=⎡⎣⎢⎢eT1eT2eT3⎤⎦⎥⎥

由于图像平面最终和相机坐标系原点连线平行,所以

e1=T∥T∥

其中 T=[TxTyTz]TT=[TxTyTz]T ,e2和e1正交,选择主光轴方向(0,0,1)与e1叉积

e2=[−TyTx0]TT2x+T2y−−−−−−−√

e3与e1和e2正交,可得:

e3=e1×e2e3=e1×e2

将 RrectRrect 左乘到R分解后作用于左右相机坐标系的矩阵,即可得到最终的立体校正矩阵。

【立体视觉】双目立体标定与立体校正相关推荐

  1. (七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】

    七.立体标定与立体校正 这篇博文中,让玉米和大家一起了解一下,张氏标定是怎样过渡到立体标定的?在这里主要以双目立体视觉进行分析.对于双目立体视觉,我们有两个摄像头.它们就像人的一双眼睛一样,从不同的方 ...

  2. 双目相机标定以及立体测距原理及OpenCV实现

    转载 双目相机标定以及立体测距原理及OpenCV实现 http://blog.csdn.net/dcrmg/article/details/52986522?locationNum=15&fp ...

  3. 双目相机标定以及立体测距原理及OpenCV实现(下)

    前篇:双目相机标定以及立体测距原理及实现(上) 双目相机标定后,可以看到左右相机对应匹配点基本上已经水平对齐. 之后在该程序基础上运行stereo_match.cpp,求左右相机的视差. 注:下边Op ...

  4. 双目相机标定以及立体测距原理及实现(上)

    作者丨童虎 编辑丨3D视觉开发者社区 单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了相机的内部结构参数,外参是相机的旋转矩阵R和平移向量t.内参中dx和dy ...

  5. 双目立体标定与极线校正【双目立体视觉几何】

       在这篇博文中,我们来了解一下立体标定的过程.双目相机各自经过相机标定后,该如何把两个相机统一起来,获得物体三维信息呢?    那么在双目立体视觉中,通过把左右相机平面旋转到一个平面内,且行对齐, ...

  6. 双目立体视觉 I:标定和校正

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Ali Yasin Eser 编译:ronghuaiyang(AI 公园) 导读 双目立体校正和 ...

  7. 一文详解双目相机标定理论

    01 前言 双目相机标定,从广义上讲,其实它包含两个部分内容: 两台相机各自误差的标定(单目标定) 两台相机之间相互位置的标定(狭义,双目标定) 在这里我们所说的双目标定是狭义的,讲解理论的时候仅指两 ...

  8. 相机标定、双目相机标定(原理)、三维重建效果展示

    1.相机标定的目的: (1)通过单目相机标定分别求出左右相机的内参数和外参数. (2)矫正由于镜头畸变造成的图片的变形,例如,现实中的直线,拍摄成图像后会外凸或内凹,进行相机标定后可以对这种情况进行校 ...

  9. 双目相机标定模型详解

    根据相机投影成像原理,相机模型包含内参模型及外参模型,可以将三维世界坐标转换为二维像素坐标,具体模型及转换关系如下所示. 其中[u, v]T为矫正后的图像中的点在像素坐标系中的坐标,[xw, yw, ...

最新文章

  1. linux下Qt调用C++库文件(.so)程序实现
  2. CV_8UCV_32FCV_32S
  3. dell r740如何做raid_戴尔入门级4K、IPS广色域显示器:S2721QS表现如何?
  4. mac 完全卸载android studio
  5. 业务安全通用解决方案——WAF数据风控
  6. mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...
  7. android 交叉编译so,Android交叉编译htop和使用方法
  8. 信息学奥赛一本通(2029:【例4.15】水仙花数)
  9. RoI Pooling的学习笔记
  10. webview session不失效_不懂HttpSession对象看这里--乐字节
  11. 使用Unified Communications Managed API获取Lync在线会议的链接地址
  12. 电瓶车续航测试软件,谁的续航更真实? 新出行为你测试三款市面上主流电动车...
  13. Python-初应用:乌龟吃鱼(菜菜狂踩雷现场、典型低级错误)
  14. 华硕笔记本怎么禁用自带键盘
  15. java导出繁体字word,word繁体字转换
  16. ES安装中文IK分词器
  17. 顶着“顶流”光环面对舆论质疑,为何威震天向左,玲娜贝儿向右?
  18. Prove it With Code
  19. Java并发编程:Lock
  20. Nature封面论文在毫米尺度验证广义相对论

热门文章

  1. linux 下载、安装 maven
  2. MYSQL安装报错 -- 出现Failed to find valid data directory.
  3. day10:函数进阶
  4. mybatis $和#源代码分析
  5. python之eval函数,map函数,zip函数
  6. 浅谈 Scala 中下划线的用途
  7. FxCAD 实验三 实现对象的【属性】事件
  8. 老陈学 C++ 序列之二: 友元函数
  9. 推荐系列文章:《DotText源码阅读》
  10. MySQL水平分区代理Spock Proxy(一)