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

时间:2017-06-18 16:51:52

标签: python image photographic-mosaic

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

  1. 原始马赛克的形状是抽象的。任何凸多边形都可以。
  2. 每个马赛克只能使用一次。
  3. 马赛克不需要绝对包装(即占据画布的100%),但它们应尽可能不重叠。
  4. 我正在努力使古老的镶嵌艺术自动化,特别是 Opus palladianum 技术。

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

    示例:

    enter image description here

1 个答案:

答案 0 :(得分:3)

我希望您可能使用GA(遗传算法)和#34;非重叠"约束做这项工作。

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

  • 初始职位
  • 轮换
  • (尺寸?)

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

您可能会看到此videothis one为例。

此致