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

    技术2023-05-11  108

    开源代码免费获取,欢迎关注我的GitHub: https://github.com/ethan-li-coding

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

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

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

    精度不行?

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

    精度很高?

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

    做过双目研究的伙伴们,肯定是经常和精度打交道的,大部分人也肯定知道,双目立体视觉的精度主要看的是深度方向的精度!深度图是很多双目设备的输出数据,通过深度图以及相机参数,可以算出三维点云的空间坐标,公式如下: 可知深度 D D D的角色感很强,把深度估计准了,那三维点也就准了。(什么,相机标定也不准?当我没说!)

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

    我们再来看一个经典公式: 这可再熟悉不过了, D D D是深度, B B B是基线, f f f是焦距(像素单位), d d d是视差。咱们一分为二看这个公式,右边分母部分是像素视差值,和算法相关;分子部分是系统硬件参数,和硬件相关。

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

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

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

    1 算法因素

    咱们先分析算法对精度的影响。那么硬件参数 B B B f f f就假设是已知且恒定的了。

    假设视差偏差为 Δ d Δd Δd,则计算视差偏差 Δ d Δd Δd下的深度偏差 Δ D ΔD ΔD

    B B B f f f已知且恒定,如果我们把 D D D也恒定,也就是在同一个深度距离下评判精度,由公式(1)可知 d d d也就恒定。此时容易发现, Δ d Δd Δd越小, Δ D ΔD ΔD越小。说明:

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

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

    2 硬件因素

    上面分析算法对精度的影响,所以固定了硬件参数 B B B f f f。现在我们来分析视差精度恒定的情况下,硬件参数如何影响精度。还是基于上面三个公式,但是做一些修改,把公式(1)代入到(3)中,如下: 同样,我们把 D D D恒定,也就是在同一个深度距离下评判精度,因为视差精度恒定(也就是视差估计算法定了,精度差不多固定了),因此 Δ d Δd Δd也恒定。不难发现, B B B f f f D D D有相同的影响关系, B B B越大、 f f f越大, Δ D ΔD ΔD越小。说明:

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

    从公式中我们看到,影响 Δ D ΔD ΔD的实际是基线和焦距的乘积,所以若两个一起增大,那深度精度必然增大,若一个增大一个减小,那么深度精度可能增大也可能减小。

    另一个需要说明的是, f f f是焦距的像素单位,它和焦距的空间尺寸和像素大小有关,设焦距的空间尺寸为 f 0 f_0 f0,像素大小为 s s s,则 f f f的计算公式为: 显然, s s s越小, f f f越大。我们知道 s s s的大小是相机传感器尺寸决定的,而焦距是镜头决定的。所以选相机的时候要了解第三个知识:

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

    3 深度范围

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

    对上一节的公式(3)再多做一步推导: 这里讨论深度范围,所以假设 B B B f f f Δ d Δd Δd都恒定。显然可以发现, D D D越小, Δ D ΔD ΔD越小。所以我们得出第四个结论:

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

    4 总结

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

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

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

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

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

    博主简介: Ethan Li 李迎松(知乎:李迎松) 武汉大学 摄影测量与遥感专业博士 主方向立体匹配、三维重建 2019年获测绘科技进步一等奖(省部级) 爱三维,爱分享,爱开源 GitHub: https://github.com/ethan-li-coding 邮箱:ethan.li.whu@gmail.com 个人微信: 欢迎交流! 关注博主不迷路,感谢! 博客主页:https://ethanli.blog.csdn.net


    双目立体视觉-百度百科 ↩︎

    Ethan Li 李迎松 认证博客专家 立体视觉 工学博士 博客专家 武汉大学 摄影测量与遥感专业 博士 主方向立体匹配、三维重建 2019年国家测绘科技进步一等奖个人微信号:EthanYs6,欢迎交流我正在做一些立体视觉的代码开源工作,欢迎访问我的GitHub :https://github.com/ethan-li-coding(欢迎follow和star)知识的传播是无边界的,愿远隔千里的我们成为朋友!
    Processed: 0.009, SQL: 9