扩大二维阵列掩模中的孔
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
内核,然后进行阈值处理。
我有一个二维二进制掩码,我想通过创建尺寸为 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
内核,然后进行阈值处理。