簡單科普:計算攝影“算”的是什么?
簡單科普:計算攝影“算”的是什么?

按下快門之后,手機在干什么?

手機攝影的硬件已經碰到天花板,等明年1英寸傳感器滿街跑之后,以后廠商的宣傳重點可能會越來越偏向于“算法”和“計算攝影”。這里先立個flag,幫大家預習/溫習一下“計算攝影”相關內容。

“計算攝影”,對于用戶是個不明所以的黑箱,也是個很模糊的概念。從耳熟能詳的HDR、夜景模式、美顏與特效,到“搖搖樂”像素位移、超分、多攝融合,就連以前的人像虛化、超廣角邊緣校正也是“計算攝影”的一部分。

簡單科普:計算攝影“算”的是什么?

Google Pixel 7 ↑

Google有在Google AI Blog做技術分享的優良傳統,所以本文以Google的視角,簡單整理大家最關心的HDR和夜景模式等計算攝影算法的演變與特征,最后提幾句蘋果。

像打怪一樣,克服問題、改進和利用各種技術的過程,時常會讓人忍不住大喊“妙啊”,我們這就開波回顧歷史。

HDR與HDR+

數碼攝影最早遇到的問題之一,就是小底CMOS的動態范圍完全不夠用。 簡單科普:計算攝影“算”的是什么?

數碼多當年非常直觀的原理說明↑

為了讓相機傳感器幾千比一的記錄范圍,能記錄明暗對比度動輒幾萬比一的真實世界,工程師搞出了多幀接力的“曝光包圍”,用欠曝的短曝光照片去記錄高光+過曝的長曝光照片記錄暗部,然后合成明暗細節具備的高動態范圍HDR(High-Dynamic Range)圖像,現在回看也是個非常妙的方法。

2010年的9月,蘋果在iOS 4.1上為iPhone 4(剛升級成500萬像素,首次加入前置攝像頭)引入HDR。但HDR的大規模宣傳,還得等iPhone 4s (升級到800萬像素,支持1080P錄像)的發布會。

而類似的功能,當時的移動攝影霸主諾基亞,要等2013年的Lumia 1020才有(這鍋微軟要背一半),而且其包圍曝光功能,要把照片導到電腦手動合成。

簡單科普:計算攝影“算”的是什么?

下一個里程碑是Google的HDR+。Google從斯坦福挖來Marc Levoy(馬克·勒沃伊)教授,其研究成果,就是2013年Nexus 5搭載的HDR+,后者要等到2015年的Nexus 5X/6P才大放異彩。

Marc Levoy教授在2020年跳槽到Adobe做副總裁,跳槽時他說會搞個通用的相機app,大家以為無數算法一塌糊涂的手機會得到救贖,然而這app現在都沒影。

而下面是HDR/HDR+遇到的一系列問題和很妙的解決方案。

糊片和運動鬼影:

HDR+的初衷,是要解決傳統HDR容易糊片和運動鬼影(移動物體的“多重影分身”)的問題。

簡單科普:計算攝影“算”的是什么?

傳統HDR起碼由長短2幀合成,長快門幀容易因手抖或被攝物移動而糊片,所以HDR+改用多幀相同時長的短曝光(既然長快門不安全,那就全用短快門好了)。

HDR+會拍下2到15幀快門時長相同的欠曝照片,然后對齊、選出基礎幀、預留抖動的廢片去做多幀降噪,然后合并輸出HDR+照片。

快門延時:

因為要等多幀拍攝完才能合成,所以當時做不到“零延時快門”,點完快門還要等進度條轉完圈才能拍下一張(現在的夜景模式也是這樣)。

Google用了“預載快門前的圖片”的方法,來做到0延時快門(Zero Shutter Lag,ZSL)。只要打開相機,手機就會開始拍攝圖像幀并儲在緩沖區,按快門時,相機會將最近9幀或15幀送去做HDR+或Super Res Zoom(超分辨率)處理。

成像速度問題(算力):

要對齊和合成多張照片,算力需求很大,真的是“計算攝影”。

當年Nexus 6P的驍龍810不降頻時,拍HDR+照片需要2.5到4秒(具體取決于多幀合成的幀數)。光線好的場景總耗時2.5秒,當中拍攝耗時100毫秒,對齊要250毫秒,合并要580毫秒。暗光場景的拍攝總時長4秒,包括1秒的拍攝,500毫秒對齊,1200毫秒用于合并。拍照時轉圈圈的等待,依然會讓你感覺時間凝固了。


簡單科普:計算攝影“算”的是什么?

2016年后的Pixel系列,即便連高通驍龍的Hexagon DSP都拉進來幫忙處理,但算力還是完全不夠用(其實現在也不夠用)。

為此,在2017年的Pixel 2,Google和英特爾合作設計了專門的Pixel Visual Core芯片來硬件加速,幫忙處理HDR+照片并讓第三方app也能調用HDR+。其宣稱運行HDR+只需要1/5的時間和1/10的功耗。接近時代的,還有華為海思的NPU、增加“仿生后綴”的蘋果A系列芯片,多年后的vivo V1+、OPPO馬里亞納X,初始核心用途也是搞計算攝影。

白平衡:

除傳統的白平衡算法需求,在把12bit甚至14bit的HDR照片映射到8bit jpg圖像時,也容易出現偽影、光暈、梯度反轉或局部對比度損失等多種問題。部分用戶可能還記得早期Google Nexus/Pixel機型,甚至用Google相機的部分第三方機型,HDR+會有白平衡漂移、高光處會出現特殊紋理等多種問題。

簡單科普:計算攝影“算”的是什么?

而后來,Pixel 4把Pixel 3上僅用于夜景的機器學習白平衡普及到所有模式,讓HDR+的白平衡問題有了大的改觀。

暗部噪點問題:

講白話,HDR+就是用“多次短快門”來規避傳統HDR長曝光幀易糊片和運動鬼影問題。但短快門的欠曝樣張,注定會損失暗部細節。因為HDR+的每次短快門都會引入新的讀取噪聲,所以它注定也無法超越同樣時長的長曝光。

簡單科普:計算攝影“算”的是什么?

所以Google在2021年,重新為HDR+加入長曝光幀(兜兜轉轉又回來了,而蘋果2018年的Smart HDR就保留了長曝光)。這次“妙”的地方是,Google繼續沿用“開相機就開始緩沖短曝光幀”的策略,新加入的長曝光幀,放在按下快門之后,這樣就能兼顧零延時快門和暗部效果。


夜景與天文攝影模式

Google的Night Sight是在2018年底引入Pixel系列的新算法,翻譯就是:要等上好幾秒、但又可以手持成片“慢快門”的自動夜景模式,對應華為在2018年初P20系列的手持超級夜景模式。

Night Sight是快門速度更慢+正延遲快門(PSL)的HDR+強化版。HDR+是大部分幀都在按快門前拍下的,而Night Sight的所有幀,都是按快門后拍攝的(所以會有取景卡頓還長時間的進度條轉圈圈)。

HDR和夜景模式都對手持情況敏感,Google自然也給Night Sight加了自適應的快門和幀數策略。

2018年的Pixel 3在默認拍照模式就用了光流法(optical flow)測量場景運動,然后自動選擇曝光時間來降低糊片幾率,同時會用短幀作為對齊參考幀,用類似Super Res Zoom的算法決定每個像素是否應該參與合成。

簡單科普:計算攝影“算”的是什么?

如沒太大的運動,Night Sight的每幀曝光時間最多拉長到1/3秒并連拍15張(5秒總時長)。如果使用靠墻或三腳架等物理穩定方法,單幀時長會增加到1秒并連拍6張(6秒總時長)。


簡單科普:計算攝影“算”的是什么?

而2021年在HDR+里引入長曝光時,Night Sight也引入更多的長曝光幀,手持極限的15幀里,前6幀會梅花間竹地做了3次長曝光,而以前會被舍棄的照片幀,現在也能加以利用來進行降噪。

 

簡單科普:計算攝影“算”的是什么?

左側是長時間曝光產生的熱噪聲,右側是算法消除效果↑

天文攝影模式是極限版本的Night Sight,在長達4分鐘的長曝光中,包括15張單幀短于16秒的照片。

此外,Google用經過10萬張天空夜景圖像“訓練過”的神經網絡,區分天地相交的天際線,然后對天空、陸地風景做針對性降噪或對比度處理,并完成熱噪點去除(因傳感器的長時間曝光而產生)。

 

Super Res Zoom超分辨率變焦

同樣是在2018年引入的Super Res Zoom(超分辨率變焦),也被稱作“搖搖樂”算法?,F在不少廠商在1.5到3倍的低倍率,用的是就是像素位移疊加AI超分辨率。

 簡單科普:計算攝影“算”的是什么?

Pixel 2與Pixel 3的Super Res Zoom效果對比↑

當時行業主流都是加個長焦副攝,倔強的Google則用Pixel 3告訴大家什么叫“谷人?!?,用單攝完成媲美長焦副攝的變焦效果。

 CMOS傳感器常用的Bayer拜耳陣列濾光片結構,為了能記錄顏色,用了紅綠藍3原色的濾光片(對應常見的RGGB,但也有RYYB等其他方案),用感光效率和像素密度來換取記錄顏色的能力。

翻譯就是,100萬像素的屏幕會有300萬個子像素,而100萬像素的CMOS只有100萬個子像素。我們平時看到的照片,實際上2/3的信息都是去馬賽克 (Demosaicing)算法插值、猜色重建的結果。


簡單科普:計算攝影“算”的是什么?

Super Res Zoom算法的思路,類似單反的“像素偏移多重拍攝”技術,通過精確控制像素偏移來補全缺損的像素信息。其在1.2倍以上放大就會自動觸發,拍攝并對齊多幀畫面并跳過去馬賽克算法。


簡單科普:計算攝影“算”的是什么?

自然手抖效果↑

其“妙”在Google除了用OIS防抖強制位移(把手機固定,你可能會留意到取景框在做橢圓運動),還利用人類手部的自然抖動做像素位移。

相機上的“搖搖樂”一般建議8張起疊,疊完后會有4倍像素,而且還能再往上疊成16倍,簡直就是數毛計算攝影的未來,只是現在的移動芯片性能不允許。

Google給過SuperRes Zoom的內存占用和速度數據,用Adreno 630 GPU(驍龍845)處理1200萬像素像素照片會吃掉264MB內存,耗時280ms左右,還是挺吃性能和內存的。

 

虛化與多攝融合

簡單科普:計算攝影“算”的是什么?

圖片深度信息↑

虛化上的操作,是Google“單攝能搞定的事情絕不用多攝”的最佳例證之一。最早的虛化是靠雙攝視差(二年級學過的三角定位與視差)完成距離檢測,而Google在Pixel系列上,用祖傳IMX363的年代,其用的是全像素雙核對焦的綠色子像素(紅藍像素都沒用)做距離檢測,又是一個妙手。

 簡單科普:計算攝影“算”的是什么?

但子像素比起同行的雙攝,物理間距實在是小太多了,深度信息精度不足(弱光時更慘),所以Google加了立體算法。

實際操作中,是先搞HDR+,用經過100萬張照片訓練出來的卷積神經網絡去分辨人形區域,綜合人物識別和深度信息,對每個像素的模糊程度進行計算。而前置鏡頭沒有雙核對焦,全靠人物識別。

為了提高效果,Google當年也玩了些小技巧。例如早期的人像虛化中,前置默認1.2倍放大,后置則是1.5倍放大,讓用戶自然地離遠一點來減少透視畸變。

時至今日,所有廠商都能用最普通的單攝完成虛化,甚至給虛化的光斑自定義形狀。但用神經網絡虛化的弱點,依然是過于“依靠常識”,非常見物體會識別不出來,例如人和鱷魚親吻的照片中,鱷魚可能會被當做背景模糊掉。遇到理工男格子衫、空白墻面/嚴重過曝樣張等,重復紋理甚至無紋理區域也容易翻車。


簡單科普:計算攝影“算”的是什么?

而多攝融合,典型的用途就是主攝到3到5倍長焦之間的變焦區間:主攝數碼變焦中間疊加長焦的畫面(從畫面邊緣到中間的過程中,會發現畫質突然出現躍變)。

又或者像榮耀Magic3系列主推的多攝融合那樣,在超廣角畫面中間疊加主攝的畫面。如果恰巧設備的算力雄厚,甚至還能在超廣角中間套主攝,然后再套長焦畫面。


蘋果

經過這些年的發展,像是Google HDR+后來重新引入長曝光幀、Google和蘋果都跟進了和華為類似的手持超級夜景模式,不同廠商的算法經常會殊途同歸。這里簡要說一下蘋果最常用的是Smart HDR和Deep Fusion(深度融合)算法。

Smart HDR算法在2018年的iPhone Xs系列首發,顧名思義就是應對大光比場景用的。

它一直是傳統的長短幀設定,算法目標主要是提高畫面寬容度,畫質增強的效果不明顯。蘋果默認是連拍9張合成,而Google則是2-8幀合成,后者會為了畫面自然而降低合成數量,明亮場景最低只會用2幀合成。 

 簡單科普:計算攝影“算”的是什么?

Deep Fusion算法在iPhone 11那代引入,同樣是9合1,但核心用途是提升畫質,它是蘋果從以前的“真實、還原、淡雅”變成“艷麗的銳化愛好者”的元兇之一。

Deep Fusion無開關,只能通過Metapho等第三方App查看那些樣張觸發了算法。主攝會在弱光場景觸發Deep Fusion,而對于蘋果素質孱弱的長焦和超廣角,無論白天黑夜幾乎都是默認觸發的。不喜歡銳化的塑料感,可用NOMO等App規避,但代價是糊片幾率提升。

 

算法供應商

簡單科普:計算攝影“算”的是什么?

最后提一嘴算法供應商。

移動攝影最早是虹軟等傳統算法供應商的天下,除了一直搞自研路線的蘋果和曾經的計算攝影領頭羊Google,其他廠商一直都在用虹軟的算法。像曠視、商湯也是現在很重要的第三方算法供應商。

現在華為、小米、vivo、OPPO、榮耀都有自己的自研算法,但三星和vivo依然是虹軟算法愛好者。此外,很多廠商會用同一家,甚至同一套算法(像榮耀Magic3系列的多攝融合,和小米11 Ultra的長焦用的都是曠視的同代算法),也有過同時搭載幾家算法的機型。


關注我們的微博@愛搞機

關注我們的微信公眾號:愛搞機(playphone)

當然,也關注我們的嗶哩嗶哩賬號:愛搞機

分享:
方查理
平凡的機佬
福利!

掃描二維碼,關注作者

分享微博 分享微信
愛搞機微信

愛搞機微信

搞機啦微信

搞機啦微信

推薦產品

抱歉,產品庫沒有您要找的產品

試用
久久亚洲精品欧美