目录

1. 图像校正

1.1 畸变校正

1.2 极线校正

1.2.1 对立体匹配的优化作用

1.2.2 数学原理

2. 视差与深度

2.1 视差与视差图

2.2 深度与深度图

2.3 视差图与深度图对比​​

3. 点云


1. 图像校正

立体视觉中的图像校正包含两个关键步骤,先执行畸变校正,再执行极限校正。

1.1 畸变校正

  • ​​目的​​:消除镜头导致的径向畸变(桶形/枕形)和切向畸变。

  • ​​方法​​:使用标定得到的畸变系数(k1​,k2​,p1​,p2​)和OpenCV的undistort()函数。

  • 公式:

\begin{aligned}x_{\text{corrected}} &= x\left(1 + k_1 r^2 + k_2 r^4\right) + 2 p_1 xy + p_2 \left(r^2 + 2 x^2\right) \\ y_{\text{corrected}} &= y\left(1 + k_1 r^2 + k_2 r^4\right) + p_1 \left(r^2 + 2 y^2\right) + 2 p_2 xy\end{aligned}

1.2 极线校正

        目的是将立体匹配从2D搜索降为1D搜索。

  • ​​校正前​​:左图某点在右图中的对应点可能出现在任意位置(需全图搜索)。

  • ​​校正后​​:对应点必定位于右图的同一水平扫描线上(仅需水平方向搜索)。

  • 数学保证:极线(Epipolar Line)被强制对齐为水平线。

  • 校正后的图像对满足​​行对齐(Row-Aligned)​​,即同一场景点在两图中的纵坐标相同(v_{\text{left}} = v_{\text{right}}​)。

1.2.1 对立体匹配的优化作用

1.2.2 数学原理
图1:对极几何

其中,l_{\text{1}} l_{\text{2}} 分别表示左右图像的极线,e_{\text{1}}e_{\text{2}} 表示极点,\mathrm{O}_{1}\mathrm{P}\mathrm{O}_{2}表示极平面。

图2:极线校正

(1)原理:找到旋转矩阵$R_{\text{rect}}$ ,使得校正后的相机光轴平行,且极线水平对齐。具体分为左相机旋转矩阵$R_{\text{1}}$​和右相机旋转矩阵 $R_{\text{2}}$​。

(2)求解步骤:

        1.输入:

                左右相机间的旋转矩阵R和平移向量t(相机标定得到);

                相机内参矩阵$K_{\text{left}}, K_{\text{right}}$。

        2.计算新的旋转矩阵:

                步骤1:构造虚拟旋转矩阵R_{\text{rect}},使基线(t方向)与新x轴对齐:

e_{1}=\frac{T}{\|T\|}$, $e_{2}=\frac{T\times[0,0,1]^{T}}{\|T\times[0,0,1]^{T}\|}$, $e_{3}=e_{1}\times e_{2}$ $R_{\text{rect}}=[e_{1},e_{2},e_{3}]^{T}

                步骤2:分配旋转到左右相机:

R_{1}=R_{\text{rect}}$, $R_{2}=R_{\text{rect}}\cdot R^{T}

        3.校正后的立体匹配搜索空间:

                校正后,由于极线约束强制v_l = v_r​,对于左图点,只需在右图的同一水平线上搜索,即搜索空间从2D (u_r, v_r)降至1D(u_r)。且校正后的投影模型满足:

$u_{l}=\frac{f_{x} X}{Z}+c_{x},\quad u_{r}=\frac{f_{x}(X-b)}{Z}+c_{x}$

                视差 d=u_{l}-u_{r}=\frac{f_{x} b}{Z} 仅与水平坐标有关,与垂直坐标无关。           

2. 视差与深度

2.1 视差与视差图

(1)视差是指同一三维场景点在​​左右两个相机​​图像中的​​水平像素坐标差​​,单位为像素(pixel)

(2)视差图是一幅与输入图像同尺寸的灰度图像,每个像素值表示该点在左右视图中的​​视差值​​。

  • ​​亮度越高​​:视差越大(物体越近)。

  • ​​亮度越低​​:视差越小(物体越远)。

  • ​​黑色区域(0值)​​:无匹配点(遮挡或匹配失败)。

​(3)​生成方法​​: 通过立体匹配算法(如SGBM、ELAS、深度学习网络)计算左右图像的视差图。

图3:示例视差图

2.2 深度与深度图

图4:深度表示

(1)深度是指场景中某一点到相机成像平面的​​垂直距离​​(通常沿相机光轴方向测量),单位为米或毫米。

(2)在双目视觉中,视差 d和深度 Z互为倒数:

Z = \frac{f \cdot B}{d}

其中,B表示基线长度。

(3)深度图是一幅与输入图像同尺寸的灰度或彩色图像,每个像素值表示该点对应的​​场景深度值​​(单位:米/毫米)。

(4)生成方式:

图5:示例深度图

2.3 视差图与深度图对比​​

3. 点云

在双目视觉中,​​视差(Disparity)和深度(Depth)是同一物理关系的两种表现形式​​,实际计算点云时通常需要​​先计算视差,再转换为深度​​,最终生成点云。

3.1 双目视觉计算点云

双目视觉的点云生成分为两步:

  1. ​​视差计算​​:通过立体匹配算法(如SGBM、ELAS)直接得到​​视差​​。

    为什么不能跳过视差?​​
    • 立体匹配的本质是计算左右图像中对应点的水平偏移量(即视差 d),这是双目系统的原生输出,无法跳过。

  2. ​​深度转换​​:通过公式 Z = \frac{f \cdot B}{d}将视差转换为​​深度。

    为什么需要深度?​​
    • 点云的坐标是三维空间中的物理位置(单位:米/毫米),必须通过深度 Z才能将像素坐标 (u,v)转换为三维坐标 (X,Y,Z)。

3.2 双目视觉计算点云公式

$X=\frac{(u-c_{x})\cdot Z}{f_{x}},\ Y=\frac{(v-c_{y})\cdot Z}{f_{y}},\ Z=\frac{f_{x}\cdot b}{d}$

图6:示例点云图

图片参考

【1】【立体视觉(四)】之极线校正与双目视觉-CSDN博客

【2】  https://zhuanlan.zhihu.com/p/522285892  

【3】 深度图(Depth Map)-CSDN博客


 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐