1. 夜景摄影的挑战:低光照、高ISO噪声、动态范围不足、运动模糊

各位同学好,我是老张。做计算摄影这些年,我踩过最多的坑,就是夜景拍摄。

你想想看,白天光线充足,随便一台手机都能拍出不错的照片。可一到晚上,问题全来了。噪点、模糊、暗部死黑、高光过曝……说白了,夜景就是手机摄影的“照妖镜”。

这一章,我们来拆解夜景摄影的四大核心挑战。只有把问题看清楚,后面讲多帧融合和去噪算法时,你才知道每一行代码在解决什么。

1.1 低光照:信号弱,信噪比天然低

先问一个问题:一张照片是怎么形成的?

光线通过镜头,打到传感器上,每个像素点收集光子,转换成电信号。光线越强,收集的光子越多,信号越强。

到了晚上,环境光可能只有白天的千分之一甚至万分之一。传感器能收到的光子数量急剧下降。信号弱了,但传感器本身的电路噪声、读出噪声可不会减少。结果就是——信噪比(SNR)直线下跌。

核心结论:低光照的本质问题是信号太弱,而不是噪声变大了。噪声水平基本固定,信号小了,噪声占比自然就高了。

我记得刚入行时,有个项目在暗光下拍出来的画面全是“雪花”。我当时以为是传感器坏了,折腾了两天。后来师傅一句话点醒我:“你先把曝光时间拉长三倍试试。”果然,信号上来了,噪点就压下去了。

但曝光时间不能无限拉长,这就引出了下一个问题。

1.2 高ISO噪声:增益放大了信号,也放大了噪声

既然光线不够,那就把信号放大呗。ISO就是这个放大器。

ISO每提高一档,信号被放大的倍数就翻一倍。听起来不错,对吧?但问题是,噪声也被同步放大了。

ISO值 信号放大倍数 噪声放大倍数 典型场景
100 1x 1x 白天户外
400 4x 4x 室内灯光
1600 16x 16x 黄昏/暗室
6400 64x 64x 夜景/极暗

看到没?ISO 6400时,信号和噪声都被放大了64倍。但噪声是随机的、杂乱无章的,放大后看起来就是满屏的颗粒和彩色斑点。

我的经验:在实际项目中,ISO超过3200后,单帧画面的可用性就很差了。降噪算法能救回来一部分,但细节损失不可避免。所以夜景模式的核心思路之一,就是尽量用低ISO多拍几张,而不是单帧拉高ISO。

1.3 动态范围不足:亮部与暗部不可兼得

动态范围,简单说就是传感器能同时记录的最亮和最暗之间的跨度。

人眼的动态范围大约在20档以上。而手机传感器的动态范围,好一点的也就10-12档。到了夜景,这个差距更明显。

举个例子:你拍一个城市夜景,有明亮的霓虹灯,也有黑暗的巷子。传感器如果为了保留暗部细节而拉长曝光,霓虹灯区域就会过曝,变成一片死白。反过来,如果为了保住高光而缩短曝光,暗部就全黑了,什么细节都没有。

为什么会这样?因为传感器的每个像素点只能记录一定范围内的光强。超过这个范围,要么饱和(全白),要么截止(全黑)。

注意:动态范围不足导致的“死白”和“死黑”,是后期算法很难修复的。一旦像素值饱和到255(8位图)或截止到0,信息就永久丢失了。所以夜景模式必须通过多帧融合来扩展动态范围。

我曾经做过一个测试:用单帧拍摄夜景,暗部区域的信噪比只有5dB左右,而高光区域的信噪比能达到40dB以上。这种巨大的差异,单帧算法根本没法同时兼顾。

1.4 运动模糊:长曝光与手持拍摄的矛盾

低光照下,为了收集足够的光子,最直接的办法就是延长曝光时间。

但问题来了——手会抖。

手持拍摄时,人手的自然抖动频率大约在1-10Hz。曝光时间超过1/30秒,画面就开始出现肉眼可见的模糊。到了夜景模式,曝光时间动辄1/4秒甚至1秒,不模糊才怪。

运动模糊有两种:

  • 全局模糊:整个画面都糊了。通常是手持抖动造成的。
  • 局部模糊:只有运动物体(行人、车辆)糊了。背景是清晰的。

这两种模糊的处理方式完全不同。全局模糊可以通过OIS(光学防抖)和EIS(电子防抖)来缓解。但局部模糊,尤其是夜景中快速移动的物体,单帧几乎无解。

关键认知:夜景模式的多帧融合,本质上是在“时间分辨率”和“空间分辨率”之间做权衡。多帧可以降低噪声、扩展动态范围,但代价是引入了帧间配准和运动补偿的难题。

1.5 四大挑战的关系图谱

这四个挑战不是孤立的。它们互相影响,甚至互相矛盾。我画了一张图,帮你理清它们之间的关系。

夜景摄影四大挑战关系图谱 夜景摄影 低光照 信号弱·信噪比低 高ISO噪声 增益放大噪声 动态范围不足 亮暗不可兼得 运动模糊 长曝光·手抖 补偿 恶化 长曝光 增益放大 核心矛盾 低光照 → 需要长曝光/高ISO → 引入噪声和模糊 多帧融合的核心:用多张短曝光低ISO帧,合成一张高质量夜景

从这张图可以看得很清楚:四个挑战形成了一个恶性循环。低光照迫使你拉长曝光或提高ISO,但长曝光带来运动模糊,高ISO带来噪声。而动态范围不足,又让亮部和暗部无法同时保留。

单帧拍摄,无论如何都跳不出这个循环。唯一的出路,就是多帧融合。

1.6 小结:问题清单

这一章的内容,我帮你整理成了一份清单。后面讲到算法时,你可以随时回来对照。

挑战 本质问题 对画质的影响 多帧融合的解决思路
低光照 光子数量不足 信噪比低,画面暗 多帧叠加增强信号
高ISO噪声 增益放大噪声 颗粒感、彩色噪点 低ISO多帧,避免高增益
动态范围不足 传感器宽容度有限 死白/死黑 不同曝光帧融合
运动模糊 曝光期间位移 画面模糊、拖影 短曝光帧+配准对齐

个人建议:如果你刚开始接触夜景算法,不要急着调参数。先把这四个挑战的物理成因搞清楚。我在项目中见过太多人,一上来就调降噪强度,结果细节全没了。方向错了,努力白费。