【电影降临中的代码】- 神奇代码 06

如果你已经看过电影《降临》, 相信会被外星人"七肢桶"的语言 - 那样非线性的, 超越了象形文字的圆环变形文字所震撼吧.

这种外星人语言是由艺术家维默特和他的妻子发明创造出来的, 而影片中使用了 Wolfram 语言来展示了科学家如何进行探索分析的过程, 这个部分其实就是用 Stephen Wolfram 的儿子Christopher 来协助完成的.

注:图自网络

这一次还有未来几次, 我会跟大家一起来探索下如何用 Wolfram 语言来完成的这样分析的效果(科学装B的). 这部分先来看看如何对这个环形文字划分成 12 部分, 以及 Christopher 是如何怎样编码实现:

咋一看, 是不是觉得头蒙呢, 别急. 分步骤来认识怎么去做到的, 某些代码其实可以忽略掉.

首先看看上面代码最重要的原理是怎样的, 用到了一点点图像处理的知识, 其实就是利用蒙板来分别提取环形文字的 12 个部分. 我们来找一张电影的宣传图片来做演示:

计算出图片的大小尺寸:

现在制作一个1/4 圆的蒙板, 记得白色区域是处理后可以显露出来的地方.

执行一个图像处理中相乘的命令 ImageMultiply - 因为蒙板黑色部分像素值是 0 , 白色为 1 , 将两张图片对应像素值相乘的话, 就只有白色区域的图像会原样保留,  这是不是其实也很简单啦.

如果你愿意, 可以制作出各种各样的蒙板出来:

现在把最上面的 breakLogogram 命令拆开, 分段执行下, 将图像的大小赋值给一个变量 imgDim, 方便重复调用:

这部分代码就是要将整个图片划分为 12 个多边形, 下图红色框内为实际要处理的区域部分:

再来分别对每一个多边形区域制作一个蒙板, 记得白色部分即为保留区域:

可以看下每一部分蒙板的效果:

根据每一部分的蒙板, 这样就获取到了相应的 12 图像部分:

可以看到是按照这样进行划分的:

也可以对每一部分进行分别着色来突出显示各个区域, 这里采用了内置的第 104 颜色方案, 还是利用了图像处理中的乘法计算就能搞定啦:

好了, 现在让我们在下一篇的神奇代码课堂再见, 继续用Wolfram语言来探索"七肢桶"的语言. 这里感谢各位每一位看到这里的老师和朋友!

Thanks!

(0)

相关推荐