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


Python skimage.morphology.local_maxima用法及代碼示例

用法:

skimage.morphology.local_maxima(image, footprint=None, connectivity=None, indices=False, allow_borders=True)

找到 n 維數組的局部最大值。

局部最大值被定義為具有相等灰度(高原)的連接像素集,嚴格大於鄰域中所有像素的灰度。

參數

imagendarray

一個 n 維數組。

footprintndarray,可選

用於確定每個評估像素的鄰域的足跡(結構元素)(True表示連接的像素)。它必須是一個布爾數組,並且具有與圖片.如果兩者都沒有腳印也不連通性給定,所有相鄰像素都被視為鄰域的一部分。

connectivityint 可選

用於確定每個評估像素的鄰域的數字。與中心的平方距離小於或等於連通性的相鄰像素被視為鄰居。如果足跡不是無,則忽略。

indices布爾型,可選

如果為 True,則輸出將是一維數組的元組,表示每個維度中局部最大值的索引。如果為 False,則輸出將是一個與圖像具有相同形狀的布爾數組。

allow_borders布爾型,可選

如果為真,則接觸圖像邊界的高原是有效的最大值。

返回

maximandarray 或元組[ndarray]

如果 index 為假,一個與形狀相同的布爾數組圖片True表示局部最大值的位置(False除此以外)。如果 index 是真的,一維數組的元組包含所有找到的最大值的坐標(索引)。

其他參數

selemDEPRECATED

已棄用以支持足跡。

警告

UserWarning

如果allow_borders 為假並且給定圖像的任何維度都短於 3 個樣本,則最大值不存在並顯示警告。

注意

此函數基於以下想法運行:

  1. 通過僅比較一個方向的像素,對圖像的最後一個維度進行第一次遍曆,並標記局部最大值的候選對象。如果像素在最後一維中沒有連接,則所有像素都被標記為候選。

對於每個候選人:

  1. 執行 flood-fill 以查找具有相同灰度值且屬於高原的所有連接像素。

  2. 考慮高原的連通鄰域:如果沒有邊界樣本具有更高的灰度級,則將高原標記為確定的局部最大值。

例子

>>> from skimage.morphology import local_maxima
>>> image = np.zeros((4, 7), dtype=int)
>>> image[1:3, 1:3] = 1
>>> image[3, 0] = 1
>>> image[1:3, 4:6] = 2
>>> image[3, 6] = 3
>>> image
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 0, 2, 2, 0],
       [0, 1, 1, 0, 2, 2, 0],
       [1, 0, 0, 0, 0, 0, 3]])

通過比較所有相鄰像素(最大連通性)找到局部最大值:

>>> local_maxima(image)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False, False, False, False],
       [False,  True,  True, False, False, False, False],
       [ True, False, False, False, False, False,  True]])
>>> local_maxima(image, indices=True)
(array([1, 1, 2, 2, 3, 3]), array([1, 2, 1, 2, 0, 6]))

在不與對角像素比較的情況下找到局部最大值(連通性 1):

>>> local_maxima(image, connectivity=1)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False,  True,  True, False],
       [False,  True,  True, False,  True,  True, False],
       [ True, False, False, False, False, False,  True]])

並排除與圖像邊接壤的最大值:

>>> local_maxima(image, connectivity=1, allow_borders=False)
array([[False, False, False, False, False, False, False],
       [False,  True,  True, False,  True,  True, False],
       [False,  True,  True, False,  True,  True, False],
       [False, False, False, False, False, False, False]])

相關用法


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