编写实现数字图像直方图均衡化的程序,要求:(1)显示 原始图像和均衡化后的图像;(2)显示原始图像和均衡化后图 像的直方图。
时间: 2024-12-18 17:16:56 浏览: 17
数字图像直方图均衡化是一种常见的图像增强技术,它通过调整像素值的概率分布,使得整个图像的对比度得到改善。下面是一个简单的Python程序,使用PIL库处理图像并结合matplotlib库绘制直方图,这里假设我们有一个名为`image.jpg`的图像文件:
```python
import cv2
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 计算原图像的直方图
hist, _ = np.histogram(img.flatten(), bins=256, range=(0, 256))
# 直方图均衡化
equ_hist_eq = cv2.equalizeHist(img)
# 显示原图像和直方图
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.xlabel('Intensity')
plt.ylabel('Frequency')
# 显示均衡化后的图像和直方图
plt.subplot(2, 2, 2)
plt.imshow(equ_hist_eq, cmap='gray')
plt.title('Histogram Equalized Image')
plt.xlabel('Intensity')
plt.ylabel('Frequency')
# 绘制两个直方图
plt.subplot(2, 2, 3)
plt.hist(img.flatten(), bins=256, color='blue', alpha=0.5)
plt.xlim([0, 256])
plt.title('Original Image Histogram')
plt.subplot(2, 2, 4)
plt.hist(equ_hist_eq.flatten(), bins=256, color='red', alpha=0.5)
plt.xlim([0, 256])
plt.title('Equalized Image Histogram')
plt.tight_layout()
plt.show()
阅读全文