Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >双目测距原理

双目测距原理

作者头像
全栈程序员站长
发布于 2022-07-22 04:30:41
发布于 2022-07-22 04:30:41
8.3K1
举报

大家好,又见面了,我是你们的朋友全栈君。

双目测距基本原理:

双目测距实际操作分4个步骤:相机标定——双目校正——双目匹配——计算深度信息。

相机标定:摄像头由于光学透镜的特性使得成像存在着径向畸变,可由三个参数k1,k2,k3确定;由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数p1,p2确定。单个摄像头的定标主要是计算出摄像头的内参(焦距f和成像原点cx,cy、五个畸变参数(一般只需要计算出k1,k2,p1,p2,对于鱼眼镜头等径向畸变特别大的才需要计算k3))以及外参(标定物的世界坐标)。而双目摄像头定标不仅要得出每个摄像头的内部参数,还需要通过标定来测量两个摄像头之间的相对位置(即右摄像头相对于左摄像头的旋转矩阵R、平移向量t)。

双目校正:双目校正是根据摄像头定标后获得的单目内参数据(焦距、成像原点、畸变系数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右视图的成像原点坐标一致(CV_CALIB_ZERO_DISPARITY标志位设置时发生作用)、两摄像头光轴平行、左右成像平面共面、对极线行对齐。这样一幅图像上任意一点与其在另一幅图像上的对应点就必然具有相同的行号,只需在该行进行一维搜索即可匹配到对应点。 双目匹配:双目匹配的作用是把同一场景在左右视图上对应的像点匹配起来,这样做的目的是为了得到视差图。双目匹配被普遍认为是立体视觉中最困难也是最关键的问题。得到视差数据,通过上述原理中的公式就可以很容易的计算出深度信息。

双目摄像机的物理机构

网上大部分人都写了这一点,也仿佛只有这一点有写的价值和物理意义。 这里本来想放个控件(可调节动画),一直弄不上来,就算了。需要的可以联系我要下,下面放两张图片。

图中可以得出的结论 1.深度变化(EG*EF/(AB+CD)或者H到EF的距离),会导致AB,CD和AB+CD的变化,这里不过多强调AB,CD的变化,只讨论AB+CD,这个原因后边会提到。当深度变大时,AB+CD逐渐变小。 从公式(公式看不懂没关系,它只是我推导的,大家也可以自己推一下,推导是三角形的比例关系) AC=EF-AB-DC 设Z为深度 那么AC/EF=(Z-EG)/Z 这样就可以推导出来了。

从这个图我们就可以明显看出只要我们的深度不变,那么我们的AB+CD也就不会改变,可以看出,深度和单独的AB与CD没有直接关系,而只与两者的和有关。

AB+CD 与同一距离的 视差 是想等的。

AB + DC = XR – XT

注意此处 AB DC 用向量相加 (AB + DC = = (Bx-Ax)+ (Cx – Dx) 【Bx 为左图像的中点x, Dx为右图像的中点x Ax,Cx为两幅图同一特征点的x坐标】

XR – XT = XRx – XTx (XRx 与 XTx 分别是两幅图同一特征点的x坐标)

备注:此处的公式都是假设摄像头是水平的,如果摄像头垂直,应该使用 y 坐标。

单目测距原理:

先通过图像匹配进行目标识别(各种车型、行人、物体等),再通过目标在图像中的大小去估算目标距离。这就要求在估算距离之前首先对目标进行准确识别,是汽车还是行人,是货车、SUV还是小轿车。准确识别是准确估算距离的第一步。要做到这一点,就需要建立并不断维护一个庞大的样本特征数据库,保证这个数据库包含待识别目标的全部特征数据。比如在一些特殊地区,为了专门检测大型动物,必须先行建立大型动物的数据库;而对于另外某些区域存在一些非常规车型,也要先将这些车型的特征数据加入到数据库中。如果缺乏待识别目标的特征数据,就会导致系统无法对这些车型、物体、障碍物进行识别,从而也就无法准确估算这些目标的距离。

单/双目方案的优点与难点

从上面的介绍,单目系统的优势在于成本较低,对计算资源的要求不高,系统结构相对简单;缺点是:(1)需要不断更新和维护一个庞大的样本数据库,才能保证系统达到较高的识别率;(2)无法对非标准障碍物进行判断;(3)距离并非真正意义上的测量,准确度较低。

双目检测原理:

通过对两幅图像视差的计算,直接对前方景物(图像所拍摄到的范围)进行距离测量,而无需判断前方出现的是什么类型的障碍物。所以对于任何类型的障碍物,都能根据距离信息的变化,进行必要的预警或制动。双目摄像头的原理与人眼相似。人眼能够感知物体的远近,是由于两只眼睛对同一个物体呈现的图像存在差异,也称“视差”。物体距离越远,视差越小;反之,视差越大。视差的大小对应着物体与眼睛之间距离的远近,这也是3D电影能够使人有立体层次感知的原因。

上图中的人和椰子树,人在前,椰子树在后,最下方是双目相机中的成像。其中,右侧相机成像中人在树的左侧,左侧相机成像中人在树的右侧,这是因为双目的角度不一样。再通过对比两幅图像就可以知道人眼观察树的时候视差小,而观察人时视差大。因为树的距离远,人的距离近。这就是双目三角测距的原理。双目系统对目标物体距离感知是一种绝对的测量,而非估算。

理想双目相机成像模型

根据上述推导,要求得空间点P离相机的距离(深度)z,必须知道: 1、相机焦距f,左右相机基线b(可以通过先验信息或者相机标定得到)。 2、视差 :

,即左相机像素点(xl, yl)和右相机中对应点(xr, yr)的关系,这是双目视觉的核心问题。

重点来看一下视差(disparity),视差是同一个空间点在两个相机成像中对应的x坐标的差值,它可以通过编码成灰度图来反映出距离的远近,离镜头越近的灰度越亮; (前提是两个摄像头是水平,如果两颗摄像头是垂直的,则使用y坐标的差值)

极线约束

对于左图中的一个像素点,如何确定该点在右图中的位置?需要在整个图像中地毯式搜索吗?当然不用,此时需要用到极线约束。 如上图所示。O1,O2是两个相机,P是空间中的一个点,P和两个相机中心点O1、O2形成了三维空间中的一个平面PO1O2,称为极平面(Epipolar plane)。极平面和两幅图像相交于两条直线,这两条直线称为极线(Epipolar line)。 P在相机O1中的成像点是P1,在相机O2中的成像点是P2,但是P的位置是未知的。我们的目标是:对于左图的P1点,寻找它在右图中的对应点P2,这样就能确定P点的空间位置。 极线约束(Epipolar Constraint)是指当空间点在两幅图像上分别成像时,已知左图投影点p1,那么对应右图投影点p2一定在相对于p1的极线上,这样可以极大的缩小匹配范围。即P2一定在对应极线上,所以只需要沿着极线搜索便可以找到P1的对应点P2。

非理性情况:

上面是两相机共面且光轴平行,参数相同的理想情况,当相机O1,O2不是在同一直线上怎么办呢?事实上,这种情况非常常见,因为有些场景下两个相机需要独立固定,很难保证光心完全水平,即使固定在同一个基板上也会由于装配的原因导致光心不完全水平,如下图所示:两个相机的极线不平行,并且不共面。

这种情况下拍摄的两张左右图片,如下图所示。

左图中三个十字标志的点,右图中对应的极线是右图中的三条白色直线,也就是对应的搜索区域。我们看到这三条直线并不是水平的,如果进行逐点搜索效率非常低。

图像矫正技术

图像矫正是通过分别对两张图片用单应性矩阵(homography matrix)变换得到,目的是把两个不同方向的图像平面(下图中灰色平面)重新投影到同一个平面且光轴互相平行(下图中黄色平面),这样转化为理想情况的模型。

经过图像矫正后,左图中的像素点只需要沿着水平的极线方向搜索对应点就可以了。从下图中我们可以看到三个点对应的视差(红色双箭头线段)是不同的,越远的物体视差越小,越近的物体视差越大。

上面的主要工作是在极线上寻找匹配点,但是由于要保证两个相机参数完全一致是不现实的,并且外界光照变化和视角不同的影响,使得单个像素点鲁棒性很差。所以匹配工作是一项很重要的事情,这也关系着双目视觉测距的准确性。

双目视觉的工作流程

相机镜头畸变校正原理及方法,之前介绍过,这个基本是通用的,可以用张正友校准法。

双目测距的优点与难点

从上面的介绍看出,双目系统优势:(1)成本比单目系统要高,但尚处于可接受范围内,并且与激光雷达等方案相比成本较低;(2)没有识别率的限制,因为从原理上无需先进行识别再进行测算,而是对所有障碍物直接进行测量;(3)直接利用视差计算距离,精度比单目高;(4)无需维护样本数据库,因为对于双目没有样本的概念。

双目系统的难点:

(1)计算量非常大,对计算单元的性能要求非常高,这使得双目系统的产品化、小型化的难度较大。所以在芯片或FPGA上解决双目的计算问题难度比较大。国际上使用双目的研究机构或厂商,绝大多数是使用服务器进行图像处理与计算,也有部分将算法进行简化后,使用FPGA进行处理。

(2)双目的配准效果,直接影响到测距的准确性。

2.1、对环境光照非常敏感。双目立体视觉法依赖环境中的自然光线采集图像,而由于光照角度变化、光照强度变化等环境因素的影响,拍摄的两张图片亮度差别会比较大,这会对匹配算法提出很大的挑战。

2.2、不适用于单调缺乏纹理的场景。由于双目立体视觉法根据视觉特征进行图像匹配,所以对于缺乏视觉特征的场景(如天空、白墙、沙漠等)会出现匹配困难,导致匹配误差较大甚至匹配失败。

2.3、计算复杂度高。该方法需要逐像素匹配;又因为上述多种因素的影响,为保证匹配结果的鲁棒性,需要在算法中增加大量的错误剔除策略,因此对算法要求较高,想要实现可靠商用难度大,计算量较大。 2.4、相机基线限制了测量范围。测量范围和基线(两个摄像头间距)关系很大:基线越大,测量范围越远;基线越小,测量范围越近。所以基线在一定程度上限制了该深度相机的测量范围。

—————项目开源:———–

卡内基梅隆大学双目实验室

Oxford大牛:Andrew Zisserman,http://www.robots.ox.ac.uk/~vgg/hzbook/code/,主要研究多幅图像的几何学,该网站提供了部分工具,相当实用,还有例子

Cambridge:http://mi.eng.cam.ac.uk/milab.html,剑桥大学的机器智能实验室,里面有三个小组,Computer Vision & Robotics, Machine Intelligence, Speech

stanford:http://ai.stanford.edu/~asaxena/reconstruction3d/,主要对于单张照片的三维重建

caltech:http://www.vision.caltech.edu/bouguetj/calib_doc/,这是我们Computer Vision老师课件上的连接,主要是用于摄像机标定的工具集,当然也有涉及对标定图像三维重建的前期处理过程

JP Tarel:http://perso.lcpc.fr/tarel.jean-philippe/,个人主页

————匹配与3D重建算法:———–

https://www.cnblogs.com/polly333/p/5130375.html

http://blog.csdn.net/wangyaninglm/article/details/51533549

http://blog.csdn.net/wangyaninglm/article/details/51531333

https://www.zhihu.com/question/29885222?sort=created

http://blog.csdn.net/wangyaninglm/article/details/51558656

http://blog.csdn.net/wangyaninglm/article/details/51558310

https://www.cnblogs.com/mysunnyday/archive/2011/05/09/2041115.html

参考:

https://blog.csdn.net/piaoxuezhong/article/details/79016615

http://m.blog.csdn.net/article/details?id=52829190

https://blog.csdn.net/a6333230/article/details/82865439

https://blog.csdn.net/bit_cs2010/article/details/52829190

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125565.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月5,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
能要个双目深度的那个动画吗 谢谢博主
能要个双目深度的那个动画吗 谢谢博主
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
一篇文章认识《双目立体视觉》
双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,获取物体长度、宽度信息,和深度的信息;单目视觉获取二维的物体信息,即长度、宽度。
一颗小树x
2021/05/15
10.9K1
一篇文章认识《双目立体视觉》
深度相机原理揭秘--双目立体视觉
基于双目立体视觉的深度相机类似人类的双眼,和基于TOF、结构光原理的深度相机不同,它不对外主动投射光源,完全依靠拍摄的两张图片(彩色RGB或者灰度图)来计算深度,因此有时候也被称为被动双目深度相机。比较知名的产品有STEROLABS 推出的 ZED 2K Stereo Camera和Point Grey 公司推出的 BumbleBee。
小白学视觉
2019/10/24
3.8K0
真实场景的双目立体匹配(Stereo Matching)获取深度图详解
  双目立体匹配一直是双目视觉的研究热点,双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成等。   之前有两篇博客简要讲过OpenCV3.4中的两种立体匹配算法效果比较:http://www.cnblogs.com/riddick/p/8318997.html 。以及利用视差图合成新视点: http://www.cnblogs.com/riddick/p/
一棹烟波
2018/03/19
13K1
真实场景的双目立体匹配(Stereo Matching)获取深度图详解
来聊聊双目视觉的基础知识(视察深度、标定、立体匹配)
人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界。因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出视差,从而使计算机能够感知到三维世界。一个简单的双目立体视觉系统原理图如图 1 所示。
AI算法修炼营
2020/07/22
15.3K0
来聊聊双目视觉的基础知识(视察深度、标定、立体匹配)
自动驾驶汽车的伪激光雷达-双目立体视觉
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
点云PCL博主
2022/02/10
1.5K0
自动驾驶汽车的伪激光雷达-双目立体视觉
干货 | LIDAR、ToF相机、双目相机如何科学选择?「建议收藏」
三维成像技术原理和应用想必大家在之前的文章中了解过啦,今天想给大家比较一下LIDAR、ToF 相机以及双目相机,并且还有一些直观的测试数据来展示各自的优缺点,是骡子是马拉出来溜溜!
全栈程序员站长
2022/09/01
1.6K0
干货 | LIDAR、ToF相机、双目相机如何科学选择?「建议收藏」
【深度相机系列三】深度相机原理揭秘--双目立体视觉
用户1150922
2018/01/08
6.9K0
【深度相机系列三】深度相机原理揭秘--双目立体视觉
opencv双目测距实现
来自: http://blog.csdn.net/sunanger_wang/article/details/7744015 虽然最近注意力已经不可遏制地被神经科学、大脑记忆机制和各种毕业活动吸引过去了,但是还是觉得有必要把这段时间双目视觉方面的进展总结一下。毕竟从上一篇博文发表之后,很多同仁发E-mail来与我讨论,很多原来的疑团,也在讨论和一步步的试验中逐渐解决了。 开篇之前,首先要感谢maxwellsdemon和wobject,没有和你们的讨论,也就没有此篇的成文。 说到双摄像头测距,首先要复习一下
智能算法
2018/04/02
4.3K0
opencv双目测距实现
3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息
这里要介绍的是真正的3D成像,得到物体三维的图形,是立体的图像。而不是利用人眼视觉差异的特点,错误感知到的假三维信息。
3D视觉工坊
2021/05/18
5.1K0
3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息
双目匹配
张氏相机标定法利用不同角度拍摄的多张棋盘图像,计算出相应的内参:f_x, f_y, c_x, c_y(内参),以及畸变系数k_1,k_2,k_3,p_1,p_2(径向畸变、切向畸变参数)。
ttony0
2022/12/26
2.9K0
双目匹配
双目视觉测距系统软硬件设计
随着计算机技术和光电技术的发展,机器视觉技术应运而生。在图像处理技术领域中,有一种采用 CCD摄像机作为图像传感器采集数据的非接触式测量方法,这种方法具有精度高、速度快、成本低等诸多优点,在三维测量方面具有广泛的应用前景。双目测距技术运用两个摄像头对同一场景进行拍摄,从而产生图像视差,然后通过该视差建立物体距离测量模型,从而实现景物距离的实时计算。
苏州程序大白
2021/08/13
1.9K0
双目视觉测距系统软硬件设计
单目、双目及深度相机比较
优点: 结构简单,成本低,便于标定和识别 缺点: 在单张图片里,无法确定一个物体的真实大小。它可能是一个很大但很远的物体,也可能是一个很近很小的物体。通过相机的运动形成视差,可以测量物体相对深度。但是单目SLAM估计的轨迹和地图将与真实的轨迹和地图相差一个因子,也就是尺度(scale),单凭图像无法确定这个真实尺度,所以称尺度不确定性。 基于单目手眼相机和激光测距仪,提出了一种尺寸未知的空间矩形平面的位姿测量算法
小白学视觉
2022/02/12
2.8K0
单目、双目及深度相机比较
双目摄像头测量距离
在计算机视觉中,可以通过双目摄像头实现,常用的有BM 算法和SGBM 算法等,双目测距跟激光不同,双目测距不需要激光光源,是人眼安全的,只需要摄像头,成本非常底,也用于应用到大多数的项目中。本章我们就来介绍如何使用双目摄像头和SGBM 算法实现距离测量。
夜雨飘零
2020/06/02
4.6K2
机器视觉-相机内参数和外参数
一句话就是世界坐标到像素坐标的映射,当然这个世界坐标是我们人为去定义的,标定就是已知标定控制点的世界坐标和像素坐标我们去解算这个映射关系,一旦这个关系解算出来了我们就可以由点的像素坐标去反推它的世界坐标,当然有了这个世界坐标,我们就可以进行测量等其他后续操作了~上述标定又被称作隐参数标定,因为它没有单独求出相机的内部参数,如相机焦虑,相机畸变系数等~一般来说如果你仅仅只是利用相机标定来进行一些比较简单的视觉测量的话,那么就没有必要单独标定出相机的内部参数了~至于相机内部参数如何解算,相关论文讲的很多~
小白学视觉
2022/02/14
1.1K0
机器视觉-相机内参数和外参数
三种主流深度相机介绍
深度相机又称之为3D相机,顾名思义,就是通过该相机能检测出拍摄空间的景深距离,这也是与普通摄像头最大的区别。
点云PCL博主
2019/07/30
6K0
三种主流深度相机介绍
深度相机-介绍
双目立体成像:zspace的桌面一体机, intel的RealSense主动双目系列,未来立体的桌面一体机。
孙寅
2022/03/24
1.7K0
深度相机-介绍
原创 | 《相机标定》深入理解原理与实战(一)
首先来看相机标定的意义,我们都知道,我们拍摄的图片是二维的,但是真实世界是三维的。一个场景是如何从三维变成二维的呢?相机起到的就是这个作用。我们可以把相机看成一个函数,输入是一个三维的场景,输出是我们获得的二维的图片,这里可以认为是灰度图。我们平时看到的 RGB 彩色图是通过 RGB 三通道来实现的,每个通道可以认为是一张灰度图。从三维世界到二维世界的这个映射关系是不可逆的,也就是说无法仅通过一张二维图来得到真实的三维世界。
数据派THU
2021/09/29
4K0
原创 | 《相机标定》深入理解原理与实战(一)
关于双目立体视觉的三大基本算法及发展现状的总结
双目立体视觉一直是机器视觉研究领域的发展热点和难点,“热”是因为双目立体视觉有着及其广阔的应用前景,且随着光学、计算机科学等学科的不断发展,双目立体技术将不断进步直到应用到人类生活的方方面面。“难”则是因为受到摄像机、镜头等硬件设备及一些相关算法的限制,双目立体视觉的研究及如何更好的应用到生产实际中仍有待在座的各位去进行突破。
AIWalker
2020/08/02
4.7K0
伪激光雷达:无人驾驶的立体视觉
激光雷达成本高,用廉价的立体视觉替代它可行吗? 作者:Jeremy Cohen 编译:McGL
McGL
2020/09/21
1.5K0
伪激光雷达:无人驾驶的立体视觉
手机中的计算摄影1——人像模式(双摄虚化)
很多人咨询我,手机上到底有哪些计算摄影的应用和技术。那么接下来就准备抽空写一系列文章做一下介绍。
HawkWang
2021/09/01
3.1K0
推荐阅读
相关推荐
一篇文章认识《双目立体视觉》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档