代碼解讀 | VINS_Mono中的魚眼相機模型

本文作者是計算機視覺life公衆號成員蔡量力,由於格式問題部分內容顯示可能有問題,更好的閱讀體驗,請查看原文鏈接:代碼解讀 | VINS_Mono中的魚眼相機模型

VINS_Mono中的魚眼相機模型

VINS_Mono代碼支持的相機包括針孔模型和魚眼模型相機,針孔模型大家都比較熟悉了,今天向大家介紹一種魚眼相機模型——MEI模型及其標定方法。

相機模型

投影模型

相比針孔模型可以將3d點直接投影到歸一化平面,魚眼相機則多了一箇中間過程:先將3d點投影到單位球面,再將單位球面上的點投影到歸一化平面上。廢話不多說,請看魚眼相機投影模型示意圖:

file

代碼解讀

VINSMono中相機模型對應代碼在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函數中,該函數是將$2d$ 投影到$3d$ 點(單位球面上),首先對$2d$去畸變,然後再投影到單位球面上。

去畸變過程代碼如下:

//去畸變過程
     int n = 6;
    Eigen::Vector2d d_u;
    distortion(Eigen::Vector2d(mx_d, my_d), d_u);//得到畸變量
    // Approximate value
    mx_u = mx_d - d_u(0);
    my_u = my_d - d_u(1);

    for (int i = 1; i < n;   i)//循環去畸變多次,使結果更接近真值
    {
        distortion(Eigen::Vector2d(mx_u, my_u), d_u);
        mx_u = mx_d - d_u(0);
        my_u = my_d - d_u(1);
    }

將去畸變後的$2d$ 點投影到歸一化球面代碼如下:

    double xi = mParameters.xi();
    if (xi == 1.0) 
    {
        lambda = 2.0 / (mx_u * mx_u   my_u * my_u   1.0);
        P << lambda * mx_u, lambda * my_u, lambda - 1.0;
    }
    else
    {
        lambda = (xi   sqrt(1.0   (1.0 - xi * xi) * (mx_u * mx_u   my_u * my_u))) / (1.0   mx_u * mx_u   my_u * my_u);
        P << lambda * mx_u, lambda * my_u, lambda - xi;
    }

其中xi對應公式$(7)$ 中的$ xi$ 。

reference

  1. Mei, C. and P. Rives. Single view point omnidirectional camera calibration from planar grids. in Robotics and Automation, 2007 IEEE International Conference on. 2007. IEEE.
  2. Jamaluddin A Z , Mazhar O , Morel O , et al. Design and calibration of an omni-RGB D camera. International Conference on Ubiquitous Robots & Ambient Intelligence. IEEE, 2016.
  3. Camera Calibration

交流羣歡迎加入公衆號讀者羣一起和同行交流,目前有SLAM、算法競賽、圖像檢測分割、人臉人體、醫學影像、自動駕駛、綜合等微信羣(以後會逐漸細分),請掃描下面微信號加羣,備註:”暱稱 學校/公司 研究方向“,例如:”張三 上海交大 視覺SLAM“。請按照格式備註,否則不予通過。添加成功後會根據研究方向邀請進入相關微信羣。請勿在羣內發送廣告,否則會請出羣,謝謝理解~

推薦閱讀

如何從零開始系統化學習視覺SLAM?從零開始一起學習SLAM | 爲什麼要學SLAM?從零開始一起學習SLAM | 學習SLAM到底需要學什麼?從零開始一起學習SLAM | SLAM有什麼用?從零開始一起學習SLAM | C 新特性要不要學?從零開始一起學習SLAM | 爲什麼要用齊次座標?從零開始一起學習SLAM | 三維空間剛體的旋轉從零開始一起學習SLAM | 爲啥需要李羣與李代數?從零開始一起學習SLAM | 相機成像模型從零開始一起學習SLAM | 不推公式,如何真正理解對極約束?從零開始一起學習SLAM | 神奇的單應矩陣從零開始一起學習SLAM | 你好,點雲從零開始一起學習SLAM | 給點雲加個濾網從零開始一起學習SLAM | 點雲平滑法線估計從零開始一起學習SLAM | 點雲到網格的進化從零開始一起學習SLAM | 理解圖優化,一步步帶你看懂g2o代碼從零開始一起學習SLAM | 掌握g2o頂點編程套路從零開始一起學習SLAM | 掌握g2o邊的代碼套路從零開始一起學習SLAM | 用四元數插值來對齊IMU和圖像幀零基礎小白,如何入門計算機視覺?SLAM領域牛人、牛實驗室、牛研究成果梳理我用MATLAB擼了一個2D LiDAR SLAM可視化理解四元數,願你不再掉頭髮最近一年語義SLAM有哪些代表性工作?視覺SLAM技術綜述彙總 | VIO、激光SLAM相關論文分類集錦研究SLAM,對編程的要求有多高?2018年SLAM、三維視覺方向求職經驗分享2018年SLAM、三維視覺方向求職經驗分享深度學習遇到SLAM | 如何評價基於深度學習的DeepVO,VINet,VidLoc?AI資源對接需求彙總:第1期AI資源對接需求彙總:第2期AI資源對接需求彙總:第3期
計算機視覺是人工智能之眼。公衆號已原創170篇文章,兼具系統性,嚴謹性,易讀性,菜單欄點擊“彙總分類”查看原創系列包括:三維視覺、視覺SLAM、深度學習、機器學習、深度相機、入門科普、CV方向簡介、手機雙攝、全景相機、相機標定、醫學圖像、前沿會議、機器人、ARVR、行業趨勢等。同時有入門基礎、項目實戰、面試經驗、教學資料等乾貨。一鍵關注星標,加技術交流羣,一起進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章