写一段直方图均衡化的代码
时间: 2024-06-24 10:01:06 浏览: 8
直方图均衡化是一种常见的图像增强技术,它通过对图像灰度级的概率分布进行重新分配,使得图像的整体对比度得到提升。在Python中,我们可以使用OpenCV库来实现直方图均衡化。以下是一个简单的代码示例:
```python
import cv2
import numpy as np
def histogram_equalization(image):
# 将图像转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度图像的直方图
hist, bins = np.histogram(gray_image.flatten(), 256, [0, 256])
# 归一化直方图
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 使用累积分布函数计算新的像素值
eq_image = np.interp(gray_image.flatten(), bins[:-1], cdf_normalized).reshape(gray_image.shape)
return eq_image
# 示例用法
image_path = 'path_to_your_image.jpg'
input_image = cv2.imread(image_path)
equalized_image = histogram_equalization(input_image)
cv2.imshow('Original Image', input_image)
cv2.imshow('Equalized Image', equalized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,`cv2.cvtColor`用于颜色空间转换,`np.histogram`用于计算直方图,`cdf`表示累积分布函数,`np.interp`则用于根据累积分布函数对原始像素值进行映射,从而达到直方图均衡的效果。