繁体   English   中英

Python:numpy.histogram 图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM