gpt4 book ai didi

python - 试图理解掩蔽

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:43 24 4
gpt4 key购买 nike

我一直在努力了解 mask 以及它如何与图像过滤器一起工作。我正在使用以下代码来尝试加深我的理解。

import scipy.ndimage as ndi
import matplotlib.pyplot as plt
import numpy as np

# Generate a random binary mask
np.random.seed(seed=182)
mask = np.random.randint(2, size=(901, 877))

img = np.random.rand(901, 877)

img_masked = np.ma.masked_array(img, mask = mask)
img_masked_filtered = ndi.median_filter(img_masked, size=10)
img_unmasked_filtered = ndi.median_filter(img, size=10)

median_masked = np.ma.median(img_masked)
median_unmasked = np.ma.median(img)

在结果中,如我所料,median_unmasked != median_masked,但我不想要 img_masked_filtered == img_unmasked_filtered。 scipy.ndimage.median_filter 完全可以完成我需要的工作,但不适用于蒙版图像。我可以使用什么来做与中值滤波器相同的事情,但它适用于蒙版图像?

我为数组使用的奇怪大小是因为这是我最终想要过滤的图像的大小。

最佳答案

ndimage 过滤器不考虑掩码数组的掩码。相反,用 nan 值“屏蔽”一个普通的 NumPy 数组,然后使用 ndimage.generic_filter调用 np.nanmedian:

import scipy.ndimage as ndi
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(seed=182)
# h, w = 901, 877
h, w = 10, 10
mask = np.random.randint(2, size=(h, w))
img = np.random.rand(h, w)
img_masked = np.where(mask, img, np.nan)

size = 3
img_masked_median = ndi.generic_filter(img_masked, np.nanmedian, size=size)
img_unmasked_median = ndi.median_filter(img, size=size)

fig, ax = plt.subplots(nrows=2, ncols=2)
ax[0,0].imshow(img)
ax[0,0].set_title('img')
ax[0,1].imshow(img_masked)
ax[0,1].set_title('img_masked')
ax[1,0].imshow(img_unmasked_median)
ax[1,0].set_title('img_unmasked_median')
ax[1,1].imshow(img_masked_median)
ax[1,1].set_title('img_masked_median')
plt.show()

enter image description here

关于python - 试图理解掩蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com