利用直方图均衡化编写程序实现图像增强
时间: 2024-10-10 13:16:58 浏览: 40
直方图均衡化-自实现_matlab图像处理直方图均衡化_
5星 · 资源好评率100%
利用直方图均衡化是一种常见的图像增强方法,它通过对像素值的概率分布进行重新分配,使得整个图像的亮度分布更均匀,从而使暗部细节更容易看清楚。以下是使用Python的OpenCV库实现图像直方图均衡化的简单步骤:
首先,你需要安装OpenCV库,如果还没有安装,可以使用pip命令安装:
```bash
pip install opencv-python
```
然后,你可以参考以下Python代码实现直方图均衡化:
```python
import cv2
import numpy as np
def histogram_equalization(image_path):
# 1. 读取图像
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 2. 计算直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 3. 归一化直方图
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 4. 使用累积分布函数映射像素值
eq_hist = np.interp(img.flatten(), bins[:-1], cdf_normalized).astype(np.uint8)
# 5. 构建新图像
equalized_img = eq_hist.reshape(img.shape)
return equalized_img
# 使用函数
input_image = 'input_image.jpg' # 替换为你的输入图像文件名
enhanced_image = histogram_equalization(input_image)
cv2.imwrite('output_equaled.jpg', enhanced_image) # 输出均衡化后的图像到新的文件
```
这段代码首先读取灰度图像,计算直方图,然后归一化直方图并使用累积分布函数映射像素值。最后,将结果存储回一个新的图像文件中。
阅读全文