Python照片马赛克与抽象形状的马赛克

Ano*_*oyz 7 python image photographic-mosaic

图像镶嵌图使用一组预定义的平方图像来构建更大的图像(例如此处).有很多解决方案,实现这种效果是非常微不足道的.但是,由于以下限制,它变得更加困难:

  1. 原始马赛克的形状是抽象的.任何凸多边形都可以.
  2. 每个马赛克只能使用一次.
  3. 没有必要将马赛克完全打包(即占据画布的100%),但它们应尽可能不重叠.

我试图使古老的镶嵌艺术自动化,特别是Opus palladianum技术.

我的想法是使用模拟退火或其他一些启发式来优化每个不规则马赛克的位置和旋转,在每次迭代中交换两个,试图最小化一些反映与目标图像的相似性的能量函数以及" 包装 "瓷砖.我试图在python中实现这一点,任何想法和帮助将不胜感激.

例:

在此输入图像描述

A S*_*ANI 3

我预计您可能会使用具有“非重叠”约束的 GA(遗传算法)来完成这项工作。

个体(每个凸多边形)的参数为:

  • 初始位置
  • 回转
  • (尺寸 ?)

当多边形不重叠(并且靠近其他个体)时,您的拟合函数将被构建为给每个个体最好的注释

您可能会看到此视频此视频作为示例。

问候