今天要整理的一篇論文是使用傳統的方法解決低照度的問題,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=T⋅R(1)
其中I是原始低照度圖,T是入射分量即光照,R是反射分量。最早基於Retinex理論的研究有SSR、MSR:它們都是把反射分量作爲最後的增強結果,因此,只需要求解出入射分量即可。但是這樣的處理方式,得到的結果通常是不自然的,且容易過度增強。往後的研究就偏向於優化入射分量,使其更自然,有通過融合多張圖像來調整光照圖,也有通過劃分子塊優化光照圖等。最後來,研究的方向就偏向於加入權重模型,同時優化光照圖和反射分量。
到這裏,值得一提的方法是:Dong發現了反轉低照度圖像跟有霧圖像的特徵相似,因此提出了反轉圖像(作爲僞霧圖)應用去霧算法,同樣能得到增強亮度的效果,這就將低照度增強領域擴展至圖像去霧領域中去了,去霧算法可用在低照度增強中去。(對這個算法感興趣的同學,可以去下載文章看看,這裏提供論文DOI:10.1145/1836845.1836920)
(圖)僞霧圖與有霧圖像
Contribution
本文提出的算法也是基於Retinex理論的,算法主要傾向於估計低照度圖像的光照圖來實現增強。這裏值得注意的是,本文的算法跟以往的基於Retinex增強方法(直接將圖像分解成L和R)不同,我們的算法是僅僅估計一種一個變量(光照),這大大地縮小解空間和減少計算量。本文的主要貢獻是:
- 提出了兩種加速優化光照圖的算法:增廣拉格朗日乘數法(ALM)和權重策略。
- 進行了大量的對比實驗。
個人觀點: 該文章最大的貢獻其實是提出的第一種加速優化方法,他主要將優化光照的問題嵌入到最優化問題中,考慮圖像的保真和結構性,自定義了一個優化的目標函數和相應的約束條件,然後採用傳統的拉格朗日乘數法來解決這個優化問題。
Method
根據Retinex理論可知,我們理想的圖像是R(入射分量)可以通過估計出光照圖T和原始的低照度I得到:
R=TI
爲了簡化計算,通常認爲三通道(彩色)圖像都是共享同一個光照圖。首先初始化光照圖T:
Tc(x)=c∈{R,G,B}maxIc(x)(2)
要保證這個的光照圖不會使得增強的圖像過於飽和,我們加入了一個非常小的參數ϵ來限制:
R(x)=T(x)+ϵI(x)(3)
ϵ是一個非常小的常量,主要是爲了避免出現除零和R過度飽和的情況。文章明確地指出這項工作的目標是:非均勻地增強弱光圖像的照明,而不是消除光源引起的色移。
在文中,作者還特意與Dong提出的反轉圖像去霧增強算法作對比。我覺得這裏的工作整理得挺好的,這裏幫助我更好地理解了基於大氣物理散射模型的去霧算法和基於Retinex理論增強算法之間能融合及相似的地方。所以,我在整理這篇文章的筆記的時候,還是決定把這部分寫上。
Dong使用反轉低照度圖像(1−I)作爲僞霧圖,使用大氣散射模型(4)來實現增強:
1−I=(1−R)⋅T+α(1−T)(4)
在大氣物理模型(4)理論中,T代表透射率,需要估計的,α代表大氣光強,是一個確定的常量。而(1-I)代表僞霧圖,(1-R)代表去霧後的圖像,即增強的圖像。
式子(4)和(1)進行對比,其實有一定的相似性,它們之間存在一種關係。這需要引入著名的何凱明博士提出的暗通道先驗理論(Dark Channel Prior,DCP),即Idark=mincIc,清晰無霧圖的暗通道爲0,使用暗通道先驗理論來估計透射率,有:
T′(x)←1−cminα1−Ic(x)=1−α1+cmaxαIc(x)(5)
把(5)代入到(4)中,得到:
R(x)=(1−α1+maxcαIc(x)+ϵ)I(x)−1+α+(1−α)(6)
當α=1時,我們可以看到,(3)和(6)的結果是一樣的;但是當α遠離1,模型(3)和(6)的等價關係就不存在了。
這個圖展示了(3)和(6)兩個模型的結果,雖然將大氣光強設置成0.95,兩個模型的效果仍然是非常明顯的。本文主要是使用(3)的方式來獲取增強圖。經(2)獲得初始化的光照圖,然後使用兩種不同的方法優化光照圖,下面開始介紹文中的兩種加速算法。
Speed-up Method(1):ALM
ALM加速法,是將優化光照的問題歸納爲最優化問題中,考慮圖像的保真度和結構平滑度,自定義了一個優化的目標函數,使用F範數和L1正則分別衡量圖像的保真度和結構平滑度:
Tmin∣∣T′−T∣∣F2+k∣∣W⋅▽T∣∣1(7)
這裏的k是平衡F範數和L1正則的係數。(7)式的前項爲F範數,考慮的是細化後的光照圖L‘與初始化的光照圖L之間的保真度,後項爲L1正則,考慮的是平滑度,W爲權重矩陣,▽T代表一階導數濾波器,包括水平和垂直方向的。
傳統上,可以通過交替方向乘子算法(ADMM)就能有效地解決問題(8)。 但從(8)中的目標可以看出,兩個約束項都涉及T。這裏引入了一個輔助變量G來代替▽T,以使問題可分離並因此易於解決。把G=▽T作爲一項等式約束條件,最後我們的優化問題就等價於:
T,Gmin∣∣T′−T∣∣F2+k∣∣W⋅G∣∣1s.t.▽T=G(8)
根據優化問題的條件(關於優化問題,我也有整理,詳情請看博文:梳理凸優化問題),這屬於典型的帶有等式約束優化,可使用增廣拉格朗日函數(Augmented Lagrangain Method)來求解。根據定義,給約束項加上一個懲罰項,構造增廣拉格朗日函數:
L=∣∣T′−T∣∣F2+k∣∣W⋅G∣∣1+ϕ(Z,▽T−G)(9)
其中ϕ(Z,▽T−G)=2μ∣∣▽T−G∣∣F2+<Z,▽T−G>,這裏的<,>是指矩陣的內積,Z代表拉格朗日乘子。因爲函數有三個變量:T、G、Z需要求解,這篇文章的作者採用分解子問題,分別使用ALM求解。
子問題 T
將函數(9)中有關T的部分抽離出來,單獨優化:
T(t+1)←Targmin∣∣T′−T∣∣F2+ϕ(Z(t),▽T−G(t))(10)
式(10)是一個經典的最小二乘問題。
補充 最小二乘法問題的步驟:
(未知數>已知數)超定方程:xb=y
最小化殘差平方和:b′=argmin(∣∣xb−y∣∣2)
對其進行位符求最值:b′=xTy
如果矩陣xTx非奇異,則b有唯一解:b′=(xTx)−1xTy
因此T子問題的解決方案,直接對(10)求微分,令其爲0,得到:
⇒2(T−T′)+μ(t)DT(DT−G(t))+DTZ(t)=0(2I+μ(t)DTD)=2T′+μ(t)DT(G(t)−μ(t)Z(t))(11)
這裏的I是指單位矩陣,D是具有前向差異的離散梯度算子的託普利茲矩陣(Toeplitz matrice),包含了水平Dh和垂直Dv方向。爲方便起見,操作DX和DTX分別表示reshape(Dx) 和reshape(DTx),其中x是矢量化的X,reshape()表示將矢量整形爲其矩陣形式的操作。 直接計算2I+μ(t)DTD的倒數是解決子問題T的直觀方法。 但是,矩陣逆運算在計算上是龐大的,特別是對於像DTD這樣的大型矩陣而言。 幸運的是,可以通過假設循環邊界條件,我們可以對上述問題應用二維FFT技術(快速傅里葉變換),這使我們能夠快速計算解,有:
T(t+1)←F−1(2+μ(t)∑d∈{h,v}F(Dd)∘F(Dd)}F(2T′+μ(t)DT(G(t)−μ(t)Z(t))))(12)
這裏的F()代表二維快速傅里葉變換,F−1()和F()分別代表二維反傅里葉變換和F()的複合共軛。這些運算都是對每個像素點的。
子問題 G
同樣地,去掉(9)中與G無關的項,得到:
G(t+1)←Gargmink∣∣W⋅G∣∣1+ϕ(Z(t),▽T(t)−G)(13)
通過執行收縮操作 (我也不太知道這個操作),可以輕鬆獲得(13)的閉式解:
G(t+1)=Sμ(t)kW[▽T(t+1)+μ(t)Z(t)](14)
其中Sε>0[]代表收縮操作(原文:shrinkage operator),定義爲:Sε[x]=sgn(x)max(∣x∣−ε,0),收縮算子對向量和矩陣的擴展是簡單地逐個元素地處理數據,例如SA[X]使用由A的相應項給定的閾值對X的元素執行收縮。
子問題 Z和μ
更新Z和μ可以通過下面的操作得到:
Z(t+1)μ(t+1)←Z(t)+μ(t+1)(▽T(t+1)−G(t+1));←μ(t)ρ,ρ>1(14)
ALM算法中概述了問題(7)的精確求解器的整個過程。這個迭代更新操作的停止條件是∣∣▽T(t+1)−G(t+1)∣∣F<δ∣∣T′∣∣F,這裏的δ=10−5;或者設置的最大迭代次數已經到達。
到這裏,已經介紹完ALM加速優化算法了,最後把算法的流程圖放上來,就更清晰。
對於這一部分,原文中還分析了使用ALM算法的兩個關鍵指標:收斂性和計算複雜度。在這裏就不詳細寫了,有興趣的可以翻看原文。下面介紹第二種加速算法。
Speed-up Method(2):權重變量
儘管第一種優化方法的複雜度已經是相當低,但我們還是希望能進一步降低它。 讓我們再回看一下問題(7), 帶來迭代過程的因素是稀疏加權梯度項,即∣∣W◦▽T∣∣1。 L1正則項與在T上求梯度的運算一起使得式子有些複雜,但是單獨拆分出來分析,以下關係是成立:
ϵ→0+limx∑d∈{h,v}∑∣▽dT′(x)∣+ϵWd(x)(▽dT(x))2(16)
根據(16),我們可以使用∑x∑d∈{h,v}∣▽dT′(x)∣+ϵWd(x)(▽dT(x))2近似等於∣∣W◦▽T∣∣1。所以,(7)可以被寫成:
Tmin∣∣T′−T∣∣F2+kx∑d∈{h,v}∑∣▽dT′(x)∣+ϵWd(x)(▽dT(x))2(17)
儘管目標函數發生了變化,但與原始函數相比,從初始光照估計值T中提取照明結構的目標與理論是一致的。更具體地,當∣▽dT(x)∣小時,∣▽dT′(x)∣將被抑制,值∣▽dT′(x)∣+ϵWd(x)(▽dT(x))2也將被抑制。 換句話說,目標T’被約束以避免在最初估計的照明圖具有小幅度的梯度。 相反,如果∣▽dT(x)∣強,則上述抑制得到緩解,因爲該位置更可能在結構邊界上而不是規則紋理上。
從上面的分析可以看出,問題(17)僅涉及二次項。 因此,可以通過解決以下問題直接解決此問題:
(I+d∈{h,v}∑DdTDiag(wd′)Dd)t=t′(18)
這裏的wd′是W’d和Wd′(x)←∣▽dT′(x)∣+ϵWd(x)的矢量版本,操作Diag(x)是使用向量x構造對角矩陣。(I+∑d∈{h,v}DdTDiag(wd′)Dd)是一個對稱的正定拉普拉斯矩陣。這裏,就只要優化算法消除迭代t就可以了,大大地減少了計算量。
對於初始光照圖上的結構感知細化,關鍵是W的設計。在這一部分中,我們討論以下三種可能的加權策略。
- 策略1: 將權重矩陣設置爲:
Wh(x)←1;Wv(x)←1(20)
這使得問題(7)轉變爲經典的L2損失總方差最小化問題。
- 策略2: 將初始照明圖的梯度用作權重是合理的,因此產生:
Wh(x)Wv(x)←∣▽hT′(x)∣+ϵ1;←∣▽vT′(x)∣+ϵ1(21)
- 策略3: 受相對總變異(RTV)的啓發,對於每個位置,權重均通過以下方式設置:
Wh(x)Wv(x)←y∈Ω(x)∑∣∑y∈Ω(x)Gσ(x,y)▽hT′(x)∣+ϵGσ(x,y);←y∈Ω(x)∑∣∑y∈Ω(x)Gσ(x,y)▽vT′(x)∣+ϵGσ(x,y)(22)
這裏的Gσ(x,y)是由具有標準偏差σ的高斯核產生。 形式上,Gσ(x,y)表示爲:
Gσ(x,y)∝exp(−2σ2dist(x,y))(20)
其中,函數dist(x, y)用於測量位置x和y之間的空間歐幾里得距離。 實際上,第二種加權策略就是其中一種。 當σ→0+,這兩種策略獲得相同的權重矩陣。 我們注意到,與RTV不同,我們的權重矩陣是基於給定的T’構造的,而不是根據T進行迭代更新的,這意味着W只需要計算一次。
實驗
最後,LIME算法的整體流程是:
放上一些實驗結果:
conclusion
本文主要整理了低照度圖像增強中的一種傳統方法:LIME。呼~好累,不多說啦。最後按套路放上文章資源:LIME: Low-light Image Enhancement via Illumination Map Estimation
如果文章對您有幫助(嗚嗚嗚,可憐一下我碼了這麼多字),點個贊再走唄!!!謝謝啦(試圖出賣博主樣貌,來收穫歡心。。。。太難了)
尊重原創,轉載請註明出處!