数字图像处理中直方图均衡化的Python 实现程序
时间: 2024-12-24 14:36:10 浏览: 0
数字图像处理中的直方图均衡化是一种常见的增强图像对比度的技术,它通过改变像素值的概率分布来提升图像的整体亮度和细节可见度。在 Python 中,我们可以利用 OpenCV 库来实现直方图均衡化。以下是一个简单的示例:
```python
import cv2
import numpy as np
def histogram_equalization(image_path):
# 读取图片
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 计算图像的直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 归一化直方图
cdf = hist.cumsum()
cdf_normalized = cdf * (255.0 / cdf.max())
# 使用累积分布函数计算新的像素值
equalized_img = np.interp(img.flatten(), bins[:-1], cdf_normalized).reshape(img.shape)
# 返回均衡化的图像
return equalized_img
# 示例使用
image_path = "example_image.jpg"
equaled_img = histogram_equalization(image_path)
cv2.imshow("Original Image", img)
cv2.imshow("Equalized Image", equaled_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读取灰度图像,然后计算其直方图,接着归一化这个直方图得到累积分布函数(CDF),最后通过插值将原始像素映射到新的等概率区间,完成直方图均衡。
阅读全文