SciPy 库中maximum_filter配合generate_binary_structure获取局部极大值

SciPy 库中maximum_filter配合generate_binary_structure获取局部极大值

介绍

maximum_filter用法

maximum_filter 是 SciPy 库中的一个函数,它用于计算图像的最大值滤波。这个函数在图像处理中经常被用到,特别是在特征提取和边缘检测等任务中。

使用方法如下:

python 复制代码
import scipy.ndimage
filtered_image = scipy.ndimage.maximum_filter(input, size, footprint, output, mode, cval, origin)

参数:

  • input: 输入的 ndarray 。将应用滤波器的输入图像或数据。
  • size: 标量或元组,可选。定义滤波器窗口的大小。如果是一个标量,那么这将是每个维度的大小。如果是一个元组,那么这将指定每个维度的大小。
  • footprint: 布尔数组,可选。定义滤波器的形状,如果提供了 footprint , size 参数将被忽略。
  • output: ndarray ,可选。用于放置输出的数组。必须与输入具有相同的形状和缓冲区。
  • mode: {'reflect','constant','nearest','mirror', 'wrap'},可选。定义如何处理边界。默认值为 'reflect'。
  • cval: 标量,可选。如果 mode 是 'constant' ,这个值将用于填充。默认值为 0.0 。
  • origin: 标量或元组,可选。定义滤波器的原点。

返回值:

  • result: ndarray 。滤波后的输出。

generate_binary_structure 用法

generate_binary_structure 是 SciPy 库中的一个函数,用于生成具有给定结构元素的二进制结构。这个函数主要用于图像处理和形态学操作。

使用方法如下:

python 复制代码
import scipy.ndimage
struct = scipy.ndimage.generate_binary_structure(rank, connectivity)

参数:

  • rank: 整数,定义生成的结构元素的维数。例如,对于二维图像,排名将是2。
  • connectivity: 整数,定义像素之间的最大连接性。例如,对于二维图像,连接性为1意味着一个像素仅与其上下左右的像素连接,而连接性为2则意味着一个像素与其周围8个像素(包括对角线)都连接。

返回值:

  • output: 一个布尔数组,形状为 (2*connectivity+1,)*rank ,其中 True 表示结构元素的中心,False 表示它的背景。

例如,生成一个二维的结构元素,其连接性为1:

python 复制代码
import scipy.ndimage
struct = scipy.ndimage.generate_binary_structure(2, 1)
print(struct)

输出将是:

复制代码
[[False  True False]
 [ True  True  True]
 [False  True False]]

在这个例子中,中心像素与其上下左右的像素连接,但不与对角线像素连接。

示例代码

此代码片段摘自OpenPose项目

python 复制代码
def find_peaks(param, img):
    """
    Given a (grayscale) image, find local maxima whose value is above a given
    threshold (param['thre1'])
    :param img: Input image (2d array) where we want to find peaks
    :return: 2d np.array containing the [x,y] coordinates of each peak found
    in the image
    """

    peaks_binary = (maximum_filter(img, footprint=generate_binary_structure(
        						   2, 1)) == img) * (img > param)
    # Note reverse ([::-1]): we return [[x y], [x y]...] instead of [[y x], [y
    # x]...]
    return np.array(np.nonzero(peaks_binary)[::-1]).T
相关推荐
是Dream呀4 分钟前
昇腾实战|算子模板库Catlass与CANN生态适配
开发语言·人工智能·python·华为
曦云沐5 分钟前
第二篇:LangChain 1.0 模块化架构与依赖管理
人工智能·langchain·智能体
长桥夜波7 分钟前
机器学习日报23
人工智能·机器学习
roman_日积跬步-终至千里9 分钟前
【模式识别与机器学习(9)】数据预处理-第一部分:数据基础认知
人工智能·机器学习
FL162386312916 分钟前
自动驾驶场景驾驶员注意力安全行为睡驾分心驾驶疲劳驾驶检测数据集VOC+YOLO格式5370张6类别
人工智能·yolo·自动驾驶
Java中文社群17 分钟前
找到漏洞了!抓紧薅~N8N调用即梦全免费
人工智能
培根芝士20 分钟前
使用llm-compressor 对 Qwen3-14B 做 AWQ + INT4 量化
人工智能·python
da_vinci_x27 分钟前
Sampler AI + 滤波算法:解决 AIGC 贴图“噪点过剩”,构建风格化 PBR 工业管线
人工智能·算法·aigc·材质·贴图·技术美术·游戏美术
咨询QQ6882388628 分钟前
自动泊车最优路径:MATLAB 与 RRT 算法及 Reeds 曲线的奇妙组合
scipy
AI人工智能+30 分钟前
表格识别技术:完整还原银行对账单表格结构、逻辑关系及视觉布局,大幅提升使处理速度提升
人工智能·深度学习·ocr·表格识别