日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手机中的计算摄影-超广角畸变校正

發布時間:2023/12/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手机中的计算摄影-超广角畸变校正 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“3D視覺工坊”,選擇“星標”

干貨第一時間送達

來源丨計算攝影學

作者丨HawkWang

廣角鏡頭,甚至超廣角鏡頭已經成為了現在手機的標配,這樣的手機能夠拍攝出寬廣的視角,還能夠在合拍時拍下更多的人物。

比如最新的iPhone13 Pro就有一顆26mm焦距的廣角鏡頭,還有一顆13mm焦距的超廣角鏡頭。

事實上,自2019年起,很多手機攝像頭的FOV就已經超過100度了

然而,廣角鏡頭也會帶來副作用,如下圖紅框所示,本來是直線的墻頂卻變成了曲線

下面這個場景更加明顯,整個地面和大樓都變成彎曲的了

另外,廣角鏡頭拍攝的畫面在四角處還會出現拉伸現象,比如這兩位姑娘的腳就被明顯拉長了。有時候攝影師利用這種特性來拍攝大長腿,但如果構圖不恰當也會導致比較詭異的現象。

以上兩種現象,分別是由于鏡頭的物理畸變和透視畸變導致的。今天我們來看看兩種畸變產生的原因,以及解決方案。

一. 鏡頭畸變

我們假設整個成像符合小孔成像模型

然而,真實的相機的鏡頭并不能完美的遵循小孔成像模型。

在制造過程中,透鏡的實際曲面和理想曲面之間存在一定的誤差,這種誤差會改變光的折射方向,使得成像點的位置發生偏差,通常這會導致“徑向畸變”

根據透鏡曲面的不同情況,徑向畸變會導致畫面出現桶形失真或枕形失真。

與此同時,實際相機通常采用多個透鏡組成鏡頭組,各透鏡中心與光軸是否重合、鏡片與光軸是否垂直、各鏡片沿光軸方向的位置偏差等都會使光線偏離理論路徑。雖然透鏡的組合可以相互抵消一些性質相反的非線性畸變,但是也會疊加一些性質相同的非線性畸變。通常,這會導致“切向畸變”

實際成像過程中,這兩種畸變通常混雜在一起,尤其是廣角鏡頭組很難避免它們。如下圖所示:

那么如何去除鏡頭畸變呢?

為了去除它們,我們需要嚴格的用數學公式來表述 實際成像點和理想成像點之間的位置關系。

先把小孔成像模型用幾何表示如下:

可見對于三維空間中的坐標[X, Y, D]T, 是比較容易求出其理想成像點在相機坐標系中的坐標的,我們令其理想投影點為 [xc, yc],這里,下標c代表corrected(這里是近似認為校正后的坐標既是按照理想小孔成像模型的投影坐標)

由于實際相機會有畸變,所以我們把帶畸變的投影點表示為 [xd, yd]?,這是和理想投影點不一樣的坐標,d代表distorted。這兩個位置的關系可以近似表示如下。這里展示的是3階模型,更復雜的鏡頭畸變校正可以用到更高階的模型,比如OpenCV里面可以用到6階模型:

這樣我們就建立了在相機坐標系下,校正前和校正后坐標之間的關系。由于我們是對圖像上的像素進行操作,還需要將相機坐標轉換為像素坐標,求取像素坐標之間的關系,這需要用到圖像的內參數(參見手機中的計算攝影1-人像模式(雙攝虛化))

這樣我們最終可建立[uc, vc]和[ud, vd]之間的一一對應關系,這種關系可以用一張兩通道的圖來表述,兩個通道分別表示特定校正后像素對應的校正前的u坐標和v坐標。通常,計算出的坐標值[ud, vd]是浮點值,因此需要用到插值算法來實現真正的圖像變換。

OpenCV的undistortImage函數的幫助文件里也講得很清楚,它通過相機內參計算出畸變校正的變換圖,接著調用remap函數來進行從畸變圖像到校正后圖像的插值變化。

通過這種方法去除鏡頭的徑向畸變和切向畸變后,畫面中的直線會被校直,如下圖所示:

采用類似原理甚至可以對魚眼鏡頭圖像進行畸變校正:

然而,雖然這個方案能很好的校直直線,卻也帶來了一定副作用。如下圖紅框所示的腿部,圖像出現了異常的拉伸現象:

這是因為實際拍攝的場景中,除了鏡頭畸變導致的畫面形變外,還有一種特殊的畸變:透視畸變

二. 透視投影和透視畸變

讓我們再看看小孔成像模型,可以很容易發現一個物體所成像的尺寸與其距離鏡頭的距離(物距)成反比,即所謂的近大遠小

當拍攝一個目標時,只要它的表面存在物距上的差異,那么這個物體上每一個物距不同的局部區域都會有不同的成像放大倍率。這種現象不管是通過鏡頭成像,還是小孔成像都是存在的,是固有的屬性,這里的投影模型就叫做透視投影,其產生的效應我稱之為透視效應。

人們有時利用透視效應來拍攝有趣的攝影作品:

透視投影還會使得三維空間中的平行線在畫面中相交,其交點稱作為消失點。

藝術家早就會使用透視技術,來突出主體了,例如下面這幅畫是荷蘭著名畫家約翰內斯·維米爾(Johannes Vermeer)的作品鋼琴課。畫家利用透視效應,將主人公安排在了整個畫面幾條直線的消失點上,從而實現了突出主體的作用。

然而,透視效應也會導致畫面的形變,我們看到拍攝同一個姑娘時,短焦鏡頭(廣角鏡頭)出現了強烈的透視畸變。這是因為為了拍出同樣尺寸的像,短焦鏡頭拍攝時物距更近,因為透視效應的近大遠小法則,這種形變顯得更加明顯。尤其是在近距離拍攝時,人臉上鼻子相比臉側面距離鏡頭更近,所以鼻子成像時放大得更大,于是人臉就顯得更加詭異了。

除了上面這種因為近距離拍攝導致的形變,透視效應還會導致遠離相機中心的物體被拉伸,比如下面這張用iPhone13 Mini的廣角鏡頭拍攝的照片。相比起上面因為近距離拍攝導致的形變,這種邊緣物體被拉伸的現象是我們更常見的情況。

那么,有沒有辦法同時去除鏡頭畸變和透視效應導致的邊緣形變呢?就像下面這樣:

這就是下一節的內容。

三. 同時去除鏡頭畸變和透視畸變

在用手機照片時,人們拍的最多的就是人像照,不管是單人的,還是多人合照,正如上面的內容所講,廣角鏡頭帶來了不必要的副作用,尤其是圖像邊角處的人像被拉扯的現象,這種畸變會在我們強行校直直線,變為透視投影后更加明顯。

為了解決人像的這種拉扯現象,以前的方法是利用球極投影(Stereographic projection)或者墨卡托投影(Mercator projection)來對圖像進行進一步處理。

幾種不同的投影方式的比較

當對畫面采用這兩種投影時,能一定程度上恢復畫面邊角頭部、臉部的形變,但也會導致背景直線重新彎曲,如下圖所示。

以前有很多研究者研究過這個問題,但都沒有得到理想的效果。比如[Zorin and Barr 1995]提出的方案,雖然修復了人臉的扭曲,但是也導致了墻面、桌面、顯示器等其他物體的扭曲

還有[Carroll et al. 2009]提出的通過優化全局一致性最小化感知失真的方案,以及[Tehrani et al. 2016]提出的通過引入虛擬的相機視角的方案。但這些方案需要手動操作,例如標注突出的邊緣或要保留的重要區域,而且有時候無法徹底解決問題。

有沒有一種自動的、不需人為干預,還能很好的去除圖像中各種畸變的方法呢?有的,這就是我要介紹的這篇文章

這是臺灣省的三位才俊施易昌, 賴威昇及梁家愷在2019年發表的文章。他們的想法很直接:既然透視畸變矯正能夠校直圖像中的直線,而球極投影又能夠恢復人臉的形狀。那么不如先對圖像做人臉分割,對非人臉的背景區域計算透視畸變的校正map,再對人臉部分做球極投影的校正map,然后把兩部分的變換map整合到一起,用最終的變換圖來對圖像進行插值變換:

聽起來這是個清晰、直接的想法,然而做起來卻很不容易。如下面右圖所示,如果簡單的把兩個map融合到一起,只會得到很糟糕的結果

所以作者認為,應該把變換map的求解看做是一個最優化的問題,通過求解這個最優化問題得到最佳的map,然后利用它對圖像進行插值變換,這樣才能得到最佳的結果。

最優化總是需要達到某些預期目標的,那么此處的目標是什么呢?我們一起來直觀的想一想:

  • 首先,校正后的圖像在人臉部分是非常接近球極投影的

  • 越是靠近圖像中心的人臉,越接近透視投影本來的樣子

  • 人臉在變換前后不應該有異常的尺度變化

  • 經過透視投影校直的直線,不應該被球極投影重新變彎曲

  • 因此,作者首先將問題用數學公式表達如下:

    這里面,{vi*}是指map中所有的2維向量的集合, vi是第i個像素對應的源像素坐標,而Et則是一個目標函數,通過使Et最小化,就可以求得最佳變換map {vi*}

    Et由多項目標函數組成。這里面,首先是人臉目標項?Ef,?它是所有人臉處的目標函數值Es,k之和,正如我們上面的直觀感覺,這個目標函數約束了下面幾個目標:

    • 校正后的圖像在人臉部分是非常接近球極投影的

    • 越是靠近圖像中心的人臉,越接近透視投影本來的樣子

    • 人臉在變換前后不應該有異常的尺度變化

    作者演示了人臉項的作用,當沒有這一項目標函數的約束時,所得到的圖像有明顯的人臉扭曲變形,而加入這一項后結果有很大的改善。

    接著需要約束直線的彎曲,目標函數如下。這里用了叉積來約束變換前后直線的夾角,表明允許直線發生平移,但避免發生大的彎曲

    然后還要加上1項,約束變換map的局部平滑性

    作者也演示了上面這兩個約束函數的作用,可見它們很好的保持了直線,而且沒有引入副作用。

    為了避免在圖像邊緣處出現異常的扭曲,還需要在中間計算時擴充圖像(通過Padding),并對擴充圖像做一些特殊的約束(記為?Ea?),?并在最后一步裁減掉多余的部分。這種邊界的約束也帶來了收益:

    所以讓我們回顧下上面講的最優化式子:

    這里的Et就是上述幾種目標函數的加權和:

    通過使得Et最小化,就可以求出最佳的變換矩陣,這個過程可以圖示如下,通常只需要兩三個迭代就可以收斂:

    作者在大量不同的特質的圖像上做了驗證,效果非常好。讓我們多看一些作者給出的演示下效果吧

    四. 實現、性能,以及缺陷

    在論文中,作者提到他們將這個算法在PC及高通的SDM845平臺上都做了實現,其關鍵的最優化過程用的是Ceres solver這個庫,最終插值算法用的是高精度的Lanczos采樣算法。他們將鏡頭畸變和透視畸變的校正整合到同一個map中進行,對于1200萬像素的輸入圖像,能夠在920ms內完成對所有的畸變校正,并且實際部署到了Google的Pixel 3手機中。一篇論文,不僅僅在理論上有突破點,而且還能實際落地到產品中,有高度的可用性,確實讓人佩服!

    雖然作者展示的結果已經足夠驚艷了,但也并不是完美無缺。作者也提出,它是需要人臉Mask作為輸入的,如果沒有成功檢測、分割到人臉,那么算法就會出錯:

    另外算法只對人臉部分進行校正,人的身體還是保持不變,這樣在校正后有時會出現頭小身大的詭異現象:

    事實上,我們還發現該算法即便提供了足夠的人臉Mask,該算法還是可能導致背景線條出現彎曲,如下圖所示:

    或是不能對人像做到足夠好的修復:

    在我看來,它最大的問題還是速度太慢。可能你覺得920ms已經夠快了,但事實上對于今天的拍照手機來說,這是一個很慢的速度——用戶不能忍受,因而手機生產廠商也無法忍受——大家都希望最好是在更短的時間內,例如幾十毫秒內完成整個運算。

    有沒有能夠解決上述效果問題,還能夠跑得飛快的算法呢?當然是有的,事實上我的團隊已經在手機上實現了效果更好,而且只需要不到100毫秒就能夠完成整個過程的廣角畸變校正算法,并且已經在很多客戶項目中部署了。而這一部分的基礎原理,我將在下一篇文章中為你介紹。

    五. 總結

    今天我首先為你介紹了鏡頭畸變,以及它引起的直線彎曲現象。然后講述了鏡頭畸變的兩種原因——徑向畸變和切向畸變,并給出了去除這兩種畸變的完整過程。接著我介紹了透視投影的應用,以及它導致的邊角拉伸現象。我還花了較大篇幅,介紹了三位寶島才俊的去除透視畸變的論文。事實上,我們正是基于這篇論文的思想加以改進,實際開發了相關的產品,并已經部署到了很多客戶手機中,當然我們已經完全采用了不同的方法。

    如同上面的論文中最后所說,廣角鏡頭畸變校正這個方向其實背后還有一個更加本質和深入的問題:在透視投影下,是圖像中的哪些特征使得我們人類視覺系統感知到了畸變呢?有沒有某種方式來客觀定量的描述這種畸變呢?這其實牽涉到了圖像質量的定量評價這個領域了。我希望下一篇文章中,能夠對此給出一些解答

    六. 參考資料

    首先感謝所有模特提供照片,感謝我的同事王鵬在本文寫作過程中給予的幫助

    本次文章的參考資料和引用素材來源眾多,列舉如下:

    1、蘋果官網iPhone13 Pro介紹圖

    2、高翔, 張濤 《視覺SLAM十四講 從理論到實踐》

    3、OpenCV UndistortImage介紹:docs.opencv.org/4.5.4/d

    4、Shree Nayar,?First Principles of Computer Vision

    5、施易昌等的廣角畸變校正論文: YiChang Shih, Wei-Sheng Lai, and Chia-Kai Liang. Distortion-free wide-angle portraits on camera phones.?ACM Trans. Graphics, 38(4):1–12, 2019

    6、上面論文的演示資料、素材等,均來自于其項目官網:people.csail.mit.edu/yi

    7、Che-Han Chang?et al, Rectangling Stereographic Projection for Wide-Angle Image Visualization, ICCV2013

    8、少量素材來自:Jing Tan et al, Practical Wide-Angle Portraits Correction with Deep Structured Models

    9、Denis Zorin and Alan H Barr. 1995. Correction of geometric perceptual distortions in pictures. In SIGGRAPH. 257–264.

    10、Robert Carroll, Maneesh Agrawal, and Aseem Agarwala. 2009. Optimizing content- preserving projections for wide-angle images. In ACM TOG, Vol. 28. 43.

    11、Mahdi Abbaspour Tehrani, Aditi Majumder, and M Gopi. 2016. Correcting perceived perspective distortions using object specific planar transformations. In Proc. ICCP.

    本文僅做學術分享,如有侵權,請聯系刪文。

    3D視覺精品課程推薦:

    1.面向自動駕駛領域的多傳感器數據融合技術

    2.面向自動駕駛領域的3D點云目標檢測全棧學習路線!(單模態+多模態/數據+代碼)
    3.徹底搞透視覺三維重建:原理剖析、代碼講解、及優化改進
    4.國內首個面向工業級實戰的點云處理課程
    5.激光-視覺-IMU-GPS融合SLAM算法梳理和代碼講解
    6.徹底搞懂視覺-慣性SLAM:基于VINS-Fusion正式開課啦
    7.徹底搞懂基于LOAM框架的3D激光SLAM: 源碼剖析到算法優化
    8.徹底剖析室內、室外激光SLAM關鍵算法原理、代碼和實戰(cartographer+LOAM +LIO-SAM)

    9.從零搭建一套結構光3D重建系統[理論+源碼+實踐]

    10.單目深度估計方法:算法梳理與代碼實現

    11.自動駕駛中的深度學習模型部署實戰

    12.相機模型與標定(單目+雙目+魚眼)

    重磅!3DCVer-學術論文寫作投稿?交流群已成立

    掃碼添加小助手微信,可申請加入3D視覺工坊-學術論文寫作與投稿?微信交流群,旨在交流頂會、頂刊、SCI、EI等寫作與投稿事宜。

    同時也可申請加入我們的細分方向交流群,目前主要有3D視覺CV&深度學習SLAM三維重建點云后處理自動駕駛、多傳感器融合、CV入門、三維測量、VR/AR、3D人臉識別、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬件選型、學術交流、求職交流、ORB-SLAM系列源碼交流、深度估計等微信群。

    一定要備注:研究方向+學校/公司+昵稱,例如:”3D視覺?+ 上海交大 + 靜靜“。請按照格式備注,可快速被通過且邀請進群。原創投稿也請聯系。

    ▲長按加微信群或投稿

    ▲長按關注公眾號

    3D視覺從入門到精通知識星球:針對3D視覺領域的視頻課程(三維重建系列三維點云系列結構光系列手眼標定相機標定、激光/視覺SLAM、自動駕駛等)、知識點匯總、入門進階學習路線、最新paper分享、疑問解答五個方面進行深耕,更有各類大廠的算法工程人員進行技術指導。與此同時,星球將聯合知名企業發布3D視覺相關算法開發崗位以及項目對接信息,打造成集技術與就業為一體的鐵桿粉絲聚集區,近4000星球成員為創造更好的AI世界共同進步,知識星球入口:

    學習3D視覺核心技術,掃描查看介紹,3天內無條件退款

    ?圈里有高質量教程資料、可答疑解惑、助你高效解決問題

    覺得有用,麻煩給個贊和在看~??

    總結

    以上是生活随笔為你收集整理的手机中的计算摄影-超广角畸变校正的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。