手机实时视频去噪(Google Pixel2)
目錄Real-Time Video Denoising On Mobile PhonesAbstract1. Introduction2. Background3. Real-Time Video Denoising3.1 Alignment3.2 Merging3.2.1 Interpolation bounds $w^l_c$ and $w^l_p$3.2.2 Interpolation factor $mathcal{I}$3.3 Implementation Details3.3.1 Noise Estimation4. Results5. Reference
Real-Time Video Denoising On Mobile Phones
Abstract
? 提出了一種基于移動平臺的實時視頻去噪算法。基于高斯-拉普拉斯金字塔分解,我們的解決方案的主要貢獻是快速對齊和一個新的插值函數,融合有噪聲的幀得到去噪的結果。該插值函數對輸入幀的局部和全局特性具有自適應能力,對運動對齊誤差具有魯棒性,并且能夠高效計算。結果表明,該算法具有相當的質量,離線高質量視頻去噪的方法,但是是命令級快。在現代移動平臺上,我們的工作用不到20ms的時間處理一個高清幀,并實現公共基準測試的最高分。
關鍵詞:視頻去噪,實時處理,移動平臺,金字塔分解
1. Introduction
? 手機攝像由于其便利性已經成為我們日常生活的一部分。手機攝像頭用于記錄、視頻聊天,甚至是直播。然而,移動視頻的質量仍然不如專業相機拍攝的視頻,尤其是在弱光條件下。移動成像傳感器體積小、噪聲大,單幀空間去噪方法難以去除時間噪聲。盡管視頻包括了時間用于有效去噪的信息,高級視頻去噪算法對于移動電話來說太慢了:它們中的大多數甚至在臺式機上都不是實時的(第2部分)。
? 本文提出了一種高效的時域去噪方法。首先,我們提出一種新的非線性濾波器來處理空間變化的噪聲和運動補償誤差。其次,我們證明了一個優化的onetap時間遞歸濾波可以達到有競爭力的去噪質量。第三,我們設計的運動估計和過濾塊,使他們共享的大部分計算使用一個共同的圖像金字塔表示。
? 我們的算法可以在現代移動平臺上實現30+ fps高清分辨率的性能,去噪質量可與最先進的離線方法相媲美。我們將提出的算法集成到Google Pixel 2的圖像處理流水線中,該圖像處理流水線在公共DxO基準[1]上獲得了最高的視頻質量評級。
2. Background
? 視頻去噪是一個已經被廣泛研究的成熟課題,本文僅對相關工作進行簡要回顧。早期的方法擴展了非局部方法[2]、雙邊濾波[3]或小波去噪[4],但沒有明確考慮幀或目標運動。VBM3D[5]和VBM4D[6]通過時序塊對齊和分組對BM3D[7]進行擴展,[8]通過運動補償對3D DWT進行擴展。一些方法利用密集光流[9,10]進一步改進其結果。
? 注意,這些方法都不是為實時移動應用程序設計的。即使在桌面,大多數其他技術不能實現實時性能在CIF分辨率(更不用說高清),除非使用強大的GPU。更有效的方法是每幀使用一個對齊的塊[11,12,13]。盡管如此,他們需要更多的幀來收集足夠的塊,并且對于移動視頻錄制來說仍然太慢。
3. Real-Time Video Denoising
? 我們的算法有兩個主要階段:計算兩個連續幀之間的位移映射的對齊階段和合并階段,合并輸入幀和前一幀的輸出。合并的結果用作下一幀的合并階段的輸入之一。注意,我們的算法不執行空間過濾以節省計算時間,盡管金字塔框架隱含地使其成為一種時空方法。通過適當的對齊,即使是純遞歸時間濾波也可以收斂到一個非常低噪聲的結果[14]。
? 流程圖如圖1所示。將 (t) 時刻的幀分解為高斯和拉普拉斯金字塔。高斯金字塔用于對齊(第3.1節),而拉普拉斯金字塔用于合并(第3.2節)。合并后的金字塔被折疊以創建最終的輸出。我們使用CPU/GPU實現該算法,并在移動平臺上對真實噪聲進行建模(第3.3節)。
? 在以下章節中,(mathcal{G}^{g})表示高斯金字塔級 (g∈[0,…N_G)), (mathcal{L}^l)表示拉普拉斯金字塔級(lin[0,…, N_G]) ,和 (N_G)和(N_L)表示金字塔的高度,和給定金字塔層內的像素位置由 (p = (x, y)) 給出,每個拉普拉斯金字塔層的噪聲方差圖用 (n^l(p))表示。
3.1 Alignment
? 我們使用分層方法來計算具有大搜索范圍的位移圖 (A(p))。我們的算法是基于優化后的快速光流方法的[15]。我們還在每個 (mathcal{G}^g)上執行迭代反Lucas-Kanade搜索,但是將運動矢量計算限制在每個維度上步長為16像素的粗網格的頂點上。
? 在我們的實驗中,我們發現在更粗的金字塔層的整數精度的運動矢量足夠精確來初始化運動矢量搜索到下一個更細的層。因此,除了最后一層外,我們可以去除所有不必要的插值來計算亞像素對齊誤差。最后,為了增加運動搜索范圍,減少迭代次數,我們使用最粗層的水平和垂直的一維投影,通過互相關來估計全局運動。我們的優化方法比[15]中的參考方法快4倍。
3.2 Merging
? 在合并階段,我們將當前的拉普拉斯金字塔與前一幀的拉普拉斯金字塔合并。我們提出的算法的基礎是我們執行IIR預處理(遞歸濾波器),這意味著我們使用之前濾波后的結果,而不是未處理的前一幀。IIR公式具有較強的去噪性能,但存在潛在的偽影傳播缺陷。我們設計插值函數讓未對齊錯誤有更強的魯棒性,即使在如重影、不存在的特征或過度模糊等錯誤的情況下也不會引入。
? 我們首先使用位移圖來形成對齊的金字塔 (L^l_a),使用前面的金字塔 (L^l_p):
[mathcal{L}^l_a=mathcal{L}^l_p(p+A^l(p))
]
? 其中 (A^l) 是 (A)在 (l) 級縮放版本。
? 最終的金字塔層 (L^l_r) 作為當前層 (L^l_c) 和 (L^l_a) 的插值:
[mathcal{L}_{r}^{l}(mathbf{p})=mathcal{I}_{c}(mathbf{p}) cdot mathcal{L}_{c}^{l}(mathbf{p})+mathcal{I}_{p}(mathbf{p}) cdot mathcal{L}_{a}^{l}(mathbf{p})
]
? (mathcal{I}_c) 和 (mathcal{I}_p) 的插值函數適應于像素位置、值和噪聲級別。
? 為了更好地解釋插值函數是如何設計的,讓我們用 (mathcal{L}_{Delta}^{l}(mathbf{p})=mathcal{L}_{c}^{l}(mathbf{p})-mathcal{L}_{a}^{l}(mathbf{p})) 表示像素值的區別。通過重新整理公式2,我們得到:
[mathcal{L}_{r}^{l}(mathbf{p})=w_{c}^{l} cdot mathcal{L}_{c}^{l}(mathbf{p})+w_{p}^{l} cdotleft(mathcal{L}_{a}^{l}(mathbf{p})+mathcal{I} cdot mathcal{L}_{Delta}^{l}(mathbf{p})ight)
]
? 其中 (w^l_c)為 (mathcal{I}_c) 的最小值,(w^l_p) 為 (mathcal{I}_p) 的最大值,(mathcal{I})為插值因子,決定了當前像素和上一個像素的最終權重。我們將在下面詳細解釋這些值。
3.2.1 Interpolation bounds (w^l_c) and (w^l_p)
? 我們算法中的去噪強度限制定義為 (w^l_c) 和 (w^l_p)。如果我們設定 (w_{c}^{l} leq w_{p}^{l}),我們可以通過強調之前濾波的成分來獲得更強的去噪能力。請注意,因為它們是金字塔級的函數,我們可以選擇在某些頻段執行更強的去噪,在這些頻段,我們更有信心會有更少的由于未對齊錯誤的偽影。
? 由于平均,高頻特征,如紋理和邊緣,有時會得到平滑,即使對齊是幾個像素。為了彌補這個問題,我們對插值權值做了一個關鍵的修改:
[w_{c}^{l}+w_{p}^{l} geq 1
]
? 用一個因子有效地提高加權平均數略高于1,則可以恢復高頻特征保留去噪強度。
? 在實際應用中,我們對 (w^l_c) 和 (w^l_p) 進行了自適應調整。對于光線充足的場景,我們可以保留足夠的細節而不增強更高的頻率,而對于光線昏暗的場景,過度銳化就不那么明顯,我們可以安全地提高更高頻率的振幅。
3.2.2 Interpolation factor (mathcal{I})
? 設計 (mathcal{I}) 是我們算法的關鍵。該方法考慮了多種時空效應,以最小的偽影達到較好的去噪效果。這是通過考慮預期噪聲的數量和兩個金字塔值之間的實際差異來實現的。我們還考慮了補丁式對齊錯誤——對于在前一幀中沒有很好的匹配補丁的情況,我們需要更保守一些,以便不向當前幀引入任何偽影。
? (mathcal{I}) 的值總是在[0,1]的范圍內。從式3中可以看出,(mathcal{I}) 越高,去噪強度越低,前一幀的貢獻越小。我們計算兩個插值因子候選并選擇較大的一個: (mathcal{I}=max left(mathcal{I}_{e}, mathcal{I}_{Delta}ight)) ,其中 (mathcal{I}_e) 基于對齊誤差,(mathcal{I}_{Delta}) 基于像素區別。
? 在精度較好的區域,(mathcal{I}_?) 優于 (mathcal{I}_e)。對于這樣的像素,我們可以自信地在當前金字塔和以前的金字塔之間進行插值。然而,在對齊誤差較大的領域,(mathcal{I}_e) 將占主導地位:
[mathcal{I}_{e}=max left(1, A_{e}^{l}(mathbf{p}) cdot C_{e}ight)
]
? 其中 (A^l_e(p)) 為對齊階段的塊匹配誤差。調諧參數 (C_e) 設置了可接受的運動對準誤差的限度。(mathcal{I}_e) 還關閉了由于遮擋、物體進出幀等引起的粗對準誤差區域的去噪。
? 對于(mathcal{I}_?),一個流行的選擇是眾所周知的維納濾波器:
[mathcal{I}_{W ext {iener}}=frac{mathcal{L}_{Delta}^{l}(mathbf{p})^{2}}{mathcal{L}_{Delta}^{l}(mathbf{p})^{2}+n^{l}(mathbf{p})}
]
? 該方法已在多幀傅里葉和小波去噪中得到應用[13,16],在對準精度較高的情況下取得了較好的效果。然而,由于場景的動態性較高和視頻錄制的計算預算有限,通常情況下對齊置信度較低,而且由于對對齊誤差的預測,我們不得不更加保守。因此,我們提出了一種新的插值器,它也依賴于噪聲方差和像素值之間的差異,但有一個'sigmoid'形代替:
[mathcal{I}_{Delta}(mathbf{p})=left(1+exp ^{-left(left|mathcal{L}_{Delta}^{l}(mathbf{p})ight|-might)}ight)^{-1}
]
[m(mathbf{p})=1+C_{ ext {middle}} cdotleft(1-exp ^{-n^{l}(mathbf{p}) cdot C_{ ext {noise}}^{l}}ight)
]
? 其中m為中點(即插值因子為0.5 當 (|L^l_?((p)| = m(p))) 時,(C_{middle}) 為定義邊界彎曲(中間)點和 (C^l_{noise}) 是不同金字塔等級噪聲的縮放常數。
? 不同噪聲水平下 (mathcal{I}_{Wiener}) 和 (mathcal{I}_{?}) 值及絕對像素差見圖2。即使有低噪聲水平和高像素差異, (mathcal{I}_{Wiener}) 仍然允許前一個像素對結果做出顯著貢獻,并導致重影或過度平滑的偽影。
? 另一方面, (mathcal{I}_{?}) 有一個急劇的相變。它通過允許插值因子在比 (mathcal{I}_{Wiener}) 更大的值范圍內接近0,從而在更高的噪聲水平上應用更強的去噪。然而,即使對于非常高的噪聲水平,較大的像素差異也主要是由于錯誤的比對而不是噪聲造成的,并且 (mathcal{I}_{?}) 快速地阻止了來自前一幀的貢獻,以避免偽影。圖3清晰地顯示了提出的(mathcal{I}_{?})相對于 (mathcal{I}_{Wiener}) 抑制了偽影,同時在幀的其余部分保持了相同的去噪水平。
? 當所有的拉普拉斯金字塔層 ({mathcal{L}^l_r}) 都去噪之后,我們只需將它們折疊到輸出幀中,并將它們存儲為下一幀的({mathcal{L}^l_p})。
3.3 Implementation Details
? 我們使用CPU/GPU協同處理來實現我們的算法,并在桌面和使用高通驍龍835的谷歌Pixel 2上進行測試。我們在GPU上實現了用于金字塔創建和合并的OpenGLES 著色器,并使用Halide[17]在CPU上實現了對齊和噪聲估計。雖然只有CPU的實現仍然可以實現實時吞吐量,但我們的聯合CPU/GPU解決方案大大降低了功耗(- 66%)。我們發現現有的空間去噪器對于色度信道是足夠有效的,并且只能在luma信道上實現我們的算法。
3.3.1 Noise Estimation
? 實際噪聲特性隨傳感器和場景屬性[18]的不同而不同,正確的噪聲建模是降噪[13]的關鍵。我們通過在每一層的每一個像素提供噪聲映射 ({n^l}(p)) 來對噪聲方差進行建模。
? 在我們的目標平臺中,我們使用控制照明和相機設置來校準傳感器噪聲,并確定圖像處理階段(鏡頭陰影校正、白平衡、顏色空間轉換、色調映射、伽瑪校正等)如何轉換圖像和噪聲方差。在捕獲時,利用相機設置的輔助信息,將最粗的 (mathcal{G}^g)層反變換回原始的傳感器域,并對傳感器噪聲進行變換,得到({n^l}(p))。
4. Results
? 將我們的方法與最先進的方法相比較是另一個挑戰。我們開發了一個應用于移動商業產品的算法,由于非常嚴格的計算、功率和內存預算,因此其性能與學術解決方案相比可能會有些不足。另一方面,其他商業解決方案只能以最終的系統形式提供給我們,即我們不能通過向各種算法提供完全相同的輸入并對結果進行評估來執行標準測試。因此,我們提供了各種設置:實驗室測試、真實世界的評估以及商業基準協議。
? 在實驗室實驗中,我們在一個包含彩色棋盤靜態場景的三腳架上錄制了一個短視頻(74幀,1080p分辨率),并使用所有幀的時間平均值作為ground truth。除了我們自己的算法,我們還對這個視頻應用了三個有代表性的時域去噪算法:VBM3D [5], 3DWF[11,12],以及HDR+[13]。在表1中,我們列出了運行時間以及圖4中突出顯示的平坦區域的平均PSNR和時間方差。在經過評估的算法中,VBM3D獲得了最好的質量,但是使用強大的桌面CPU (HP z840工作站中的Intel Xeon E5)處理一幀需要幾秒鐘的時間。該方法在單線程Google Pixel 2 (Qualcomm Snapdragon 835)上實現了數量級的速度提升和可持續的實時性能。同時,我們的方法在峰值信噪比和時間方差方面都取得了很好的競爭結果。
? 圖5顯示了由Pixel 2記錄的低光視頻的真實世界樣本。請注意,這些比普通的實驗室測試更具挑戰性:手機是手持的,沒有三腳架,場景可以包括移動的物體,照明條件可能會有所不同。該方法可以在不影響細節的情況下,大大降低這些情況下的噪聲。
? 最后,我們在表2中列出了公共DxO基準測試結果。DxO實驗室在不同的場景(圖表、自然物體、自拍、團體拍攝……)和不同的照明條件(步行、平移、戶外、室內、非常低的光照條件、高動態范圍……)下進行實驗室和現場測試,并將幾種主觀和客觀指標結合在一起,形成一份報告[19,1]。它是最流行的手機相機質量評估基準。我們可以看到Pixel 2獲得了最高的視頻噪聲評分,并且比其他手機保存了更多的紋理,這些手機都有自己專有的空間和時間去噪解決方案。整體視頻評分在2017年所有高端智能手機中是最高的。
5. Reference
[1] “DxOMark mobile test protocol and scores,” www.dxomark.com/ dxomark-mobile-testing-protocol-scores/, Accessed: 2018-01-18.
[2] M. Mahmoudi and G. Sapiro, “Fast image and video denoising via nonlocal means of similar neighborhoods,” IEEE Signal Processing Letters, vol. 12, no. 12, pp. 839–842, 2005.
[3] E. P. Bennett and L. McMillan, “Video enhancement using per-pixel virtual exposures,” in ACM TOG, 2005, vol. 24, pp. 845–852.
[4] H. Malm, M. Oskarsson, E. Warrant, P. Clarberg, J. Hasselgren, and C. Lejdfors, “Adaptive enhancement and noise reduction in very low light-level video,” in ICCV, 2007.
[5] K. Dabov, A. Foi, and K. Egiazarian, “Video denoising by sparse 3d transform-domain collaborative filtering,” in 2007 15th European Signal Processing Conference, 2007, pp. 145–149.
[6] M. Maggioni, G. Boracchi, A. Foi, and K. Egiazarian, “Video denoising, deblocking, and enhancement through separable 4-D nonlocal spatiotemporal transforms,” IEEE TIP, vol. 21, no. 9, pp. 3952–3966, 2012. [7] K. Dabov, A. Foi, V. Katkovnik, and K. Egiazarian, “Image denoising by sparse 3-D transform-domain collaborative filtering,” IEEE TIP, vol. 16, no. 8, pp. 2080– 2095, 2007.
[8] S. Yu, M. O. Ahmad, and M. Swamy, “Video denoising using motion compensated 3-D wavelet transform with integrated recursive temporal filtering,” IEEE TCSVT, vol. 20, no. 6, pp. 780–791, 2010.
[9] C. Liu and W. T. Freeman, “A high-quality video denoising algorithm based on reliable motion estimation,” in ECCV, 2010, pp. 706–719.
[10] A. Buades, J. L. Lisani, and M. Miladinovic, “Patchbased video denoising with optical flow estimation,” IEEE TIP, vol. 25, no. 6, pp. 2573–2586, 2016.
[11] A. Kokaram, “3D Wiener filtering for noise suppression in motion picture sequences using overlapped processing,” in Signal Processing V, Theories and Applications, 1994, pp. 1780–1783.
[12] A. Kokaram, D. Kelly, H. Denman, and A. Crawford, “Measuring noise correlation for improved video denoising,” in ICIP, 2012, pp. 1201–1204.
[13] S. W. Hasinoff, D. Sharlet, R. Geiss, A. Adams, J. T. Barron, F. Kainz, J. Chen, and M. Levoy, “Burst photography for high dynamic range and low-light imaging on mobile cameras,” ACM TOG, vol. 35, pp. 192:1– 192:12, 2016.
[14] T. Hachisuka, S. Ogaki, and H. W. Jensen, “Progressive photon mapping,” ACM TOG, vol. 27, no. 5, pp. 130:1– 130:8, 2008.
[15] T. Kroeger, R. Timofte, D. Dai, and L. Van Gool, “Fast optical flow using dense inverse search,” in ECCV, 2016, pp. 471–488.
[16] V. Zlokolica, A. Pizurica, and W. Philips, “Waveletdomain video denoising based on reliability measures,” IEEE TCSVT, vol. 16, no. 8, pp. 993–1007, 2006.
[17] J. Ragan-Kelley, A. Adams, S. Paris, M. Levoy, S. Amarasinghe, and F. Durand, “Decoupling algorithms from schedules for easy optimization of image processing pipelines,” ACM TOG, vol. 31, no. 4, pp. 32:1–32:12, 2012.
[18] C. Liu, R. Szeliski, S. B. Kang, C. L. Zitnick, and W. T. Freeman, “Automatic estimation and removal of noise from a single image,” IEEE TPAMI, vol. 30, no. 2, pp. 299–314, 2008.
[19] F. Cao, F. Guichard, and H. Hornung, “Dead leaves model for measuring texture quality on a digital camera,” in Digital Photography, 2010, p. 75370.
總結
以上是生活随笔為你收集整理的手机实时视频去噪(Google Pixel2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GENMASK_ULL函数
- 下一篇: 百香果泡水的正确方法