在左右相机物理位置已知(基线 B)、两个相机内参皆为 K \mathbf{K} K,求在任意深度 Z Z Z 处,左图像中 x 轴上的共视(重叠)区域(单位:像素)。
🧭 坐标系设定
- 世界坐标系 与 左相机坐标系 重合。
- 左相机光心位于原点 O _ L = ( 0 , 0 , 0 ) \mathbf{O}\_L = (0, 0, 0) O_L=(0,0,0)。
- 右相机光心位于 O _ R = ( B , 0 , 0 ) \mathbf{O}\_R = (B, 0, 0) O_R=(B,0,0)。
- 两相机光轴均沿 Z 轴方向(平行光轴配置,无旋转)。
- 统一使用相机内参矩阵 K \mathbf{K} K 来投影两个相机的成像。
相机内参为:
K = [ f x 0 c x 0 f y c y 0 0 1 ] \mathbf{K} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1
🔷 第一步:3D 点到左右图像的投影关系
考虑一个空间点 P = ( X , Y , Z ) ⊤ \mathbf{P} = (X, Y, Z)^\top P=(X,Y,Z)⊤,其中 Z > 0 Z > 0 Z>0。
1. 在左相机图像中的投影(标准针孔模型):
x L = c x + f x ⋅ X Z y L = c y + f y ⋅ Y Z (1) \begin{aligned} x_L &= c_x + f_x \cdot \frac{X}{Z} \\ y_L &= c_y + f_y \cdot \frac{Y}{Z} \end{aligned} \tag{1} xLyL=cx+fx⋅ZX=cy+fy⋅ZY(1)
2. 在右相机坐标系中,该点坐标为:
P R = P − [ B 0 0 ] = ( X − B , Y , Z ) ⊤ \mathbf{P}_R = \mathbf{P} - \begin{bmatrix} B \\ 0 \\ 0 \end{bmatrix} = (X - B,\ Y,\ Z)^\top PR=P− B00 =(X−B, Y, Z)⊤
使用相同的内参 K \mathbf{K} K 投影到右图像平面:
x R = c x + f x ⋅ X − B Z y R = c y + f y ⋅ Y Z (2) \begin{aligned} x_R &= c_x + f_x \cdot \frac{X - B}{Z} \\ y_R &= c_y + f_y \cdot \frac{Y}{Z} \end{aligned} \tag{2} xRyR=cx+fx⋅ZX−B=cy+fy⋅ZY(2)
🔷 第二步:共视条件(Consensus Condition)
一个点要在双目系统中可测距,必须同时满足:
0 ≤ x L ≤ W , 0 ≤ x R ≤ W 0 \leq x_L \leq W,\quad 0 \leq x_R \leq W 0≤xL≤W,0≤xR≤W
其中 W W W 为图像宽度。
我们将从 x R ∈ [ 0 , W ] x_R \in [0, W] xR∈[0,W] 出发,反解出对应的 x L x_L xL 范围。
🔷 第三步:从 x R x_R xR 约束反推 X / Z X/Z X/Z,再得 x L x_L xL
由式 (2) 解出 X Z \frac{X}{Z} ZX:
x R = c x + f x ( X Z − B Z ) ⇒ X Z = x R − c x f x + B Z (3) x_R = c_x + f_x \left( \frac{X}{Z} - \frac{B}{Z} \right) \Rightarrow \frac{X}{Z} = \frac{x_R - c_x}{f_x} + \frac{B}{Z} \tag{3} xR=cx+fx(ZX−ZB)⇒ZX=fxxR−cx+ZB(3)
代入式 (1) 得:
x L = c x + f x ⋅ ( x R − c x f x + B Z ) = x R + f x B Z (4) x_L = c_x + f_x \cdot \left( \frac{x_R - c_x}{f_x} + \frac{B}{Z} \right) = x_R + \frac{f_x B}{Z} \tag{4} xL=cx+fx⋅(fxxR−cx+ZB)=xR+ZfxB(4)
这是一个重要关系:在统一内参下,左右图像对应点满足
x L = x R + d 0 , 其中 d 0 = f x B Z x_L = x_R + d_0,\quad \text{其中 } d_0 = \frac{f_x B}{Z} xL=xR+d0,其中 d0=ZfxB
即视差 d = x L − x R = f x B Z d = x_L - x_R = \frac{f_x B}{Z} d=xL−xR=ZfxB,符合经典公式。
🔷 第四步:求左图中满足 x R ∈ [ 0 , W ] x_R \in [0, W] xR∈[0,W] 的 x L x_L xL 范围
由 (4): x R = x L − f x B Z x_R = x_L - \frac{f_x B}{Z} xR=xL−ZfxB
要求:
0 ≤ x R ≤ W ⇒ 0 ≤ x L − f x B Z ≤ W 0 \leq x_R \leq W \Rightarrow 0 \leq x_L - \frac{f_x B}{Z} \leq W 0≤xR≤W⇒0≤xL−ZfxB≤W
解不等式:
f x B Z ≤ x L ≤ W + f x B Z (5) \frac{f_x B}{Z} \leq x_L \leq W + \frac{f_x B}{Z} \tag{5} ZfxB≤xL≤W+ZfxB(5)
但同时, x L x_L xL 本身必须在图像内:
0 ≤ x L ≤ W (6) 0 \leq x_L \leq W \tag{6} 0≤xL≤W(6)
联立 (5) 和 (6),得共视区域为:
x L ∈ [ max ( 0 , f x B Z ) , min ( W , W + f x B Z ) ] x_L \in \left[ \max\left(0,\ \frac{f_x B}{Z} \right),\ \min\left(W,\ W + \frac{f_x B}{Z} \right) \right] xL∈[max(0, ZfxB), min(W, W+ZfxB)]
注意到 f x B Z > 0 \frac{f_x B}{Z} > 0 ZfxB>0,且 W + f x B Z > W W + \frac{f_x B}{Z} > W W+ZfxB>W,所以:
x min ( Z ) = f x B Z , x max ( Z ) = W (7) \boxed{ x_{\min}(Z) = \frac{f_x B}{Z}, \quad x_{\max}(Z) = W } \tag{7} xmin(Z)=ZfxB,xmax(Z)=W(7)
✅ 结论:在统一使用相机内参、平行光轴、右相机在 +X 方向的设定下,左图像中有效的共视区域为
x L ∈ [ f x B Z , W ] x_L \in \left[ \frac{f_x B}{Z},\ W \right] xL∈[ZfxB, W]
- Z 越大 → x min x_{\min} xmin 越小 → 共视区域越宽;
- 最小有效距离由 x min ≤ W x_{\min} \leq W xmin≤W 决定,即 Z ≥ f x B W Z \geq \frac{f_x B}{W} Z≥WfxB,与之前一致。