如何用多张图片输入创建一个直方图

图像处理

我用相同的曝光和距离拍摄了58张旋转物体的图片,现在我想创建直方图,以直方图在 Python ,覆盖所有图片。我正在寻找实现的技巧,目前我已经阅读了图像列表,或者听说过批次。

谢谢

LIUYAOZU 回答:如何用多张图片输入创建一个直方图

我知道您可能正在处理CT-Scan /同步加速器提供的数据。作为博士的一部分,我有时会遇到这个问题,因此我必须开发一个例程来生成此问题。我会给您一些实现它的提示。

提取图像直方图的最直接方法是:

1)将所有图像转换为相同类型(就我而言,我通常将其转换为8位灰度)。

2)声明一个全局直方图,您将在其中添加每个图像的每个灰度值的计数。我声明了一个2列数组。在第一列中,我只写了介于0到255之间的灰度值。在第二列中,我将存储它们各自的计数。我这样做是为了以后再绘制

histogram_global = np.zeros((256,2))

3)提取堆栈中每个图像的直方图。为此,您必须:

3.1)使用库PIL打开图像并将每个图像转换为一个数组,其中该数组的每个值都是8位图像的0到255之间的灰度值。

im=Image.open(image_path)
a = np.array(im.getdata())

3.2)通过“ Numpy”库,您可以获得每个灰度值的计数,即该图片的直方图。

bins_hist = list(range(0,257))
hist_image = np.histogram(a,bins=bins_hist)
counts = hist_image[0]

3.3)将这些计数添加到您在一开始就声明的全局直方图中。

4)绘制全局直方图。

fig,ax1 = plt.subplots()
color = 'tab:red'
ax1.bar(histogram_i[:,0],histogram_i[:,1],color=color)

如上所述,此过程适用于8位(灰度)图片。但是,如果要处理RGB图片,则过程类似,但不仅需要创建三个全局直方图,还需要创建三个全局直方图,每个通道一个;红色,蓝色和绿色。其余类似。

本文链接:https://www.f2er.com/3150164.html

大家都在问