前言
最近在做一个手机端的人像处理SDK,需要实现类似iPhone人像模式的效果。研究了一段时间,把核心技术点整理出来分享一下。
所谓"人形凸显",本质上就是把人从背景中"拎"出来,然后对背景做模糊或者其他处理,让人物主体更加突出。听起来简单,但要做到自然、实时、边缘精细,每一步都有不少门道。
本文会从原理到代码完整讲一遍,包括:人像分割、深度估计、散景模拟、边缘精细化等核心模块。
一、整体技术架构
先看一下整个处理流程:
┌─────────────────────────────────────────────────────────────────────────┐ │ 人像模式处理流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 原始图像 │───>│ 人像分割 │───>│ 深度估计 │───>│ 散景渲染 │ │ │ │ │ │ │ │ (可选) │