基于这个原始想法,你们中的许多人可能已经看到过:
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个三角形):
编辑!我想到了一个新的想法。如果给定形状坐标和透明度值,则可以通过分析当前图像和目标图像中的像素来计算形状的最佳RGB颜色。这样就从搜索空间中消除了3维,你知道使用的颜色始终是最优的!我已经实现了这个功能,并尝试使用圆形代替三角形进行另一次运行。
300个圆和300个三角形: