热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

立体视觉入门指南(5):双相机标定【再不收藏我收费了~】

亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间

亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间。而当今世界是智能化的世界,我们的科学家们探索各种机器智能技术,让机器能够拥有人类的三维感知能力,并希望在速度和精度上超越人类,比如自动驾驶导航中的定位导航,无人机的自动避障,测量仪中的三维扫描等,都是高智机器智能技术在3D视觉上的具体实现。


立体视觉是三维重建领域的重要方向,它模拟人眼结构用双相机模拟双目,以透视投影、三角测量为基础,通过逻辑复杂的同名点搜索算法,恢复场景中的三维信息。它的应用十分之广泛,自动驾驶、导航避障、文物重建、人脸识别等诸多高科技应用都有它关键的身影。


本课程将带大家由浅入深的了解立体视觉的理论与实践知识。我们会从坐标系讲到相机标定,从被动式立体讲到主动式立体,甚至可能从深度恢复讲到网格构建与处理,感兴趣的同学们,来和我一起探索立体视觉的魅力吧!


本课程是电子资源,所以行文并不会有太多条条框框的约束,但会以逻辑清晰、浅显易懂为目标,水平有限,若有不足之处,还请不吝赐教!
个人微信:EthanYs6,加我申请进技术交流群 StereoV3D,一起技术畅聊。
CSDN搜索 :Ethan Li 李迎松,查看网页版课程
随课代码,将上传至github上,地址:StereoV3DCode:https://github.com/ethan-li-coding/StereoV3DCode

前两篇博主介绍了两种单相机标定方法,有同学一定会有所疑惑,本系列明明是立体视觉,为什么要介绍单相机标定而不是双相机标定呢?原因很简单,那就是单相机标定是双相机标定的基础,具体来说,双相机标定正是先分别完成两个单相机的标定,再进行整体标定的。且听我娓娓道来~

文章目录

    • 双视立体
    • 双相机标定
    • 算法部分
    • 总结
    • 作业


双视立体

有一个常识性认知,即立体视觉一般而言是指双相机组成的立体系统,就像人眼一样。当两个相机拍摄的视图之间存在重叠区,它们便形成了基本的双视立体。


双视图通过极线校正和立体匹配,可以通过三角关系得到三维点,
在这里插入图片描述
但这一切实现的前提:

  1. 要准确的知道双相机之间的位置关系,即其中一个相机对于另一个相机的旋转RRR和平移ttt,即相机的外参数
  2. 要准确的知道双相机内部的设备参数,比如像主点(x0,y0)(x_0,y_0)(x0,y0)、焦距fff、畸变参数等,即相机的内参数

关于内外参数的介绍,请看前篇:立体视觉入门指南(1):坐标系与相机参数



双相机标定

一般情况下,我们所见到的最多的双视立体,由两个不同的相机固定在刚性的结构上,构成稳定的双目立体系统。在使用过程中,相机之间不会有明显的相互移动,稳定的双视结构可以在任意时刻完成单帧深度信息的获取。下图为一些示例:


前面我们说到,单相机可以得到相机内参矩阵KKK、外参矩阵R,tR,tR,t,而双相机标定相比单相机标定来说

  1. 多了一个相对外参,即右相机相对于左相机的旋转矩阵 RRR 和平移向量 ttt
  2. 少了两个绝对外参,即单相机自身标定出来的外参矩阵不再需要了,即只保留1得到的相对外参,称之为立体视觉系统的外参。(实际上单相机标定一般也不需要绝对外参,只是作为标定的输出自然产出,在双相机标定中,绝对外参可以作为中间变量计算相对外参)

我们在文章开头说到,双相机标定是基于单相机标定做的,我想聪明的同学已经想到了一部分思路,首先我们采用同样的拍摄方法采集标定标定图案,大部分操作方式和注意点都是一样的,详见立体视觉入门指南(3):相机标定之张式标定法【超详细值得收藏】

不同的地方在于:

  1. 每一次拍摄时,要注意两个相机的重叠区是否足够,一般超过1/2的图像区域就可以了,当然越大越好,在一些偏的较大的角度下,可以牺牲一定的重叠度。
  2. 注意两个相机尽量保持在统一的距离下采集,这样是为了保证两个视图的尺度和清晰度一致,减小不一致带来的误差。

示意图:



算法部分

图像采集后,进入算法部分,如前所述,第一步我们对两个相机单独做单相机标定,得到两个相机各自的内参矩阵K、绝对外参R,tR,tR,t(即每次采集时相机相对于标定板的外参),和畸变系数ddd(这里的ddd是所有畸变系数的集合)
1. 对两个相机单独做单相机标定,得到两个相机各自的内参矩阵K、绝对外参R,tR,tR,t,和畸变系数ddd

然后有的同学可能想到了,根据每次采集的绝对外参,即可以计算出相对外参,但是显然我们会生成N个相对外参(N是采集的像对数量,也就是采集位置数),取哪一个好呢?取均值?还是取中值?

有经验的同学会发现,这两种都不太可靠,首先取均值就对显著性异常值毫无鲁棒性,只要某一对的绝对外参求错了,均值就影响很大;其次取中值由于只取某一对,又没有利用到多次测量的误差平均特性。

所以比较可靠的做法是,计算每次采集的相对外参,并取中值作为初值,再基于最小化重投影误差,非线性迭代优化得到最优解。在此方案下,相机的内参可以做为固定值,未知数为N组左相机的绝对外参(Ri,ti),i=1,..n(R_i,t_i),i=1,..n(Ri,ti),i=1,..n、1组右相对相对于左相机的相对外参R′,t′R',t'R,t。最小重投影误差方程和单相机标定一样,只是右相机的绝对外参通过左相机的绝对外参和相对外参计算得到。

2. 计算每次采集的相对外参,并取中值作为初值,再基于最小化重投影误差,非线性迭代优化得到最优解

由于第二次迭代优化时,相机内参是固定的,外参个数也减少了且有较为准确的初值,所以迭代会相对更容易收敛且更精确。

总结

立体视觉通过立体匹配计算深度的前提:

  1. 要准确的知道相机之间的位置关系,即其中一个相机对于另一个相机的旋转RRR和平移ttt,即相机的外参数
  2. 要准确的知道相机内部的设备参数,比如像主点(x0,y0)(x_0,y_0)(x0,y0)、焦距fff、畸变参数等,即相机的内参数

双相机标定相比单相机标定来说:

  1. 多了一个相对外参,即右相机相对于左相机的旋转矩阵 RRR 和平移向量 ttt
  2. 少了两个绝对外参,即单相机自身标定出来的外参矩阵不再需要了,即只保留1得到的相对外参,称之为立体视觉系统的外参。

双相机图像采集的相比单相机图像采集不同的地方在于:

  1. 每一次拍摄时,要注意两个相机的重叠区是否足够,一般超过1/2的图像区域就可以了,当然越大越好,在一些偏的较大的角度下,可以牺牲一定的重叠度。
  2. 注意两个相机尽量保持在统一的距离下采集,这样是为了保证两个视图的尺度和清晰度一致,减小不一致带来的误差。

双相机标定算法步骤:

  1. 对两个相机单独做单相机标定,得到两个相机各自的内参矩阵K、绝对外参R,tR,tR,t,和畸变系数ddd
  2. 计算每次采集的相对外参,并取中值作为初值,再基于最小化重投影误差,非线性迭代优化得到最优解

所以你
在这里插入图片描述

作业

这里为大家准备了一些练习题,可以通过实践加深理解:

1 通过opencv开源库提供的接口完成双相机标定。
2 更高阶的是,你能够自己不依赖opencv库写一套双相机标定算法吗?或者只使用opencv来检测角点坐标,其他步骤自己来实现。

参考答案地址:https://github.com/ethan-li-coding/StereoV3DCode [不好意思放了,代码其实很久没更新了,但是你相信我有一天会更的对吗?]


推荐阅读
  • 今天凌晨开始苹果正式开始了iOS10的推送工作,使用iPhone和iPad的用户可 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 65位高校教师接龙晒工资!给打算入高校的研究生们参考!
    本文转载自:募格学术|来源:麦可思研究综合整理自小木虫论坛前有清华教授被骗千万,后有某重点高校青年教师晒出月薪900的工资条, ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 基于深度学习的遥感应用
    文章目录深度学习的发展过程深度学习在遥感中的应用基于深度学习的遥感样例库建设基于深度学习的遥感影像目标及场景检索基于深度学习的建筑物提取基于深度学习的密集建筑物自动检测基于深度学习 ... [详细]
  • 微信回应「10 元就能在朋友圈改定位」;谷歌官方首次提及 Android 11;Node 8.16.2 发布 | 极客头条...
    微信回应「10元就能在朋友圈改定位」;谷歌官方首次提及Android11;Node8.16.2发布|极客头条,Go语言社区,Golang程序员人脉社 ... [详细]
  • 智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了
    原标题:智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了最近,ChatGPT火爆全网,介绍其产品、公司、作者、技术和应用等方面信息,占据着整个互联网,似乎不谈GPT好像 ... [详细]
author-avatar
书友36782274
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有