纹理合成算法与应用 - 从基于块的方法到深度学习
什么是纹理合成 - 核心概念与应用
纹理合成从小样本纹理生成任意大小的新纹理,保持与样本相同的视觉特征和统计属性。生成的纹理应看起来像样本的自然延续,而非简单的平铺重复。
应用场景:
- 游戏和 CG: 为 3D 模型生成无缝纹理贴图
- 图像编辑: 扩展图像边界 (outpainting)
- 图像修复: 用周围纹理填充缺失区域
- 材质设计: 从照片生成可平铺的材质纹理
纹理分类:
- 随机纹理: 沙子、噪声、云彩。统计方法效果好
- 规则纹理: 砖墙、瓷砖、编织物。需要保持结构规律
- 半规则纹理: 树皮、石头、布料。介于两者之间
基于像素的方法 - Efros-Leung 算法
Efros-Leung (1999) 是纹理合成的开创性工作,逐像素生成新纹理。
算法原理:
- 从种子像素开始,逐步向外扩展
- 对于每个待填充像素,在样本纹理中搜索具有最相似邻域的像素
- 将找到的最佳匹配像素的值赋给当前位置
- 邻域大小 (窗口) 控制合成质量和速度的权衡
优点: 概念简单; 可处理各种纹理类型; 结果自然无重复感。
缺点: 极其缓慢 (每像素需要全局搜索); 大窗口时搜索空间爆炸; 可能出现"生长"方向的偏差。
加速方法: Wei-Levoy 使用树形搜索加速; Ashikhmin 利用相邻像素的匹配结果缩小搜索范围。但基于像素的方法整体已被基于块的方法取代。
基于块的方法 - Image Quilting 和 GraphCut
基于块 (Patch) 的方法一次合成一个图像块而非单个像素,大幅提升速度和质量。
Image Quilting (2001, Efros & Freeman):
- 从样本中随机选取块,按网格排列
- 相邻块的重叠区域通过最小误差边界切割 (Minimum Error Boundary Cut) 拼接
- 动态规划找到重叠区域中误差最小的切割路径
- 速度比像素方法快 100-1000 倍
GraphCut Textures (2003):
- 使用图割算法找到最优拼接边界
- 可处理不规则形状的拼接区域
- 质量优于 Image Quilting 的简单路径切割
参数选择:
- 块大小: 应大于纹理的最大重复单元
- 重叠宽度: 通常为块大小的 1/6 到 1/3
- 块太小: 丢失大尺度结构; 块太大: 可能出现明显重复
统计方法 - Gram 矩阵与神经风格迁移
基于 CNN 特征统计的纹理合成方法,利用 Gram 矩阵捕获纹理的统计特征。
Gram 矩阵纹理模型 (Gatys et al., 2015):
- 将纹理定义为 CNN 特征图的 Gram 矩阵 (通道间相关性)
- 从随机噪声开始,优化图像使其 Gram 矩阵匹配目标纹理
- 多层 Gram 矩阵捕获从细到粗的多尺度纹理特征
优势:
- 可生成任意大小的纹理
- 自然处理多尺度结构
- 与风格迁移共享相同的理论框架
局限性:
- 优化过程慢 (数分钟)
- 对规则纹理 (砖墙等) 效果差 (Gram 矩阵丢失空间结构)
- 可能产生不自然的伪影
前馈方法: 训练生成网络直接输出纹理,推理时单次前向传播即可。速度提升 1000 倍以上。
GAN 纹理合成 - 高质量高速度
GAN (生成对抗网络) 可以学习纹理的分布并快速生成高质量的新纹理样本。
PSGAN (Periodic Spatial GAN): 专门设计用于生成具有周期性结构的纹理。在潜在空间中编码周期性信息。
SinGAN (2019):
- 从单张图像学习生成模型
- 多尺度 GAN 金字塔,从粗到细逐步生成
- 可用于纹理合成、超分辨率、图像编辑等多种任务
- 训练时间: 单张图像约 10-30 分钟
StyleGAN 纹理: StyleGAN 的风格注入机制天然适合纹理生成。通过控制不同层的风格向量,可以独立控制纹理的粗细特征。
扩散模型: 最新的扩散模型 (如 Stable Diffusion) 可以通过文本提示生成任意纹理。"seamless tileable wood texture, 4k" 即可生成高质量木纹纹理。
实用纹理合成 - 工具与工作流
在实际项目中应用纹理合成的工具和最佳实践。
无缝平铺纹理制作:
- Photoshop 偏移法: 滤镜 → 其他 → 位移,将接缝移到中心后修复
- GIMP 无缝化: 滤镜 → 映射 → 无缝化
- Materialize: 开源工具,从照片生成 PBR 材质 (法线图、高度图等)
程序化纹理:
- Substance Designer: 节点式程序化纹理生成,游戏行业标准
- Perlin/Simplex 噪声: 程序化生成自然纹理的基础算法
- Shader 纹理: GLSL/HLSL 中实时生成纹理,零内存占用
AI 纹理生成:
- Stable Diffusion + ControlNet: 从草图或参考生成纹理
- Poly.cam 材质生成: 从照片自动生成可平铺 PBR 材质
- 提示词技巧: 加入 "seamless", "tileable", "4k texture" 提高质量