一、夜景模式概述:高通平台夜景模式架构、多帧合成原理、与普通模式的差异
各位同学好,我是老高。在高通平台做相机开发这么多年,我接触最多的功能之一就是夜景模式。说实话,刚入行那会儿,我觉得夜景不就是拉高ISO、延长曝光时间嘛。直到第一次看到自己调的夜景样张——满屏噪点、鬼影、偏色,我才意识到,这事儿没那么简单。
这一章,我们先从整体上把夜景模式讲清楚。我会结合我在高通平台上的实际经验,带你看看夜景模式的架构长什么样、多帧合成到底怎么运作、以及它跟普通拍照模式到底差在哪。
1.1 高通平台夜景模式架构
高通平台的夜景模式,说白了是一个多帧采集 + 多帧处理的流水线。它不是单帧硬扛,而是靠多帧信息叠加来换取信噪比。
我习惯把整个架构分成三层:
- 应用层(APP层):用户点击快门,触发夜景模式请求。这里会传递场景信息,比如亮度、运动检测结果。
- 中间层(CamX/CHI):高通的核心相机框架。它负责调度多帧请求、管理buffer队列、触发ISP pipeline。我个人觉得,CHI的灵活性是夜景模式能做好关键。
- 底层(ISP + 硬件):真正的图像采集和初步处理。包括Sensor曝光、RAW域处理、MIPI传输等。
嗯,这里要注意:高通从SM8250(骁龙865)开始,夜景模式基本都跑在CHI架构上。如果你还在用旧平台,那架构会有些不同。
核心要点:高通夜景模式 = 多帧采集 + 多帧对齐 + 多帧合成 + 后处理。每一层都有专门的硬件或软件模块负责。
1.2 多帧合成原理
多帧合成,说白了就是用多张低质量图拼一张高质量图。你想想看,单帧在暗光下信噪比低,但如果你拍 6 帧、8 帧甚至 12 帧,把它们的信号叠加起来,噪声就会相互抵消,细节就会保留下来。
高通平台的多帧合成,我把它拆成三个核心步骤:
- 多帧采集:Sensor 连续输出多帧 RAW 数据。通常包含 1~2 帧长曝光(用于暗部细节)和 4~10 帧短曝光(用于高光保留和运动补偿)。
- 多帧对齐(ME/MC):因为手持拍摄会有微小抖动,必须做运动估计(Motion Estimation)和运动补偿(Motion Compensation)。我遇到过最头疼的情况是夜景下的人像——人脸稍微一动,对齐就崩了,合成出来全是鬼影。
- 多帧合成(MFSR):对齐后的帧进行像素级融合。高通用的是 Multi-Frame Super Resolution 算法,说白了就是加权平均 + 细节增强。权重怎么分配?信噪比高的帧权重大,运动区域权重降低。
我的经验:多帧对齐是夜景模式的瓶颈。我曾经在一个项目里,夜景模式合成后边缘全是重影,查了三天才发现是 ME 模块的搜索窗口设得太小,导致大位移没对齐。把搜索范围从 32x32 改成 64x64 后,问题就解决了。
这里我放一个简化的多帧合成流程,方便你理解:
1.3 夜景模式与普通模式的差异
普通模式拍夜景,说白了就是硬扛。ISO 拉到 3200、6400,快门速度降到 1/10s 甚至更低。结果呢?噪点满天飞,细节全糊掉。
夜景模式就不一样了。它用多帧合成来换取信噪比。我整理了一个对比表,你一看就明白:
| 对比维度 | 普通模式 | 夜景模式 |
|---|---|---|
| 帧数 | 单帧 | 多帧(6~12 帧) |
| 曝光策略 | 单次曝光,ISO 优先 | 多帧混合曝光(长帧 + 短帧) |
| ISO 范围 | 通常 800~6400 | 可低至 100~800(通过多帧合成降噪) |
| 快门速度 | 1/30s ~ 1/2s | 单帧 1/15s ~ 1s,总时长 2~6s |
| 噪声水平 | 高(单帧 SNR 低) | 低(多帧 SNR 提升 3~6dB) |
| 动态范围 | 有限(约 60~70dB) | 高(约 80~100dB) |
| 运动鬼影 | 无(单帧) | 有风险(需对齐算法处理) |
| 处理时间 | 实时(< 100ms) | 需等待(1~5s 后处理) |
注意:夜景模式不是万能的。如果场景中有快速运动物体(比如行人、车辆),多帧对齐很容易失败,合成结果反而比普通模式更差。我曾经在一个项目中,夜景模式拍夜景人像,人脸全是重影,最后不得不加一个运动检测开关——检测到运动就自动切回普通模式。
另外,还有一个容易被忽略的差异:色彩处理。普通模式在暗光下 AWB(自动白平衡)容易偏色,因为信噪比太低,色温估计不准。夜景模式因为多帧合成后信噪比高,AWB 会更稳定。我调过的一个项目,普通模式在 10 lux 下白平衡偏紫,夜景模式就正常多了。
1.4 小结
这一章我们聊了高通平台夜景模式的整体架构、多帧合成的核心原理、以及它跟普通模式的差异。说白了,夜景模式就是用时间换质量——多花几秒钟采集和处理,换来更干净、更亮、动态范围更大的照片。