第二章 双摄融合基础理论

各位同学,今天我们来啃双摄融合最核心的理论基础。说实话,这部分内容在面试时经常被问到,项目里更是天天打交道。我个人习惯把双摄融合拆成三个层面来理解:立体视觉原理、视差与深度估计,以及常见的融合算法流派。咱们一个一个过。

2.1 双目立体视觉原理

人眼为什么能感知深度?说白了,是因为两只眼睛看到的画面有细微差别。这个差别,就是视差。手机上的双摄模组,就是在模仿人眼的工作方式。

我在项目中遇到过不少刚入行的同学,总觉得双摄就是两个摄像头随便一拍,然后合成一张图。其实远没那么简单。双摄系统要解决的核心问题是:如何从两幅二维图像中,恢复出场景的三维信息。

先看一个基本模型:

理想双目系统模型

  • 左右相机光心距离为 基线长度 B
  • 两个相机光轴严格平行
  • 成像平面共面,且行对齐
  • 焦距 f 相同

在这个理想模型下,空间点 P 在左右图像上的成像位置,只在水平方向有偏移。这个偏移量,就是视差 d。

双目立体视觉成像模型 左相机 右相机 基线 B 左成像面 右成像面 P P_L P_R 视差 d = |x_L - x_R| 深度 Z = (B × f) / d 视差越大,物体越近

嗯,这里要注意:实际手机上的双摄,很难做到严格的行对齐。所以我们在算法移植前,必须先做立体校正。我见过有人跳过这一步直接算视差,结果出来的深度图全是噪点。

2.2 视差计算与深度估计

视差计算的核心,就是立体匹配。说白了,就是在右图中找到左图每个像素的对应点。这个过程,我把它分成三步:

  1. 代价计算:计算左右图像块之间的相似度
  2. 代价聚合:在视差空间中进行平滑
  3. 视差优化:亚像素插值、左右一致性检查

常用的匹配代价,我列个表:

方法 原理 计算量 精度
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 深度融合

深度融合,是目前手机厂商的主战场。它的核心思想是:利用深度信息,指导图像融合。

具体来说:

  1. 通过视差计算得到深度图
  2. 根据深度图生成融合权重图
  3. 在权重图的指导下,融合两路图像

深度融合的关键在于权重图的生成。我一般用这个策略:

深度范围 主摄权重 副摄权重 融合策略
近景 (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 融合保证色彩一致性。嗯,这个组合拳打好了,效果确实惊艳。