热门标签 | 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 [不好意思放了,代码其实很久没更新了,但是你相信我有一天会更的对吗?]


推荐阅读
  • 《计算机视觉:算法与应用》第二版初稿上线,全面更新迎接未来
    经典计算机视觉教材《计算机视觉:算法与应用》迎来了其第二版,现已开放初稿下载。本书由Facebook研究科学家Richard Szeliski撰写,自2010年首版以来,一直是该领域的标准参考书。 ... [详细]
  • 京东AI创新之路:周伯文解析京东AI战略的独特之处
    2018年4月15日,京东在北京举办了人工智能创新峰会,会上首次公开了京东AI的整体布局和发展方向。此次峰会不仅展示了京东在AI领域的最新成果,还标志着京东AI团队的首次集体亮相。本文将深入探讨京东AI的发展策略及其与BAT等公司的不同之处。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • 地理信息、定位技术及其在物联网中的应用
    地理位置信息是物联网系统中不可或缺的关键要素,它不仅提供了物理世界的坐标,还增强了物联网应用的实用性和准确性。本文探讨了位置服务的基本概念、关键技术及其在物联网中的重要作用,特别介绍了定位技术的最新进展。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • 魅族Flyme 7正式发布:全面解析与亮点介绍
    在22日晚的发布会上,魅族不仅推出了m15、15和15 Plus三款新机型,还正式发布了全新的Flyme 7系统。Flyme 7在保持流畅体验的基础上,进一步增强了功能性和实用性,为用户带来更加丰富的使用体验。首批适配包已准备就绪,将逐步推送给现有设备。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 百度的未来新篇章:核心业务与新兴领域的双轮驱动
    北京时间2月18日凌晨,百度发布了2020年第四季度及全年财报,显示其不仅在核心业务上保持强劲增长,还在智能云、自动驾驶等新兴领域取得了显著进展。本文将深入探讨百度如何通过技术创新和战略布局,讲述其未来发展的新故事。 ... [详细]
  • 垂直泊车路径设计
    本文探讨了垂直泊车路径的设计原理与实现方法。垂直泊车是指汽车从特定位置出发,经过一系列横向和纵向移动,最终达到与车位垂直停放的状态。路径设计旨在确保泊车过程既高效又安全。 ... [详细]
  • Android平台下的人脸识别应用:FaceU的深度解析与技术探讨
    FaceU是一款由今日头条脸萌团队开发的拍照相机应用,支持iOS和Android平台。自2014年底启动开发以来,FaceU通过其创新的人脸识别技术和丰富的滤镜效果,在2015年9月迅速获得了用户的广泛认可。本文将深入解析FaceU的技术架构和实现方法,探讨其在Android平台下的应用前景和优化策略。 ... [详细]
  • 2020年高薪专业排行榜揭晓:计算机科学之外还有哪些值得关注的选择?
    近日,《2020年中国大学生就业报告》正式发布,揭示了除计算机科学外,多个高薪专业值得关注。报告指出,金融工程、电子信息工程、软件工程等领域的毕业生薪资水平同样表现优异,这些专业的就业前景和发展潜力不容忽视。此外,随着新兴行业的崛起,如大数据分析、人工智能和生物技术,相关专业的人才需求也在持续增长,为学生提供了更多优质的职业选择。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 近期,为编制《2018中国人工智能应用与生态研究报告》,中国软件网对国内人工智能产业的应用现状、平台建设和生态系统进行了深入调研。本报告详细分析了当前人工智能企业的发展阶段,并对其未来前景进行了全面评估。研究发现,人工智能技术在多个领域取得了显著进展,但同时也面临诸多挑战,如数据安全、技术成熟度和人才短缺等。报告还探讨了政策支持、行业合作和技术突破对推动人工智能产业发展的关键作用。 ... [详细]
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社区 版权所有