3. 卷帘快门原理:逐行扫描曝光,行间时间差与读出延迟

卷帘快门,英文叫 Rolling Shutter。说白了,它不像全局快门那样“咔嚓”一下同时拍下整张画面。它是逐行扫描曝光的——从上到下,一行一行地来。

我刚开始接触这个原理时,总觉得它有点反直觉。你想想看,一张照片里,第一行和最后一行开始曝光的时间都不一样,那画面还能对吗?嗯,这就是我们今天要聊的核心。

3.1 逐行扫描曝光:到底是怎么工作的?

卷帘快门的传感器,每一行像素都有自己的曝光起始和结束时间。它们不是同时开始的,而是像排队一样,一行接一行地启动。

具体流程是这样的:

  1. 复位行:第一行像素先复位,清空电荷,开始曝光。
  2. 等待积分:第一行开始积累光子,此时第二行还在等待。
  3. 第二行启动:第一行曝光时间过去一部分后,第二行才开始复位并曝光。
  4. 逐行接力:以此类推,直到最后一行开始曝光。
  5. 读出开始:第一行曝光结束后,立即开始读出数据。此时后面的行可能还在曝光中。

这里有个关键点:曝光和读出是流水线作业。上一行在读,下一行在曝,再下一行在等。这种设计让卷帘快门在硬件上更简单,成本也更低。

核心概念:行间时间差

相邻两行开始曝光的时间间隔,我们叫它“行间时间差”(Row Delay)。这个值通常非常小,比如几微秒到几十微秒。但别小看这几微秒,累积到几百行时,就成了几毫秒的全局时间差。

3.2 行间时间差与读出延迟:两个关键参数

我个人习惯把这两个参数分开理解,它们决定了卷帘快门的“性格”。

参数 定义 典型值 影响
行间时间差 相邻两行开始曝光的间隔时间 5 µs – 30 µs 决定滚动效应的“速度”
读出延迟 从第一行开始曝光到最后一行读出完成的总时间 几毫秒到几十毫秒 决定帧率上限和畸变程度

举个例子。假设传感器有 1000 行,行间时间差是 10 µs。那么第一行和最后一行开始曝光的时间差就是:

总时间差 = (行数 - 1) × 行间时间差
         = 999 × 10 µs
         ≈ 10 ms

这 10 毫秒,就是滚动效应的“温床”。

避坑指南

我曾经在选型时忽略了这个时间差,结果在拍摄高速运动的物体时,画面出现了明显的倾斜和扭曲。后来我养成了一个习惯:只要项目涉及运动物体,第一件事就是查传感器的行间时间差和总读出时间。

3.3 滚动效应产生的根本原因

滚动效应,说白了就是“时间错位”造成的空间失真。为什么会有这种错位?因为卷帘快门本质上是在不同时间点采集了画面中不同空间位置的信息。

我画了一张图,帮你理解这个逻辑:

卷帘快门滚动效应产生原理 理想场景 物体静止 所有行同时曝光 画面无畸变 卷帘快门扫描 行1 曝光开始 t₀ 行2 曝光开始 t₀+Δt 行3 曝光开始 t₀+2Δt ... 行N 曝光开始 t₀+NΔt 每行曝光时间相同 但起始时间不同 滚动效应 运动物体 出现倾斜/扭曲 果冻效应 部分曝光/阴影 根本原因:不同行在不同时间点采集空间信息,导致时间差转化为空间畸变

滚动效应的三种典型表现:

  • 果冻效应(Jello Effect):物体快速左右移动时,画面像果冻一样晃动。我见过一个案例,用卷帘快门拍高速旋转的风扇,扇叶看起来是弯曲的。
  • 倾斜/扭曲(Skew):拍摄快速横向运动的物体,比如赛车,车身会倾斜。这是因为车在移动,而传感器还在逐行扫描。
  • 部分曝光(Partial Exposure):闪光灯或频闪光源下,画面会出现明暗条纹。嗯,这个在工业检测中特别坑。

注意:滚动效应不是“故障”

这是卷帘快门的固有特性,不是传感器坏了。选型时,你要判断你的应用场景是否能接受这种畸变。如果不行,就得考虑全局快门或机械快门。

3.4 为什么卷帘快门依然被广泛使用?

你可能会问:既然有这么多问题,为什么还要用卷帘快门?

原因很简单:成本和性能的平衡。

  • 高帧率:卷帘快门可以做到很高的帧率,因为曝光和读出是流水线作业。
  • 低噪声:逐行读出,每行的读出时间更充裕,信噪比通常更好。
  • 高分辨率:同样的芯片面积,卷帘快门可以塞进更多像素。
  • 低成本:制造工艺成熟,价格便宜。

我个人的经验是:静态场景或低速运动,卷帘快门完全够用。比如条码扫描、文档拍摄、静止物体的尺寸测量。但如果是高速运动、频闪光源、或者需要精确时间同步的场景,就得慎重了。

选型小技巧

如果你不确定卷帘快门是否适合你的项目,可以做一个简单测试:用手机(基本都是卷帘快门)拍摄一个快速摆动的笔。如果画面出现明显的弯曲,那你的工业相机大概率也会这样。提前验证,避免踩坑。