本文來自Google AI博客,介紹了傳統(tǒng)去除馬賽克的方法,以及如何通過多幀畫面去除馬賽克的原理。但在手機(jī)上應(yīng)用這一技術(shù),需要面對不少挑戰(zhàn)。感謝快手圖像算法工程師章佳杰的翻譯。
一直以來, 對移動設(shè)備上的數(shù)碼相機(jī)來說, 數(shù)碼變焦 (非光學(xué)變焦) 就是一個(gè) "丑小鴨". 相對數(shù)碼單反的光學(xué)變焦能力而言, 移動設(shè)備上的數(shù)碼變焦拍攝的圖片質(zhì)量是無法與單反相機(jī)的光學(xué)變焦的圖片質(zhì)量相提并論的。傳統(tǒng)觀點(diǎn)認(rèn)為, 單反變焦鏡頭的復(fù)雜光學(xué)和機(jī)械結(jié)構(gòu)有其優(yōu)越性, 更緊湊的移動設(shè)備上的數(shù)碼相機(jī)即使加上聰明的算法也并不能取代之.
有了 Pixel 3 上全新的超分辨變焦 (Super Res Zoom) 技術(shù), 我們正在挑戰(zhàn)這一傳統(tǒng)觀點(diǎn)。
Pixel 3上的超分辨變焦技術(shù)優(yōu)于以前的數(shù)碼變焦技術(shù)是由于它可以直接將多幀圖像合成為一張高分辨率圖像,而不是像之前的數(shù)碼變焦技術(shù)僅僅基于單張圖片的裁剪并放大的策略。這種多幀圖像的合成技術(shù)可以得到細(xì)節(jié)大幅提升的結(jié)果, 幾乎可以與其他智能手機(jī)上 2x 光學(xué)變焦的結(jié)果相媲美。超分辨變焦意味著, 與先按下快門然后裁剪放大相比, 先捏指縮放畫面來變焦, 然后按下快門, 你能得到更多的細(xì)節(jié)。
2x 變焦對比: Pixel 2 vs. Pixel 3 上的超分辨變焦
數(shù)碼變焦的難點(diǎn)
數(shù)碼變焦是一項(xiàng)困難的工作, 因?yàn)橐粋€(gè)好的算法必須從一個(gè)低分辨率的圖像出發(fā), 可靠地 "重構(gòu)" 出丟失的細(xì)節(jié)。典型的數(shù)碼變焦是對單張圖像的一小部分進(jìn)行裁剪并放大而得到一張更大的圖像。傳統(tǒng)算法是用線性插值的方法來完成的,線性插值嘗試生成原圖中沒有的細(xì)節(jié), 但是這帶來了模糊, 或者稱之為 "塑料感", 缺乏細(xì)節(jié)和紋理。相對而言, 大多數(shù)現(xiàn)代的單圖放大算法使用了機(jī)器學(xué)習(xí)的手段 (包括我們早先的工作,RAISR)。這些方法能放大特定的圖像特征, 比如直線邊緣, 甚至可以合成一些紋理, 但是不能恢復(fù)出高分辨率的自然細(xì)節(jié)。雖然我們?nèi)耘f在用 RAISR 對圖像視覺質(zhì)量進(jìn)行增強(qiáng), 但是分辨率方面的提升 (至少對大多數(shù)變焦倍數(shù)比如 2-3x), 更多的來自于我們的多幀方法, 超分辨變焦技術(shù)。
色彩濾鏡陣列與去馬賽克
重建精細(xì)細(xì)節(jié)是非常困難的, 因?yàn)閿?shù)碼照片本身是不完整的, 一張數(shù)碼照片實(shí)際上是從一部分的顏色信息重建而來的, 這稱為去馬賽克的過程。在典型的消費(fèi)級數(shù)碼相機(jī)中, 相機(jī)傳感器元件僅能記錄光的強(qiáng)度, 而不是直接記錄顏色。為了捕捉場景中存在的真實(shí)顏色, 相機(jī)使用放在傳感器前面的色彩濾鏡陣列, 以便每個(gè)像素僅記錄單一顏色 (紅色, 綠色或藍(lán)色),這些濾鏡以拜耳模式(Bayer Pattern)排列, 如下圖所示。
拜耳色彩濾鏡馬賽克陣列示意圖:每一個(gè) 2x2 的像素組通過一個(gè)特定的色彩濾鏡記錄光線的顏色,兩個(gè)綠色像素 (因?yàn)槿说难劬G色的光線更敏感), 一個(gè)紅色像素, 一個(gè)藍(lán)色像素. 這種模式不斷重復(fù), 填滿整個(gè)畫面。
然后相機(jī)內(nèi)部的處理流程必須重建真實(shí)顏色和所有像素的所有細(xì)節(jié)。(注:值得注意的是, 在某種程度上這個(gè)情況與我們的視覺系統(tǒng)相似。在人類和其他哺乳動物的眼睛中, 不同的視錐細(xì)胞對不同的顏色敏感, 最后大腦填充了剩下的細(xì)節(jié)以重建完整的圖像。) 算法通常會從附近像素中的顏色進(jìn)行插值, 對缺失的顏色信息進(jìn)行最佳猜測, 以此來完成去馬賽克的過程, 這意味著 RGB 數(shù)碼照片的三分之二像素實(shí)際上是通過重建得到的!
去馬賽克的過程, 使用了相鄰像素來重建丟失的顏色信息。
在最簡單的情形中, 去馬賽克可以通過對相鄰像素值進(jìn)行平均來實(shí)現(xiàn)。雖說大多數(shù)真正的去馬賽克算法比這更為復(fù)雜, 但受限于本質(zhì)上的信息不完整, 這些算法仍然會導(dǎo)致不完美的結(jié)果和偽像。這種情況即使是大畫幅的數(shù)碼單反相機(jī)也存在, 但是它們的傳感器和鏡頭更大, 在典型情況下, 單反能比移動設(shè)備相機(jī)記錄更多的細(xì)節(jié)。
如果你在移動設(shè)備上捏指縮放進(jìn)行變焦 (數(shù)碼變焦), 算法不得不從附近像素再一次插值來構(gòu)成更多信息, 情況會變得更差。但 (在成像過程中) 并非所有信息都丟失了, 即使受到移動設(shè)備光學(xué)系統(tǒng)限制, 也可以使用連拍攝影和多幀圖像融合來實(shí)現(xiàn)超分辨率。
從連拍攝影到多幀超分
雖然單幅圖片不能提供足夠的信息來填充缺失的顏色, 但我們可以從連續(xù)拍攝的多幀圖像中獲取一些缺少的信息。拍攝并融合多幀連續(xù)照片的過程稱為連拍攝影,在 Nexus 和 Pixel 手機(jī)上成功應(yīng)用的谷歌 HDR+ 算法就使用了多幀的信息, 使手機(jī)拍攝的照片能達(dá)到更大傳感器的畫質(zhì)水平。我們是否可以采用類似的方法來提高圖像分辨率?
其實(shí)這個(gè)方法已經(jīng)有十多年的歷史, 在包括天文學(xué)領(lǐng)域。其基本概念被稱為 "drizzle", 對從略微不同的位置拍攝的多個(gè)圖像進(jìn)行融合, 在 2x 低放大率下或 3x 而照明條件良好的情況下, 可以產(chǎn)生相當(dāng)于光學(xué)變焦的分辨率。這就是多幀超分辨率算法, 通常的思路是將低分辨率連拍攝影的圖像直接進(jìn)行對齊, 然后合并到所需 (更高) 分辨率的像素網(wǎng)格上。以下是理想化的多幀超分辨率算法如何工作的示例:
標(biāo)準(zhǔn)去馬賽克過程 (最上一排) 需要對確實(shí)的顏色進(jìn)行差值。與此相比, 理想情況下, 每一幀圖像水平或垂直移動一個(gè)像素, (多幀超分辨率算法) 可以從這些圖像獲得信息來填充缺失的顏色。
在上面的例子中, 我們拍攝了 4 幀, 其中三幀正好移動了一個(gè)像素, 分別是水平方向, 垂直方向, 水平和垂直兩個(gè)方向。這樣的話, (利用這些移動了的圖像上的像素值) 所有缺失的顏色都會得到補(bǔ)充, 根本不需要任何去馬賽克的過程! 實(shí)際上, 一些數(shù)碼單反相機(jī)就支持這種操作, 但只有當(dāng)相機(jī)在三腳架上時(shí), 傳感器/光學(xué)器件才會主動移動到不同位置,這有時(shí)被稱為 "microstepping"。
多年來, 這種用于更高分辨率成像的 "超分辨率" 方法的實(shí)際應(yīng)用仍主要限于實(shí)驗(yàn)室用途, 或用于某些受控環(huán)境下, 傳感器和拍攝主體之間可以對齊, 人們可以控制或嚴(yán)格限制它們之間的移動。例如, 在天文攝影中, 望遠(yuǎn)鏡是固定的, 望遠(yuǎn)鏡拍攝的天空區(qū)域是移動的, 而天空的移動是可預(yù)測的。但在像現(xiàn)代智能手機(jī)這樣廣泛使用的成像設(shè)備上, 在需要放大的場合 (如移動相機(jī)數(shù)碼變焦) 實(shí)際使用超分辨率算法, 仍然大部分情況下都無法實(shí)現(xiàn)。
部分原因是, 為了使算法正常工作, 需要滿足某些條件。首先, 也是最重要的一點(diǎn)是, 鏡頭分辨率要比使用的傳感器本身更高 (相比之下, 你可以想象這樣一種情況, 即鏡頭的設(shè)計(jì)非常糟糕, 以至于采用更好的傳感器不會帶來任何好處)。這種特性通常帶來我們不喜歡的圖像瑕疵,也就是數(shù)碼相機(jī)中的混疊現(xiàn)象。
圖像混疊
當(dāng)相機(jī)傳感器無法忠實(shí)地記錄場景中存在的所有圖案和細(xì)節(jié)時(shí), 會產(chǎn)生混疊效應(yīng)。混疊的一個(gè)很好的例子是摩爾紋, 有時(shí)可以在電視上看到, 由于不幸地選擇了一件條紋衣服, 拍攝的畫面中有明顯的摩爾紋 (https://www.youtube.com/watch?v=jXEgnRWRJfg)。此外, 當(dāng)物體在場景中移動時(shí), 物理特征 (例如桌子的邊緣) 的混疊效果會發(fā)生變化。你可以在以下連拍序列中觀察到這一點(diǎn), 其中, 連拍序列期間相機(jī)的輕微運(yùn)動會產(chǎn)生時(shí)變混疊效果:
左圖: 高分辨率單圖, 桌子的邊緣與高頻模式的背景。右圖: 連拍序列中的不同幀。不同幀之間, 混疊效應(yīng)和摩爾紋現(xiàn)象很明顯, 像素看起來在跳動, 產(chǎn)生了不同的彩色條紋。
然而, 這種現(xiàn)象對我們來說是一種幸運(yùn)。如果我們分析產(chǎn)生的條紋, 可以知道它提供了不同像素的顏色和亮度值信息, 正如前一節(jié)所述,我們可以借此實(shí)現(xiàn)超分辨率。雖說如此, 許多挑戰(zhàn)仍然存在. 因?yàn)閷?shí)際上用戶會手持手機(jī), 拍攝一組連拍序列, 超級分辨率算法需要在任何情況下都能奏效。
利用手震進(jìn)行實(shí)際超分辨率合成
如前所述, 一些數(shù)碼單反相機(jī)提供了特殊的三腳架超分辨率模式, 其工作方式與我們到目前為止所描述的方式類似。這些方法依賴于相機(jī)內(nèi)部的傳感器和光學(xué)器件的物理移動, 但是這些方法需要相機(jī)完全穩(wěn)定, 而這在移動設(shè)備中是不切實(shí)際的。移動設(shè)備幾乎總是手持的,這似乎給移動平臺上的超分辨率成像制造了一個(gè)障礙。
然而, 我們通過利用人手的自然動作來克服這種困境。當(dāng)我們用手持相機(jī)或手機(jī)拍攝一連串照片時(shí), 每一幀的圖片之間總會有一些移動,光學(xué)防抖 (OIS) 系統(tǒng)可以補(bǔ)償大的相機(jī)運(yùn)動, 比如相隔 1/30 秒的連續(xù)幀之間通常為 5-20 像素, 但無法完全消除更快, 更低幅度, 自然的手震。這種手震所有人都有 (即使是那些 "鐵手" 也會有輕微的手震)。當(dāng)使用高分辨率傳感器的手機(jī)拍攝照片時(shí), 手震的幅度僅為幾個(gè)像素。
對多幀圖像全局對齊, 裁剪之后, 很明顯能看出手震效應(yīng)。
為了利用手震, 我們首先需要將圖像對齊在一起。我們選擇連拍中的單幀圖像作為 "基礎(chǔ)" 或參考幀, 并相對于它對齊其余每幀。對齊后, 圖像大致組合在一起, 如前文所示。當(dāng)然,手震不太可能恰好把圖像移動單個(gè)像素, 因此我們在將顏色填入?yún)⒖紟南袼鼐W(wǎng)格之前, 需要在每個(gè)新幀中的相鄰像素之間進(jìn)行插值。
即使當(dāng)設(shè)備完全穩(wěn)定 (例如放置在三腳架上) 而不存在手震時(shí), 我們?nèi)匀豢梢酝ㄟ^強(qiáng)制 "搖晃" 相機(jī)來強(qiáng)制 OIS 模塊在鏡頭之間輕微移動來模擬自然手震。這種動作非常小, 不會干擾正常照片,但你可以這樣來觀察到, 將手機(jī)完全靜止, 例如將其按在窗戶上, 然后在取景器里捏指縮放到最大放大率, 在 Pixel 3 上自行觀察, 在遠(yuǎn)處的物體中可以看到一個(gè)微小但連續(xù)的橢圓運(yùn)動, 如下圖所示。
克服超分辨率的難點(diǎn)
我們上面給出的理想過程的描述聽起來很簡單, 但超分辨率并不那么容易。有很多原因?qū)е滤鼪]有被廣泛用于手機(jī)等消費(fèi)產(chǎn)品, 我們需要在算法上進(jìn)行重要的創(chuàng)新。難點(diǎn)包括:
1. 即使在良好的照明條件下, 連拍序列中的單個(gè)圖像也會產(chǎn)生噪聲。對一個(gè)實(shí)用的超分辨率算法來說, 算法需要知道這種噪聲, 并盡量忽略這些噪聲。我們不希望得到一個(gè)高分辨率的帶噪聲圖像, 我們的目標(biāo)是既增加分辨率又產(chǎn)生更少噪聲的結(jié)果。
2. 連拍圖像之間的運(yùn)動不僅限于相機(jī)的運(yùn)動。場景中可能會有復(fù)雜的運(yùn)動, 例如風(fēng)吹過的樹葉, 在水面上移動的漣漪, 汽車, 移動的人, 人也會改變他們的面部表情, 或者火焰的閃爍, 甚至有一些不能進(jìn)行單一的運(yùn)動估計(jì)的情況, 有些物體是透明的或多層的, 例如煙霧或玻璃. 完全可靠的局部對齊通常是不現(xiàn)實(shí)的, 即使運(yùn)動估計(jì)不完美, 超分辨率算法也需要運(yùn)算正確。
3. 由于大部分運(yùn)動是隨機(jī)的, 即使存在良好的對齊, 數(shù)據(jù)在圖像的某些區(qū)域可能是密集的, 而在另一些區(qū)域則是稀疏的。超分辨率的關(guān)鍵是一個(gè)復(fù)雜的插值問題, 而算法的目標(biāo)是在整個(gè)像素網(wǎng)格的所有部分都中生成更高分辨率的圖像, 數(shù)據(jù)的不規(guī)則散布使得這項(xiàng)任務(wù)變得更具有挑戰(zhàn)性。
所有上述困難似乎使現(xiàn)實(shí)世界的超分辨率在實(shí)踐中不可行, 或者至多僅限于靜態(tài)場景和放置在三腳架上的相機(jī). 借助 Pixel 3 上的超分辨變焦技術(shù), 我們開發(fā)出一種穩(wěn)定而準(zhǔn)確的方法, 用于連拍照片分辨率提升, 該方法使用自然的手部動作, 并且足夠穩(wěn)健且高效, 可以部署在手機(jī)上。
以下是我們對其中一些困難是如何克服的:
1. 為了有效地合并連拍中的幀, 并為每個(gè)像素生成紅綠藍(lán)像素值值, 從而不需要去馬賽克, 我們開發(fā)了一種在幀之間融合信息的方法。該方法自適應(yīng)地考慮了圖像的邊緣信息。具體來說, 我們分析輸入幀, 調(diào)整融合的方法, 在增加細(xì)節(jié)和分辨率, 與減少噪聲和平滑圖像之間做權(quán)衡。我們通過沿著明顯邊緣的方向合并像素, 而不是跨越邊緣來實(shí)現(xiàn)這一點(diǎn)。實(shí)際效果是我們的多幀方法在降噪和細(xì)節(jié)增強(qiáng)之間提供了最佳的平衡。
左圖: 降噪和超分辨之間沒有達(dá)到最優(yōu)權(quán)衡。右圖: 降噪和超分辨之間更好的權(quán)衡。
2. 為了使算法可靠地處理具有復(fù)雜局部運(yùn)動 (人, 車, 水或樹葉移動) 的場景, 我們開發(fā)了一種魯棒的模型, 用于檢測對齊誤差并將其減小。我們選擇一個(gè)幀作為 "參考圖像", 并當(dāng)我們確定找到了正確的相應(yīng)特征時(shí)才將來自其他幀的信息合并到其中。通過這種方式,我們可以避免諸如 "重影" 或運(yùn)動模糊之類的偽像, 以及圖像被錯(cuò)誤融合的部分。
一個(gè)快速移動巴士的場景。左圖: 沒有使用魯棒融合模型。右圖: 使用了魯棒融合模型。
讓手機(jī)攝影更上一層樓
去年的人像模式, 以及之前的 HDR+ 算法, 展示了手機(jī)攝影可以達(dá)到的優(yōu)秀程度。今年, 我們在變焦方面做出了同樣的工作。這是推動計(jì)算攝影學(xué)發(fā)展的又一進(jìn)步, 同時(shí)縮小了手機(jī)攝影和數(shù)碼單反相機(jī)之間的畫質(zhì)差距。這里有一份包含原始視角圖像的圖集, 以及采用超分辨變焦技術(shù)拍攝的圖像 (https://photos.app.goo.gl/E8LZW9LRBdFV8kXD8)。請注意, 此圖集中的超分辨變焦圖像未被裁剪, 拍攝的時(shí)候使用捏指縮放直接在手機(jī)上進(jìn)行拍攝。
左圖: Pixel 2 上裁剪并進(jìn)行 7x 放大的圖像。右圖: Pixel 3 上同樣視角使用超分辨變焦技術(shù)的圖像。
超分辨率的想法比智能手機(jī)的出現(xiàn)早了至少十年,幾乎同樣早的, 這種技術(shù)就通過電影和電視的虛構(gòu)情節(jié)出現(xiàn)在公眾面前。在學(xué)術(shù)期刊和會議上, 有成千上萬篇論文對此進(jìn)行研究,而現(xiàn)在, 它已經(jīng)成為現(xiàn)實(shí), 就在你手中的 Pixel 3 里。
-
圖像
+關(guān)注
關(guān)注
2文章
1084瀏覽量
40468 -
馬賽克
+關(guān)注
關(guān)注
0文章
14瀏覽量
7051 -
Pixel
+關(guān)注
關(guān)注
1文章
237瀏覽量
10011
原文標(biāo)題:Pixel 3的超分辨變焦技術(shù)
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論