【成像原理 01】几何光学入门:折射、反射与薄透镜成像

几何光学在说什么?

我们最终拿到的是传感器上的数字图像,但在这之前,光已经穿过镜头、发生折射、汇聚到感光面上。要理解镜头为什么能「成像」,首先要回到几何光学 ------它不讨论光的波动性,只做一个简单假设:光在均匀介质里沿直线传播,用一条「光线」来描述方向。

在这个框架下,成像问题归结为两类:光在两种介质的界面上如何折射 (或反射 ),以及光经过透镜之后如何重新汇聚成「像」。中学物理里的放大镜、相机对焦、投影仪成像,底层都是同一套规律。本文配合 Python 仿真,把折射定律和薄透镜成像从头到尾走一遍。


折射:斯涅尔定律

镜头由玻璃(或塑料)透镜组成,光从空气进入透镜材料时方向会发生改变。描述这一行为的规律是斯涅尔折射定律

n1sin⁡θ1=n2sin⁡θ2 n_1 \sin\theta_1 = n_2 \sin\theta_2 n1sinθ1=n2sinθ2

其中 n1n_1n1、n2n_2n2 是两种介质的折射率,θ1\theta_1θ1、θ2\theta_2θ2 分别是入射角和折射角,均相对于界面法线测量。空气折射率约 n≈1.0n \approx 1.0n≈1.0,普通光学玻璃约 n≈1.5n \approx 1.5n≈1.5。当光从空气射入玻璃(n1<n2n_1 < n_2n1<n2)时,折射角小于入射角,光线向法线方向偏折------这正是透镜能够「弯折」光线、把发散的光束收拢过来的物理基础。

反射定律可以一并记在心里:入射光、反射光与法线共面,且入射角等于反射角(θi=θr\theta_i = \theta_rθi=θr)。镜头内部的镀膜、鬼影、炫光都与反射有关,本文仿真主要展示折射和透镜成像,反射规律先作为背景知识保留。

仿真取 n1=1.0n_1 = 1.0n1=1.0(空气)、n2=1.5n_2 = 1.5n2=1.5(玻璃),从同一点发出不同入射角的光线,打到水平界面上,结果如图 1 所示。

图 1 不同入射角下的平面折射

如图 1,实线是入射光,虚线是折射光,颜色标注了各光线的入射角 θ1\theta_1θ1。入射角较小时偏折不明显;入射角越大,折射光越贴近界面。从空气进入玻璃时,折射角始终小于入射角。若光从玻璃射向空气且入射角足够大,还会出现全反射 ------光线全部弹回,不再进入第二种介质(图 1 未展示该情形)。仿真对 θ1=0°∼50°\theta_1 = 0° \sim 50°θ1=0°∼50° 做了数值验证,n1sin⁡θ1n_1\sin\theta_1n1sinθ1 与 n2sin⁡θ2n_2\sin\theta_2n2sinθ2 在机器精度下完全相等。


薄透镜:如何把物体变成像?

薄透镜近似

真实相机镜头由多片透镜胶合而成,每片都有厚度。当厚度相比焦距和物距足够小,可以把所有折射效果等效到一个平面 上,这就是薄透镜近似 。虽然真实镜头设计远比这复杂,但薄透镜模型抓住了最核心的关系:物距、像距、焦距三者之间的定量联系。

本文采用如下符号约定:凸透镜焦距 f>0f > 0f>0;物体放在透镜左侧,物距 u>0u > 0u>0;实像成在透镜右侧,像距 v>0v > 0v>0;虚像 v<0v < 0v<0,位于物同侧,需用光线的反向延长线来定位。

三条近轴光线

在实际计算像的位置时,不必追踪所有光线。在近轴条件下(光线与光轴夹角很小,sin⁡θ≈θ\sin\theta \approx \thetasinθ≈θ),只要追三条特殊光线,它们的交点就是像点:

第一条 ,平行于光轴入射,过透镜后穿过像方焦点 F′F'F′。第二条 ,过透镜光心,方向不变。第三条 ,过物方焦点 FFF,出射后平行于光轴。三条光线的交点(或其反向延长线的交点)唯一确定像的位置和大小。

四种物距,四种像

取焦距 f=50 mmf = 50\,\text{mm}f=50mm,分别令物距 u=150, 100, 75, 30 mmu = 150,\,100,\,75,\,30\,\text{mm}u=150,100,75,30mm,用三条近轴光线追迹,结果如图 2 所示。

图 2 四种物距下的薄透镜光线追迹

图 2 从左到右、从上到下四个子图分别对应:

u>2fu > 2fu>2f(物距 150 mm,左上) :像成在 75 mm 处,倒立、缩小,是能在屏幕上接收的实像 。放大率 m=−v/u=−0.5m = -v/u = -0.5m=−v/u=−0.5。图中橙色光线三线交于透镜右侧的像点。

u=2fu = 2fu=2f(物距 100 mm,右上) :像距也是 100 mm,倒立、等大,m=−1m = -1m=−1。这是「等大实像」的特殊位置,物像分别位于两侧二倍焦距处。

f<u<2ff < u < 2ff<u<2f(物距 75 mm,左下) :像距 150 mm,倒立、放大,m=−2m = -2m=−2。物离透镜更近,像在更远处且更大。

u<fu < fu<f(物距 30 mm,右下) :公式给出 v=−75 mmv = -75\,\text{mm}v=−75mm,负号表示虚像。出射光实际是发散的,但在透镜同侧看上去有一个正立、放大的像------放大镜就是在这个区间工作。图 2 右下子图中,橙色点线是出射光的反向延长线,它们的交点即虚像位置。

归纳起来:实像总是倒立的,成在透镜另一侧;u=2fu = 2fu=2f 是等大的分界;u=fu = fu=f 时间距趋于无穷,出射光平行,不成实像;u<fu < fu<f 则成虚像。图 2 中三种实像情形,三条光线精确交于同一点;虚像情形则交于反向延长线,与公式计算完全一致。


成像公式与放大率

三条光线追迹给出了几何直觉,定量计算则靠高斯成像公式

1f=1u+1v \frac{1}{f} = \frac{1}{u} + \frac{1}{v} f1=u1+v1

移项可得像距 v=ufu−fv = \dfrac{uf}{u - f}v=u−fuf。横向放大率定义为像高与物高之比:

m=hiho=−vu m = \frac{h_i}{h_o} = -\frac{v}{u} m=hohi=−uv

负号表示倒立。以 f=50 mmf = 50\,\text{mm}f=50mm 为例:u=150u = 150u=150 时 v=75v = 75v=75,m=−0.5m = -0.5m=−0.5;u=100u = 100u=100 时 v=100v = 100v=100,m=−1m = -1m=−1;u=75u = 75u=75 时 v=150v = 150v=150,m=−2m = -2m=−2;u=30u = 30u=30 时 v=−75v = -75v=−75,m=+2.5m = +2.5m=+2.5。这些数值与图 2 四个子图一一对应。

对公式本身做数值扫描,得到图 3。

图 3 成像公式与放大率曲线

图 3 左图把 1/v1/v1/v 对 1/u1/u1/u 作图,蓝色实线为仿真数据,红色虚线为理论式 1/f−1/u1/f - 1/u1/f−1/u,两者完全重合,说明 1/f=1/u+1/v1/f = 1/u + 1/v1/f=1/u+1/v 自洽成立。右图展示放大率 m=−v/um = -v/um=−v/u 随 u/fu/fu/f 的变化:在 u=2fu = 2fu=2f 处 m=−1m = -1m=−1,与图 2 右上图吻合;当 uuu 从右侧趋近 fff 时,∣m∣→∞|m| \to \infty∣m∣→∞,对应强烈放大但极难对准;uuu 很大时 ∣m∣→0|m| \to 0∣m∣→0,远处物体在焦点附近形成很小的像。

最后,图 4 把折射与透镜实像放在同一张图里,作为全文汇总。

图 4 折射与薄透镜实像汇总

图 4 左半(a)是空气(n=1.0n=1.0n=1.0)到玻璃(n=1.52n=1.52n=1.52)的折射,与图 1 同一物理过程。右半(b)是 f=50 mmf = 50\,\text{mm}f=50mm、u=150 mmu = 150\,\text{mm}u=150mm(即 u=3fu = 3fu=3f)时的实像光路,与图 2 左上图一致:物在 −150 mm-150\,\text{mm}−150mm 处,像在 75 mm75\,\text{mm}75mm 处,倒立缩小。两幅合在一起看,就是「光先被介质弯折,再被透镜汇聚」的完整链条。


仿真说明

文中四张结果图均用 Python(NumPy + Matplotlib)编写仿真程序生成,涵盖斯涅尔折射、薄透镜三条近轴光线追迹,以及成像公式与放大率的数值验证。核心思路是:用向量形式实现折射定律,再对给定物距 uuu 分别追迹三条特殊光线,检验它们是否交于公式预测的像点。

图号 内容
图 1 多入射角平面折射
图 2 四种物距下的光线追迹
图 3 成像公式验证与放大率曲线
图 4 折射与实像光路汇总

结语

本文讨论的是理想薄透镜,真实镜头还有厚度、像差、光圈等效应,但 1/f=1/u+1/v1/f = 1/u + 1/v1/f=1/u+1/v 仍是理解对焦和放大倍率的基础。机器视觉里「给定工作距离和视野,选多长焦距」,本质上就是在解这个方程。

下一篇讲视场角、焦距与画幅------同样的 50 mm 镜头,装在全画幅和 APS-C 传感器上,看到的范围完全不同。