當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy ndimage.label用法及代碼示例


本文簡要介紹 python 語言中 scipy.ndimage.label 的用法。

用法:

scipy.ndimage.label(input, structure=None, output=None)#

在數組中標注特征。

參數

input array_like

要標記的類似數組的對象。輸入中的任何非零值都被視為特征,零值被視為背景。

structure 數組,可選

定義特征連接的結構元素。結構必須是中心對稱的(見注釋)。如果沒有提供結構元素,則會自動生成一個,其平方連通性等於 1。也就是說,對於二維輸入數組,默認的結構元素是:

[[0,1,0],
 [1,1,1],
 [0,1,0]]
output (無,數據類型,數組),可選

如果輸出是數據類型,則它指定生成的標記要素數組的類型。如果輸出是類似數組的對象,則輸出將使用此函數中的標記特征進行更新。該函數可以通過傳遞輸出=輸入就地操作。請注意,輸出必須能夠存儲最大的標簽,否則此函數將引發異常。

返回

label ndarray 或 int

一個整數 ndarray,其中輸入中的每個唯一特征在返回的數組中都有一個唯一標簽。

num_features int

找到了多少對象。

如果輸出為無,則此函數返回 (labeled_array, num_features) 的元組。

如果輸出是 ndarray,那麽它將使用 labeled_array 中的值進行更新,並且此函數將僅返回 num_features。

注意

中心對稱矩陣是關於中心對稱的矩陣。有關詳細信息,請參閱 [1]。

結構矩陣必須是中心對稱的,以保證雙向連接。例如,如果結構矩陣不是中心對稱的並且定義為:

[[0,1,0],
 [1,1,0],
 [0,0,0]]

輸入是:

[[1,2],
 [0,3]]

那麽結構矩陣將指示輸入中的條目 2 連接到 1,但 1 未連接到 2。

參考

[1]

James R. Weaver,“中心對稱 (cross-symmetric) 矩陣、它們的基本屬性、特征值和特征向量。”美國數學月刊 92.10 (1985): 711-717。

例子

創建具有一些特征的圖像,然後使用默認 (cross-shaped) 結構元素對其進行標記:

>>> from scipy.ndimage import label, generate_binary_structure
>>> import numpy as np
>>> a = np.array([[0,0,1,1,0,0],
...               [0,0,0,1,0,0],
...               [1,1,0,0,1,0],
...               [0,0,0,1,0,0]])
>>> labeled_array, num_features = label(a)

4 個特征中的每一個都用不同的整數標記:

>>> num_features
4
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 3, 0],
       [0, 0, 0, 4, 0, 0]])

生成一個結構元素,該元素將考慮連接的特征,即使它們對角接觸:

>>> s = generate_binary_structure(2,2)

或者,

>>> s = [[1,1,1],
...      [1,1,1],
...      [1,1,1]]

使用新的結構元素標記圖像:

>>> labeled_array, num_features = label(a, structure=s)

顯示 2 個標記的特征(請注意,上麵的特征 1、3 和 4 現在被視為單個特征):

>>> num_features
2
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 1, 0],
       [0, 0, 0, 1, 0, 0]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.ndimage.label。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。