直方圖均衡
定義
根據維基百科上的定義, 直方圖均衡(Histogram Equalization)是影像處理領域中利用直方圖對對比度進行調整的方法.
顧名思義, 直方圖均衡是將直方圖的分佈(概率密度)調整為均勻分佈.
為什麼要做直方圖均衡
根據資訊理論, 資訊的熵越大, 包含的資訊也就越多, 熵的計算公式如下:
只有當 \(p(x_i)\) 均勻分佈時, 熵的值最大. 對應到影像上, 當影像直方圖均勻分佈時, 影像對比度最大. 如下圖所示:
藍色為原始影像直方圖, 綠色為均衡後直方圖, 對應的處理後的影像為:
可以看到, 直方圖均衡處理後, 影像變得更加清晰了.
怎麼做直方圖均衡
知道了為什麼, 就要知道怎麼做. 一般直方圖均值有以下幾個步驟:
- 統計影像的直方圖, 歸一化到[0,1]
- 計算對映函式
式中, \(H\), \(W\) 分別為影像的高和寬, \(n_k\) 表示灰度值為 \(r_k\) 的畫素的個數, \(s_k\) 為變換後的灰度值, \(T(r_k)\) 為對映函式, 計算過程使用了累計直方圖.
- 利用得到的對映函式, 對影像進行處理
- 對於RGB影像, 可以轉到HSV空間, 對V通道進行均衡後, 轉回RGB空間, 如下圖所示結果:
為什麼可以這麼做
知道怎麼做了, 就要知道為什麼可以這麼做. 這裡解釋下為啥可以這麼做, 即公式(3)是怎麼得到的.
設原始直方圖分為為
均衡化後的直方圖分佈為
對映函式為
這裡對映函式必須為單調遞增函式, 滿足:
即對應區域間內畫素點的總數是一樣的, 如下圖紅色區域所示:
將公式(4)代入公式(5), 則有:
因而, 可以得到:
對應的離散形式為公式(3).
存在問題
- 如果對映函式為公式(6), 為連續形式, 這種對映是可逆的, 但更改為離散形式, 公式(3)後, 變成了不可逆的.
- 對映變換會丟失資訊, 對出現比例很少的灰度進行合併, 從而會丟失部分細節.
- 對於佔比例較多的灰度, 則會將其拉伸, 而導致其佔據了更多的灰度, 壓縮了其他灰度.
改進
直方圖均衡過度的強調了灰度個數的重要性, 對數量多的灰度過度的進行了增強, 而影像中, 比例比不是很多的灰度往往更重要, 因而改進的方向就是減少數量多的灰度的影響, 我這裡想到的有 3 種方法:
- 對直方圖開根號, 減少數量多灰度的影響;
- 對直方圖進行截斷, 超過部分數量直接去除, 從而減小數量多灰度的影響;
- 在第2種方法的基礎上, 將超出部分均勻的加到直方圖的每個bin上(該想法來源於CLAHE);
這3種方法的對映關係曲線如下所示:
從圖中可以看到, 原始的直方圖均衡後影像最亮, 如下所示為幾種方法的結果對比, 依次為原圖, 原始直方圖, 改進0, 改進1, 改進2:
可以看到, 直方圖可以改善影像整體的質量, 但對於某些區域性影像, 則由於直方圖的性質導致過亮或者過暗.
小結
這裡總結下直方圖均衡化的優缺點:
- 直方圖均衡化演算法簡單, 速度快;
- 可以改善影像整體質量;
- 但對於影像區域性質量改善效果不是很好;