T33/T32Pro-Camera 画面出现工频干扰水波纹怎么办?
Q:室内拍摄时,画面出现一条条横向明暗带,并且在视频中不断向上或向下滚动,是什么原因?
A:这通常是灯光闪烁频率与 Camera 曝光、帧率或逐行读出不同步造成的工频干扰,也常叫 Flicker、频闪条纹或水波纹。
问题现象
正常与异常对比
左侧为正常画面,右侧墙面上可看到宽幅横向明暗带。
静态异常示例
工频干扰水波纹
视频中的动态表现
工频水波纹动态滚动示例
动态示意中,横向明暗带会随帧向上或向下滚动。以上图片和 GIF 为基于实拍画面制作的现象演示。
为什么会产生水波纹?
1. 人眼看着常亮,灯光实际可能一直在闪
市电交流频率一般为:
• 中国及多数地区:50 Hz;
• 部分国家和地区:60 Hz。
很多 LED 灯、日光灯并不是完全稳定发光。灯具驱动如果整流和滤波不足,光强会随电网周期变化。
50 Hz 交流电经过全波整流后,灯光亮度常以约 100 Hz 波动;60 Hz 电网下则常见约 120 Hz 光强波动。人眼通常感觉不到,但 Camera 能记录下来。
2. Rolling Shutter 不是整帧同时曝光
多数 CMOS Sensor 使用 Rolling Shutter,也就是从上到下逐行曝光和读出:
text
第 1 行曝光时,灯光可能较亮
第 100 行曝光时,灯光开始变暗
第 300 行曝光时,灯光又变亮
……
同一帧内,不同行采集到的灯光亮度不一样,最后就会形成横向的明暗条带。
3. 为什么视频里的条纹会移动?
灯光闪烁周期、Sensor 行扫描时间和视频帧率通常不会完全同步。
每一帧开始曝光时,灯光所处的亮暗相位都会有一点变化,因此条带位置会逐帧变化,看起来就像水波一样向上或向下滚动。
滚动方向和速度会受以下因素影响:
• 帧率;
• 曝光时间;
• Sensor 行读出时间;
• 灯具闪烁频率;
• LED 驱动电源质量。
4. 为什么有时是宽条,有时是细条?
条带宽度不是固定的,主要与灯光闪烁频率和 Sensor 行扫描速度有关:
• 灯光变化较慢、行扫描较快:可能看到较宽的明暗带;
• 灯光 PWM 频率较高、行扫描较慢:可能出现较密的细条;
• 曝光时间较长:多个亮暗周期被平均,条带可能减轻;
• 曝光时间较短:更容易把瞬时亮度变化记录下来,条带更明显。
哪些场景容易出现?
• LED 灯、日光灯照明的室内场景;
• 低成本 LED 驱动或灯具老化;
• LED 广告屏、显示器、灯箱;
• 高帧率或短曝光拍摄;
• 夜间增益较高的监控场景;
• Camera 的 Anti-flicker 配置与当地电网频率不一致。
怎么判断是不是工频干扰?
现象 | 工频干扰的典型表现 |
条纹方向 | 通常为横向明暗带 |
视频表现 | 条带会上下滚动或闪烁 |
场景关系 | 在白墙、灰卡等均匀区域最明显 |
光源关系 | 更换灯具或关闭室内灯后明显变化 |
参数关系 | 调整曝光、帧率或 Anti-flicker 后会变化 |
常见优化方法
1. 设置正确的 Anti-flicker
根据当地电网频率选择:
• 50 Hz 地区:选择 50 Hz Anti-flicker;
• 60 Hz 地区:选择 60 Hz Anti-flicker。
不要把 50 Hz 环境设置成 60 Hz,否则条纹通常不能稳定抑制。
2. 限制曝光时间可消除水波纹
保证sensor曝光时间为灯光能量周期的整数倍,即
Exp time = TN T=(1/Fre)(1/2),能量周期为期波形周期的1/2,例如:50Hz环境下,T=10ms
Exp_time为时间单位,要换算为row_time单位。 row_time = hts/pclk 不同sensor,不同配置,计算得出的row_time可能不一致。 Exp_time=Nsteprow_time 此处的step便是能消除水波纹所需要的最小曝光步长。
API:IMP_ISP_Tuning_SetAntiFlickerAttr(IMPVI_NUM num, IMPISPAntiflickerAttr *pattr)
注意:ANTIFLICKER_NORMAL_MODE 最小曝光会限制到1个step,这样户外必然过曝严重,慎用;
建议使用ANTIFLICKER_AUTO_MODE 这样不会有过曝的风险,在高亮环境的水波纹可以用下面方法固定住水波纹。
3. 控制帧间隔可固定水波纹不滚动
上面提到,完全消除水波纹的话,需要至少1step的曝光时间。当环境亮度足够,且存在工频干扰,此时sensor不需要1step的曝光便能达到AE设定的目标亮度。在这种环境下,水波纹是无法消除的,但是可以固定住。
既然无法满足每行(每个pixel)在相同曝光时间段内能积累同样的光能,就无法避免的会出现成像画面中会出现纵向明暗变化的横条。但是,可以把每行的曝光起始点固定住,即让其在不同帧时的曝光起始点固定在能量波型的同一个相位上。这样便可以把水波纹固定住。满足 1/fps=T*N 即可。
结论
室内画面出现会滚动的横向宽幅明暗带,优先检查灯光频闪、Anti-flicker、曝光时间和帧率。
