编写python程序,完成对给定灰度图像的均衡化 要求 1. 读入给定灰度图像并显示出来 2. 统计其归一化的直方图,并用柱状图的形式显示出来 3. 显示均衡化后的图像 4. 统计均衡化后的直方图,并用柱状图的形式显示出来
时间: 2024-03-10 11:48:56 浏览: 61
以下是一个简单的Python程序,可以完成对给定灰度图像的均衡化:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读入给定灰度图像并显示出来
img = cv2.imread("image.jpg", 0)
cv2.imshow("Original Image", img)
cv2.waitKey(0)
# 统计归一化直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
cdf = hist.cumsum()
cdf_normalized = cdf * float(hist.max()) / cdf.max()
# 用柱状图显示归一化直方图
plt.plot(cdf_normalized, color='b')
plt.hist(img.flatten(), 256, [0, 256], color='r')
plt.xlim([0, 256])
plt.legend(('cdf', 'histogram'), loc='upper left')
plt.show()
# 均衡化图像
equ = cv2.equalizeHist(img)
cv2.imshow("Equalized Image", equ)
cv2.waitKey(0)
# 统计均衡化后的直方图
hist, bins = np.histogram(equ.flatten(), 256, [0, 256])
cdf = hist.cumsum()
cdf_normalized = cdf * float(hist.max()) / cdf.max()
# 用柱状图显示均衡化后的直方图
plt.plot(cdf_normalized, color='b')
plt.hist(equ.flatten(), 256, [0, 256], color='r')
plt.xlim([0, 256])
plt.legend(('cdf', 'histogram'), loc='upper left')
plt.show()
```
在这个程序中,我们首先使用OpenCV库读入给定的灰度图像,并显示出来。然后,我们使用NumPy库计算出该图像的归一化直方图,并使用matplotlib库将其可视化为柱状图。
接下来,我们使用OpenCV库对该图像进行均衡化,并将其显示出来。然后,我们再次计算均衡化后的直方图,并将其可视化为柱状图。
请注意,这只是一个简单的示例程序,实际上还有许多其他方法可以实现图像均衡化。
阅读全文