三维重建 —— 5. 双目立体视觉
文章目录
- 1. 平行视图的基础矩阵
- 2. 图像校正
- 3. 对应点搜索
- 3.1. 相关匹配法
- 3.2. 相关匹配法存在的问题
课程视频链接: 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)——5. 双目立体视觉。
1. 平行视图的基础矩阵
极点 e ′ e' e′ 是相机光心 O 1 O_1 O1(在相机 O 1 O_1 O1 坐标系下的齐次坐标为 ( 0 0 0 1 ) \begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix} 0001 )在相机 O 2 O_2 O2 对应图像平面上的投影点,即有:
e ′ = K ′ [ T x ] [ R T ] ( 0 0 0 1 ) = K T (1) e' = \mathbf{K}' [T_x] [\mathbf{R} \quad T] \begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix} = \mathbf{K} T \tag{1} e′=K′[Tx][RT] 0001 =KT(1)注意到,旋转矩阵 R \mathbf{R} R 被消去了。
在实际应用中,通常会选取两个规格一样的相机,即有 K = K ′ \mathbf{K} = \mathbf{K}' K=K′,并且相机之间只存在平移变换,即 R = I \mathbf{R} = \mathbf{I} R=I,我们不妨设平移向量为 T = ( t x 0 0 ) T = \begin{pmatrix} t_x \\ 0 \\ 0 \end{pmatrix} T= tx00 。根据方程 ( 1 ) (1) (1) 有 e ′ = K T = ( α − α cot θ u 0 0 β sin θ v 0 0 0 1 ) ( t x 0 0 ) = ( α t x 0 0 ) e' = \mathbf{K} T = \begin{pmatrix} \alpha & -\alpha \cot \theta & u_0 \\ 0 & \dfrac{\beta}{\sin \theta} & v_0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} t_x \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} \alpha t_x \\ 0 \\ 0 \end{pmatrix} e′=KT= α00−αcotθsinθβ0u0v01 tx00 = αtx00 ,不妨取 e ′ = ( 1 0 0 ) e' = \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} e′= 100 ,则有:
F = [ e ′ × ] K ′ R K − 1 = [ e ′ × ] = [ 0 0 0 0 0 − 1 0 1 0 ] \mathbf{F} = [e^{\prime} \times] \mathbf{K}^{\prime} \mathbf{R} \mathbf{K}^{-1} = [e^{\prime} \times] = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 \end{bmatrix} F=[e′×]K′RK−1=[e′×]= 0000010−10 由博客 三维重建 —— 4. 三维重建基础与极几何 可知, p ′ p' p′ 对应的极线是 l = F T p ′ l = \mathbf{F}^T p' l=FTp′。假设 p ′ p' p′ 在相机 O 2 O_2 O2 坐标系的空间坐标为 ( p u ′ p v ′ 1 ) \begin{pmatrix} p_{u}' \\ p_{v}' \\ 1 \end{pmatrix} pu′pv′1 ,则有:
l = F T p ′ = [ 0 0 0 0 0 1 0 − 1 0 ] [ p u ′ p v ′ 1 ] = [ 0 1 − p v ′ ] l = \mathbf{F}^{T} p' = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & -1 & 0 \end{bmatrix} \begin{bmatrix} p_{u}' \\ p_{v}' \\ 1 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \\ -p_{v}' \end{bmatrix} l=FTp′= 00000−1010 pu′pv′1 = 01−pv′ 则极线 l l l 的方程为:
l T ( u v 1 ) = ( 0 , 1 , − p v ′ ) ( u v 1 ) = v − p v ′ = 0 l^T \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \begin{pmatrix} 0, 1, -p_v' \end{pmatrix} \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = v - p_v' = 0 lT uv1 =(0,1,−pv′) uv1 =v−pv′=0可以看出,极线 l l l 平行于 u u u 轴,并且 p p p 和 p ′ p' p′ 的 v v v 坐标一样。
现在我们来推导双目立体视觉的经典公式:
d = B f z (2) d = \dfrac{Bf}{z} \tag{2} d=zBf(2)其中:
- d d d 为视差
- B B B 为基线,表示相机光心 O 1 O_1 O1 到 O 2 O_2 O2 的距离
- z z z 为点 P P P 的深度值
推导方法如下:
从公式 ( 2 ) (2) (2) 可以看出:视差 d d d 与深度 z z z 成反比。
根据视差与深度的关系,已知基线和焦距的话,我们可以计算出视差图,如下图所示:
2. 图像校正
如果两个相机不满足前面提到的关系,我们可以通过图像校正的方法将两个图像平面满足双目立体视觉的要求,如下图所示:
图像校正的具体步骤如下图所示:
详细的证明参考书籍:Richard Hartley, AndrewZisserman,《Multiple ViewGeometryin Computer Vision》。
图像校正效果示例如下:
3. 对应点搜索
3.1. 相关匹配法
给定三维空间点,如何在左右图像中找到相应的观测值,被称为双目融合问题。假设我们已知 u v uv uv 平面上点 p p p 的坐标,根据极几何,我们只需要在极线上搜索即可,如下图所示:
下面介绍使用相关匹配来获取对应点的方法,如下图所示:
相关匹配法的核心思想是: 若两个像素点为真实物理点的对应像点(对应点),则其各自固定窗口(邻域)内的局部特征应具有较高的相似度。
如果两个相机拍摄的图像的亮度和曝光不一致,那么相关匹配法很有可能失效,如下图所示:
为此引入归一化相关匹配法,即对窗口内的特征向量进行归一化处理,如下图所示:
归一化相关匹配法示例如下图所示:
窗口大小选择对相关匹配法效果的影响如下图所示:
3.2. 相关匹配法存在的问题
相关匹配法主要存在两方面的问题:
透视缩短
:如图所示,同一物体区域在不同视角下成像大小不同。对于固定尺寸的匹配窗口,其在两幅图像上所覆盖的区域将存在差异,导致提取的特征区域不对应,从而引发误匹配遮挡
:物体间的相互遮挡会导致在两幅图像中可见的目标区域不一致,同样使得特征提取区域匹配失败
如下图所示,长基线可提升深度感知精度(尤其对远距离目标),而短基线则能缓解透视畸变与遮挡对相关匹配法的干扰,但会显著降低深度估计的准确性。
长基线扩大视差范围,提升远距离目标深度精度,但需更高分辨率摄像头捕捉细微视差。而短基线减少视角差异,缓解遮挡和透视畸变的影响,但视差计算灵敏度下降,导致深度误差增大。基线设计需平衡深度精度与环境适应性(如遮挡/透视),实际应用中需根据场景需求选择。
除了透视缩短和遮挡问题外,还存在下图中的两个问题:
对应点的问题总结如下:
通过引入更多的约束解决对应点问题,如下图所示: