在很久前實(shí)現(xiàn)對(duì)比度受限的自適應(yīng)直方圖均衡化時(shí),就曾經(jīng)想過(guò)對(duì)該算法進(jìn)行一定程度的擴(kuò)展,之后使用自動(dòng)對(duì)比度和自動(dòng)色階代替直方圖均衡化也提出了新的算法里逆,也達(dá)到了不錯(cuò)的效果进胯。本文進(jìn)一步對(duì)該算法進(jìn)行一定程度的擴(kuò)展和補(bǔ)充優(yōu)化。
一原押、本文算法的概述
根據(jù)選取的優(yōu)化的水平和垂直網(wǎng)格數(shù)胁镐,將圖像切分成一個(gè)一個(gè)的子塊,然后統(tǒng)計(jì)每個(gè)子塊的直方圖信息诸衔,并和原圖整體的直方圖信息進(jìn)行某種混合希停,對(duì)于彩色圖像,為了避免不同通道之間處理后變化過(guò)于不協(xié)調(diào)署隘,還增加了各通道直方圖與亮度通道直方圖的信息合成宠能,然后對(duì)合成后的直方圖進(jìn)行直方圖裁剪和均衡化的,獲取各子塊新的映射直方圖磁餐,為了避免新的映射表中的數(shù)據(jù)有較大的奇點(diǎn)或噪音违崇,對(duì)映射表的數(shù)據(jù)進(jìn)行多點(diǎn)取樣,然后使用樣條插值算法對(duì)取樣點(diǎn)進(jìn)行插值诊霹,或者對(duì)新的映射表進(jìn)行一定程度的高斯模糊羞延,得到一張較為平滑的映射表。最后使用類似CLAHE算法中的雙線性插值對(duì)每個(gè)子塊之間的映射表進(jìn)行插值得到新的像素值脾还。本方法計(jì)算量小伴箩,速度很快,對(duì)映射表進(jìn)行平滑插值或高斯模糊能有效的抑制對(duì)比度調(diào)整時(shí)產(chǎn)生的噪聲鄙漏,防止了信息的過(guò)度放大造成圖片失真嗤谚,是一種高效并且效果突出的對(duì)比度增強(qiáng)算法。
二怔蚌、算法過(guò)程詳解
1巩步、水平和垂直網(wǎng)格數(shù)的確定
類似于CALHE算法,對(duì)網(wǎng)格的合理選取也會(huì)對(duì)本算法的結(jié)果產(chǎn)生重要的影響桦踊,過(guò)多的網(wǎng)格數(shù)會(huì)使得計(jì)算量顯著加大椅野,過(guò)少的網(wǎng)格數(shù)使得結(jié)果趨于接近整體的直方圖均衡化,一般情況下籍胯,可選擇8*8個(gè)網(wǎng)格竟闪,這里可以通過(guò)以下原則來(lái)簡(jiǎn)單的做個(gè)優(yōu)化:圖像的亮度的均方差越小,即整幅圖像的明暗比較一致杖狼,使用較多的網(wǎng)格數(shù)炼蛤,比如8*8,否則使用較少的網(wǎng)格本刽,比如4*4鲸湃。這是因?yàn)楫?dāng)圖像明暗較為一致時(shí),各小塊的直方圖數(shù)據(jù)差異不會(huì)很大子寓,而如果明暗不一致暗挑,選擇較小的塊,各塊之間的直方圖信息差異可能很大斜友,會(huì)造成插值時(shí)出現(xiàn)明顯的瑕疵炸裆。
2、按規(guī)定的網(wǎng)格數(shù)劃分圖像鲜屏,并獲取每塊的直方圖信息HistB烹看,HistG,HistR洛史。
3惯殊、獲取全圖的直方圖數(shù)據(jù)HistgramB,HistgramG也殖,HistgramR以及亮度直方圖HistgramL土思。
其中亮度定義為: Lightness = (R*19595 + G*38469 + B*7472) >> 16
4、對(duì)子塊直方圖和全局直方圖進(jìn)行融合忆嗜,如下代碼所示:
HistB[Index] = (HistB[Index] * Adaptation + (100- Adaptation) * HistgramB[Index]) /100;
HistG[Index]= (HistG[Index] * Adaptation + (100- Adaptation) * HistgramG[Index]) /100;
HistR[Index]= (HistR[Index] * Adaptation + (100- Adaptation) * HistgramR[Index]) /100;
HistL[Index]= (HistL[Index] * Adaptation + (100- Adaptation) * HistgramL[Index]) /100;
其中Adaptation為融合因子椎例,其有效范圍為[0,100]相叁,當(dāng)取值越小時(shí),全局直方圖其主導(dǎo)作用,效果越接近普通的直方圖均衡喻奥。
5、對(duì)上述融合后的結(jié)果再次和亮度直方圖進(jìn)行融合椒丧,融合過(guò)程如下所示:
HistB[Index] = (HistB[Index] * Correction + (100- Correction) * HistL[Index]) /100;
HistG[Index]= (HistG[Index] * Correction + (100- Correction) * HistL[Index]) /100;
HistR[Index]= (HistR[Index] * Correction + (100- Correction) * HistL[Index]) /100;
其中Correction為顏色校正因子土涝,其有效范圍為[0,100],當(dāng)取值越大時(shí)濒憋,各通道之間越獨(dú)立娘纷,效果越接近普通的直方圖均衡。
上述代碼中Index表示直方圖色階的索引范圍跋炕,有效值[0,Bins – 1]赖晶,Bins為直方圖的數(shù)量,8位時(shí)為256辐烂。
6遏插、按照CALHE的方式對(duì)直方圖進(jìn)行裁剪,之后對(duì)裁剪的直方圖進(jìn)行均衡化得到每個(gè)小塊的映射表纠修。
7胳嘲、局部均衡化后映射表的平滑。
1) ?將映射表的 Bins取K等份扣草,得到每等份數(shù)據(jù)對(duì)應(yīng)的映射表值了牛,構(gòu)成K個(gè)二維坐標(biāo)點(diǎn)序列颜屠,亦可以根據(jù)直方圖的累計(jì)數(shù)據(jù),把累計(jì)數(shù)據(jù)平均分為K等分鹰祸,得到K個(gè)二維序列點(diǎn)甫窟。
2)根據(jù)K個(gè)二維坐標(biāo)點(diǎn),使用樣條插值算法擬合出一條過(guò)各個(gè)取樣點(diǎn)的平滑映射曲線蛙婴。