從FCam到Pixel 4——看Google攝影技術的十年磨一劍

2019.10.25 by
少數派
少數派 查看更多文章

高品質數位生活指南。少數派幫你更好地運用數位產品或科學方法,提升你的工作效率和生活品質。

從FCam到Pixel 4——看Google攝影技術的十年磨一劍
少數派
照相功能是目前手機開發的重點項目之一,回顧Google 10年來對相機技術精進的演變史,看看締造現今攝影基礎的功臣有誰?

FCam與諾基亞N900:一切的開始

聊到手機界的攝影翹楚,Google是肯定繞不過去的。在過去的十年中,Google一直是手機界電腦攝影(computational photography)的領軍人物,Google Pixel在電腦攝影方面的深厚功力,有很大的一部分則要歸功於背後出身史丹佛的電腦攝影團隊。

讓我們把時鐘撥回2010年。

那一年,賈伯斯在舊金山莫斯康(Moscone West)舉行的WWDC上發布了iPhone4,而就在半個小時車程外的史丹佛大學裡,教授們正在調試一台看起來分外簡單,甚至有些醜陋的黑盒子。

Franken Camera
少數派

他們可能沒有想到的是,這個「黑盒子」的蝴蝶效應會掀起一場電腦攝影的風暴,這場風暴來得是如此的猛烈而影響又是如此深遠——不誇張地說,這個黑盒子直接或間接地影響了十年後地球上幾乎每一台智慧型手機拍出的每一張照片。

研究人員們的出發點是很簡單的,他們想要一個可編程的攝影平台,然而當時市面上所有的攝影裝置都不能滿足這一需求:數位相機和單眼相機雖然能提供較高的畫質,但缺乏相關演算能力,也不開放編程,新興的以iPhone為代表的智慧型手機雖然具有很大的潛力,但其孱弱的成像品質以及Apple封閉的軟體系統也使得相關軟體的開發無從展開。

既然沒有,那麼就自己動手造吧。

由史丹佛大學牽頭,加州大學、烏爾姆大學參與,聯合諾基亞研究中心和迪士尼,研究人員使用開發出了FCam。

FCam的全稱是Franken Camera,取自《科學怪人》裡被科學賦予生命的怪物。這台相機擁有開放、可定義且基於C++的API,使用Linux系統,是一個可以在毫秒級時間內對硬體進行控制的電腦攝影(computational photography)平台。

這套系統並不依賴特殊的硬體,因此研究人員隨後就把它移植到了一台諾基亞N900手機上,用同樣的API實現了六大功能:

  • HDR取景與拍攝

  • 低光度環境取景與拍攝

  • 增強動態範圍的全景拍攝

  • 視網膜攝影

  • 基於感測器的手抖檢測

  • 重複攝影(Rephotography)

諾基亞N900
少數派

FCam和那台N900為我們打開了行動裝置電腦攝影的新世界大門,在隨後的十年中,這些功能逐漸走出實驗室,來到了每一台智慧型手機上。

Camera2.0/HAL3:電腦攝影的API基石

在史丹佛做出FCam以後不久,這支團隊就被Google挖走,領導Android相機框架團隊的研發。

相較於只能調整光圈、快門、ISO等極少數參數的傳統相機(Camera 1 API),智慧型手機擁有更強大的感知能力,更強大的演算能力,更便捷的互動能力以及用戶語境感知能力。但由於軟體上的限制,這些潛力並沒有被很好地發揮出來。

2014年,Google在I/O大會上發布了Android L,Android L帶來了許多重磅功能,比如全新的Material Design設計、ART編譯器以及一個全新的API,它被稱為Camera 2 API,而對應的硬體抽象層則被稱為Hardware Abstraction Layerv 3(HAL3)。

在Nexus 5上,新的API在提供了更多控制,同時帶來了超過十倍的性能提升並減少了延遲。

老舊的API,僅支持1-3fps的全像素輸出
少數派
Camera 2 API 支持30fps的全像素輸出
少數派

有了Camera 2 API的加持,HDR+算法也就成為了可能。

HDR+:破局的新思路

發表於2016年SIGGRAPH會議上的《用於移動相機的高動態範圍以及低亮度環境下的連拍攝影成像》一文創新性地提出了一種新的HDR實現。

傳統上的暗光拍攝會使用以下方法來提高畫面亮度:
- 提升ISO

  • 使用更大的光圈

  • 使用更長的曝光時間

  • 閃光燈

這些方案都有自己的問題:

一方面,提升ISO雖然會有效提高畫面亮度,但卻同時放大了雜訊,犧牲了畫質;雖然使用大光圈模組是好事,但在行動裝置上由於體積和厚度的限制,一味提升光圈也是不可能的。

另一方面,使用更長的曝光時間會增大手抖糊片的概率,光學防抖雖然能解決部分手抖的問題,但很難用於移動的物體;閃光燈並不適用於所有場景,有些時候我們不能打擾拍攝對象。

對於高動態範圍成像,傳統的HDR算法拍攝多張不同曝光時間的照片並進行合成,比如iPhone引入的拍攝過曝、欠曝、正常曝光三張JPEG照片並進行合成的HDR算法就是這一算法的典型代表。不過這種算法往往會帶來偽像(artifact),比如高對比度物體邊緣的光暈(Halo)。

如何改善呢?

HDR+
少數派

Google的答案是基於ETTR測光思想和人工智慧技術的同曝光堆疊算法,也就是大名鼎鼎的HDR+。

Google的研究者們首先拋棄掉包圍曝光的想法:不同曝光時間給對齊照片帶來的問題是很難解決的,場景發生變化(比如畫面內有運動物體)也會導致畫面對齊失敗。研究者們轉而使用連拍多張相同曝光參數的照片,並且選擇其中一張作為參照幀,將其它的照片向這張照片對齊並堆疊。

由於參照幀的存在,僅有確定屬於該圖片的部分才會被合成,這就改善了傳統算法裡的偽像問題,同時由於單張曝光時間短,因此使用該模式也不容易模糊。

這一思路後來被其它手機廠商借鑒,並廣泛應用於各種夜景模式中。

進擊的AI測光

測光,顧名思義,是對攝影畫面中光線強度進行測量的技術。

傳統的測光方式有兩大流派,一個是照顧直出觀感,另一個是為了後期空間而優化,即向右曝光(Exposure to the right,ETTR)。

第一個流派我們非常熟悉,它其實就是相機取景器裡那個常見的曝光指示器。相機會提供多種測光模式,如全局測光、分區測光、和點測光等,這些測光模式適用於不同的場景,需要拍攝者根據實際情況使用,還需要時常根據經驗來進行曝光補償。

舉個例子:當你在海灘邊拍攝日落的時候,常見的測光演算法會選擇優先保證佔畫面主體的部分正確曝光,代價是犧牲掉一部分高光和陰影。但這就會導致太陽高光部分炸掉,而並不是畫面重點的沙灘卻獲得了正確曝光——這個時候就需要點測光太陽附近,然後根據經驗或者直方圖來調整曝光。

少數派

為了方便新手,入門級相機上常有為各種場景優化的模式,但這些模式需要手動選擇,並且也常常不夠細化。

Camera 2 API的時代,Google要如何解決這個問題呢?

答案是數據分析。

Google 公開的數據集
少數派

Google使用一個28,416張圖片的數據來訓練自己的測光算法,調優後保留下來大概4,500多個場景模式,並且拋棄了傳統的利用直方圖分析圖像亮度的方式,轉而對圖像RGB的最大值和平均值分別進行分析。

為了照顧細微的變化,在每個色版上都有高達64個非均勻分佈的取樣點被用於數據分析——這一切都不需要用戶介入,不需要用戶去手動開啟AI增強模式。

Google對它非常自信,在現在的Google Camera中它已經取代傳統測光成為了默認的測光模式。

對齊的藝術

接下來就是要把拍攝到的一串照片對齊了。

如何對齊運動物體呢?如果直接疊加上去,由於物體在畫面中產生了移動,會出現一種叫鬼影(ghosting)的偽像,這是需要避免的。

對齊算法
少數派

早期HDR+使用了一種叫Pyramid based的對齊技術,而在Pixel 3系列引入Super Res技術後,Google使用光流追蹤(Optical Flow),把畫面分割成小方塊並追蹤每個方塊的運動,從而判斷移動物體和靜止物體。接下來對不同物體分別進行對齊,這個做法不僅能有效抑制鬼影,還讓對齊失敗的圖片也能被用來降噪,不浪費任何一幀的信息。

最早在Nexus 5上,受制於時代,Google使用了YUV堆疊,這一技術可以溯源到為Google Glass準備的相關研究,而隨著CMOS速度和算力的提高,直接使用RAW信息進行堆疊成為可能。

關聯閱讀:用Nexus挑戰單眼,Google工程師的極限低光拍攝實驗

PVC:強勁的晶片,更開放的生態

在HDR+剛出來的那段時間,如果啟用了HDR+,Android手機大約需要4s進行處理,Google對此很不滿意。

Pixel Visual Core晶片
少數派

隨著CMOS和行動處理器性能的提升,Google在後來的Nexus手機裡引入了ZSL(Zero Shutter Lag)模式,壓縮快門限制(1/10s)並且把快門前後的照片持續寫入快取,這意味著按下快門即可成像,無需等待。這一技術的引入為HDR+提供了抓拍的能力。

同時,Google保留了更加激進的HDR+Enhanced模式。這個模式需要手動開啟,開啟後相機會在對焦完成後才開始拍攝,快門限制放寬(1/5s),堆疊張數更多,畫質也更好。

左:沒有調用PVC的第三方應用,右:調用了PVC的第三方應用
少數派

在Pixel2上,Google還引入了一顆獨立的圖像算法處理器,被稱為PixelVisualCore,這顆晶片讓第三方應用也能享受到HDR+帶來的高畫質。PixelVisualCore是一顆強勁的晶片,它有著獨立的定製版Linux系統、快閃記憶體和RAM,不過在面對新的應用場景時(比如Top Shot)演算能力還是有些捉襟見肘。

所以在今年的Pixel4/4XL中,Google將其升級並更名為Pixel Neural Core。Pixel Neural Core在圖像合成算法處理上將發揮多大的作用我們暫時還不得而知,但Google已經為這顆晶片賦予了圖像算力任務以外的額外使命——你在發布會上看到的下一代Google Assistant、能夠即時將音樂轉換成文字的錄音應用,背後都有這顆晶片的功勞。

GCam:Mod群體的狂歡

由於Google的這些算法都不依賴特殊硬體,因此它可以被移植到其它的裝置上。

一位叫BSG的俄羅斯開發者首發了Google相機的移植,他當時手持一部小米5S,處理器和CMOS都與Google的第一代Pixel相同。由於小米提供的算法並不理想,成像效果也不如人意,這位開發者有了把Google Pixel的相機移植過去的想法。

結果非常成功,移植版Google相機完全可以在其它機型上運行。由此,Google相機Mod群體開啟了一場狂歡,許多原來Google並沒有提供的功能和選項被紛紛開發出來。

比如曝光時間控制,原來Google的策略最高是到1/5s快門,但開發者們透過修改設置提供了高達8倍的曝光時間選項、1.6s快門來獲得更好的畫質;再比如Google的策略是自動堆疊9張,開發者們則改出了高達45-60張的極致畫質選項。

此外,開發者們還從圖像處理管線裡「偷」出了RAW文件,使Google相機獲得了RAW拍攝能力。這張RAW文件並不是其它手機裡單張曝光的、低品質的10bit RAW,而是多張raw堆疊而成的高品質14bit RAW文件——理想情況下,這張RAW的訊噪比已經可以逼近APS-C的相機,動態範圍上更是讓一些相機廠商汗顏。

還有開發者為Google相機適配了部分雙鏡頭機型,讓中焦/超廣角鏡頭也能調用HDR+算法,進一步提升畫質,或致力於優化Google相機的直出,為其加入了亮度和陰影色調的調整,以及雜訊模型的校正功能。這些改動雖然最開始是為第三方機型開發,但回過頭也反哺到了Pixel機型上,讓其拍攝能力更上一層樓。

可以說,Mod和非Mod版Google相機完全是兩個產品,原版Google相機注重各方面的平衡,Mod版犧牲了不少,卻把HDR+算法的潛力全部發揮出來,實現極致畫質。

關聯閱讀:Google Camera with HDR+-超黑科技點亮照片的美

Pixel3:Mod社群的反哺

第三方開發者玩的這麼歡,Google自然是要拿出一點新東西來鎮場子,在Pixel3和Pixel4上,我們都能看到不少受GCam Mod啟發的產物。

在Pixel3上,Google帶來了全新的拍照策略,在你打開相機的那個瞬間,CMOS就會一直往快取記憶體裡面餵RAW文件,在你按下快門的瞬間手機就會在快取記憶體裡調取最近拍攝的照片進行堆疊。

這是不同於此前任何一款拍攝裝置的——按下快門的動作並不是告訴相機開始拍攝過程,而是告訴相機結束拍攝過程,因此可以視為真正的零快門遲滯。

Top Shot
少數派

Pixel3還帶來了一個叫做Top Shot的新功能,它可以讓你選擇按下快門前後裡最好的一張照片,而且這些照片都是經過HDR+處理的,其性能要求是如此的巨大,哪怕是算法強大如Google也不得不限制了這個模式下的解析度。今年Pixel4發布並沒有提這個功能是否得到改進,估計還是受制於演算力吧。

此外,為了加強對運動物體的捕捉能力,HDR+在Pixel3上加入了基於深度學習的物體識別與追蹤。

Super Resolution
少數派

再者是超像素變焦(Super Res Zoom),熟悉索尼相機的朋友應該知道,在新的a7R系列相機上搭載了一個叫像素偏移(Pixel Shift)的功能,可以透過抖動防抖組件來為每個像素提供RGGB的信息,從而實現更高的畫質,不過缺陷就是對運動物體的處理不好,無法手持拍攝,並且需要後期導入電腦合成。

Google超像素變焦的功能原理是一樣的,不過其OIS組件能同時補償手抖並照顧到每個像素的色彩信息,結合HDR+算法對運動物體的處理,可以實現與單眼攝影媲美、甚至超越其它手機搭載的光學中焦鏡頭的效果。

這一功能甚至在檢測到手機「過於穩定」時會自動啟動OIS抖動來獲得更多的信息。

Computational RAW vs HDR+ 直出
少數派

至於Mod社群已經玩得火熱的RAW功能則變成了Pixel相機的自帶功能,它在細節上會比MOD版更好,不過目前只能堆15張RAW,比起Mod版暴力的45~60張RAW還是有顯著的差距。但去年的「夜視模式(NightSight)」透過類似的方法放寬了快門速度(1/3s),堆疊幀數也增加到了15張,再結合機器學習填色,夜拍效果令人印象深刻。

最後,透過機器學習,Google還進一步優化了單眼攝影的景深探測和虛化模擬,同時帶來了自拍柔光功能。

Pixel4:打磨與完善

相較於Pixel3,Pixel4搭載了雙鏡頭(主鏡頭+2x光學變焦副鏡頭)。

Pixel 4
少數派

配套軟體的更新則主要體現在改善使用體驗以及對於部分corner case的處理上。

Live HDR+
少數派

第一個功能是Live HDR+,依賴AI對取景器裡的YUV流進行處理,使其近似所見即所得的效果。

HDR+部件
少數派

其次就是加入了可以分別調節畫面亮部和陰影(影調映射控制)的控件,方便用戶拍出剪影效果。

長焦鏡頭
少數派

另外,超像素變焦算法現在能同時應用在主鏡頭和變焦鏡頭上,使得可用的變焦範圍大幅提升。

Depth Map
少數派

變焦鏡頭的加入也同時使得人像虛化模式下物體輪廓的識別更加精確,除了人臉以外,不規則的物體也能很好地識別,甚至包括毛髮邊緣。

AIAWB
少數派

原本僅應用於極端光照條件下,也就是Night Sight模式裡校正色彩的AI白平衡模式,現在可以用於平時的拍攝了,配合新加入的超感光感測器(類似於環境光感測器),能夠提供更加精確的色彩還原。

Night Sight
少數派

當然,夜視模式本身也在Pixel4中也得到了加強。新版夜視模式在有三腳架的情況下支援16s、15張(等效4分鐘)照片合成,這裡Google用到了星空拍攝來展示。在這種長曝光場景下星空會移動,所以Google採用了分區對齊的方式來保證星空和地景的清晰。

AI去熱像素
少數派

此外,長曝光帶來的熱雜訊也是一個需要解決的問題,Google透過一個AI算法來識別並抹掉這些影像畫質的因素。

19EV
少數派

在發布會的最後,Google稱現在他們正在挑戰高達19EV的極限光比情況,未來可能透過OTA更新來推送最新的算法。期待一下。

小結

以上就是對過去十年來Google在Nexus/Pixel上對電腦攝影不斷進取的一點快速回顧。

不難看出,在相機系統裡最難的3A(AF、AWB、AE,即自動對焦、自動白平衡、自動曝光)問題上,Google都敢優先採用機器學習和人工智慧來提升體驗。而在Pixel4上,透過新增的兩枚感測器和軟體的改進,適用的拍攝場景更多了、體驗更好了、成像控制也更精細了。

責任編輯:江可萱
本文授權轉載自:少數派

延伸閱讀

每日精選科技圈重要消息