我有一个描述我的形状的 2D SDF,但可以将其视为黑白图像(black="inside" white="outside")。
我想生成一小组覆盖图像的矩形(比如说,其中 8 个),它们可以重叠,并且可以最大限度地减少错误量。错误将是未覆盖的图像的任何剩余“黑色”区域。
图像可能是凸的,有孔的,等等。它是一般的。
我意识到最小的矩形覆盖是 NP 难的,尽管这并不是我所要求的:我要求在给定有限的矩形集的情况下最小化错误。也许这同样困难;不确定。
无论如何,我不需要找到完美的解决方案;体面的启发式方法会很好。
我可以想象一些非常普遍的“贪婪搜索”遍历状态空间,但想知道是否有任何人知道的技巧。
另外:我还看过几篇关于“矩形分解”和“最小解剖”的论文,但这些问题通常假设我想要不相交的矩形。不相交是可以的,但我真的想要最大的覆盖范围,同时允许重叠。
编辑这里是一个例子:
目标图像:
覆盖 4 个矩形(红色、绿色、蓝色、黄色):
任何未发现的黑色像素都是“错误”。不允许覆盖任何白色像素。


