使用matplotlib.image模块计算图像的直方图
发布时间:2023-12-17 02:33:33
在图像处理中,直方图是一种统计某个图像中灰度级或颜色级的分布情况的工具。直方图可以通过将图像中各个像素的灰度级或颜色级进行统计,并以柱状图的形式展示出来。
在Python中,我们可以使用matplot.image模块中的histogram函数来计算图像的直方图。下面是一个使用例子:
import matplotlib.pyplot as plt
from matplotlib import image
# 读取图像
img = image.imread('image.jpg')
# 将图像转为灰度图
gray_img = img.mean(axis=2)
# 计算直方图
hist, bins = plt.histogram(gray_img.flatten(), bins=256, range=[0,256])
# 绘制直方图
plt.figure()
plt.title('Grayscale Image Histogram')
plt.xlabel('Pixel Value')
plt.ylabel('Frequency')
plt.plot(hist)
plt.show()
首先,我们需要导入matplotlib.pyplot和matplotlib.image模块,并使用image.imread函数读取图像。注意,image.imread函数会将图像转为numpy数组格式。
接下来,我们可以将图像转为灰度图。这一步是可选的,如果图像已经是灰度图,则可以跳过。
然后,我们使用plt.histogram函数来计算直方图。该函数接受两个参数:待计算直方图的数据和直方图的分箱数。flatten函数将二维数组转为一维数组,方便直方图处理。
最后,我们使用plt.plot函数绘制直方图。其中,hist变量保存了计算得到的直方图的数据,bins变量保存了相应的分箱位置。我们可以通过修改plt.title、plt.xlabel和plt.ylabel来设置标题和坐标轴标签。
运行以上代码,就能够显示出图像的灰度直方图了。
注意,由于matplotlib.pyplot是与交互式命令行一起使用的,所以在使用Jupyter Notebook等非交互式环境中,需要加上plt.show()函数才能显示图像。
