直方图均衡化是一种比较常用的图像处理方法,其主要作用是增加局部对比度而不失整体对比度,可以突出图像一些细节的特征。
代码实现:
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
def histeq(img_path,nbr_bins=256):
img = Image.open(img_path)
img = np.array(img,"f")
# """ Histogram equalization of a grayscale image. """
imhist, bins, patches = plt.hist(img.flatten(), nbr_bins, normed = True)
cdf = imhist.cumsum() # cumulative distribution function
cdf = 255 * cdf /cdf[-1]
result = np.interp(img.flatten(),bins[:-1],cdf)
result = result.reshape(img.shape)
imsave(img_path.replace("test_corre2d","test_corre2d_histeq"),result)
直方图均衡化前后对比:
本文来自本人课题项目总结,并非最好之方案和代码。如有错误,欢迎指正与赐教!