欢迎访问宙启技术站
智能推送

利用Python的skimage.exposurerescale_intensity()函数改善图像的强度分布

发布时间:2023-12-11 05:40:06

在图像处理中,有时我们需要改善图像的强度分布范围,使图像变得更具对比度和鲜明度。一种常用的方法是使用Scikit-Image库中的skimage.exposure.rescale_intensity()函数。

rescale_intensity()函数可以将图像的强度值重新缩放,使得图像的最小值和最大值分别对应于指定的百分位数。

下面是一个使用例子,展示如何利用rescale_intensity()函数改善图像的强度分布:

import matplotlib.pyplot as plt
from skimage import io, exposure

# 读取图像
image = io.imread('image.png', as_gray=True)

# 显示原始图像
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')

# 改善图像的强度分布
enhanced_image = exposure.rescale_intensity(image, in_range='image', out_range=(0, 1))

# 显示改善后的图像
plt.subplot(1, 2, 2)
plt.imshow(enhanced_image, cmap='gray')
plt.title('Enhanced Image')

# 显示图像
plt.show()

在上述例子中,首先使用io.imread()函数读取了一张灰度图像,并将其作为输入图像。然后,使用exposure.rescale_intensity()函数对图像的强度分布进行改善。in_range='image'表示使用图像的最小值和最大值作为输入范围,out_range=(0, 1)表示将图像的强度值缩放到0到1的范围。最后,使用Matplotlib库的imshow()函数分别显示原始图像和改善后的图像。

通过运行以上代码,你将会看到显示原始图像和改善后的图像的两个子图。改善后的图像会显示更好的对比度和鲜明度。

除了直接指定输出范围,rescale_intensity()函数还可以通过out_range='dtype'将输出范围设为输入图像的数据类型范围,或者通过out_range='image'将输出范围设为输入图像的最小值和最大值范围。

此外,rescale_intensity()函数还可以接收参数in_range来指定输入范围,例如(low, high)表示指定的最小值和最大值,或者‘image’表示使用输入图像的最小值和最大值。

综上所述,rescale_intensity()函数是一个方便且灵活的函数,可以帮助我们改善图像的强度分布,从而改进图像的对比度和鲜明度。它在很多图像处理任务中都有广泛的应用,如图像增强、直方图均衡化等。