🙋♂️ 试用体验
Triangula 由 Go 语言编写,并提供 CLI 和 GUI 客户端。第一次试用这个软件时,我对它的效果十分惊讶。选择图片,按下 Start,算法便开始工作了。我们可以看到生成的图片越来越像原始图片,更多的细节被算法加入了进去。在任何时候我们都可以按下 Stop,保存当前生成的照片。
客户端的处理速度非常的快,比 Demo 快 20 - 50 倍。官方宣称 Triangula 在处理小于 3000 px 和少于 3000 个点的图像时效果最好。
除了一键生成图片,Triangula 也支持一些选项,可以调整图片生成速度,三角形数量等。在使用过程中,我们需要根据图片的复杂程度调整三角形的数量。如果数量太多,则生成图片的几何味道太轻。如果数量太少,则生成图片过于模糊。
⚙️ 原理
Triangula 使用了改良的遗传算法(genetic algorithm)。这种改良的算法与无性遗传算法(asexual genetic algorithm)相似,只是最后多了一步合并良性变异(mutation)。整个算法有四个主要步骤:
1️⃣ 在每一次的迭代的开始,算法会从上一代选择是适配度(fitness)最高的个体。对这些个体进行拷贝,并随机变异。
2️⃣ 计算突变拷贝体的适配度,并于本体进行比较。如果适配度更高,则将拷贝体的突变标记为良性变异。
3️⃣ 整合所有良性变异并施加到对应的新的空白拷贝体上,并计算适配度。
4️⃣ 以适配度为个体排序。开始下一个迭代。