内容感知填充是如何工作的?

32
在即将发布的 Photoshop 版本中,有一个叫做“内容感知填充”(Content-Aware fill)的功能。
该功能可以基于所选图像周围的图像来填充选择的部分,甚至可以生成丛林和云朵等自然景象,而且与周围图像无缝衔接。
请参见 http://www.youtube.com/watch?v=NH0aEp1oDOI 视频以了解我所说的 Photoshop 功能的预览。
我的问题是:算法上这个功能是如何工作的?

15
我的理论是,利用谷歌地球/地图来确定你拍摄的照片内容,然后只需拉取周围的图像数据并将其插入到原始图像中 :) - Tim
11
这是魔法,证明我错。 - Amy B
1
解决这个问题:http://cs.stackexchange.com/questions/23794/interpolation-optimization-problem 可以轻松用于“修复”(Inpainting)。 - Royi
7个回答

54

我是 PatchMatch 论文的共同作者,之前在创意技术实验室与 Ivan Cavero Belaunde 和 Eli Shechtman 以及 Photoshop 团队的 Jeff Chien 一起领导了 Photoshop 中原始的内容感知填充功能的开发。

Photoshop 的内容感知填充使用了高度优化的、多线程变体的 PatchMatch 论文所描述的算法,以及一个叫做“时空视频补全”的旧方法。这两篇论文都在该功能的以下技术页面中被引用:

http://www.adobe.com/technology/projects/content-aware-fill.html

您可以在 Adobe Research 网页上了解更多关于我们的信息。


2
感谢您分享一些非常有价值的信息。这应该是正确的答案。 - Hoang Huynh
2
总结这篇论文会很好。内容已经消失了,只能通过Wayback Machine获取。 - totymedli

13

我猜对于较小的孔洞,他们会捕捉周围相似纹理的补丁来填充。这在Connelly Barnes及其它人在SIGGRAPH 2009中发表的论文“PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing”中有描述。对于较大的孔洞,他们可以利用大量具有相似全局统计或纹理的图片数据库,如在“使用数百万张照片进行场景补全”中所述。如果他们能将两者融合在一起,我认为它应该能像视频中展示的那样运作。


8

当我上次查看Resynthesizer(版本0.13,我想)时,它已经落后于最先进的技术(例如Criminisi在我的回答中引用的工作),因此速度相当慢。当然,就目前免费提供的选项而言,它仍然是最好的。 - AVB

4

2

为什么我无法正确地发布链接? - Ross
你好,能帮忙看一下这个问题吗:http://cs.stackexchange.com/questions/23794/interpolation-optimization-problem 谢谢。 - Royi

0
作为一个猜测(仅此而已),我预计它会对图像进行一些频率分析(类似于傅里叶变换)。通过仅查看选择边缘的图像并忽略中间部分,它可以推断回到中间。如果设计师选择了正确的颜色平面等,他们应该能够生成一种无缝地融入图像边缘的纹理。

编辑:看视频中的最后一个例子;如果你在原始图像的顶部沿着任一边看,你会发现选择线正好穿过云层中的“间隙”,而在中间有一个“凸起”。如果我的猜测正确,这些就是我所期望看到的伪影。(另一方面,如果它在选择边界上使用了某种sudo镜像,我也会期望看到它们。)


1
人们在80年代使用类似傅里叶变换的方法来完成这些事情。虽然在某些情况下,这仍然可以为您提供一个良好的初始猜测,但自那时以来发生了很多事情。 - AVB
如果我必须猜测的话,我仍然会说它正在做同样基本的事情,只是更高级的版本。 - BCS

0
一般的方法是内容感知填充或缝合裁剪。Ariel Shamir的团队在这方面做出了开创性的工作,该工作在SIGGRAPH 2007上进行了展示。请参见: http://www.faculty.idc.ac.il/arik/site/subject-seam-carve.asp 编辑:请查看内容感知填充的共同作者的答案。我很快就会删除这个回答。

3
记录一下,拼接裁剪(seam-carving)不是内容感知填充(content-aware fill)。它是一种更简单的算法,允许你在不扭曲重要特征的情况下垂直和水平地调整图像大小。 - erjiang
Seam-carving 用于内容感知的缩放,而不是内容感知的填充 :) - Brooke Chalmers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接