图像处理——利用全局直方图均衡化和局部直方图均衡化对图像进行直方图操作

比眉伴天荒 2024-03-31 10:11 222阅读 0赞

一、实验指导

基于exposure的图像全局直方图和局部(自适应)直方图均衡化

①exposure.equalize_hist(image,nbins=256,mask=None)

image:array类型,输入图像

nbins:int可选,图像直方图bin的数量

mask:布尔类型(取值为0或1)的数组,可选,数组大小与图像大小相同,只有mask==True的点能够被用直方图均衡化,否则就基于整幅图像进行直方图均衡化。

②exposure。equalize_adapthist(image,kernel_siz=None,clip_limit=0.01,nbins=256)

image():ndarray类型,输入对象

kernel_size:int or list_like类型,可选,定义局部直方图均衡化的领域范围。默认值为(1/8*height)*(1/8*height)。

clip_limit:float,可选。

二、具体实验

利用全局直方图均衡化和局部直方图均衡化对图像ch3.tif进行直方图操作。对比显示两种方法的操作结果:

原始图像:

" class="reference-link">2f5dd958fc4f464faa3a0f568578e4c7.png

实验代码:

  1. from skimage.io import *
  2. import matplotlib.pyplot as plt
  3. from skimage import exposure
  4. import numpy as np
  5. im = imread("images/ch3.tif")
  6. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  7. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  8. # 全局直方图均衡化
  9. plt.subplot(1,2,1)
  10. image_eq=exposure.equalize_hist(im,nbins=256,mask=None)
  11. plt.title("全局直方图均衡化后的图像")
  12. plt.axis("off")
  13. # 显示图像全局直方图均衡化后的图像
  14. plt.imshow(image_eq,cmap="gray")
  15. #局部直方图均衡化
  16. plt.subplot(1,2,2)
  17. image_ad=exposure.equalize_adapthist(im,nbins=256,kernel_size=[25,25],clip_limit=1)
  18. plt.title("局部直方图均衡化后的图像")
  19. plt.axis("off")
  20. plt.imshow(image_ad,cmap="gray")
  21. plt.show()

三、实验结果:

902d6bd3747f43d195e50f0d486e7755.png

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读