双目立体视觉模型
- 简单模型
- 一般模型
简单模型
假设两个摄像机平行放置于同一高度、光轴平行、成像平面重合、焦距相同、左右图像每一行y坐标方向、大小相同,如下图所示:
由左右成像平面上的点、目标物点、焦距、摄像机中心基线距离的几何关系可以得到:
{
x
l
X
=
f
Z
x
r
(
X
−
D
)
=
f
Z
y
l
Y
=
y
r
Y
=
f
Z
\begin{cases}\frac{x_l}{X}=\frac{f}{Z}\\ \frac{x_r}{(X-D)}=\frac{f}{Z}\\ \frac{y_l}{Y}=\frac{y_r}{Y}=\frac{f}{Z}\end{cases}
⎩
⎨
⎧Xxl=Zf(X−D)xr=ZfYyl=Yyr=Zf设置视差
d
=
x
l
−
x
r
d=x_l-x_r
d=xl−xr,则可求解出
P
P
P坐标:
[
X
Y
Z
]
=
[
D
x
l
/
d
D
y
l
/
d
D
f
/
d
]
\begin{bmatrix}X\\ Y\\ Z\end{bmatrix}=\begin{bmatrix}Dx_l/d\\ Dy_l/d\\ Df/d\end{bmatrix}
XYZ
=
Dxl/dDyl/dDf/d
因此,只需获取基线距离
D
D
D、目标点左右成像坐标
p
l
p_l
pl、
p
r
p_r
pr、视差
d
d
d ,即可得到物体在左摄像机坐标系下的3D位置坐标。这种方法运算量少,适用于对精度要求不高的场景。
一般模型
实际摄像机由于制造工艺等原因,导致摄像机成像平面不在同一平面,且两摄像机光轴存在一定角度。因此必须建立双目立体视觉的一般模型来对实际系统进行分析。
设左摄像机坐标系
O
l
−
X
l
Y
l
Z
l
O_l - X_l Y_l Z_l
Ol−XlYlZl固定在世界坐标系,图像坐标系为
o
l
−
x
l
y
l
o_l-x_ly_l
ol−xlyl,焦距为
f
l
f_l
fl。右摄像机坐标系
O
r
−
X
r
Y
r
Z
r
O_r - X_r Y_r Z_r
Or−XrYrZr,对应图像坐标系
o
r
−
x
r
y
r
o_r-x_ry_r
or−xryr,焦距为
f
r
f_r
fr,其光轴与左摄像机成角
θ
\theta
θ。
左右摄像机投影变换模型分别(图像坐标系为物理单位尺度):
s
l
[
x
l
y
l
1
]
=
[
f
l
0
0
0
f
l
0
0
0
1
]
[
X
l
Y
l
Z
l
]
s_l\begin{bmatrix}x_l\\ y_l\\ 1\end{bmatrix}=\begin{bmatrix}f_l&0&0\\ 0&f_l&0\\ 0&0&1\end{bmatrix}\begin{bmatrix}X_l\\ Y_l\\ Z_l\end{bmatrix}
sl
xlyl1
=
fl000fl0001
XlYlZl
s
r
[
x
r
y
r
1
]
=
[
f
r
0
0
0
f
r
0
0
0
1
]
[
X
r
Y
r
Z
r
]
s_r\begin{bmatrix}x_r\\ y_r\\ 1\end{bmatrix}=\begin{bmatrix}f_r&0&0\\ 0&f_r&0\\ 0&0&1\end{bmatrix}\begin{bmatrix}X_r\\ Y_r\\ Z_r\end{bmatrix}
sr
xryr1
=
fr000fr0001
XrYrZr
其中,
s
l
Z
l
=
s
r
Z
r
=
1
\frac{s_l}{Z_l}=\frac{s_r}{Z_r}=1
Zlsl=Zrsr=1
设左摄像机坐标系相对右摄像机坐标系的变换矩阵为:
R
=
[
r
1
r
2
r
3
r
4
r
5
r
6
r
7
r
8
r
9
]
,
T
=
[
t
x
t
y
t
z
]
R=\begin{bmatrix}r_1&r_2&r_3\\ r_4&r_5&r_6\\ r_7&r_8&r_9\end{bmatrix},T=\begin{bmatrix}t_x\\ t_y\\ t_z\end{bmatrix}
R=
r1r4r7r2r5r8r3r6r9
,T=
txtytz
因此,右坐标系下的坐标通过左坐标系下坐标以及变换矩阵表示为:
[
X
r
Y
r
Z
r
]
=
[
R
T
]
[
X
l
Y
l
Z
l
1
]
\begin{bmatrix}X_r\\ Y_r\\ Z_r\end{bmatrix}=\begin{bmatrix}R&T\end{bmatrix}\begin{bmatrix}X_l\\ Y_l\\ Z_l\\ 1\end{bmatrix}
XrYrZr
=[RT]
XlYlZl1
联立上式,可以计算出目标点在左坐标系(世界坐标系)下的坐标:
[
X
Y
Z
]
=
[
X
l
Y
l
Z
l
]
=
[
Z
l
x
l
f
l
Z
l
y
l
f
l
f
l
(
f
r
t
y
−
y
r
t
z
)
y
r
(
r
7
x
l
+
r
8
y
l
+
f
l
r
9
)
−
f
r
(
r
4
x
l
+
r
5
y
l
+
f
l
r
6
)
]
\begin{bmatrix}X\\Y\\Z\end{bmatrix}=\begin{bmatrix}X_l\\Y_l\\Z_l\end{bmatrix}=\begin{bmatrix}\frac{Z_lx_l}{f_l}\\ \frac{Z_ly_l}{f_l}\\ \frac{f_l(f_rt_y-y_rt_z)}{y_r\left(r_7x_l+r_8y_l+f_lr_9\right)-f_r\left(r_4x_l+r_5y_l+f_lr_6\right)}\end{bmatrix}
XYZ
=
XlYlZl
=
flZlxlflZlylyr(r7xl+r8yl+flr9)−fr(r4xl+r5yl+flr6)fl(frty−yrtz)
通过以上推导可知,已知左右摄像机焦距
f
l
f_l
fl、
f
r
f_r
fr、目标点在左右相机的坐标
p
l
p_l
pl、
p
r
p_r
pr、变换矩阵
R
R
R、
T
T
T就可以获取目标点的三维坐标。