两种完全不同的技术都被叫作"抠图",而知道自己在用哪一种,就能同时解释结果和失败。
色键抠图(传统方法)
工具选定一个目标颜色,抹掉容差范围内的所有像素。它很快、到处都能跑,而且完全可预测。
- 有效场景:背景均匀且与主体明显不同——白底 logo、静物箱里的产品、扫描的签名、绿幕。
- 失效场景:主体含有背景色、背景是渐变或真实场景,或者差异太细微。
- 它什么都不理解。 它没有"人"或"产品"的概念,只有颜色距离。
语义分割(AI 方法)
一个在海量标注图像上训练的神经网络,逐像素预测它是否属于前景物体。它学过人、产品、动物和汽车长什么样,所以能在任何颜色规则都无能为力的杂乱街景中把人分离出来。
- 有效场景:存在可识别的主体,哪怕背景复杂。
- 失效场景:主体类型罕见(模型没见过)、主体在影调上与背景融合,或多个重叠物体让它搞不清谁是"前景"。
- 它理解的是物体,不是颜色——这就是为什么它能成功于色键失败之处,反之亦然。
为什么头发和玻璃对两者都难
一根发丝上的单个像素,部分是头发、部分是背景。正确的输出是部分透明——比如 40% 不透明——而不是一个是/否判断。
生成这个结果是另一个独立问题,叫作 Alpha 抠像,而它确实很难。好的工具会先跑一遍分割找出物体,再跑一遍抠像估算边界上的分数不透明度。廉价工具跳过第二步,于是抠图常常出现:
- 头发被渲染成生硬的、假发套一样的轮廓。
- 一圈背景色的光晕。
- 玻璃和烟雾要么被当作不透明,要么被整个抹掉。
运动模糊、细网纱、羽毛和毛发都是同一个底层问题。
选对工具
- 均匀背景(白底产品、logo、签名)→ 色键更快、完全可预测,而且往往比模型*更*精确。
- 复杂背景下的人或常见物体 → 用分割。
- 头发、毛发、玻璃,或必须看起来真实的合成 → 用带显式抠像的工具,并预期需要手动精修。
- 敏感图像(证件、私人照片)→ 确认处理是在你的设备上还是在服务器上;分割模型体积很大,所以很多服务会上传你的图片,而基于颜色的工具可以完全在本地运行。
让两者都出更好结果
最大的收益发生在处理之前:
- 提高主体与背景的对比——颜色不同、明暗不同、距离拉开。
- 把背景照亮均匀。
- 尽可能避免纤细飘散的边缘。
- 在原始分辨率下处理,之后再缩小;把已经抠好的图放大会让边缘质量劣化。
- 发布前务必在深色背景上检查——毛边就藏在那里。