直方图均衡化代码python
时间: 2024-11-29 13:13:48 浏览: 4
直方图均衡化是一种图像增强技术,它通过改变像素值的概率分布来改善图像对比度,使得原本暗淡的部分变得更亮,明亮部分变得更暗。在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 * hist.max() / cdf.max()
# 使用累积分布函数转换像素值
equ_image = np.interp(image.flatten(), bins[:-1], cdf_normalized).reshape(image.shape)
# 应用到原始图像上并显示结果
equ_image = equ_image.astype('uint8')
cv2.imshow("Original Image", image)
cv2.imshow("Equalized Image", equ_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 使用你的图片路径替换image_path
histogram_equalization("your_image_path.jpg")
```
在这个例子中,我们首先读入灰度图像,计算直方图,然后创建累积分布函数,并根据这个函数对每个像素值进行映射。最后将处理后的像素值应用回原图并显示。
阅读全文