按下快門之後,手機在幹什麼?
手機攝影的硬件已經碰到天花闆,等明年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(超分辨率變焦),也被稱作“搖搖樂”算法。現在不少廠商在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的長焦用的都是曠視的同代算法),也有過同時搭載幾家算法的機型。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!