用python写一段代码实现直方图均衡的函数,并展现出来
时间: 2023-04-12 11:00:38 浏览: 56
好的,以下是用 Python 实现直方图均衡的函数:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
def histogram_equalization(image):
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度直方图
hist, bins = np.histogram(gray.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算均衡化后的像素值
equalized = np.interp(gray.flatten(), bins[:-1], cdf_normalized)
equalized = equalized.reshape(gray.shape)
# 显示原图和均衡化后的图像
plt.subplot(121)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122)
plt.imshow(equalized, cmap='gray')
plt.title('Equalized Image')
plt.xticks([]), plt.yticks([])
plt.show()
# 测试函数
image = cv2.imread('test.jpg')
histogram_equalization(image)
```
这个函数可以将输入的彩色图像转换为灰度图像,然后对灰度直方图进行均衡化,最后显示原图和均衡化后的图像。你可以将 `test.jpg` 替换为你自己的图像文件名来测试函数。