本文主要是介绍SIFT特征点单目深度估计点云稀疏重建和基于ORB特征的双目重建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SIFT特征的源码并没有开源,但是在opencv_contrib里面有调用的接口:
直接看SIFT特征的翻译吧:
SIFT
#include <opencv2/xfeatures2d.hpp>
Ptr<Feature2D> sift = xfeatures2d::SIFT::create(0, 3, 0.04, 10);
// 这四个参数都是按照论文填写
目标是要是实现:
1、在单目不同图像之间,利用SIFT特征点的匹配,精准计算出相机下一帧相对于上一帧的R和T
2、在已知相机内参数的情况下,用R、T以及匹配特征点的(u,v)可以进行三角测量,估计上一帧的特诊点深度
3、将深度点转化成点云,保留BGR颜色参数,构建XYZBGR类型点云,存储文件并查看点云
Image files 如下:
这是作者从不同的角度对物体进行拍摄的结果
单目重建如果不利用精准的特征点匹配算法,就无法消除深度估计上的尺度不确定性,但是一旦采用SIFT或者SURF这种在时间复杂度上不占优势的特征提取算法就无法达到实时重建,而只能先拍照再离线重建,所以就需要一个妥协的策略,ORB特征是实时性和深度估计准确性的一个权宜产物。
Point Cloud:
使用单目相机的话,只能达到稀疏重建的效果,而稀疏重建的点则是检测出的特征关键点,因为不能把所有点当做特征点进行图像的match,所以单目只能运用于分析物体的外型,进行稀疏的map
点击下方获取源码链接:
提取码:3ytv
关于ORB实时重建的过程详细可以参考以下论文翻译和链接:
论文翻译
ORBSLAM2
其实看起来SLAM跟SFM还是不太一样的,我也不要这个轨迹图啊,下一步打算一步步改一下原来的project,希望先把高翔书上的fredenburg RGB-D 数据集先跑个稠密重建的结果出来~
这篇关于SIFT特征点单目深度估计点云稀疏重建和基于ORB特征的双目重建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!