用原始形状再现图像.(图形优化问题)

Fog*_*ird 24 language-agnostic algorithm graphics optimization simulated-annealing

根据这个最初的想法,你们许多人可能已经看过: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个三角形:

替代文字 替代文字

jha*_*ott 2

我会开始尝试顶点颜色(每个顶点有不同的 RGBA 值),这会稍微增加复杂性,但会大大增加快速匹配目标图像的能力(假设摄影图像往往具有自然渐变)。

你的问题似乎建议放弃遗传方法(即试图找到一个合适的三角形而不是进化它)。然而,它可以有两种解释,所以我将从遗传学的角度来回答。

集中突变的一种方法是在图像上应用网格,计算哪个网格方块是目标图像中相应网格方块的最小最佳匹配,并确定哪些三角形与该网格方块相交,然后标记它们以获得更大的突变机会。

您还可以(同时)通过对最佳匹配的网格方块进行较小的基于网格的检查来改进精细细节。

例如,如果您在图像上使用 8x8 网格:

  • 确定 64 个网格方块中哪一个是最差的匹配,并标记相交(或附近/周围)的三角形以获得更高的突变机会。
  • 确定 64 个网格方块中的哪一个是最佳匹配,并仅在该方块内使用另一个较小的 8x8 网格(即该最佳网格方块内的 8x8 网格)重复。可以标记这些可能的位置以添加新三角形,或者只是为了微调细节。