读取chest1,tif图像,编写直方图均衡化程序,并对比观察均衡化前后图像直方图的变化。
时间: 2024-09-09 16:06:42 浏览: 39
医学图像分割数据集:气胸图像(Chest X-Ray)的语义分割数据集 (超过2000张数据和标签)
读取图像并进行直方图均衡化是数字图像处理中的常见操作,用于改善图像的对比度。以下是使用Python语言和OpenCV库来实现这一功能的基本步骤:
1. 首先,需要导入必要的库,如`cv2`(OpenCV库)用于图像处理,`matplotlib.pyplot`用于显示图像和直方图。
2. 使用`cv2.imread()`函数读取图像。注意,OpenCV默认读取的图像是BGR格式,而不是常见的RGB格式。
3. 应用直方图均衡化函数`cv2.equalizeHist()`到图像的亮度通道上(在BGR格式中通常是通道B)。这将对亮度通道进行均衡化处理,因为颜色通道的均衡化通常会引入不希望的颜色失真。
4. 显示原图像和均衡化后的图像,以及它们的直方图进行对比观察。
下面是一个简单的代码示例:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('chest1.tif', cv2.IMREAD_GRAYSCALE) # 以灰度模式读取图像
# 进行直方图均衡化
img_eq = cv2.equalizeHist(img)
# 计算直方图
hist_orig = cv2.calcHist([img], [0], None, [256], [0, 256])
hist_eq = cv2.calcHist([img_eq], [0], None, [256], [0, 256])
# 绘制直方图和图像对比
plt.figure(figsize=(12, 6))
plt.subplot(121), plt.title('Original'), plt.plot(hist_orig)
plt.subplot(122), plt.title('Equalized'), plt.plot(hist_eq)
plt.show()
# 显示均衡化后的图像
cv2.imshow('Equalized', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,首先读取了名为`chest1.tif`的图像,并且使用`cv2.calcHist()`计算了原始图像和均衡化后图像的直方图,然后使用`matplotlib.pyplot`绘制了直方图,并且显示了原图和均衡化后的图像以进行对比。
阅读全文