圖像直方圖全面介紹
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
圖像直方圖是圖像的基本屬性之一,也是圖像像素數據分布的統(tǒng)計學特征,常見的圖像直方圖可以分為二值圖像的直方圖表示如下:

上圖a是4x4的二值圖像,b是對應的直方圖,可以看出X軸表示像素范圍(0-黑色、1-白色),Y軸表示像素值出現的頻次,即分布。
對灰度圖像來說,它的像素值取值范圍會擴展到0~255之間,其直方圖可以表示如下:

從上面的圖中可以發(fā)現灰度圖像的直方圖依然是X軸表示像素值范圍、Y軸表示各個像素值出現頻次,即像素分布。
彩色圖像有紅色、綠色、藍色三個通道,其直方圖表示稍微復雜一點,要對每個通道進行直方圖計算跟表示,圖示如下:

可以看出彩色圖像的三個通道各自對應一個直方圖分布。
直方圖閾值化
OpenCV中支持的兩種閾值計算的二值化方法
THRESH_OTSU
THRESH_TRIANGLE
均是基于圖像直方圖實現圖像二值化分割,其中OTSU閾值分割(大津)對直方圖為雙峰的灰度圖像效果比較好,圖示如下:

而三角法對直方圖分布單峰的圖像分割效果比較好,圖示如下下:

直方圖均衡化
直方圖均衡化是一種通過提升圖像對比度實現圖像增強的方法,它跟最基礎的基于像素差值放縮改變對比度的方法效果更好。圖示如下:

從上圖中可以看出,最左側列是輸入圖像,是低對比度圖像,左側二列為直接改變像素值獲得對比度提升圖像,左側三列是通過直方圖均衡化完成對比度提升,最右側一列也是通過直方圖均衡化完成,不過是基于局部直方圖均衡化。OpenCV中支持兩種直方圖均衡化方法分別是:
正常的直方圖均衡化(全局直方圖均衡化)
對比度受限的自適應直方圖均衡化(CLAHE-局部自適應直方圖均衡化)
特別需要注意的是OpenCV的直方圖均衡化函數都只支持單通道八位的圖像、對RGB彩色圖像來說,要實現直方圖均衡化提升對比度必須先轉換到HSV色彩空間,然后對亮度通道V進行直方圖均衡化之后再轉換到RGB色彩空間顯示。圖示如下:

直方圖對比
圖像直方圖還可以實現圖像相似性簡單分析與查找,其原理是對兩張圖像生成的直方圖分布數據,進行歸一化之后比較,根據數據像素程度,從而判定圖像內容的相似程度,該方法可靠性雖然不高,但勝在快捷方便。OpenCV中支持的直方圖比較的方法有如下:

相關函數為:
compareHist(InputArray H1,InputArray H2,int method)
參數解釋
H1表示第一張圖的直方圖
H2表示第二張圖的直方圖
method表示直方圖比較的方法,支持卡方、相關性,交叉、巴氏距離
直方圖反向投影
圖像反向投影的最終目的是獲取ROI然后實現對ROI區(qū)域的標注、識別、測量等圖像處理與分析,是計算機視覺與人工智能的常見方法之一。反向投影通常是彩色圖像投影效果會比灰度圖像效果要好,原因在于彩色圖像帶有更多對象細節(jié)信息,在反向投影的時候更加容易判斷、而轉為灰度圖像會導致這些細節(jié)信息丟失、從而導致分割失敗。最常見的是基于圖像直方圖特征的反向投影,正是因為直方圖反向投影有這樣能力,所以在經典的MeanShift與CAMeanShift跟蹤算法中一直是通過直方圖反向投影來實現已知對象物體的定位。

需要注意的是,直方圖反向投影是基于顏色的,所以會對RGB彩色圖像轉換到HSV色彩空間,然后基于H跟S兩個通道生成2D直方圖數據分布,如下圖所示:

其它類型圖像直方圖與直方圖缺陷
除了圖像像素分布直方圖,還有一些其他類型基于圖像梯度跟角度的直方圖類型,總結如下:
-圖像像素直方圖
-圖像梯度直方圖
-圖像角度直方圖
后面兩種類型的直方圖在SIFT跟HOG特征提取的算法中都有應用,但是同時直方圖只是數據統(tǒng)計信息,沒有包含圖像空間信息,所以通過直方圖無法正確描述圖像的結構化信息。它的缺點圖示如下:

上圖說明直方圖數據完全一致的圖像,但是圖像的空間結構完全不同,根本沒有相似性可言,所以圖像直方圖信息只是圖像的基本屬性之一,但是不是圖像的唯一特征。同樣作為圖像的基本屬性之一,直方圖應用范圍非常廣泛,是最基礎的圖像特征向量數據之一,常規(guī)的直方圖歸一化即可得到PDF數據。
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。
下載2:Python視覺實戰(zhàn)項目52講 在「小白學視覺」公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。
下載3:OpenCV實戰(zhàn)項目20講 在「小白學視覺」公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現20個實戰(zhàn)項目,實現OpenCV學習進階。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


