梵高眼里的《星空》究竟有多美

互联网X实验室 2014-12-08

星空梵高星空

773 字丨阅读本文需 2 分钟

 

  梵高有一幅油画叫 Starry Night,也就是《星空》。我常常想,梵高在精神病院完成这幅名作时,他眼里看到(或者脑海中)的星空浩瀚的全局究竟该有多美,或者究竟该有多悲伤。可惜我们永远都只能看到画框中那一小方天地。

  最近剑桥大学工程系办了个年度摄影大赛“工程的艺术:来自科技前沿的图像”。大赛的二等奖最后被来自机器学习小组的 Yarin Gal 博士生获得,而他做的事情很有意思:利用机器学习算法扩展梵高的名画 Starry Night,如下图。

  Gal 还建了一个专门的网站,用来展示这种 Extrapolated Art,即利用机器学习+图像处理来扩展整幅画的全局景象,因为画往往只提供了一个局部影像。

  数字修补技术(digital inpainting)第一次被提出是在 2000 年SIGGRAPH大会上,一篇名为图像修补(Image Inpainting)的文章里。这一技术主要是为了修补那些年代久远的名古画,但在其他图像领域也有广泛的。还有一种图像修补算法叫 Patch Match,是专门用来创作机器艺术(machine art)的。

  接下来我们不妨来看一个实现这种名作扩展的编程例子,这个例子将使用Wolfram语言。在 Wolfram 语言里,inpaint 是一个内建函数,需要修补的图像区域可以被三种对象赋值:图像、图形对象、矩阵。

  inpaint 里有 5 种不同的方法(method)选项,用来实现不同的图像处理算法:“Diffusion,” “Total Variation,” “Fast Marching,” “Navier Stokes,” 以及 “Texture Synthesis”。其中最后一种方法 Texture Synthesis 是系统默认的,Texture Synthesis 跟其他算法不同的点在于,它不会单独操控每个色彩通道,并且它不会增加新的像素值。也就是说,每一个修补像素值都是从输入图像的某些部分里直接获得的,在下面这张图里,你可以很清楚的看到,利用 Texture Synthesis 可以让图像中的比较大的物体直接“消失”。

  Texture Synthesis 这种方法是基于一种改良后的最优解算法,该算法在 P. Harrison 的博士论文Image Texture Tools里曾被介绍过。Texture Synthesis 有两个参数,第一个参数是用来做比较的临近像素的数量(Neighbor Count),第二个参数是用来寻找最优图像纹理的采样率大小(Max Samples)。

  回到梵高的画来。首先我们导入梵高的 Starry Night,去掉边框。

  然后,我们需要先用白色的像素来扩充图像,扩展出后面可以用来修补的空白区域。

  然后就可以使用 Texture Synthesis 方法生成最优的临近图像纹理,修补并扩展图像的全景。

  效果还不错吧。通过调整 Neighbor Count 和 Max Samples 的值,还可以有不同的扩展效果。有安装 Wolfram 语言开发软件的同学可以点这里下载工程文件,没有安装软件的同学还可以在Wolfram Programming Cloud里试试。

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:互联网X实验室
0

参与评论

登录后参与讨论 0/1000