将直方图均衡化处理的代码
时间: 2024-12-04 21:22:22 浏览: 5
直方图均衡化是一种图像增强技术,用于改善图像对比度,使得图像的亮度分布更均匀。在Python中,我们可以使用OpenCV库来实现直方图均衡化。以下是一个简单的例子,展示如何对灰度图像进行直方图均衡化:
```python
import cv2
import numpy as np
def histogram_equalization(image_path):
# 读取图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 计算直方图
hist, bins = np.histogram(image.flatten(), 256, [0, 256])
# 归一化直方图
cdf = hist.cumsum()
cdf_normalized = cdf * (255.0 / cdf.max())
# 使用累积分布函数映射像素值
equi_image = np.interp(image.flatten(), bins[:-1], cdf_normalized).reshape(image.shape)
# 应用并返回结果
return equi_image
# 示例用法
equi_img = histogram_equalization('input_image.png')
cv2.imshow('Original Image', image)
cv2.imshow('Equalized Image', equi_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,`image.flatten()`将图像展平成一维数组,方便计算直方图。然后计算累积分布函数(cdf),将其归一化,再通过`np.interp`函数将原始像素值映射到新的分布。最后,将结果反展平回原图像尺寸。
阅读全文