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


Python cucim.skimage.exposure.rescale_intensity用法及代码示例


用法:

cucim.skimage.exposure.rescale_intensity(image, in_range='image', out_range='dtype')

拉伸或缩小其强度级别后返回图像。

输入和输出所需的强度范围,分别为in_rangeout_range,用于拉伸或缩小输入图像的强度范围。请参阅下面的示例。

参数

image数组

图像阵列。

in_range, out_rangestr 或 2 元组,可选

输入和输出图像的最小和最大强度值。下面列举了该参数的可能值。

‘image’

使用图像最小/最大作为强度范围。

‘dtype’

使用图像 dtype 的 min/max 作为强度范围。

dtype-name

根据所需的 dtype 使用强度范围。必须是 DTYPE_RANGE 中的有效 key 。

2元组

使用range_values 作为明确的最小/最大强度。

返回

out数组

重新调整其强度后的图像阵列。此图像与输入图像具有相同的 dtype。

注意

在 0.17 版中更改:输出数组的 dtype 已更改以匹配输出 dtype,如果输出范围由一对浮点数指定,则为浮点数。

例子

默认情况下,输入图像的最小/最大强度被拉伸到图像 dtype 允许的限制,因为 in_range 默认为 ‘image’ 和 out_range 默认为 ‘dtype’:

>>> image = cp.array([51, 102, 153], dtype=np.uint8)
>>> rescale_intensity(image)
array([  0, 127, 255], dtype=uint8)

很容易意外地将图像 dtype 从 uint8 转换为 float:

>>> 1.0 * image
array([ 51., 102., 153.])

使用 rescale_intensity 重新缩放到 float dtypes 的正确范围:

>>> image_float = 1.0 * image
>>> rescale_intensity(image_float)
array([0. , 0.5, 1. ])

要保持原始的低对比度,请使用 in_range 参数:

>>> rescale_intensity(image_float, in_range=(0, 255))
array([0.2, 0.4, 0.6])

如果in_range 的最小/最大值大于/小于最小/最大图像强度,则剪切强度级别:

>>> rescale_intensity(image_float, in_range=(0, 102))
array([0.5, 1. , 1. ])

如果您有带符号整数的图像,但想将图像重新缩放到正范围,请使用 out_range 参数。在这种情况下,输出 dtype 将是浮点数:

>>> image = cp.asarray([-10, 0, 10], dtype=np.int8)
>>> rescale_intensity(image, out_range=(0, 127))
array([  0. ,  63.5, 127. ])

要获得具有特定 dtype 的所需范围,请使用 .astype()

>>> rescale_intensity(image, out_range=(0, 127)).astype(np.int8)
array([  0,  63, 127], dtype=int8)

如果输入图像是常量,输出会直接裁剪到输出范围:>>> image = cp.asarray([130, 130, 130], dtype=np.int32) >>> rescale_intensity(image, out_range=(0, 127)).astype(np.int32) 数组([127, 127, 127], dtype=int32)

相关用法


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