参考链接:https://zhuanlan.zhihu.com/p/362718946

本文主要参考链接博主的理论推导,并按照自己的理解作分析和修正

一、考虑问题:

  1. 双目立体视觉系统的精度由那些因素决定?

  2. X/Y/Z三个方向的精度都是一样的吗?如果不是一样,哪个方向精度更好呢?

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

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

b :基线长度,单位mm

f :焦距

x, y :像点坐标(以像主点为原点)

X, Y, Z :相机坐标系下的坐标,单位mm

d :视差

我们先看这三个分量的求解公式:

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, f 固定的情况下, XYZ 的值和像点坐标值直接相关,XYZ 的精度实际上是像点精度下的空间偏差值,因此我们以像点精度为基本(最小)精度单位。

二、对博主的推导作修正

当变量定义如下

像素x代表的是尺寸大小,单位mm

焦距f代表物理尺寸,单位mm

视差d代表物理尺寸,单位mm

才能使用博主的推导公式,下面对Z方向的精度推导作解释。

假设像点 x,y 的精度(像素尺寸)为 sx,sys_{x},\ s_{y}sx​, sy​ ,视差 d 的精度为 sds_{d}sd​ 。通常认为 x,y 的精度是相同的,即sx=sy=ss_{x} = s_{y} = ssx​=sy​=s ,而视差的精度一般来说可以用公式

sd=sx2s_{d} = \frac{s_{x}}{\sqrt{2}}sd​=2​sx​​

Z方向精度

首先对于 Z ,自变量是 d ,我们对 d 求偏导,可得

∂Z∂d=−bfd2=−Z2bf\frac{\partial Z}{\partial d} = - \frac{bf}{d^{2}} = - \frac{Z^{2}}{bf}∂d∂Z​=−d2bf​=−bfZ2​

∂Z/∂d\partial Z/\partial d∂Z/∂d
的单位是mm/mm,物理意义为每毫米视差值代表的空间距离大小,需要再乘以视差精度 sds_{d}sd​,才能得出单个视差精度代表的空间距离大小,单位mm/pix

可得:

sZ=ZbZfsd=ZbZfsx2s_{Z} = \frac{Z}{b}\frac{Z}{f}s_{d} = \ \frac{Z}{b}\ \frac{Z}{f}\ \frac{s_{x}}{\sqrt{2}}sZ​=bZ​fZ​sd​= bZ​ fZ​ 2​sx​​

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

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

同理参考博主的推导过程,可得出XY方向精度。

三、推导简化

上述的推导需要知道相机的像素和焦距的实际尺寸,比较麻烦。

通常情况下,标定文件中的内参数据都是以pix为单位,下面以像素pix为单位作推导

当变量定义如下

像素x代表的是像素坐标,单位pix

焦距f代表像素比值,单位pix

视差d代表像素比值,单位pix

Z方向精度

首先对于 Z ,自变量是 d ,我们对 d 求偏导,可得

∂Z∂d=−bfd2=−Z2bf\frac{\partial Z}{\partial d} = - \frac{bf}{d^{2}} = - \frac{Z^{2}}{bf}∂d∂Z​=−d2bf​=−bfZ2​

此时 ∂Z/∂d\partial Z/\partial d∂Z/∂d
的单位是mm/pix,物理意义为单个像素pix代表的空间距离大小,需要再除以2\sqrt{2}2​,才能得出单个视差精度代表的空间距离大小

可得:

sZ=12ZbZfs_{Z} = \frac{1}{\sqrt{2}}\frac{Z}{b}\frac{Z}{f}\ sZ​=2​1​bZ​fZ​

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

XY方向精度

同理,对于 X ,自变量是 Z 和 x ,我们对 Z 和 x 求偏导,可得

∂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​

X 方向精度可表示为

sX=(xfsZ)2+(Zf)2s_{X} = \sqrt{{(\frac{x}{f}s_{Z})}^{2} + {(\frac{Z}{f})}^{2}}sX​=(fx​sZ​)2+(fZ​)2​

同理, Y 方向精度可表示为

sY=(yfsZ)2+(Zf)2s_{Y} = \sqrt{{(\frac{y}{f}s_{Z})}^{2} + {(\frac{Z}{f})}^{2}}sY​=(fy​sZ​)2+(fZ​)2​

把sZ=Z22bf,X=Zfx,Y=Zfys_{Z} = \frac{Z^{2}}{\sqrt{2}bf},\ \ X = \frac{Z}{f}x,\ \ Y = \frac{Z}{f}ysZ​=2​bfZ2​,  X=fZ​x,  Y=fZ​y代入公式,可得

sX=Zf1+(xZ2fb)2=Zf1+(X2b)2s_{X} = \frac{Z}{f}\sqrt{1 + {(\frac{xZ}{\sqrt{2}fb})}^{2}}\ = \frac{Z}{f}\sqrt{1 + {(\frac{X}{\sqrt{2}b})}^{2}}\ sX​=fZ​1+(2​fbxZ​)2​ =fZ​1+(2​bX​)2​

sY=Zf1+(yZ2fb)2=Zf1+(Y2b)2s_{Y} = \frac{Z}{f}\sqrt{1 + {(\frac{yZ}{\sqrt{2}fb})}^{2}}\ = \frac{Z}{f}\sqrt{1 + {(\frac{Y}{\sqrt{2}b})}^{2}}\ sY​=fZ​1+(2​fbyZ​)2​ =fZ​1+(2​bY​)2​

可以看出,X,Y方向的精度不仅跟Z的距离正相关,还跟各自的X,Y方向距离正相关。

Y/Z精度曲线

为了更清晰的观察Y/Z方向精度随着 Z 值变化的趋势,我们来做一个仿真,计算并绘制 Z 和 Y 方向(Y 方向和X方向等尺度,趋势一致)的精度曲线。

根据实际案例参数数据分析

案例一:

Y = 58 mm, Y方向58毫米处的精度

f = 275 pix

b = 32 mm

绘制的精度曲线如下:

案例二:

Y = 580 mm,Y方向580毫米处的精度

f = 275 pix

b = 32 mm

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

从仿真数据看,Z方向距离1000mm时,精度值高达80mm,即8%的精度误差。实际上并没有这么大,这与双目立体视觉算法有关。算法的后处理做了子像素拟合,精度为subpix代表的空间大小,因此,实际精度可能只有仿真数据的几分之一。

Y方向的精度不仅跟Z值相关,还跟本身的Y值正相关,Y越大,Y方向的精度越差。

双目立体视觉空间坐标精度分析相关推荐

  1. 双目立体视觉系统精度分析

    from:http://blog.csdn.net/xuyuhua1985/article/details/50151269 <双目立体视觉系统精度分析> 链接 在一个三维测量项目中,如果 ...

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

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

  3. 关于双目立体视觉的三大基本算法及发展现状的总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 双目立体视觉一直是机器视觉研究领域的发展热点和难点,"热 ...

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

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

  5. 双目立体视觉建立深度图_双目立体视觉测量系统应用

    双目立体视觉是计算机视觉的一个重要分支,利用计算机技术模拟人类视觉原理,使用计算机被动感知距离的方法,从两个或者多个点观察同一个物体的场景,获取在不同视角下的图像. 根据图像之间像素的匹配关系,通过三 ...

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

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

  7. python双目视觉三维重建代码_双目立体视觉的三维重建方法与流程

    本发明为双目立体视觉的三维重建方法,属于图像处理与机器视觉领域,涉及halcon软件,具体涉及空间场景的三维重建. 背景技术: 三维重建技术作为计算机视觉领域的一个重要分支,在人工智能.虚拟现实.非接 ...

  8. 双目立体视觉建立深度图_从单幅图像到双目立体视觉的3D目标检测算法

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  9. 双目立体视觉简单介绍

    1. 什么是视觉 视觉是一个古老的研究课题,同时又是人类观察世界.认知世界的重要功能和手段.人类从外界获得的信息约有75%来自视觉系统,用机器模拟人类的视觉功能是人们多年的梦想.视觉神经生理学,视觉心 ...

最新文章

  1. Python DAG—归简法—拓扑排序
  2. delphi 窗体透明详解TransparentColorValue,窗体透明控件不透明
  3. python中matplotlib.pyplot的使用示例
  4. abap dec和curr的区别
  5. 打印出重复的姓名和重复的次数,并按重复次数排序:
  6. 使用深度学习TensorFlow框架进行图片识别
  7. 信息学奥赛C++语言:单词转换
  8. mysql数据迁移到es_实战ES跨版本数据迁移
  9. 结构化编程:不确定迭代循环控制do while
  10. Linux rpm命令详解
  11. 巴赛尔协议与贷款产品利率解析
  12. 只有得到祝福才是好婚姻
  13. matlab2c使用c++实现matlab函数开发配置全解
  14. 【转】C# 中@符号在字符串中的作用
  15. python跨平台处理绝对路径和相对路径,open,with
  16. ShowDoc v2.4.8 发布,IT团队的在线 API 文档工具
  17. [管理员手册](五)Ubuntu desktop 20.04系统安装显卡驱动NVIDIA cuda pytorch向日葵sunlogin安装
  18. 苹果系统摩尔庄园是什么服务器,摩尔庄园手游iOS
  19. 用python将九九乘法口诀表打印在Excel中
  20. 快速对齐word中目录的页码|容易上手的方法

热门文章

  1. 利用vpython的单摆运动模拟
  2. 4人组合蓝牙对讲耳机
  3. Lumerical官方案例、FDTD时域有限差分法仿真学习(十)——光栅耦合器(Grating coupler)
  4. 115200波特率-串口基本知识
  5. 2022最新版本开运网运势测算网站数据node.js版接口数据H5网站算命接口
  6. Process Monitor的基本使用方法
  7. 【数学建模笔记】【第七讲】多元线性回归分析(一): 回归分析的定义、对于线性的理解以及内生性问题的探究
  8. revit学习-图元属性
  9. php聊天工具下载,online_chat PHP聊天软件
  10. Crack the fySystem.dll