2017年12月10日 星期日

Python 畫影像的直方圖 (histogram)



對一個256階的灰度影像而言,每個像素值介於0與255之間。影像的直方圖就是將這256個灰度值在影像中出現的次數畫成長條圖。在Python中,可以利用 matplotlib這個package來繪圖。


↓簡單的作法如下

第7行: hist 為一個長度為256的一維陣列,且預設值皆為零;
第8行: 灰度值 intensity 從0..255
第9行: 影像值是否等於灰度值intensity? 將結果儲存於二維陣列A中 (A的值為True或False)
第10行: 將A中元素為True的個數加總,並儲存於一維陣列hist
第12行: 將一維陣列丟給plot
第13行: 繪出結果

↓結果如下

上圖下方有個磁碟片圖示,按下下它可以將此直方圖存起來,以便未來放在簡報或論文中。

也許你會說這個圖形可不可以改顏色、粗細、加文字...... 答案是:可以!
只是圖型的參數實在太多了,就以這個例子而言,我們作一些改變..

↓程式修改的部份如下

第12行: 將圖形物件取名為myplot
第13行: 加X軸文字 Intensity;
第14行: 加Y軸文字 Number of Intensity;
第15行: 設定myplot屬性為 線條顏色為紅色,樣式為虛線

↓結果如下



-- END --

2 則留言:

  1. C.-H. Chu 您好
    想請教您,若我想知道出現Pixel數值最高次數(頻率)的值
    要怎麼計算呢

    回覆刪除
    回覆
    1. 在矩陣hist內最大的值就是您要的,只是在這個例子hist是numpy的array,所以最大值是np.amax(hist)。

      刪除