这里开源了一些经典的立体匹配算法,你可能会感兴趣:

https://github.com/ethan-li-coding​github.com

双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法1。

精度,是双目立体视觉至关重要的指标。

双目立体视觉系统,不谈精度几许,未免显得业余!

精度不行?

“来,小同志往边上让一让,下一个!”

精度很高?

“小伙子你们设备多少钱!能打个折不!”

做过双目研究的伙伴们,肯定是经常和精度打交道的,大部分人也肯定知道,双目立体视觉的精度主要看的是深度方向的精度!深度图是很多双目设备的输出数据,通过深度图以及相机参数,可以算出三维点云的空间坐标,公式如下:

可知深度D DD的角色感很强,把深度估计准了,那三维点也就准了。(什么,相机标定也不准?当我没说!)

所以,如何让深度精度更高?

我们再来看一个经典公式:

这可再熟悉不过了,

是深度,
是基线,
是焦距(像素单位),
是视差。咱们一分为二看这个公式,右边分母部分是像素视差值,和算法相关;分子部分是系统硬件参数,和硬件相关。

可知深度精度是由算法和硬件综合决定。

研发:“哥们,你们硬件做的不行啊!”
硬件:“屁,是你们算法不行!”
老板:“都是废物!”

对各参数不太清楚的同学可以看下图:

1 算法因素

咱们先分析算法对精度的影响。那么硬件参数

就假设是已知且恒定的了。

假设视差偏差为

,则计算视差偏差
下的深度偏差
(修订:假设视差偏差和深度偏差都是正值(假设负值同理),公式(2)左边应该是减号)
已知且恒定,如果我们把
也恒定,也就是在同一个深度距离下评判精度,由公式(1)可知
也就恒定。此时容易发现,
越小,
越小。说明:

(一)视差偏差越小,深度偏差越小;换言之,算法的视差精度越高,深度精度越高,深度精度和视差精度成正比。

所以更高精度的视差估计算法,自然能带来更高的深度精度。

2 硬件因素

上面分析算法对精度的影响,所以固定了硬件参数

。现在我们来分析视差精度恒定的情况下,硬件参数如何影响精度。还是基于上面三个公式,但是做一些修改,把公式(1)代入到(3)中,如下:
(修订:假设视差偏差和深度偏差都是正值(假设负值同理),公式(2)左边应该是减号)

同样,我们把

恒定,也就是在同一个深度距离下评判精度,因为视差精度恒定(也就是视差估计算法定了,精度差不多固定了),因此
也恒定。不难发现,
有相同的影响关系,
越大、
越大,
越小。说明:

(二)基线越大、焦距(像素单位)越长,深度精度越高。深度精度和基线、焦距成正比。

从公式中我们看到,影响

的实际是基线和焦距的乘积,所以若两个一起增大,那深度精度必然增大,若一个增大一个减小,那么深度精度可能增大也可能减小。

另一个需要说明的是,

是焦距的像素单位,它和焦距的空间尺寸和像素大小有关,设焦距的空间尺寸为
,像素大小为
,则
的计算公式为:

显然,

越小,
越大。我们知道
的大小是相机传感器尺寸决定的,而焦距是镜头决定的。所以选相机的时候要了解第三个知识:

(三)像素大小越小,同样的物理尺寸焦距有更长的像素尺寸焦距,深度精度就越高。

3 深度范围

上面我们分析了算法参数和硬件参数对深度精度的影响,但还有一个重要的因素,它即非硬件相关也非算法相关,它就是深度本身的大小,也即深度范围。简单的说,目标离镜头的距离不同,精度是不一样的。

对上一节的公式(3)再多做一步推导:

这里讨论深度范围,所以假设

都恒定。显然可以发现,
越小,
越小。所以我们得出第四个结论:

(四)测量目标离系统越近,深度精度越高。

4 总结

我想大家其实在实际应用中都会有一些直观的理解,比如(1)算法越好,精度越高,明摆着嘛!(2)相机分辨率越高,精度越高,这不废话嘛!(3)基线越长,精度越高,显而易见嘛!

本文的目的就是通过公式推导来严格证明,以让大家更加清晰的明白各因素影响精度的本质,从而更科学的指导双目系统的设计。再来汇总一下上面的四条结论:

(一)视差偏差越小,深度偏差越小;换言之,算法的视差精度越高,深度精度越高,深度精度和视差精度成正比。 (二)基线越大、焦距(像素单位)越长,深度精度越高。深度精度和基线、焦距成正比。 (三)像素大小越小,同样的物理尺寸焦距有更长的像素尺寸焦距,深度精度就越高。 (四)测量目标离系统越近,深度精度越高。

所以同学们你们现在知道怎么设计双目系统能提高精度了吗?

(1)选高精度视差估计算法 (2)在应用场景允许、结构稳定性满足需求的情况下,尽可能延长基线。 (3)在视场范围、景深满足需求的情况下,尽可能选择长焦镜头 (4)在算力允许的情况下,选择高分辨率相机(本质上应该是像素尺寸小的相机,有的相机提高了分辨率,只是提升了视域,但像素尺寸不变,那精度也不变) (5)测量距离适当拉近(这点往往是场景需求决定的)

双目估计方法_教你提高双目立体视觉系统的精度!相关推荐

  1. 双目估计方法_基于双目视觉的自动驾驶技术

    不小心删掉的文章,要求补上了.其实双目视觉主要问题是立体匹配和视差计算,最新的讨论见: 黄浴:基于深度学习的双目匹配和视差估计​zhuanlan.zhihu.com 另外,目标检测的双目视觉技术讨论如 ...

  2. 双目视觉焦距_教你提高双目立体视觉系统的精度!

    这里开源了一些经典的立体匹配算法,你可能会感兴趣:https://github.com/ethan-li-coding​github.com 双目立体视觉(Binocular Stereo Visio ...

  3. github 视觉测量_教你如何提高双目立体视觉系统的精度

    作者:李迎松 来源:公众号 @3D视觉工坊 链接:教你如何提高双目立体视觉系统的精度 开源代码免费获取,欢迎关注作者的GitHub:https://github.com/ethan-li-coding ...

  4. 双目视觉焦距_教你如何提高双目立体视觉系统的精度

    双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维 ...

  5. 教你如何提高双目立体视觉系统的精度

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源:https://blog.csdn.net/rs_lys/article/details/107 ...

  6. 【技术流派】教你提高双目立体视觉系统的精度!

    开源代码免费获取,欢迎关注我的GitHub: https://github.com/ethan-li-coding 双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形 ...

  7. 一文详解双目立体视觉系统的精度提升方法!

    作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/160946661 编辑丨3D视觉工坊 双目立体视觉(Binocular Stereo Vision)是机器视觉的一 ...

  8. 广义估计方程估计方法_广义估计方程简介

    广义估计方程估计方法 A key assumption underpinning generalized linear models (which linear regression is a typ ...

  9. w7设置双显示器_教你怎么设置Win7系统双显示器多屏幕模式

    在使用电脑过程中有时候为了更好的制作视频音乐.或者用电脑教学以及商业上的一些展示等,会需要用到两个显示器,这样可以更加清楚的看到画面,这样也可以更加方便的操作了,但是想必有不少用户不知道要如何设置双显 ...

最新文章

  1. HashMap集合遍历的五种方式
  2. 图之典—可视化图表的词典
  3. (转)maven打包时跳过测试
  4. python语音在线编辑-python实现语音在线合成,让你的小说自己念给你听
  5. 【杂谈】学深度学习的你有GPU了吗
  6. C#设计模式之3-建造者模式
  7. Fibonacci数列第n项的第7种计算方法:Python列表
  8. pillow 图像 基本概念
  9. 设计模式之——单例模式(Singleton)的常见应用场景(转):
  10. 模拟登陆github
  11. 【TWVRP】基于matlab改进的遗传算法求解带时间窗约束多卫星任务规划问题【含Matlab源码 1774期】
  12. 写好PPT的四大要点
  13. Semaphore源码解读
  14. python文件传输库,利用python库在局域网内传输文件的方法
  15. Win8企业版如何升级至win10专业版
  16. (边学边练)JAVA基础学习第三天
  17. 如何清除电脑桌面图标蓝底
  18. 如何用c语言教小学生学英语,家长怎么教小学生学英语
  19. ArcGIS GeoEvent 使用教程(一)
  20. 修改html文件500错误信息,打开网页提示 HTTP500错误的终极解决方法

热门文章

  1. 火星人(洛谷P1088题题解,C++语言描述)
  2. 【离散数学】集合的包含排斥原理
  3. 【数据库系统】形式化查询语言の关系代数
  4. 【Java】深入探讨Java数值舍入问题
  5. ceph中pool的管理
  6. Python logging 学习
  7. MySQL数据库服务器搭建及基本管理
  8. 别人要访问我的电脑上部署的tomcat,必须关闭防火墙吗?
  9. Robots.txt 协议详解及使用说明
  10. cookie保存分页参数