参考链接:https://zhuanlan.zhihu.com/p/362718946
本文主要参考链接博主的理论推导,并按照自己的理解作分析和修正
一、考虑问题:
-
双目立体视觉系统的精度由那些因素决定?
-
X/Y/Z三个方向的精度都是一样的吗?如果不是一样,哪个方向精度更好呢?
最常见的情况下,双目立体视觉的最终输出是左相机坐标系下的XYZ坐标,本篇便以这三个分量为精度分析对象。
首先,做一些变量的定义:
b :基线长度,单位mm
f :焦距
x, y :像点坐标(以像主点为原点)
X, Y, Z :相机坐标系下的坐标,单位mm
d :视差
我们先看这三个分量的求解公式:
Z = b f d , X = Z f x , Y = Z f y Z = \frac{bf}{d},\ \ X = \frac{Z}{f}x,\ \ Y = \frac{Z}{f}y Z=dbf, X=fZx, Y=fZy
从公式可知,在硬件参数 b, f 固定的情况下, XYZ 的值和像点坐标值直接相关,XYZ 的精度实际上是像点精度下的空间偏差值,因此我们以像点精度为基本(最小)精度单位。
二、对博主的推导作修正:
当变量定义如下
像素x代表的是尺寸大小,单位mm
焦距f代表物理尺寸,单位mm
视差d代表物理尺寸,单位mm
才能使用博主的推导公式,下面对Z方向的精度推导作解释。
假设像点 x,y 的精度(像素尺寸)为 s x , s y s_{x},\ s_{y} sx, sy ,视差 d 的精度为 s d s_{d} sd 。通常认为 x,y 的精度是相同的,即 s x = s y = s s_{x} = s_{y} = s sx=sy=s ,而视差的精度一般来说可以用公式
s d = s x 2 s_{d} = \frac{s_{x}}{\sqrt{2}} sd=2sx
Z方向精度
首先对于 Z ,自变量是 d ,我们对 d 求偏导,可得
∂ Z ∂ d = − b f d 2 = − Z 2 b f \frac{\partial Z}{\partial d} = - \frac{bf}{d^{2}} = - \frac{Z^{2}}{bf} ∂d∂Z=−d2bf=−bfZ2