使用类似于卡尔·西姆斯(Karl Sims)的遗传图像的方法可能会有些运气。
他使用一组类似于LISP的语言的简单运算符,以便可以使用任何运算符的输出来影响图像,这与某些着色器语言类似(例如,标量将是灰度值,a vector3
将是RGB
等)。 )。
尽管我猜这是实现的东西,所以您可能想要的是他的关键字,该关键字(iirc)包含所有基本知识:
- 触发函数(
sin, cos, tan
等)。
- 位置(
x, y
)
- 基本数学运算符(
sqrt, pow, abs, inverse
)
- 噪音功能(
fBm, noise2, noise3
)
- 其他分形(
mandelbrot, julia
)
- 插值功能(
lerp, quad, step, smoothstep
)
(以上某些内容可能未在他的实现中实现;我很久以前就发现了他的工作,并且多年来实际上已经对您所描述的内容进行了一些尝试,因此回忆可能会泄漏:)
保持趣味性(快速)
我对多层方法有一点运气,这种方法极大地减少了死角演化的数量。
- 为每个运算符生成一组范围(或从前一轮进行了变异)
- 理想情况下,这些值会将每个函数的值保持在“合理”的范围内,但可以演变为产生令人惊讶的有用结果的范围,这似乎是“正确”的事情
- 生成一些算法树
- 为每一个在随机位置生成一些高度图并评估适合度
- 如果我们有很多很好的匹配项,那么请稍微扩展该分支,以稍微干扰每个孩子从第1步开始的范围
- 否则,我们的量程可能很差,请回到步骤1
然而...
现在,我方便地跳过了适应度算法,我主要使用Karl Sims的“非自然选择”方法,在该方法中,您可以看到一堆后代的中间方框中的当前一代(在今天,Kai的Power Tools对其进行了流行-这是我的意思的图片)。
但是,您可能会拥有一组训练图像,可能是来自卫星图像的一些训练图像,还有一些具有特定质量的人造图像,然后可能会对它们与要测试的地形进行小波或2D FFT分析?
这是一个有趣的话题,但我怀疑您需要什么答案:)
编辑:啊。因为我是新用户,所以不得不删除一堆链接:-|