SciPy-1-12-中文文档-十九-

126 阅读43分钟

SciPy 1.12 中文文档(十九)

原文:docs.scipy.org/doc/scipy-1.12.0/index.html

scipy.ndimage.gaussian_gradient_magnitude

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.gaussian_gradient_magnitude.html#scipy.ndimage.gaussian_gradient_magnitude

scipy.ndimage.gaussian_gradient_magnitude(input, sigma, output=None, mode='reflect', cval=0.0, **kwargs)

使用高斯导数的多维梯度幅度。

参数:

inputarray_like

输入数组。

sigma标量或标量序列

高斯滤波器的标准偏差分别给出每个轴作为序列,或作为一个单一的数字,其中它对所有轴是相等的。

output数组或 dtype,可选

放置输出的数组,或返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

modestr 或序列,可选

mode参数确定在过滤器重叠边界时如何扩展输入数组。通过传递与输入数组维数相等长度的模式序列,可以指定每个轴上的不同模式。默认值为‘reflect’。有效值及其行为如下:

‘reflect’ (d c b a | a b c d | d c b a)

输入通过关于最后一个像素边缘的反射来扩展。有时这种模式也称为半样本对称。

‘constant’ (k k k k | a b c d | k k k k)

输入通过用由cval参数定义的相同常量值填充边缘之外的所有值来扩展。

‘nearest’ (a a a a | a b c d | d d d d)

输入通过复制最后一个像素来扩展。

‘mirror’ (d c b | a b c d | c b a)

输入通过关于最后一个像素中心的反射来扩展。有时这种模式也称为整体样本对称。

‘wrap’ (a b c d | a b c d | a b c d)

输入通过环绕到相对的边缘来扩展。

为了与插值函数保持一致,以下模式名称也可以使用:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

额外的关键字参数将传递给 gaussian_filter()。

返回:

gaussian_gradient_magnitudendarray

过滤后的数组。与input具有相同的形状。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.gaussian_gradient_magnitude(ascent, sigma=5)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-gaussian_gradient_magnitude-1.png

scipy.ndimage.gaussian_laplace

原始文档:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.gaussian_laplace.html#scipy.ndimage.gaussian_laplace

scipy.ndimage.gaussian_laplace(input, sigma, output=None, mode='reflect', cval=0.0, **kwargs)

使用高斯二阶导数的多维拉普拉斯滤波器。

参数:

input array_like

输入数组。

sigma 标量或标量序列

高斯滤波器的标准差以序列的形式给出,或者作为单个数字,此时对所有轴都是相等的。

output array 或 dtype,可选

用于放置输出的数组,或者返回数组的数据类型。默认情况下,将创建与输入相同数据类型的数组。

modestr 或者序列,可选

mode 参数决定了当滤波器重叠边界时如何扩展输入数组。通过传递与输入数组维度数目相等长度的模式序列,可以指定沿每个轴的不同模式。默认值是“reflect”。有效的值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射进行扩展。有时也称为半样本对称模式。

‘constant’(k k k k | a b c d | k k k k

输入通过使用由cval参数定义的相同常量值填充超出边缘的所有值进行扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射进行扩展。有时也称为全样本对称模式。

‘wrap’(a b c d | a b c d | a b c d

输入通过围绕到相反边缘进行扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-constant’

这是“constant”的同义词。

‘grid-mirror’

这是“reflect”的同义词。

‘grid-wrap’

这是“wrap”的同义词。

cval标量,可选

如果mode为‘constant’,则用于填充输入超出边缘的值。默认值为 0.0。

额外的关键字参数将被传递给 gaussian_filter()。

返回:

gaussian_laplace ndarray

过滤后的数组。与input具有相同的形状。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> ascent = datasets.ascent() 
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side 
>>> result = ndimage.gaussian_laplace(ascent, sigma=1)
>>> ax1.imshow(result) 
>>> result = ndimage.gaussian_laplace(ascent, sigma=3)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-gaussian_laplace-1.png

scipy.ndimage.generic_filter

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.generic_filter.html#scipy.ndimage.generic_filter

scipy.ndimage.generic_filter(input, function, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, extra_arguments=(), extra_keywords=None)

使用给定函数计算多维滤波器。

在每个元素处调用提供的函数。在该元素处的滤波器足迹内的输入值作为双值数组传递给函数。

参数:

input类似数组

输入数组。

function{callable, scipy.LowLevelCallable}

在每个元素上应用的函数。

size标量或元组,可选

见 footprint,如果给出了 footprint,则忽略。

footprint数组,可选

必须定义sizefootprint之一。size表示从输入数组中的每个元素位置获取的形状,以定义滤波器函数的输入。footprint是一个布尔数组,隐式指定了一个形状,但也指定了该形状内部哪些元素将传递给滤波器函数。因此,size=(n,m)等同于footprint=np.ones((n,m))。我们根据输入数组的维数调整size,因此如果输入数组形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。如果给定了footprint,则size将被忽略。

output数组或 dtype,可选

放置输出的数组或返回数组的 dtype,可选,默认情况下将创建与输入相同 dtype 的数组。

mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

mode参数决定如何扩展输入数组超出其边界的方式。默认为‘reflect’。每个有效值的行为如下:

‘reflect’ (d c b a | a b c d | d c b a)

通过反射关于最后一个像素的边界来扩展输入。此模式有时也称为半样本对称。

‘constant’ (k k k k | a b c d | k k k k)

通过填充所有超出边缘的值来扩展输入,填充值由cval参数定义。

‘nearest’ (a a a a | a b c d | d d d d)

通过复制最后一个像素来扩展输入。

‘mirror’ (d c b | a b c d | c b a)

通过关于最后一个像素中心的反射来扩展输入。此模式有时也称为全样本对称。

‘wrap’ (a b c d | a b c d | a b c d)

通过环绕到相对边缘来扩展输入。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-constant’

这是‘constant’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

如果mode为‘constant’,则用于填充输入边缘的值。默认为 0.0。

origin整数或序列,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中在像素上,正值将滤波器向左移动,负值将其向右移动。通过传递长度等于输入数组维数的起源序列,可以指定每个轴上的不同移位。

extra_argumentssequence, optional

需要传递给传递函数的额外位置参数的序列。

extra_keywordsdict, optional

需要传递给传递函数的额外关键字参数的字典。

返回:

generic_filterndarray

过滤后的数组。形状与input相同。

注释

此函数还接受具有以下签名之一的低级回调函数,并包装在scipy.LowLevelCallable中:

int  callback(double  *buffer,  npy_intp  filter_size,
  double  *return_value,  void  *user_data)
int  callback(double  *buffer,  intptr_t  filter_size,
  double  *return_value,  void  *user_data) 

调用函数在输入和输出数组的元素上进行迭代,每个元素调用回调函数。当前元素处于滤波器足迹内的元素通过buffer参数传递,足迹内元素的数量通过filter_size传递。计算得到的值在return_value中返回。user_data作为scipy.LowLevelCallable的数据指针提供。

回调函数必须返回整数错误状态,如果出现问题则为零,否则为一。如果发生错误,通常应在返回之前设置 Python 错误状态并附上信息,否则调用函数会设置默认错误消息。

此外,还接受一些其他低级函数指针规范,但这些仅用于向后兼容,不应在新代码中使用。

示例

导入必要的模块并加载用于过滤的示例图像。

>>> import numpy as np
>>> from scipy import datasets
>>> from scipy.ndimage import generic_filter
>>> import matplotlib.pyplot as plt
>>> ascent = datasets.ascent() 

通过将简单的 NumPy 聚合函数作为function的参数来计算大小为 10 的最大滤波器。

>>> maximum_filter_result = generic_filter(ascent, np.amax, [10, 10]) 

虽然也可以直接使用maximum_filter获取最大滤波器,但generic_filter允许使用通用 Python 函数或scipy.LowLevelCallable作为滤波器。在这里,我们计算了大小为 5 的核的最大值和最小值之间的范围作为示例。

>>> def custom_filter(image):
...     return np.amax(image) - np.amin(image)
>>> custom_filter_result = generic_filter(ascent, custom_filter, [5, 5]) 

绘制原始和过滤后的图像。

>>> fig, axes = plt.subplots(3, 1, figsize=(4, 12))
>>> plt.gray()  # show the filtered result in grayscale
>>> top, middle, bottom = axes
>>> for ax in axes:
...     ax.set_axis_off()  # remove coordinate system
>>> top.imshow(ascent)
>>> top.set_title("Original image")
>>> middle.imshow(maximum_filter_result)
>>> middle.set_title("Maximum filter, Kernel: 10x10")
>>> bottom.imshow(custom_filter_result)
>>> bottom.set_title("Custom filter, Kernel: 5x5")
>>> fig.tight_layout() 

../../_images/scipy-ndimage-generic_filter-1.png

scipy.ndimage.generic_filter1d

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.generic_filter1d.html#scipy.ndimage.generic_filter1d

scipy.ndimage.generic_filter1d(input, function, filter_size, axis=-1, output=None, mode='reflect', cval=0.0, origin=0, extra_arguments=(), extra_keywords=None)

计算给定轴上的 1-D 滤波器。

generic_filter1d迭代数组的行,每行调用给定的函数。行的参数是输入行和输出行。输入和输出行是 1-D 双精度数组。根据滤波器大小和原点适当地扩展输入行。输出行必须通过结果就地修改。

参数:

input类似数组

输入数组。

function{可调用对象,scipy.LowLevelCallable}

在给定轴上应用的函数。

filter_size标量

滤波器的长度。

axis整数,可选

input的轴沿其计算的轴。默认为-1。

output数组或 dtype,可选

用于放置输出的数组或返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

mode{‘reflect’,‘constant’,‘nearest’,‘mirror’,‘wrap’},可选

mode参数确定如何扩展输入数组超出其边界。默认为“reflect”。每个有效值的行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射来扩展。有时也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k

输入通过用由cval参数定义的相同常量值填充超出边缘的所有值来扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素来扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射来扩展。有时也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入通过环绕到相反边缘来扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-mirror’

这是“reflect”的同义词。

‘grid-constant’

这是“constant”的同义词。

‘grid-wrap’

这是“wrap”的同义词。

cval标量,可选

如果mode为‘constant’,则在输入边缘之外填充值。默认值为 0.0。

origin整数,可选

控制滤波器放置在输入数组像素上的位置。值为 0(默认值)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。

extra_arguments序列,可选

传递给传递函数的额外位置参数序列。

extra_keywords字典,可选

传递给传递函数的额外关键字参数字典。

返回:

generic_filter1d ndarray

过滤后的数组。与input具有相同的形状。

注意

该函数还接受带有以下签名之一的低级回调函数,并且包装在scipy.LowLevelCallable中:

int  function(double  *input_line,  npy_intp  input_length,
  double  *output_line,  npy_intp  output_length,
  void  *user_data)
int  function(double  *input_line,  intptr_t  input_length,
  double  *output_line,  intptr_t  output_length,
  void  *user_data) 

调用函数迭代输入和输出数组的各行,并在每行调用回调函数。当前行根据调用函数设定的边界条件进行扩展,并将结果复制到通过input_line传递的数组中。输入行的长度(扩展后)通过input_length传递。回调函数应用过滤器并将结果存储在通过output_line传递的数组中。输出行的长度通过output_length传递。user_data是作为scipy.LowLevelCallable提供给数据指针。

回调函数必须返回一个整数错误状态,如果出现问题则为零,否则为一。如果发生错误,通常应在返回之前设置带有详细信息的 Python 错误状态,否则调用函数将设置默认错误消息。

此外,还接受其他一些低级功能指针规范,但这些仅用于向后兼容,不应在新代码中使用。

scipy.ndimage.generic_gradient_magnitude

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.generic_gradient_magnitude.html#scipy.ndimage.generic_gradient_magnitude

scipy.ndimage.generic_gradient_magnitude(input, derivative, output=None, mode='reflect', cval=0.0, extra_arguments=(), extra_keywords=None)

使用提供的梯度函数计算梯度幅值。

参数:

input 类似数组

输入数组。

derivative 可调用函数

具有以下签名的可调用函数:

derivative(input, axis, output, mode, cval,
           *extra_arguments, **extra_keywords) 

请参见下文的 extra_argumentsextra_keywordsderivative 可以假定 inputoutput 是 ndarray。请注意,derivative 的输出在原地修改;在返回之前复制重要输入时请小心。

output 数组或 dtype,可选

用于放置输出的数组,或者返回数组的 dtype。默认情况下将创建与输入相同 dtype 的数组。

mode 字符串或序列,可选

mode 参数确定在滤波器重叠边界时如何扩展输入数组。通过传递与输入数组维数相同长度的模式序列,可以指定每个轴上的不同模式。默认值为 ‘reflect’。有效值及其行为如下:

‘reflect’ (d c b a | a b c d | d c b a

通过关于最后一个像素边缘的反射来扩展输入。有时此模式也称为半采样对称。

‘constant’ (k k k k | a b c d | k k k k

通过使用由 cval 参数定义的相同常量值填充边缘之外的所有值来扩展输入。

‘nearest’ (a a a a | a b c d | d d d d

通过复制最后一个像素来扩展输入。

‘mirror’ (d c b | a b c d | c b a

通过关于最后一个像素中心的反射来扩展输入。有时此模式也称为整体采样对称。

‘wrap’ (a b c d | a b c d | a b c d

通过绕到相对边缘来扩展输入。

为保持与插值函数的一致性,还可以使用以下模式名称:

‘grid-constant’

这是 ‘constant’ 的同义词。

‘grid-mirror’

这是 ‘reflect’ 的同义词。

‘grid-wrap’

这是 ‘wrap’ 的同义词。

cval 标量,可选

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

extra_keywords 字典,可选

传递给传递函数的额外关键字参数的字典。

extra_arguments 序列,可选

传递给传递函数的额外位置参数序列。

返回:

generic_gradient_matnitude ndarray

过滤后的数组。具有与 input 相同的形状。

scipy.ndimage.generic_laplace

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.generic_laplace.html#scipy.ndimage.generic_laplace

scipy.ndimage.generic_laplace(input, derivative2, output=None, mode='reflect', cval=0.0, extra_arguments=(), extra_keywords=None)

使用提供的二阶导数函数的 N-D Laplace 滤波器。

参数:

inputarray_like

输入数组。

derivative2可调用

具有以下签名的可调用函数:

derivative2(input, axis, output, mode, cval,
            *extra_arguments, **extra_keywords) 

参见下面的extra_argumentsextra_keywords

output数组或 dtype,可选

用于放置输出的数组,或者返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

modestr 或序列,可选

mode参数确定过滤器在重叠边界时如何扩展输入数组。通过传递与输入数组维数相等的模式序列,可以在每个轴上指定不同的模式。默认值为‘reflect’。有效值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a)

输入通过关于最后像素边缘的反射进行扩展。这种模式有时也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k)

输入通过使用相同的常量值填充超出边缘的所有值进行扩展,该常量值由cval参数定义。

‘nearest’(a a a a | a b c d | d d d d)

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a)

输入通过关于最后一个像素中心的反射进行扩展。这种模式有时也称为整样本对称。

‘wrap’(a b c d | a b c d | a b c d)

输入通过包裹到相反边缘来扩展。

为了与插值函数的一致性,还可以使用以下模式名称:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

extra_keywords字典,可选

传递给传递函数的额外关键字参数的字典。

extra_arguments序列,可选

要传递给传递函数的额外位置参数序列。

返回:

generic_laplacendarray

过滤后的数组。具有与input相同的形状。

scipy.ndimage.laplace

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.laplace.html#scipy.ndimage.laplace

scipy.ndimage.laplace(input, output=None, mode='reflect', cval=0.0)

基于近似二阶导数的 N 维拉普拉斯滤波器。

参数:

输入array_like

输入数组。

输出数组或 dtype,可选项。

放置输出的数组,或返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

模式str 或序列,可选项。

mode参数确定滤波器重叠边界时如何扩展输入数组。通过传递与输入数组维数相等长度的模式序列,可以指定每个轴上的不同模式。默认值为'reflect'。有效的值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射进行扩展。此模式有时也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k

输入通过使用由cval参数定义的相同常量值填充超出边缘的所有值进行扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射进行扩展。此模式有时也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入被绕到相对边缘以扩展。

为了与插值函数保持一致,以下模式名称也可以使用:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选项

如果mode为'constant',则用于填充输入的过去边缘的值。默认为 0.0。

返回:

拉普拉斯ndarray

过滤后的数组。与input具有相同的形状。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.laplace(ascent)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-laplace-1.png

scipy.ndimage.maximum_filter

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.maximum_filter.html#scipy.ndimage.maximum_filter

scipy.ndimage.maximum_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

计算多维最大滤波器。

参数:

input类似数组

输入数组。

size标量或元组,可选

请参见下面的 footprint。如果给定 footprint,则忽略。

footprint数组,可选

必须定义sizefootprint之一。size给出从输入数组中的每个元素位置取得的形状,以定义滤波器函数的输入。footprint是一个布尔数组,指定(隐式地)一个形状,以及将传递给滤波器函数的这个形状中的元素。因此,size=(n,m)等同于footprint=np.ones((n,m))。我们将size调整为输入数组的维数,因此,如果输入数组形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。当给定footprint时,将忽略size

output数组或 dtype,可选

输出数组的位置或返回数组的 dtype。默认情况下将创建与输入相同 dtype 的数组。

mode字符串或序列,可选

mode参数确定滤波器在重叠边界时如何扩展输入数组。通过传递与输入数组维度数相等长度的模式序列,可以沿每个轴指定不同的模式。默认值为‘反射’。有效值及其行为如下:

‘反射’ (d c b a | a b c d | d c b a)

通过关于最后像素边缘的反射来扩展输入。此模式有时也称为半样本对称。

‘常量’ (k k k k | a b c d | k k k k)

通过使用由cval参数定义的相同常数值填充超出边缘的所有值来扩展输入。

‘最近邻’ (a a a a | a b c d | d d d d)

通过复制最后一个像素来扩展输入。

‘镜像’ (d c b | a b c d | c b a)

通过关于最后像素中心的反射来扩展输入。此模式有时也称为整体样本对称。

‘包裹’ (a b c d | a b c d | a b c d)

通过包裹到相反边缘来扩展输入。

为了与插值函数保持一致,还可以使用以下模式名称:

‘网格常量’

这是“常量”的同义词。

‘网格镜像’

这是“反射”的同义词。

‘网格包裹’

这是“包裹”的同义词。

cval标量,可选

如果mode为‘常量’,则用来填充输入边缘之外的值。默认为 0.0。

origin整数或序列,可选

控制滤波器在输入数组像素上的放置位置。值为 0(默认)将滤波器居中在像素上,正值将滤波器向左移动,负值则向右移动。通过传递长度等于输入数组维度数量的起源序列,可以沿每个轴指定不同的移位。

整数或 None 的元组,可选

如果为 None,则在所有轴上对input进行过滤。否则,在指定的轴上对input进行过滤。当指定axes时,用于sizeorigin和/或mode的任何元组必须与axes的长度匹配。这些元组中的第 i 个条目对应于axes中的第 i 个条目。

返回:

maximum_filterndarray

过滤后的数组。形状与input相同。

注意

一系列模式(每个轴一个)仅在脚印可分离时受支持。否则,必须提供单个模式字符串。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.maximum_filter(ascent, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-maximum_filter-1.png

scipy.ndimage.maximum_filter1d

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.maximum_filter1d.html#scipy.ndimage.maximum_filter1d

scipy.ndimage.maximum_filter1d(input, size, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)

沿指定轴计算 1-D 最大过滤器。

沿给定轴的数组行用给定大小的最大过滤器过滤。

参数:

输入array_like

输入数组。

大小int

沿其计算 1-D 最大值的长度。

int,可选

计算沿其进行的输入轴。默认为-1。

输出数组或数据类型,可选

用于放置输出的数组或返回数组的数据类型。默认情况下,将创建与输入相同 dtype 的数组。

模式{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

mode参数确定如何扩展输入数组超出其边界。默认为“reflect”。每个有效值的行为如下:

‘reflect’ (d c b a | a b c d | d c b a)

输入通过反射关于最后一个像素的边界扩展。此模式有时也称为半样本对称。

‘constant’ (k k k k | a b c d | k k k k)

如果mode为“constant”,则通过填充所有超出输入边缘的值来扩展输入。

‘nearest’ (a a a a | a b c d | d d d d)

输入通过复制最后一个像素扩展。

‘mirror’ (d c b | a b c d | c b a)

输入通过最后一个像素的中心反射扩展。此模式有时也称为整样本对称。

‘wrap’ (a b c d | a b c d | a b c d)

输入通过环绕到对立边界来扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-mirror’

这是“reflect”的同义词。

‘grid-constant’

这是“constant”的同义词。

‘grid-wrap’

这是“wrap”的同义词。

cval标量,可选

用于填充输入边界以外值的值。如果mode为“constant”,默认值为 0.0。

原点int,可选

控制过滤器放置在输入数组像素上的位置。值为 0(默认)将过滤器居中在像素上,正值将过滤器向左移动,负值将其向右移动。

返回:

maximum1dndarray,无

与输入形状相同的最大过滤数组。如果output不为 None,则为 None

注意事项

此函数实现了 MAXLIST 算法[1],由 Richard Harter 描述[2],并保证 O(n)性能,ninput长度,无论过滤器大小如何。

参考文献

[1]

citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.2777

[2]

www.richardhartersworld.com/cri/2001/slidingmin.html

示例

>>> from scipy.ndimage import maximum_filter1d
>>> maximum_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3)
array([8, 8, 8, 4, 9, 9, 9, 9]) 

scipy.ndimage.median_filter

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.median_filter.html#scipy.ndimage.median_filter

scipy.ndimage.median_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

计算多维中值滤波器。

参数:

inputarray_like

输入数组。

size标量或元组,可选

查看下面的 footprint。如果给出 footprint,则忽略。

footprint数组,可选

必须定义sizefootprint之一。size给出从输入数组的每个元素位置获取的形状,以定义滤波器函数的输入。footprint是一个布尔数组,隐式指定了一个形状,还指定了将传递给滤波器函数的这些形状中的元素。因此,size=(n,m)等效于footprint=np.ones((n,m))。我们根据输入数组的维度数调整size,因此,如果输入数组形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。给出footprint时,将忽略size

output数组或数据类型,可选

放置输出的数组或返回数组的数据类型。默认情况下,将创建与输入相同数据类型的数组。

mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

mode参数确定如何在其边界之外扩展输入数组。默认为‘reflect’。每个有效值的行为如下:

‘reflect’ (d c b a | a b c d | d c b a)

输入通过关于最后一个像素边缘的反射来扩展。这种模式有时也称为半样本对称。

‘constant’ (k k k k | a b c d | k k k k)

输入通过填充超出边缘的所有值来扩展,这些值由cval参数定义的同一常量值填充。

‘nearest’ (a a a a | a b c d | d d d d)

输入通过复制最后一个像素来扩展。

‘mirror’ (d c b | a b c d | c b a)

输入通过关于最后一个像素的中心的反射来扩展。这种模式有时也称为全样本对称。

‘wrap’ (a b c d | a b c d | a b c d)

输入通过环绕到相对边缘来扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-constant’

这是‘constant’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

originint 或序列,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。通过传递长度等于输入数组维度数量的起源序列,可以在每个轴上指定不同的偏移量。

axes整数元组或 None,可选

如果为 None,则在所有轴上对input进行过滤。否则,在指定的轴上对input进行过滤。

返回:

median_filterndarray

过滤后的数组。与input具有相同的形状。

参见

scipy.signal.medfilt2d

注意事项

对于具有uint8float32float64数据类型的二维图像,专用函数scipy.signal.medfilt2d可能更快。但是,它仅限于常数模式,cval=0

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.median_filter(ascent, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-median_filter-1.png

scipy.ndimage.minimum_filter

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.minimum_filter.html#scipy.ndimage.minimum_filter

scipy.ndimage.minimum_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

计算多维最小滤波器。

参数:

input类数组

输入数组。

size标量或元组,可选

参见 footprint。如果给定了 footprint,则忽略 origin。

footprint数组,可选

必须定义sizefootprint之一。size给出从输入数组中的每个元素位置获取形状,以定义滤波器函数的输入的形状。footprint是一个布尔数组,隐式指定形状,但也指定这个形状内哪些元素将传递给滤波器函数。因此,size=(n,m)等同于footprint=np.ones((n,m))。我们调整size以适应输入数组的维数,因此,如果输入数组形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。给定footprint时,size将被忽略。

output数组或数据类型,可选

用于放置输出的数组或返回数组的数据类型。默认情况下,将创建与输入相同数据类型的数组。

mode字符串或序列,可选

mode参数确定滤波器在过滤器与边界重叠时如何扩展输入数组。通过传递与输入数组维数相同长度的模式序列,可以指定每个轴上的不同模式。默认值为‘reflect’。有效值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射进行扩展。有时也称为半样本对称模式。

‘constant’(k k k k | a b c d | k k k k

输入通过用由cval参数定义的相同常数值填充边缘之外的所有值进行扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射进行扩展。有时也称为整体样本对称模式。

‘wrap’(a b c d | a b c d | a b c d

输入通过绕到相对边缘进行扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

origin整数或序列,可选

控制滤波器放置在输入数组像素上的位置。值为 0(默认)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。通过传递长度等于输入数组维数的起源序列,可以指定每个轴上的不同移位。

axes整数或 None 的元组,可选

如果为 None,则input沿所有轴进行过滤。否则,input沿指定的轴进行过滤。当指定了axes时,用于sizeorigin和/或mode的任何元组必须与axes的长度匹配。这些元组中的第 i 个条目对应于axes中的第 i 个条目。

返回:

minimum_filter ndarray

过滤后的数组。与input具有相同的形状。

注意事项

仅当足迹是可分离的时,才支持一系列模式(每个轴一个)。否则,必须提供单个模式字符串。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.minimum_filter(ascent, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-minimum_filter-1.png

scipy.ndimage.minimum_filter1d

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.minimum_filter1d.html#scipy.ndimage.minimum_filter1d

scipy.ndimage.minimum_filter1d(input, size, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)

沿给定轴计算 1-D 最小滤波器。

沿给定轴的数组行使用给定大小的最小滤波器进行过滤。

参数:

输入类似数组

输入数组。

大小整数

计算 1D 最小值的长度。

整数,可选

input中用于计算的轴。默认值为-1。

输出数组或数据类型,可选

要放置输出的数组或返回数组的数据类型。默认情况下,将创建与输入相同数据类型的数组。

模式{‘reflect’,‘constant’,‘nearest’,‘mirror’,‘wrap’},可选

mode参数确定输入数组在其边界之外如何扩展。默认为“reflect”。每个有效值的行为如下:

‘reflect’ (d c b a | a b c d | d c b a)

输入通过关于最后一个像素边缘的反射来扩展。有时这种模式也称为半采样对称。

‘constant’ (k k k k | a b c d | k k k k)

输入通过填充所有超出边缘的值来扩展,该常数值由cval参数定义。

‘nearest’ (a a a a | a b c d | d d d d)

输入通过复制最后一个像素来扩展。

‘mirror’ (d c b | a b c d | c b a)

输入通过关于最后一个像素中心的反射来扩展。有时这种模式也称为整数采样对称。

‘wrap’ (a b c d | a b c d | a b c d)

输入通过环绕到相反边缘来扩展。

为保持与插值函数一致,还可以使用以下模式名称:

‘grid-mirror’

这是“reflect”的同义词。

‘grid-constant’

这是“constant”的同义词。

‘grid-wrap’

这是“wrap”的同义词。

cval标量,可选

如果mode为“constant”,则用于填充输入边缘之外的值。默认值为 0.0。

原点整数,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中在像素上,正值将滤波器向左移动,负值向右移动。

返回:

结果ndarray。

过滤后的图像。与input具有相同的形状。

注意事项

此函数实现 MINLIST 算法[1],如 Richard Harter[2]所述,并保证 O(n)的性能,其中ninput长度,而不考虑滤波器大小。

参考资料

[1]

citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.2777

[2]

www.richardhartersworld.com/cri/2001/slidingmin.html

示例

>>> from scipy.ndimage import minimum_filter1d
>>> minimum_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3)
array([2, 0, 0, 0, 1, 1, 0, 0]) 

scipy.ndimage.percentile_filter

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.percentile_filter.html#scipy.ndimage.percentile_filter

scipy.ndimage.percentile_filter(input, percentile, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

计算多维百分位数滤波器。

参数:

输入array_like

输入数组。

percentile标量

百分位参数可能小于零,即百分位=-20 等同于百分位=80

size标量或元组,可选

参见下面的 footprint。如果给定了 footprint,则忽略此参数。

footprint数组,可选

必须定义sizefootprint中的一个。size给出从输入数组中的每个元素位置取出的形状,以定义滤波函数的输入。footprint是一个布尔数组,隐式指定了一个形状,同时也指定了将传递给滤波函数的这些形状内的元素。因此,size=(n,m)等同于footprint=np.ones((n,m))。我们调整size以适应输入数组的维数,因此,如果输入数组的形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。当给定footprint时,将忽略size

输出数组或 dtype,可选

用于放置输出的数组,或者返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

参数mode决定了如何扩展输入数组超出其边界的部分。默认是‘reflect’。每个有效值的行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射来扩展。这种模式有时也称为半采样对称。

‘constant’(k k k k | a b c d | k k k k

输入通过填充所有超出边缘的值,使用由参数cval定义的同一常量值来扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素来扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射来扩展。这种模式有时也称为全样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入通过环绕到相对边缘来扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-constant’

这是‘constant’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

originint 或序列,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。通过传递与输入数组维数相等长度的原点序列,可以在每个轴上指定不同的移动。

axes整数元组或 None,可选

如果为 None,input在所有轴上进行过滤。否则,input沿指定轴进行过滤。

返回:

percentile_filterndarray

过滤后的数组。与input具有相同的形状。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.percentile_filter(ascent, percentile=20, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-percentile_filter-1.png

scipy.ndimage.prewitt

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.prewitt.html#scipy.ndimage.prewitt

scipy.ndimage.prewitt(input, axis=-1, output=None, mode='reflect', cval=0.0)

计算 Prewitt 滤波器。

参数:

输入类似数组

输入数组。

整数,可选

沿着计算的input轴。默认为-1。

输出数组或 dtype,可选

放置输出的数组或返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

模式字符串或序列,可选

mode参数确定滤波器在重叠边界时如何扩展输入数组。通过传递与输入数组维度数相等的模式序列,可以指定不同的模式。默认值为‘reflect’。有效的值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射来扩展。有时也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k

通过使用cval参数定义的相同常量值,填充所有超出边缘的值扩展输入。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素来扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射来扩展。有时也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

通过环绕到相反边缘来扩展输入。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

如果mode为‘constant’,则填充输入边缘的值。默认为 0.0。

返回:

prewitt数组

过滤后的数组。与input具有相同的形状。

另见

sobel

Sobel 滤波器

注意

此函数计算一维 Prewitt 滤波器。水平边缘使用水平变换(axis=0)进行强调,垂直边缘使用垂直变换(axis=1)进行强调,更高维度依此类推。这些可以组合以给出幅度。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> ascent = datasets.ascent()
>>> prewitt_h = ndimage.prewitt(ascent, axis=0)
>>> prewitt_v = ndimage.prewitt(ascent, axis=1)
>>> magnitude = np.sqrt(prewitt_h ** 2 + prewitt_v ** 2)
>>> magnitude *= 255 / np.max(magnitude) # Normalization
>>> fig, axes = plt.subplots(2, 2, figsize = (8, 8))
>>> plt.gray()
>>> axes[0, 0].imshow(ascent)
>>> axes[0, 1].imshow(prewitt_h)
>>> axes[1, 0].imshow(prewitt_v)
>>> axes[1, 1].imshow(magnitude)
>>> titles = ["original", "horizontal", "vertical", "magnitude"]
>>> for i, ax in enumerate(axes.ravel()):
...     ax.set_title(titles[i])
...     ax.axis("off")
>>> plt.show() 

../../_images/scipy-ndimage-prewitt-1.png

scipy.ndimage.rank_filter

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.rank_filter.html#scipy.ndimage.rank_filter

scipy.ndimage.rank_filter(input, rank, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

计算多维排名滤波器。

参数:

输入类似数组

输入数组。

排名整数

排名参数可能小于零,即,排名 = -1 表示最大元素。

大小标量或元组,可选

请参见足迹(下文)。如果给定了足迹,则忽略此参数。

足迹数组,可选

必须定义大小足迹之一。大小给出从输入数组中的每个元素位置提取的形状,以定义滤波器函数的输入。足迹是一个布尔数组,隐含地指定了一个形状,但也指定了该形状中哪些元素将传递给滤波器函数。因此,size=(n,m)等同于footprint=np.ones((n,m))。我们根据输入数组的维数调整size,因此,如果输入数组形状为(10,10,10),而size为 2,则使用的实际大小为(2,2,2)。如果给定了footprint,则size将被忽略。

输出数组或数据类型,可选

用于放置输出的数组,或返回数组的数据类型。默认情况下,将创建与输入相同数据类型的数组。

模式{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

mode参数确定如何扩展输入数组超出其边界。默认值为‘reflect’。每个有效值的行为如下:

‘反射’ (d c b a | a b c d | d c b a)

输入通过最后一个像素的边缘反射扩展。这种模式有时也被称为半样本对称。

‘常量’ (k k k k | a b c d | k k k k)

输入通过使用由cval参数定义的相同常量值填充超出边缘的所有值进行扩展。

‘最近’ (a a a a | a b c d | d d d d)

输入通过复制最后一个像素扩展。

‘镜像’ (d c b | a b c d | c b a)

输入通过围绕最后一个像素的中心反射扩展。这种模式有时也被称为整体样本对称。

‘包裹’ (a b c d | a b c d | a b c d)

输入通过环绕到对立边缘进行扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘网格-镜像’

这是‘reflect’的同义词。

‘网格-常量’

这是‘constant’的同义词。

‘网格-包裹’

这是‘wrap’的同义词。

cval标量,可选

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

起源整数或序列,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。通过传递长度等于输入数组维度数的起点序列,可以沿每个轴指定不同的移动。

axes整数元组或 None,可选

如果为 None,则在所有轴上对input进行过滤。否则,沿指定轴对input进行过滤。

返回:

rank_filterndarray

过滤后的数组。与input具有相同的形状。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.rank_filter(ascent, rank=42, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-rank_filter-1.png

scipy.ndimage.sobel

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.sobel.html#scipy.ndimage.sobel

scipy.ndimage.sobel(input, axis=-1, output=None, mode='reflect', cval=0.0)

计算 Sobel 滤波器。

参数:

inputarray_like

输入数组。

axisint,可选

input 的轴向来计算。默认为 -1。

outputarray 或 dtype,可选

用于放置输出的数组,或者返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

modestr 或序列,可选

mode 参数确定当滤波器重叠边界时如何扩展输入数组。通过传递与输入数组维数相等的模式序列,可以指定每个轴向的不同模式。默认值为 ‘reflect’。有效的值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射进行扩展。这种模式有时也称为半采样对称。

‘constant’(k k k k | a b c d | k k k k

输入通过填充所有超出边缘的值的相同常量值来扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射进行扩展。这种模式有时也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入通过环绕到相反边缘进行扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-constant’

这是 ‘constant’ 的同义词。

‘grid-mirror’

这是 ‘reflect’ 的同义词。

‘grid-wrap’

这是 ‘wrap’ 的同义词。

cval标量,可选

如果 mode 为 ‘constant’,用于填充输入之外的值。默认为 0.0。

返回:

sobelndarray

过滤后的数组。形状与 input 相同。

注意事项

此函数计算特定轴向的 Sobel 梯度。通过水平变换(axis=0)可以突出水平边缘,通过垂直变换(axis=1)可以突出垂直边缘,等等,对于更高维度也是如此。这些可以组合以给出梯度的大小。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> ascent = datasets.ascent().astype('int32')
>>> sobel_h = ndimage.sobel(ascent, 0)  # horizontal gradient
>>> sobel_v = ndimage.sobel(ascent, 1)  # vertical gradient
>>> magnitude = np.sqrt(sobel_h**2 + sobel_v**2)
>>> magnitude *= 255.0 / np.max(magnitude)  # normalization
>>> fig, axs = plt.subplots(2, 2, figsize=(8, 8))
>>> plt.gray()  # show the filtered result in grayscale
>>> axs[0, 0].imshow(ascent)
>>> axs[0, 1].imshow(sobel_h)
>>> axs[1, 0].imshow(sobel_v)
>>> axs[1, 1].imshow(magnitude)
>>> titles = ["original", "horizontal", "vertical", "magnitude"]
>>> for i, ax in enumerate(axs.ravel()):
...     ax.set_title(titles[i])
...     ax.axis("off")
>>> plt.show() 

../../_images/scipy-ndimage-sobel-1.png

scipy.ndimage.uniform_filter

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.uniform_filter.html#scipy.ndimage.uniform_filter

scipy.ndimage.uniform_filter(input, size=3, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)

多维均匀滤波器。

参数:

输入array_like

输入数组。

sizeint 或整数序列,可选

给定每个轴的均匀滤波器尺寸作为序列,或作为单个数字,此时尺寸对所有轴均相等。

输出数组或 dtype,可选

用于放置输出的数组,或者返回数组的 dtype。默认情况下,将创建与输入相同 dtype 的数组。

modestr 或序列,可选

mode参数确定当过滤器重叠边界时如何扩展输入数组。通过传递与输入数组维度数目相等长度的模式序列,可以指定每个轴上的不同模式。默认值为‘reflect’。有效的值及其行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射进行扩展。这种模式有时也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k

输入通过用由cval参数定义的相同常数值填充所有超出边缘的值进行扩展。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素进行扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射进行扩展。这种模式有时也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入通过绕到对立边缘进行扩展。

为了与插值函数保持一致,还可以使用以下模式名称:

‘grid-constant’

这是‘constant’的同义词。

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

originint 或序列,可选

控制滤波器在输入数组像素上的放置。值为 0(默认值)将滤波器居中在像素上,正值将滤波器向左移动,负值将向右移动。通过传递与输入数组维度数目相等长度的原点序列,可以指定每个轴上的不同偏移量。

int 元组或 None,可选

如果为 None,则在所有轴上过滤input。否则,在指定的轴上过滤input。当指定axes时,用于sizeorigin和/或mode的任何元组必须与axes的长度匹配。任何这些元组中的第 i 个条目对应于axes中的第 i 个条目。

返回:

uniform_filterndarray

过滤后的数组。具有与input相同的形状。

注意事项

多维过滤器被实现为一系列 1-D 均匀过滤器。中间数组以与输出相同的数据类型存储。因此,对于具有有限精度的输出类型,由于中间结果可能以不足的精度存储,结果可能不精确。

示例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.gray()  # show the filtered result in grayscale
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.uniform_filter(ascent, size=20)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result)
>>> plt.show() 

../../_images/scipy-ndimage-uniform_filter-1.png

scipy.ndimage.uniform_filter1d

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.uniform_filter1d.html#scipy.ndimage.uniform_filter1d

scipy.ndimage.uniform_filter1d(input, size, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)

沿给定轴计算 1-D 统一滤波器。

沿给定轴的数组行使用给定大小的统一滤波器进行过滤。

参数:

inputarray_like

输入数组。

sizeint

统一滤波器的长度

axisint,可选

input沿着其计算的轴。默认为 -1。

output数组或 dtype,可选

用于放置输出的数组或返回数组的 dtype。默认情况下将创建与输入相同 dtype 的数组。

mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’},可选

mode参数确定如何扩展输入数组超出其边界的行为。默认为‘reflect’。每个有效值的行为如下:

‘reflect’(d c b a | a b c d | d c b a

输入通过关于最后一个像素边缘的反射来扩展。有时此模式也称为半样本对称。

‘constant’(k k k k | a b c d | k k k k

输入通过填充所有超出边缘的值来扩展,由cval参数定义常量值。

‘nearest’(a a a a | a b c d | d d d d

输入通过复制最后一个像素来扩展。

‘mirror’(d c b | a b c d | c b a

输入通过关于最后一个像素中心的反射来扩展。有时此模式也称为整体样本对称。

‘wrap’(a b c d | a b c d | a b c d

输入通过绕到对立边缘来扩展。

为了与插值函数保持一致,也可以使用以下模式名称:

‘grid-mirror’

这是‘reflect’的同义词。

‘grid-constant’

这是‘constant’的同义词。

‘grid-wrap’

这是‘wrap’的同义词。

cval标量,可选

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

originint,可选

控制滤波器在输入数组像素上的放置。值为 0(默认)将滤波器居中于像素上,正值将滤波器向左移动,负值向右移动。

返回:

resultndarray

过滤后的数组。具有与input相同的形状。

示例

>>> from scipy.ndimage import uniform_filter1d
>>> uniform_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3)
array([4, 3, 4, 1, 4, 6, 6, 3]) 

scipy.ndimage.fourier_ellipsoid

原文:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.fourier_ellipsoid.html#scipy.ndimage.fourier_ellipsoid

scipy.ndimage.fourier_ellipsoid(input, size, n=-1, axis=-1, output=None)

多维椭球傅里叶滤波器。

数组与给定大小的椭球体的傅里叶变换相乘。

参数:

inputarray_like

输入数组。

sizefloat 或序列

用于过滤的盒子的大小。如果是浮点数,size对所有轴是相同的。如果是序列,size必须包含每个轴的一个值。

nint,可选

如果n为负(默认值),则假定输入为复杂 fft 的结果。如果n大于或等于零,则假定输入为实 fft 的结果,n给出了变换前数组沿实数变换方向的长度。

axisint,可选

实数变换的轴。

outputndarray,可选

如果给定,则将输入的过滤结果放置在此数组中。

返回值:

fourier_ellipsoidndarray

过滤后的输入。

注意事项

本函数适用于秩为 1、2 或 3 的数组。

示例

>>> from scipy import ndimage, datasets
>>> import numpy.fft
>>> import matplotlib.pyplot as plt
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_ellipsoid(input_, size=20)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show() 

../../_images/scipy-ndimage-fourier_ellipsoid-1.png

scipy.ndimage.fourier_gaussian

原文链接:docs.scipy.org/doc/scipy-1.12.0/reference/generated/scipy.ndimage.fourier_gaussian.html#scipy.ndimage.fourier_gaussian

scipy.ndimage.fourier_gaussian(input, sigma, n=-1, axis=-1, output=None)

多维高斯傅里叶滤波器。

数组与高斯核的傅里叶变换相乘。

参数:

inputarray_like

输入数组。

sigmafloat 或 序列

高斯核的 sigma 值。如果是浮点数,则所有轴的 sigma 值相同。如果是序列,则 sigma 必须包含每个轴的一个值。

nint, 可选

如果n为负(默认),则假定输入是复数 fft 的结果。如果n大于或等于零,则假定输入是实数 fft 的结果,n表示变换前沿着实部变换方向的数组长度。

axisint, 可选

实部变换的轴。

outputndarray, 可选

如果给定,输入过滤的结果将放置在此数组中。

返回:

fourier_gaussianndarray

过滤后的输入。

示例

>>> from scipy import ndimage, datasets
>>> import numpy.fft
>>> import matplotlib.pyplot as plt
>>> fig, (ax1, ax2) = plt.subplots(1, 2)
>>> plt.gray()  # show the filtered result in grayscale
>>> ascent = datasets.ascent()
>>> input_ = numpy.fft.fft2(ascent)
>>> result = ndimage.fourier_gaussian(input_, sigma=4)
>>> result = numpy.fft.ifft2(result)
>>> ax1.imshow(ascent)
>>> ax2.imshow(result.real)  # the imaginary part is an artifact
>>> plt.show() 

../../_images/scipy-ndimage-fourier_gaussian-1.png