scipy.ndimage.

spline_filter1d#

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

沿著給定軸計算 1-D 樣條濾波器。

沿著給定軸的陣列線條會被樣條濾波器過濾。樣條的階數必須 >= 2 且 <= 5。

參數:
inputarray_like

輸入陣列。

orderint, optional

樣條的階數,預設為 3。

axisint, optional

套用樣條濾波器的軸。預設為最後一個軸。

outputndarray or dtype, optional

放置輸出的陣列,或傳回陣列的 dtype。預設為 numpy.float64

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

mode 參數決定輸入陣列如何在其邊界之外延伸。預設為 ‘mirror’。每個有效值的行為如下(請參閱 邊界模式 的其他圖表和詳細資訊)

‘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 中的所有插值函數都對輸入影像執行樣條插值。如果使用階數 > 1 的 B 樣條,則必須先將輸入影像值轉換為 B 樣條係數,這是通過沿輸入的所有軸依序應用此 1-D 濾波器來完成的。所有需要 B 樣條係數的函數都會自動過濾其輸入,此行為可通過 prefilter 關鍵字參數控制。對於接受 mode 參數的函數,結果只有在它與過濾時使用的 mode 相符時才是正確的。

對於複數值 input,此函數會獨立處理實部和虛部。

Added in version 1.6.0: 已新增複數值支援。

範例

我們可以使用沿著給定軸的 1-D 樣條過濾影像

>>> 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