直方图均衡python代码
时间: 2024-05-13 17:11:42 浏览: 186
直方图均衡是一种常见的图像增强技术,可以增加图像的对比度和亮度,使得图像更加清晰。下面是一个简单的Python代码实现:
```python
import cv2
import numpy as np
def histeq(image):
# 计算图像的直方图
hist, bins = np.histogram(image.flatten(), 256, [0,256])
# 计算累积分布函数
cdf = hist.cumsum()
# 归一化
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算新的像素值
image_eq = np.interp(image.flatten(), bins[:-1], cdf_normalized)
image_eq = image_eq.reshape(image.shape)
return image_eq.astype('uint8')
# 读取图像
image = cv2.imread('test.jpg', 0)
# 直方图均衡
image_eq = histeq(image)
# 显示原始图像和均衡化后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Equalized Image', image_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码中,`histeq()`函数接受一个灰度图像作为输入,计算出其直方图,然后计算出累积分布函数,并对其进行归一化。最后,使用`np.interp()`函数计算新的像素值,生成均衡化后的图像。最后,通过OpenCV库中的`imshow()`函数显示原始图像和均衡化后的图像。
阅读全文