如何在 PyTorch 中找到图像通道的平均值?

pythonpytorchserver side programmingprogramming

RGB 图像有三个通道,红色、绿色和蓝色。我们需要计算这些图像通道上图像像素值的平均值。为此,我们使用方法 torch.mean()。但此方法的输入参数是 PyTorch 张量。因此,我们首先将图像转换为 PyTorch 张量,然后应用此方法。它返回张量中所有元素的平均值。要找到图像通道的平均值,我们设置参数 dim = [1,2]

步骤

  • 导入所需的库。在以下所有 Python 示例中,所需的 Python 库是 torch、torchvision、PillowOpenCV。确保您已经安装了它们。

  • 使用 image.open() 读取输入图像并将其分配给变量 "img"

  • 定义一个转换以将 PIL 图像转换为 PyTorch 张量

  • 使用上面定义的转换将图像 "img" 转换为 PyTorch 张量,并将该张量分配给 "imgTensor"

  • 计算 torch.mean(imgTensor, dim = [1,2])。它返回一个由三个值组成的张量。这三个值是三个通道 RGB 的平均值。您可以将这三个平均值分别分配给三个新变量"R_mean"、"G_mean""B_mean"

  • 打印图像像素的三个平均值"R_mean"、"G_mean"、"B_mean"

输入图像

我们将在两个示例中使用以下图像作为输入。

示例 1

# Python 程序用于查找图像通道的平均值
# 导入必要的库
import torch
从 PIL 导入图像
import torchvision.transforms as transforms

# 读取输入图像
img = Image.open('opera.jpg')

# 定义转换以将图像转换为 PyTorch 张量
transform = transforms.ToTensor()

# 将图像转换为 PyTorch 张量 (图像张量)
imgTensor = transform(img)
print("图像张量的形状:\n", imgTensor.shape)

# 计算图像张量在图像通道 RGB 上的平均值
R_mean, G_mean ,B_mean = torch.mean(imgTensor, dim = [1,2])

# 打印图像通道 RGB 的平均值
print("读取通道的平均值:", R_mean)
print("绿色通道的平均值:", G_mean)
print("蓝色通道的平均值:", B_mean)

输出

图像张量的形状:
   torch.Size([3, 447, 640])
读取通道的平均值:张量(0.1487)
绿色通道的平均值:张量(0.1607)
蓝色通道的平均值:张量(0.2521)

示例 2

我们也可以使用 OpenCV 读取图像。使用 OpenCV 读取的图像属于 numpy.ndarray 类型。在此示例中,我们使用不同的方法来计算平均值。我们使用imgTensor.mean(),这是张量的基本操作。看看下面的例子。

# Python 程序用于查找图像通道的平均值
# 导入必要的库
import torch
import cv2
import torchvision.transforms as transforms

# 使用 cv2 或 PIL 读取输入图像
img = cv2.imread('opera.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 定义转换以将图像转换为 PyTorch 张量
transform = transforms.ToTensor()

# 将图像转换为 PyTorch 张量 (图像张量)
imgTensor = transform(img)
print("Shape of Image Tensor:\n", imgTensor.shape)

# 计算图像张量在图像通道 RGB 上的平均值
# 计算的另一种方法平均值
R_mean, G_mean ,B_mean = imgTensor.mean(dim = [1,2])

# 打印图像 RGB 通道的平均值
print("读取通道的平均值:", R_mean)
print("绿色通道的平均值:", G_mean)
print("蓝色通道的平均值:", B_mean)

输出

图像张量的形状:
   torch.Size([3, 447, 640])
读取通道的平均值:tensor (0.1487)
绿色通道的平均值:tensor (0.1607)
蓝色通道的平均值:tensor (0.2521)

相关文章