孫 瑤,楊 碩
(沈陽化工大學 計算機科學與技術(shù)學院, 遼寧 沈陽 110142)
直方圖均衡化(histogram equalization,HE)是最簡單有效的圖像增強算法之一,由于速度快,被廣泛用于圖像處理和預處理中.均衡化算法基于完備的數(shù)學理論,但受到離散誤差的影響,只是對灰度級進行了適當?shù)睦旌秃喜?,實際效果取決于原直方圖的分布情況.與此類似的是灰度拉伸算法,灰度拉伸對相鄰灰度級執(zhí)行的是等間距拉伸,不進行灰度合并,或僅將超出0或255的灰度級合并.而直方圖均衡化后的灰度級間距取決于該灰度級對應的像素數(shù)目所占的比例,比例越高,間距越大,比例越小,越容易被合并.這種做法往往更容易被人眼接受,因此,直方圖均衡化得到了廣泛的應用.
對于直方圖呈聚集分布的圖像,如,整體偏亮或偏暗的圖像,應用直方圖均衡化會產(chǎn)生較好的圖像增強效果.這類圖像經(jīng)過均衡化后,直方圖分布會由聚集變?yōu)榉稚?,提高了圖像的對比度.而對于存在明顯亮部和暗部(光照不均)的圖像,均衡化所帶來的對比度提升效應則有可能導致過曝和欠曝現(xiàn)象,或者將相鄰的灰度級合并,使得圖像細節(jié)丟失,產(chǎn)生過增強現(xiàn)象.針對經(jīng)典算法的各種問題,研究人員提出了大量的改進算法.如:文獻[1]提出一種根據(jù)灰度級間距加權(quán)的灰度級合并判定方法,對兩個灰度是否合并進行判斷,較好地保留了圖像的細節(jié);文獻[2]在灰度直方圖基礎(chǔ)上,引入了梯度幅值直方圖,分別進行均衡化并迭代融合,改善了經(jīng)典直方圖均衡化細節(jié)丟失的問題;文獻[3]根據(jù)輸入圖像的平均亮度獲得閾值,并自適應修剪直方圖,將直方圖峰值修剪并移至峰谷處,從而限制了均衡化過程對對比度的增強效果;文獻[4]先進行直方圖均衡化,再根據(jù)人眼對灰度級的分辨能力對截取的部分直方圖進行灰度拉伸,提高了算法的保邊緣能力.
以上算法屬于全局算法,較實用的是限制對比度的直方圖均衡化算法(contrast limited adaptive histogram equalization,CLAHE)[5].CLAHE通過對直方圖的修剪,改變了灰度級的比例,從而抑制了過度均衡化.基于CLAHE,很多學者提出了改進策略,如:通過插值加快速度[6],改變?yōu)樽赃m應閾值[7],用拉普拉斯梯度算子增強細節(jié)[8],用伽馬矯正提高視覺效果[9].CLAHE改善了全局算法的各種問題,但計算量過大,且未能根本解決過增強的問題.
本文提出一種改進算法,旨在不減弱增強效果的同時,改善過曝和欠曝問題,保留圖像細節(jié),以及保持經(jīng)典HE算法高效的優(yōu)點.算法受到多曝光融合算法的啟發(fā)[10-12],分別對圖像的亮部和暗部均衡化,將暗部變亮并將亮部變暗,經(jīng)過融合后,不僅不會破壞直方圖的均勻分布,在空間上,亮度的分布也更加均勻;同時,將方差作為融合系數(shù),防止圖像細節(jié)丟失.不同于對全幅圖像做均衡化處理的全局算法,本算法將處理對象由全局圖像變成了被分割后的暗部和亮部兩部分圖像,分別對亮部和暗部進行均衡化處理,故屬于半全局算法.
算法的流程如圖1所示.令I(lǐng)為輸入的灰度圖像.首先,獲得圖像的直方圖(圖1中直方圖的橫坐標為灰階,縱坐標為像素的數(shù)目),并在直方圖上找到分割中點c,使得左右像素數(shù)目相同(接近相同),將圖像分為亮部和暗部.然后,重新分布直方圖,以暗部的處理方式為例,具體做法是:將另一半直方圖(亮部)平均分布化,即將平均值平均分配給整個灰度階(0-255);對于亮部,采用對稱的方式處理(如圖1).相比圖2中CLAHE算法所采用的限制對比度的直方圖處理方式,本文的做法實際上略微增強了對比度,均衡化后的暗部和亮部圖像記為Il和Ih.
圖1 算法處理流程Fig.1 Algorithm processing flow
圖2 限制對比度的直方圖均衡化原理(CLAHE)Fig.2 Contrast limited adaptive histogram equalization(CLAHE)
對圖像的暗部進行直方圖均衡化,可以拉伸直方圖的低值部分,避免了經(jīng)典直方圖均衡化對直方圖低值部分的壓縮帶來的欠曝光現(xiàn)象;同理,對亮部進行均衡化可以避免過曝問題.
圖像融合過程是將經(jīng)過直方圖均衡化的暗部和亮部圖像合成為最終結(jié)果的過程.由于暗部和亮部均來自于同一圖像,因此,算法屬于偽曝光融合.融合公式為
O(i)=Tl(i)×Il(i)+Th(i)×Ih(i).
(1)
其中:
式(1)中:Il和Ih分別為均衡化后的暗部和亮部圖像;Tl和Th為對應的歸一化融合系數(shù);O為融合輸出.融合系數(shù)由歸一化的權(quán)重A和B組成,其中A為歸一化的分割權(quán)重,B為歸一化的方差權(quán)重;H為分割權(quán)重,E為方差權(quán)重;γ為方差權(quán)重在融合系數(shù)中所占的比例,該系數(shù)決定了細節(jié)保留程度,過小會導致細節(jié)模糊,過大則會引入噪聲或產(chǎn)生偽邊界效果,經(jīng)實驗,一般取1.0到5.0可以獲得較好的效果.獲取權(quán)重H和E是算法的關(guān)鍵.
分割權(quán)重H表示在融合過程中的固有系數(shù),分為暗部權(quán)重Hl和亮部權(quán)重Hh.其原理是:對于輸入圖像I在i位置處的像素值e,如果e小于分割點c,則Hl(i)應大于Hh(i),表示在融合的時候用暗部圖像Il多一些;反之,Hl(i)應小于Hh(i),則在融合的時候用亮部圖像Ih多一些.Hl和Hh要根據(jù)圖像像素值e和分割點c獲取.
(2)
圖3 Hl和Hh對應的指數(shù)函數(shù)Fig.3 Exponential functions corresponding to Hl and Hh
圖4為圖1中示例圖像的暗部分割系數(shù)Hl和亮部分割系數(shù)Hh,越亮表示權(quán)重越大.
圖4 Hl和HhFig.4 Hl and Hh
圖像的局部方差能夠反映圖像的細節(jié),融合過程中,應選取暗部圖像和亮部圖像中細節(jié)較多的部分.方差可以由積分圖快速獲取.
(3)
式(3)中,E(i)為圖像在i(i={x,y})位置處的局部方差;S和V可以通過積分圖快速獲取;n=W×W,W為窗口尺度.這里使用多尺度窗口計算方差,獲得圖像細節(jié),避免圖像均勻區(qū)域方差無法獲取和融合不平滑的現(xiàn)象.具體算法如下.
算法1:方差權(quán)重的獲取算法
輸入:均衡化后的暗部圖像Il或亮部圖像Ih,大小為w×h;令Wmax為w和h的較大者;令N為保存方差的計算次數(shù).
forW=5 toWmax/2 do
生成窗口{W,W};
fori=0 tow×hdo
if窗口超出圖像尺寸then
continue;
else
E(i)=E(i)+式(3)的方差值;
N(i)=N(i)+1;
endif
endfor
endfor
E=E/N;
算法1中,窗口尺度W從5開始增加到Wmax/2,其增量可以采用絕對增量(如:1、2…)或相對增量(如:是上一個窗口的1.5倍或2倍等).使用小的絕對增量可以使權(quán)重平滑,但需要較大的計算量,一般情況下可以使用相對增量獲得效率和效果的平衡.圖5為算法1得到的El和Eh,使用的增量為1.5倍相對增量.像素越亮表示權(quán)重越大.
圖5 El和EhFig.5 El and Eh
為了保證算法的運行效率,使用了OpenCV計算機視覺庫.算法實現(xiàn)的軟件環(huán)境為:Windows 7.0+QT 5.9.2+OpenCV3.3.1;硬件環(huán)境為:Intel Core I3 3110M(2.4GHz)+8GB內(nèi)存.對比算法有:HE、CLAHE[6]和二維伽馬矯正[13].對比的指標有全局方差Eg、平均梯度值Gavg和平均梯度數(shù)量Gn,具體定義為:
(1)全局方差Eg.全局方差主要反映圖像在空間上亮度分布的均勻性.為了避免梯度對全局方差計算的影響,計算全局方差前,需要用大尺度的高斯濾波器對圖像濾波.
(2)平均梯度值Gavg.用Sobel梯度算子獲取梯度幅度絕對值并求平均,該值能夠反映算法對細節(jié)的保留情況.
(3)平均梯度數(shù)量Gn.首先用Sobel梯度算法獲取梯度幅值絕對值;然后掃描梯度圖像,如果梯度絕對值大于10,將Gn加1;最后將Gn平均化.該值能夠反映梯度分布的均勻情況.
部分實驗效果如圖6~圖9所示,圖像分辨率均為800×600.
圖6 場景1實驗對比效果Fig.6 Scenario 1 experiment contrast effect
圖7 場景2實驗對比效果Fig.7 Scenario 2 experiment contrast effect
圖8 場景3實驗對比效果Fig.8 Scenario 3 experiment contrast effect
圖6~圖9的4個場景中,從圖像局部可以看出:HE算法均產(chǎn)生了過曝和欠曝現(xiàn)象;CLAHE 是局部算法,對細節(jié)保留最好,但存在明顯的過增強現(xiàn)象;二維Gamma算法處理后的圖像較柔和,但圖像增強效果不足,對圖像細節(jié)的保留效果也一般;半全局均衡化算法處理的結(jié)果具有較好的主觀視覺效果,整體亮度均勻,沒有發(fā)生過曝和欠曝現(xiàn)象,對細節(jié)的保留僅次于CLAHE 算法.表1為定量的實驗數(shù)據(jù).
圖9 場景4實驗對比效果Fig.9 Scenario 4 experiment contrast effect
表1 對比算法實驗數(shù)據(jù)Table 1 Contrast algorithm experimental data
表1中,全局方差Eg指示出圖像整體的均勻程度,這里希望越小越好,從數(shù)據(jù)上看,半全局均衡化算法表現(xiàn)最好,HE算法增強了圖像的對比度,表現(xiàn)最差.平均梯度Gavg應越大越好,對比算法中,CLAHE表現(xiàn)最好,但其梯度有很大一部分來自于對噪聲的放大,半全局均衡化算法表現(xiàn)稍差,該項指標雖然能夠反映出圖像的細節(jié)保留程度,但并不一定客觀.表1中的Gn值僅記錄梯度的數(shù)量,能夠反映出梯度分布情況,希望越大越好,CLAHE因為對噪聲放大的原因,在該項上表現(xiàn)最好,半全局均衡化算法其次.此外,表2 統(tǒng)計了幾種對比算法在圖6~圖9上的平均運行時間,半全局均衡化算法慢于HE算法,但遠快于CLAHE算法.半全局均衡化算法最耗時的部分是在算法1中計算多尺度局部方差的過程,實驗中將窗口尺度增量設置為1.5倍的相對增量,在800×600的分辨率下需要計算12個尺度,該增量使效果和速度較為平衡.由于流程較少且使用積分圖加快了速度,半全局均衡化算法可以在800×600甚至更高的分辨率下實時運行.
表2 處理速度對比Table 2 Processing speed comparison
直方圖分布不均是導致圖像質(zhì)量下降的重要原因,直方圖均衡化算法對于直方圖呈單峰值聚類分布的情況具有較好的效果,但對于光照不均引起的雙峰分布的情況容易產(chǎn)生過曝、欠曝和細節(jié)丟失的問題.針對這些問題,本文提出了改進的直方圖均衡化算法.實驗結(jié)果證實了所提算法的有效性.由于算法的復雜度較低,算法可以用于視頻實時處理,具有較高的實用性.算法進一步研究的方向?qū)⒓性冢?1)優(yōu)化直方圖初始分割閾值(暗部和亮部的中值c),該閾值對最終效果有較大的影響,將其固定在中值的做法是否合理還沒有得到充分驗證;(2)參數(shù)的自適應性,實驗發(fā)現(xiàn)方差權(quán)重比例γ對最終結(jié)果也會產(chǎn)生影響,因此,有必要在未來的研究中將其改為自適應閾值.