当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cucim.skimage.segmentation.relabel_sequential用法及代码示例


用法:

cucim.skimage.segmentation.relabel_sequential(label_field, offset=1)

将任意标签重新标记为 { offset , ... offset + number_of_labels}。

此函数还返回正向映射(将原始标签映射到缩减标签)和反向映射(将缩减标签映射回原始标签)。

参数

label_fieldnumpy int 数组,任意形状

标签数组,必须是非负整数。

offset整数,可选

返回标签将从 offset 开始,这应该是严格的正数。

返回

relabeledint的numpy数组,与label_field相同的形状

标签映射到 {offset, ..., number_of_labels + offset - 1} 的输入标签字段。数据类型将与 label_field 相同,除非 offset + number_of_labels 导致当前数据类型溢出。

forward_map数组映射

从原始标签空间到返回标签空间的映射。可用于重新应用相同的映射。请参阅使用示例。输出数据类型将与 relabeled 相同。

inverse_map数组映射

从新标签空间到原始空间的映射。这可用于从重新标记的标签字段中重建原始标签字段。输出数据类型将与 label_field 相同。

注意

假定标签 0 表示背景并且从不重新映射。

对于某些输入,前向映射可能非常大,因为它的长度由标签字段的最大值给出。然而,在大多数情况下,label_field.max()label_field.size 小得多,在这些情况下,前向映射保证小于输入或输出图像。

例子

>>> import cupy as cp
>>> from cucim.skimage.segmentation import relabel_sequential
>>> label_field = cp.array([1, 1, 5, 5, 8, 99, 42])
>>> relab, fw, inv = relabel_sequential(label_field)
>>> relab
array([1, 1, 2, 2, 3, 5, 4])
>>> print(fw)
ArrayMap:
  1 → 1
  5 → 2
  8 → 3
  42 → 4
  99 → 5
>>> cp.array(fw)
array([0, 1, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5])
>>> cp.array(inv)
array([ 0,  1,  5,  8, 42, 99])
>>> (fw[label_field] == relab).all()
True
>>> (inv[relab] == label_field).all()
True
>>> relab, fw, inv = relabel_sequential(label_field, offset=5)
>>> relab
array([5, 5, 6, 6, 7, 9, 8])

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cucim.skimage.segmentation.relabel_sequential。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。