【问题标题】:Python: create a mask with unknown shapePython:创建一个形状未知的蒙版
【发布时间】:2020-07-20 19:43:49
【问题描述】:

我正在尝试提取具有“未知”形状的蒙版。我会更好地解释我自己:

我的原始数据由一个带有 NaN 的矩阵组成,它或多或少围绕着真实数据。我使用了sobel算子来检测边缘:

#data is a matrix with Nan
mask = np.isnan(data)
data[mask] = 0
data[~mask] = 1 
out = sobel(data) #sobel is a function that returns the gradient

图中报告了sobel运算的输出。由于原始数据在真实数据中也有 NaN,所以 sobel 算子检测内部边缘。 我想尝试一种仅检测外边缘的方法(看起来像菱形的图形)。考虑到不仅这种形状可以变化(可以是正方形或矩形),而且位置也可以变化(即可以偏心,或者相对于图像尺寸非常小)。我将获得的结果应该是所有外部像素设置为 True(或 False),而所有内部像素设置为 False(或 True)的蒙版。

谢谢!

【问题讨论】:

    标签: python-3.x image-processing masking edge-detection


    【解决方案1】:

    一个可能的部分解决方案是使用opening 操作,定义为先腐蚀后膨胀。我用的是skimage提供的那个:

    from skimage.morphology import opening
    #data has shape shape_1, shape_2
    mask_data = np.ones((shape_1, shape_2), dtype=bool)
    mask = np.isnan(data)
    mask_data[_mask] = 0
    mask_data = opening(mask_data).astype(bool)
    

    这样的方法返回的东西与我正在寻找的东西相似。如图所示,这实际上留下了一些黑色的内点,但这是我找到的最好的。

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2011-08-08
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多