翁子寒
(上海兒童醫學中心, 上海 200127)
手機設備出于便捷性的考量,其鏡頭模組的光圈通常較小,從而限制了光電子(Photon)的攝入數量,導致在微光條件下會產生低信噪比的圖像[1]。因此一直以來,低照度下的camera圖像增強技術一直是影像算法中極具挑戰性的難題。最直觀的增加ISO感光增益可以提高圖像的亮度,但同時也會引入噪聲[2]。一些圖像后處理方法如圖像縮放或直方圖拉伸,由于低光子數的影響并不能解決低信噪比的問題而且無疑會增加時間復雜度。此外,一些物理手段例如增加曝光時間,增大光圈或者使用閃光燈等方法,雖然可以增加低照度下圖像的信噪比,但都有各自的缺點,例如增加曝光時間時,由于相機抖動或者目標移動的影響會造成成像模糊同時也與快速成像的需求違背[3]。
研究者們提出了微光條件下的去噪,去模糊與圖像增強等一系列算法。其中一種經典的方法是直方圖均衡化[4],它通過改變圖像的直方圖分布來改變圖像各像素的灰度,進而改善欠曝光下的圖像對比度;另一種經典的非線性方法是伽馬校正(Gamma Correction),它通過對輸入圖像灰度值進行冪律變換進而校正亮度偏差,最后的結果是增加黑暗區域的亮度而減少了明亮區域的亮度。此后的方法采用更加全局化的分析與處理,例如文獻[5]基于小波系數的局部離散性設計了一種非線性增強函數,以統計建模的方式進行圖像對比度增強。文獻[6]提出的圖像增強方法首先估計初始照度,并使用伽馬校正以限制照度分量,接下來迭代地進行基于變化(Variation)的最小化來分離反射和光照分量,以恢復使用輸入RGB顏色通道的顏色分量。文獻[7]通過選取每個像素通道中的最大值初始化該圖像光強度圖,然后通過引入一種結構化先驗方法以細化此初始光照圖,最后根據Retinex[8]理論進行最終圖像增強。與此前的方法相反,本文研究的是極端低光下的成像,例如在有限的照度(如月光)和短曝光的條件下,傳統相機中的圖像處理步驟并不能適用,因此必須從原始傳感器Raw數據中重建圖像。本文提出了一種解決此類問題的算法,即引入大數據驅動的方法來解決極端低光下攝影的問題。具體來說,我們通過訓練深度神經網絡來學習低照度下原始數據(RAW Data)的圖像處理,該端到端方法隱式進行了一系列算法,包括顏色轉換、去馬賽克、降噪、伽馬校正與自動曝光等。同時它也進一步避免了傳統圖像處理的多步驟機制存在的噪聲放大與誤差累積問題。據我所知,這是第一次將深度學習中的全卷積神經網絡方法應用于微光條件下camera圖像增強處理的領域中。
在獲取到成像傳感器得到的原始Raw數據之后,傳統的圖像處理方法會應用到一系列模塊,如去馬賽克(Demosaiking)、白平衡(White Balance)、降噪(Noise Reduction)、圖像銳化(Sharpening)、顏色校準(Color Correction)與伽馬校正等[10],如圖1所示。

圖1 傳統的低照度圖像增強流程圖
此外文獻[11]提出使用大量的局部(Local)、線性(Linear)和學習(Learning),即3L濾波器來近似成像系統中的復雜非線性步驟,如圖2所示。

圖2 3L低照度圖像增強算法
此后,文獻[9]使用合并同曝光多幀的相同RAW圖從而得到更加魯棒的校準,如圖3所示。

圖3 基于多幀合并算法的低照度圖像增強
雖然此前的方法皆取得了一定的成效,但它們的局限性在于通常假設圖像是在稍微昏暗的環境和一般的噪音環境中獲取的,皆無法處理極低信噪比的低照度下的圖像。
本文提出了使用端到端學習的方法直接處理微光條件下的圖像。具體來講,訓練了一種端到端的全卷積神經網絡(Full Convolutional Neural Network,FCN)以執行此圖像處理的步驟。最近的研究表明,FCN可以有效地代替許多圖像處理算法[12-14]。受此啟發,本文研究了此網絡在極端低光成像中的應用。值得注意的是,提出的算法對原始傳感器獲取到RAW數據進行操作,而不是對傳統相機處理管道生成的普通sRGB圖像進行操作。
本文方法的闡述,如圖4所示。

圖4 本文基于深度學習的低照度圖像增強方法
對于傳感器獲取到的拜耳陣列(Bayer Color Array)[15],我們將其壓縮到4個通道,相應地將每個維度的空間分辨率降低了2倍。此后為了減少暗電流[16]對圖像信號的影響,需要進行黑電平校正(Black Level Correction)[17],即從已獲得的圖像中減去暗電流信號。然后圖像矩陣被輸入至深度卷積神經網絡當中,輸出12通道的圖像。最終使用子像素卷積(Sub-pixel Convolution)將圖像恢復至原始分辨率。
在網絡的選擇上,選取了兩個全卷積網絡作為備選項:多尺寸融合網絡與U-Net[18]。之前的如降噪[19],圖像超分辨率[20]等工作利用到了近些年在圖像識別中被廣泛使用的殘差網絡(ResNet)[21],但是在前期的實驗中發現它并不適用于本文的架構,究其原因,可能是輸入與輸出位于不同的顏色空間中。另一個影響我們選擇的是內存消耗問題,因此避免選取帶有全連接層的神經網絡。綜上,選取U-Net作為本文方法的主干網絡。
通常卷積神經網絡(Convolutional Neural Network, CNN)用于圖像分類任務當中,在這類任務當中圖像的輸出通常為一個簡單的類標簽。但是在一些其他的視覺任務當中(如圖像分割,圖像重建等),期望輸出還應包括局部信息,也就是說需將圖像標簽分配給每一個像素,此時全卷積神經網絡(Ful Convolutional Neural Network, FCN)[22]應運而生。FCN通過將常規CNN中的全連接層皆替換為卷積層,將通常的池化操作替換為上采樣操作,以增加輸出的分辨率來獲得二維的特征圖,同時為了更好地進行局部化(Localization),將來自主干網絡的高分辨率特征與上采樣相結合。U-Net便是FCN的變體,如圖5所示。

圖5 本文的主干網絡U-Net
為了證明提出方法的有效性,我們指定了不同的圖像模式,并演示了不同損失函數對于結果的影響。消融實驗的結果如表1所示。

表1 變動不同參數時的性能對比
由表1可以得出以下結論。
(1) 由于大多數現有的傳統圖像增強方法都是在已經處理過的sRGB圖像上進行的。但我們發現,在極端低光條件下,直接對原始傳感器獲得的RAW數據進行操作更為有效。原因可能是,相對于RGB圖像,RAW圖保留了原始圖像更多的信息。
(2) 本文原始的工作是基于L1損失函數展開的,由表1可以看出,L1優于L2損失函數,同時與SSIM損失函數差別不大,原因可能在于基于像素差值層面的L1損失函數對異常點較為敏感,而SSIM由于其同時考慮了亮度,對比度與結構指標,因此在細節上可能略勝一籌,所以兩者各有千秋。
為了進一步驗證方法的有效性,將所得結果與其他低照度圖像增強方法進行對比。其結果如表2和圖6所示。

表2 與其他方法的性能對比


表2列舉了本文方法與其他一些圖像增強方法關于SSIM與PNR的性能對比。關于表中方法的詳細介紹可參見引言部分。可以看到,本文的基于深度學習的低照度圖像處理方法在兩項指標中皆處于最優。多幀方法雖然在性能上與我們的方法較為接近,但是其缺點是消耗過多內存,因此空間復雜度較高。
圖6列舉了3L法,多幀合并法與本文方法(從左至右以此排列)的處理結果直觀比對(由于代碼的不可獲取性,因此其他方法的處理結果不能進行展示)。注意3L法重構后得到的圖像,其亮度提升的并不明顯,圖像的椒鹽噪聲沒有得到改善并且整體觀感很模糊。相比于前者,多幀合并法處理的結果略勝一籌,但是觀感上存在過曝的現象,原因可能在于AEC自動曝光控制的處理閾值設定不過關,另外噪聲現象仍然存在。我們的方法可以看到的是整體已重構至相當接近于白天場景下的照片,對細節如毛刺,噪聲的處理已相當到位。
本文提出了一種基于深度學習的微光條件下圖像處理算法以改善傳統算法在弱光處理方面的不足。具體來講,利用LTSITD這一目前已知的最大開源的弱光數據集,通過使用端到端的全卷積神經網絡進行訓練。實驗結果證明了本文方法在噪聲抑制和顏色轉換等方面的有效性。