Matlab版本的ORB-SLAM开发
目的:
- 负责人说做研究要用matlab,我们又在用orb-slam,所以就准备把orb-slam全套移植到matlab里面。
细节:
- orb-slam中的函数一个一个的在matlab里面写。但是matlab本身不是面向对象的,所以算法的整体架构还是有变换。
- 设计了一个核心数据结构,这个结构中存储了所有算法的状态:3d点,frame等。所有函数都直接和这个结构交换数据。
- 支持把这个matlab的核心结构和c++的核心结构中间通过matlab的mex机制进行转变。也就是可以某些模块可以在matlab里完成,然后把matlab核心结构转换为c++的核心结构,然后又在c++中完成另外一个步骤。后面还可以再把数据换回来。而c++中又实现了一个自定义的c++核心结构和orb-slam数据的转换。
讨论:
- 其实matlab只适合一些单个功能的原理验证。因为matlab并不适合复杂的程序的管理。并且很多算法的问题其实是工程化的问题,特别是3d视觉。所以即使matlab里面跑得再好,也不能保证c++中没有问题。其实很多时候是很多问题必须针对c++这种语言来解决,是找不到通用的解决方法的。所以做3d视觉的研究最好直接在c++上进行。
- 一开始没有直接针对问题来考虑做什么事情,所以做了很多看似很复杂,但实际没什么效果的事情。
- matlab的mex机制真的用起来很麻烦。里面全是指针的运算,一不小心就越界了。
- 并且matlab的运行速度真的很慢,为了提高速度需要做很多针对matlab的优化,但是这些优化对最终的产品没有任何用处。而算法的运算速度直接影响算法的调优。
- 这种所有函数都和一个核心结构交换数据的方式其实并不太好。程序小的时候用起来很方便。但是因为每个函数的输入输出其实很不明显,造成的问题有:
- 其他人阅读代码很不方面
- 调试很不方便,因为很难做函数的单元测试了
- 个人现在比较推荐以函数编程为主,面向对象为辅。面向对象只在局部使用,不要出现那种超大的万能的对象。这样每个模块只能拿到自己需要的那部分数据。虽然这样会多很多结构的转换和内存拷贝。但个人觉得在研发阶段是值得的。等到最后做速度优化的时候,只把造成瓶颈的地方改为内存共享。
- 不使用matlab,但不是说算法的子模块研究不重要。其实要真正研究透一个算法,必须要把里面的子模块独立出来,在不同的环境下,看这个模块的性能,这样才能明白这个算法为什么要使用这个模块。
Matlab版本的ORB-SLAM开发相关推荐
- 更换matlab版本需要注意事项,AMD 篇四:更换Matlab调用MKL库版本
AMD 篇四:更换Matlab调用MKL库版本 2020-03-01 23:37:51 4点赞 5收藏 4评论 前言 这次说一下如何更换MATLAB调用的MKL库.MATLAB所调用的MKL库通常不会 ...
- SLAM开发环境搭建和配置
1.安装WSL子系统 为了避免安装Windows+Linux双系统的麻烦和资源浪费,安装Windows版本的Linux系统即WSL子系统. 1.1 默认安装 一般情况下默认安装WSL子系统的安装路径在 ...
- matlab中vspan,搭建VS2017_QT_MATLAB开发环境
微信公众号: MitchHong 微信号: ASparkleSubscription 作者: Mitch Hong Contents 零. 前言一. VS2017-Qt5.11.1环境的搭建1.下载源 ...
- matlab版本之间的单双引号问题
matlab版本之间的单双引号问题 问题描述 运行matlab文件的时候出现错误提示 Creating a string using double quotes is not supported. U ...
- Windows下Faster R-CNN 配置/Matlab版本编译
配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...
- 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本
今天在自己的电脑上编译MATLAB版本的faster-RCNN代码,将过程在这作一记录. 1.我的环境:Windows10 ,VS2013 , MATLAB2017a ,CUDA7.5 首先下载作者的 ...
- 机器学习快速截图工具matlab版本——文件夹批量处理(原创)
简要说明: 1.打开文件夹后,遍历所有JPG格式图片,在同目录下新建一个CROP的文件夹存放裁剪的图片. 2.对每张图片, (1)初步框选你要裁剪的矩形框,会自动以你框选的左上点为起点,裁剪大小为长宽 ...
- Faster R-CNN的安装及测试(Python版本和Matlab版本)
rbg的Python版本 一.拉取源码 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 拉取完成后,在/h ...
- python的集成开发环境搭建_Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细)...
Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细) 前沿 Hello,各位看官,您是不是决定要学习Python数据分析,您是不是现在正在"学" ...
- matlab pdist如何实现,在MATLAB版本7中相当于pdist2
在MATLAB版本7中相当于pdist2 我需要计算matlab中2个matrix之间的欧式距离. 目前我使用bsxfun和计算距离如下(我附上一段代码): for i=1:4754 test_dat ...
最新文章
- 更新view是可以update到表的
- [C++]C++11:Function与Bind
- c++ char*转string_CC++|输入输出与内存、缓存、设备文件
- pytorch 转换onnx_新版PyTorch发布!新增TorchScript API,扩展ONNX导出
- ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程
- Visual Studio 2022发布了,我最爱的5大特性
- C#的变迁史10 - C# 5.0 之其他增强篇
- 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
- 投递简历得不到回复,并不是你的简历不好,可能是这个原因
- 在MySQL中删除重复的行
- 配置centOS下的Python
- Atitit webshell选型 1. PHP Shell 2.4	1 1.1. 设置密码	4 2. 测试切换目录	4 2.1. 自己实现	5 1.PHP Shell 2.4 Please co
- JAVA购物管理系统
- 多目标进化算法(MOEA)概述
- Dynamics AX 2012 的工业物联网解决方案
- C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
- defcon quals 2016 feedme writeup
- 基于SSM的花店系统
- React-native实现联系人列表分组组件
- 搜狗输入法人机交互设计的用户体验