图像修复 #

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