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