3. 卷帘快门伪影(一):果冻效应(Jello Effect)的成因、表现与数学建模

各位工程师朋友,今天我们聊聊果冻效应。这个名字挺形象的——画面里的物体像果冻一样扭来扭去。我第一次在示波器上看到这个现象时,还以为是传感器坏了。后来才发现,这是卷帘快门的“胎里疾”。

3.1 果冻效应的本质:逐行曝光的“时间差”

说白了,果冻效应的根子就一句话:卷帘快门不是同时曝光所有像素的。

CCD 用的是全局快门,咔嚓一下,所有像素同时开始、同时结束。CMOS 卷帘快门呢?它像扫描仪一样,一行一行地曝光。第一行开始曝光时,最后一行还没动。等第一行读完了,最后一行才开始。

这个时间差,就是果冻效应的源头。

核心矛盾: 物体在运动,而传感器在“逐行扫描”。两者叠加,画面就扭曲了。

3.2 果冻效应的典型表现

我在项目中遇到过几种典型的果冻效应场景,列出来大家对照一下:

场景 表现 原因
快速横移的物体 物体被“斜切”,直线变成斜线 物体水平运动,逐行曝光导致位置偏移
垂直运动的物体 物体被拉长或压扁 物体运动方向与扫描方向一致或相反
手持拍摄抖动 画面整体像果冻一样晃动 相机抖动频率与扫描频率耦合
拍摄旋转的螺旋桨/风扇 桨叶弯曲、断裂感 高速旋转,逐行曝光严重扭曲

嗯,这里要注意:果冻效应不是“坏像素”,而是时序问题。你换再好的镜头也解决不了。

3.3 数学建模:量化“扭曲”

光说现象不够,咱们得用数学把这个问题说清楚。我个人习惯用一维运动模型来近似。

假设:

  • 传感器有 \( N \) 行像素
  • 每行曝光时间为 \( T_{exp} \)
  • 行与行之间的启动时间间隔为 \( T_{row} \)(通常 \( T_{row} \ll T_{exp} \))
  • 物体在水平方向以速度 \( v \) 运动

那么,第 \( i \) 行相对于第 0 行的启动延迟为:

Δt_i = i × T_row

在这段时间内,物体水平移动了:

Δx_i = v × Δt_i = v × i × T_row

这就是“斜切”的数学本质。原本垂直的物体边缘,在图像上会变成一条斜线,斜率为:

斜率 = Δx_i / (i × pixel_pitch) = (v × T_row) / pixel_pitch

实用估算: 如果 \( T_{row} = 10\mu s \),物体运动速度 \( v = 1 \) 像素/毫秒,那么每行偏移 0.01 像素。1000 行的传感器,顶部和底部偏移 10 像素。这个偏移量肉眼可见。

3.4 影响果冻效应严重程度的参数

从上面的公式可以看出,有几个关键参数:

  • 行间隔时间 \( T_{row} \):这是最核心的参数。\( T_{row} \) 越小,果冻效应越轻。高速 CMOS 传感器可以做到 \( T_{row} < 5\mu s \)。
  • 传感器行数 \( N \):行数越多,顶部和底部的累积时间差越大。4K 传感器比 1080p 更容易出现果冻效应。
  • 物体运动速度 \( v \):这个我们控制不了,但可以预测。
  • 曝光时间 \( T_{exp} \):曝光时间本身不直接影响偏移量,但会影响运动模糊,两者叠加会让画面更难看。

避坑指南: 我曾经在一个项目中,为了降低噪声把曝光时间拉长到 30ms,结果果冻效应严重到无法使用。后来才意识到,曝光时间虽然不直接导致偏移,但长曝光会让运动模糊和果冻效应叠加,产生“拖尾+扭曲”的双重灾难。

3.5 果冻效应与运动模糊的区别

很多新手会把这两个搞混。我画个对比:

特性 果冻效应 运动模糊
成因 逐行曝光的时间差 单行曝光期间物体的移动
表现 几何扭曲(斜切、拉伸) 边缘模糊、拖影
方向性 与扫描方向相关 与运动方向一致
消除方法 全局快门、机械快门、算法校正 缩短曝光时间、补光

说白了,运动模糊是“一个像素在一段时间内看到了多个位置”,果冻效应是“不同行的像素看到了不同时刻的位置”。两者经常同时出现,但处理思路完全不同。

3.6 果冻效应的视觉模型:SVG 示意图

下面我用一张图来展示果冻效应的形成过程。这张图模拟了一个垂直边缘的物体从左向右运动时,卷帘快门如何把它“拍弯”。

果冻效应形成过程示意图 理想物体 垂直边缘 理想位置 逐行扫描 已扫描 当前行 未扫描 时间 t 实际成像 扭曲 理想位置 偏移 Δx 说明: 物体从左向右运动。顶部行先曝光,此时物体在左侧;底部行后曝光,物体已移动到右侧。 结果:原本垂直的边缘被“斜切”,形成果冻效应。

3.7 果冻效应的量化指标

在实际工程中,我们需要一个指标来评估果冻效应的严重程度。我个人常用的是“行偏移比”:

行偏移比 = (顶部行与底部行的最大偏移量) / (图像高度)

单位:像素/行 或 %

举个例子:

  • 传感器:1920×1080,\( T_{row} = 10\mu s \)
  • 物体运动速度:1000 像素/秒(约 0.5 度/秒的视场角)
  • 总时间差:1080 × 10μs = 10.8ms
  • 总偏移量:1000 像素/秒 × 0.0108 秒 = 10.8 像素
  • 行偏移比:10.8 / 1080 = 1%

工程经验: 行偏移比 < 0.5% 时,人眼基本察觉不到。1%~2% 时,仔细观察能发现。超过 5%,画面已经明显扭曲,必须处理。

3.8 果冻效应与卷帘快门其他伪影的关系

果冻效应不是孤立存在的。它经常和下面几个问题“组团出现”:

  • 部分曝光(Partial Exposure):当闪光灯或脉冲光源与扫描不同步时,画面会出现明暗分界。果冻效应让这个分界变成斜线。
  • 锯齿边缘(Aliasing):快速运动的细线条会被卷帘快门切成锯齿状。果冻效应让锯齿更明显。
  • 闪烁(Flicker):LED 光源的频闪与扫描频率相互作用,产生明暗条纹。果冻效应让条纹倾斜。

嗯,这些伪影的根源都是同一个——逐行曝光的时间差。理解了果冻效应,其他伪影的理解就水到渠成了。

一个小技巧: 在实验室里快速判断果冻效应严重程度,可以用一个旋转的圆盘,上面画一条径向线。拍下来看那条线弯了多少。这个方法我在项目验收时经常用,简单粗暴有效。