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
以下是获得的图像 −

