简介:直方图均衡化是一种简单而有效的图像增强技术,通过拉伸像素强度分布来改善图像的对比度。本文将详细介绍直方图均衡化的原理、实现方法以及应用场景。
直方图均衡化是一种简单而有效的图像增强技术,通过拉伸像素强度分布来改善图像的对比度。在数字图像处理中,直方图均衡化被广泛应用于提高图像的视觉效果和特征提取的准确性。本文将详细介绍直方图均衡化的原理、实现方法以及应用场景。
一、直方图均衡化的原理
直方图均衡化的基本思想是将原始图像的直方图变换为均匀分布的形式,从而增强图像的对比度。在灰度图像中,直方图表示像素强度值的分布情况。通过直方图均衡化,强度值的动态范围被拉伸,使得图像的细节更加明显,对比度得到提升。
二、直方图均衡化的实现方法
这段代码首先读取一张灰度图像,然后计算其直方图和累计分布函数。接着,对CDF进行线性变换并重新量化为8位像素值。最后,使用OpenCV的LUT函数将原始图像应用直方图均衡化,并显示原始图像和均衡化后的图像。
import cv2import numpy as np# 读取原始图像img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)# 计算原始图像的直方图和累计分布函数hist, _ = np.histogram(img.flatten(), 256, [0,256])cdf = hist.cumsum() / 256.0# 对CDF进行线性变换并重新量化为8位像素值cdf_m = np.ma.masked_equal(cdf, 0)cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())cdf = np.ma.filled(cdf_m, 0).astype('uint8')# 应用直方图均衡化并显示结果img_eq = cv2.LUT(img, cdf)cv2.imshow('Original Image', img)cv2.imshow('Equalized Image', img_eq)cv2.waitKey(0)cv2.destroyAllWindows()