ebsynth
是一个用于示例图像合成的多功能工具。它可用于各种图像合成任务,包括引导纹理合成、艺术风格转移、内容感知修复和超分辨率。
ebsynth
的重点是保持源材料的保真度。与其他最近的方法不同, ebsynth
不依赖于神经网络。相反,它使用最先进的非参数纹理合成算法实现。由于其基于补丁的性质, ebsynth
可以产生清晰的结果,保留原始图像中存在的所有精细细节。
ebsynth -style -guide -output
-style
-guide
-weight
-uniformity
-patchsize
-pyramidlevels
-searchvoteiters
-patchmatchiters
-extrapass3x3
-backend [cpu|cuda]
可以从此处下载预构建的 Windows 二进制文件:http://jamriska.cz/ebsynth/ebsynth-win64.zip。
第一个示例展示了如何使用ebsynth
执行基本的引导纹理合成。该用例首次在原始图像类比论文 [1] 中提出,他们将其称为“数字纹理”。我们从自然场景的照片及其分割开始(例如,岩石被漆成绿色,天空被漆成蓝色):
ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png
接下来,我们手动绘制目标分割,并要求ebsynth
生成与其匹配的新“照片”。用风格迁移的语言来说:我们希望以尊重各个片段的方式将源照片的风格迁移到目标分割上。分割充当合成的指导。
此示例演示如何使用ebsynth
实现非真实感渲染。它基于 Fišer 等人的工作。 [7]。目标是像艺术家一样渲染 3D 模型。具体来说,我们想要捕捉艺术家如何传达不同的照明效果,例如高光、接触阴影和间接反射。为此,我们设置了一个带有发光球的简单参考场景,并让艺术家以她/他的风格绘制它。我们使用现成的路径跟踪器来生成单独的渲染通道,例如,完整的全局照明、仅直接漫反射分量、仅间接反弹等。接下来,我们为目标 3D 模型渲染相同的通道集并将它们用作ebsynth
的指南。
ebsynth -style source_style.png
-guide source_fullgi.png target_fullgi.png -weight 0.66
-guide source_dirdif.png target_dirdif.png -weight 0.66
-guide source_indirb.png target_indirb.png -weight 0.66
-output output.png
与数字纹理相比,这里的主要区别是我们现在有多个引导通道。请注意,指南始终成对出现:首先是源指南,其次是目标指南。为了获得更好的结果,我们可能希望提高指南相对于样式的贡献。在上面的示例中,样式的默认权重为 1.0,而引导通道的权重均为 0.66。总之,总引导重量为 2.0,导致引导与样式之比为 2:1。
此示例演示如何使用ebsynth
将肖像画的风格转移到另一个人的照片上。它基于 Fišer 等人的工作。 [8]。目标是再现源画的细微差别,同时保留目标人物的身份。即,我们希望该人在合成后仍然可以被识别。
与 StyLit 不同,在此设置中,我们没有参考 3D 几何体可用作指导。然而,我们可以利用源绘画和目标照片都包含人脸的事实,该人脸具有明确的结构。我们将使用这个结构来推断必要的指导信息。
ebsynth -style source_painting.png
-guide source_Gapp.png target_Gapp.png -weight 2.0
-guide source_Gseg.png target_Gseg.png -weight 1.5
-guide source_Gpos.png target_Gpos.png -weight 1.5
-output output.png
具体来说,我们检测目标图像和源图像中的面部标志,并使用它们来生成软分割指导Gseg
和位置指导Gpos
,这本质上是一个密集的扭曲场,它将每个目标像素映射到源图像中的相应位置。为了保留人的身份,我们使用外观指南Gapp
,它是目标照片的灰度版本,经过均衡处理以匹配源绘画的亮度。
该代码已发布到公共领域。你可以用它做任何你想做的事情。
但是,您应该知道该代码实现了 PatchMatch 算法,该算法已获得 Adobe 的专利(美国专利 8,861,869)。其他技术也可能获得专利。您有责任确保使用此代码不会侵犯任何专利持有者的权利。
如果您发现此代码对您的研究有用,请引用:
@misc{Jamriska2018,
author = {Jamriska, Ondrej},
title = {Ebsynth: Fast Example-based Image Synthesis and Style Transfer},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/jamriska/ebsynth}},
}