在数字图像中,每个像素由多个「通道」组成。RGB 通道分别存储红、绿、蓝三种颜色的强度(各 8 位,0-255),而 Alpha 通道存储该像素的不透明度(0 = 完全透明,255 = 完全不透明)。
一个标准的 PNG-32 图片有 4 个通道:R、G、B、A,每通道 8 位,共 32 位/像素。这就是「PNG-32」名称的由来。
| Alpha 值 | 不透明度 | 视觉效果 |
|---|---|---|
| 0 | 0% | 完全透明(不可见) |
| 64 | 25% | 很淡的半透明 |
| 128 | 50% | 半透明 |
| 192 | 75% | 较浓的半透明 |
| 255 | 100% | 完全不透明 |
这是抗锯齿(Anti-aliasing)的结果。当物体的轮廓穿过像素网格时,一个像素可能部分在前景、部分在背景。为了视觉平滑,抠图工具会给这些边缘像素一个中间 Alpha 值。
例如,一个像素有 60% 在头发内、40% 在背景中,它的 Alpha 值约为 153(255 × 0.6)。这就是为什么高质量的抠图边缘看起来有渐变的灰度——它们不是噪声,而是精确的半透明信息,保留了原图的边缘细节。
这是图形编程中的常见概念,决定了 RGB 和 Alpha 的存储关系:
「抠图」本质上是生成一张高质量的 Alpha 蒙版。分割模型输出的二值掩码(只有 0 和 255)经过引导滤波等精修后,边缘像素获得连续的 Alpha 值,形成平滑的过渡效果。
抠图后边缘有白色像素,通常是因为 Alpha 值不够精确或背景色渗透到边缘像素中。解决:使用「边缘去杂色」功能。
某些软件不支持 Alpha 通道(如 Windows 画图),保存时会将透明像素填充为白色。始终使用 PNG-32 格式保存。
真正的半透明物体的 Alpha 值本身就是中间值(如 100-200),这是正确的物理表现,不是抠图错误。不要试图把这些区域变成完全透明或不透明。
上传图片抠图后,切换预览背景到「透明格」模式——灰白棋盘格透过边缘的程度直接反映 Alpha 值的高低。如果边缘看不到棋盘格,说明 Alpha 接近 255(不透明);如果看得很清楚,说明 Alpha 较低。
PNG 使用直通 Alpha(RGB 存原始颜色),GPU 渲染使用预乘 Alpha(RGB 已乘以 A)。这就是为什么透明像素的 RGB 值在 PNG 中可以是任何值。