Mahotas - 突出图像最大值



突出图像最大值是指显示图像中最亮区域。图像最大值,也称为区域最大值,是指在图像所有其他区域中具有最高像素强度值的区域。

图像最大值在搜索最亮区域时会考虑整幅图像。图像可以有多个区域最大值,但它们都具有相同的亮度级别。这是因为只有最亮的值被认为是图像最大值。

在 Mahotas 中突出图像最大值

在 Mahotas 中,我们可以使用 mahotas.regmax() 函数来突出图像中的最大值。图像最大值代表高强度区域;因此,它们是通过查看图像的强度峰值来识别的。以下是该函数突出图像最大值的基本方法:

  • 首先,它将每个局部最大值区域的强度值与其相邻像素进行比较。

  • 如果找到更亮的相邻像素,则该函数将其设置为新的图像最大值。

此过程持续进行,直到所有区域都已与图像最大值进行比较。

mahotas.regmax() 函数

mahotas.regmax() 函数接受灰度图像作为输入。它返回一个图像,其中 1 代表图像最大值点,而 0 代表普通点。

语法

以下是 Mahotas 中 regmax() 函数的基本语法:

mahotas.regmax(f, Bc={3x3 cross}, out={np.empty(f.shape, bool)})

其中,

  • f - 它是输入灰度图像。

  • Bc (可选) - 它是用于连接的结构元素。

  • out (可选) - 它是布尔数据类型的输出数组(默认为与 f 大小相同的新的数组)。

示例

在下面的示例中,我们使用 mh.regmax() 函数突出图像最大值。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image = mh.imread('sun.png')
# Converting it to grayscale
image = mh.colors.rgb2gray(image)
# Getting the regional maxima
regional_maxima = mh.regmax(image)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original image
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# Displaying the highlighted image maxima
axes[1].imshow(regional_maxima, cmap='gray')
axes[1].set_title('Regional Maxima')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()
输出

以下是上述代码的输出:

Image Maxima

使用自定义结构元素突出最大值

我们还可以使用自定义结构元素来突出图像最大值。结构元素是一个仅包含 1 和 0 的数组。它定义了邻域像素的连接模式。

值为 1 的像素包含在连接分析中,而值为 0 的像素被排除在外。

在 Mahotas 中,我们使用 mh.disk() 函数创建一个自定义结构元素。然后,我们将此自定义结构元素设置为 regmax() 函数中的 Bc 参数以突出图像最大值。

示例

在这个例子中,我们使用自定义结构元素来突出图像最大值。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image = mh.imread('tree.tiff')
# Converting it to grayscale
image = mh.colors.rgb2gray(image)
# Creating a custom structuring element
se = np.array([[0, 1, 0],[1, 1, 1],[0, 1, 0]])
# Getting the regional maxima
regional_maxima = mh.regmax(image, Bc=se)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original image
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# Displaying the highlighted image maxima
axes[1].imshow(regional_maxima, cmap='gray')
axes[1].set_title('Regional Maxima')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()

输出

执行上述代码后,我们将得到以下输出:

Image Maxima1
广告