1. 夜景拍摄的痛点与多帧降噪的救赎

说实话,夜景拍摄一直是手机摄影的“照妖镜”。

我自己在项目里调试过好几代旗舰机的相机模组,每次拿到新样机,第一件事就是跑到天台上拍一张夜景。为什么?因为低光照场景能把传感器、算法、ISP的底裤全扒干净。你想想看,白天光线充足时,随便一个算法都能拍出不错的照片;但一到晚上,噪声、模糊、偏色全冒出来了。

低光照下的三大噪声来源

先聊聊噪声。很多人以为噪声就是“画面不干净”,其实噪声的源头各不相同。我习惯把它们分成三类:

噪声类型 产生原因 典型表现 我遇到过的坑
光子噪声 光子到达传感器的时间随机性 暗部颗粒感,服从泊松分布 有一次在极暗场景下,光子噪声直接淹没了人脸细节
读出噪声 模拟信号转数字时的电路误差 固定条纹或随机亮点 某款传感器在ISO 6400时读出噪声暴增,我被迫降级到ISO 3200
热噪声 传感器温度升高导致的暗电流 长时间曝光时出现“热像素” 夏天户外拍延时,热噪声让画面像下雪一样

这三种噪声在夜景中会叠加出现。光子噪声是物理极限,你没法消除;读出噪声靠电路设计;热噪声嘛,我建议你拍夜景时别把手机捂太热。

关键认知:光子噪声的信噪比 = √(信号强度)。信号越弱,噪声占比越大。这就是为什么夜景照片的暗部总是最脏的。

单帧长曝光的局限性

很多人第一反应是:夜景暗?那我延长曝光时间不就行了?

嗯,理论上可以。但实际拍过的人都知道,长曝光有三个致命问题:

  1. 手抖——手持超过1/10秒,99%的人都会抖。我测试过,即使有OIS光学防抖,1秒以上的手持拍摄成功率不到20%。
  2. 鬼影——画面中移动的物体(行人、车灯、树叶)会留下拖影。你想想看,拍一张夜景,结果路灯变成了光柱,行人变成了幽灵。
  3. 热噪声累积——曝光时间越长,传感器温度越高,热噪声越严重。我曾经用某款手机拍30秒长曝光,结果画面右下角出现了一大片紫色热噪点。

所以单帧长曝光这条路,基本走不通。除非你带三脚架、用遥控快门、选个没人的地方——但手机摄影的初衷不就是随手拍吗?

避坑指南:我曾经在项目里试图用单帧长曝光+强降噪算法来替代多帧方案。结果呢?降噪太强导致细节全糊,降噪太弱又压不住噪声。折腾了两周,最后还是老老实实做多帧。有些物理瓶颈,算法真的绕不过去。

多帧降噪的核心思想:以时间换信噪比

既然单帧不行,那就多拍几帧。说白了,多帧降噪的核心思想就是:用时间换信噪比。

你想想看,单帧曝光1秒,噪声很大;但如果我拍8帧,每帧1/8秒,然后把这8帧对齐、融合,会怎么样?

  • 信号是相关的,叠加后信号强度变成8倍
  • 噪声是随机的,叠加后噪声强度只变成√8 ≈ 2.83倍
  • 信噪比提升:8 / √8 = √8 ≈ 2.83倍

这就是多帧降噪的数学基础。每增加一帧,信噪比提升√N倍。拍4帧提升2倍,拍9帧提升3倍,拍16帧提升4倍。

我的经验:在实际项目中,我一般建议拍6-8帧。帧数太少,降噪效果不明显;帧数太多,对齐难度增加,而且用户等不了那么久。8帧是一个比较平衡的点,信噪比提升约2.8倍,处理时间控制在1秒以内。

当然,多帧降噪不是简单的叠加。你还需要解决帧间对齐(防止手抖导致的重影)、运动检测(处理移动物体)、权重融合(不同帧的清晰度不同)等问题。这些我会在后面的章节详细讲。

但核心思想就一句话:单帧做不到的事,多帧来做。

多帧降噪核心逻辑 单帧长曝光 手抖/鬼影/热噪 多帧短曝光 N帧叠加融合 信噪比提升 SNR ∝ √N 高质量夜景图像 说明: 单帧长曝光受限于手抖和热噪声,信噪比提升有限。多帧方案通过短曝光+多帧融合, 在抑制噪声的同时保留细节,信噪比随帧数平方根增长。 不同帧数下的信噪比提升 1帧 (1x) 4帧 (2x) 8帧 (2.8x) 16帧 (4x) 32帧 (5.7x) 帧数越多,信噪比越高,但对齐和融合的难度也越大

嗯,到这里你应该明白了:夜景拍摄的痛点,本质上是信噪比不足。单帧长曝光试图通过增加信号来解决问题,但引入了手抖和热噪声。多帧降噪则换了个思路——用多帧短曝光来规避手抖,用融合来提升信噪比。