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

一、实验指导

基于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进行直方图操作。对比显示两种方法的操作结果:

原始图像:

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

 实验代码:

from skimage.io import *
import matplotlib.pyplot as plt
from skimage import exposure
import numpy as np

im = imread("images/ch3.tif")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 全局直方图均衡化
plt.subplot(1,2,1)
image_eq=exposure.equalize_hist(im,nbins=256,mask=None)

plt.title("全局直方图均衡化后的图像")
plt.axis("off")
# 显示图像全局直方图均衡化后的图像
plt.imshow(image_eq,cmap="gray")

#局部直方图均衡化
plt.subplot(1,2,2)
image_ad=exposure.equalize_adapthist(im,nbins=256,kernel_size=[25,25],clip_limit=1)
plt.title("局部直方图均衡化后的图像")
plt.axis("off")
plt.imshow(image_ad,cmap="gray")
plt.show()

三、实验结果:

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

 

 

你可能感兴趣的:(图像处理,图像处理,python,numpy)