灰階直方圖
灰階直方圖是表示圖像中灰階值分布的直方圖,标繪了圖像中每個灰階值的像素數
橫坐标:圖像中各個像素點的灰階級
縱坐标:具有該灰階級的像素個數

歸一化直方圖
歸一化直方圖是表示圖像中灰階值分布的機率之和等于1
縱坐标:出現這個灰階級的機率
需要注意的,直方圖術語:
dims:需要統計的特征的數目。當dims=1時,表示我們僅統計灰階值
bins:每個特征空間子區段的數目
range:每個特征空間的取值範圍
使用python中matplotlib庫來繪制直方圖
import matplotlib.pyplot as plt
函數hist(資料源,像素級),根據資料源和像素級繪制直方圖
其中,資料源必須是一維數組圖像;像素級一般是256,指[0,255]
通過ravel()函數,将多元的數組,轉化為一維的形式
使用opencv來繪制統計直方圖
hist = cv2.calcHist(images,channels,mask,histSize,ranges[,accumulate])
傳回的hist直方圖,相當于縱坐标的值,也就是具有灰階級像素個數的二維數組
1>channels:指定通道
通道的編号需要用中括号括起來,當輸入圖像是灰階圖時,對應的通道是[0];當輸入圖像是彩色圖像時,通道[0],[1],[2]分别對應B,G,R
2>mask:掩碼圖像
統計整幅圖像的直方圖,設為None;統計圖像某一部分的直方圖時,需要掩碼圖像
3>histSize:BINS的數量
每個特征空間子區段的數目,一般是256,需要用中括号括起來
4>range:每個特征空間的取值範圍
一般是[0,255],需要用中括号括起來
5>accumulate:累計辨別(可選參數)
預設值為False,如果被設定為True,則直方圖在開始配置設定時不會被清零。也就是說計算一組圖像的直方圖
通過python的matplotlib庫,繪制opencv的統計直方圖
(如果是彩色圖像,需要分别繪制BGR三個通道的直方圖)
使用掩膜mask的直方圖
圖像掩模一般用來對處理的圖像(全部或者局部)進行遮擋,來控制圖像處理的區域或處理過程
生成掩膜mask圖像,一般需要兩步:
1> mask = np.zeros(image.shape,np.uint8)
第一步,建立與原圖一樣大小的mask圖像,并将所有像素初始化為0,也就是一張全黑色的圖
2> mask[200:400,200:400] = 255
第二步,将mask圖中指定區域的所有像素值設定為255,也就是将整個指定區域變成了白色
還是使用opencv來繪制統計直方圖