双目视觉及其数学原理
1. 双目视觉概述
双目视觉(Stereo Vision)是一种模仿人眼视觉系统的计算机视觉技术,利用两台摄像机从不同角度拍摄同一场景,通过图像处理和三维重建来获取场景的深度信息。双目视觉广泛应用于机器人、自动驾驶、医学成像和增强现实等领域。
2. 双目视觉的基本原理
双目视觉的核心思想是视差(Disparity):由于两台摄像机(或人眼)存在一定的间距,观察同一物体时,左右图像上的对应点会出现一定的偏移量,该偏移量与物体距离相关。利用这一特性,我们可以计算物体的深度信息。
关键步骤:
- 相机标定(Calibration): 确定相机的内参(焦距、光心、畸变等)和外参(相机间的相对位置)。
- 图像校正(Rectification): 将左右摄像机拍摄的图像校正到相同的极线几何结构,以简化匹配计算。
- 立体匹配(Stereo Matching): 在左右图像中找到对应点,并计算视差。
- 深度计算(Depth Computation): 由视差计算目标物体的三维深度。
3. 数学原理
3.1 相机模型
摄像机可由**针孔相机模型(Pinhole Camera Model)**描述,其透视投影方程如下:
s [ u v 1 ] = K [ R T ] [ X Y Z 1 ] s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \begin{bmatrix} R & T \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} s uv1 =K[RT] XYZ1
其中:
-
( X , Y , Z ) (X, Y, Z) (X,Y,Z) 是世界坐标系中的三维点;
-
( u , v ) (u, v) (u,v) 是投影到图像平面的像素坐标;
-
s s s 是尺度因子;
-
K K K 是相机的内参矩阵:
K = [ f x 0 c x 0 f y c y 0 0 1 ] K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1
其中, f x , f y f_x, f_y fx,fy 是焦距, ( c x , c y ) (c_x, c_y) (cx,cy) 是光心坐标;
-
[ R ∣ T ] [R \ | \ T] [R ∣ T] 是外参矩阵, R R R 是旋转矩阵, T T T 是平移向量。
3.2 极线几何(Epipolar Geometry)
在双目视觉系统中,两台摄像机成像的点满足极线约束(Epipolar Constraint),即:
p ′ T F p = 0 p'^T F p = 0 p′TFp=0
其中:
- p p p 和 p ′ p' p′ 分别是左右相机上的点的齐次坐标;
- F F F 是基础矩阵(Fundamental Matrix),它描述了相机之间的几何关系。
如果相机已经校正,则极线变为水平直线,搜索对应点时只需在水平方向搜索即可,大大简化计算。
3.3 视差计算与深度估计
**视差(Disparity)**定义为:
d = x L − x R d = x_L - x_R d=xL−xR
其中 x L x_L xL 和 x R x_R xR 是物体在左、右相机成像平面上的水平坐标。
根据几何关系,深度 Z Z Z 可由**三角测量法(Triangulation)**计算:
Z = f B d Z = \frac{fB}{d} Z=dfB
其中:
- f f f 是相机焦距;
- B B B 是左右相机的基线距离(Baseline);
- d d d 是视差。
该公式表明:
- 视差 d d d 越大,物体距离 Z Z Z 越近;
- 视差 d d d 越小,物体距离 Z Z Z 越远。
4. 立体匹配(Stereo Matching)
立体匹配的目标是在左右图像中找到对应点,以计算视差。常见的匹配方法包括:
4.1 局部方法(Local Methods)
-
基于块匹配(Block Matching, BM):在一定窗口大小内计算左图像中的块与右图像中各块的相似性,常用SSD(Sum of Squared Differences)或 NCC(Normalized Cross-Correlation)。
-
计算公式:
S S D = ∑ x , y ( I L ( x , y ) − I R ( x − d , y ) ) 2 SSD = \sum_{x,y} (I_L(x, y) - I_R(x - d, y))^2 SSD=x,y∑(IL(x,y)−IR(x−d,y))2
4.2 全局方法(Global Methods)
- 通过能量优化方法(如Graph Cut、Belief Propagation)获得更平滑、精确的视差图。
4.3 深度学习方法
- 近年来,基于深度学习的端到端立体匹配网络(如 PSMNet、GA-Net)可以直接从左右图像预测视差图,精度更高。
5. 双目视觉的应用
- 机器人导航:计算深度信息,帮助机器人避障、自主导航。
- 自动驾驶:车辆检测、障碍物检测、车道保持等。
- 增强现实(AR):深度感知,提高虚实融合效果。
- 医学成像:3D 立体视觉用于手术导航和医学扫描。
- 工业检测:三维重建,用于产品质量检测。
6. 结论
双目视觉是一种重要的计算机视觉技术,其核心数学原理包括相机投影模型、极线几何、视差计算、深度估计等。通过校正、匹配、三角测量等步骤,我们可以从双目图像恢复三维信息,并应用于自动驾驶、机器人、AR/VR 领域。未来,深度学习的加入将进一步提升立体匹配的精度和鲁棒性。