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

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

脚步

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

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

  • 定义将 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 program to find mean across the image channels

# import necessary libraries

import torch

from PIL import Image

importtorchvision.transformsas transforms

# Read the input image

img = Image.open('opera.jpg')

# Define transform to convert the image to PyTorch Tensor

transform = transforms.ToTensor()

# Convert image to PyTorch Tensor (Image Tensor)

imgTensor = transform(img)

print("Shape of Image Tensor:\n", imgTensor.shape)

# Compute mean of the Image Tensor across image channels RGB

R_mean, G_mean ,B_mean = torch.mean(imgTensor, dim = [1,2])

# print mean across image channel RGB

print("跨读取通道的平均值:", R_mean)

print("绿色通道的平均值:", G_mean)

print("蓝色通道的平均值:", B_mean)

输出结果
Shape of Image Tensor:

   torch.Size([3, 447, 640])

跨读取通道的平均值: tensor(0.1487)

绿色通道的平均值: tensor(0.1607)

蓝色通道的平均值: tensor(0.2521)

示例 2

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

# Python program to find mean across the image channels

# import necessary libraries

import torch

import cv2

importtorchvision.transformsas transforms

# Read the input image either using cv2 or PIL

img = cv2.imread('opera.jpg')

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Define transform to convert the image to PyTorch Tensor

transform = transforms.ToTensor()

# Convert image to PyTorch Tensor (Image Tensor)

imgTensor = transform(img)

print("Shape of Image Tensor:\n", imgTensor.shape)

# compute mean of the Image Tensor across image channels RGB

# The other way to compute the mean

R_mean, G_mean ,B_mean = imgTensor.mean(dim = [1,2])

# print mean across image channel RGB

print("跨读取通道的平均值:", R_mean)

print("绿色通道的平均值:", G_mean)

print("蓝色通道的平均值:", B_mean)

输出结果
Shape of Image Tensor:

   torch.Size([3, 447, 640])

跨读取通道的平均值: tensor(0.1487)

绿色通道的平均值: tensor(0.1607)

蓝色通道的平均值: tensor(0.2521)

以上是 如何在 PyTorch 中找到图像通道的平均值? 的全部内容, 来源链接: utcz.com/z/363449.html

回到顶部