双目立体视觉
目录
1. 图像校正
立体视觉中的图像校正包含两个关键步骤,先执行畸变校正,再执行极限校正。
1.1 畸变校正
-
目的:消除镜头导致的径向畸变(桶形/枕形)和切向畸变。
-
方法:使用标定得到的畸变系数(k1,k2,p1,p2)和OpenCV的
undistort()函数。 -
公式:
1.2 极线校正
目的是将立体匹配从2D搜索降为1D搜索。
-
校正前:左图某点在右图中的对应点可能出现在任意位置(需全图搜索)。
-
校正后:对应点必定位于右图的同一水平扫描线上(仅需水平方向搜索)。
-
数学保证:极线(Epipolar Line)被强制对齐为水平线。
-
校正后的图像对满足行对齐(Row-Aligned),即同一场景点在两图中的纵坐标相同(
)。
1.2.1 对立体匹配的优化作用

1.2.2 数学原理
其中, 分别表示左右图像的极线,
表示极点,
表示极平面。
(1)原理:找到旋转矩阵 ,使得校正后的相机光轴平行,且极线水平对齐。具体分为左相机旋转矩阵
和右相机旋转矩阵
。
(2)求解步骤:
1.输入:
左右相机间的旋转矩阵R和平移向量t(相机标定得到);
相机内参矩阵。
2.计算新的旋转矩阵:
步骤1:构造虚拟旋转矩阵,使基线(t方向)与新x轴对齐:
步骤2:分配旋转到左右相机:
3.校正后的立体匹配搜索空间:
校正后,由于极线约束强制,对于左图点,只需在右图的同一水平线上搜索,即搜索空间从2D
降至1D
。且校正后的投影模型满足:
视差
仅与水平坐标有关,与垂直坐标无关。
2. 视差与深度
2.1 视差与视差图
(1)视差是指同一三维场景点在左右两个相机图像中的水平像素坐标差,单位为像素(pixel)
(2)视差图是一幅与输入图像同尺寸的灰度图像,每个像素值表示该点在左右视图中的视差值。
-
亮度越高:视差越大(物体越近)。
-
亮度越低:视差越小(物体越远)。
-
黑色区域(0值):无匹配点(遮挡或匹配失败)。
(3)生成方法: 通过立体匹配算法(如SGBM、ELAS、深度学习网络)计算左右图像的视差图。
2.2 深度与深度图
(1)深度是指场景中某一点到相机成像平面的垂直距离(通常沿相机光轴方向测量),单位为米或毫米。
(2)在双目视觉中,视差 d和深度 Z互为倒数:
其中,表示基线长度。
(3)深度图是一幅与输入图像同尺寸的灰度或彩色图像,每个像素值表示该点对应的场景深度值(单位:米/毫米)。
(4)生成方式:

2.3 视差图与深度图对比

3. 点云
在双目视觉中,视差(Disparity)和深度(Depth)是同一物理关系的两种表现形式,实际计算点云时通常需要先计算视差,再转换为深度,最终生成点云。
3.1 双目视觉计算点云
双目视觉的点云生成分为两步:
-
视差计算:通过立体匹配算法(如SGBM、ELAS)直接得到视差。
为什么不能跳过视差?-
立体匹配的本质是计算左右图像中对应点的水平偏移量(即视差 d),这是双目系统的原生输出,无法跳过。
-
-
深度转换:通过公式
为什么需要深度?将视差转换为深度。
-
点云的坐标是三维空间中的物理位置(单位:米/毫米),必须通过深度 Z才能将像素坐标 (u,v)转换为三维坐标 (X,Y,Z)。
-
3.2 双目视觉计算点云公式
图片参考
【2】 https://zhuanlan.zhihu.com/p/522285892
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)