scipy.ndimage.

black_tophat#

scipy.ndimage.black_tophat(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)[源代码]#

多维黑帽滤波。

参数:
inputarray_like

输入。

sizetuple of ints, optional

用于滤波的平坦且完整的结构元素的形状。如果提供了 footprintstructure,则为可选。

footprintarray of ints, optional

用于黑帽滤波的平坦结构元素的非无限元素的位置。

structurearray of ints, optional

用于滤波的结构元素。structure 可以是非平坦结构元素。 structure 数组将偏移量应用于邻域中的像素(偏移量在膨胀期间是相加的,在腐蚀期间是相减的)。

outputarray, optional

可以提供用于存储滤波器输出的数组。

mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’}, optional

mode 参数决定如何处理数组边界,其中 cval 是模式等于 ‘constant’ 时的值。默认值为 ‘reflect’。

cvalscalar, optional

如果 mode 为 ‘constant’,则用此值填充输入边缘之外的区域。默认值为 0.0。

originscalar, optional

origin 参数控制滤波器的放置。默认值为 0。

axestuple of int or None

应用滤波器的轴。如果为 None,则沿所有轴过滤 input。如果提供了 origin 元组,则其长度必须与轴数匹配。

返回:
black_tophatndarray

使用 structureinput 进行滤波的结果。

示例

将暗峰更改为亮峰并减去背景。

>>> from scipy.ndimage import generate_binary_structure, black_tophat
>>> import numpy as np
>>> square = generate_binary_structure(rank=2, connectivity=3)
>>> dark_on_gray = np.array([[7, 6, 6, 6, 7],
...                          [6, 5, 4, 5, 6],
...                          [6, 4, 0, 4, 6],
...                          [6, 5, 4, 5, 6],
...                          [7, 6, 6, 6, 7]])
>>> black_tophat(input=dark_on_gray, structure=square)
array([[0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 1, 5, 1, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 0, 0]])