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()
../../_images/scipy-ndimage-prewitt-1.png