圖像視頻降噪的現在與未來——從經典方法到深度學習

livevideostack 發佈 2020-01-02T03:39:02+00:00

本分享總結了噪聲產生的幾個原因,從理論上分析降噪的基本原理,並介紹了使用傳統方法和深度學習進行單幀降噪、多幀降噪和視頻降噪的技術。

噪聲是圖像與視頻中的一種常見失真類型,也是騰訊多媒體實驗室以及騰訊雲提供的多種失真處理能力之一。本分享總結了噪聲產生的幾個原因,從理論上分析降噪的基本原理,並介紹了使用傳統方法和深度學習進行單幀降噪、多幀降噪和視頻降噪的技術。

文 / 李松南

整理 / LiveVideoStack

1. 簡介

1.1 騰訊多媒體實驗室

大家好,我是來自騰訊多媒體實驗室的李松南,本次分享將為大家介紹傳統降噪和深度學習降噪方法,以及降噪技術未來的發展趨勢。騰訊多媒體實驗室專注於多媒體技術領域的前沿技術探索、研發、應用和落地,在長期積累中精心打造出三大核心能力,分別是:音視頻編解碼、網絡傳輸和實時通信;多媒體內容處理、分析、理解和質量評估;沉浸式媒體系統設計和端到端解決方案。本次分享中的內容就屬於多媒體內容處理的一部分。

上圖是騰訊多媒體實驗室常年積累起來的視頻處理能力,包括視頻降噪、去壓縮失真、視頻去抖動、夜景增強、視頻超分、視頻銳化等,這些能力已經應用於騰訊的許多產品,比如騰訊雲、全民K歌、企鵝電競、微視、QQ空間等。目前團隊正在向騰訊雲推出畫質修復功能,已經開發和計劃開發的技術,包括視頻超分、去偽影、去抖動、去劃痕與雪花、插幀、HDR,還有下面主要介紹的視頻降噪技術。

1.2 噪聲的來源

圖像、視頻從採集到播放的整個生命周期中會經歷各種各樣的處理過程,比如採集、剪輯、編碼、轉碼、傳輸、顯示等,每個處理過程都會引入失真。「噪聲」就是在信號採集過程中引入的一種普遍失真。降低噪聲強度可以使圖像主觀效果更好。另外,在圖像、視頻壓縮時也不必浪費碼率在編碼噪聲上。同時,會使得視頻編碼中的運動估計更準確、熵編碼速度更快。

噪聲的來源有多種,其中最主要的部分來自光子散粒噪聲。上圖描述的是從感光元器件收集到光子,一直到生成數字圖像的過程。首先感光元器件把光子轉換成電子,電子形成電壓,電壓放大後量化,最終形成數字圖像。光子散粒噪聲在感光元器件接收光子時就發生了。

即使光線是完全平坦的,感光元器件每個像素接受到的光子個數也是不同的。像素接收到光子個數的分布,符合一個經典的離散機率分布模型—泊松分布。上圖中右側是泊松分布的數學公式,他的均值是λ,標準差是√λ,而均值和標準差分別對應了信號以及噪聲的強度。均值和標準差的比值就是信噪比。可以看到,信噪比是隨λ增加而增加的,信噪比越高意味著主觀感受到的噪聲越小,這裡的λ可以理解為每個像素接收到的光子個數。因此,我們可以通過提高單位像素麵積內接受到的光子個數來降低人眼感知到的噪聲強度。不論是硬體降噪或是軟體降噪,很多降噪方法都利用到了這個原理。

除了光子散粒噪聲外,噪聲來源還包括暗電流噪聲、熱點噪聲、固定模式噪聲以及讀出噪聲。這些噪聲或者與電路熱擾動釋放的電子有關,或者與感光元器件在製造過程中產生的缺陷有關。其中,暗電流噪聲和熱點噪聲與曝光時間有關,曝光時間越長,這兩類噪聲的強度越大。上圖中左下部分給出的是關於信號和噪聲強度的一個更精確的公式。

1.3 硬體降噪方法

通常的硬體降噪方法都是通過增加單位像素接收到的光子個數來增加圖像的信噪比的。比如,增加感光元器件的尺寸,在像素個數固定的情況下,每個像素的面積增大了,單位時間內接收到的光子個數就變多了。另外還可以增大光圈,通過增加進光亮,使得感光元器件上接收到的光子個數增加。背照式和堆棧式的CMOS通過將感光元器件的處理電路下移,減少電路對光線的反射和吸收,增加感光區域的實際占比。有些感光元器件為了接收到更多的光子去掉了彩色濾光片,這樣可以在暗光下有更好的噪聲表現,但缺點是只能拍攝灰度圖像,需要結合正常攝像頭一起使用。最後是像素融合,如右上圖所示,在光線較暗的情況下,可以將四個像素當作一個像素使用,這樣每個像素接受的光子數就增多了。

2. 傳統降噪方法

2.1 單幀降噪

分析完硬體降噪之後,我們來看看對單幅圖像的傳統降噪方法。上圖來自於2004年的一篇綜述文章,可以看到單幀降噪算法可以做很多種不同的分類,比如線性/非線性、空域/頻域,頻域又包括小波變換域、傅立葉變換域或其他變換域。從圖中可以看到,在小波域中做單幀降噪算法的種類是比較多的,小波域結合統計建模是當時比較流行的研究方法。

上圖簡單粗暴的將單幀降噪方法歸類為速度快的和效果好兩種類型。這樣的分類方法雖然並不科學,但大致反映了實際情況:單幀降噪算法往往需要在速度和效果之間權衡,使用純軟體的方式很難實現出既快又好的單幀降噪方法。

上面的PPT中包含了雙邊濾波和小波變換的示意圖。通常我們會拿雙邊濾波和高斯濾波進行對比。對於高斯濾波來說,在處理當前像素的過程中會用到當前像素附近的像素做加權平均,權重取決於當前像素和周圍像素的距離,距離越遠則權重越小。雙邊濾波除了考慮距離之外,還會考慮當前像素和周圍像素顏色的差異,對距離近但顏色差異大的像素會分配一個小的權重,這樣做就不會模糊了邊界,實現了保持邊界的濾波。右側是小波變換的示意圖,在小波變換之後信號被分解到不同頻帶,同時每個頻帶還保留了一定的空域信息。通過對這些小波係數做閾值處理、濾波或者基於統計建模的處理,再反變換回空域,可以實現有效的降噪效果。

上圖來自2008年的一篇文章,它結合了小波變換和雙邊濾波兩種方法,對低頻信號做雙邊濾波,對高頻信號做閾值處理,結合之後生成低頻信號再做雙邊濾波,如此反覆。這個方法的優勢是可以針對不同的頻帶調節降噪的強度,同時保持了邊界。適用範圍廣,可以針對不同的攝像頭模組調節降噪參數,所以很多基於硬體的單幀降噪模塊使用的就是小波變換結合雙邊濾波的方法。

上圖給出了一個「效果好」的例子,自相似結合變換域。左邊的圖解釋的是自相似的概念,對每個塊在圖像內進行搜索,找到與之相似的一系列塊。經典的非局部平均(Non-Local Means)降噪算法會將這些相似塊在空間域做加權平均。如果更近一步,將這些相似塊變換到頻域,在頻域做一些濾波和閾值處理之後再轉換回空間域,就是自相似與變換域結合的方法,比如經典的單幀降噪算法BM3D利用的就是這樣的原理。類似的,還有自相似結合稀疏編碼、自相似結合低秩等,都可以實現很好的單幀降噪效果。

2.2 多幀降噪

接下來介紹一下傳統的多幀降噪方法。在光線比較暗的情況下,我們用手機拍照按下快門的時刻,會記錄下多張圖像,算法會將這些圖像做對齊、融合,形成一張圖像。這樣做相當於延長了曝光時間,使得感光元器件接收到了更多的光子,增加了信噪比,同時又不會因為手持相機和曝光時間過長而導致圖像模糊。如果對四張圖像做對齊融合,則相當於每個像素多採集到了四倍數量的光子,換算成信噪比有6分貝的提升,這對於圖像質量來說是一個非常可觀的數字。多幀降噪的主要步驟有兩個:對齊和融合。對齊就是找到多個圖像中像素(塊)的對應關係;融合是將這些對應的像素(塊)在空域或者頻域做加權平均。為了確定加權平均的權重值,我們需要知道像素(塊)之間的差異是由於對齊不准造成的還是因為噪聲造成的,因此需要估計噪聲強度。一個準確的噪聲強度估計算法,對多幀降噪的效果會起到至關重要的作用。

上圖是谷歌在2016年發表的一篇手機圖像質量增強的文章,介紹的是HDR+算法,用在了谷歌手機上。HDR+有很多圖像處理模塊,其中就包括了剛才介紹的多幀降噪。HDR+的多幀降噪實現在Raw域,由於Raw域的圖像沒有經過後續非線性圖像處理模塊的影響,所以可以在Raw域中對圖像中的噪聲進行比較精確地建模,有了噪聲建模的結果之後就可以對噪聲強度做估計並運用到多幀降噪算法中去。

2.3 視頻降噪

視頻降噪與上面介紹的多幀降噪類似,為了達到更好的降噪效果也會用到臨近幀的信息,把臨近幀中相似的像素塊做融合處理。在手機端對視頻的每一幀做這樣的操作,又要保持實時性是很困難的。因此需要硬體的支持,使用快速的對齊算法,或者用運動檢測代替運動估計,根據檢測到的運動強度,對時域濾波和空域濾波的結果做加權平均。

3. 深度學習降噪方法

基於深度學習的降噪通常會使用圖像到圖像的卷積網絡。右邊的示例圖給出的是圖像到標籤和圖像到圖像卷積網絡的對比,可以看出圖像到標籤的網絡在處理大解析度的圖像時,可以先做縮放,把圖像解析度縮小後再輸入網絡。而對於圖像到圖像的卷積網絡,輸入通常是原始解析度的圖像,輸出也是同樣解析度的,對於像超分這樣的應用,輸出的解析度甚至更大,所以即使卷積層的層數非常少,計算複雜度仍然是很高的,對顯存的需求也高。另外,基於深度學習的降噪方法通常需要使用含有真實噪聲的訓練數據才能達到比較好的處理效果。

3.1 單幀降噪網絡結構

上圖列舉了幾個用於降噪的深度學習算法。參考文獻[5]是最早使用深度模型做降噪的文章之一,帶有噪聲的圖像經過一系列的卷積處理,最後生成一張只包含噪聲的殘差圖。參考文獻[6]使用自編碼結構,編碼端由卷積層構成,解碼端由反卷積層構成,編碼端與解碼端有一系列的跳過連接。參考文獻[7]使用了生成對抗網絡,通過對降噪網絡和判別網絡做聯合優化,提升降噪網絡的處理效果。參考文獻[8]研究網絡的「深」與「寬」對降噪效果的影響,它得出的結論是網絡寬一些(更多的通道數、更大的卷積核)會使降噪效果更好。參考文獻[9]使用傳統方法結合深度學習進行圖像處理。這裡的傳統圖像處理方法是一個循環疊代的優化過程,其中的每一步疊代都可以用深度模型替代其中的部分處理過程。

3.2 視頻降噪

這裡介紹幾個使用深度學習做視頻降噪的例子。參考文獻[10]是DVDNet,它會對當前幀和臨近幀做空域上的卷積降噪,然後通過光流網絡將臨近幀與當前幀對齊,最後在對齊後的圖像上做時域降噪。參考文獻[11]是DVDNet的加速版,為了提高處理速度,它捨棄了光流對齊,直接把臨近幀輸入到一個兩級的深度網絡中做降噪。參考文獻[12]提出了EDVR網絡,它介於上述兩種方法之間,沒有用現成的光流對齊方法,也沒有完全去掉對齊的過程,而是在一個叫做PCD(Pyramid Cascading Deformable convolution)的模塊里將卷積處理後得到的特徵圖進行對齊。需要指出的是,EDVR並不是用來做降噪的,而是用來做超分和去模糊的,但這樣的處理方式同樣可以用來做降噪。

3.3 真實噪聲資料庫

使用深度學習做降噪,訓練的過程最好可以使用包含真實噪聲的資料庫。上圖右側的列表給出了一些包含真實噪聲的資料庫,每個資料庫提供的圖像個數並不多。為了訓練深度模型,資料庫需要提供「無噪聲」的圖像作為Ground Truth (GT),獲得GT的方法主要有兩種,一種是使用低ISO長曝光的圖像作為GT,另外一種是融合多張高ISO短曝光的圖像作為GT。不管使用哪種方法,噪聲圖像與GT之間還是會存在對齊不准、顏色不匹配的情況,因此還需要做後處理(左下圖)才能得到更準確的訓練圖像對。

3.4 模擬真實噪聲

很多早期基於深度學習的降噪方法會使用模擬的噪聲圖像進行訓練。他們會在sRGB空間的「無噪聲」圖片中加入高斯白噪聲或者柏松噪聲。用這些方式加入的噪聲很不真實,所以訓練出的降噪模型效果不好。上圖是2019年CVPR發表的一篇文章,文中使用的噪聲數據也是模擬出來的,但更精確的模擬了噪聲的形態。它模擬ISP的處理過程,對「無噪聲「的圖像做了一個ISP」反處理「,將圖像從sRGB空間變換到Raw域,在Raw域加入光子散粒噪聲、讀噪聲。由於這種方法可以更好的模擬真實拍攝到的噪聲圖像,學習出的深度降噪模型在DND真實噪聲數據集上取得了非常好的效果。

4. 發展趨勢

最後我想與大家分享我個人對於降噪技術發展趨勢的判斷。首先手機上的降噪將逐漸硬體化。目前,手機上的圖像降噪效果有很大一部分是軟體實現的,比如,之前多數手機是不支持硬體多幀降噪的。而現在越來越多的高、中端手機平台晶片都開始支持多幀降噪、基於運動補償的視頻降噪等。另外一個發展趨勢是智能化,既越來越多的使用深度模型進行圖像處理。如上所述,深度模型做圖像、視頻處理速度慢,資源消耗高。但隨著終端設備計算能力的不斷增強,異構計算平台的發展,以及模型壓縮技術的進步,在終端使用深度學習做圖像處理會變的越來越多。最後一個趨勢是多功能,一個深度模型同時處理多個任務,比如同時實現降噪、超分、增強等功能。硬體化、智能化和多功能將是未來降噪技術的三個發展趨勢。

參考文獻

關鍵字: