目录

核心条件:
- 全彩模式 :环境暗(AE 参数大)→ 开启补光灯 → 开启后AE 参数依然偏大
- 白天模式:环境亮 → 关闭补光灯 → AE 参数小
- 核心难点:全彩模式开灯后 AE 不会降回白天水平,不能单纯用 AE 绝对值判断模式
一、先明确核心定义
1. AE 参数是什么?
安防常用:曝光时间 (shutter) * 增益 ( gain ) 统一用一个值判断:AE 评分 = 曝光时间 +*增益权重(权重自己调,比如增益 ×2)
2. 两个关键阈值
- TH_DARK:环境暗阈值(AE > 此值 = 环境暗)
- TH_BRIGHT:环境亮阈值(AE < 此值 = 环境亮)
- 规则:TH_DARK > TH_BRIGHT(用迟滞回差,防止频繁切)
3. 模式定义
- 白天模式:补光灯关闭,AE 由环境光自然调节
- 全彩模式:满足暗条件 → 开补光灯,AE 保持大参数(硬件特性)
二、最终切换逻辑
核心原则
- 白天 → 全彩 :只看关灯状态下的 AE
- 全彩 → 白天 :只看开灯状态下的 AE
- 加入防抖延时,杜绝频闪 / 反复切换
完整逻辑流程图
1. 白天模式 → 全彩模式
当前状态:白天模式(补光灯 OFF)
持续判断:
如果 【AE > TH_DARK】 并且 【持续 N 帧】
则:
切换为 全彩模式
打开补光灯
2. 全彩模式 → 白天模式
当前状态:全彩模式(补光灯 ON)
持续判断:
如果 【AE < TH_BRIGHT】 并且 【持续 M 帧】
则:
切换为 白天模式
关闭补光灯
三、为什么这套逻辑最适配
-
白天切全彩 关灯测 AE → 真的暗 → 才切 不会误触发
-
全彩切白天 开灯测 AE → 虽然 AE 比白天大,但环境足够亮时,开灯后的 AE 会明显降低 只要低于亮阈值,就说明环境已经亮到不需要补光
四、参数推荐值
| 参数 | 推荐值 | 说明 |
|---|---|---|
| TH_DARK(暗阈值) | 大 | 环境很暗才触发 |
| TH_BRIGHT(亮阈值) | 中等 | 开灯后 AE 明显下降即满足 |
| 迟滞回差 | TH_DARK - TH_BRIGHT ≥ 30% | 防止来回跳变 |
| 防抖帧数 N | 10~30 帧 | 白天切全彩,稍灵敏 |
| 防抖帧数 M | 30~50 帧 | 全彩切白天,更保守 |
举例: TH_DARK = 100 TH_BRIGHT = 60 回差 40,非常稳定
五、高级防误触发策略
1. 梯度切模
白天 → 预备全彩(不开灯)→ 确认暗 → 全开彩
2. 强光抑制
如果画面有强光点(车灯、路灯),但整体环境暗 → 不切白天 用图像整体亮度均值辅助判断,不要只看 AE。其实,也可以根据分块的图像亮度信息进行判断。当分块亮度小于一定阈值切满足EV条件才切,否则不切,避免频繁切换的操作。
3. 时间辅助
配合当地时间
- 白天 6:00~18:00:优先白天模式
- 夜晚 18:00~6:00:优先全彩模式 纯光控也可以,时间只是辅助更稳。
六、极简伪代码
cpp
// 状态机
typedef enum {
MODE_DAY,
MODE_FULLCOLOR
} WorkMode;
WorkMode current_mode = MODE_DAY;
int dark_cnt = 0;
int bright_cnt = 0;
#define TH_DARK 100
#define TH_BRIGHT 60
#define N_FRAME 20
#define M_FRAME 40
void ae_check_task(int ae_value)
{
if (current_mode == MODE_DAY) {
// 白天 → 全彩:关灯测AE
if (ae_value > TH_DARK) {
dark_cnt++;
if (dark_cnt >= N_FRAME) {
// 切换
current_mode = MODE_FULLCOLOR;
open_light();
dark_cnt = 0;
}
} else {
dark_cnt = 0;
}
}
else if (current_mode == MODE_FULLCOLOR) {
// 全彩 → 白天:开灯测AE
if (ae_value < TH_BRIGHT) {
bright_cnt++;
if (bright_cnt >= M_FRAME) {
// 切换
current_mode = MODE_DAY;
close_light();
bright_cnt = 0;
}
} else {
bright_cnt = 0;
}
}
}
七、最终总结
- 白天切全彩:关灯测 AE,大于暗阈值 → 切
- 全彩切白天:开灯测 AE,小于亮阈值 → 切
- 迟滞 + 防抖帧数:杜绝反复切换
全彩模式开灯后 AE 依然偏大 → 不影响判断,因为我们用开灯后的相对 AE做切回条件。