【问题标题】:Enlarge holes in 2D array mask扩大二维阵列掩模中的孔
【发布时间】:2021-07-14 12:42:12
【问题描述】:

我有一个 2D 二进制掩码,我想通过创建尺寸为 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 的形态函数(它们易于使用,mat 只是一个数组)或查看如何运行卷积函数。

标签: python arrays numpy mask mathematical-morphology


【解决方案1】:

如果可以考虑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 内核的 this 和之后的阈值进行一些工作。

【讨论】:

    猜你喜欢
    • 2012-03-27
    • 2013-06-18
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多