扩大二维阵列掩模中的孔

Enlarge holes in 2D array mask

我有一个二维二进制掩码,我想通过创建尺寸为 WxW 的正方形来扩大其中的孔,其中 W 是一个参数。

假设 W = 3 我想变换这个矩阵:

[[0, 0, 0, 0, 0],
 [0, 0, 1, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]

进入这个矩阵:

[[0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]

我目前正在使用 numpy 来管理数组。我想我可以做到,但我找不到有效的方法,而且我不确定如何处理边缘情况(如果 1 在右上角,我仍然想要 WxW 方块,而不是更小的方块。 ..)

感谢大家。

如果可以考虑opencv,可以用dilation

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((3, 3), np.uint8)
dilation = cv2.dilate(img, kernel, iterations=1)

你也可以考虑scipy's version


对于纯 numpy,您将不得不使用 ones 内核,然后进行阈值处理。