开发者

机器学习告诉你梵高眼里的《星空》究竟有多美?

梵高有一幅画叫《星夜》,是《星空》。我常常在想,梵高在精神病院完成这幅杰作时开发者_StackOverflow,他眼中(或脑海中)的浩瀚星空该有多美,或该有多悲伤。可惜的是,我们永远只能看到画框里的小方块。

近日,剑桥大学工程系举办年度摄影大赛“工程的艺术:来自科技前沿的影像”。大赛二等奖最终由机器学习组的Yarin Gal博士获得,他所做的非常有趣:利用机器学习算法对梵高名画《星夜》进行拓展,如下图所示。

Gal还专门建了一个网站来展示这种外推艺术,也就是用机器学习+图像处理来展开整幅画的整体画面,因为画往往只提供了部分图像。

数字修复技术最早是在2000年的SIGGRAPH会议上在一篇名为《图像修复》的文章中提出的。这项技术主要用于修复那些古画,但也广泛应用于其他图像领域。还有一种称为PatchMatch的图像修复算法,专门用于创建机器艺术

接下来,让我们看一个编程示例来实现这个著名的扩展。这个例子将使用Wolfram语言。在Wolfram语言中,修复是一种内置的功能,需要修复的图像区域可以由三种对象来分配:图像、图形对象和矩阵。

在修复中有五种不同的方法来实现不同的图像处理算法:扩散、全变分、快速行进、纳维尔-斯托克斯和纹理合成。纹理合成,最后的方法之一,是系统的默认值。纹理合成不同于其他算法,它不独立控制每个颜色通道,也不添加新的像素值。也就是说,每个面片像素值直接从输入图像的某些部分获得。在下图中,您可以清楚地看到,图像中较大的对象可以通过使用纹理合成直接“消失”。

纹理合成是基于一种改进的最优解算法,该算法在哈里森的博士论文《图像纹理工具》中有所介绍。纹理合成有两个参数。第一个参数是用于比较的邻居计数,第二个参数是用于找到最佳图像纹理的采样率(MaxSamples)。

回到梵高的画。首先,我们导入梵高的《星夜》,去掉边框。

然后,我们需要用白色像素扩展图像来扩展空白区域,以便以后可以用来修复。

然后,利用纹理合成方法生成最佳的相邻图像纹理,并对图像的全景图进行修复和扩展。

效果还不错。通过调整邻居计数和最大样本的值,可以实现不同的扩展效果。已经安装了Wolfram语言开发软件的同学可以点击这里下载工程文件,没有安装软件的同学也可以在Wolfram编程云中进行尝试。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜