抠图算法 40 年:从魔棒到 AI 为什么越来越准?

· 约 3 分钟 ✂️ 图片抠图

1990 年的 Photoshop 用魔棒工具抠图,选不中头发丝;2024 年手机 APP 一键抠图,头发细节都保留。中间发生了四代技术迭代,每一代都解决了上一代的死穴。

第一代:颜色选取(魔棒 / 色域)

原理:选中一个像素,向外扩展所有颜色相近的像素。

擅长:纯色背景 + 纯色前景,比如白纸上的红章。

死穴

  • 渐变背景全部失效
  • 半透明、发丝、毛边处理不了
  • 阴影和高光区域颜色接近背景,会被一起抠掉

这代工具至今还在。身份证照片换底色这种任务用它完全够。

第二代:边缘检测(魔术棒 / Magic Wand)

原理:Sobel/Canny 算子找出图像的梯度突变(边缘),按边缘包围的闭合区域分割。

擅长:主体有清晰轮廓的情况,比如剪影、几何形状。

死穴

  • 边缘模糊时(景深虚化、运动模糊)失效
  • 纹理复杂时会把纹理内部当成多个”边缘”
  • 无法处理”无明显边缘”的物体(比如玻璃、水)

第三代:GrabCut(基于图割)

2004 年微软提出,至今在 Photoshop 和开源库里大量使用。

原理

  1. 用户画一个矩形框标出”大概位置”
  2. 算法假设框是前景,框是背景
  3. 建立图论模型(每个像素是节点,像素间相似度是边权),用最小割算法分割
  4. 迭代优化:用户可以画几笔”肯定前景”和”肯定背景”来修正

擅长:大部分日常图片。边缘质量显著超过前两代。

死穴

  • 需要用户交互:画框、点修正
  • 发丝、透明织物仍然难处理
  • 批量化做不了——每张图要人工干预

第四代:深度学习语义分割

2015 年之后的主流。U-Net、DeepLab、Mask R-CNN 等模型让抠图变成”端到端”任务——输入一张图,直接输出每个像素”是前景”的概率。

原理

  1. 训练阶段:用百万张已抠好的图(带 Alpha 通道)训练神经网络
  2. 推理阶段:网络学到了”人像边缘应该是什么样”的先验知识
  3. 无需用户标注任何信息

擅长

  • 发丝级精度(有专门的 Matting 网络,如 MODNet、RVM)
  • 透明物体(玻璃杯、纱巾)
  • 强光、弱光、复杂背景

新的限制

  • 模型只擅长训练过的类别(人像模型抠人像很准,抠猫可能差)
  • 模型文件大(几十到几百 MB),移动端需要压缩
  • 极端情况(头发和背景颜色几乎一致)仍可能失败

工具选择看场景

场景合适的工具
证件照换底色(纯色背景)魔棒(一代)或 AI 人像抠图
电商商品图(白底抠商品)GrabCut 或 AI
人像去背景(有发丝)必须用 AI
批量处理(上百张图)只能用 AI
半透明、玻璃、水只能用专业 Matting 模型
非常规物体(雕塑、艺术品)魔棒 + 手动修正

Alpha 通道是什么

抠图结果不是”抠出来 + 扔掉背景”这么简单。专业抠图输出的是带 Alpha 通道的图像

  • 每个像素额外存一个值 0-255
  • 0 = 完全透明
  • 255 = 完全不透明
  • 128 = 半透明(发丝边缘、玻璃)

只有 PNG、WebP、TIFF 等格式支持 Alpha,JPG 不支持。导出时选错格式会把所有半透明像素强制变成不透明或白色。

一键 AI 抠图

上传图片自动识别前景、保留发丝级边缘、支持换任意背景色 / 替换背景图,导出带 Alpha 的 PNG——比自己练习 Photoshop 钢笔工具快 100 倍。

❓ 常见问题

AI 抠图和魔棒工具有什么区别?

魔棒是按颜色选——选中一个像素扩展所有颜色相近的区域,在渐变背景和发丝处完全失效。AI 抠图是"学习了百万张人像"后理解"什么是人",能处理发丝、透明物、复杂背景。两者分别代表 1990 年代和 2020 年代的技术代差。

抠图结果为什么边缘有白边?

原图里人物边缘的像素已经混合了背景色(边缘抗锯齿),抠图算法把这部分当成"半前景"保留,换到新背景后这一圈"旧背景色残留"就是白边。解决:用带 Alpha 通道的 matting 模型(不是二值分割),能输出半透明过渡;或抠图后向内收缩 1-2 像素。

头发丝能完美抠出来吗?

用专业 matting 模型(MODNet、RVM、Bg Matting)基本能做到——头发末梢的半透明像素会得到 0-255 中间值的 Alpha。但前提是头发和背景对比度够,头发和背景色相近(黑发配深色窗帘)时即使 AI 也会失败。

抠图后为什么 JPG 还是有背景?

因为 JPG 格式不支持透明通道。抠图结果有 Alpha 信息,但保存为 JPG 时必须选择一个背景色来"合成"。要保留透明必须导出 PNG 或 WebP。批量导出建议 PNG——兼容性最好,虽然体积比 WebP 大 30%。

✂️ 打开 图片抠图 去背景 · 透明导出 · 多格式