谷歌工程師撰文詳解 Night Sight 模式:如何化腐朽為神奇?
今年的谷歌 Pixel 3 系列新增了“夜視” (Night Sight)模式,能夠大幅提升手機在弱光場景下的成像效果,近日谷歌工程師 Marc Levoy 和 Yael Pritch 也撰文詳解了 “夜視” 模式的原理和應用技巧。
以下為“谷歌開發者”官方公眾號編譯原文( ofollow,noindex">原文連結 ):
“夜視” 模式是 Pixel 相機應用的一項新功能,可讓您在弱光條件下,甚至連肉眼都看不太清的昏暗條件下拍攝清晰的照片。“夜視” 模式適用於三代 Pixel 手機的主攝像頭和自拍攝像頭,且無需藉助三腳架或閃光燈。在本文中,我們將探討為何在弱光場景下拍照頗具挑戰,還將討論計算攝影和機器學習技術,這些技術大都基於造就 “夜視” 功能的 HDR+ 進行構建。
▲ 左圖為 iPhone XS 拍攝,右圖為 Pixel 3“夜視” 模式拍攝
為何難以在弱光下攝影?
有過在昏暗場景下攝影經歷的人對影象噪聲定然不陌生,這種噪聲看上去就像是畫素間亮度的隨機變化。對於配備小型鏡頭與感測器的智慧手機相機而言,主要的噪聲源是光子進入鏡頭後在數量上產生的自然變化,我們稱之為散粒噪聲。每個相機都會遭受這個問題,即使其擁有完美的感測器電子元件,也依舊無法避免。然而,這些電子元件並非完美無缺,因此噪聲的第二來源便是在將擊中每個畫素的光線所產生的電子電荷轉換為數字時引入的隨機錯誤,我們稱其為讀出噪聲。上述兩種噪聲和其他隨機噪聲源共同構成整體的信噪比 (SNR),該比值能夠衡量影象從這些亮度變化中的突顯程度。所幸,SNR 會隨曝光時間平方根的增加而增大(或變化更快),所以曝光時間越久,照片就會越清晰。但您很難保持足夠長的時間以在昏暗條件下拍攝一張好照片,而且您的拍攝物件可能也不會一直保持靜止不動。
2014 年,我們推出一種計算攝影技術 HDR+,該技術可通過捕捉連拍幀、在軟體中進行校準並將之合併,進而改善此種情況。HDR+ 的主要目的是改進動態範圍,這意味著我們將能拍攝呈現各類亮度的場景(如日落或逆光人像)。各代 Pixel 手機均使用 HDR+。事實證明,合併多張照片還可減少散粒噪聲和讀出噪聲的影響,因此能在昏暗場景中提高 SNR。為讓您在手抖和拍攝物件移動的情形下也能拍攝出清晰的照片,我們採用短曝光方案。我們還會捨棄那些校準不精的幀。這便使得 HDR+ 可在收集更多光線的同時生成清晰的影象。
黑暗到底有多黑?
但是,若捕捉和合並多幀能在弱光條件下生成更清晰的照片,為何不使用 HDR+ 來合併眾多幀,以便我們有效看清黑暗中的拍攝物件呢?好吧,讓我們首先定義 “黑暗” 一詞。攝影師談論場景的亮度級時,通常以勒克斯 (lux) 作為衡量單位。從技術上講,勒克斯是物體表面每單位面積所接收的光量,以每平方米流明作為衡量單位。您可以參閱下面的快速查看錶,以瞭解不同的勒克斯等級:
在亮度為 30 勒克斯的場景下拍攝單張照片時,智慧手機的相機開始出現拍攝問題。在亮度低至 3 勒克斯的場景下,手機可在拍照及合併多張照片(正如 HDR+ 一樣)時表現出色,但在更昏暗的場景下便會表現失常(詳見下文),僅能依賴閃光燈改善其拍攝效果。而憑藉 “夜視” 功能,我們的目標是在僅按一次快門且無 LED 閃光燈的情況下,使用智慧手機改善相機在 3 勒克斯和 0.3 勒克斯亮度之間的拍照效果。出色發揮此功能需滿足幾個關鍵條件,其中最重要的便是捕獲更多光子。
捕捉資料
雖然延長每幀的曝光時間可提高 SNR 並生成更清晰的照片,但很可惜,這會帶來兩個問題。首先,Pixel 手機上預設的拍照模式使用零快門延時 (ZSL) 協議,本質上便會限制曝光時間。您一開啟相機應用,應用便開始捕捉影象幀,並將其儲存於迴圈緩衝區中,從而不斷清除舊影象幀,為新影象幀騰出儲存空間。當您按下快門按鈕時,相機會將最新拍攝的 9 或 15 幀影象傳送至我們的 HDR+ 或 Super Res Zoom 軟體。這意味著您能準確捕捉到自己想要的時刻,此協議也因此得名 “零快門延時”。然而,由於我們在螢幕上顯示這些相同的影象是為了幫助您校準相機,所以無論場景有多昏暗,HDR+ 均會將曝光時間限制在 66 毫秒以下,從而使我們的取景器至少可保持每秒 15 幀的顯示速率。在亮度更低並需要更長曝光時間的場景下,“夜視” 模式使用正快門延時 (PSL),在按下快門按鈕後,您需要等待相機開始捕捉影象。使用 PSL 意味著,您按下快門後需在短時間內保持不動,但其允許使用較長時間的曝光,從而可在更低亮度下提高 SNR。
增加每幀曝光時間所帶來的第二個問題是運動模糊,產生的原因可能是手部抖動或物件在場景中移動。Pixel 2 和 Pixel 3 配備的光學防抖 (OIS) 系統可減少為實現適度曝光時間(最高約為 1/8 秒)而產生的手部抖動,但這對更長時間的曝光或移動的物件不起作用。為解決 OIS 無法修復的運動模糊問題,Pixel 3 的預設拍照模式使用 “動作測光”,包括通過光流來測量最近的場景移動及選擇可使模糊最小化的曝光時間。Pixel 1 和 Pixel 2 在預設模式下並未使用動作測光,但這三款手機均可在 “夜視” 模式下使用此技術,從而將每幀的曝光時間最高提升至 333 毫秒(若無大幅移動)。我們對未配備 OIS 的 Pixel 1 小幅提升曝光時間(對於同樣未配備 OIS 的自拍相機,提升的曝光時間甚至更短)。如果將相機固定(如靠牆放置或使用三腳架),則每幀的曝光時間將提升至一秒。除改變每幀的曝光時間之外,我們還會更改拍攝幀數:若將手機固定在三腳架上,便會拍攝 6 幀;若是手持型裝置,便會最多增加至 15 幀。這些幀數限制可免除使用者的疲勞(以及取消按鈕的需要)。因此,根據您所擁有的 Pixel 手機、相機選擇、手部抖動、場景移動以及場景亮度,“夜視” 模式可拍攝 15 幀(每幀耗時 1/15 秒或更短時間)或 6 幀(每幀耗時 1 秒),或介於兩者之間的任意幀數。
以下是我們在檢測到移動時對每幀使用更短曝光的具體示例:
左圖:由兩部並排的 Pixel 3 手機中的一部拍攝的 15 幀連拍畫面。中間圖:停用動作測光時的 “夜視” 拍攝圖,導致手機使用 73 毫秒的曝光時間。在這張裁剪照中,狗的頭部移動動作較為模糊。右圖:啟用動作測光時的 “夜視” 拍攝圖,使手機注意到該動作並使用更短的 48 毫秒曝光時間。此次拍攝的動作模糊程度較輕 。
以下還提供了當我們察覺手機被固定在三腳架上時使用更長曝光時間的示例:
左圖:用手持型裝置對天空進行 “夜視” 拍攝後的裁剪照。由於存在輕微的手部抖動,“夜視” 模式選擇了 5.0 秒(每幀 333 毫秒,共 15 幀,由二者相乘得出)的拍攝時間。右圖:由三腳架固定後拍攝的照片。由於未檢測到手部抖動,“夜視”模式使用了 6.0 秒(每幀 1.0 秒,共 6 幀,由二者相乘得出)的拍攝時間。所拍攝的天空照清晰度較高(噪聲較少),您還可看到更多星星。
校準與合併
求取幀數均值以減少成像噪聲的想法與數字成像一樣古老。在天文攝影術中,這稱為曝光堆疊。雖然這項技術本身很簡單,但最大的難點是在手持相機的情況下正確校準鏡頭。我們在此領域的投入始於 2010 年一款叫作 Synthcam 的應用。這款應用可連續拍攝照片、以低解析度實時校準及合併照片,之後顯示合併結果,而且您可看到所得照片的清晰度會穩步提升。
“夜視” 模式也採用類似原理,不過是以全感測器解析度進行非實時處理。我們在 Pixel 1 和 Pixel 2 上使用 HDR+ 的合併演算法,並加以修正與重新調整,從而提高其檢測與捨棄未準確校準幀畫面的能力,即便在噪聲充斥的場景中也是如此。在 Pixel 3 上,我們使用 Super Res Zoom,同樣進行重新調整,無論您在拍攝時是否變焦均是如此。雖然開發後者的目的是處理超解析度影象,但因其能對多張影象求取均值,因而也有助減少噪聲。在一些夜間場景中,Super Res Zoom 可生成優於 HDR+ 的照片,但需仰仗 Pixel 3 上更快速的處理器。
順便一提,手機上的所有這些處理僅耗時幾秒。只需快速點按可將您帶至幻燈片處的圖示(請等候拍攝完成!),您便能檢視經 HDR+ 或 Super Res Zoom 處理後的照片 “優化效果”。
其他挑戰
儘管以上描述的基本理念聽起來很簡單,但在開發 “夜視” 模式的過程中遇到光線不足的情況時,仍會出現一些難題:
自動白平衡 (AWB) 在弱光場景下失效
人類善於保持顏色恆常性,即甚至在彩色照明的條件下(或當戴上太陽鏡時)也可正確感知事物的顏色。但當我們在一種光照下拍照並在另一種光照下檢視照片時,此過程便會中斷;我們在觀看時會感覺照片帶上了色彩。為糾正這種知覺效果,相機調整了影象色彩,以對照明主色(有時稱為色溫)作出部分或全部補償,從而有效改變影象中的色彩,使圖片場景看上去猶如經過中性(白)光照亮一般。此過程稱為自動白平衡 (AWB)。
我們的問題在於白平衡是數學家所稱的不適定問題。相機記錄的雪真是藍色的嗎?抑或是被藍天照亮的白雪?我想大概是後者。這種模稜兩可的現象使得白平衡難以實現。非“夜視”模式中使用的 AWB 演算法表現良好,但在十分昏暗或色彩強烈的光線條件下(想象一下鈉蒸汽燈),我們便很難確定真實的照明色彩。
為解決這些問題,我們開發出一種基於學習的 AWB 演算法,並訓練其區分白平衡效果良好和較差的影象。當所拍攝影象的白平衡較差時,此演算法便能建議您如何通過改變影象顏色以使照明色彩看上去更偏中性。訓練此演算法需使用 Pixel 手機拍攝多種場景,然後需要您在色彩校準顯示器上檢視照片時,手動修正白平衡。您可以使用 Pixel 3 通過兩種途徑拍攝同一弱光場景的照片,然後進行對比,以此獲知此演算法的工作原理:
左圖:Pixel 預設相機模式中的白平衡器不瞭解溫哥華這座濱海小屋的黃色照明色的色度。右圖:我們基於學習的 AWB 演算法表現更佳。
漆黑場景下的色調對映
“夜視” 模式旨在允許我們在肉眼無法看清的場景中拍照,簡直是神乎其技!與之相關的一個問題是,在十分昏暗的場景中,人類看不到色彩,因為此時我們視網膜中的視錐細胞會停止運作,只有視杆細胞繼續發揮作用,但這些細胞無法區分不同波長的光。夜晚的場景依舊繽紛多彩,但我們卻無法看到。我們希望“夜視”照片也具有豐富的色彩,這是其超能力的一部分,但也會帶來潛在矛盾。最後,我們的視杆細胞具有較低的空間視敏度,這也是我們無法在夜間看清事物的原因。我們希望將“夜視”照片變清晰,提供更多您無法在夜間真正看清的細節。
例如,如果您將一臺數碼單反相機固定在三腳架上,並採用長達幾分鐘的曝光時間或將幾次較短曝光堆疊整合,便可營造黑夜如同白晝的視覺觀感。陰影部分的細節不僅能展現出來,場景也會變得清晰多彩。請觀看下方用數碼單反相機拍攝的照片;我們根據圖中的星星可以推測出拍攝場景一定是在夜晚,但我們還能看到藍天綠草,而且樹木在月光下的投影猶如日光下的陰影。這種效果很棒,但卻不是您始終想要的結果,而若將這張照片分享給您的好友,他們也會對您的拍攝時段感到困惑。
夜晚的優勝美地峽谷,Canon 數碼單反相機,28 毫米 f/4 鏡頭,3 分鐘曝光,ISO 100。雖是夜晚(因為可以看到星星),卻如同白天。
早在幾個世紀前,藝術家們便已知道如何將一幅畫呈現出夜晚的視覺效果;請看下方示例。
1766 年由德比的 Joseph Wright 創作的《一位哲學家講授太陽系儀》。藝術家使用的顏料從黑到白,但描繪的場景顯然是夜晚。他是如何實現這一效果的呢?他提高對比度、用黑暗籠罩整個場景,然後將陰影投射在黑暗中(因為我們無法看到黑暗處的細節)。
我們在 “夜視” 模式中也採用了一些相同技巧,其中包括在我們的色調對映中投射一條 S 曲線。但是,若在給予您 “神奇超能力” 的同時還要提醒您這張照片的拍攝時段,那要實現這兩者之間的有效平衡便顯得頗為困難。下方照片在這一點上表現得尤為出色。
▲ Pixel 3,6 秒 “夜視” 拍攝,使用三腳架
“夜視” 模式適應的場景亮度可低至多少?
當拍攝場景亮度低於 0.3 勒克斯時,自動對焦便開始失效。若亮度低到致使您無法在地板上找到鑰匙,那麼您的智慧手機也將無法對焦。為解決此限制,我們為 Pixel 3 的 “夜視” 功能添加了兩個手動對焦按鈕,其中 “近景” 按鈕的焦距約為 4 英尺,而 “遠景” 按鈕的焦距約為 12 英尺。後者是鏡頭的超焦距,意味著從該焦距的 1/2 距離(6 英尺)處向外擴充套件的一切事物均應位於對焦範圍內。此外,我們也在努力提高 “夜視” 模式在弱光場景下的自動對焦能力。當拍攝場景亮度低於 0.3 勒克斯時,您仍可使用智慧手機拍攝出令人驚歎的照片,甚至可拍攝出精美的天文攝影照片(正如本篇文章所展示的),但您需要一個三腳架、用 Android Camera2 API 編寫的第三方或自定義應用,並需進行手動對焦。
那我們所拍攝的場景亮度究竟能低至多少呢?最終,拍攝場景將達到一個終極亮度級,即讀出噪聲會吞噬該畫素所收集的光子數量。同時還有其他噪聲源,包括會隨曝光時間延長而增加且隨溫度而變化的暗電流。為避免這種情況,生物學家知道在對弱熒游標本成像時,要把相機溫度降至零下(華氏度),但我們不建議您對 Pixel 手機採取相同做法!噪聲密佈的影象同樣亦難實現準確校準。即使您能解決所有這些問題,卻依舊無法避免風吹、樹擺以及星移雲動的情形。超長曝光攝影著實很難。
如何充分利用 “夜視” 模式
以下是使用 “夜視” 模式的幾則建議:
- “夜視” 模式無法在完全黑暗的場景中啟用,所以請挑選帶些許光線的場景。
- 柔和均勻的光線要優於刺眼的光線,後者會產生暗影。
- 為避免鏡頭閃光偽影,請儘量讓非常明亮的光源遠離視野。
- 如要增加曝光,請點按各種拍攝物件,然後移動曝光滑塊。再次點按可停用此功能。
- 如要減少曝光,請先拍攝照片,然後在 Google 的照片編輯器中對其進行調暗處理;這將會減少噪聲。
- 如果場景過暗導致相機無法對焦,請點按高對比度邊緣或光源邊緣部分。
- 如果依舊無法解決場景問題,請使用 “近景”(4 英尺)或 “遠景”(12 英尺)對焦按鈕(見下方)。
- 如要最大化影象的清晰度,請將手機靠牆或靠樹固定,或者將其固定在桌子或岩石上。
- 您也可選擇通過螢幕自身發出的光亮,使用 “夜視” 模式進行自拍。
▲ 手動對焦按鈕(僅限 Pixel 3)
“夜視” 模式只有在 Pixel 3 上才能產生最佳效果。此外,我們已將此功能引入 Pixel 2 和初代 Pixel,只不過由於後者未配備光學防抖 (OIS) 系統,我們對其採用了更短的曝光。同時,我們研發的基於學習的白平衡器專門針對 Pixel 3 進行訓練,因此其在前代手機上的精確度會有所下降。順便一提,我們已調亮 “夜視” 模式中的取景器,能夠幫助您在弱光場景下采景,但由於該取景器基於 1/15 秒曝光,因此拍攝後的照片會含噪聲,而且無法有效展示最終照片的呈現效果。快快嘗試採景,並按下快門吧。通常情況下,您會大吃一驚!