如何绘制 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
我有一个灰度图像数组
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