scipy.ndimage.

binary_erosion#

scipy.ndimage.binary_erosion(input, structure=None, iterations=1, mask=None, output=None, border_value=0, origin=0, brute_force=False, *, axes=None)[原始碼]#

使用給定的結構元素進行多維二值侵蝕。

二值侵蝕是一種用於影像處理的數學形態學操作。

參數:
inputarray_like

要進行侵蝕的二值影像。非零 (True) 元素構成要侵蝕的子集。

structurearray_like,可選

用於侵蝕的結構元素。非零元素被視為 True。如果未提供結構元素,則會產生一個具有等於 1 的方形連通性的元素。

iterationsint,可選

侵蝕重複 iterations 次(預設為一次)。如果 iterations 小於 1,則重複侵蝕直到結果不再改變。

maskarray_like,可選

如果給定遮罩,則在每次迭代中,僅修改在對應遮罩元素處具有 True 值的元素。

outputndarray,可選

與輸入形狀相同的陣列,輸出放置於其中。預設情況下,會建立一個新陣列。

border_valueint(轉換為 0 或 1),可選

輸出陣列邊界處的值。

originint 或 int 元組,可選

濾波器的位置,預設為 0。

brute_forceboolean,可選

記憶體條件:如果為 False,則僅追蹤在上次迭代中值發生變化的像素,作為當前迭代中要更新(侵蝕)的候選像素;如果為 True,則所有像素都被視為侵蝕的候選像素,無論前一次迭代中發生了什麼。預設為 False。

axesint 或 None 的元組

要對其應用濾波器的軸。如果為 None,則沿所有軸對 input 進行濾波。如果提供了 origin 元組,則其長度必須與軸的數量相符。

返回:
binary_erosionbools 的 ndarray

輸入影像經結構元素侵蝕後的結果。

註解

侵蝕 [1] 是一種數學形態學操作 [2],它使用結構元素來縮小影像中的形狀。影像通過結構元素的二值侵蝕是指結構元素中心點與影像非零元素集合完全重疊的點的軌跡。

參考文獻

範例

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((7,7), dtype=int)
>>> a[1:6, 2:5] = 1
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> ndimage.binary_erosion(a).astype(a.dtype)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> #Erosion removes objects smaller than the structure
>>> ndimage.binary_erosion(a, structure=np.ones((5,5))).astype(a.dtype)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])