Mahotas - 图像平均值
图像平均值是指图像所有像素的平均亮度。亮度是图像的一种属性,决定了图像在人眼中的亮度或暗度。
它由像素强度值决定;像素强度值越高表示区域越亮,像素强度值越低表示区域越暗。
图像平均值广泛用于图像分割,包括将图像划分为不同的区域。
它还可用于图像阈值处理,即将图像转换为由前景和背景像素组成的二值图像。
Mahotas 中的图像平均值
Mahotas 没有内置函数来查找图像的平均值。但是,我们可以结合使用 mahotas 和 numpy 库来找到图像的平均值。
我们可以使用 numpy 库中的 mean() 函数来查找图像的平均像素强度值。
mean() 函数的工作原理是迭代遍历每个像素并对其强度值求和。遍历完所有像素后,将总和除以像素总数。
可以使用以下公式计算图像的平均像素强度值 −
平均值 = 所有像素值的总和 / 像素总数
例如,假设一幅图像由 2 个像素组成,每个像素的强度值为 5。然后可以按如下方式计算平均值 −
平均值 = 10 / 2 平均值 = 5
numpy.mean() 函数
numpy.mean() 函数将图像作为输入,并以十进制数形式返回其所有像素的平均亮度。均值函数适用于任何类型的输入图像,例如 RGB、灰度或带标签的图像。
语法
以下是 numpy 中 mean() 函数的基本语法 −
numpy.mean(image)
其中,
image − 它是输入图像。
示例
在下面的示例中,我们使用 np.mean() 函数查找图像的平均像素强度值。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # 加载图像 image = mh.imread('sun.png') # 查找平均值 mean_value = np.mean(image) # 打印平均值 print('图像的平均值是 =', mean_value) # 为子图创建图形和轴 fig, axis = mtplt.subplots(1, 1) # 显示原始图像 axes.imshow(image) axes.set_title('Original Image') axes.set_axis_off() # 调整子图之间的间距 mtplt.tight_layout() # 显示图形 mtplt.show()
输出
以下是上述代码的输出 −
图像的平均值是 = 105.32921300415184
得到的图像如下图所示 −

各通道的平均值
在 Mahotas 中,我们还能够找到 RGB 图像各通道的平均值。RGB 图像是指具有三个−颜色通道 − 的图像红色、绿色和蓝色。
RGB 图像中的每个像素都有三个强度值,每个颜色通道一个。
红色的通道值为 0,绿色为 1,蓝色为 2。这些值可用于将 RGB 图像分离为其各个颜色分量。
在 mahotas 中,要找到 RGB 图像每个通道的平均像素强度值,我们首先将 RGB 图像分离为单独的通道。这是通过指定通道值来实现的。一旦通道分离,我们就可以单独找到它们的平均值。
示例
在下面提到的示例中,我们正在寻找 RGB 图像每个通道的平均像素强度值。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # 加载图像 image = mh.imread('nature.jpeg') # 获取红色通道。 red_channel = image[:, :, 0] # 获取绿色通道。 green_channel = image[:, :, 1] # 获取蓝色通道。 blue_channel = image[:, :, 2] # 查找每个通道的平均值 mean_red = np.mean(red_channel) mean_green = np.mean(green_channel) mean_blue = np.mean(blue_channel) # 打印每个通道的平均值 print('红色通道的平均值是 =', mean_red) print('绿色通道的平均值是 =', mean_green) print('蓝色通道的平均值是 =', mean_blue) # 为子图创建图形和轴 fig, axis = mtplt.subplots(1, 1) # 显示原始图像 axes.imshow(image) axes.set_title('原始图像') axes.set_axis_off() # 调整子图之间的间距 mtplt.tight_layout() # 显示图 mtplt.show()
输出
上述代码的输出如下 −
红色通道的平均值 = 135.4501688464837 绿色通道的平均值 = 139.46532482847343 蓝色通道的平均值 = 109.7802007397084
生成的图像如下 −

灰度图像的均值
我们也可以找到灰度图像的均值。灰度图像是指只有一个颜色通道的图像。
灰度图像的每个像素都由一个强度值表示。
灰度图像的强度值范围从 0(黑色)到 255(白色)。0 到 255 之间的任何值都会产生灰色阴影。较低的值会产生较暗的阴影,而较高的值会产生较浅的阴影。
在 mahotas 中,我们首先使用 mh.colors.rgb2gray() 函数将输入的 RGB 图像转换为灰度图像。然后,我们使用 mean() 函数找到其平均像素强度值。
示例
在此示例中,我们正在寻找灰度图像的平均像素强度值。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # 加载图像 image = mh.imread('tree.tiff') # 将其转换为灰度 grayscale_image = mh.colors.rgb2gray(image) # 查找灰度图像的平均值 mean_value = np.mean(grayscale_image) # 打印图像的平均值 print('灰度图像的平均值是 =', mean_value) # 为子图创建图形和轴 fig,axes = mtplt.subplots(1, 1) # 显示灰度图像 axes.imshow(grayscale_image, cmap='gray') axes.set_title('Grayscale Image') axes.set_axis_off() # 调整子图之间的间距 mtplt.tight_layout() # 显示图形 mtplt.show()
输出
执行上述代码后,我们得到以下输出 −
灰度图像的平均值 = 113.21928107579335
以下是获得的图像 −
