天天看點

12-直方圖

灰階直方圖

灰階直方圖是表示圖像中灰階值分布的直方圖,标繪了圖像中每個灰階值的像素數

橫坐标:圖像中各個像素點的灰階級

縱坐标:具有該灰階級的像素個數

12-直方圖
12-直方圖

歸一化直方圖

歸一化直方圖是表示圖像中灰階值分布的機率之和等于1

縱坐标:出現這個灰階級的機率

12-直方圖

需要注意的,直方圖術語:

dims:需要統計的特征的數目。當dims=1時,表示我們僅統計灰階值

bins:每個特征空間子區段的數目

range:每個特征空間的取值範圍

使用python中matplotlib庫來繪制直方圖

import matplotlib.pyplot as plt

函數hist(資料源,像素級),根據資料源和像素級繪制直方圖

其中,資料源必須是一維數組圖像;像素級一般是256,指[0,255]

通過ravel()函數,将多元的數組,轉化為一維的形式

12-直方圖

使用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,則直方圖在開始配置設定時不會被清零。也就是說計算一組圖像的直方圖

12-直方圖

通過python的matplotlib庫,繪制opencv的統計直方圖

(如果是彩色圖像,需要分别繪制BGR三個通道的直方圖)

12-直方圖

使用掩膜mask的直方圖

圖像掩模一般用來對處理的圖像(全部或者局部)進行遮擋,來控制圖像處理的區域或處理過程

12-直方圖

生成掩膜mask圖像,一般需要兩步:

1> mask = np.zeros(image.shape,np.uint8)

第一步,建立與原圖一樣大小的mask圖像,并将所有像素初始化為0,也就是一張全黑色的圖

2> mask[200:400,200:400] = 255

第二步,将mask圖中指定區域的所有像素值設定為255,也就是将整個指定區域變成了白色

12-直方圖

還是使用opencv來繪制統計直方圖

12-直方圖

繼續閱讀