← 返回标定原理
什么是焦距?为什么会有 $f_x$ 和 $f_y$?
1. 物理焦距 ($F$) vs 像素焦距 ($f_x, f_y$)
在摄影中,我们常听到的“50mm镜头”指的是物理焦距 (F),单位是毫米。它是指光线穿过镜头中心后,汇聚在感光元件(Sensor)上的物理距离。
但在计算机视觉(比如刚才的内参矩阵 $K$)中,计算机不认识“毫米”,它只认识“像素”。所以我们需要把物理距离转换成像素单位。
$$ f_x = \frac{F}{d_x} \quad , \quad f_y = \frac{F}{d_y} $$
- $F$:物理焦距(毫米)
- $d_x$:感光元件上,每个像素在水平方向的物理宽度(毫米/像素)
- $d_y$:感光元件上,每个像素在垂直方向的物理高度(毫米/像素)
2. 为什么 $f_x$ 和 $f_y$ 不一样?
通过上面的公式我们可以看出,如果 $f_x \neq f_y$,根本原因是 $d_x \neq d_y$。
在早期的模拟摄像机或某些特殊的工业相机中,感光元件上的像素点不是正方形的,而是长方形的。也就是说,一个像素的物理宽度和高度不相等。
现代相机的真相:
现在我们用的手机相机、USB 摄像头,其感光元件制造工艺非常高,像素几乎都是完美的正方形($d_x \approx d_y$)。
因此,在绝大多数现代相机的标定结果中,你会发现 $f_x$ 和 $f_y$ 的数值非常接近,几乎相等。如果标定出来差距很大,通常说明标定过程出了错(比如照片太少、角度单一,或者提取角点失败)。
3. 焦距如何影响画面? (左侧 3D 演示)
在左侧的 3D 动画中,你可以看到:
- 红色点 代表真实世界中的物体(3D)。
- 蓝色平面 代表相机的感光元件(成像平面)。
- 黄色线 代表光线从小孔(原点)穿过,打在感光元件上形成的像素点。
互动: 拖动下方的滑块改变焦距。你会发现,焦距越大,成像平面离小孔越远,物体在平面上的投影就越大(这就是为什么长焦镜头能把远处的物体“拉近”放大的原理)。