图像修复 #
Inpainting 概述 #
什么是 Inpainting? #
Inpainting(图像修复)是指修改图像特定区域的技术,可以在保持其他区域不变的情况下,对选定区域进行重新生成。
text
┌─────────────────────────────────────────────────────────────┐
│ Inpainting 原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 原始图像 蒙版 修复结果 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 图像 │ │ 选中区域 │ │ 修复后 │ │
│ │ ○ │ + │ ■ │ → │ ● │ │
│ │ │ │ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ 仅修改蒙版覆盖区域,其他区域保持不变 │
│ │
└─────────────────────────────────────────────────────────────┘
Inpainting 应用场景 #
text
应用场景:
对象移除:
├── 移除不需要的人物
├── 移除背景杂物
└── 清理图像元素
对象替换:
├── 替换服装
├── 更换发型
├── 修改配饰
└── 改变物体
内容添加:
├── 添加新元素
├── 填充空白区域
└── 扩展图像
缺陷修复:
├── 修复损坏区域
├── 填补缺失部分
└── 修正生成错误
基础 Inpainting 工作流 #
工作流结构 #
text
┌─────────────────────────────────────────────────────────────┐
│ Inpainting 工作流 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Load │ │
│ │ Checkpoint │───────────────────────────────┐ │
│ └─────────────┘ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Load Image │ │ CLIP Text │ │ │ │
│ │ (with Mask) │────→│ Encode (+) │────→│ KSampler │ │
│ └──────┬──────┘ └─────────────┘ │ │ │
│ │ │ │ │
│ ▼ ┌─────────────┐ │ │ │
│ ┌─────────────┐ │ CLIP Text │ │ │ │
│ │ VAE Encode │ │ Encode (-) │──→│ │ │
│ │ (for │ └─────────────┘ │ │ │
│ │ Inpainting) │ │ │ │
│ └──────┬──────┘ │ │ │
│ │ │ │ │
│ └────────────────────────────────→│ │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ VAE Decode │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Save Image │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
关键节点 #
text
1. Load Image
┌─────────────────────────────┐
│ 选择图像文件 │
│ │
│ 输出: │
│ ├── IMAGE - 图像数据 │
│ └── MASK - 蒙版数据 │
│ │
│ 蒙版创建: │
│ 右键图像 → Open in MaskEditor│
└─────────────────────────────┘
2. VAE Encode (for Inpainting)
┌─────────────────────────────┐
│ pixels: IMAGE │
│ vae: VAE │
│ mask: MASK │
│ │
│ 功能: │
│ ├── 编码图像到潜空间 │
│ └── 处理蒙版区域 │
│ │
│ 输出:LATENT │
└─────────────────────────────┘
3. KSampler
┌─────────────────────────────┐
│ denoise: 0.8-1.0 │
│ │
│ 注意: │
│ └── Inpainting 通常用高值 │
└─────────────────────────────┘
蒙版创建 #
蒙版编辑器 #
text
打开蒙版编辑器:
├── Load Image 节点
├── 右键图像预览
└── 选择 "Open in MaskEditor"
编辑器功能:
┌─────────────────────────────────────────────────────────────┐
│ 蒙版编辑器界面 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 工具栏: │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 画笔 │ │ 橡皮 │ │ 填充 │ │ 清除 │ │ 反转 │ │
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │
│ │
│ 参数: │
│ ├── 画笔大小 - 调整笔刷尺寸 │
│ ├── 硬度 - 边缘硬度 │
│ └── 透明度 - 绘制强度 │
│ │
│ 操作: │
│ ├── 左键绘制蒙版(白色区域) │
│ ├── 右键擦除蒙版 │
│ └── 完成后点击 "Save to node" │
│ │
└─────────────────────────────────────────────────────────────┘
蒙版原则 #
text
蒙版创建原则:
1. 区域选择
├── 只选择需要修改的区域
├── 避免选择不需要改变的部分
└── 适当扩展边缘
2. 边缘处理
├── 边缘需要一定过渡
├── 不要过于锐利
└── 考虑使用羽化
3. 大小适中
├── 太小:生成困难
├── 太大:影响周围
└── 适中:效果最好
颜色含义:
├── 白色 - 需要修改的区域
├── 黑色 - 保持不变的区域
└── 灰色 - 过渡区域
蒙版处理节点 #
text
蒙版处理节点:
FeatherMask(羽化蒙版):
┌─────────────────────────────┐
│ mask: MASK │
│ left/right/top/bottom: 羽化值│
│ │
│ 功能:软化蒙版边缘 │
│ 用途:创建平滑过渡 │
└─────────────────────────────┘
GrowMask(扩展蒙版):
┌─────────────────────────────┐
│ mask: MASK │
│ expand: 扩展像素数 │
│ │
│ 功能:扩大或缩小蒙版区域 │
│ 用途:调整修复范围 │
└─────────────────────────────┘
MaskComposite(蒙版合成):
┌─────────────────────────────┐
│ destination: MASK │
│ source: MASK │
│ operation: 合成方式 │
│ │
│ 功能:合并多个蒙版 │
│ 用途:复杂区域选择 │
└─────────────────────────────┘
Inpainting 技巧 #
Denoise 设置 #
text
Inpainting Denoise 推荐:
对象替换:
├── denoise: 0.9-1.0
├── 完全重新生成
└── 示例:替换服装、发型
内容修改:
├── denoise: 0.7-0.9
├── 部分保留特征
└── 示例:修改表情、姿势
细节修复:
├── denoise: 0.5-0.7
├── 保留大部分内容
└── 示例:修复瑕疵、调整细节
边缘融合:
├── denoise: 0.3-0.5
├── 轻微调整
└── 示例:平滑过渡
提示词策略 #
text
Inpainting 提示词:
1. 描述目标内容
├── 清晰描述要生成的内容
└── 不需要描述原图
2. 考虑上下文
├── 与周围环境协调
├── 保持风格一致
└── 匹配光照条件
示例:
任务:替换人物服装
提示词:"wearing a red dress,
elegant evening gown,
detailed fabric texture"
负面词:"nude, inappropriate,
low quality, blurry"
任务:移除背景人物
提示词:"empty background,
clean wall,
simple background"
负面词:"people, person,
crowd, figures"
边缘处理技巧 #
text
边缘处理方法:
1. 羽化蒙版
┌─────────────────────────────┐
│ Load Image → FeatherMask │
│ │ │
│ ▼ │
│ VAE Encode │
└─────────────────────────────┘
羽化值:
├── 5-15 像素:轻微过渡
├── 15-30 像素:中等过渡
└── 30+ 像素:强烈过渡
2. 多次迭代
第一次:粗略修复
第二次:边缘融合
第三次:细节优化
3. 使用专门的 Inpaint 模型
├── 更好的边缘融合
├── 更自然的过渡
└── 推荐用于复杂修复
高级 Inpainting #
使用 Inpaint 模型 #
text
Inpaint 专用模型:
模型类型:
├── sd-v1-5-inpainting.ckpt
├── sd_xl_inpaint.safetensors
└── 专门训练用于修复的模型
优势:
├── 更好的边缘处理
├── 更自然的融合
└── 更准确的生成
使用方法:
├── Load Checkpoint 选择 Inpaint 模型
├── 或使用专门的 Inpaint 节点
└── 配合蒙版使用
区域控制 #
text
精确区域控制:
方法 1:多个蒙版
├── 创建多个蒙版
├── 分别处理不同区域
└── 最后合成结果
方法 2:条件区域
├── 使用 ConditioningSetArea
├── 为不同区域设置不同条件
└── 统一采样处理
方法 3:分层处理
├── 背景层
├── 中景层
├── 前景层
└── 分别处理再合成
批量 Inpainting #
text
批量处理方法:
1. 多图像处理
├── 使用 batch_size
├── 相同蒙版位置
└── 批量修复
2. 多区域处理
├── 创建多个蒙版
├── 队列处理
└── 自动化流程
3. 自动队列
├── 设置自动队列
├── 逐个处理
└── 保存结果
常见问题 #
问题 1:边缘明显 #
text
症状:修复区域边缘清晰可见
原因:
├── 蒙版边缘太锐利
├── denoise 不匹配
└── 缺乏过渡
解决:
├── 使用 FeatherMask 羽化边缘
├── 调整 denoise 值
├── 扩大蒙版范围
└── 多次迭代融合
问题 2:内容不协调 #
text
症状:修复内容与周围不协调
原因:
├── 提示词不匹配
├── 风格不一致
└── 光照不匹配
解决:
├── 调整提示词描述
├── 添加上下文信息
├── 匹配光照条件
└── 使用风格 LoRA
问题 3:生成质量差 #
text
症状:修复区域质量低
原因:
├── 区域太小
├── 提示词不清晰
└── 参数设置不当
解决:
├── 扩大修复区域
├── 优化提示词
├── 增加采样步数
├── 使用 Inpaint 专用模型
└── 多次迭代优化
最佳实践 #
工作流程建议 #
text
推荐 Inpainting 流程:
1. 准备阶段
├── 选择合适的图像
├── 确定修复区域
└── 创建精确蒙版
2. 测试阶段
├── 快速参数测试
├── 检查边缘效果
└── 调整提示词
3. 优化阶段
├── 羽化蒙版边缘
├── 调整 denoise
└── 多次迭代
4. 最终生成
├── 高质量参数
├── 保存结果
└── 必要时再次调整
效率提升 #
text
提高效率的方法:
1. 保存常用蒙版
├── 常见形状蒙版
├── 快速复用
└── 减少重复工作
2. 使用模板工作流
├── 预设 Inpaint 工作流
├── 快速加载
└── 只需更换图像和蒙版
3. 批量处理
├── 相同类型修复
├── 自动队列
└── 脚本自动化
4. 合理设置参数
├── 测试用低参数
├── 最终用高参数
└── 避免过度迭代
下一步 #
现在你已经掌握了图像修复技术,接下来学习 ControlNet 使用,了解如何精确控制图像生成过程。
最后更新:2026-04-05