【論文閱讀】LIME:Low-light Image Enhancement via Illumination Map Estimation(筆記最全篇)

今天要整理的一篇論文是使用傳統的方法解決低照度的問題,Guo等人於2016年發表在IEEE上,論文《LIME:Low-light Image Enhancement via Illumination Map Estimation》,DOI:10.1109/TIP.2016.2639450

Abstract

在低照度環境下拍攝的圖像通常能見度都很低,這些圖像除了在視覺效果上降低了美感以外,還讓計算機視覺的顯示效果降質了。爲了解決這個問題,本文提出了一種簡單有效的低照度圖像增強算法(Low-light Image Enhancement,LIME)。具體來說,輸入一張低照度圖像,選取每個像素通道中的最大值初始化該圖像光照圖,然後通過強加入一種結構先驗來細化這個初始光照圖,最後根據Retinex理論合成增強圖。實驗表明,該算法較之前的方法在質量和性能上都取得不錯的效果。

Introduction

能見度高的圖像能反映出場景中清晰的細節,這對於一些採用視覺技術的工作有很大的影響,如物體檢測和追蹤等。但是,在低照度的環境下捕獲的圖像通常是低能見度,雖然目前有很多算法能提升圖像亮度,但是過度提亮會有損圖像的效果。直接放大低照度圖像可能是調節暗區可見性最直觀和最簡單的方法,但此操作也會帶來另一個問題,比如相對較亮的區域可能已經飽和,因此丟失了相應的細節。

直方圖均衡化(HE) 策略是一種將原圖像通過某種變換,得到一幅灰度直方圖爲均勻分佈的新圖像的方法,可以避免上面的問題。它的基本思想是對在圖像中像素個數多的灰度級進行展寬,而對像素個數少的灰度級進行縮減(將像素灰度級範圍規定在0-1),從而達到清晰圖像的目的。直方圖均衡化的核心是變換函數,而常用的變換函數有線性變換、分段線性變換、伽馬校正,對數變換、冪變換等。在文中主要指出伽馬校正的缺點:僅對每個像素進行操作,忽略了像素之間的相鄰關係。

Retinex理論的理論依據依賴一個核心假設:(彩色)圖像可以被分解成入射分量(光照)和反射分量兩個主要成分,表達式如下:
I=TR(1)\begin{aligned}I=T\cdot R \tag1\end{aligned}
其中II是原始低照度圖,T是入射分量即光照,R是反射分量。最早基於Retinex理論的研究有SSR、MSR:它們都是把反射分量作爲最後的增強結果,因此,只需要求解出入射分量即可。但是這樣的處理方式,得到的結果通常是不自然的,且容易過度增強。往後的研究就偏向於優化入射分量,使其更自然,有通過融合多張圖像來調整光照圖,也有通過劃分子塊優化光照圖等。最後來,研究的方向就偏向於加入權重模型,同時優化光照圖和反射分量。

到這裏,值得一提的方法是:Dong發現了反轉低照度圖像跟有霧圖像的特徵相似,因此提出了反轉圖像(作爲僞霧圖)應用去霧算法,同樣能得到增強亮度的效果,這就將低照度增強領域擴展至圖像去霧領域中去了,去霧算法可用在低照度增強中去。(對這個算法感興趣的同學,可以去下載文章看看,這裏提供論文DOI:10.1145/1836845.1836920)

僞霧圖與有霧圖像
(圖)僞霧圖與有霧圖像

Contribution

本文提出的算法也是基於Retinex理論的,算法主要傾向於估計低照度圖像的光照圖來實現增強。這裏值得注意的是,本文的算法跟以往的基於Retinex增強方法(直接將圖像分解成L和R)不同,我們的算法是僅僅估計一種一個變量(光照),這大大地縮小解空間和減少計算量。本文的主要貢獻是:

  1. 提出了兩種加速優化光照圖的算法:增廣拉格朗日乘數法(ALM)和權重策略。
  2. 進行了大量的對比實驗。

個人觀點: 該文章最大的貢獻其實是提出的第一種加速優化方法,他主要將優化光照的問題嵌入到最優化問題中,考慮圖像的保真和結構性,自定義了一個優化的目標函數和相應的約束條件,然後採用傳統的拉格朗日乘數法來解決這個優化問題。

Method

根據Retinex理論可知,我們理想的圖像是R(入射分量)可以通過估計出光照圖T和原始的低照度II得到:
R=IT\begin{aligned}R=\frac IT \end{aligned}
爲了簡化計算,通常認爲三通道(彩色)圖像都是共享同一個光照圖。首先初始化光照圖TT
Tc(x)=maxc{R,G,B}Ic(x)(2)\begin{aligned}T^c(x)=\max_{c\in\{R,G,B\}}I^c(x) \tag2\end{aligned}
要保證這個的光照圖不會使得增強的圖像過於飽和,我們加入了一個非常小的參數ϵ\epsilon來限制:
R(x)=I(x)T(x)+ϵ(3)\begin{aligned}R(x)=\frac {I(x)}{T(x)+\epsilon} \tag3\end{aligned}
ϵ\epsilon是一個非常小的常量,主要是爲了避免出現除零和R過度飽和的情況。文章明確地指出這項工作的目標是:非均勻地增強弱光圖像的照明,而不是消除光源引起的色移。

在文中,作者還特意與Dong提出的反轉圖像去霧增強算法作對比。我覺得這裏的工作整理得挺好的,這裏幫助我更好地理解了基於大氣物理散射模型的去霧算法和基於Retinex理論增強算法之間能融合及相似的地方。所以,我在整理這篇文章的筆記的時候,還是決定把這部分寫上。

Dong使用反轉低照度圖像(1I)(1-I)作爲僞霧圖,使用大氣散射模型(4)來實現增強:
1I=(1R)T+α(1T)(4)\begin{aligned}1-I=(1-R)\cdot T+\alpha(1-T) \tag4\end{aligned}
在大氣物理模型(4)理論中,T代表透射率,需要估計的,α\alpha代表大氣光強,是一個確定的常量。而(1-I)代表僞霧圖,(1-R)代表去霧後的圖像,即增強的圖像。

式子(4)和(1)進行對比,其實有一定的相似性,它們之間存在一種關係。這需要引入著名的何凱明博士提出的暗通道先驗理論(Dark Channel Prior,DCP),即Idark=mincIcI^{dark}=\min_cI^c,清晰無霧圖的暗通道爲0,使用暗通道先驗理論來估計透射率,有:

T(x)1minc1Ic(x)α=11α+maxcIc(x)α(5)\begin{aligned} T'(x) \gets 1-\min_c\frac{1-I^c(x)}{\alpha}=1-\frac1\alpha+\max_c\frac{I^c(x)}{\alpha} \tag5\end{aligned}
把(5)代入到(4)中,得到:
R(x)=I(x)1+α(11α+maxcIc(x)α+ϵ)+(1α)(6)\begin{aligned} R(x)=\frac{I(x)-1+\alpha}{(1-\frac1\alpha+\max_c\frac{I^c(x)}{\alpha}+\epsilon)}+(1-\alpha) \tag6\end{aligned}
α=1\alpha=1時,我們可以看到,(3)和(6)的結果是一樣的;但是當α\alpha遠離1,模型(3)和(6)的等價關係就不存在了。
3和6模型的結果
這個圖展示了(3)和(6)兩個模型的結果,雖然將大氣光強設置成0.95,兩個模型的效果仍然是非常明顯的。本文主要是使用(3)的方式來獲取增強圖。經(2)獲得初始化的光照圖,然後使用兩種不同的方法優化光照圖,下面開始介紹文中的兩種加速算法。

Speed-up Method(1):ALM

ALM加速法,是將優化光照的問題歸納爲最優化問題中,考慮圖像的保真度和結構平滑度,自定義了一個優化的目標函數,使用F範數和L1正則分別衡量圖像的保真度和結構平滑度:
minTTTF2+kWT1(7)\begin{aligned} \min_T||T'-T||^2_F+k||W\cdot \triangledown T||_1 \tag7\end{aligned}

這裏的k是平衡F範數和L1正則的係數。(7)式的前項爲F範數,考慮的是細化後的光照圖L‘與初始化的光照圖L之間的保真度,後項爲L1正則,考慮的是平滑度,W爲權重矩陣,T\triangledown T代表一階導數濾波器,包括水平和垂直方向的。

傳統上,可以通過交替方向乘子算法(ADMM)就能有效地解決問題(8)。 但從(8)中的目標可以看出,兩個約束項都涉及T。這裏引入了一個輔助變量G來代替T\triangledown T,以使問題可分離並因此易於解決。把G=TG=\triangledown T作爲一項等式約束條件,最後我們的優化問題就等價於:
minT,GTTF2+kWG1s.t.  T=G(8)\begin{aligned} \min_{T,G}||T'-T||^2_F+k||W\cdot G||_1\\ s.t.\;\triangledown T=G \tag8\end{aligned}
根據優化問題的條件(關於優化問題,我也有整理,詳情請看博文:梳理凸優化問題),這屬於典型的帶有等式約束優化,可使用增廣拉格朗日函數(Augmented Lagrangain Method)來求解。根據定義,給約束項加上一個懲罰項,構造增廣拉格朗日函數:
L=TTF2+kWG1+ϕ(Z,TG)(9)\begin{aligned} L=||T'-T||^2_F+k||W\cdot G||_1+\phi(Z,\triangledown T-G) \tag9\end{aligned}
其中ϕ(Z,TG)=μ2TGF2+<Z,TG>\phi(Z,\triangledown T-G)=\frac \mu2||\triangledown T-G||^2_F+<Z,\triangledown T-G>,這裏的<,>是指矩陣的內積,Z代表拉格朗日乘子。因爲函數有三個變量:T、G、Z需要求解,這篇文章的作者採用分解子問題,分別使用ALM求解。

子問題 T

將函數(9)中有關T的部分抽離出來,單獨優化:
T(t+1)arg minTTTF2+ϕ(Z(t),TG(t))(10)\begin{aligned} T^{(t+1)}\gets \argmin_T||T'-T||^2_F+\phi(Z^{(t)},\triangledown T-G^{(t)}) \tag{10}\end{aligned}
式(10)是一個經典的最小二乘問題

補充 最小二乘法問題的步驟:
(未知數>已知數)超定方程:xb=yxb=y
最小化殘差平方和:b=arg min(xby2)b'=\argmin(||xb-y||^2)
對其進行位符求最值:b=xTyb'=x^Ty
如果矩陣xTxx^Tx非奇異,則b有唯一解:b=(xTx)1xTyb'=(x^Tx)^{-1}x^Ty

因此T子問題的解決方案,直接對(10)求微分,令其爲0,得到:
2(TT)+μ(t)DT(DTG(t))+DTZ(t)=0(2I+μ(t)DTD)=2T+μ(t)DT(G(t)Z(t)μ(t))(11)\begin{aligned} &2(T-T')+\mu^{(t)}D^T(DT-G^{(t)})+D^TZ^{(t)}=0\\ \Rightarrow & (2I+\mu^{(t)}D^TD)=2T'+\mu^{(t)}D^T(G^{(t)}-\frac{Z^{(t)}}{\mu^{(t)}}) \tag{11}\end{aligned}
這裏的II是指單位矩陣,DD是具有前向差異的離散梯度算子的託普利茲矩陣(Toeplitz matrice),包含了水平DhD_h和垂直DvD_v方向。爲方便起見,操作DXDXDTXD^TX分別表示reshape(DxDx) 和reshape(DTxD^Tx),其中xx是矢量化的XX,reshape()表示將矢量整形爲其矩陣形式的操作。 直接計算2I+μ(t)DTD2I + \mu(t)D^TD的倒數是解決子問題T的直觀方法。 但是,矩陣逆運算在計算上是龐大的,特別是對於像DTDD^TD這樣的大型矩陣而言。 幸運的是,可以通過假設循環邊界條件,我們可以對上述問題應用二維FFT技術(快速傅里葉變換),這使我們能夠快速計算解,有:
T(t+1)F1(F(2T+μ(t)DT(G(t)Z(t)μ(t)))2+μ(t)d{h,v}F(Dd)^F(Dd)})(12)\begin{aligned} T^{(t+1)}\gets F^{-1}(\frac{F(2T'+\mu^{(t)}D^T(G^{(t)}-\frac{Z^{(t)}}{\mu^{(t)}}))}{2+\mu^{(t)}\sum_{d\in\{h,v\}}\widehat{F(D_d)}\circ F(D_d)\}}) \tag{12}\end{aligned}

這裏的F()F()代表二維快速傅里葉變換,F1()F^{-1}()F()^\widehat {F()}分別代表二維反傅里葉變換和F()F()的複合共軛。這些運算都是對每個像素點的。

子問題 G

同樣地,去掉(9)中與G無關的項,得到:
G(t+1)arg minGkWG1+ϕ(Z(t),T(t)G)(13)\begin{aligned} G^{(t+1)}\gets \argmin_Gk||W\cdot G||_1+\phi(Z^{(t)},\triangledown T^{(t)}-G) \tag{13}\end{aligned}
通過執行收縮操作 (我也不太知道這個操作),可以輕鬆獲得(13)的閉式解:
G(t+1)=SkWμ(t)[T(t+1)+Z(t)μ(t)](14)\begin{aligned} G^{(t+1)}=S_{\frac{kW}{\mu^(t)}}[\triangledown T^{(t+1)}+\frac{Z^{(t)}}{\mu^{(t)}}] \tag{14}\end{aligned}
其中Sε>0[]S_{\varepsilon \gt 0}[ ]代表收縮操作(原文:shrinkage operator),定義爲:Sε[x]=sgn(x)max(xε,0)S_{\varepsilon }[ x]=sgn(x)\max(|x|-\varepsilon,0),收縮算子對向量和矩陣的擴展是簡單地逐個元素地處理數據,例如SA[X]S_A [X]使用由A的相應項給定的閾值對X的元素執行收縮。

子問題 Z和μ\mu

更新Z和μ\mu可以通過下面的操作得到:
Z(t+1)Z(t)+μ(t+1)(T(t+1)G(t+1));μ(t+1)μ(t)ρ,ρ>1(14)\begin{aligned} Z^{(t+1)}&\gets Z^{(t)}+\mu^{(t+1)}(\triangledown T^{(t+1)}-G^{(t+1)});\\ \mu^{(t+1)}&\gets\mu^{(t)}\rho,\rho\gt1 \tag{14}\end{aligned}
ALM算法中概述了問題(7)的精確求解器的整個過程。這個迭代更新操作的停止條件是T(t+1)G(t+1)F<δTF||\triangledown T^{(t+1)}-G^{(t+1)}||_F\lt \delta||T'||_F,這裏的δ=105\delta=10^{-5};或者設置的最大迭代次數已經到達。

到這裏,已經介紹完ALM加速優化算法了,最後把算法的流程圖放上來,就更清晰。
流程圖
對於這一部分,原文中還分析了使用ALM算法的兩個關鍵指標:收斂性和計算複雜度。在這裏就不詳細寫了,有興趣的可以翻看原文。下面介紹第二種加速算法。

Speed-up Method(2):權重變量

儘管第一種優化方法的複雜度已經是相當低,但我們還是希望能進一步降低它。 讓我們再回看一下問題(7), 帶來迭代過程的因素是稀疏加權梯度項,即WT1||W◦\triangledown T||_1。 L1正則項與在T上求梯度的運算一起使得式子有些複雜,但是單獨拆分出來分析,以下關係是成立:
limϵ0+xd{h,v}Wd(x)(dT(x))2dT(x)+ϵ(16)\begin{aligned} \lim_{\epsilon \to 0^+}\sum_x\sum_{d\in\{h,v\}}\frac{W_d(x)(\triangledown_d T(x))^2}{|\triangledown_dT'(x)|+\epsilon } \tag{16}\end{aligned}
根據(16),我們可以使用xd{h,v}Wd(x)(dT(x))2dT(x)+ϵ\sum_x\sum_{d\in\{h,v\}}\frac{W_d(x)(\triangledown_d T(x))^2}{|\triangledown_dT'(x)|+\epsilon }近似等於WT1||W◦\triangledown T||_1。所以,(7)可以被寫成:
minTTTF2+kxd{h,v}Wd(x)(dT(x))2dT(x)+ϵ(17)\begin{aligned} \min_T||T'-T||^2_F+k\sum_x\sum_{d\in\{h,v\}}\frac{W_d(x)(\triangledown_d T(x))^2}{|\triangledown_dT'(x)|+\epsilon } \tag{17}\end{aligned}
儘管目標函數發生了變化,但與原始函數相比,從初始光照估計值T中提取照明結構的目標與理論是一致的。更具體地,當dT(x)|\triangledown_dT(x)|小時,dT(x)|\triangledown_dT'(x)|將被抑制,值Wd(x)(dT(x))2dT(x)+ϵ\frac{W_d(x)(\triangledown_d T(x))^2}{|\triangledown_dT'(x)|+\epsilon }也將被抑制。 換句話說,目標T’被約束以避免在最初估計的照明圖具有小幅度的梯度。 相反,如果dT(x)|\triangledown_dT(x)|強,則上述抑制得到緩解,因爲該位置更可能在結構邊界上而不是規則紋理上。

從上面的分析可以看出,問題(17)僅涉及二次項。 因此,可以通過解決以下問題直接解決此問題:
(I+d{h,v}DdTDiag(wd)Dd)t=t(18)\begin{aligned} (I+\sum_{d\in\{h,v\}}D^T_dDiag(w'_d)D_d)t=t' \tag{18}\end{aligned}
這裏的wdw'_dWdWd(x)Wd(x)dT(x)+ϵW’_d和W'_d(x)\gets \frac{W_d(x)}{|\triangledown_dT'(x)|+\epsilon }的矢量版本,操作Diag(x)Diag(x)是使用向量x構造對角矩陣。(I+d{h,v}DdTDiag(wd)Dd)(I+\sum_{d\in\{h,v\}}D^T_dDiag(w'_d)D_d)是一個對稱的正定拉普拉斯矩陣。這裏,就只要優化算法消除迭代t就可以了,大大地減少了計算量。

對於初始光照圖上的結構感知細化,關鍵是W的設計。在這一部分中,我們討論以下三種可能的加權策略。

  • 策略1: 將權重矩陣設置爲:
    Wh(x)1;Wv(x)1(20)\begin{aligned} W_h(x)\gets 1;W_v(x)\gets 1 \tag{20}\end{aligned}
    這使得問題(7)轉變爲經典的L2損失總方差最小化問題。
  • 策略2: 將初始照明圖的梯度用作權重是合理的,因此產生:
    Wh(x)1hT(x)+ϵ;Wv(x)1vT(x)+ϵ(21)\begin{aligned} W_h(x)&\gets \frac{1}{|\triangledown_hT'(x)|+\epsilon};\\ W_v(x)&\gets \frac{1}{|\triangledown_vT'(x)|+\epsilon} \tag{21}\end{aligned}
  • 策略3: 受相對總變異(RTV)的啓發,對於每個位置,權重均通過以下方式設置:
    Wh(x)yΩ(x)Gσ(x,y)yΩ(x)Gσ(x,y)hT(x)+ϵ;Wv(x)yΩ(x)Gσ(x,y)yΩ(x)Gσ(x,y)vT(x)+ϵ(22)\begin{aligned} W_h(x)&\gets \sum_{y\in \Omega(x)}\frac{G_\sigma(x,y)}{|\sum_{y\in\Omega(x)}G_\sigma(x,y)\triangledown_hT'(x)|+\epsilon};\\ W_v(x)&\gets \sum_{y\in \Omega(x)}\frac{G_\sigma(x,y)}{|\sum_{y\in\Omega(x)}G_\sigma(x,y)\triangledown_vT'(x)|+\epsilon} \tag{22}\end{aligned}
    這裏的Gσ(x,y)G_\sigma(x,y)是由具有標準偏差σ的高斯核產生。 形式上,Gσ(x,y)G_\sigma(x,y)表示爲:
    Gσ(x,y)exp(dist(x,y)2σ2)(20)\begin{aligned} G_\sigma(x,y)\propto\exp(-\frac{dist(x,y)}{2\sigma^2}) \tag{20}\end{aligned}
    其中,函數dist(x, y)用於測量位置x和y之間的空間歐幾里得距離。 實際上,第二種加權策略就是其中一種。 當σ0+\sigma \to 0^+,這兩種策略獲得相同的權重矩陣。 我們注意到,與RTV不同,我們的權重矩陣是基於給定的T’構造的,而不是根據T進行迭代更新的,這意味着W只需要計算一次。

實驗

最後,LIME算法的整體流程是:
LIME算法流程
放上一些實驗結果:
結果

結果

conclusion

本文主要整理了低照度圖像增強中的一種傳統方法:LIME。呼~好累,不多說啦。最後按套路放上文章資源:LIME: Low-light Image Enhancement via Illumination Map Estimation
如果文章對您有幫助(嗚嗚嗚,可憐一下我碼了這麼多字),點個贊再走唄!!!謝謝啦(試圖出賣博主樣貌,來收穫歡心。。。。太難了)
尊重原創,轉載請註明出處!
出賣樣貌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章