python直方图均值化
时间: 2023-10-06 15:04:15 浏览: 98
大型图像通过对比度检索---Python代码
Python直方图均衡化是图像处理中的一种操作,可以使图像的灰度值分布更加均匀,增强图像的对比度和细节。在Python中,可以使用PIL库和matplotlib库来实现直方图均衡化操作。
首先,使用PIL库读取图像并将其转换为灰度图像。然后,使用matplotlib库的hist函数绘制原图像的直方图。接下来,使用PIL库中的histeq函数对图像进行直方图均衡化处理,并将处理后的图像保存到img2变量中。最后,再次使用matplotlib库绘制处理后的图像以及其对应的直方图。
下面是一段实现图像直方图均衡化的Python代码示例:
```python
# 利用PIL库读取图像
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# 将图像转成灰度图并读取到数组中
img = np.array(Image.open('./pictures/pp.jpg').convert('L'))
# 使用matplotlib的库绘制图片进行显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure() # 新建一个图像
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')
plt.title('原图')
plt.axis('off') # 不显示坐标轴
plt.subplot(2, 2, 2)
plt.imshow(img2, cmap='gray')
plt.title('均衡化之后图像')
plt.axis('off')
plt.subplot(2, 2, 3)
plt.hist(img.flatten(), 128)
plt.title('原图直方图')
plt.axis('off')
plt.subplot(2, 2, 4)
img2 = np.array(img2)
plt.hist(img2.flatten(), 128)
plt.title('均衡化之后图像直方图')
plt.axis('off')
plt.show()
```
通过这段代码,你可以看到原始图像、直方图均衡化后的图像以及两者对应的直方图。这样可以直观地观察直方图均衡化对图像的影响。
阅读全文