画笔工具概述

画笔工具是抠白底图工具中最精细的选区编辑工具,它赋予用户对选区进行像素级控制的能力。与魔术棒和抠白底图的自动选择不同,画笔工具完全由用户手动控制,适合处理需要精确边缘处理的复杂场景,如人物发丝、动物毛发、半透明物体等。

画笔工具的核心优势在于其灵活性:您可以自由选择画笔大小、硬度、模式,并且支持按住 Alt 键快速切换模式。这种设计使得画笔工具成为专业级抠图工作流程中不可或缺的环节。

画笔参数详解

画笔模式

画笔工具提供两种工作模式:

  • 添加模式(Add):将涂抹的区域添加到当前选区中。使用此模式来扩展选区,覆盖被遗漏的主体部分。
  • 取消模式(Subtract):从当前选区中移除涂抹的区域。使用此模式来清除多选的区域,去除背景残留。

两种模式可以通过工具栏按钮切换,也可以在涂抹时按住 Alt 键临时切换。例如,当前处于添加模式时,按住 Alt 键涂抹会临时变为取消模式,释放 Alt 键后自动恢复。

画笔大小

画笔大小控制画笔笔触的直径,范围从 5 像素到 100 像素。选择合适的画笔大小对于精细调整至关重要:

  • 小画笔(5-15px):用于处理精细边缘,如发丝、睫毛、树枝等细节
  • 中画笔(16-40px):适合处理一般边缘的修正和局部调整
  • 大画笔(41-100px):用于大面积选区的快速添加或删除

快捷键:在画布上涂抹时,可以按 [ 键减小画笔大小,按 ] 键增大画笔大小,无需频繁移动鼠标到参数面板。

画笔硬度

画笔硬度控制画笔边缘的柔和程度,范围从 0(完全柔和)到 100(完全锐利)。硬度通过影响画笔笔迹的透明度渐变来实现:

// 画笔硬度与透明度的关系
function calculateBrushOpacity(distance, brushSize, hardness) {
    const radius = brushSize / 2;
    const normalizedDist = distance / radius; // 0-1范围
    
    if (hardness === 100) {
        // 完全硬边:距离小于半径则完全不透明
        return normalizedDist <= 1 ? 1 : 0;
    }
    
    // 硬度映射到透明度衰减范围
    const fadeRange = 1 - (hardness / 100);
    const fadeStart = 1 - fadeRange;
    
    if (normalizedDist <= fadeStart) {
        return 1;
    } else if (normalizedDist >= 1) {
        return 0;
    } else {
        // 线性插值计算透明度
        const t = (normalizedDist - fadeStart) / fadeRange;
        return 1 - t;
    }
}
  • 高硬度(70-100):边缘清晰锐利,适合处理几何形状、建筑边缘
  • 中硬度(40-69):边缘过渡自然,适合大多数场景
  • 低硬度(0-39):边缘非常柔和,适合处理毛发、烟雾、光晕等

画笔绘制算法

画笔工具的核心是在鼠标移动轨迹上连续绘制圆形笔迹,并将笔迹覆盖区域的像素标记为选区或从选区移除。为了保证绘制流畅且边缘平滑,工具采用了以下优化策略:

插值绘制

当鼠标移动速度较快时,相邻两点之间的距离可能超过画笔直径,导致笔迹不连续。为了解决这个问题,工具在相邻两点之间进行线性插值,确保笔迹的连续性:

// 插值绘制确保笔迹连续
function interpolateBrushStroke(start, end, brushSize, hardness, mode) {
    const dx = end.x - start.x;
    const dy = end.y - start.y;
    const distance = Math.sqrt(dx * dx + dy * dy);
    const steps = Math.ceil(distance / (brushSize * 0.5));
    
    for (let i = 0; i <= steps; i++) {
        const t = i / steps;
        const x = Math.round(start.x + dx * t);
        const y = Math.round(start.y + dy * t);
        drawBrushStamp(x, y, brushSize, hardness, mode);
    }
}

// 绘制单个笔迹
function drawBrushStamp(centerX, centerY, brushSize, hardness, mode) {
    const radius = brushSize / 2;
    const startX = Math.max(0, Math.floor(centerX - radius));
    const startY = Math.max(0, Math.floor(centerY - radius));
    const endX = Math.min(canvasWidth, Math.ceil(centerX + radius));
    const endY = Math.min(canvasHeight, Math.ceil(centerY + radius));
    
    for (let y = startY; y < endY; y++) {
        for (let x = startX; x < endX; x++) {
            const dx = x - centerX;
            const dy = y - centerY;
            const dist = Math.sqrt(dx * dx + dy * dy);
            
            if (dist <= radius) {
                const opacity = calculateBrushOpacity(dist, brushSize, hardness);
                
                // 根据模式更新选区蒙版
                if (mode === 'add') {
                    selectionMask[y * canvasWidth + x] = Math.max(
                        selectionMask[y * canvasWidth + x], 
                        Math.round(opacity * 255)
                    );
                } else {
                    selectionMask[y * canvasWidth + x] = Math.min(
                        selectionMask[y * canvasWidth + x],
                        Math.round((1 - opacity) * 255)
                    );
                }
            }
        }
    }
}

实战案例:人物发丝精修

人物发丝的抠图是图像处理中最具挑战性的任务之一。发丝具有极细的宽度、复杂的相互交错、以及与背景混合的半透明特性。下面演示如何使用画笔工具精修发丝边缘。

  1. 1

    初始选区准备

    使用"人体分割"或"抠白底图"功能生成初始选区。此时发丝边缘可能比较粗糙,部分发丝可能未被选中。

  2. 2

    切换到画笔工具

    在左侧工具栏选择"画笔涂抹"。设置参数:画笔大小 5-8px,硬度 20-30,模式"添加"。

  3. 3

    放大画布精细涂抹

    使用画布缩放功能放大到 200-400%,仔细沿着发丝方向轻轻涂抹。注意只需要覆盖发丝的主体部分,不需要完全覆盖边缘的半透明区域。

  4. 4

    切换模式清理背景

    按住 Alt 键临时切换到"取消"模式,或使用工具栏切换到取消模式。调整画笔大小到 10-15px,硬度提高到 50-70,涂抹去除发丝周围多选的背景区域。

  5. 5

    应用边缘光滑

    完成画笔精修后,使用"后处理"工具栏中的"边缘光滑"功能,设置强度为 2-3,对发丝边缘进行柔和处理。

专业提示:处理发丝时,建议使用较低的硬度值(20-40),这样可以产生半透明边缘效果,使抠出的发丝在合成到新背景时更加自然。完全硬边的选区会使发丝看起来像剪纸,缺乏真实感。

实战案例:产品边缘精修

电商产品图片通常需要精确的边缘处理,以确保在白色背景或其他背景下展示时边缘清晰、没有杂色。

  1. 1

    生成初始选区

    使用"颜色聚类"或"自动选择"模式生成产品的初始选区。对于产品摄影图,背景通常为纯色,初始选区效果一般较好。

  2. 2

    检查边缘

    仔细观察产品边缘,特别是与背景颜色相近的区域。常见问题包括:边缘有背景色溢出、选区切入了产品本身、边缘有锯齿。

  3. 3

    使用高硬度画笔修正

    产品边缘通常需要清晰锐利,因此使用高硬度(80-100)的画笔。根据修正区域的大小选择画笔尺寸,一般在 8-20px 之间。

  4. 4

    使用选区反选技巧

    如果产品边缘被错误地多选或少选,可以结合"反选"功能:先选中背景区域,检查边缘是否准确,然后反选回主体。

  5. 5

    全图去噪

    精修完成后,使用"全图去噪"功能清理选区内部的孤立噪点和边缘的微小瑕疵。设置适当的阈值(建议 50-100 像素)。

高效工作流程

为了提高画笔精修的效率,建议采用以下工作流程:

快捷键速查

  • [ / ]:减小/增大画笔大小
  • Alt + 涂抹:临时切换画笔模式
  • Ctrl + Z:撤销上一步画笔操作
  • Ctrl + Y:重做画笔操作
  • Ctrl + + / Ctrl + -:放大/缩小画布

分阶段精修策略

对于复杂图像,不要试图一次完成所有精修工作。建议分阶段进行:

  1. 粗调阶段:使用大画笔(30-50px)快速修正明显的选区错误
  2. 中调阶段:使用中等画笔(15-30px)处理主要边缘
  3. 精调阶段:使用小画笔(5-15px)处理细节和复杂边缘
  4. 微调阶段:使用极小画笔(5px 以下)处理最精细的细节

总结

画笔工具是抠白底图工具箱中最灵活、最精细的选区编辑工具。掌握画笔工具的关键在于:

  • 根据处理对象选择合适的画笔大小和硬度
  • 熟练切换添加/取消模式,善用 Alt 键临时切换
  • 采用分阶段精修策略,从粗调到微调逐步完善
  • 善用放大功能进行精细操作,适当缩小检查整体效果
  • 结合其他工具(如边缘光滑、去噪)获得最佳效果

在下一篇教程形状抠图完全指南中,我们将介绍如何使用预设几何形状快速创建选区,适合处理需要标准形状裁剪的场景。

上一篇 魔术棒工具使用技巧
下一篇 形状抠图完全指南