基于这个最初的想法,你们中的许多人可能以前见过: http ://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/
我想尝试采用不同的方法:
你有一个目标图像。假设您一次可以添加一个三角形。存在最大化图像相似度(适应度函数)的一些三角形(或平局的三角形)。如果你能蛮力破解所有可能的形状和颜色,你就会找到它。但这是非常昂贵的。搜索所有三角形是一个 10 维空间:x1, y1, x2, y2, x3, y3, r, g, b, a
.
我使用了模拟退火,结果非常好。但我想知道我是否可以进一步改进这一点。一种想法是实际分析目标图像和当前图像之间的图像差异,并寻找可能是放置新三角形的好地方的“热点”。
你会使用什么算法来找到最大化图像相似度的最佳三角形(或其他形状)?
算法是否应该改变以不同地处理粗略细节和精细细节?我还没有让它运行足够长的时间来开始完善更精细的图像细节。运行时间越长,添加新形状似乎越“害羞”……它使用低 alpha 值(非常透明的形状)。
目标图像和再现图像(28 个三角形):
编辑!我有了一个新想法。如果给定形状坐标和 alpha 值,则可以通过分析当前图像和目标图像中的像素来计算形状的最佳 RGB 颜色。这样就从搜索空间中消除了 3 个维度,并且您知道您使用的颜色始终是最佳的!我已经实现了这一点,并尝试使用圆形而不是三角形进行另一次运行。
300 个圆和 300 个三角形: