图像马赛克使用一组预定义的平方图像来构建一个更大的图像(示例here)。 有很多解决方案,实现这种效果相当微不足道。然而,在以下约束条件下变得更加困难:Python马赛克与抽象形马赛克
- 原始马赛克的形状是抽象的。任何凸多边形都可以。
- 每个马赛克只能使用一次。
- 马赛克不需要绝对包装(即占据画布的100%),但它们应该尽可能地挤满而不重叠。
我试图使自动化镶嵌的古老艺术,特别是Opus palladianum技术。
我的想法是使用模拟退火或其他启发法来优化每个不规则马赛克的位置和旋转,在每次迭代中交换两个,试图最小化反映与目标图像的相似度的一些能量函数以及“包装”的瓷砖。 我试图在Python中实现这一点,任何想法和帮助将不胜感激。
例子:
到目前为止你有什么?模拟退火的实现?健身功能? – acdr
[如果您的*模拟退火*实现有问题,请回到关于它的特定问题](https://meta.stackoverflow.com/a/334823/176769)。我相信提出如何解决问题的想法的问题太广泛而无法回答。但是[去聊天](https://chat.stackoverflow.com/)并且与人们讨论它是完全正确的。 – karlphillip
而不是使用“预定义形状”,它将更容易“剪切”最终图像(如Voronoi)以创建这些形状。 – user1767754