Я использовал bwlabeln
для Matlab для трехмерных 18-connected neighborhood
с 18-connected neighborhood
как 18-connected neighborhood
ниже:
[labeledImage, ~] = bwlabeln(maskImageVolume, 18); # maskImageVolume is 3D. e.g.:(200, 200, 126)
и эквивалент его в Python:
from skimage import measure
labeledImage = measure.label(maskImageVolume, 8)
Тем не менее, bwlabeln
в Matlab поддерживает Three-dimensional connectives
(с 18 и 26-подключенными соседями), но skimage.measure.label
просто поддерживает связь 4- or 8-"connectivity"
.
Что эквивалентно bwlabeln
для 18 and 26-connected neighborhood
в Python?
Документация для skimage.measure.label
указывает на параметры neighbors
:
соседи: {4, 8}, int, необязательно
Использовать ли 4- или 8- "подключение". В 3D 4- "подключение" означает, что подключенные пиксели должны делиться лицом, тогда как с 8- "связностью" им приходится делиться только концом или вершиной.
Устаревшие, используйтеconnectivity
вместо этого.
А для connectivity
параметров:
connectivity: int, необязательный
Максимальное количество ортогональных переходов для рассмотрения пикселя/вокселя как соседа. Принимаемые значения варьируются от 1 доinput.ndim
. ЕслиNone
, используется полная возможность подключенияinput.ndim
.
Это означает, что в 3D соединение может быть либо 1, 2, либо 3, указывая 6, 18 или 26 соседей.
Оглядываясь на различные версии документации, этот синтаксис, кажется, был введен в scikit-image 0.11 (0.10 его не имеет).
Для вашего случая с 18 связанными соседями:
labeledImage = measure.label(maskImageVolume, connectivity=2)