在往期文章【技术流派】教你提高双目立体视觉系统的精度!中,博主关于立体视觉系统的精度做了一个较为具体的分析,但整体来说是定性的,本篇再次关于精度做一次定量分析,毕竟绝大部分场景下精度都始终是第一要素,定量分析更有助于系统设计和精度优化。希望看完此篇,读者能更深一步了解精度的决定因素以及它们各自对精度所影响的尺度,以及能够回答如下三个问题:

1. 双目立体视觉系统的精度由那些因素决定?
2. 各个因素对精度的决定程度一样吗?
3. X/Y/Z三个方向的精度都是一样的吗?如果不是一样,哪个方向精度更好呢?

文章目录

  • Z方向精度
  • XY方向精度
  • X/Z精度曲线
  • 参考文献

最常见的情况下,双目立体视觉的最终输出是左相机坐标系下的XYZ坐标,本篇便以这三个分量为精度分析对象。

首先,做一些变量的定义:

bbb:基线长度
fff:焦距
x,yx,yx,y :像点坐标(以像主点为原点)
X,Y,ZX,Y,ZX,Y,Z:相机坐标系下的坐标
ddd:视差

我们先看这三个分量的求解公式:
Z=bfd,X=Zfx,Y=ZfyZ=\frac {bf} d,X=\frac Z f x,Y=\frac Z f yZ=dbf​,X=fZ​x,Y=fZ​y

从公式可知,在硬件参数B,fB,fB,f固定的情况下,XYZXYZXYZ的值和像点坐标值直接相关, XYZXYZXYZ的精度实际上是像点精度下的空间偏差值,因此我们以像点精度为基本(最小)精度单位。

假设像点x,yx,yx,y的精度为sx,sys_x,s_ysx​,sy​,视差ddd的精度为sds_dsd​。通常认为x,yx,yx,y的精度是相同的,即sx=sy=ss_x=s_y=ssx​=sy​=s,而视差的精度一般来说可以用公式sd=sx2s_d = \frac {s_x} {\sqrt 2}sd​=2​sx​​来估计1

Z方向精度

首先对于Z=bfdZ=\frac {bf} dZ=dbf​,自变量是ddd,我们对ddd求偏导,可得
∂Z∂d=−bfd2=−Z2bf\frac {\partial Z} {\partial d}=-\frac {bf} {d^2}=-\frac {Z^2} {bf}∂d∂Z​=−d2bf​=−bfZ2​

因此,ZZZ方向的精度可以表示为
sZ=Z2bfsd=Z22bfss_Z=\frac {Z^2} {bf}s_d=\frac {Z^2} {\sqrt 2bf}ssZ​=bfZ2​sd​=2​bfZ2​s

可知ZZZ方向精度和ZZZ的平方正相关,即和物体离相机的距离的平方正相关(严格来说是ZZZ方向距离)。

同时,上式可以变换一种形式:
sZ=ZbZfsds_Z=\frac {Z} {b}\frac {Z} {f}s_dsZ​=bZ​fZ​sd​

假设q=Zb,m=Zfq=\frac {Z} {b},m=\frac {Z} {f}q=bZ​,m=fZ​,则qqq是我们所熟知的基高比的倒数,mmm是影像的尺度(即GSD,一个像素代表的空间尺寸),这个公式显示,基高比和GSD对ZZZ方向精度起着关键作用,更大的基高比和更小的GSD有助于提高ZZZ方向精度。这可以用于指导双目立体视觉系统的设计。

XY方向精度

同理,对于XXX,自变量是ZZZ和xxx,我们对ZZZ和xxx求偏导,可得
∂X∂Z=xf,∂X∂x==Zf\frac {\partial X} {\partial Z}=\frac x f,\frac {\partial X} {\partial x}==\frac Z f∂Z∂X​=fx​,∂x∂X​==fZ​

XXX方向精度可表示为
sX=(xfsZ)2+(Zfsx)2s_X=\sqrt {{(\frac x f s_Z)}^2+{(\frac Z f s_x)}^2}sX​=(fx​sZ​)2+(fZ​sx​)2​

同理,YYY方向精度可表示为
sY=(yfsZ)2+(Zfsy)2s_Y=\sqrt {{(\frac y f s_Z)}^2+{(\frac Z f s_y)}^2}sY​=(fy​sZ​)2+(fZ​sy​)2​

把sZ=Z22bfs,sx=sy=ss_Z=\frac {Z^2} {\sqrt 2bf}s,s_x=s_y=ssZ​=2​bfZ2​s,sx​=sy​=s代入公式,可得

sX=1+(xZ2fb)2Zfs=1+(X2b)2Zfss_X=\sqrt {1+{(\frac {xZ} {\sqrt 2 fb})}^2}\frac Z f s=\sqrt {1+{(\frac X {\sqrt 2 b})}^2}\frac Z f ssX​=1+(2​fbxZ​)2​fZ​s=1+(2​bX​)2​fZ​s
sY=1+(yZ2fb)2Zfs=1+(Y2b)2Zfss_Y=\sqrt {1+{(\frac {yZ} {\sqrt 2 fb})}^2}\frac Z f s=\sqrt {1+{(\frac Y {\sqrt 2 b})}^2}\frac Z f ssY​=1+(2​fbyZ​)2​fZ​s=1+(2​bY​)2​fZ​s

可以看出,sXs_XsX​和sYs_YsY​是等尺度的,结合前式,
sZ=Z22bfss_Z=\frac {Z^2} {\sqrt 2bf}ssZ​=2​bfZ2​s

得到三个方向的精度表达式。

X/Z精度曲线

为了更清晰的观察三个方向精度随着ZZZ值变化的趋势,我们来做一个仿真,假设像点精度为10μm\mu mμm,计算并绘制ZZZ和XXX方向(YYY方向和XXX方向等尺度,趋势一致)的精度曲线。

其他参数仿真数据:

f=1100f = 1100f=1100 pix
x=640x = 640x=640 pix
b=200b = 200b=200 mm

绘制的精度曲线如下:

从精度计算的结果和趋势图可以看出,精度数值随着ZZZ的增加而变大(意味着精度越来越差),且当ZZZ值较大时,ZZZ方向精度比X(Y)X(Y)X(Y)方向精度要差,随着Z的增加,差距更加明显。

而当ZZZ值较小时,ZZZ方向精度反而会比XYXYXY方向要好,我们将Z的范围减小到0~500,再绘制一条曲线图,

可以看到,在ZZZ小于350mm左右时,ZZZ方向精度要好于XXX方向,这个临界ZZZ值是根据硬件参数和精度公式计算出的,且和像点坐标相关。

参考文献

- [1] Walker, Stewart. Close-Range Photogrammetry and 3D Imaging, 2nd Edition[J]. Photogrammetric Engineering & Remote Sensing, 2015.

博主简介:
Ethan Li 李迎松(知乎:李迎松)
武汉大学 摄影测量与遥感专业博士
主方向立体匹配、三维重建
2019年获测绘科技进步一等奖(省部级)

爱三维,爱分享,爱开源
GitHub: https://github.com/ethan-li-coding
个人微信:

欢迎交流!
关注博主,更多三维重建知识科普,感谢!
博客主页:https://ethanli.blog.csdn.net

【技术流派】双目立体视觉系统空间精度:精确定量分析相关推荐

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

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

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

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

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

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

  4. 双目估计方法_教你提高双目立体视觉系统的精度!

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

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

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

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

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

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

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

  8. 科研教育「双目视觉技术」首选!维视MV-VS220双目立体视觉系统开发平台

    NO.1产品背景 在最近大热的自动驾驶赛道,大疆采用新的技术路线--双目立体视觉.具体来说,它就是模拟人的视觉系统,通过两个临近摄像头所拍摄到的画面的视差,来还原出三维立体结构.不需要对海量数据进行标 ...

  9. 双目立体视觉系统”机器之眼“之扬帆起航篇

    双目立体视觉系统"机器之眼"之扬帆起航篇 好久不见,你还好吗?!!! 久违了,不能等太久,一休哥与大家再次相见,相约双目立体视觉系统! 双目立体视觉(Binocular Stere ...

  10. 3D双目立体视觉系统机器人应用实例

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:新机器视觉  1.应用背景 随着自动化程度越来越高,机器 ...

最新文章

  1. 自己亲自写的两本linux资料,免费下载,pdf文档
  2. 激励理论在人力资源管理中的运用
  3. 安装RRDtool 1.4.5
  4. 学计算机怎么收费呢,学计算机怎么收费服务为先_贵阳经济技术学校
  5. Monkey原理初步和改良优化--Android自动化测试学习历程
  6. 使用PXE+NFS EFI引导安装RHEL6/7以及Kickstart安装
  7. php udp 非阻塞,使用非阻塞udp读取时丢失消息
  8. RHEL系统网络安装(kikstart)
  9. JVM架构和GC垃圾回收机制详解
  10. win8 软件字体乱码
  11. mybatis对java自定义注解的使用——入门篇
  12. 谁说格力不做手机了?格力折叠屏手机了解一下
  13. lcmgcd因数分解
  14. 并发编程学习之volatile关键字
  15. 粒子特效 代码(龙卷风)
  16. pandas task-08
  17. ubuntu18.04加nvidia显卡安装在华硕笔记本上gx1050ti(飞行堡垒fx8)+cuda+cudnn+ttensorflow+keras
  18. mysql查询排名名次
  19. c语言割线法求方程跟,分别用牛顿法和割线法求解方程 x^3-6x^2+9x-2=0在区间[3,4]上的近似根.要求满足精度|x*-xk|...
  20. css 设置body的最小高度是100%,满屏显示

热门文章

  1. [词根词缀]dic/dign/divid/doc/dom由来及词源D故事
  2. micrium ucprobe使用指南
  3. linux文件误删除该如何恢复?
  4. gnu stubs arch linux,编译Nachos源代码时出错“gnu/stubs-32.h:没有这样的文件或目录”...
  5. android多开器工作原理,[原创]app隐藏大师绕过密码与多开分析
  6. 安装JDK与配置java环境变量
  7. (精华2020年5月12日更新) vue实战篇 axio.js封装和环境配置
  8. 百度网盘linux微博登录,百度网盘,微博登录
  9. jsp遍历List map
  10. php页眉,phpword页眉页脚