立体匹配
在双目相机拍摄的一对图像之间寻找对应像素以恢复深度信息的技术。是自动驾驶和机器人领域三维测量的基础方法。
立体匹配是在从不同视点拍摄的两幅图像 (立体对) 之间识别对应像素的过程。匹配像素之间的水平位移称为视差,与深度成反比,通过三角测量实现三维场景重建。这一原理模拟了人类的双目视觉。
立体匹配假设相机已标定,内参和外参已知。校正 (将极线对齐为水平) 作为预处理步骤,将对应搜索约束在两幅图像的同一扫描线上,将问题从二维搜索降为一维搜索。
- 局部方法:在固定窗口 (如 9x9 块) 内使用 SAD (绝对差之和) 或 NCC (归一化互相关) 等代价函数比较左右图像的灰度模式。速度快但在无纹理区域和深度不连续处不可靠
- 半全局匹配 (SGM):沿 8-16 个方向聚合匹配代价并施加平滑惩罚,在局部方法的速度和全局方法的精度之间取得实用平衡。广泛用于汽车和航空测绘应用
- 深度学习方法:GC-Net、PSMNet 和 RAFT-Stereo 等网络构建 4D 代价体并应用 3D 卷积或迭代优化来回归视差图。在 KITTI 和 Middlebury 等基准上显著优于经典方法
OpenCV 提供 cv2.StereoBM_create() 用于块匹配和 cv2.StereoSGBM_create() 用于半全局匹配。关键参数包括 numDisparities (搜索范围,必须能被 16 整除) 和 blockSize,应根据场景的深度范围和纹理特征进行调整。