ORB-SLAM2同OpenMVS实现三维重建

       首先需要在ORB-SLAM2中将位姿导出,对ORB-SLAM2进行一些i需改,使它可以提供稀疏点云、位姿、内参。

1.在Map文件下增添如下函数
 
public:
    void Save(const string &filename,const cv::MatSize
image_size);
    void SaveMapPoint(ofstream &f, MapPoint* mp);
    void SaveKeyFrame(ofstream &f, KeyFrame* kf);
protected:
std::vector<int> KeyId;

2.在System下增加

void System::SaveMap(const string &filename,const
cv::MatSize image_size);
3.在mono_tum.cpp或者orbslam的其他Examples中对 System::SaveMap(const string &filename,const cv::MatSize image_size)这个函数进行调用即可。
SLAM.SaveMap("../Examples/output/sfm.txt",im.size);
OpenMVS接受SLAM的数据格式
MVS640360        
4          
00000000000
10000000000
20000000000
30000000000
8          
-204.078245.1981358.243012    
-34.132255.50521121.0040123   
-1897.51659.161542.02212     

第一行:640 360图像尺寸

第二行:4 关键帧个数

第三行:第一个数字是关键帧的序号,然后依次是fx、fy、cx、cy,后三个是R

第四行:稀疏点个数

第五行及以后:后四个表示看到这个稀疏点的关键帧个数以及关键帧的序号

OpenMVS接口
加入了read_pose.cpp、read_pose.h这两个 c++文件,目的是对SLAM导出的位姿和稀疏点云进行读取,并对OpenMVS 进行初始化。
主要核心函数有
bool load_scene(string file,Scene &scene);
bool read_mvs_pose(string file,MVSPOSE &mvs_pose);
bool save_pointcloud_obj(string name, vector<POINT3F>
points,int num_keyframes,RGB color)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值