Matplotlib - 图像遮罩



在 Matplotlib 库中,图像遮罩涉及根据指定的遮罩选择性地显示图像的某些部分,遮罩本质上是一个二值图像,用于定义要显示或隐藏的区域。它允许我们应用过滤器或条件来显示或隐藏图像的特定部分。

图像遮罩的过程

以下是执行图像遮罩的过程步骤。

创建遮罩

定义创建遮罩的标准或模式。它可以基于颜色、形状、渐变或特定的像素值。

应用遮罩

使用遮罩修改原始图像中相应像素的透明度或可见性。与遮罩中定义为“遮罩”区域相对应的像素通常会被隐藏或变得透明,而其他像素则保持可见。

叠加或混合

将遮罩图像与另一幅图像或背景叠加或混合,仅显示未遮罩的部分。可以将遮罩图像叠加在另一幅图像上,以组合和显示可见区域。

图像遮罩的类型

以下是图像遮罩的类型。

二值遮罩

由黑色和白色像素组成,其中白色表示可见区域,黑色表示遮罩区域。

灰度遮罩

使用各种灰度来定义透明度或部分可见性的级别。

图像遮罩的工具和技术

我们可以使用不同的工具和技术进行图像遮罩。

手动遮罩

Photoshop 或 GIMP 等工具允许用户使用选择工具、画笔或图层遮罩手动创建和编辑遮罩。

编程遮罩

在 Python 等编程语言中,使用 OpenCV 或 PIL (Pillow) 等库,我们可以使用基于颜色阈值、轮廓或特定图像特征的算法创建遮罩。

关键点

  • Matplotlib 中的图像遮罩涉及创建与图像具有相同维度的遮罩数组,其中标记特定区域以隐藏(遮罩)或显示(未遮罩)图像的部分。

  • 遮罩数组由布尔值或数值组成,其中**True** 或非零值表示要显示的区域,而**False** 或零值表示要隐藏的区域。

  • 遮罩允许根据指定的条件或标准选择性地可视化或操作图像的特定部分。

遮罩图像的特定区域

假设我们有一幅图像,并希望遮罩某个特定区域,仅根据某些标准显示图像的一部分。

示例

import matplotlib.pyplot as plt
import numpy as np

# Create a sample image (random pixels)
image = np.random.rand(100, 100)

# Create a mask to hide certain parts of the image
mask = np.zeros_like(image)
mask[30:70, 30:70] = 1  # Masking a square region

# Apply the mask to the image
masked_image = np.ma.masked_array(image, mask=mask)

# Display the original and masked images
plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(1, 2, 2)
plt.imshow(masked_image, cmap='gray')
plt.title('Masked Image')
plt.axis('off')
plt.show()
输出
Image Masking

将遮罩应用于图像

这里这是另一个使用 matplotlib 库遮罩图像的示例。

示例

import matplotlib.pyplot as plt
import numpy as np

# Create a sample image
image_size = 100
img = np.zeros((image_size, image_size, 3), dtype=np.uint8)
img[:, :image_size // 2] = [255, 0, 0]  # Set the left half to blue

# Create a binary mask
mask = np.zeros((image_size, image_size), dtype=np.uint8)
mask[:, image_size // 4:] = 1  # Set the right quarter to 1

# Apply the mask to the image
masked_img = img * mask[:, :, np.newaxis]

# Display the original image, mask, and the masked image
plt.figure(figsize=(12, 4))
plt.subplot(131)
plt.imshow(img)
plt.title('Original Image')
plt.axis('off')
plt.subplot(132)
plt.imshow(mask, cmap='gray')
plt.title('Mask')
plt.axis('off')
plt.subplot(133)
plt.imshow(masked_img)
plt.title('Masked Image')
plt.axis('off')
plt.show()
输出
Applying Image Masking
广告