scipy.ndimage.
prewitt#
- scipy.ndimage.prewitt(input, axis=-1, output=None, mode='reflect', cval=0.0)[source]#
計算 Prewitt 濾波器。
- 參數:
- inputarray_like (陣列型別)
輸入陣列。
- axisint, optional (可選的)
要沿其計算的 input 軸。預設值為 -1。
- outputarray 或 dtype, optional (可選的)
放置輸出的陣列,或傳回陣列的 dtype。預設情況下,將會建立與輸入相同 dtype 的陣列。
- modestr 或 sequence (序列), optional (可選的)
當濾波器與邊界重疊時,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’ 的同義詞。
- cvalscalar (純量), optional (可選的)
如果 mode 為 ‘constant’,則用於填充輸入邊緣之外的值。預設值為 0.0。
- 返回:
- prewittndarray (多維陣列)
已過濾的陣列。與 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()