0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

雙目測(cè)距系列(二):魚(yú)眼鏡頭雙目標(biāo)定及測(cè)距

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-08 22:11 ? 次閱讀
轉(zhuǎn)載自:雙目測(cè)距系列(二)魚(yú)眼鏡頭雙目標(biāo)定及測(cè)距
作者:ltshan139

前言

這幾天把基于opencv C++ api將魚(yú)眼鏡頭的雙目標(biāo)定以及測(cè)距功能實(shí)現(xiàn)完畢,效果還可以,至少對(duì)齊得非常棒。 這里把其流程及其關(guān)鍵函數(shù)在這里總結(jié)一下。
對(duì)于雙目標(biāo)定而言,opencv一共支持兩種模型:普通針孔相機(jī)模型和魚(yú)眼相機(jī)模型fisheye。后者是opencv3.0后才開(kāi)始支持的。從使用角度講,它倆主要差別就在于畸變系數(shù)不一樣。
雙目測(cè)距流程一共分為四大步:標(biāo)定,對(duì)齊,匹配以及測(cè)距。這點(diǎn)對(duì)于普通攝像頭模型和魚(yú)眼模型都適用。下面就基于魚(yú)眼攝像頭模型來(lái)講解各個(gè)步驟具體內(nèi)容。

標(biāo)定

標(biāo)定Calibration包括單目標(biāo)定和雙目標(biāo)定,前者的輸出結(jié)果主要是內(nèi)參(3x3矩陣,包括fx,fy以及cx和cy)和畸變系數(shù)(1x4矩陣 K1,K2,K3,K4);后者輸出的主要是是外參,即右攝像頭基于左攝像頭的姿態(tài),包括R和T兩個(gè)矩陣。
標(biāo)定一個(gè)主要工作就是對(duì)著標(biāo)定板拍圖,標(biāo)定板最好遍布整個(gè)圖像區(qū)域,一般20~30張就足夠了。 opencv目前可以對(duì)三種pattern的標(biāo)定板:棋盤(pán)格,圓以及非對(duì)稱(chēng)圓來(lái)找角點(diǎn),其API如下所示:

    case Settings::CHESSBOARD:
        found = findChessboardCorners( view, s.boardSize, pointBuf, chessBoardFlags);
        break;
    case Settings::CIRCLES_GRID:
        found = findCirclesGrid( view, s.boardSize, pointBuf );
        break;
    case Settings::ASYMMETRIC_CIRCLES_GRID:
        found = findCirclesGrid( view, s.boardSize, pointBuf, CALIB_CB_ASYMMETRIC_GRID );

角點(diǎn)正確找到后,就可以開(kāi)始單目標(biāo)定,其對(duì)應(yīng)API為:

CV_EXPORTS_W double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size,
    InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0,
        TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));

單目標(biāo)定結(jié)束后,接下來(lái)就是雙目標(biāo)定:

CV_EXPORTS_W double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2,
                              InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize,
                              OutputArray R, OutputArray T, int flags = fisheye::CALIB_FIX_INTRINSIC,
                              TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));

這里需要注意的是,雙目標(biāo)定可以基于前面單目標(biāo)定出來(lái)的內(nèi)參來(lái)直接算R和T,也可以將單目?jī)?nèi)參作為一個(gè)初始值來(lái)重新迭代計(jì)算出新的內(nèi)參和R以及T。

對(duì)齊

攝像頭內(nèi)參和外參都有了之后,就可以開(kāi)始調(diào)用下面的API來(lái)分別獲得左、右攝像頭新的旋轉(zhuǎn)矩陣R和內(nèi)參投影矩陣P。

CV_EXPORTS_W void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec,
    OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(),
    double balance = 0.0, double fov_scale = 1.0);

緊接著是基于新的矩陣來(lái)生成左右攝像頭的映射表left_mapx, left_mapy, right_mapx以及right_mapy。

CV_EXPORTS_W void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P,
    const cv::Size& size, int m1type, OutputArray map1, OutputArray map2);

有了映射表mapx和mapy,在后面測(cè)距的時(shí)候就可以調(diào)用remap()來(lái)對(duì)新的測(cè)試圖片進(jìn)行校正。

匹配

匹配是相對(duì)最耗時(shí)的步驟,即使前面左右圖像對(duì)齊后,只需要在行上來(lái)匹配。常用的匹配算法有SGBM,BM等等。相對(duì)來(lái)講,SGBM兼顧了速度和準(zhǔn)確度,因而用的比較多。

Ptr sgbm = StereoSGBM::create(0, 16, 3);
sgbm->setPreFilterCap(63);
sgbm->setBlockSize(pParas->sgbmWindowSize);
int channel_cnt = left_rectify_img.channels();
sgbm->setP1(8 * channel_cnt * pParas->sgbmWindowSize * pParas->sgbmWindowSize);
sgbm->setP2(32 * channel_cnt * pParas->sgbmWindowSize * pParas->sgbmWindowSize);
sgbm->setMinDisparity(0);
sgbm->setNumDisparities(pParas->NumDisparities);
sgbm->setUniquenessRatio(pParas->UniquenessRatio);
sgbm->setSpeckleWindowSize(101);
sgbm->setSpeckleRange(10);
sgbm->setDisp12MaxDiff(-1);
sgbm->setMode(StereoSGBM::MODE_SGBM);

opencv已經(jīng)將匹配算法 封裝的很好了,唯一需要注意的就是參數(shù)值得調(diào)節(jié)會(huì)帶來(lái)不一樣得匹配效果。常見(jiàn)的需要調(diào)節(jié)的參數(shù)有:

    paras.sgbmWindowSize = 7;
    paras.NumDisparities = 16 * 20;
    paras.UniquenessRatio = 12;

測(cè)距

匹配完成就能得到視差圖disparity map。 有了視差圖,每個(gè)點(diǎn)的Z方向上深度值獲取就變得簡(jiǎn)單了。通過(guò)下面公式:
Z = B * fx / d
B是兩個(gè)攝像頭之間的距離,其值等于外參平移矩陣X方向上的絕對(duì)值,即abs(T.at(0,0))。
fx則為左攝像頭內(nèi)參矩陣的第一個(gè)值m_fisheye_intrinsicsL.val[0]
d則為每個(gè)像素在左右攝像頭像素坐標(biāo)系上X方向的差,由前面匹配步驟所得。



推薦閱讀



更多海思AI芯片方案學(xué)習(xí)筆記歡迎關(guān)注海思AI芯片方案學(xué)習(xí)

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29382

    瀏覽量

    267663
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5437

    瀏覽量

    120790
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    激光測(cè)距傳感器怎么接線

    物體反射后,被接收器接收。通過(guò)測(cè)量激光發(fā)射和接收的時(shí)間差,可以計(jì)算出傳感器與目標(biāo)物體之間的距離。激光測(cè)距傳感器的測(cè)量精度高、響應(yīng)速度快、抗干擾能力強(qiáng),是一種非常實(shí)用的測(cè)量工具。 、激光測(cè)距
    的頭像 發(fā)表于 08-29 16:13 ?445次閱讀

    UWB測(cè)距典型應(yīng)用:人車(chē)測(cè)距防撞

    UWB測(cè)距相較UWB定位結(jié)構(gòu)更為簡(jiǎn)單:測(cè)距基站、測(cè)距標(biāo)簽、聲光報(bào)警器(非必選)就構(gòu)成了一組測(cè)距單元,無(wú)需調(diào)試校準(zhǔn),只需預(yù)先在后臺(tái)設(shè)置好距離閾值就能夠便捷部署應(yīng)用。典型應(yīng)用:人車(chē)
    的頭像 發(fā)表于 06-28 10:36 ?354次閱讀
    UWB<b class='flag-5'>測(cè)距</b>典型應(yīng)用:人車(chē)<b class='flag-5'>測(cè)距</b>防撞

    XL5300 dTOF測(cè)距模塊簡(jiǎn)單介紹,加鏡頭后可達(dá)7.6米測(cè)距距離,±4%測(cè)距精度

    的ToF 采集與處理技術(shù),XL5300模塊可實(shí)現(xiàn)最大 4 米的精確距離測(cè)量,加上配套光學(xué)鏡頭后可實(shí)現(xiàn)最大7.6M測(cè)量距離,測(cè)距精度可以達(dá)到±4%,最大90 Hz快速測(cè)距頻率 。 XL5300 dTOF
    的頭像 發(fā)表于 06-19 17:18 ?385次閱讀

    奧比中光正式發(fā)布全新Gemini 330系列雙目3D相機(jī)

    4月29日,奧比中光正式發(fā)布全新Gemini 330系列雙目3D相機(jī),首發(fā)產(chǎn)品包括Gemini 335、Gemini 335L兩款通用型高性能雙目3D相機(jī)。
    的頭像 發(fā)表于 04-30 10:41 ?520次閱讀
    奧比中光正式發(fā)布全新Gemini 330<b class='flag-5'>系列</b><b class='flag-5'>雙目</b>3D相機(jī)

    工業(yè)相機(jī)單目和雙目的區(qū)別

    工業(yè)相機(jī)標(biāo)定的方法根據(jù)工業(yè)相機(jī)的數(shù)目可分為單目標(biāo)定、雙目標(biāo)定Q以及多目標(biāo)定。
    的頭像 發(fā)表于 03-26 16:26 ?1607次閱讀
    工業(yè)相機(jī)單目和<b class='flag-5'>雙目</b>的區(qū)別

    激光測(cè)距傳感器的原理和應(yīng)用實(shí)例

    激光測(cè)距傳感器原理和應(yīng)用實(shí)例 激光測(cè)距傳感器是一種通過(guò)激光技術(shù)進(jìn)行距離測(cè)量的傳感器。它利用激光器產(chǎn)生的激光束,經(jīng)過(guò)目標(biāo)物體后,通過(guò)接收器接收反射回來(lái)的激光束,通過(guò)計(jì)算激光的回程時(shí)間來(lái)確定目標(biāo)
    的頭像 發(fā)表于 03-05 16:29 ?1266次閱讀

    單目視覺(jué)系統(tǒng)檢測(cè)車(chē)輛的測(cè)距方法

    以前提過(guò)單目測(cè)距的問(wèn)題,檢測(cè)的障礙物2-D框加上攝像頭的姿態(tài)和路面假設(shè)。以下根據(jù)公開(kāi)發(fā)布的論文討論具體的算法。
    發(fā)表于 01-11 10:47 ?373次閱讀
    單目視覺(jué)系統(tǒng)檢測(cè)車(chē)輛的<b class='flag-5'>測(cè)距</b>方法

    激光測(cè)距模塊的工作原理 激光測(cè)距模塊怎么用 激光測(cè)距方法有哪幾種

    激光測(cè)距模塊的工作原理 激光測(cè)距模塊怎么用 激光測(cè)距方法有哪幾種? 激光測(cè)距模塊,也稱(chēng)為激光測(cè)距儀或激光
    的頭像 發(fā)表于 01-03 15:59 ?1537次閱讀

    LabVIEW開(kāi)發(fā)自動(dòng)駕駛的雙目測(cè)距系統(tǒng)

    LabVIEW開(kāi)發(fā)自動(dòng)駕駛的雙目測(cè)距系統(tǒng) 隨著車(chē)輛駕駛技術(shù)的不斷發(fā)展,自動(dòng)駕駛技術(shù)正日益成為現(xiàn)實(shí)。從L2級(jí)別的輔助駕駛技術(shù)到L3級(jí)別的受條件約束的自動(dòng)駕駛技術(shù),車(chē)輛安全性和智能化水平正在不斷提升
    發(fā)表于 12-19 18:02

    雙目光波導(dǎo)AR智能眼鏡_顯示光機(jī)模組和主板硬件設(shè)計(jì)

    雙目光波導(dǎo)AR智能眼鏡_顯示光機(jī)模組和主板硬件設(shè)計(jì)。該眼鏡搭載采用12納米工藝的MT6765芯片(還有兩個(gè)可選芯片:MT6877和MT6833),并配備手機(jī)端MTK6765芯片,提供強(qiáng)大的計(jì)算能力
    的頭像 發(fā)表于 12-04 17:55 ?1069次閱讀
    <b class='flag-5'>雙目</b>光波導(dǎo)AR智能<b class='flag-5'>眼鏡</b>_顯示光機(jī)模組和主板硬件設(shè)計(jì)

    雙目測(cè)寬儀高質(zhì)量生產(chǎn)利器 測(cè)寬儀價(jià)格

    雙目測(cè)寬儀是基于機(jī)器視覺(jué)原理及模擬人的雙眼進(jìn)行寬度尺寸自動(dòng)測(cè)量的儀器,是一種高度自動(dòng)化的工業(yè)實(shí)時(shí)在線寬度檢測(cè)儀表。 雙目測(cè)寬儀是一種智能化的全自動(dòng)工業(yè)在線實(shí)時(shí)寬度檢測(cè)設(shè)備,兩個(gè)工業(yè)相機(jī)就像人的雙眼
    發(fā)表于 12-04 17:10

    機(jī)器視覺(jué)雙目測(cè)寬儀具體有什么優(yōu)勢(shì)?

    雙目測(cè)寬儀是機(jī)器視覺(jué)原來(lái)制造而成的智能寬度檢測(cè)設(shè)備,廣泛應(yīng)用于板材類(lèi)產(chǎn)品的寬度檢測(cè)。通過(guò)測(cè)寬儀的使用,實(shí)時(shí)了解產(chǎn)品寬度品質(zhì),進(jìn)行超差提示,減少?gòu)U品的生產(chǎn)。 雙目測(cè)寬儀優(yōu)勢(shì) 測(cè)量軟件界面顯示:產(chǎn)品規(guī)格
    發(fā)表于 11-28 17:13

    AR智能眼鏡雙目光波導(dǎo)/主板硬件技術(shù)

    AR眼鏡_AR智能眼鏡雙目光波導(dǎo)/主板硬件技術(shù)。光波導(dǎo)技術(shù)結(jié)合Micro OLED屏幕被視為AR眼鏡光學(xué)方案的黃金組合,具有輕薄、高清晰度、大視角和小體積等優(yōu)勢(shì)。在AR
    的頭像 發(fā)表于 11-25 15:43 ?1510次閱讀
    AR智能<b class='flag-5'>眼鏡</b><b class='flag-5'>雙目</b>光波導(dǎo)/主板硬件技術(shù)

    新品雙目測(cè)寬儀測(cè)量原理 寬厚板材在線檢測(cè)

    寬厚板材在線測(cè)寬,可采用雙目測(cè)寬儀,如果采用平行光檢測(cè)法,有可能會(huì)因?yàn)閮A斜導(dǎo)致測(cè)量不準(zhǔn),因此采用雙目測(cè)寬儀進(jìn)行寬度尺寸的檢測(cè)。 雙目測(cè)寬儀測(cè)量原理 在利用相機(jī)測(cè)量寬度時(shí),由于單個(gè)相機(jī)在成像時(shí)存在“近
    發(fā)表于 11-20 17:25

    單目光波導(dǎo)AR眼鏡VS雙目光波導(dǎo)智能眼鏡

    單目AR眼鏡具有較小的視角,相比雙目眼鏡更輕便且結(jié)構(gòu)更穩(wěn)定,佩戴者可以持久穩(wěn)定地使用,但其顯示效果在沉浸感和觀感上不如雙目眼鏡好。相比于單目
    的頭像 發(fā)表于 11-17 19:44 ?733次閱讀
    單目光波導(dǎo)AR<b class='flag-5'>眼鏡</b>VS<b class='flag-5'>雙目</b>光波導(dǎo)智能<b class='flag-5'>眼鏡</b>