Mahotas - 查找图像平均值



当我们谈论查找图像平均值时,指的是计算图像中所有像素的平均强度值。

数字图像中的每个像素都由一个数值表示,该数值对应于其强度或颜色信息。

强度值的范围取决于图像的色深,例如灰度图像的8位(0-255)或彩色图像的24位(每个颜色通道0-255)。

查找图像平均值包括将图像中所有像素的强度值相加,然后除以像素总数。

此过程提供单个值,表示图像的平均强度。它可以解释为图像的整体亮度或强度级别。

在Mahotas中查找图像平均值

我们可以使用mahotas.mean()函数在Mahotas中查找图像平均值。此函数接受图像数组并返回其平均值。

众所周知,Mahotas一次只能查找一个通道的平均值,因此我们需要将彩色图像转换为单通道才能查找该通道的平均值。

平均值函数返回一个标量值,表示图像中所有像素的平均值。

语法

以下是平均值函数的基本语法:

Image_name.mean()

示例

在以下示例中,我们查找图像的平均值并显示具有平均强度的图像:

import mahotas as mh
import numpy as np
from pylab import imshow, show
import matplotlib.pyplot as plt
image = mh.imread('nature.jpeg', as_grey = True)
find_mean = image.mean()
print("Mean of the image is:", find_mean)
imshow(image,cmap='gray')
show()

输出

Mean of the image is: 134.99541438411237

显示的图像如下所示:

Finding Image mean

每个通道的图像平均值

我们还可以使用Mahotas查找RGB图像中每个通道的平均值。首先,计算整个图像的平均值,然后使用数组切片分别计算每个通道的平均值。

切片图像[:, :, 0]对应于通道0(红色),图像[:, :, 1]对应于通道1(绿色),图像[:, :, 2]对应于通道2(蓝色)。它使用mean()函数计算每个通道的平均值并打印结果。

示例

在这个例子中,我们尝试查找图像各个通道的平均值:

import mahotas as mh
import numpy as np
image = mh.imread('sun.png')
# Calculating the mean of the entire image
print("Mean of the image: {0}".format(image.mean()))
# Calculating the mean of Channel 0 (Red)
img0 = image[:, :, 0]
print('Mean of channel 0: {0}'.format(img0.mean()))
# Calculating the mean of Channel 1 (Green)
img1 = image[:, :, 1]
print('Mean of channel 1: {0}'.format(img1.mean()))
# Calculating the mean of Channel 2 (Blue)
img2 = image[:, :, 2]
print('Mean of channel 2: {0}'.format(img2.mean()))

输出

执行上述代码后,我们得到如下所示的输出:

Mean of the image: 105.32921300415184
Mean of channel 0: 126.04734671559905
Mean of channel 1: 106.04269535883749
Mean of channel 2: 83.89759693801898

查找图像中感兴趣区域(ROI)的平均值

我们可以使用图像数组上的切片操作来查找图像中感兴趣区域 (ROI) 的平均值。之后,计算ROI内所有通道(如果图像是彩色的)的平均值或灰度值(如果图像是灰度图像)的平均值。

以下是定义图像ROI的语法:

image[start_row:end_row, start_column:end_column]

其中,'start_row''end_row'表示行的范围,'start_column''end_column'表示定义ROI的列的范围。

因此,为了指定图像中的感兴趣区域,我们选择行和列的子集。

示例

在这里,我们查找图像感兴趣区域的平均值:

import mahotas as mh
import numpy as np
image = mh.imread('tree.tiff')
# Defining a specific region of interest
roi = image[100:300, 200:400]
roi_mean = np.mean(roi)
print("Mean of the image is:", roi_mean)

输出

上述代码的输出如下:

Mean of the image is: 98.556925
广告