Python:将图像上的矩形缩小到边框

Python: Reduce rectangles on images to their border

我有很多包含几个矩形的灰度输入图像。其中一些重叠,一些越过图像的边界。示例图像可能如下所示:

现在我必须将矩形缩小到它们的边界。我的想法是使所有距离边界小于 N(例如 3)像素的非白色像素或白色像素(使用曼哈顿距离)变为白色。输出应如下所示(抱歉边框大小不同):

实现起来并不难。不幸的是,实施必须很快,因为输入可能包含非常多的图像(例如 100'000)并且用户必须等到此步骤完成。

我考虑过使用 fromimage 然后用 numpy 做所有事情,但我没有找到好的解决方案。

也许有人有想法或提示如何非常有效地解决这个问题?

  1. 计算图像的距离变换(opencv distanceTrasform http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html)
  2. 在结果图像中,将值大于 3 的所有像素归零