視覺SLAM中的深度估計問題


一、研究背景

視覺SLAM需要獲取世界坐標系中點的深度。

世界坐標系到像素坐標系的轉換為(深度即Z):

 

深度的獲取一共分兩種方式:

a)主動式

  RGB-D相機按照原理又分為結構光測距、ToF相機

  

              ToF相機原理

 

b)被動

被動式無法精確得到點的深度值,因此存在深度的估計問題,按照主流相機的種類可以分為雙目相機估計以及單目相機估計。

接下來詳細介紹雙目系統以及單目SLAM系統的深度估計問題

 

二、雙目系統

雙目相機模型如下圖所示:

(圖源《視覺SLAM十四講》)

 要計算深度z,需要已知世界坐標系中一點在左相機與右相機中對應的像素坐標UL與UR,即視差d。

獲取d關鍵在於雙目匹配,即左相機與右相機中的像素坐標對應的世界坐標系中的同一點。

舉例:

  • ORB-SLAM2基於特征點獲取視差:FAST特征點+BREIF算子。

  • 塊匹配算法(對圖像灰度值的操作)
    •  SAD(Sum of Absolute Difference)
    •  SSD(Sum of Squared Distance)
    •     NCC(Normalized Correlation) 

 

得到匹配到的像素必須滿足通過對極約束:

三、單目相機

針孔相機模型為:

相機坐標系下為(xC,yC,zC),像素坐標系為(u,v),歸一化坐標系為(u0,v0)

 

3.1 三角化估計深度

通過兩處觀察同一個夾角,從而確定該點的距離

在通過對極幾何求得R,t后,R,t已知

 

 通過優化方法可求得上式中右邊的最小二乘解,三角化的矛盾:平移增大,測量的精度會變高,但是可能會導致匹配失效。

 ORB-SLAM單目中的三角化代碼如下,可作參考:

void Initializer::Triangulate(const cv::KeyPoint &kp1, const cv::KeyPoint &kp2, const cv::Mat &P1, const cv::Mat &P2, cv::Mat &x3D) 
{ 
cv::Mat A(4,4,CV_32F); 
 A.row(0) = kp1.pt.x*P1.row(2)-P1.row(0); 
A.row(1) = kp1.pt.y*P1.row(2)-P1.row(1); 
A.row(2) = kp2.pt.x*P2.row(2)-P2.row(0); 
A.row(3) = kp2.pt.y*P2.row(2)-P2.row(1); 
 cv::Mat u,w,vt; 
cv::SVD::compute(A,w,u,vt,cv::SVD::MODIFY_A| cv::SVD::FULL_UV); 
x3D = vt.row(3).t(); 
x3D = x3D.rowRange(0,3)/x3D.at<float>(3); 
} 

 

 

 

 

 

3.2 深度濾波器

本質上為卡爾曼濾波估計深度

假設深度服從某種分布,最后深度的方差不斷減少並收斂

以SVO為例:

SVO估計深度流程如下:

SVO中點服從高斯均勻分布:

點深度滿足分布:

 

3.3 與監督學習結合

 

[1]Tateno, K., Tombari, F., Laina, I., & Navab, N. (2017, July). CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (Vol. 2).
[2] Eigen D, Fergus R. Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 2650-2658.

 

3.4 與非監督學習結合

總結一下思想:

矩陣T21的估計值,深度估計網絡根據單目圖像,輸出深度的估計值。該值再結合左右視圖的變換矩陣TLR,以及相機的內參K,可以從左圖重構出右圖,還可以把左圖的特征映射到右圖。重構圖和特征與真值的差異構成了損失函數,利用反向傳播算法可以不斷優化網絡。

Zhan, H., Garg, R., Weerasekera, C. S., Li, K., Agarwal, H., & Reid, I. (2018, March). Unsupervised Learning of Monocular Depth Estimation and Visual Odometry with Deep Feature Reconstruction. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 340-349).

 

3.5 與半監督學習結合

 

 

監督學習部分 ground-truth depth由激光雷達提供,無監督學習部分由雙目相機的圖像訓練。損失函數的構成:預測深度與groud-truth的差,左圖與右圖+左深度圖重構的左圖的光度誤差,右圖與左圖重構的光度誤差,泛化損失:對深度和灰度求梯度。

 

Kuznietsov, Y., Stückler, J., & Leibe, B. (2017, July). Semi-supervised deep learning for monocular depth map prediction. In Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 6647-6655).

 

四、總結

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM