一種強(qiáng)化的基于局部直方圖裁剪均衡化的對(duì)比度調(diào)節(jié)算法。

在很久前實(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)的平滑映射曲線。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容