图像马赛克使用一组预定义的平方图像来构建更大的图像(示例here)。有很多解决方案,实现这个效果非常简单。但是,由于以下限制,它变得更加困难:
- 原始马赛克的形状是抽象的。任何凸多边形都可以。
- 每个马赛克只能使用一次。
- 马赛克不需要绝对打包(即占据画布的 100%),但应尽可能打包而不重叠。
我正在尝试自动化古老的镶嵌艺术,特别是Opus palladianum技术。
我的想法是使用模拟退火或其他启发式方法来优化每个不规则马赛克的位置和旋转,在每次迭代中交换两个,试图最小化一些反映与目标图像相似性以及“包装性”的能量函数瓷砖。我正在尝试在 python 中实现这一点,任何想法和帮助将不胜感激。
例子: