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


Python skimage.segmentation.slic用法及代碼示例

用法:

skimage.segmentation.slic(image, n_segments=100, compactness=10.0, max_num_iter=10, sigma=0, spacing=None, multichannel=True, convert2lab=None, enforce_connectivity=True, min_size_factor=0.5, max_size_factor=3, slic_zero=False, start_label=1, mask=None, *, channel_axis=- 1)

使用顏色-(x,y,z) 空間中的k-means 聚類分割圖像。

參數

image2D、3D 或 4D ndarray

輸入圖像,可以是 2D 或 3D,灰度或多通道(參見channel_axis 參數)。輸入圖像必須是NaN-free 或者必須屏蔽 NaN

n_segmentsint 可選

分割輸出圖像中的(近似)標簽數。

compactness浮點數,可選

平衡顏色接近度和空間接近度。較高的值賦予空間接近度更多的權重,使超像素形狀更加方形/立方體。在 SLICO 模式下,這是初始緊湊性。該參數很大程度上取決於圖像對比度和圖像中對象的形狀。我們建議在對數範圍內探索可能的值,例如 0.01、0.1、1、10、100,然後再圍繞選定的值進行優化。

max_num_iterint 可選

k-means 的最大迭代次數。

sigma浮點數或 array-like 個浮點數,可選

對圖像的每個維度進行預處理的高斯平滑核的寬度。在標量值的情況下,相同的 sigma 應用於每個維度。零表示沒有平滑。注意西格瑪如果它是標量並且提供了手動體素間距,則會自動縮放(請參閱注釋部分)。如果 sigma 是array-like,它的大小必須匹配image的空間維數。

spacingarray-like 個浮點數,可選

沿每個空間維度的體素間距。默認情況下, slic 假定間距一致(沿每個空間維度具有相同的體素分辨率)。此參數控製k-means 聚類期間沿空間維度的距離權重。

multichannel布爾型,可選

圖像的最後一個軸是否被解釋為多個通道或另一個空間維度。不推薦使用此參數:改為指定 channel_axis。

convert2lab布爾型,可選

在分割之前是否應將輸入轉換為 Lab 顏色空間。輸入圖像必須是RGB。強烈推薦。此選項默認為Truechannel_axis` is not None *and* ``image.shape[-1] == 3.

enforce_connectivity布爾型,可選

生成的段是否連接

min_size_factor浮點數,可選

要刪除的最小段大小相對於假定段大小的比例`depth*width*height/n_segments`

max_size_factor浮點數,可選

最大連接段大小的比例。在大多數情況下,值 3 有效。

slic_zero布爾型,可選

運行SLIC-zero,SLIC的零參數模式。 [2]

start_labelint 可選

標簽的索引開始。應該是 0 或 1。

maskndarray,可選

如果提供,則僅在掩碼為 True 的情況下計算超像素,並且種子點使用 k-means 聚類策略均勻分布在掩碼上。掩碼維數必須等於圖像空間維數。

channel_axisint 或無,可選

如果為 None,則假定圖像是灰度(單通道)圖像。否則,此參數指示數組的哪個軸對應於通道。

返回

labels2D 或 3D 陣列

指示段標簽的整數掩碼。

其他參數

max_iterDEPRECATED

已棄用以支持max_num_iter。

multichannelDEPRECATED

已棄用以支持channel_axis。

拋出

ValueError

如果 convert2lab 設置為 True 但最後一個數組維度的長度不是 3。

ValueError

如果 start_label 不是 0 或 1。

注意

  • 如果西格瑪 > 0,圖像在分割之前使用高斯核進行平滑處理。
  • 如果西格瑪是標量並且間距提供,內核寬度沿每個維度除以間距。例如,如果sigma=1spacing=[5, 1, 1], 有效西格瑪[0.2, 1, 1].這確保了各向異性圖像的合理平滑。
  • 在處理之前,圖像被重新縮放到 [0, 1] 中。
  • 默認情況下,形狀 (M, N, 3) 的圖像被解釋為 2D RGB 圖像。要將它們解釋為最後一維長度為 3 的 3D,請使用channel_axis=無.
  • start_label引入處理問題[4].標簽索引默認從 1 開始。

參考

1

Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Süsstrunk, SLIC Superpixels Compared to State-of-the-art Superpixel Methods, TPAMI, May 2012. DOI:10.1109/TPAMI.2012.120

2

https://www.epfl.ch/labs/ivrl/research/slic-superpixels/#SLICO

3

Irving, Benjamin. “maskSLIC: regional superpixel generation with application to local pathology characterisation in medical images.”, 2016, arXiv:1606.09518

4

https://github.com/scikit-image/scikit-image/issues/3722

例子

>>> from skimage.segmentation import slic
>>> from skimage.data import astronaut
>>> img = astronaut()
>>> segments = slic(img, n_segments=100, compactness=10)

增加緊湊性參數會產生更多方形區域:

>>> segments = slic(img, n_segments=100, compactness=20)

相關用法


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