函数名:
rescale_intensity
语法:
rescale_intensity(image, in_range=’image’, out_range=’dtype’)
类型:
skimage.exposure.exposure 模块中的函数,在对图像进行拉伸或者伸缩强度水平后返回修改后的图像,
输入图像和输出图像的强度范围分别由in_range 和out_range指定,用来拉伸或缩小输入图像的强度范围。
输入参数:
- 参数名:image
- 类型:array
- 说明:输入图像
- 参数名:in_range, out_range
- 类型:str or 2-tuple
- 说明:输入图像和输出图像的最小和最大强度值。下面列举了这个参数的可能值。
参数值名 | 说明 |
---|---|
image | 使用图像的最小值/最大值作为强度范围 |
dtype | 使用图像数据类型的最小值/最大值作为强度范围 |
dtype-name | 使用基于所需的数据类型范围作为强度范围,必须是DTYPE_RANGE中可用的关键词 |
2-tuple | 使用range_values作为显式的最小/最大强度 |
输出参数:
- 参数名:out
- 类型:array
- 说明: 图像阵列调整后的强度。该图像与输入图像是相同的数据类型。
例子:
默认情况下,输入图像的最小/最大强度被拉伸到图像数据类型允许的范围内。此外,in_range默认为‘image’,out_range默认为’dtype’
>>> image = np.array([51, 102, 153], dtype=np.uint8)
>>> rescale_intensity(image)
array([ 0, 127, 255], dtype=uint8)
很容易意外地将图像类型从uint8转换为float:
>>> 1.0 * image
array([ 51., 102., 153.])
使用rescale_intensity重新调节到浮点类型数据的适当范围
>>> 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的最小/最大值大于/小于图像强度的最大值/最小值,则强度水平将被剪辑,即,只保留im_range范围内的强度水平。
>>> image = np.array([-10, 0, 10], dtype=np.int8)
>>> rescale_intensity(image, out_range=(0, 127))
array([ 0, 63, 127], dtype=int8)