python代码实现直方图均衡
时间: 2023-11-08 12:02:54 浏览: 138
要实现直方图均衡,可以使用OpenCV库来处理图像。下面是用Python代码实现直方图均衡的示例:
```python
import cv2
import numpy as np
def histogram_equalization(image):
# 将图像转为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度直方图
hist, bins = np.histogram(gray.flatten(), 256, [0,256])
# 计算累积分布函数
cdf = hist.cumsum()
# 使用直方图均衡化算法
cdf_normalized = cdf * hist.max() / cdf.max()
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')
# 应用直方图均衡化
equalized = cdf[gray]
return equalized
# 读取图像
image = cv2.imread('image.jpg')
# 进行直方图均衡化
result = histogram_equalization(image)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Histogram Equalized Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此代码使用OpenCV库将图像转换为灰度图像,计算灰度直方图,然后计算累积分布函数。然后,它使用直方图均衡化算法对图像进行均衡化处理,并返回均衡化后的图像。最后,使用OpenCV库显示原始图像和直方图均衡化后的图像。
阅读全文