【问题标题】:Python photo mosaic with abstractly shaped mosaics带有抽象形状马赛克的 Python 照片马赛克
【发布时间】:2017-11-20 21:20:47
【问题描述】:

图像马赛克使用一组预定义的平方图像来构建更大的图像(例如here)。 有很多解决方案,实现这个效果非常简单。但是,由于以下限制,它变得更加困难:

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

我正在尝试自动化古老的镶嵌艺术,特别是 Opus palladianum 技术。

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

例子:

【问题讨论】:

  • 到目前为止你有什么?模拟退火的实现?适应度函数?
  • If you have a problem with your simulated annealing implementation, come back with a specific question about it。我相信寻找如何解决问题的想法的问题太宽泛而无法回答。但是go the Chat 并与人们谈论它是完全可以的。
  • 与其使用“预定义的形状”,不如“剪切”最终图像(如 Voronoi)来创建这些形状要容易得多。
  • @acdr 我仍在概述算法。实施 SA 或 GA 很容易,我的主要问题是找到解决问题的最佳策略。
  • @karlphillip 这不是家庭作业,我已经完成了(这里是高级 SE)。这是我的个人艺术项目。我想粉碎许多Portuguese tiles 来制作图像马赛克。我真的只需要一个方向,就像有人说这是X类型的问题,应该用Y方法解决。

标签: python image photographic-mosaic


【解决方案1】:

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

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

  • 初始位置
  • 旋转
  • (大小?)

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

您可能会看到 videothis one 作为示例。

问候

【讨论】:

  • 添加:根据将使用多少凸多边形来组成最终的马赛克,您还可以评估位置(&旋转)蛮力或莫里斯筛选测试作为替代方案,但也许遗传算法是最好的.
  • 初始化呢?我应该随机放置瓷砖吗?这里的突变是什么?交换两个瓷砖,或改变一个人的位置/旋转?此外,这不涉及包装问题:应该有一种方法来增加包装的价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2012-08-28
  • 2011-09-29
  • 2020-12-26
  • 1970-01-01
相关资源
最近更新 更多