Google 發文詳解 Pixel 3 中的拍照技術──Super Res Zoom

作者 | 發布日期 2018 年 10 月 17 日 13:45 | 分類 3C , Google , 手機 follow us in feedly


前些天,Google 在台發表了全新 Pixel 3 / Pixel 3XL 手機,其最新的 AI 拍照功能讓人驚豔。Night Sight 夜間拍照效果壓過 iPhone XS;Top Shot 功能可以連續拍攝多張 HDR+ 照片,自動去掉抖動、眨眼的廢片,推薦效果最好的一張;Photo Booth 模式可以在檢測到人臉有微笑或者有趣的表情時自動拍照,幫你留下珍貴的一刻;Super Res Zoom 透過鏡頭的變焦功能拍攝具備高解析度的照片。

Super Res Zoom 可以說是此次幾項全新 AI 拍照功能中最難理解的一個,也讓不少業內人士感到好奇。幸而,Google 計算成像領域首席科學家 Peyman Milanfar 和軟體工程師 Bartlomiej Wronski 在 Google Blog 特意發表一篇文章,講述了 Super Res Zoom 技術實現的全部過程。以下對原文進行不改變原意的翻譯和編輯。

一直以來,使用演算法(而不是鏡頭)來進行數位變焦的行動裝置相機就像是「醜小鴨」。數位變焦的圖像品質難與數位單眼相機的光學變焦相提並論,因此傳統觀點認為,大型相機的複雜光學機制無法被更緊湊的行動裝置相機和聰明的演算法替代。

憑藉 Pixel 3 上新的 Super Res Zoom 功能,我們正在挑戰這一概念。

之前,數位變焦技術主要是升級單個圖像中的畫素,Pixel 3 中的 Super Res Zoom 技術則不然。Super Res Zoom 的做法是將許多幀圖像直接合併以產生更高解析度的圖像,這個方法能大大改善圖片的細節,能許多其他智慧手機上的 2 倍光學變焦鏡頭大致相當。

▲ 2 倍變焦:Pixel 2 vs. Super Res Zoom Pixel 3。

數位變焦的挑戰

數位變焦是困難的。因為一個好的演算法期望從低解析度的圖像開始,並可靠地「重建」缺失的細節──在典型的數位變焦中,單個圖像的一小部分被放大,生成一個大得多的圖像。傳統上,這是透過線性插值方法來實現的,這種方法試圖重新創建在原始圖像中丟失的資訊,但會使得圖像模糊,缺乏紋理和細節。基於單圖像來提升圖像品質一般採用機器學習的方法(包括我們自己的早期工作 RAISR)。這些圖像放大了一些特定的圖像特徵,如直線邊緣,甚至可以合成某些紋理,但無法恢復自然的高解析度細節。雖然我們仍然使用 RAISR 來提高圖像的視覺品質,不過 Super Res Zoom 創新性地採用了多幀圖像方法。

彩色濾鏡陣列和去馬賽克

重構細節尤其困難,因為數位照片已經不完整了。透過一種叫做去馬賽克(Demosaicing)的過程,我們可以從部分顏色資訊中重構丟失的資訊。在典型的消費相機中,相機感測器元件只用於測量光的強度,而不是直接測量光的顏色。為了捕捉場景中呈現的真實顏色,鏡頭使用放置在感測器前面的顏色濾鏡陣列,以便每個畫素只測量一種顏色(紅色、綠色或藍色)。如下圖所示,它們以拜耳模式排列。

▲ 拜耳馬賽克彩色濾鏡:每 2×2 組畫素捕獲由特定顏色過濾的光──兩個綠色畫素(因為我們的眼睛對綠色更敏感),一個紅色,一個藍色。這種模式在整個圖像中重複出現。

然後,在給定部分資訊的情況下,鏡頭處理管道必須重構所有畫素的真實顏色和所有細節。去馬賽克過程的第一步是要猜測丟失的顏色資訊,通常會選取附近畫素的顏色進行插值,這意味著 RGB 數位圖像的三分之二實際上是重建的!

▲ 去馬賽克利用相鄰畫素重建丟失的顏色資訊。

在最簡單的形式中,這可以透過對相鄰值進行平均來實現。大多數真正的解謎演算法都比這更複雜,但由於只能得到部分資訊,去馬賽克的效果仍然不完美而且有很重的人工痕跡。雖然大尺寸的單眼相機也存在這種情況,但它們更大的感測器和更大的鏡頭能比一般的行動相機捕捉到更多的細節。

如果你在行動裝置上進行縮放變焦,情況會變得更糟;然後,演算法被迫透過附近的畫素進行插值來彌補更多的資訊。然而,這也不是一無是處,因為即使受到行動裝置光學的限制,高速連拍(Burst Photography)以及多幅圖像的融合可以用來達到超解析度。

從高速連拍(Burst Photography)到多幀超解析度

雖然單個幀不能提供足夠的資訊來填充缺失的顏色,但是我們可以從高速連續拍攝的多個圖像中獲得一些缺失的資訊。Google 的 HDR+ 演算法在 Nexus 手機和 Pixel 手機上得到了成功應用,它已經利用多幀的資訊使手機照片達到了更大感測器所期望的質量水平,是否可以使用類似的方法來提高圖像解析度?

多幀超解析度的概念出現已經有十多年歷史了(在天文攝影上,類似的概念被稱為「drizzle」),透過捕捉和組合多個細微位置差異的照片,可以產生相當於光學變焦的效果,至少在 2-3 倍的低倍變焦和良好的照明條件下。在這個過程中,一般的想法是將低解析度的圖像部分直接對齊並合併到一個理想(更高)解析度的網格上。下面是一個理想化的多幀超解析度演算法如何工作的例子:

▲ 與頂部的需要插值的去馬賽克過程相比,用多個圖像填充,每個圖像水平或垂直移動一個畫素更為理想。

在上面的範例中,我們捕獲了 4 個幀,其中 3 個幀精確地移動了一個畫素:從水平方向、垂直方向以及同時從水平和垂直方向。所有的洞都會被填滿,根本就不需要任何去馬賽克。一些單眼相機支援這種操作,但只有當相機在三腳架上,感測器 / 鏡頭能進行移動,這有時被稱為「微步」(microstepping)。

多年來,這種「超級解析度」的高解析度成像方法的應用仍然主要局限於實驗室,或以其他方式控制的設置中。在這些設置中,感測器和主體是對齊的,它們之間的移動要麼是有意控制的,要麼是受到嚴格限制的。例如,在天文成像中,用固定的望遠鏡來拍攝星空的移動軌跡。但在當今智慧手機等廣泛使用的成像裝置及應用程式中,超級解析度的實際應用仍是可望而不可及的。

多幀超解析度功能需要滿足一些條件。首先,也是最重要的一點,鏡頭需要比所使用的感測器更好地處理細節(相反地,你可以想像這樣一個情況,鏡頭設計得很差,添加一個更好的感測器沒有任何好處)。數位相機有一種常見但不受歡迎的效果,叫做混疊(aliasing)。

圖像混疊

當鏡頭感測器不能忠實地表示場景中的所有模式和細節時,就會發生混疊。混疊的一個很好的例子是摩爾波紋( Moiré patterns;又譯莫列波紋),當兩種同樣的圖案以一定的角度重疊會出現的現象。

▲ 由兩組平行線產生的摩爾波紋,一組垂直,另一組傾斜 5°

此外,當物體在場景中移動時,對物理特徵(如表邊)的混疊效果也會發生變化。您可以在以下連拍序列中觀察到這一點,在連拍序列中,相機的輕微運動會產生時變的混疊效果:

左圖:高解析度下桌子邊緣的單幅圖像,右圖:連拍產生的不同圖像幀。混疊效果和雲紋效果在不同的幀之間是可見的──畫素似乎跳來跳去,產生不同的彩色圖案。

但是,我們也能因禍得福,如果分析混疊效果產生的模式,就會得到顏色和亮度值的多樣性,以實現超解析度。儘管如此,要在手持行動裝置和任何連拍序列中達到高解析度,依然有諸多挑戰存在。

手部移動達到超解析度

如前所述,一些單眼相機提供了特殊的三腳架超解析度模式,類似於我們目前描述的方式。這些方法依賴於相機內感測器和光學器件的物理運動,但需要相機完全穩定。然而,這在行動裝置上是不切實際的,因為它們幾乎總是手持的。

然而,藉助手部運動方案,我們將這個最大的難點變成了我們的優勢。當我們用手持相機或手機拍攝一組照片時,畫面之間總會有一些運動。光學圖像穩定(OIS)系統可以補償相機的大運動──通常間隔 1/30 秒以內的 5-20 畫素移動──但不能完全消除更快、更低的幅度、自然的手震。當使用高解析度感測器的手機拍照時,這種手抖的幅度只有幾個畫素。

▲ 在進行處理後,連拍中手震的結果。

為了利用手部抖動的優勢,我們首先需要將高速連拍的照片排列在一起,我們選擇高速連拍圖像中的單個圖像做為「基」或參考幀,並對齊與之相關的所有其他幀。對齊後,這些圖像大致結合在一起。當然,手部運動不太可能將圖像精確地移動單個畫素,因此我們需要在每個新捕獲的幀中插入相鄰畫素,然後將顏色注入基幀的畫素網格中。

當裝置是完全穩定的(例如放置在三腳架上)而沒有出現手部運動時,我們仍然可以透過故意「抖動」相機來達到模擬自然手部運動的目的,透過強迫 OIS 模組在鏡頭之間輕微移動。這個移動非常小,選擇的時候不會干擾正常的照片──但是你可以在 Pixel 3 上自己觀察它,你可以把手機完全固定,比如把它按在窗口上,或者最大限度地縮放取景器。如下圖所示,可以觀察遠處物體微小但連續的橢圓運動。

克服超解析度的挑戰

以上是我們對理想過程的描述,聽起來很簡單,但是要實現超解析度並不是那麼容易。有很多原因導致沒有被廣泛應用到手機等消費產品中,例如其需要大量的演算法創新。挑戰包括:

  • 即使在良好的光照條件下,連拍的單個圖像也是有噪聲的。一個實用的超解析度演算法需要意識到這種噪音,並正確工作。我們不想只得到更高解析度的噪聲圖像──我們的目標是既提高解析度,又能產生更小的噪聲。

▲ 左:在良好的光照條件下拍攝的單幀圖像,由於曝光不足,仍然可能包含大量的噪聲。右:連拍處理後合併多幀的結果。

  • 在連拍的圖像之間的運動不僅局限於相機的運動,可能有復雜的場景中運動如風吹動的樹葉、水面漣漪、汽車、人的臉部變化、火焰的閃爍──甚至一些不能被視為獨立運動的如吸菸。一般來說,完全可靠和局部對準是不可能的,因此即使運動估計不完美,一個好的超解析度演算法也要能用。
  • 因為大多數運動是隨機的,即使有良好的對齊,數據可能在圖像的某些區域密集,而在其他區域稀疏。超解析度的關鍵是一個複雜的插值問題,因此數據的不規則傳播使得在網格的各個部分生成更高解析度的圖像具有挑戰性。

以上所有的挑戰似乎都使得超解析度在實踐中不可行,或者充其量只能局限於靜態場景和放在三腳架上的相機。利用 Pixel 3 上的 Super Res Zoom,我們開發了一種穩定、精確的連拍解析度增強方法,它使用自然的手部運動,並且夠強大,可以部署在手機上。

以下是我們解決上述挑戰的方法:

  • 為了在高速連拍(Burst Photography)情況下有效地合併幀,並為每個畫素生成一個紅色、綠色和藍色的值,而不需要進行除噪,我們開發了一種跨幀集成訊息的方法,該方法考慮了圖像的邊緣,並相應地進行調整。具體地說,我們分析輸入幀並調整我們如何將它們組合在一起,權衡增加的細節、解析度、噪聲抑制和平滑。我們透過沿著明顯邊緣的方向合併畫素,而不是跨越它們來實現這一點。效果是我們的多幀方法提供了噪音減少和細節的增強之間的最佳平衡。
  • 為了使演算法能夠可靠地處理複雜的局部運動場景(人、車、水或樹葉移動),我們開發了一個強健性模型來檢測和減輕對齊誤差。我們選擇一幀做為「參考圖像」,並只有當我們確信我們找到了正確的對應特徵才將來自其他幀的訊息合併到它。透過這種方式,我們可以避免像「重影」或運動模糊,或者是錯誤地合併圖像的部分。

▲ 一輛快速行駛的公共汽車的連拍圖像。左:在沒有強健性模型下合併。右:有強健模型下合併。

推動行動攝影技術的發展

去年 Google 推出的人像模式(Portrait mode),以及之前 HDR+ pipeline 都展示了行動攝影的優越性。今年,我們從變焦下手。Super Res Zoom 能提高計算機攝影技術水平,同時縮小移動攝影和數位單眼之間的質量差距。

超解析度的概念比智慧手機的出現早了至少 10 年。在幾乎同樣長的時間裡,它也透過電影和電視在大眾的想像中存在,它也是學術期刊和學術會議上成千上萬篇論文的主題。現在,在你手掌中的 Pixel 3 裡,超解析度真實存在。

如何最大限度地利用 Super Res Zoom?

這裡有一些關於如何在 Pixel 3 的手機上使用 Super Res Zoom 的技巧:

  • 縮放再縮放,或者使用+按鈕增加縮放的離散步驟。
  • 雙擊預覽以快速切換縮放和縮小。
  • Super Res Zoom 可以在所有縮放係數下工作,不過出於性能原因,它只觸發了 1.2 倍以上。
  • Pixel 廣角鏡頭的光學解析度有基本的限制。因此為了最大限度地利用縮放,請保持放大係數適中。
  • 避免快速移動的物體。Super Res Zoom 能正確捕捉它們,但你不可能得到更高的解析度。

 

(本文由 雷鋒網 授權轉載;首圖來源:科技新報)

延伸閱讀: