Texture (纹理)
定义
图像处理 (Image Processing): 纹理是一个具有空间稳定性的区域(在该区域的每个地方都具有相同的统计特性)。
计算机图形学 (computer graphics): 纹理是应用于3D模型的2D表面。
种类
- 周期性纹理 (Periodic texture): 有一个在规则模式中重复的子区域。

- 随机(非周期性)纹理 (Stochastic (aperiodic) texture): 由随机过程生成。

纹理模型(Texture models)
- 参数模型 (Parametric models): 用一组可调参数来表示纹理。

- 非参数(拼接)模型 (Non-parametric (stitching) models): 将纹理表示为图像片段。

❓ 为什么需要 model texture?
- 纹理合成(Texture synthesis): 创建更多的纹理。
- 用于计算机图形、视频游戏等的纹理。
- 图像修复: 修复或重建损坏或丢失的图像区域。
- 纹理转移(Texture transfer): 将一个图像或物体的纹理应用到另一个图像或物体上。
- 艺术效果: 利用纹理为图像或物体添加独特的视觉效果。
- 在线购物: 在线购物时可能需要纹理合成来为产品展示更多的纹理选项或为虚拟试穿提供真实的纹理效果。
纹理合成(Texture synthesis)
图像拼接理论(Image stitching approach)
怎么填补缺失的数据?
方案:
- 寻找类似的附近的其他纹理。

- 根据相似的区域选择缺失像素的可能值。

非参数纹理合成(Non-parametric texture synthesis)

- 从原始图像中随机抽取一个小的区域(例如,3 x 3 像素的区域)。
- 从中心螺旋式 (Spiral outward) 向外填充缺失的像素,通过在原始纹理中找到相似的邻域来实现。
邻域大小是一个自由参数,用来指定纹理的随机性。
附近点的大小(size)

图像拼接(Image quilting)
基于区块的高效纹理合成方法(Efros & Freeman, 2001)
使用现有的纹理区块来合成更多的纹理;主要的问题是如何将它们连接在一起,而不产生明显的瑕疵 / 接缝。
堕落教授算法 (Corrupt Professor's Algorithm):
- 尽可能多地抄袭源图像。
- 然后试图掩盖证据。
图像拼接算法(Image quilting algorithm)
-
选择区块和重叠大小
-
以一个随机区块开始初始化
-
对于每个后续的区块:
- 在原始纹理中找到一个与此区域最相似的区块,只考虑重叠区域中的像素。
- 通过沿着重叠误差 (overlap error) 最小的路径切割,无缝地粘贴区块。

图割(Graph cuts)
- 将邻近的像素表示为一个图。
- 边的权重 = 重叠误差。
- 问题:在图中找到重叠误差总和最小的路径。

图像拼接后的结果

图像修复(Image inpainting)
使用类似的方法来填补图像中的缺失区域:
- 在另一张图像中找到一个相似的区块。
- 用一个最小化误差的方式粘贴这个区块。

参数纹理合成(Parametric texture synthesis)
-
与拼接方法的另一种替代方案:用若干参数来表示纹理。
-
为了合成纹理,强制一个噪声图像来匹配所需的参数(通常通过梯度下降法)。
傅里叶纹理合成(Fourier texture synthesis)
通过匹配傅里叶幅度来合成纹理。

对于一些简单的纹理,这种方法可以得到还不错的结果,但通常效果并不理想。
颜色和边缘(Colour and edges)
- 纹理可以被定义为基于简单特征的分布,如在不同尺度上的颜色和边缘方向。
- 通过匹配这种分布来合成纹理。

稍微复杂的情况
- 简单的特征分布是不够的。
- 还需要表示特征的共同出现。

更复杂的情况
- 为了代表真实的图像,所需的统计数据集可能非常复杂。
- 不是手工建模统计数据,而是将纹理表示为在ImageNet分类上训练的神经网络层中的特征响应。

特征相关性
纹理被表示为神经网络某一层中特征图之间的相关性

小结
- 非参数纹理合成基于复制纹理片段。
- 对于周期性纹理效果非常好。
- 缺点:没有纹理参数的模型。
- 参数纹理合成以一组参数来表示纹理。
- 大多数方法在随机纹理上效果更好。
- 缺点:即使是非常复杂的模型(例如,基于神经网络的模型)也可能是不完整的。
纹理转换(Texture transfer)
将一张图像按照另一张图像的风格进行渲染。

神经网络风格转换算法(Neural style transfer algorithm)
- 两张图像(内容和风格)都通过在ImageNet上训练的VGG网络进行处理。
- 内容是以神经网络的某一层的响应来表示。
- 风格是以神经网络某一层中特征图之间的相关性来表示。
- 使用梯度下降法找到一个既匹配内容又匹配风格的图像。

风格转换参数(Style transfer parameters)
- 损失是内容重建和风格重建的损失之和。
- 内容(content) 与 风格(style) 的相对权重是一个自由参数:


- 内容和风格可以在任意组合的层级上进行匹配
- 通常情况下,我们在较高的层级上匹配内容,并在所有层级上匹配风格。


小结
- 以另一图像的风格渲染图像
- 图像内容由神经网络响应表示
- 纹理由神经网络多层的特征图之间的相关性表示。