
算法推导系列
文章平均质量分 91
白巧克力亦唯心
知其然得知其所以然。
展开
-
变分法:在图像处理中的应用(一)
前言 最近学习稠密重建的相关知识,发现变分法通常作为一个平滑的正则项出现在残差平方和的损失函数中。而图像处理中又经常出现这类最小损失函数的优化问题,如图像分割、稠密光流、稠密重建等等,这些优化问题中都有可能涉及到变分法。因此,我想系统记录下学习过程:变分法是什么?全变分正则项有何含义?加了变分正则项的损失函数如何求解?等等。本系列应该会有三章:第一章讲数学基础:泛函极值和变分法第二章讲变分法在图像去噪上的应用第三章讲变分法在稠密重建上的应用变分法基础 变分法求解的过程为:构建变分函数,利原创 2020-06-24 18:33:32 · 8118 阅读 · 10 评论 -
DSO 中的Windowed Optimization
DSO中除了完善直接法估计位姿的误差模型外(加入了仿射亮度变换,光度标定,depth优化),另一个核心就是像okvis一样使用sliding window来优化位姿,Engel也专门用了一节来介绍它。然而对于初次接触sliding window的初学者来说,这部分论文里使用的众多专业术语,如“First Estimate Jacobians”,“Marginalization”,“Schur co原创 2016-12-26 11:16:53 · 24999 阅读 · 33 评论 -
graph slam tutorial : g2o 的使用
下载安装g2o,怎么安装,注意安装那些库,并用优化前后的图简单介绍介绍。 g2o作为一个外接程序库在自己程序里怎么使用呢?如果不熟悉cmake的话,可以点击这里(看文章中在工程中查找和使用其他程序库的方法)以及这里。 所以要把g2o程序库文件放到自己的程序里,我们要找到g2o/cmake_modules文件夹,把.cmake文件复制到你的程序目录的modul原创 2015-10-12 11:06:30 · 41794 阅读 · 21 评论 -
卡尔曼滤波 -- 从推导到应用(一)
前言 卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方差为目的而推导出的几个递推数学等式,也可以从贝叶斯推断的角度来推导。 本文将分为两部分:第一部分,结合例子,从最小均方差的角度,直观地介绍卡尔曼滤波的原理,并给出较为详细的数学推导。第二部分,通过两个例子给出卡尔曼滤波的实际应用。其中将详细介绍一个匀加速模型,并直观的对比系统状态模型的建立对滤波的影响。原创 2013-12-30 01:26:46 · 249746 阅读 · 158 评论 -
Homography 知多少?
在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography),这三种情形在我应用SVO的过程中颇有同感,打破了我对HH矩阵的固有映像,即只能用于平面或近似平面。但是我不知道如何去具体分析这里面的误差,比如不共面的情况时,应用HH矩阵将一个图像坐标从图像1投影到图像2时,它会落在图像哪个位置?和实际位置的误差该怎么计算?误差会有多原创 2017-01-13 14:39:45 · 57165 阅读 · 29 评论 -
单目视觉里程计 mono vo
之前为了改动svo进行了一些不同的尝试,两个视频demo在下面。效果1视频链接: https://v.qq.com/x/page/d0383rpx3ap.html在不同数据集上测试 效果2视频链接: https://v.qq.com/x/page/k03832nd7pu.htmlvo2对着天花板,用于室内机器人 vo2在euroc数据集上,无人机从起点飞出到飞回原点,可看到轨迹中起始点闭原创 2017-03-12 23:18:19 · 25422 阅读 · 25 评论 -
SVO 代码笔记
SVO代码中有很多细节值得注意原创 2016-08-03 23:06:06 · 24198 阅读 · 24 评论 -
Particle Filter Tutorial 粒子滤波:从推导到应用(一)
前言: 博主在自主学习粒子滤波的过程中,看了很多文献或博客,不知道是看文献时粗心大意还是悟性太低,看着那么多公式,总是无法把握住粒子滤波的思路,也无法将理论和实践对应起来。比如:理论推导过程中那么多概率公式,为什么计算出后验概率就能估计出系统状态呢,概率怎么和系统的状态变量对应上了?实际编程中,状态粒子是怎么一步步采样出来的,为什么程序里面都是直接用状态方程来计算,不是说采样嘛?经过原创 2014-11-08 22:24:25 · 112771 阅读 · 115 评论 -
基于平面 marker 的 Bundle Adjustmet
marker BA 公式推导李代数求导基础有四种方式进行李代数的求导: gtsam作者笔记里的推导方式,strasdat博士论文里的推导方式,TUM kerl硕士论文里的推导方式,最后就是barfoot的state esitamtion for robotics一书中的推导了。最直观简介的是gtsam和kerl的推导,最完备最可扩展的推导是barfoot的方式,也就是高翔书上的推导。原创 2018-12-08 18:02:02 · 5641 阅读 · 16 评论 -
2d Laser 和 camera 标定工具原理及使用方法
2d 激光和相机之间之间的标定早在 04 年就出了成熟的论文和方法,去年 17 年 ICCV, IROS,今年 IROS 等依然还有论文产出。具体的论文列表可以参考我的《论文阅读整理》博客,这篇博客主要讲述 04 年方法的原理以及代码的实现, 代码将开放,在自己机器人上采集了多次数据进行标定,标定结果在 1cm 内浮动,均值附近正负几毫米。标定原理准备材料:标定板一个(平板上贴有棋盘格或者二维...原创 2018-12-14 14:28:44 · 14635 阅读 · 83 评论 -
2d Laser 和 Odomter 内外参数标定工具原理及使用方法
前言两轮差速轮式机器人可以基于码盘数据和两轮间距以及车轮半径进行航迹推演,得到机器人的轨迹。激光雷达也可以利用 icp 等算法计算出两时刻间机器人的相对运动量。因此,可以利用两者数据进行融合定位,本博客根据 Censi 2013 年发表在 TRO 上的论文,对如何标定里程计内参数 ( 轮子半径,两轮间距),以及外参数(激光和里程计之间的坐标关系)进行理论推导,并将对应标定代码整理在了我们的网站上...原创 2019-03-15 12:26:07 · 18364 阅读 · 80 评论 -
高斯过程简析
前言SLAM 方向对 Gaussian Process (GP)的需求不大,但这两年有好几篇 IROS,ICRA 的论文用高斯过程来拟合轨迹,拟合误差模型等,因此这篇笔记对高斯过程概念和原理进行简单梳理,理清楚 GP 是怎么来的,以及怎么用它。如果想更进一步系统学习下,推荐 MIT 出版的 Gaussian Processes for Machine Learning.高斯过程是什么高斯过程...原创 2019-03-18 15:41:13 · 7483 阅读 · 5 评论 -
从零开始手写 VIO
前言最近和高博合作推出了一个关于 VIO 的课程,借此博客推荐下。这个课程的图优化后端是我们自己写的,仅依赖 Eigen, 实现后系统的精度和 ceres 以及 g2o 不相上下。 个人感觉这个课程还是能学到不少东西,特别是网上关于 SLAM 后端的资料比较少。下面是一些关于这个课程的介绍:这两年视觉 SLAM 相当火了,作为面试官常常感叹现在的小伙伴比我们那会厉害多了,简历中一般都会说熟悉...原创 2019-05-13 21:40:18 · 20592 阅读 · 13 评论 -
SLAM中的marginalization 和 Schur complement
在视觉SLAM的很多论文中,会大量或者偶尔出现marginalization这个词(翻译为边缘化),有的论文是特地要用它,比如sliding window slam [2], okvis [3], dso [4]。而有的论文是简单的提到,比如g2o[1],orbslam。因此,很有必要对这个概念进行了解。原创 2016-10-15 23:07:30 · 60620 阅读 · 21 评论 -
svo: semi-direct visual odometry 论文解析
SVO 从名字来看,是半直接视觉里程计,所谓半直接是指通过对图像中的特征点图像块进行直接匹配来获取相机位姿,而不像直接匹配法那样对整个图像使用直接匹配。整幅图像的直接匹配法常见于RGBD传感器,因为RGBD传感器能获取整幅图像的深度。 虽然semi-direct方法使用了特征,但它的思路主要还是通过direct method来获取位姿,这和feature-method不一样。同时,semi-d原创 2016-04-08 15:43:16 · 45079 阅读 · 32 评论 -
径向基(Radial basis function)神经网络、核函数的一些理解
径向基函数(RBF)在神经网络领域扮演着重要的角色,如RBF神经网络具有唯一最佳逼近的特性,径向基作为核函数在SVM中能将输入样本映射到高维特征空间,解决一些原本线性不可分的问题。 本文主要讨论: 1. 先讨论核函数是如何把数据映射到高维空间的,然后引入径向基函数作核函数,并特别说明高斯径向基函数的几何意义,以及它作为核函数时为什么能把数据映射到无限维空间。 2.提到了径向基函数,就继续讨论下径向基函数神经网络为什么能用来逼近。原创 2014-07-24 23:01:13 · 48130 阅读 · 7 评论 -
卡尔曼滤波 -- 从推导到应用(二)
这部分主要是通过对第一部分中提到的匀加速小车模型进行位移预测。先来看看状态方程能建立准确的时候,状态方程见第一部分分割线以后内容,小车做匀加速运动的位移的预测仿真如下。原创 2013-12-30 11:08:21 · 55154 阅读 · 53 评论 -
LQR 的直观推导及简单应用
假设有一个系统nengyon原创 2014-09-14 19:37:27 · 96412 阅读 · 23 评论 -
Particle Filter Tutorial 粒子滤波:从推导到应用(三)
五、重采样 在应用SIS 滤波的过程中,存在一个退化的问题。就是经过几次迭代以后,很多粒子的权重都变得很小,可以忽略了,只有少数粒子的权重比较大。并且粒子权值的方差随着时间增大,状态空间中的有效粒子数较少。随着无效采样粒子数目的增加,使得大量的计算浪费在对估计后验滤波概率分布几乎不起作用的粒子上,使得估计性能下降,如图所示。原创 2014-11-14 22:50:04 · 44612 阅读 · 24 评论 -
Particle Filter Tutorial 粒子滤波:从推导到应用(二)
二、蒙特卡洛采样假设我们能从一个目标概率分布p(x)中采样到一系列的样本(粒子),(至于怎么生成服从p(x)分布的样本,这个问题先放一放),那么就能利用这些样本去估计这个分布的某些函数的期望值。譬如:原创 2014-11-14 17:50:00 · 46318 阅读 · 61 评论 -
graph slam tutorial :从推导到应用2
在上一部分中通过一个例子大致了解了graph based slam的优化过程。在本篇博客中将提升一个层次,对图优化的求解过程进行推导。由于博文关注的在图构建好以后,如何调整机器人位姿使误差最下。因此,本文主要涉及的是图优化的后端(back-end)。 我们已经知道图优化问题转变成了一个最小二乘问题。根据上篇博客最后一个例子,求机器人SLAM过程中最优轨迹可以表示成求解机器人位姿使得原创 2015-10-12 11:04:22 · 30220 阅读 · 30 评论 -
graph slam tutorial : 从推导到应用1
SLAM问题的处理方法主要分为滤波和图优化两类。滤波的方法中常见的是扩展卡尔曼滤波、粒子滤波、信息滤波等,熟悉滤波思想的同学应该容易知道这类SLAM问题是递增的、实时的处理数据并矫正机器人位姿。比如基于粒子滤波的SLAM的处理思路是假设机器人知道当前时刻的位姿,利用编码器或者IMU之类的惯性导航又能够预测下一时刻的位姿,然而这类传感器有累计误差,所以预测完以后,再将每个粒子的激光传感器数据或者图像原创 2015-10-12 11:03:58 · 60330 阅读 · 49 评论 -
lie group and computer vision : 李群、李代数在计算机视觉中的应用
在多视角几何中,特别是在一些恢复相机运动轨迹的模型中,我们需要将相机的旋转和平移表示出来。通常情况下,我们都是在欧几里得空间中用R和t来进行相应的运算得到相机轨迹。然而,在很多论文中,作者们却喜欢用Lie algebra se(3)、so(3) 以及 Lie group SE(3)、SO(3) 之类的表示。紧接着,出现了很多术语,比如twist, tangent space,也出现了一些运算,比如e原创 2016-01-05 14:18:29 · 39971 阅读 · 33 评论 -
graph slam tutorial :从推导到应用3
为了更好地理解graph based slam的过程,本文以二维平面的激光SLAM为例子,先简单介绍如何根据传感器信息构建图,即图优化的前端(front-end)。然后再针对上篇博客的疑问,结合matlab程序,分析图优化的后端(back-end)。原创 2015-10-12 11:05:25 · 29119 阅读 · 46 评论 -
Monocular slam 中的理论基础(2)
在知道了相机的轨迹以后,使用三角法就能计算某个点的深度,在Hartley的《Multiple view Geometry》一书中 第10章、第12章都是讲的这个,这里只讲解线性求解方法。原创 2016-04-11 09:01:57 · 19543 阅读 · 17 评论 -
Monocular slam 的理论基础(1)
前言 LSD-SLAM和ORB-SLAM的出现,使得单目slam最近成为了研究热点。单目SLAM一般处理流程包括track和map两部分。所谓的track是用来估计相机的位姿。而map部分就是计算pixel的深度,如果相机的位姿有了,就可以通过三角法(triangulation)确定pixel的深度,把这些计算好深度的pixel放到map里就重建出了三维环境。 主要内容 在单目SLAM的学习过原创 2016-04-11 09:00:40 · 36947 阅读 · 15 评论 -
ORB_SLAM : semi dense code
2016.9.20 update:添加论文中部分公式推导。 2016.9.9 update:完善部分代码 2016.9.7:初始博客单目摄像头的Semi Dense 听起来很美,比如有人想用这个结合机器人导航,有人用它和三维物体识别相结合,用来同时提升定位和识别率。最近对单目semi dense也有了一些想法,想先按着ORB_SLAM作者论文实现下semi dense,练练手:《Probabi原创 2016-09-07 23:11:11 · 16581 阅读 · 18 评论 -
Particle Filter Tutorial 粒子滤波:从推导到应用(四)
六、Sampling Importance Resampling Filter (SIR) SIR滤波器很容易由前面的基本粒子滤波推导出来,只要对粒子的重要性概率密度函数做出特定的选择即可。在SIR中,选取: p( x(k)|x(k-1) )这是先验概率,在第一章贝叶斯滤波预测部分已经说过怎么用状态方程来得到它。将这个式子代入到第二章SIS推导出的权重公式中:...原创 2014-11-15 11:58:20 · 36499 阅读 · 140 评论