我正在尝试提取具有“未知”形状的蒙版。我将更好地解释自己:
我的原始数据由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)。
谢谢!
我正在尝试提取具有“未知”形状的蒙版。我将更好地说明自己:我的原始数据由NaN组成的矩阵或多或少围绕着真实数据。我用了...
一种可能的部分解决方案是使用opening
操作,该操作定义为腐蚀然后扩张。我使用了skimage
提供的那一项: