小受被各种姿势打桩gv视频,大胸美女被吃奶爽死视频,精品深夜AV无码一区二区,亚洲a片一区日韩精品无码

發(fā)布詢價單
您的位置:首頁 > 資訊 > 行業(yè)資訊 > 正文

一分鐘詳解魚眼鏡頭標(biāo)定基本原理及實現(xiàn)

2019-09-02 09:02 性質(zhì):轉(zhuǎn)載 作者:小凡 來源:3D視覺工坊
免責(zé)聲明:AGV網(wǎng)(www.xmydyc.com)尊重合法版權(quán),反對侵權(quán)盜版。(凡是我網(wǎng)所轉(zhuǎn)載之文章,文中所有文字內(nèi)容和圖片視頻之知識產(chǎn)權(quán)均系原作者和機構(gòu)所有。文章內(nèi)容觀點,與本網(wǎng)無關(guān)。如有需要刪除,敬請來電商榷!)
前 言在VSLAM中,經(jīng)常會使用魚眼鏡頭或者廣角鏡頭。本文主要分為理論部分與魚眼鏡頭標(biāo)定實踐兩部分,其中理論部分,主要參考《A generic camera model and calibrat...

前 言

  在VSLAM中,經(jīng)常會使用魚眼鏡頭或者廣角鏡頭。本文主要分為理論部分與魚眼鏡頭標(biāo)定實踐兩部分,其中理論部分,主要參考《A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses》,作者為Juho Kannala和Sami S. Brandt,寫于2006年,同時這篇文章的作者在2004年也寫了一篇與魚眼鏡頭標(biāo)定相關(guān)的論文《A Generic Camera Calibration Method for Fish-Eye Lenses》,同樣值得參考。

一 理論部分

  對于大多數(shù)具有窄角甚至廣角鏡頭的傳統(tǒng)相機,針孔相機模型伴隨著鏡頭畸變是一個比較不錯的近似。但是針孔模型不太適用于魚眼鏡頭。魚眼鏡頭一般被設(shè)計用來覆蓋相機前方的整個半球形視場,視角非常大,約180°。然而,不可能通過透視投影在有限的圖像平面上投射半球形視場。因而,魚眼鏡頭服從某些其他投影模型。這就是為什么魚眼鏡頭本身固有的畸變不應(yīng)該僅被認為是與針孔模型的偏差。

  很多作者對魚眼鏡頭的適合的可能模型進行了研究。許多方法的思想是將原始魚眼鏡頭成像為遵循針孔模型,畸變參數(shù)是通過變換后強制按直線來估計的,但問題是這些方法并不能完全校準(zhǔn)。最近,魚眼鏡頭相機的第一種自動校準(zhǔn)方法也出現(xiàn)了,Claus和Fitzgibbon[1]提出了一種畸變模型,它同樣允許相機運動和鏡頭幾何的同時線性估計,而Thirthala和Pollefeys[2]使用徑向一維攝像機的多視圖幾何來估計非參數(shù)相機模型。此外,Barreto和Daniilidis最近的工作引入了徑向基本矩陣來糾正廣角鏡頭的失真[3]。然而,這些方法的重點更多的是在于自動校準(zhǔn)技術(shù),而不是真實鏡頭的精確建模。

  由于透視投影模型不適用于魚眼鏡頭,我們使用更靈活的徑向?qū)ΨQ投影模型。


  不失一般性,甚至權(quán)重都被取消了。這是因為我們可以將r作為奇函數(shù)擴展到負數(shù)一側(cè),而奇數(shù)冪跨越連續(xù)奇函數(shù)集。對于計算,我們需要確定(6)中的各項。

  為了使得本文不那么枯燥,關(guān)于魚眼鏡頭標(biāo)定的理論部分我們僅介紹到這里,如果感興趣的讀者,可以去仔細研讀論文《A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses》。

二 實踐部分

  在上述論文作者的主頁,作者提供的Matlab標(biāo)定代碼:Camera Calibration Toolbox for Generic Lenses:http://www.ee.oulu.fi/~jkannala/calibration/calibration.html。

  此處,筆者簡單為大家介紹一下OpenCV中關(guān)于魚眼標(biāo)定的流程。

  首先,可以參考OpenCV Documentation中提供的魚眼鏡頭標(biāo)定相關(guān)函數(shù):

  https://docs.opencv.org/3.2.0/db/d58/group__calib3d__fisheye.html

  具體魚眼鏡頭標(biāo)定步驟如下:

  本次實驗,使用小覓相機(標(biāo)準(zhǔn)版)進行實驗,小覓相機的鏡頭視角較大,大約在140°左右。小覓相機實物如下圖2所示。

圖2 小覓相機(標(biāo)準(zhǔn)版)實物圖

  Step-1:制作標(biāo)定板。可以是圓,也可以是棋盤格,當(dāng)然也可以是圓環(huán)。此處我們選擇4*11的OpenCV提供的圓形標(biāo)定板。為了使得標(biāo)定結(jié)果趨于收斂,在工作距離附近,在不同姿態(tài)下,采集近20~30張標(biāo)定圖片,如下圖3所示。

圖3 標(biāo)定板采集樣圖

  Step-2:進行形態(tài)學(xué)處理。此處是由于在采集圖片過程中,難免會在圖片中引入環(huán)境光帶來的噪聲。

  Step-3:檢測每一張圖片中的圓心角點坐標(biāo),并排序。(OpenCV中findCirclesGrid函數(shù)同時解決了這個問題)。

  Step-4:進行標(biāo)定。(cv::fisheye:calibrate)

  Step-5:計算重投影誤差。在Step-3中,cv::fisheye::calibrate返回值為總重投影誤差,當(dāng)然也可以進一步計算x和y方向的重投影誤差值。

  Step-6:(此步非必須)進行去畸變,進一步驗證標(biāo)定參數(shù)的正確性。

  組合使用函數(shù):

  1)fisheye::estimateNewCameraMatrixForUndistortRectify 2)cv::fisheye::initUndistortRectifyMap 3)remap

  即可獲得畸變矯正后的效果圖。

  經(jīng)過魚眼標(biāo)定后,使用標(biāo)定好的參數(shù)進行去畸變后效果圖(使用函數(shù)

  void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R,
    OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0)

  進行估計新的相機矩陣用于畸變矯正或者校正時,圖4為參數(shù)balance設(shè)為0時的畸變矯正效果圖,圖5為參數(shù)balance設(shè)為1時的效果圖)。

圖4 魚眼模型標(biāo)定后,畸變矯正,balance=0時

圖5 魚眼模型標(biāo)定后,畸變矯正效果圖,balance=1.0時

  如果選用針孔模型來進行標(biāo)定,去畸變后的效果圖如下所示。

  使用針孔模型進行標(biāo)定后,同樣對圖3進行去畸變效果圖如下(圖6為balance=0,圖7為balance=1時):

圖6 針孔模型標(biāo)定后,畸變矯正效果圖,balance=0時

圖7 針孔模型標(biāo)定后,畸變矯正效果圖,balance=1時

  由圖可見,使用針孔模型去畸變后,整個畫幅的圖像的畸變不符合「枕形」或者「桶形」,因而使用針孔模型來進行標(biāo)定魚眼鏡頭是不太適合的。

三 跋

  最后,留個大家一個問題可以去思考,作者在文章中提到,對于圓形的中心在經(jīng)過透視變換后,由于較大的畸變存在,橢圓的中心已經(jīng)不再對應(yīng)圓形的中心。那么,對于橢圓的中心構(gòu)象偏差,又該如何去矯正呢?

網(wǎng)友評論
文明上網(wǎng),理性發(fā)言,拒絕廣告

相關(guān)資訊

關(guān)注官方微信

手機掃碼看新聞

主站蜘蛛池模板: 溧水县| 抚远县| 富锦市| 石楼县| 资源县| 晋中市| 通许县| 乐山市| 肃南| 汽车| 德格县| 方正县| 江安县| 永德县| 丽江市| 绥芬河市| 巍山| 北票市| 富民县| 通河县| 武邑县| 玉溪市| 葵青区| 绥化市| 黎川县| 竹溪县| 汕头市| 贞丰县| 晋宁县| 南通市| 南漳县| 故城县| 辉县市| 阳山县| 高碑店市| 波密县| 满城县| 高州市| 定西市| 武山县| 临武县|