如何绘制 python 上 8 位图像的 16,32 和 64 bin 直方图?

How can I plot the 16,32 and 64 bin histogram of an image that is 8 bit on python?

我有一个灰度图像数组

  Array

像这样的数组样本;

    array([[[142, 142, 142],
    [143, 143, 143],
    [142, 142, 142],
    ...,
    [147, 147, 147],
    [148, 148, 148],
    [143, 143, 143]],

   [[142, 142, 142],
    [142, 142, 142],
    [142, 142, 142],
    ...,
    [148, 148, 148],
    [150, 150, 150],
    [147, 147, 147]],

数组类型为

    Array.dtype
    dtype('uint8')

我想绘制这个数组的 16、32 和 64-bin 直方图,有人有想法吗?

我注意到你有一张 RGB 图像(3 通道)。您可能希望按每个通道(红色、绿色和蓝色)可视化其直方图。

您可以使用 pandas 轻松实现此目的。例如,给定一个与变量 Array 具有相同数据结构的 RGB 图像数组 img,您可以通过将其转换为 DataFrame

来绘制每个通道的直方图
import pandas as pd

df = pd.DataFrame({
    'red': img[...,0].ravel(), 
    'green': img[...,1].ravel(), 
    'blue': img[...,2].ravel()
})

然后使用plot.hist

绘制它
df.plot.hist(bins=n_bins, alpha=.3, xlim=[0,255], color=['red', 'green', 'blue'])

其中 n_bins 是 bin 的数量。


对于n_bins=16

对于n_bins=32

对于n_bins=64