基于快速去雾的图像亮度增强方法
起因
最近在做一個(gè)圖像處理的算法,因?yàn)閳D像太暗,所以需要對(duì)圖像的亮度進(jìn)行增強(qiáng)(不考慮噪聲的放大)。嘗試了網(wǎng)上搜索到的各種方法后,發(fā)現(xiàn)它們存在兩個(gè)問(wèn)題:容易造成原本較亮的地方過(guò)曝,并且參數(shù)不好設(shè)置。嘗試了一些暗光增強(qiáng)的paper的算法后,發(fā)現(xiàn)它們又太慢了。這時(shí)我想到曾經(jīng)看過(guò)的一篇paper說(shuō)過(guò),有一種亮度增強(qiáng)的算法是基于去霧來(lái)做的,步驟很簡(jiǎn)單:
1. 將RGB圖像取反(關(guān)于圖像取反,請(qǐng)參考我的這篇博客OpenCV圖像取反);
2. 對(duì)取反后的圖像進(jìn)行去霧;
3. 將去霧后的圖像取反。
其背后的理念是:暗光圖像取反后,原本接近黑色的像素就會(huì)變成接近白色,整張圖像就會(huì)類(lèi)似于有霧的圖像。于是對(duì)這樣的圖像進(jìn)行去霧后,白色的像素就變暗了,再反色后,像素就變亮了!沒(méi)毛病!
快速去霧算法
說(shuō)起去霧,恐怕大多數(shù)人的第一反應(yīng)就是鼎鼎大名的何愷明博士的暗通道先驗(yàn)去霧算法。我的第一反應(yīng)也是這個(gè)。但是在了解之后,我發(fā)現(xiàn)這種方法速度太慢了,難以應(yīng)用到我的算法中。于是我開(kāi)始搜索快速的去霧算法,很快找到了這篇論文《基于單幅圖像的快速去霧算法》劉倩, 陳茂銀, 周東華(這篇文章中也提到了暗通道先驗(yàn)去霧算法的速度太慢),速度很快,只有O(1)復(fù)雜度。
這篇論文我并沒(méi)有仔細(xì)看,而是秉承“拿來(lái)主義”的精神,直接根據(jù)論文提供的算法流程實(shí)現(xiàn)了代碼。原因是它的算法流程太簡(jiǎn)單了,在輕松地實(shí)現(xiàn)了代碼之后,就沒(méi)有再看的欲望了~這里貼一下它的算法流程,你們自己看:
源碼解釋
我把實(shí)現(xiàn)的代碼放到了GitHub:IBEABFHR(原諒我這個(gè)取名廢),請(qǐng)點(diǎn)進(jìn)去看效果圖,我這里就不重復(fù)放了。我感覺(jué)效果還是很好的,暗處的亮度增強(qiáng)得很好,亮處雖然有過(guò)曝,但并不是很明顯。而且控制亮度的參數(shù)很好調(diào)整,只要隨便找一張圖像調(diào)整好參數(shù),就可以應(yīng)用于所有圖片了。
運(yùn)行速度
代碼是用OpenCV實(shí)現(xiàn)的,同時(shí)支持彩色圖像和灰度圖像。在我的電腦上(CPU: E3-1230 v3)測(cè)試,運(yùn)行100次取平均值,速度如下:
| 1024x768 | 灰度圖像 | 8.77ms |
| 1024x768 | 彩色圖像 | 16.24ms |
| 1920x1080 | 灰度圖像 | 22.61ms |
| 1920x1080 | 彩色圖像 | 40.60ms |
| 4160x2340 | 灰度圖像 | 104.57ms |
| 4160x2340 | 彩色圖像 | 186.14ms |
但是如果你只使用我的算法一次,可能速度要慢得多,原因是第一次取反操作因?yàn)槲粗蚝馁M(fèi)了額外的時(shí)間。關(guān)于這點(diǎn),請(qǐng)參看我的這篇博客OpenCV圖像取反。
參數(shù)調(diào)整
這個(gè)算法總共有兩個(gè)可變參數(shù)。一個(gè)是在step 3中進(jìn)行均值濾波時(shí)的所用的濾波半徑radius,另一個(gè)是在step 5中用的ρ。
radius參數(shù)在某些圖像上可以控制對(duì)比度,數(shù)值越大,對(duì)比度越強(qiáng),但在某些圖像上不起作用。這個(gè)參數(shù)取值不能太小,否則增強(qiáng)后的圖像會(huì)出現(xiàn)光暈。一般不應(yīng)小于50或者圖像寬度和高度最大值的的1/20。
ρ控制圖像增強(qiáng)的亮度,數(shù)值越大,增強(qiáng)后的圖像越亮。一般的取值范圍為[1.0, 2.0]。在我的實(shí)現(xiàn)中,我使用了一種簡(jiǎn)單選擇的策略,請(qǐng)參看源代碼,僅供參考。
關(guān)于參數(shù)的效果及設(shè)置,我參考了這篇博客一種可實(shí)時(shí)處理 O(1)復(fù)雜度圖像去霧算法的實(shí)現(xiàn),在此進(jìn)行感謝。
總結(jié)
以上是生活随笔為你收集整理的基于快速去雾的图像亮度增强方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大数据——Hadoop集群调优
- 下一篇: 小黄鸭c语言编程,小黄鸭调试法