计算机视觉中的视差效应(parallax effect)是指当从两个不同视点观察同一个物体时,物体位置看似发生偏移的现象。这种现象发生是因为当观察角度改变时,离观察者越近的物体相对于背景的移动幅度越大。在实际应用中,计算机视觉系统利用这种位移(称为“视差”或“disparity”)来估算深度或 3D 结构。例如,立体相机从稍微偏移的位置捕捉图像,然后算法分析这些图像之间的差异来计算距离。两幅图像中匹配点之间的视差越大,表明物体离相机越近。这一原理是深度图生成和 3D 重建等任务的基础。
视差效应的一个常见应用是立体视觉系统,例如机器人、自动驾驶汽车或增强现实中使用的系统。例如,自动驾驶汽车使用双摄像头通过测量车辆移动时物体在不同帧之间移动的幅度来检测障碍物。同样,配备双镜头的智能手机利用视差创建深度图,以实现人像模式,从而模糊背景同时保持主体清晰。另一个例子是运动恢复结构(Structure-from-Motion,SfM),即单个相机在场景中移动时捕捉多张图像。通过跟踪特征在这些图像中移动(视差)的方式,算法可以重建环境的 3D 几何结构。这些应用都依赖于精确的对应匹配——识别两幅图像中的相同特征——来计算准确的深度。
实现基于视差的深度估计面临挑战。首先,在纹理缺失区域或重复模式下,对应匹配可能会失败,导致误差。诸如半全局匹配(SGM)或深度学习模型(例如,用于视差预测的 CNN)等技术通过整合上下文信息来解决这个问题。其次,相机标定至关重要:立体相机对齐或估计其内在参数(如焦距)的微小误差都可能扭曲深度计算。OpenCV 的立体标定工具常用于缓解这一问题。最后,计算效率也很重要。实时系统,如无人机中的系统,会优化算法(如块匹配)以平衡速度和准确性。通过将视差与其他传感器(LiDAR、IMU)结合使用或采用多视角设置,开发者可以在动态场景或弱光条件等复杂场景中提高鲁棒性。