[英]Python: numpy.histogram plot
我想测量 16 位图像中的像素强度。 因此,我做了一个 numpy 直方图,显示像素数与灰度值从 0 到 65535(16 位)的关系。 我做到了
hist= numpy.histogram(grayscaleimage.ravel(), 65536, [0, 65536])
之后,我使用以下方法测量图像的整体强度(这意味着总和:像素数 * 每个像素值):
Intensity = 0
for i in range(len(hist[0])):
Intensity += hist[0][i]*hist[1][i]
print(Intesity)
现在我想看看我的直方图。 我不知道如何绘制hist
,尽管我有我需要的值。 有人可以帮我弄这个吗?
您可以直接为此使用matplotlib
:
import matplotlib.pyplot as plt
plt.hist(grayscaleimage.ravel(), bins=np.linspace(0, 65536, 1000))
plt.show()
或者像你已经做的那样使用 numpy 并绘制一个条形图。 但是,您必须自己正确设置条形的宽度,并跳过最后一个 bin 条目,使其与直方图具有相同的尺寸:
import numpy as np
import matplotlib.pyplot as plt
hist, bin_edges = np.histogram(grayscaleimage.ravel(), bins = np.linspace(0, 65536, 1000))
plt.bar(bin_edges[:-1], hist, width=65536./1000)
plt.show()
我在这里只使用了 1000 个 bin,但您也可以选择更多,具体取决于图像的大小。
PS:如果你想要总强度,你不必遍历所有的 bin。 通过将图像np.sum(grayscaleimage)
所有像素值相加,您将获得更准确的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.