python实现直方图均衡化的代码,功能包括读取图像,均衡化图像,输出原图和均衡化后的图像,以及它们的灰度直方图
时间: 2024-12-13 22:26:30 浏览: 88
在Python中,你可以使用`PIL`库来处理图像,`matplotlib`库来绘制直方图,以及`skimage`库来进行直方图均衡化。以下是一个简单的例子,展示了如何实现这个过程:
```python
from PIL import Image
import matplotlib.pyplot as plt
from skimage import exposure
# 1. 读取图像
def read_image(file_path):
image = Image.open(file_path)
return image.convert('L') # 转换为灰度图像
# 2. 直方图均衡化
def histogram_equalization(image):
eq_image = exposure.equalize_hist(image) # 使用skimage的直方图均衡化函数
return eq_image
# 3. 输出图像
def display_images(img1, img2, titles=['Original', 'Equalized']):
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].imshow(img1, cmap='gray')
axs[0].set_title(titles[0])
axs[1].imshow(img2, cmap='gray')
axs[1].set_title(titles[1])
plt.show()
# 示例
input_img_path = 'path_to_your_image.jpg'
img = read_image(input_img_path)
# 均衡化图像
equalized_img = histogram_equalization(img)
# 输出原始图和均衡化后的图及其灰度直方图
display_images(img, equalized_img)
```
在这个代码中,首先读取并转换成灰度图像,然后对图像进行直方图均衡化。最后,显示原始图像和均衡化后的图像,并分别绘制它们的灰度直方图。
阅读全文