Mahotas - 图像中的局部最大值
局部最大值是图像中强度或值高于其相邻像素或区域的像素或特定区域。它表示图像数据中的峰值或高点。
查找局部最大值的一种方法是执行局部邻域分析。对于图像中的每个像素,都会检查其邻域,如果像素是其邻域内的最大值,则将其视为局部最大值。
Mahotas 中图像中的局部最大值
我们可以使用 locmax() 函数在 Mahotas 中找到图像中的局部最大值。它将图像作为输入并返回二进制掩码,其中局部最大值标记为 True 或 1。
Mahotas 中的 local_maxima() 函数使用非最大值抑制算法来有效地定位局部最大值。通过检查每个像素及其邻域,该函数确定该像素是否是其局部区域内的最大值。
此分析允许检测图像数据中的峰值或高点,这在特征提取、对象检测和图像分割等各种应用中都发挥着重要作用。
非最大值抑制算法用于对象检测和边缘检测任务,通过选择相邻像素中的最高强度或响应值来消除冗余和弱检测,从而仅保留局部最大值并抑制非最大值。
使用 locmax() 函数
Mahotas 中的 locmax() 函数用于有效地识别输入图像中的局部最大值。它以灰度或单通道图像作为输入,并返回二进制掩码,其中局部最大值标记为 True 或 1。
语法
以下是 mahotas − 中 locmax() 函数的基本语法
mahotas.Locmax(image_name)
其中,'image_name' 是输入图像。
示例
以下是在图像中查找局部最大值的基本示例 −
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) maxima = mh.locmax(image) print("Maxima:", maxima) imshow(maxima) show()
输出
以下是上述代码的输出 −
Maxima: [[ True True True ... True True True] [ True True True ... True True True] [ True True True ... True True True] ... [False False False ... False False False] [False False False ... False False True] [ True False True ... False False True]]
显示的图像如下所示 −

使用 regmax() 函数
我们还可以使用 Mahotas 中的 regmax() 函数来查找图像中的局部最大值。区域最大值定义为图像中强度值高于指定区域内所有相邻像素的点。
regmax() 函数接受图像作为输入参数,并返回与输入图像大小相同的布尔图像。
以下是 mahotas − 中 regmax 函数的基本语法
regmax(image)
其中,'image' 是需要在其上识别区域最大值的灰度或彩色图像。
示例
在这里,我们尝试使用 regmax() 函数在灰度图像中的连通区域内找到区域最大值 −
import mahotas as mh def find_local_maxima(image): regional_maxima = mh.regmax(image) return regional_maxima image = mh.imread('sun.png', as_grey=True) local_maxima_points = find_local_maxima(image) print(local_maxima_points)
输出
上述代码的输出如下 −
[[False False False ... False False False] [False False False ... False False False] [False False False ... False False False] ... [False False False ... False False False] [False False False ... False False False] [False False False ... True False False]]
彩色图像的区域最大值
我们还可以使用 regmax() 函数在彩色图像的连通区域内找到区域最大值。
示例
现在,我们尝试使用 regmax() 函数 − 在彩色图像的连通区域内找到区域最大值
import mahotas as mh def find_local_maxima(image): regional_maxima = mh.regmax(image) return regional_maxima image = mh.imread('tree.tiff') local_maxima_points = find_local_maxima(image) print(local_maxima_points)
输出
我们得到如下输出 −
[[[False False False] [ True True True] [False False False] ... [False False False] [False False False] [False False False]] . . . [False False False] [False False False] [ True False False]]]