网络知识
python直方图均匀化
2026-04-02 15:46  点击:0

Python中的直方图均匀化是一种图像处理的方法,它可以通过对图像的像素值进行改变,使得图像的对比度更加明显,细节更加清晰,色彩更加鲜艳。

直方图均衡化是将图像的灰度级进行拉伸,使得原先分布在灰度低区域的像素在均衡化后分布到整个灰度范围内,从而提高对比度的技术。其基本思路就是对图像的直方图进行统计并进行归一化,然后均衡化直方图,最后进行反归一化处理,就可以得到均衡化后的图像。

import cv2import numpy as npdef histogram_equalization(image):# 获取图像的直方图hist, bins = np.histogram(image.flatten(), 256, [0, 256])# 对直方图进行归一化处理cdf = hist.cumsum()cdf_normalized = cdf * hist.max() / cdf.max()# 生成均衡化后的直方图image_equalized = np.interp(image.flatten(), bins[:-1], cdf_normalized)image_equalized = image_equalized.reshape(image.shape)# 对均衡化后的直方图进行反归一化处理image_equalized = np.uint8(image_equalized / image_equalized.max() * 255)return image_equalized# 读取图像image = cv2.imread("test.jpg", 0)# 均衡化直方图image_equalized = histogram_equalization(image)# 显示原始图像和均衡化后的图像cv2.imshow("Original Image", image)cv2.imshow("Equalized Image", image_equalized)cv2.waitKey(0)

以上是利用OpenCV库实现Python直方图均匀化的代码,核心步骤就是获取图像的直方图,归一化处理,生成均衡化后的直方图,反归一化处理等。

直方图均衡化是一种非常常见的图像处理技术,它对于图像的增强和改善具有非常明显的效果,能够使得图像从视觉上更加生动和鲜明。