该功能可以基于所选图像周围的图像来填充选择的部分,甚至可以生成丛林和云朵等自然景象,而且与周围图像无缝衔接。
请参见 http://www.youtube.com/watch?v=NH0aEp1oDOI 视频以了解我所说的 Photoshop 功能的预览。
我的问题是:算法上这个功能是如何工作的?
我是 PatchMatch 论文的共同作者,之前在创意技术实验室与 Ivan Cavero Belaunde 和 Eli Shechtman 以及 Photoshop 团队的 Jeff Chien 一起领导了 Photoshop 中原始的内容感知填充功能的开发。
Photoshop 的内容感知填充使用了高度优化的、多线程变体的 PatchMatch 论文所描述的算法,以及一个叫做“时空视频补全”的旧方法。这两篇论文都在该功能的以下技术页面中被引用:
http://www.adobe.com/technology/projects/content-aware-fill.html
您可以在 Adobe Research 网页上了解更多关于我们的信息。
我猜对于较小的孔洞,他们会捕捉周围相似纹理的补丁来填充。这在Connelly Barnes及其它人在SIGGRAPH 2009中发表的论文“PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing”中有描述。对于较大的孔洞,他们可以利用大量具有相似全局统计或纹理的图片数据库,如在“使用数百万张照片进行场景补全”中所述。如果他们能将两者融合在一起,我认为它应该能像视频中展示的那样运作。
显然,由于某些明显的原因,他们不会透露技术细节。这种技术的一般名称是“修补”,您可以查询相关信息。
具体而言,如果您查看Criminisi在Microsoft期间所做的工作http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.67.9407以及Todor Georgiev现在在Adobe所做的工作http://www.tgeorgiev.net/Inpainting.html,您应该能够猜出其中大部分内容。我想这个猜测有90%的准确率,应该足够了。
编辑:看视频中的最后一个例子;如果你在原始图像的顶部沿着任一边看,你会发现选择线正好穿过云层中的“间隙”,而在中间有一个“凸起”。如果我的猜测正确,这些就是我所期望看到的伪影。(另一方面,如果它在选择边界上使用了某种sudo镜像,我也会期望看到它们。)