相机投影遵循透视投影模型为什么要乘以深度值
问得非常好!这是理解相机模型的关键。乘以深度值 (\lambda) 不是为了“遵循”模型,而是从齐次坐标到非齐次坐标的归一化操作。让我详细解释:
核心原因:从三维齐次坐标到二维非齐次坐标的转换
1. 透视投影的物理过程
相机的透视投影在物理上是一个3D→2D的降维过程:
- 输入:3D点 ((X_c, Y_c, Z_c)^T)(相机坐标系下)
- 输出:2D点 ((x, y)^T)(归一化图像平面坐标,还不是像素)
物理公式:

这里 (Z_c) 就是深度!它是点到相机光心沿着光轴方向的距离。
2. 齐次坐标的引入(为什么需要它?)
上面的除法 (X_c/Z_c) 是非线性的,这在数学上很难处理(无法用矩阵乘法表示)。
齐次坐标的技巧:
我们引入一个尺度因子 (\lambda),将2D点表示为三维向量:

这样,透视投影就可以写成线性形式:

对比分量:

因此自然得到 (x = X_c / Z_c),(y = Y_c / Z_c)。
这里的 (\lambda) 不是乘出来的,它就是深度 (Z_c)!
3. 完整的投影链(从世界到像素)
现在把完整过程串起来:
步骤1:世界→相机坐标系(刚体变换)

这是线性的。
步骤2:相机坐标→归一化图像坐标(透视投影)

这个投影矩阵 ([I \mid 0]) 是线性的,但输出是齐次坐标。
步骤3:归一化坐标→像素坐标(内参变换)

注意这里也是齐次坐标(用 (\sim) 表示相等性,允许尺度因子)。
4. 合并后的标准形式
把步骤2和3合并,得到:

其中
深度λ的几何意义
λ就是相机坐标系下的Z坐标
从推导可见:
[
\lambda = Z_c
]
即点 (P) 在相机坐标系中沿光轴(Z轴)方向的坐标值。
为什么叫“深度”?
- 在针孔相机模型中,相机看向Z轴正方向
- 光心在原点 ((0,0,0))
- 所以 (Z_c) 就是点离相机光心的距离(沿着视线方向)
- 在图像中,越远的物体深度值 (Z_c) 越大
深度的重要性
- 确定唯一3D点:知道 ((u,v)) 只能确定一条射线,加上深度 (\lambda) 才能确定射线上具体的点。
- 可见性判断:在渲染中,需要比较深度值来判断哪个物体在前。
- 三维重建:三角化本质就是估计匹配点的深度。
常见误解澄清
误解1:“为什么要乘以λ?”
正确理解:不是我们主动“乘以”λ,而是投影方程自然地引入了λ作为齐次坐标的尺度因子。更准确地说,方程左边写 (\lambda [u,v,1]^T) 是为了表示右边计算出的齐次坐标。
误解2:“λ是额外的未知数”
正确理解:λ不是独立未知数,它就是这个点的 (Z_c)。在PnP等问题中,每对2D-3D点对应一个λ,但通常我们直接解 (R,t),不显式解λ。
误解3:“这个公式是人为定义的”
正确理解:这个公式是物理透视投影的数学等价表示:
- 物理:(u = f_x \frac{X_c}{Z_c} + c_x)
- 齐次坐标形式:(\lambda \begin{bmatrix}u\v\1\end{bmatrix} = K \begin{bmatrix}X_c\Y_c\Z_c\end{bmatrix}),其中 (\lambda = Z_c)
两者完全等价,但后者是线性的,便于矩阵运算。
可视化理解
3D空间点 P
│
│ Z_c (深度)
▼
相机光心 O───────→图像平面
↘
↘ 投影线
↘
↘
图像点 p(u,v)
数学过程:
-
点 (P) 在相机坐标系中:((X_c, Y_c, Z_c))
-
沿着投影线,按比例缩小到图像平面:
![image]()
-
为了去掉除法,引入 (\lambda = Z_c),写成齐次坐标形式。
总结
核心要点:
- 深度λ不是乘出来的,而是齐次坐标表示中必然存在的尺度因子。
- 在物理上,λ就是该点在相机坐标系下的 (Z_c) 坐标(深度值)。
- 在数学上,使用齐次坐标是为了将非线性的透视除法转换为线性矩阵乘法,便于计算。
- 投影方程 (\lambda [u,v,1]^T = K[R|t][X_w,Y_w,Z_w,1]^T) 是透视投影物理模型的紧凑线性表示。
所以,这个公式不是“遵循模型”而乘以λ,而是模型本身就是除法运算,我们用齐次坐标技巧把它写成了带λ的乘法形式。


浙公网安备 33010602011771号