编写程序,读取一副图像,对其进行直方图均衡化,并绘制均衡化处理前后的直方图。
时间: 2024-10-10 10:10:17 浏览: 39
在Python中,我们可以使用OpenCV库来实现这个功能。首先,你需要安装`opencv-python`库。以下是基本步骤:
1. 导入所需的库:
```python
import cv2
import matplotlib.pyplot as plt
```
2. 读取图像文件:
```python
image = cv2.imread('your_image_path.jpg', cv2.IMREAD_GRAYSCALE) # 如果是灰度图像,可以只传路径
```
3. 计算原始图像的直方图:
```python
hist, _ = cv2.calcHist([image], [0], None, [256], [0, 256])
plt.figure(figsize=(10, 4))
plt.subplot(121)
plt.title('Original Image Histogram')
plt.plot(hist)
plt.xlim([0, 256])
plt.xlabel('Pixel Intensity')
plt.ylabel('Frequency')
```
4. 对图像进行直方图均衡化:
```python
equ = cv2.equalizeHist(image)
```
5. 再次计算并绘制均衡化后的图像直方图:
```python
eq_hist, _ = cv2.calcHist([equ], [0], None, [256], [0, 256])
plt.subplot(122)
plt.title('Histogram Equalized Image')
plt.plot(eq_hist)
plt.xlim([0, 256])
plt.show()
```
在这个过程中,`cv2.equalizeHist()`函数会对输入的图像进行直方图均衡化,使得各个像素强度的分布更均匀,增强对比度。
阅读全文