簡體   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