4. 深度引擎配置

深度引擎,说白了就是人像虚化的「大脑」。它负责算出每个像素离镜头有多远,然后告诉 ISP 哪里该虚、哪里该实。我这些年调过的项目里,深度引擎配置往往是画质好坏的分水岭——配置对了,虚化自然得像单反;配错了,头发丝边缘全是鬼影。

今天咱们就聊三个核心参数:深度图分辨率、置信度阈值、边缘优化。这三个东西互相牵制,你动一个,另外两个就得跟着调。

4.1 深度图分辨率:算力与精度的博弈

深度图分辨率,就是引擎输出的深度图有多大。常见的有三种:

分辨率等级 典型尺寸 优势 劣势
全分辨率 与主摄相同(如 12MP) 边缘最精细,发丝级虚化 功耗高,帧率低,发热大
半分辨率 主摄的 1/2(如 6MP) 平衡画质与性能 细边缘偶尔有锯齿
四分之一分辨率 主摄的 1/4(如 3MP) 帧率高,功耗低 边缘模糊,虚化分层感差

我个人习惯,旗舰机用半分辨率起步。为什么?全分辨率虽然好,但深度引擎跑一次要十几毫秒,加上前后处理,整个 pipeline 就超 33ms 了——你想想看,预览帧率直接掉到 30fps 以下,用户划一下屏幕都觉得卡。

我的经验: 如果项目对功耗敏感(比如中端机),可以先从四分之一分辨率调起,等基础效果稳定了再尝试半分辨率。我在一个项目里试过全分辨率,结果手机烫得能煎鸡蛋,最后只能降回来。

4.2 置信度阈值:信还是不信?

深度引擎算出来的每个像素,都会附带一个「置信度」——它有多相信自己算对了。置信度阈值就是一道坎:低于这个值的像素,引擎会标记为「不可靠」,然后交给后处理去猜或者直接忽略。

阈值设高了会怎样?

  • 深度图很「干净」,几乎没有噪点
  • 但空洞也多——那些低置信度的区域直接变黑
  • 虚化边缘会出现「断崖式」过渡,不自然

阈值设低了呢?

  • 深度图很「满」,每个像素都有值
  • 但噪声也进来了,虚化区域会有奇怪的抖动
  • 尤其是暗光下,整个深度图像雪花屏
避坑指南: 我曾经在一个夜景人像项目里把阈值设到 0.9,结果拍出来的照片背景虚化像被狗啃过——人物肩膀旁边全是黑色空洞。后来降到 0.6,配合边缘优化才救回来。记住:阈值不是越高越好,要看你场景的 SNR。

我一般这样调:

  1. 先看暗光:在 10lux 以下场景,阈值降到 0.4~0.5
  2. 再看强光:户外晴天,阈值可以提到 0.7~0.8
  3. 最后看折中:室内正常光照,0.6 是个不错的起点

4.3 边缘优化:让头发丝「活」过来

深度图天生有个毛病——边缘锯齿。尤其是人物头发、眼镜框、手指缝这些地方,深度值跳变剧烈,直接拿来用的话,虚化边缘会像用剪刀剪出来的,硬邦邦。

边缘优化就是干这个的。高通平台里主要有三招:

  • 引导滤波(Guided Filter):用 RGB 图做引导,把深度图的边缘对齐到真实物体边缘。效果最好,但计算量大。
  • 双边滤波(Bilateral Filter):保留边缘的同时平滑内部。速度快,但边缘不够锐利。
  • 形态学操作(Morphological Op):膨胀+腐蚀,填掉小空洞。适合做最后一道防线。

我自己的调优顺序是这样的:

// 伪代码:边缘优化 pipeline
1. 输入:原始深度图 + RGB 图
2. 引导滤波(半径 3~5,epsilon 0.01~0.1)
3. 双边滤波(空间域 sigma=2,值域 sigma=0.1)
4. 形态学闭运算(3x3 核,1 次迭代)
5. 输出:优化后的深度图
关键参数: 引导滤波的 epsilon 值很敏感。我试过从 0.001 到 0.5,发现 0.05 左右最适合人像——太小了滤波没效果,太大了会把边缘磨平。你可以从 0.01 开始,每次翻倍,看哪个值让头发丝最自然。

4.4 三者联动:一张图说清楚

这三个参数不是孤立的。我画了张图,帮你理清它们的关系:

深度引擎配置三要素关系图 深度引擎配置三要素关系图 深度图分辨率 置信度阈值 边缘优化 分辨率越高 → 边缘细节越多 → 置信度阈值可以适当提高 置信度阈值越低 → 深度图越满 → 边缘优化压力越大 边缘优化越强 → 锯齿越少 → 但可能抹掉真实边缘细节 三者必须联动调优,不能单独动一个 💡 调优顺序建议:先定分辨率 → 再调阈值 → 最后优化边缘

你看,这三个东西像三根绳子拴在一起。你拉分辨率这根,阈值和边缘就得跟着松一松或紧一紧。我见过不少工程师只调一个参数,结果越调越糟——其实就是没看到联动关系。

4.5 实战调优清单

最后,给你一份我项目里常用的调优清单。每次拿到新平台,我都会按这个顺序走一遍:

步骤 操作 检查点 常见问题
1 选分辨率 预览帧率 > 30fps 帧率不够就降一档
2 设初始阈值 深度图空洞 < 5% 空洞太多就降阈值
3 跑边缘优化 头发丝无锯齿 锯齿明显就加强滤波
4 暗光验证 深度图噪声可接受 噪声大就提阈值或降分辨率
5 强光验证 边缘无过平滑 边缘模糊就降滤波强度
一个小技巧: 调优时别只看办公室场景。我建议你带着手机去三个地方:理发店(看头发丝)、眼镜店(看镜框边缘)、公园树荫下(看树叶缝隙)。这三个场景基本能暴露 90% 的深度引擎问题。