我有一个256×256像素的2D掩模,其中像素值为0或255,并且有一个匹配的灰度图像。两者都具有形状(256, 256)。
我想将掩模应用于灰度图像,以使生成的图像仅包含原始灰度图像中对应掩模值为255的像素(应保留原始灰度像素值)。
我无法使用现有工具实现此目标。
img_clean = img_grayscale[mask]
正如在numpy文档中提到的那样,它将一个新的维度添加到数组中。
我该如何解决这个问题?
增加第三个选项并直接修改您的灰度图像:
img_grayscale[mask == 255] = 0
提示:如果您不想进行原地修改,可以创建一个副本。
我认为这应该能够完成工作
np.where(mask == 255, img_grayscale, 0)
img_grayscale
的数据类型与uint8
不同或者img_grayscale
的强度范围大于255,那么这将无法工作。在大多数情况下,灰度图像是0-255范围内的uint8,但以防万一值得添加注释(例如,我倾向于使用0-1范围内的float32图像)。 - Imanol Luengo
0
的像素 - 对于这些像素,生成的图像值应该为0
。 - pepeimg_clean = img_grayscale&mask
- ikkuh