天天看點

手機中的計算攝影:多攝融合

作者丨HawkWang

前幾天,榮耀釋出了Magic 3系列手機,通過多主攝融合的計算攝影技術,帶來全焦段的高清體驗。根據榮耀官方的資料,在彩色黑白融合時,進光量最大提升13%, 清晰度最大提升18%。在主攝和廣角鏡頭融合時,中心清晰度最大提升80%, 在主攝和長焦鏡頭融合時,中心清晰度最大提升180%!

手機中的計算攝影:多攝融合

我想,這些驚人的資料一定讓你感到好奇——這背後是什麼樣的計算攝影技術在支撐呢?今天我這篇文章,就來談一談“多攝融合”技術,這是除雙攝虛化、光學變焦之外,另外一個我很感興趣的領域。

在真正講技術前,請允許我回顧一下曆史。

如果我調研的沒錯,最早在手機上提出異種攝像頭融合提升圖像品質的,是以色列公司Core Photonics,這家公司在2014年時在業界第一次展示了3種不同的通過手機雙攝融合提升最終圖像品質的系統,這包括了能提供2倍變焦能力的HummingBird系統,能進行RGB+MONO融合的Night Owl系統,以及能進行3倍變焦的"Falcon"系統和能進行4倍變焦的"HawkEye"系統。

手機中的計算攝影:多攝融合

我對上面的系統印象深刻,是因為我當時所在的公司協助Core Photonics在幾乎沒有高通公司支援的情況下在工程手機上點亮了這些模組,并成功運作了Core Photonics的融合算法。

在Core Photonics的官網上,他們展示了很多和競品的對比照片,我們來欣賞一下。由于都是2014年左右釋出的系統,是以官網上展示的也是和早幾年的手機的對比,但并不影響我們的直覺感受:雙攝融合後的圖像清晰度确實遠高于普通攝像頭的結果!

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

雖然早期的雙攝手機非常簡陋,但中國手機企業确實在那時候就已經不僅僅是在山寨國外的産品了,對新技術非常敏感,非常熱衷。下面是一個2014年的工程樣機,你可以清晰的看見它的雙攝像頭模組,其中包括一個長焦鏡頭和廣角鏡頭

手機中的計算攝影:多攝融合

從2014年到現在,整個手機工業界都經曆了天翻地覆的發展,不管是攝像頭模組,還是手機晶片的算力,還是計算攝影的算法,都跟當年完全不一樣了,最終效果也提高了很多。在榮耀新釋出的Magic 3系列手機之前,已經有不少手機廠商釋出了在特定攝像頭之間進行融合提升圖像品質的産品,比如:

手機中的計算攝影:多攝融合

現在讓我們進入到技術環節

來看看一個廣角鏡頭和一個長焦鏡頭融合時,會發生什麼。先來看看原圖。你可以明顯看到,兩個攝像頭拍攝的畫面在尺度上有明顯的差別。

手機中的計算攝影:多攝融合

而且,因為鏡頭、傳感器等各方面的因素,長焦相機的圖像品質确實高于廣角相機的圖像品質,我們看看細節圖對比一眼可知(左:長焦相機, 右:廣角相機)

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

你還可以觀察到,它們不僅僅在尺度上有差別,由于兩個攝像頭的空間位置不同,是以實際上兩個圖像之間還有平移和旋轉,這一點在我上一篇文章中已有描述:

手機中的計算攝影:多攝融合

事實上,現在的手機模組組裝形态多種多樣,這就使得不同攝像頭拍攝的圖像之間空間和尺度差異也是多種多樣的

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

是以,要把不同攝像頭拍攝的圖像進行融合,就需要分成如下的步驟了:

手機中的計算攝影:多攝融合

1. 尺度對齊

如果我們提前擷取到兩個攝像頭的關鍵參數,包括焦距、像素尺寸、FOV等資訊,那麼是能夠直接計算出圖像的尺度差異的。

即便是不知道上述參數,要對齊圖像的尺度,也是很容易的一件事情:隻需要先對圖像做稀疏特征點的對齊,然後對其中一個圖像做單應變換即可。如下圖所示,兩個圖像的許多特征點被找到并比對上,進而可以求取出它們之間的變換矩陣。右圖中,紅框部分的圖像經過裁剪和放大,即可和左圖保持尺度對齊了,當然也可以将左圖縮小到右圖紅框的尺寸,具體是怎麼做,實際上在産品執行中不同場景下會有不同的考量。

手機中的計算攝影:多攝融合

總之,經過這些操作,我們就得到了一對圖,你如果仔細觀察的話,會發現雖然這對圖檔裡面物體的尺寸是一緻的,但很明顯有旋轉和平移的關系,是以接下來還需要對它們進行像素對齊。

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

2. 像素對齊

要想把這兩個在空間上有旋轉和平移的圖像進行像素級别的對齊,至少有兩個流派的方法。

流派1遵循嚴謹的多視角幾何的方法,認為拍攝同一個目标時,圖像和空間物體之間滿足對極幾何限制的關系,我在文章雙攝虛化中也提到了這一點。這樣,如果将圖像轉換為隻有視差關系,沒有旋轉關系,接下來就可以通過求取每個像素點的視差,并在視差方向進行圖像的扭曲變換來達到對齊圖像的目的了。

手機中的計算攝影:多攝融合

然而,這個方案的缺點是必須對兩個相機進行标定,并以此對兩個圖像進行極線校正,然後是視差計算。相對來說,流程比較複雜和冗長,而且标定勢必會影響生産效率。在前面講的Core Photonics公司的官網上有其方案的總體流程圖,可以看出他們就是采用了這個方法。

手機中的計算攝影:多攝融合

Core Photonics官網展示融合流程圖

這裡面,最重要的一環還是立體比對,關于立體比對求取視差圖,我在文章雙攝虛化中已經做過闡述。我所在團隊現在已經可以在極端複雜的場景下産生高精度的視差圖了,但因為上面的缺點,我們還是未采用此類方法。

流派2則是觀察到手機上兩個攝像頭之間的空間位置差異不會太大,是以圖像之間的運動也不會很大。那麼就比較适合計算它們之間的光流,并用光流資訊來對齊每個像素。光流算法回答一個問題:左圖中每個像素點Pl在右圖的對應點Pr的坐标是什麼?或者說Pl經過什麼方向和大小的運動,才能和右圖中的對應像素Pr對齊。

手機中的計算攝影:多攝融合

立體比對是在一維上搜素比對點,已經很困難了。而光流則是在二維上搜尋比對點,就更加困難了。它本質上是在最小化下面這個代價,其中等式左邊是兩個圖像對應像素的亮度、顔色差異的統計值。

手機中的計算攝影:多攝融合

這實際上是一個欠定問題,傳統上求取光流場會用到局部的平滑性,或者通過加入某種正則項後進行全局求解,還有些方法是通過馬爾科夫随機場将某些區域的光流資訊逐漸的傳播到其他區域。總之,困擾立體比對精度的很多問題,一樣會困擾光流算法。而由于光流算法在二維上進行搜尋,還需要考慮更多的問題,例如計算量,以及因為某些像素的運動過大導緻的比對困難的問題。

手機中的計算攝影:多攝融合

當然,正如我在上一篇文章中所講,我們已經采用了深度學習來完成光流場的計算,效果也很不錯。這裡展示一個和OpenCV自帶的DISFlow算法的效果對比,先看輸入,你能明顯看到兩張圖的不同(注意觀察紅發的姑娘)

手機中的計算攝影:多攝融合

再看看輸出結果對比,這裡展示的是僞彩色的光流幅值,你能明顯看出我們算法的優勢:

手機中的計算攝影:多攝融合

總之,當計算了光流後,就可以很容易的對圖像做變換,進而對齊像素。下面動圖展示了對齊後的結果局部圖。

手機中的計算攝影:多攝融合

3. 融合政策和圖像圖像融合

當對齊了圖像後,就可以對圖像進行融合了。在文章11. 圖像合成與圖像融合中,我介紹了各種各樣圖像融合的算法。傳統上表現的比較好的是金字塔融合:

手機中的計算攝影:多攝融合

但實際上,有如下一些原因,導緻簡單的融合算法并不能完全解決真實問題:

  • 經過光流變換後的圖像,可能會産生局部的扭曲,尤其是在視差邊緣:
手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合
  • 某些時候,長焦距的圖像品質并非在每一個局部區域都優于短焦距圖像
  • 簡單的融合,會導緻融合區域和非融合區域産生明顯的突變。

是以這裡面有很多複雜的技術問題需要解決。目前我們用一個融合政策子產品比較好的處理了這些問題,能得到比較自然的基本沒有明顯錯誤的融合結果。下面是這個子產品給出的融合權重示意圖,可以看到圖像的不同區域權重是明顯不同的

手機中的計算攝影:多攝融合

最後展示幾個場景的融合結果和融合前的對比:

全圖對比:

手機中的計算攝影:多攝融合

局部細節:

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

全圖對比:

手機中的計算攝影:多攝融合

局部細節:

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

目前這麼一套多攝融合算法,已經能夠在各種複雜的攝像頭模組組合情況下産生優異的結果了。這既包括了前面說的不同焦距攝像頭之間的組合,也包括了黑白、彩色攝像頭的組合。相比彩色攝像頭之間的組合,黑白+彩色會要求更高一些。因為人眼對顔色是非常敏感的,些許的問題也會被人眼捕捉到,是以真實釋出的産品凝聚了許多工程師的心血。這裡再展示一組在實驗室拍攝的圖像,來說明黑白彩色相機的融合。

輸入圖:

手機中的計算攝影:多攝融合

對比下細節,可以看出黑白圖像清晰很多,彩色圖像在細節處已經産生了混疊

手機中的計算攝影:多攝融合

把黑白圖的細節疊加到彩色圖上,得到輸出圖(左:輸入彩色圖,右:輸出彩色圖)

手機中的計算攝影:多攝融合

細節部分(左:輸入彩色圖,右:輸出彩色圖):

手機中的計算攝影:多攝融合
手機中的計算攝影:多攝融合

總結一下上面所說的流程:

手機中的計算攝影:多攝融合

其中,像素級别的對齊,以及圖像的融合,是整個算法成功的關鍵。在這個過程中會遇到各種各樣的問題,例如:

  1. 如何盡可能在有限的算力需求内進行盡可能準确的融合
  2. 如何處理融合區域和非融合區域的突變
  3. 如何判斷哪些像素需要融合
  4. 在融合圖像時兩個輸入圖像的權重各自為多少
  5. 如何利用底層系統硬體支援,做到高效運算
  6. 如何和相機系統的其他功能緊密配合

等等,這些問題的解決需要工程師付出大量的時間和精力。

此時此刻,我的同僚剛從某客戶的研發中心傳回不久,我們在此之前一直為了處理好多攝圖像的融合問題而廢寝忘食,每天加班到很晚。我不得不再次重複相同的話:大家在手機釋出會上看到的驚豔一刻,或者拿着心愛的手機拍出滿意的照片,這背後都有無數工程師的辛苦付出。而當計算攝影技術加持的多攝融合能夠得到大家的認可時,工程師們也是最開心的!

這篇寫作過程中,獲得了好些同僚的幫助,在此表示感謝。再次感謝美女模特素顔出鏡! 文章同步發表在我的微信公衆号和知乎專欄“計算攝影學”,歡迎掃碼關注,轉載請注明作者和來源