直方圖均衡化(HE)
直方圖均衡化是最簡(jiǎn)單、最方便的低亮度圖片增強(qiáng)的算法。
HE通過(guò)拉伸圖片直方圖的分布,使得圖片的直方圖均勻的分布在[0,255] (8bit圖像),從而增強(qiáng)圖片的全局對(duì)比度。
適用范圍
對(duì)圖像前景和背景都非常暗(或非常亮)的圖片很有用。
缺點(diǎn)
- 容易增加背景噪聲的對(duì)比度,并且降低有用信號(hào)的對(duì)比度。
- 容易造成局部圖片過(guò)飽和。
保持亮度的動(dòng)態(tài)直方圖均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)
在增強(qiáng)圖片對(duì)比度的時(shí)候,需要保持增強(qiáng)后的圖片與增強(qiáng)前的圖片在亮度上是相同的
適用高斯濾波器平滑直方圖
由于數(shù)字圖像的直方圖并不是平滑的,會(huì)出現(xiàn)比較大的波動(dòng),以及會(huì)在某些數(shù)字上有所缺失,所以在直方圖進(jìn)行下一步處理前,需要先對(duì)直方圖進(jìn)行一個(gè)預(yù)處理。
- 使用線性插值方法補(bǔ)齊直方圖上的缺損數(shù)值。
- 使用一維高斯濾波器對(duì)直方圖進(jìn)行濾波。
其中是相對(duì)于kernel中心位置的坐標(biāo),
是標(biāo)準(zhǔn)差。
文章中使用的kernal大小為,
的大小為1.0762。
檢測(cè)平滑后直方圖局部最小值的位置
- 計(jì)算直方圖的一階導(dǎo)數(shù)。
- 由于直方圖的一階導(dǎo)數(shù)依然可能出現(xiàn)一些不平滑的現(xiàn)象,為此在尋找最小值之前,需要在進(jìn)行一步預(yù)處理。
change +-+ to +++
change -+- to ---
- 尋找局部的最小值
the local maximums are detected as the points where four successive negative signs are followed by eight successive positive sign
將每局部最小值之間的每一部分映射到一個(gè)新的動(dòng)態(tài)范圍內(nèi)
假設(shè)對(duì)應(yīng)于上述
個(gè)局部最大值的灰度值。
則這個(gè)局部最大值可以將圖像的直方圖分割為:
現(xiàn)在我們將這些子直方圖的范圍映射到新的動(dòng)態(tài)范圍,映射的方法如下:
其中 是每個(gè)子直方圖
中最高的像素值,
是每個(gè)子直方圖中最低的像素值,M是該子直方圖中所有像素的數(shù)目。
對(duì)于映射后的子直方圖的范圍,可由下式計(jì)算得到:
均衡化每個(gè)子直方圖
對(duì)于每一個(gè)子直方圖,我們使用以下公式得到每個(gè)像素值對(duì)應(yīng)的輸出
其中對(duì)應(yīng)于像素值
為的像素?cái)?shù)量,
為該子直方圖所包含的像素總量。
歸一化圖像的亮度
- 計(jì)算均衡化之前和之后圖像的平均亮度
和
。
- 用下的公式對(duì)均衡后的圖像進(jìn)行歸一化:
其中是最終的輸出圖像,
是均衡化后的圖像。
這一步做的目的是保持增強(qiáng)前的輸入圖片與輸出圖片有著相同的亮度。
實(shí)現(xiàn)代碼
- he
Matlab中histeq函數(shù)。 - bpdhe
https://github.com/baidut/OpenCE/tree/master/others
效果比較



從以上的效果圖可以看出,he非常容易使得圖片過(guò)飽和,對(duì)于彩色圖片來(lái)說(shuō),色彩也非常容易發(fā)生改變。
bpdhe由于保持了與原圖整體的亮度,雖然對(duì)比度相對(duì)原圖有所增強(qiáng),但并不適合用于低亮度圖片的增強(qiáng)。
參考文獻(xiàn)
https://zh.wikipedia.org/wiki/直方圖均衡化
https://ieeexplore.ieee.org/document/4429280