scipy.ndimage.

spline_filter1d#

scipy.ndimage.spline_filter1d(input, order=3, axis=-1, output=<class 'numpy.float64'>, mode='mirror')[source]#

沿给定轴计算一维样条滤波器。

数组沿给定轴的线通过样条滤波器进行滤波。样条的阶数必须 >= 2 且 <= 5。

参数:
input类数组

输入数组。

orderint,可选

样条的阶数,默认为 3。

axisint,可选

应用样条滤波器的轴。默认为最后一个轴。

outputndarray 或 dtype,可选

放置输出的数组,或返回数组的 dtype。默认为 numpy.float64

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

The mode parameter determines how the input array is extended beyond its boundaries. Default is ‘mirror’. Behavior for each valid value is as follows (see additional plots and details on boundary modes)

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

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

‘grid-mirror’

这是 ‘reflect’ 的同义词。

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

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

‘grid-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)

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

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

输入通过环绕到另一端来扩展。

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

输入通过环绕到另一端来扩展,但以最后一点和初始点完全重叠的方式进行。在这种情况下,在重叠点选择哪个样本是不确定的。

返回值:
spline_filter1dndarray

经过滤波的输入。

另请参阅

spline_filter

多维样条滤波器。

注释

中所有插值函数 ndimage 对输入图像执行样条插值。如果使用 order > 1 的 B 样条,则必须先将输入图像值转换为 B 样条系数,这通过沿输入的所有轴按顺序应用此一维滤波器来完成。所有需要 B 样条系数的函数会自动过滤其输入,此行为可以通过 prefilter 关键字参数进行控制。对于接受 mode 参数的函数,结果仅在它与过滤时使用的 mode 相匹配时才正确。

对于复数值 input,此函数独立处理实部和虚部。

在版本 1.6.0 中添加: 添加了复数值支持。

示例

我们可以使用沿给定轴的一维样条对图像进行滤波

>>> from scipy.ndimage import spline_filter1d
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> orig_img = np.eye(20)  # create an image
>>> orig_img[10, :] = 1.0
>>> sp_filter_axis_0 = spline_filter1d(orig_img, axis=0)
>>> sp_filter_axis_1 = spline_filter1d(orig_img, axis=1)
>>> f, ax = plt.subplots(1, 3, sharex=True)
>>> for ind, data in enumerate([[orig_img, "original image"],
...             [sp_filter_axis_0, "spline filter (axis=0)"],
...             [sp_filter_axis_1, "spline filter (axis=1)"]]):
...     ax[ind].imshow(data[0], cmap='gray_r')
...     ax[ind].set_title(data[1])
>>> plt.tight_layout()
>>> plt.show()
../../_images/scipy-ndimage-spline_filter1d-1.png