避免图像去雾算法中让天空部分出现过增强的一种简易方法
FROM:http://www.chawenti.com/articles/25193.html
在經(jīng)典的幾種去霧算法中,包括何凱明的暗通道去霧、Tarel的基于中值濾波的去霧以及一些基于其他邊緣保留的方法中,都有一個(gè)普遍存在的問(wèn)題:即對(duì)天空部分處理的不好,天空往往會(huì)出現(xiàn)較大的面積的紋理及分塊現(xiàn)象。究其主要原因,還是因?yàn)樘炜詹课换旧鲜遣环习低ǖ廊レF先驗(yàn)這個(gè)前決條件的。目前,針對(duì)這一問(wèn)題,我搜索到的主要有以下幾篇文章進(jìn)行了處理:
1、?改進(jìn)的基于暗原色先驗(yàn)的圖像去霧算法 作者: 蔣建國(guó)侯天峰齊美彬 ? 合肥工業(yè)大學(xué)?2011。
? ? ? 2、Single image dehazing Algorithms based on sky region segmentation, 2013 ?王廣義 ?哈爾濱工業(yè)大學(xué)(這篇文章似乎要到學(xué)校里才能下載);
? ? ? 第一篇文章增加了一個(gè)可控參數(shù)K, 用來(lái)調(diào)節(jié)每個(gè)像素處的透射率:
?
? ? ? ? ? ?
?
? ? ? 當(dāng)|I(x)-A|<k時(shí),認(rèn)為這個(gè)區(qū)域可能是天空,重新計(jì)算透射率(增加透射率),|I(x)-A|>k處,則認(rèn)為是符合暗通道先驗(yàn)的區(qū)域,透射率不變。
? ? ? 如果K取值為0,則相當(dāng)于原始的透射率公式。
? ? ? 上面的做法是較為合理的,因?yàn)橐话闱闆r下大氣光A的取值和天空部分應(yīng)該是非常接近的,而那些符合暗通道的地方則遠(yuǎn)離天空,關(guān)于這個(gè)算法的效果,我在我的《Single Image Haze Removal Using Dark Channel Prior》一文中圖像去霧算法的原理、實(shí)現(xiàn)、效果(速度可實(shí)時(shí))一文的實(shí)例工程中已經(jīng)提供了測(cè)試程序。
? ? ? ?第二篇文章的思路則是進(jìn)行天空分割。對(duì)分割后的兩部分透射率做不同的處理,那么這個(gè)的重點(diǎn)就在于天空特征的提取。作者原文是通過(guò)以下幾個(gè)步驟來(lái)實(shí)現(xiàn)的。
? ? ?
? ? ?
?
? ? ?
對(duì)這幾個(gè)步驟我進(jìn)行了粗陋的點(diǎn)評(píng)吧。
? ? ? 第一步我認(rèn)為最有價(jià)值,直接在原始數(shù)據(jù)判斷天空不是很好做,作者觀察到天空部分整體來(lái)說(shuō)是比較平滑的,也就是相鄰像素之間變化不大,因此用梯度來(lái)表示則更容易識(shí)別,梯度值越小則表明圖像那一塊越光滑。
? ? ? 第二步則設(shè)定一個(gè)閾值來(lái)初步判斷某處是否屬于天空,這個(gè)閾值作者取的是0.02,量化到unsigned char范圍則基本對(duì)應(yīng)5。
? ? ? 第三步對(duì)初步的邊界進(jìn)行下小范圍的擴(kuò)展。
? ? ? 第四步對(duì)分割后的圖的每個(gè)聯(lián)通區(qū)域統(tǒng)計(jì)其原始圖像在對(duì)應(yīng)位置的像素的平均亮度,如果大于閾值T則保留,T這里作者取0.81,對(duì)應(yīng)整數(shù)205左右。
? ? ? 第五步取符合第四步條件的最大的聯(lián)通區(qū)域作為識(shí)別的天空區(qū)域。
? ? ? 第六步是為了防止一些漏檢點(diǎn),把在天空區(qū)域周邊的一些像素在進(jìn)一步進(jìn)行識(shí)別,符合條件的則加到天空區(qū)域中。
? ? ? 第七步是一些被完整包含在天空中還未被認(rèn)為是天空的小區(qū)域添加到天空中。
? ? ?個(gè)人認(rèn)為,除了第一步、第二步、第四步有必要外,其他的不需要這樣處理。特別是第五步的處理會(huì)造成天空部位的漏檢。比如下面的流程示意圖的原圖,如果用上述方式肯定會(huì)造成左上角處小部分天空完全丟失掉。另外一個(gè)問(wèn)題就是,聯(lián)通區(qū)域的計(jì)算還是比較耗時(shí)的。
? ? ?我的做法是:?
? ? ?1、將圖像轉(zhuǎn)換為灰度:這里為保留更多的邊緣信息,可以考慮使用具有對(duì)比度保留功能或顯著性保留功能的一些去色算法。
? ? ?2、求灰度圖像的梯度信息(其實(shí)就可以用常用的一些邊緣檢測(cè)算子實(shí)現(xiàn));
? ? ?3、對(duì)梯度信息進(jìn)行適當(dāng)?shù)娜ピ牒蜑V波;
? ? ?4、按照設(shè)定梯度閾值和亮度閾值對(duì)梯度信息進(jìn)行區(qū)分;
? ? ?5、對(duì)區(qū)分后的圖進(jìn)行高斯羽化處理(可選的)。
? ? 整個(gè)流程的示意圖如下所示:
???
原圖 灰度圖 梯度信息
??
稍作去噪 初步天空識(shí)別 ? ? ? ? ? 進(jìn)行羽化
? ? ? 作為對(duì)比,我們?cè)诮o出幾幅圖的天空的識(shí)別效果:
? ? ??
? ???
對(duì)于那些基本不存在天空的圖,檢測(cè)的結(jié)果如下:
? ???
一片黑,因此,完全不影響結(jié)果。
? ? ? 得到天空區(qū)域后,原文作者將天空區(qū)域的透射率圖統(tǒng)一的設(shè)置成了一個(gè)固定值,我認(rèn)為這樣不好,還是應(yīng)該根據(jù)具體的值做適當(dāng)?shù)男拚?在我上述的操作中,得到的天空去區(qū)域是一副蒙版圖,某個(gè)點(diǎn)并不一定是完全屬于天空或完全不屬于。因此,我就可以根據(jù)這個(gè)值來(lái)+ 暗通道求得的值進(jìn)行一下Alpha混合,如下所示:
DarkChannel[Y]= (SkyPresrve * Sky[Y] + DarkChannel[Y] * (255 – Sky[Y])) / 255 ;
其中SkyPresrve就類似于論文的固定透射率值,是用戶指定的,在上式中,若Sky[255],即完全屬于天空,則改點(diǎn)的透射率即為固定值,若Sky[Y]=0,即完全不屬于天空,計(jì)算式的值不變,不影響正常去霧。
? ? ? 另外關(guān)于大氣光值A(chǔ)的計(jì)算,論文提出了以獲得的天空部位的像素的平均值作為A,這也是非常合理的,但是在實(shí)際處理時(shí),針對(duì)有些完全沒有天空部分的圖像,可能檢測(cè)到的天空區(qū)域很小(明顯屬于誤檢,但是程序不知道的),這個(gè)時(shí)候以此為大氣光值,也是不合理的。為此,我的處理方式先計(jì)算天空部位計(jì)算的A值,然后在檢測(cè)天空像素占整個(gè)圖像的比例,如果比例小于5%,則還是以何凱明那種計(jì)算A的方式進(jìn)行。
? ? ? 還有一步,論文也提到了,就是這些校正的步驟都必須在refine階段之前做,簡(jiǎn)單的說(shuō),就是需要在進(jìn)行導(dǎo)向?yàn)V波前做。這樣利用導(dǎo)向?yàn)V波的平滑功能,可以將天空和非天空分界部位的不平滑現(xiàn)象一定程度上彌補(bǔ)掉);
為了提高速度,也可以采用我在何那篇論文的分析的博文中的方式,進(jìn)行下采樣處理,然后在上采樣。
? ? ? 作為對(duì)比,我們給出直接用何的方式實(shí)現(xiàn)的效果和用天空識(shí)別方式處理的對(duì)比效果:
???
? ? ????
? ? ????
? ? ????
? ? ????
原圖 何的去霧 本文結(jié)果(SkyPresrve =100)
有以上比較可見,在保護(hù)了天空的時(shí)候,和天空交接的地方的去霧程度也適當(dāng)?shù)挠兴鶞p弱。
?在論文的最后,作者也提到了去霧的圖像顯得比較昏暗,為此,做了一下處理:
? ? ? ??
即在HSV空間,對(duì)V分量進(jìn)行CLAHE增強(qiáng),然后在轉(zhuǎn)換到RGB空間,這種方式對(duì)有些圖像確實(shí)有很明顯的增強(qiáng)效果,但是有些圖可能又會(huì)增強(qiáng)噪音,因此還是根據(jù)實(shí)際情況選擇性的處理吧。
示例程序:http://files.cnblogs.com/Imageshop/HazeRemovalWithSkyRecognition.rar
? ?
?
? ? ??
****************************基本上我不提供源代碼,但是我會(huì)盡量用文字把對(duì)應(yīng)的算法描述清楚或提供參考文檔************************
*************************************因?yàn)榭孔约旱呐蛯?shí)踐寫出來(lái)的效果才真正是自己的東西,人一定要靠自己*******************
****************************作者: laviewpbt ? 時(shí)間: 2014.8.12 ? ?聯(lián)系QQ: ?33184777 轉(zhuǎn)載請(qǐng)保留本行信息**********************
??
本文鏈接:避免圖像去霧算法中讓天空部分出現(xiàn)過(guò)增強(qiáng)的一種簡(jiǎn)易方法。,轉(zhuǎn)載請(qǐng)注明。
總結(jié)
以上是生活随笔為你收集整理的避免图像去雾算法中让天空部分出现过增强的一种简易方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图像边缘检测技术与理论发展脉络梳理大放送
- 下一篇: BRIEF 特征描述子