用python写一个直方图均衡化法的程序
时间: 2023-08-24 18:08:16 浏览: 76
好的,下面是一个简单的直方图均衡化法的 Python 程序:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像并转换为灰度图
img = cv2.imread('lena.jpg', 0)
# 计算灰度直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算均衡化后的像素值
img_equalized = np.interp(img.flatten(), bins[:-1], cdf_normalized).reshape(img.shape)
# 显示原图和均衡化后的图像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
ax = axes.ravel()
ax[0].imshow(img, cmap=plt.cm.gray)
ax[0].set_title('Original')
ax[1].imshow(img_equalized, cmap=plt.cm.gray)
ax[1].set_title('Equalized')
plt.show()
```
程序首先读取一张图像,并将其转换为灰度图。然后计算灰度直方图,并将其归一化为累积分布函数。接着,程序使用 `np.interp()` 函数计算均衡化后的像素值,并将其重新转换为图像形式。最后,程序使用 `matplotlib` 库显示原图和均衡化后的图像。
阅读全文