第二章 双摄融合基础理论
各位同学,今天我们来啃双摄融合最核心的理论基础。说实话,这部分内容在面试时经常被问到,项目里更是天天打交道。我个人习惯把双摄融合拆成三个层面来理解:立体视觉原理、视差与深度估计,以及常见的融合算法流派。咱们一个一个过。
2.1 双目立体视觉原理
人眼为什么能感知深度?说白了,是因为两只眼睛看到的画面有细微差别。这个差别,就是视差。手机上的双摄模组,就是在模仿人眼的工作方式。
我在项目中遇到过不少刚入行的同学,总觉得双摄就是两个摄像头随便一拍,然后合成一张图。其实远没那么简单。双摄系统要解决的核心问题是:如何从两幅二维图像中,恢复出场景的三维信息。
先看一个基本模型:
理想双目系统模型
- 左右相机光心距离为 基线长度 B
- 两个相机光轴严格平行
- 成像平面共面,且行对齐
- 焦距 f 相同
在这个理想模型下,空间点 P 在左右图像上的成像位置,只在水平方向有偏移。这个偏移量,就是视差 d。
嗯,这里要注意:实际手机上的双摄,很难做到严格的行对齐。所以我们在算法移植前,必须先做立体校正。我见过有人跳过这一步直接算视差,结果出来的深度图全是噪点。
2.2 视差计算与深度估计
视差计算的核心,就是立体匹配。说白了,就是在右图中找到左图每个像素的对应点。这个过程,我把它分成三步:
- 代价计算:计算左右图像块之间的相似度
- 代价聚合:在视差空间中进行平滑
- 视差优化:亚像素插值、左右一致性检查
常用的匹配代价,我列个表:
| 方法 | 原理 | 计算量 | 精度 |
|---|---|---|---|
| SAD | 差之和 | 低 | 低 |
| SSD | 平方差之和 | 低 | 低 |
| NCC | 归一化互相关 | 中 | 中 |
| Census | 局部二值模式 | 低 | 高 |
| CNN-based | 深度学习特征 | 高 | 很高 |
我在高通平台上做移植时,最常用的是 Census 变换。为什么?因为它对光照变化不敏感,而且计算量适中,适合在 DSP 上跑。我曾经试过直接用 SAD,结果在暗光场景下匹配得一塌糊涂。
避坑指南
我曾经在某个项目里,为了追求精度用了 CNN-based 的匹配方法。结果模型太大,DSP 跑不动,NPU 又没分配资源。最后只能降级到 Census + 亚像素插值。所以选方案时,一定要先评估硬件资源。
深度估计的精度,直接决定了后续融合效果。我一般用这个公式来评估:
深度误差 ΔZ ≈ (Z² / (B × f)) × Δd
其中:
Z - 目标深度
B - 基线长度
f - 焦距
Δd - 视差误差
你看,深度误差和距离的平方成正比。所以远距离物体的深度估计,天生就不准。这也是为什么双摄融合在近景效果明显,远景基本靠单摄的原因。
2.3 双摄融合的常见算法流派
双摄融合,不是简单地把两张图叠在一起。根据融合的目标不同,我把它分成三个流派:
2.3.1 AWB 融合
AWB 融合,说白了就是白平衡融合。两个摄像头的光学特性不同,拍出来的色温可能不一样。比如主摄偏暖,副摄偏冷。融合时如果不做 AWB 对齐,画面就会出现色块。
我常用的做法是:
- 先分别计算两路图像的 R/G、B/G 比值
- 以主摄为参考,调整副摄的白平衡增益
- 在融合区域做渐变过渡
注意
AWB 融合不能简单地在 YUV 域做。我见过有人直接在 Y 通道上做融合,结果颜色完全不对。一定要在 RGB 域或者 RAW 域做白平衡对齐。
2.3.2 深度融合
深度融合,是目前手机厂商的主战场。它的核心思想是:利用深度信息,指导图像融合。
具体来说:
- 通过视差计算得到深度图
- 根据深度图生成融合权重图
- 在权重图的指导下,融合两路图像
深度融合的关键在于权重图的生成。我一般用这个策略:
| 深度范围 | 主摄权重 | 副摄权重 | 融合策略 |
|---|---|---|---|
| 近景 (0-1m) | 0.3 | 0.7 | 副摄为主,保留细节 |
| 中景 (1-3m) | 0.5 | 0.5 | 均衡融合 |
| 远景 (>3m) | 0.8 | 0.2 | 主摄为主,保证亮度 |
你想想看,为什么近景要给副摄更高的权重?因为副摄通常有更长的焦距,近景细节更丰富。而远景视差太小,深度估计不准,不如直接用主摄。
2.3.3 多帧融合
多帧融合,严格来说不算双摄专属,但在夜景模式下经常和双摄配合使用。它的思路是:连续拍摄多帧,通过对齐和叠加来提升信噪比。
我在高通平台上做夜景模式时,通常的流程是:
1. 双摄同时曝光,各拍 3-5 帧
2. 对每帧做立体校正
3. 计算深度图
4. 对主摄的多帧做对齐和叠加
5. 用深度图指导双摄融合
6. 输出最终图像
我的经验
多帧融合时,帧间对齐的精度直接影响最终效果。我建议用 MCTF(运动补偿时域滤波) 来做对齐,比简单的全局运动估计要准得多。高通平台的 HVX 向量扩展对 MCTF 有很好的加速效果。
2.4 算法流派对比
最后,我把这三个流派做个对比,方便你根据项目需求选型:
| 流派 | 核心依赖 | 计算量 | 效果提升 | 适用场景 |
|---|---|---|---|---|
| AWB 融合 | 颜色统计 | 低 | 色彩一致性 | 多摄切换 |
| 深度融合 | 深度图 | 中 | 细节+信噪比 | 人像、变焦 |
| 多帧融合 | 帧间对齐 | 高 | 信噪比+动态范围 | 夜景、HDR |
说实话,现在的旗舰机都是把这三种流派组合着用。比如夜景模式下,先做多帧融合提升信噪比,再做深度融合保留细节,最后用 AWB 融合保证色彩一致性。嗯,这个组合拳打好了,效果确实惊艳。