1. 程式人生 > >勝過iPhone XS?Google Pixel的“夜視功能”是怎樣煉成的

勝過iPhone XS?Google Pixel的“夜視功能”是怎樣煉成的

640?wx_fmt=jpeg


作者 |  Marc Levoy、Yael Pritch

譯者 | 劉旭坤

整理 | Jane

出品 | AI科技大本營


【導讀】隨著智慧手機的不斷髮展成熟,為了尋找差異化的廠商不斷增加攝像頭的數量。然而,攝像頭的數量越多,就代表拍照的質量越好嗎?


Google Pixel 手機一直堅持單攝,雖然硬體不算頂尖,但是憑藉著強大的演算法,Pixel 手機的照相水平非常突出。上個月,Pixel 3 釋出會的 Keynote 顯示其暗光拍照的成像效果甚至完虐 iPhone XS,讓人驚歎不已。


近日,Google 又為自己的相機應用增加了“Night Sight”功能(夜視功能),使用者無需三腳架和閃光燈就能在夜間拍出銳利乾淨的照片,並獲得了眾多評測博主的好評。本文就將為讀者介紹弱光

條件下拍照的難點以及機器學習在這一問題中的應用。



弱光拍攝的難點


大家如果在夜晚拍過照片的話,肯定會發現拍出的照片上有很多噪點,使得照片看起來顏色和亮度都很不均勻。噪點或者叫噪聲的來源有兩個:散粒噪聲和讀取噪聲。散粒噪聲指進入感光元件的光子數量太少造成可觀測的光子數量不均。散粒噪聲的出現與我們所使用感光元件的質量沒有關係,不過智慧手機的感光元件太小,所以受散粒噪聲影響比普通相機更大。讀取噪聲則是由將電訊號轉換成讀數時的隨機錯誤造成的。感光元件的質量越好那麼讀取噪聲也就越小。


把所有噪聲的來源都考慮進去我們可以得出一個信噪比,信噪比越高則意味著我們拍出的照片質量越好。感光元件大小不變的情況下信噪比和曝光時間成正比,所以看來只要練成鐵手就能完美地解決這個問題。然而還是想簡單了,就算拍攝者能長時間穩穩地舉著手機被拍的物件也沒法保持長時間不動。


2014 年釋出的 HDR+ 功能改善了散粒噪聲和讀取噪聲的問題,不過 HDR+ 的本意如它的名字一樣是為了提高照片的動態範圍。HDR+ 的原理是連拍很多張照片,然後通過影象識別把多張照片進行疊加成一張照片。每張照片的曝光時間能根據使用者手抖的程度和拍攝目標的移動自動調節來保證照片的銳度,這樣就在保證銳度的前提下增加了曝光時間,所以照片的信噪比也能提高了。


看起來弱光拍照的問題已經完美解決了,就連拍幾十張後合併成一張就行了。然而實際的情況是就算用多張照片合併的方法還是對光照有要求,光照低於一定的標準就算再多拍效果也不好。標示光源亮度的物理量是光通量,它的單位是流明。單位面積接收到的光通量叫做照度,單位是勒克斯。他們之間的關係大家可以參照壓力與壓強的關係來理解。為了讓大家能直觀地瞭解不同勒克斯的概念,下面表中用生活中的場景與勒克斯數值做了對比:


640?wx_fmt=png


普通的手機相機從 30 勒克斯開始就不太行了,如果使用 HDR+ 或者類似合成多張照片的技術大概能降到 3 勒克斯但再低也就不行了。我們開發夜視功能的目標是讓手機在 0.3 到 3 勒克斯之間不補光只按一次快門也能拍出好照片,而要實現這一目標最重要的手段就是儘可能多地捕獲光子。


曝光時間限制和模糊問題


延長曝光時間雖然能提高信噪比拍出更乾淨的照片,但也同時帶來了兩個問題。Pixel 手機預設的拍攝模式是零快門延遲,意思是說使用者一開啟相機應用其實相機就開始拍照儲存在快取裡了。當用戶按下快門的時候手機會提取最新拍攝的 9 至 15 張相片來進行合成,這樣就能保證拍到的是使用者按快門的那一刻。


使用者在拍照時手機會顯示預覽,為了維持最低 15 幀的顯示重新整理,HDR+ 能實現的最慢快門速度也只有 66 毫秒。所以為了進一步延長曝光時間,夜視功能改變了拍攝模式。使用者使用夜視功能拍照時按下快門後相機才會開始拍攝,所以使用者必須維持一小段時間儘量不動。


延長曝光帶來的第二個問題是畫面模糊。雖然 Pixel 2 和 Pixel 3 配備了光學防抖鏡頭但最多隻能支援到 1/8 秒快門。Pixel 3 為了解決這一問題應用了所謂的動作測量技術,也就是使用光流法來判斷畫面的移動,然後再動態調整快門速度來讓畫面儘量清楚。Pixel 1  和 Pixel 2 雖然不會預設使用動作測量,不過使用者開啟夜視模式時它們也會使用動作測量。這樣如果使用者畫面晃動不大的話每張照片的曝光時間最多能到 333 毫秒。這項技術也針對 Pixel 1 和使用了腳架的情況進行了優化。Pixel 1 沒有光學防抖,所以快門的時間就稍微短一些而如果手機完全沒有移動的話快門時間最高可達一秒。


除了快門時間,應用也會根據情況調整所拍的照片張數來減少使用者等待的時間。如果使用三腳架只拍 6 張就可以合成了,若為手持則最多會拍 15 張。所以使用 Pixel 手機拍照,根據相機是前置還是後置、手持穩定性、畫面穩定性和亮度的不同,合成前所拍攝的照片在 15 張 1/15 秒快門照片和 6 張 1 秒快門的照片之間。下面的圖中我們可以看到一點區別:


640?wx_fmt=gif

左圖我們可以看到狗頭部的動作。中間圖為動作測量關閉狀態下拍攝,快門為 73 毫秒,能明顯看到模糊。右圖為動作測量開啟狀態下拍攝,快門為 48 毫秒,比關閉動作測量清楚一些。


下面的圖是手持和三腳架拍攝的不同效果:


640?wx_fmt=jpeg

左圖為手持拍攝,略微有抖動。拍攝了 15 張快門 333 毫秒的照片進行合成。右圖為手機判斷無抖動所以拍攝了 6 張快門 1 秒的照片進行合成。


對齊與合成


拍攝多張照片進行合成不是什麼新鮮的方法,在天文和微距攝影上都有很廣泛的應用。雖然原理聽起來很容易,但將手持拍攝的照片對齊就很困難。我們從 2010 年就開始進行對齊與合成相關的研究,最早的成果是 iOS 平臺一個叫做 Synthcam 的應用。


夜視功能的原理其實和 Synthcam 差不多,但提高了照片的解析度。Pixel 1 和 2 中使用的 HDR+ 融合演算法提高了剔除無效照片的能力,Pixel 3 中使用的超高解析度變焦技術雖說並不是為減少噪點所開發但客觀上也實現了除噪點的效果。這項技術某些條件下效果優於 HDR+ 但對計算能力要求更高,所以沒有應用在 Pixel 1 和 Pixel 2 上。


其他難題


原理聽起來挺簡單,但開發夜視功能的過程中還是碰到了不少難題。


▌1.弱光條件下自動白平衡失效


自動白平衡的目的是將不同色溫條件下拍攝的照片都調整為白光下拍攝的顏色,否則人眼在回看照片時會發現明顯的色差。


白平衡在數學上屬於不適定問題。比如感光元件判斷拍到的雪花是藍色的,但無法判斷雪花到底是真的藍還是天的藍色映在雪花上。現在的自動白平衡演算法在強光條件下效果不錯,但在弱光拍攝時就非常不準了。


為此我們訓練了一個模型來判斷照片的白平衡是否正常並作出矯正。為了訓練這個模型我們使用 Pixel 手機在各種光照條件了拍了很多照片並手工對白平衡進行調整。下圖中我們能看到應用模型前後的明顯區別。


640?wx_fmt=jpeg


2.色調對映


人眼在弱光下是分不清楚顏色的,因為只有不能判斷顏色的視杆細胞才能在晚上工作。但人眼看不到並不表示到晚上顏色就沒有了,所以夜視功能想超越人眼的極限必須在夜間也能拍出清晰的顏色。


下面這張圖就是在夜間通過長時間曝光所拍攝的(注意天空中可以看到星星)。雖然偶爾拍拍這種把晚上拍成白天的效果也不錯,但恐怕大家還是想能把晚上拍成晚上。


640?wx_fmt=png


其實藝術家們很早就發現了讓觀眾感覺所畫的是夜間的方法,如下圖所示:


640?wx_fmt=png


畫家提高畫面的對比度並把陰影部分直接塗黑來營造出夜間的效果。我們也使用了類似的方法,比如使用 S 形色調對映。不過怎麼把握其中的度還是挺值得思考的,下面這張用 Pixel 3 拍的照片就非常成功:


640?wx_fmt=jpeg


夜視模式的極限


當照度低於 0.3 勒克斯時手機的自動對焦功能會失效,所以我們在 Pixel 3 的夜視模式增加了兩個手動對焦按鈕:近和遠。近模式的對焦距離約為 1.2 米,遠模式則在約 3.6 米處對焦。在遠模式下景深是從 1.8 米到無窮遠。雖然照度低於 0.3 勒克斯也能拍出好照片,但就必須藉助三腳架和第三方應用了。


那麼理論上對攝影來說照度能低到什麼程度呢?我想當捕捉到的光子會受到讀取噪音影響時就差不多了。另外還有其他的噪聲來源,比如受溫度影響的暗電流,不過我可不建議大家為了降噪點把手機泡到液氮裡。就算這些問題全都解決了也會有風吹樹搖,超長曝光攝影還是很困難。


注意事項


用夜視功能拍照很有趣,如果使用得當的話能夠拍出效果非常好的照片。夜視功能在 Pixel 3 上面的效果是最好的,一方面是因為它晶片速度最快,另外自動白平衡演算法也是以 Pixel 3 為基礎訓練的。不過就算用的不是 Pixel 3 夜視功能也能讓你在弱光下拍出好照片(預覽裡的噪點並不會出現在完成的照片上)。文章最後就給大家一些更好地使用夜視功能的注意事項吧:


  • 完全黑暗的地方夜視功能也拍不到什麼東西

  • 柔和均勻的光照條件下拍攝效果更好

  • 不要對著光源拍,否則會有炫光

  • 可以點預覽螢幕來調整曝光

  • 如果是單純地想降低曝光是可以通過軟體後期實現的,而且沒那麼多噪點

  • 對著畫面上有顏色或者亮度對比的地方比較容易自動對上焦

  • 還是對不上焦就試試手動對焦(如下圖)

  • 靠著牆可以增加手持的穩定性有助於提升照片銳度

  • 用前置鏡頭自拍也可以用夜視功能,而且手機螢幕還能補光


640?wx_fmt=png



——【完】——



精彩推薦

BDTC 2018


2018 中國大資料技術大會將於 12 月 6 - 8 日在新雲南皇冠假日酒店舉行。匯聚超百位國內外實力講師從學界翹楚到行業一線大拿:

管曉巨集:中國科學院院士;

張巨集江:原始碼資本投資合夥人;

張曉東:美國俄亥俄州立大學 Robert M. Critchfield 講席教授;

陳性元:北京資訊科學技術研究院副院長;

周靖人:阿里巴巴集團副總裁;

李浩源:Alluxio 公司創始人&CEO

......

全方位立體解讀大資料時代的技術程序,為眾技術愛好者奉上一場優質乾貨盛宴。


640?wx_fmt=jpeg


推薦閱讀


Uber的機器學習平臺Michelangelo

大家近期都在學習的Python學習專案!

GitHub上25個最受歡迎的開源機器學習庫

人工智慧進行時:人類的未來與未來的人類

大咖指路:機器學習人才這些方向最緊缺!

羅永浩衝冠一怒

程式設計師買房指南——LZ的三次買房和一次賣房經歷

實戰必讀! 發現百萬級使用者公鏈漏洞,我們靠的是這套方法