簡體   English   中英

在 scikit-image 中使用分水嶺

[英]Using watershed in scikit-image

描述

分水嶺 function 產生了一個意想不到的結果:它似乎無法分割我的數組,即使我期望它。

我的例子

from skimage.segmentation import watershed
import numpy as np
myarray = np.array([
       [ 2.50148667,  9.44388663,  3.44389182,  3.02727774,  2.40108087,  1.61053155,  0.82294687],
       [ 3.31356207, 10.55797911,  4.69412493,  4.41801194,  3.80963218,  2.70408164,  1.35735552],
       [ 3.28787642,  4.59215029,  4.97735914, 11.08993154,  4.7925308 ,  9.6116032 ,  1.79749649],
       [ 2.87281939,  4.15976317,  4.70572275, 10.95797537,  4.73970551,  9.56800396,  1.7571604 ],
       [ 1.98065752,  2.97293194,  3.42830952,  3.56329229,  3.27749856,  2.33718172,  1.1267278 ]])
isLocalMaxArray = np.array([
       [False, False, False, False, False, False, False],
       [False,  True, False, False, False, False, False],
       [False, False, False,  True, False,  True, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]])
watershed(-myarray, isLocalMaxArray, watershed_line=True)

生產

array([
       [1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1]], dtype=int32)

雖然我期待

array([
       [1, 1, 0, 3, 0, 2, 2],
       [1, 1, 0, 3, 0, 2, 2],
       [1, 1, 0, 3, 0, 2, 2],
       [1, 1, 0, 3, 0, 2, 2],
       [1, 1, 0, 3, 0, 2, 2]], dtype=int32)

問題

我做錯了什么?

版本信息

from __future__ import print_function
import sys; print(sys.version)
import platform; print(platform.platform())
import skimage; print("scikit-image version: {}".format(skimage.__version__))
import numpy; print("numpy version: {}".format(numpy.__version__))

3.8.8(默認,2021 年 2 月 24 日,21:46:12)

[GCC 7.3.0]

Linux-5.4.0-67-generic-x86_64-with-glibc2.10

scikit-image 版本:0.17.2

numpy 版本:1.19.2

僅僅提供某個 position 是否存在峰是不夠的,而是提供一個 label 來指示哪些峰屬於一起。 這可以通過skimage.measure.label來完成:

from skimage import measure
watershed(-myarray, measure.label(isLocalMaxArray, background=0), watershed_line=True)

或者, scipy.ndimage.label可用於超過 3 維的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM