第一章 暗光场景概述

什么是暗光场景

暗光场景,说白了就是环境亮度低到让传感器「抓瞎」的情况。我个人习惯把照度低于 10 lux 的场景都归为暗光——你想想看,月圆之夜的地面照度也就 0.1-0.3 lux,路灯下的街道大概 5-10 lux。在这种条件下,普通相机拍出来的东西,基本就是一团黑加上满屏噪点。

但问题来了:什么叫「暗」?这其实是个相对概念。我在项目中遇到过客户拿着手机在烛光下拍照,说「这不算暗吧?」——嗯,对于人眼来说确实还能看清,但对于 CMOS 传感器,这已经是极限挑战了。暗光场景的核心特征就是:信噪比极低,动态范围被压缩,色彩信息严重衰减

暗光场景的典型照度范围:

场景类型 照度范围 (lux) 典型应用
月光环境 0.01 - 0.3 安防监控、星空摄影
黄昏/黎明 1 - 10 车载夜视、手机夜景
室内弱光 5 - 50 室内监控、会议摄像头
烛光/篝火 0.5 - 5 特殊场景拍摄

暗光场景的三大挑战

1. 噪声——最头疼的问题

暗光下噪声为什么严重?因为信号弱啊。你想想,光子数量本来就少,传感器还得把模拟信号放大几十倍甚至上百倍。放大信号的同时,噪声也被放大了。这就是所谓的「噪声放大器」效应。

我记得有一次调试安防摄像头的夜视模式,画面暗部全是彩色噪点,像下雪一样。客户说「这画面没法看」。我花了整整两周调降噪参数,最后发现是模拟增益和数字增益的分配出了问题——模拟增益给太多,噪声就炸了;数字增益给太多,细节就糊了。这个平衡点,就是 ISP 调参的核心。

避坑指南:我曾经在车载夜视项目里,为了追求低噪声把降噪强度拉满,结果运动物体出现了严重的拖影。后来才明白——降噪和运动模糊是一对天生的冤家,你压了噪声,就得接受细节损失。

暗光噪声主要有三类:

  • 光子散粒噪声——物理极限,没法完全消除,只能靠多帧融合来平滑
  • 读出噪声——传感器电路带来的,跟芯片工艺强相关
  • 热噪声——温度越高越严重,所以夜视相机通常需要散热设计

2. 细节丢失——暗部一片死黑

暗光下细节丢失是必然的。为什么?因为传感器的动态范围有限。亮的地方可能还能看清,暗的地方直接就「沉底」了——像素值接近 0,啥信息都没有。

我做过一个手机夜景项目,用户拍了一张星空照片,结果地面建筑全黑,星星也看不清。后来我调整了 tone mapping 曲线,把暗部提亮了 3 档,但代价是天空部分过曝了。这就是典型的动态范围不足问题。

解决思路其实就两条:

  1. 多帧 HDR——拍多张不同曝光的照片合成,但暗光下长曝光容易手抖
  2. 局部 tone mapping——只提亮暗部,保持亮部不变,但容易产生光晕

注意:暗部提亮不是万能的。如果原始数据里暗部已经被噪声淹没,强行提亮只会得到「彩色噪点图」。我见过不少新手把暗部提亮 5-6 档,结果画面惨不忍睹。

3. 偏色——颜色不准,看着就假

暗光下的偏色问题,说白了就是颜色信息不够。人眼在暗光下对颜色的感知也会下降,但相机更惨——它没有大脑帮你「脑补」颜色。

偏色的根源在于:暗光下 R/G/B 通道的信噪比不一致。通常蓝色通道最弱,红色通道次之,绿色通道最强。所以暗光照片经常偏绿或偏紫。我调试过一个车载夜视系统,晚上拍出来的路面是紫色的,后来发现是 AWB(自动白平衡)算法在低照度下完全失效了。

解决偏色,我个人的经验是:

  • 先保证 AWB 的稳定性——暗光下不要用复杂的色温估计,用简单的灰度世界法反而更稳
  • 限制色温范围——暗光下把色温锁定在 3000K-5000K 之间,别让算法乱跳
  • 饱和度不要拉太高——暗光下颜色本来就弱,强行拉饱和度只会放大噪声

暗光场景的典型应用

安防监控——24小时不能掉链子

安防监控是暗光 ISP 最大的应用场景之一。你想想,摄像头得 24 小时工作,晚上要是拍不清,那还监控个啥?我做过一个小区监控项目,要求 0.01 lux 下还能识别车牌。当时用了大靶面传感器加红外补光,ISP 里把降噪和锐化做了精细的亮度自适应——暗部降噪拉满,亮部锐度保持。

安防监控的核心指标:

  • 最低照度——能看清的最低亮度,通常要求 0.01-0.1 lux
  • 信噪比——暗部 SNR 至少要 30dB 以上
  • 运动拖影——监控场景经常有运动目标,降噪不能太狠

手机夜景——用户只看「好不好看」

手机夜景是消费级市场的主战场。用户不会管你用了什么算法,他们只看「亮不亮、清不清、颜色好不好看」。我参与过一款旗舰机的夜景模式,核心思路就是多帧合成 + AI 降噪。拍 6-8 张短曝光照片,对齐后融合,再用神经网络做降噪和细节增强。

手机夜景的难点在于:

  • 手持拍摄——不能上三脚架,多帧对齐必须稳
  • 处理速度——用户按完快门就想看结果,不能等太久
  • 功耗控制——ISP 跑太猛,手机发烫,用户会骂人

车载夜视——安全第一,不能出错

车载夜视是近几年增长最快的应用。自动驾驶的感知系统在夜间全靠摄像头和雷达。我调试过一套车载夜视系统,要求 0.1 lux 下能检测到 100 米外的行人。这个场景下,延迟和可靠性比画质更重要——你画面再好看,如果延迟 100ms,车都撞上了。

车载夜视的特殊要求:

  • 低延迟——ISP 处理延迟必须控制在 30ms 以内
  • 高动态范围——车灯和暗部同时存在,不能过曝也不能死黑
  • 抗闪烁——LED 车灯和交通信号灯有频闪,ISP 得能处理

总结一下:暗光场景的 ISP 调试,本质上是在噪声、细节、颜色、动态范围之间找平衡。没有完美的参数,只有最适合场景的妥协。我做了十年 ISP,最大的体会就是——先理解场景,再动手调参。上来就调参数,大概率会翻车。

暗光场景ISP调试知识体系 暗光场景 < 10 lux 三大挑战 1 噪声(SNR下降) 2 细节丢失(动态范围) 3 偏色(AWB失效) 典型应用 1 安防监控 2 手机夜景 3 车载夜视 核心思路:噪声 · 细节 · 颜色 · 动态范围 四者平衡

个人经验分享:我刚开始做暗光调试时,总想把所有指标都做到最好。结果噪声压下去了,细节没了;细节拉回来了,颜色又偏了。后来才明白——ISP 调试就是一门妥协的艺术。每个场景都有自己的优先级,安防要看清目标,手机要好看,车载要安全。搞清楚优先级,参数自然就好调了。

专注资料整理