- 博客(61)
- 资源 (3)
- 收藏
- 关注

原创 [常微分方程的数值解法系列五] 龙格-库塔(RK4)法
龙格-库塔法简介在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:[常微分方程的数值解法系列一] 常微分方程[常微分方程的数值解法系列二] 欧拉法[常微分方程的数值解法系列三] 中值法[常微分方程的数值解法系列四] 龙格-库
2020-12-12 20:52:59
12776
1

原创 [常微分方程的数值解法系列四] 中值法
中值法简介在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:[常微分方程的数值解法系列一] 常微分方程[常微分方程的数值解法系列二] 欧拉法[常微分方程的数值解法系列三] 中值法[常微分方程的数值解法系列四] 龙格-库塔(R
2020-12-09 23:43:37
2279
1

原创 [常微分方程的数值解法系列三] 改进欧拉法(预估校正法)
改进欧拉法简介预估-校正截断误差例子在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:[常微分方程的数值解法系列一] 常微分方程[常微分方程的数值解法系列二] 欧拉法[常微分方程的数值解法系列三] 改进欧拉法(预估校正法)[
2020-12-09 00:19:09
21498
1

原创 [常微分方程的数值解法系列二] 欧拉法
欧拉法简介几何意义证明泰勒展开近似求导近似积分近似几种欧拉方式向前欧拉公式向后欧拉公式梯形公式改进欧拉法截断误差求解过程向前欧拉公式例子向前欧拉公式在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。该系列主要介绍一些常用的常微分方程的数值解法,主要包括:[常微分方程的数值解法系列一]
2020-12-06 23:10:31
7097
1

原创 [常微分方程的数值解法系列一] 常微分方程
欧拉法简介误差例子在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其中主要就是求解微分方程。但之前求解微分方程的解析方法主要是应用于一些简单和特殊的微分方程求解中,对于一般形式的微分方程,一般很难用解析方法求出精确解,只能用数值方法求解。而在具体求解微分方程中,一般来说是条件是KaTeX parse error: Undefined control sequence: \leqb at position 75: …\quad a \leq t \̲l̲e
2020-12-06 12:12:19
2598
1

原创 [矩阵的QR分解系列三] 豪斯霍尔德(Householder)变换
豪斯霍尔德变换简介之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解。但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分解。所以后面为了解决这里问题,发展出来了以正交(酉)变换的矩阵的QR(正交三角)分解,矩阵的正交三角分解是一种对任何可逆矩阵均存在理想分解。进行QR分解需要用到施密特(Schmidt)正交规范化,吉文斯(Givens)变换和豪斯霍尔德(Householder)变换等。这里矩阵的QR分解系列教
2020-12-05 20:51:09
40761
9

原创 [矩阵的QR分解系列五] Eigen中的QR分解
Eigen中的QR分解简介QR分解函数使用范例之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解。但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分解。所以后面为了解决这里问题,发展出来了以正交(酉)变换的矩阵的QR(正交三角)分解,矩阵的正交三角分解是一种对任何可逆矩阵均存在理想分解。进行QR分解需要用到施密特(Schmidt)正交规范化,吉文斯(Givens)变换和豪斯霍尔德(Householder)变换
2020-11-30 23:36:07
4190

原创 [矩阵的QR分解系列二] 吉文斯(Givens)变换
吉文斯变换简介之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解。但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分解。所以后面为了解决这里问题,发展出来了以正交(酉)变换的矩阵的QR(正交三角)分解,矩阵的正交三角分解是一种对任何可逆矩阵均存在理想分解。进行QR分解需要用到施密特(Schmidt)正交规范化,吉文斯(Givens)变换和豪斯霍尔德(Householder)变换等。这里矩阵的QR分解系列教程主
2020-11-30 23:14:28
36730
8

原创 [矩阵的QR分解系列四] QR(正交三角)分解
QR分解简介之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解。但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分解。所以后面为了解决这里问题,发展出来了以正交(酉)变换的矩阵的QR(正交三角)分解,矩阵的正交三角分解是一种对任何可逆矩阵均存在理想分解。进行QR分解需要用到施密特(Schmidt)正交规范化,吉文斯(Givens)变换和豪斯霍尔德(Householder)变换等。这里矩阵的QR分解系列教程主要
2020-11-29 23:28:40
9760
8

原创 [矩阵的三角分解系列五] 三角分解中的行列变换
三角分解中的行列变换简介矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等,以及为了满足分解条件又加入行列变换的LPU分解,PLU分解,LUP分解,LDPU分解等。这里矩阵的三角分解系列教程主要是针对在学习三角分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到的一些矩阵操作的基础知识,主要包括:[矩阵的三角分解系列一] 高斯消元法
2020-11-29 09:49:09
1426

原创 [矩阵的三角分解系列六] Eigen中的三角分解
Eigen中的三角分解简介安装命令三角分解函数使用范例矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等,以及为了满足分解条件又加入行列变换的LPU分解,PLU分解,LUP分解,LDPU分解等。这里矩阵的三角分解系列教程主要是针对在学习三角分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到的一些矩阵操作的基础知识,主要包括:[矩阵的
2020-11-28 23:25:52
1572

原创 [矩阵的三角分解系列四] 乔累斯基(Cholesky)分解公式
乔累斯基分解公式简介LLT分解证明具体解法稳定性LDLT分解证明具体解法例子LLT分解LDLT分解引用矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等,以及为了满足分解条件又加入行列变换的LPU分解,PLU分解,LUP分解,LDPU分解等。这里矩阵的三角分解系列教程主要是针对在学习三角分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到
2020-11-28 22:45:55
6733

原创 [矩阵的三角分解系列三] 杜利特/克劳特分解公式
杜利特/克劳特分解公式简介杜利特/克劳特分解例子引用矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等,以及为了满足分解条件又加入行列变换的LPU分解,PLU分解,LUP分解,LDPU分解等。这里矩阵的三角分解系列教程主要是针对在学习三角分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到的一些矩阵操作的基础知识,主要包括:[矩阵的三
2020-11-28 22:37:09
10469
1

原创 [矩阵的三角分解系列二] LDU基本定理
简介矩阵的三角分解依赖的具体方法是之前讲到的高斯消元过程,所以看本文前建议先把高斯消元过程先看完。矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等。介绍按照高斯消元过程文章中假设矩阵A\mathbf{A}A的前n−1n-1n−1个顺序主子式都不为零,那么矩阵A\mathbf{A}A高斯消元过程能够进行到底。根据高斯消元过程另U=A(n)=L(n−1)⋯L(2
2020-11-25 20:09:26
10957
3

原创 [矩阵的三角分解系列一] 高斯消元法
高斯消元法简介方法高斯消元过程高斯消元条件判断示例z引用简介这里讲解高斯消元法的主要是以矩阵语言来描述高斯消元这个过程,然后主要是为后面的矩阵的三角分解打下基础。矩阵的三角分解推导以及证明的过程需要依赖高斯消元的理论基础。具体来说高斯消元法的基本思想就是利用矩阵的初等行变换把求解Ax=b\mathbf{Ax=b}Ax=b中的矩阵A\mathbf{A}A转成上三角矩阵,需要注意这里讲解矩阵变换过程中不会利用到矩阵行交换。矩阵行交换后面某些文章中会讲到,因为矩阵A\mathbf{A}A的三角分解需要矩阵
2020-11-23 22:37:14
4311
2

原创 [矩阵的QR分解系列一] 施密特(Schmidt)正交规范化
施密特正交化简介方法例子引用简介在矩阵操作中,经常需要从一组线性无关的向量构造出一组同等个数等价的两两正交的向量,并且需要使每个向量的模等于1,也就是每个新向量都是单位向量,这种做法叫做线性无关向量组的正交规范化。本文主要介绍的施密特正交化方法就是比较常用的正交规范化方法。上面有几个概念解释一下:线性无关对于一组向量x1,x2,...,xn(n≥1)\mathbf{x_1,x_2,...,x_n}(n\geq1)x1,x2,...,xn(n≥1)来说,只有k1,k2,...,kn(n≥1)k
2020-11-22 20:23:30
15379
3
原创 [SLAM四元数基础系列一] 四元数定义 Hamilton vs JPL
四元数定义 Hamilton vs JPL简介四种区分方式Hamilton vs JPL引用不管是卡尔曼滤波或者BA优化形式的SLAM或者VIO系统中,都需要用到单位四元数(Quaternion)来表示旋转,主要是单位四元数表示旋转相对于其他旋转表示方式如旋转矩阵、欧拉角或者旋转向量等具有优势,它既是紧凑(自由度3)同时还没有奇异性。本系列主要是介绍在SLAM&VIO系统中涉及到的公式(ESKF,IMU预积分等)所涉及的四元数的一些基础性质的推导和整理,关于四元数的更基础的定义建议参考引用【1】到
2021-01-03 21:10:42
1375
原创 扩展卡尔曼滤波详解
Extened Kalman Filter简单介绍卡尔曼滤波详解讲解的基本的卡尔曼滤波算法是通过一个线性随机差分方程来估计当前状态,但是如果状态估计关系以及测量关系使非线性的怎么办,而且在实际使用中大部分的问题都是非线性的,所以提出了扩展卡尔曼滤波算法来解决非线性问题。基本模型扩展卡尔曼滤波算法和基本的线性卡尔曼滤波算法的基本模型在形式上很相近,也是包含状态方程和测量方程两个,只不过变量间的计算关系不是线性的。扩展卡尔曼滤波的状态方程,利用非线性随机差分方程(non-Linear Stochast
2020-11-15 18:12:26
17404
原创 卡尔曼滤波示例
在上一篇卡尔曼滤波详解已经给出详细的推导过程。这里给出几个示例加深理解,这个是几年前学习卡尔曼滤波时候整理的,比较啰嗦,初学者可以看看,了解过的就不用浪费时间了,主要是最近在整理资料差点弄丢,还是放到网上保存吧。简单示例1这个示例中假设状态是稳定的,也就是真实的状态是不随着时间变化的,那么利用卡尔曼滤波算法最后会收敛到最优的状态。参数设置对于所有的变量,本场景下都是一个具体的数值而不是矩阵...
2019-03-20 20:15:28
8900
3
原创 卡尔曼滤波详解
Kalman Filter简单介绍主要讲解基本的卡尔曼滤波算法,有时候也说是离散或者线性卡尔曼滤波。首先来看一个数学公式,这部分仅仅是给定一个思路,和最后实际算法无关。目前考虑到要估计当前系统的状态,而且有两个已知量,一个上一个状态的估计值以及当前状态的测量值,这两个都有一定的噪声,需要做的就是把这两个结合起来,很简单的思路就是按照比例相加得到当前状态的估计值:X^k=Kk⋅Zk+(1−K...
2019-03-20 19:37:53
99451
21
原创 边缘检测
Edge Detection简单介绍edge detection (边缘检测) 要检测出图像中的突然变化或者说是不连续情况。这样好处是:从边缘中可以获得图像的语义信息和形状信息;边缘信息比图像像素信息更紧凑;当然边缘肯定也会丢失相应的纹理信息,但是在某些不关心纹理的任务上比较合适,如果说最近比较火的无人车的车道检测。图像中边缘产生有几种原因如下:边缘检测输入是单通道图像(灰度图...
2019-03-20 19:25:07
920
原创 局部特征评价指标
整体评估检测评估描述符评估评价描述符 Descriptor 的可区分度,具体指在不同描述符距离阈值下的 Precision-Recall 曲线的 Area Under Curve (AUC),使用 NN 匹配策略。简单来说就是设置一个描述符距离阈值,两个描述符的距离小于该阈值认为二者是匹配上的,否则是非匹配上的,但小于该阈值的实际上有可能是匹配关系也有可能是非匹配关系。区分如下表:...
2019-02-25 19:56:50
1296
原创 Brown 数据集和评价指标
数据详情构建方法利用三维重建的方法获得特征点位置和匹配关系。数据内容Brown 总共包含三个数据集。###平均准则FPR95原文解释是:false positive rate (FPR) at true positive rate (positive recall) equal to 95%就是在 Brown 提供的测试集合上(一般是在 10w matches 上测试),95% 的...
2019-02-25 19:52:39
4487
3
原创 HPatches 数据集和评价指标
数据详情构建方法利用三维重建的方法获得特征点位置和匹配关系。数据内容后面更新###评价准则定义 y=(y1,…,yn)∈{−1,0,+1}n\mathbf { y } = \left( y _ { 1 } , \ldots , y _ { n } \right) \in \{ - 1,0 , + 1 \} ^ { n }y=(y1,…,yn)∈{−1,0,+1}n 是对查询 pat...
2019-02-25 19:50:32
5915
1
原创 SuperPoint 论文详解
SuperPoint简介SuperPoint是magic leap公司在18年的一篇工作,主要内容是输入一张灰度图,提取图上的特征点同时计算该点对应的描述符。作者提供了相应的代码,不过遗憾的是训练代码和相应的渲染的训练数据没提供,只有测试代码。流程整体框架整体框架如下图,下面会abc三个步骤分别介绍:特征点提取预训练如果要使用有监督的深度学习方案来解决该问题,不同于其他传统的像分类...
2019-02-17 21:23:39
32274
13
原创 基于深度学习的图像局部特征
基于学习方式的特征基于学习方式的特征简介对比细节SuperPoint简介流程提取特征点计算描述符备注评价特征点描述符(这里主要是记录一下自己看论文的思路和过程,目前时间不是很充足,有些写到一半,后面有时间会继续更新)基于学习方式的特征简介传统的特征提取和特征描述方式,比如SIFT、SURF和ORB等,需要人工去手动提取特征点,然后设计特征描述符。目前随着深度学习的发展,越来越多的工作尝试使...
2019-02-17 21:23:25
5094
原创 LIFT 论文详解
LIFT本文提供了相应的theano 和 tensorflow,论文是比较早期的探索利用CNN的方法去学习特征的工作,而且该组是瑞士联邦理工学院的 cvlab,之前也做过很多 deep feature 和 三维视觉相关的研究,该工作很值得研究一下。主要思路本文利用CNN网络特征点提取,ori 估计和特征描述符的计算,而且是在统一模型框架里面学习这三个子任务。基本流程整体 pipeline...
2019-02-16 23:55:22
9440
3
原创 HardNet 论文详解
HardNet本文提供了相应的代码,是基于 pytorch。主要思路本文主要是提出了新的 loss 用于特征 metric 的学习。提出的 loss 可以最大化一个 training batch 中最近的正负样本之间的距离,而且对浅层以及深层的 CNN 网络都有作用。本文基于之前的 L2-Net 工作,把 loss 更换成本文提出的 loss,这里叫做 HardNet。基本流程采样和 l...
2019-01-29 20:50:39
14351
1
原创 L2-Net 论文详解
L2-Net本文提供了相应的代码,是基于 matconvnet,论文的思路相对来说比较简单,可以使用 pytorch 或者 tersorflow 等框架复现。主要思路之前有 SIFT 等手工设计的 patch 特征,这里提出的 L2-Net 的方法,利用 CNN 方法在 Euclidean 空间学习 patch 特征。本文主要的工作包括:提出递进的采样策略,可以保证网络在很少的 epoc...
2019-01-28 20:27:40
9293
2
原创 GeoDesc 论文详解
GeoDesc主要思路目前使用CNN网络来学习局部特征在 patch-based 的数据基准上取得了很大的进展,但是应用到具体的 3D 重建等工作上效果还是不如传统的特征,如 SIFR、SURF、ORB 等。所以本文提出了一种新型的局部特征的学习方法 GeoDesc,主要是从多视图重建中学习到几何的约束信息。实验证明本文提出的方法效果在大量的基准集上取得了很好的效果,而且对于重建任务也很适用。...
2019-01-23 20:42:59
3095
原创 [C/C++] main函数执行前后还会发生什么
问题描述在C/C++语言执行过程中是不是所有的动作都由main()函数引起,来看下面的代码:#include <iostream>class A{public: A() { printf("This is Constructor\n"); } ~A() { printf("This is destructor\n"); }};A a;
2016-05-05 20:09:03
3524
原创 [C/C++] char[]和char*变量的==比较
问题描述在C/C++编程中,如果对char[]和char*对象进行比较,当然一般来说可以使用strcmp方法,但是如果直接使用==会产生什么结果呢,如下面的程序:#include <iostream>using namespace std;int main() { char strArray1[] = "abc"; char strArray2[] = "abc"; co
2016-05-05 16:33:54
14647
原创 OpenCV 基本模块
简介OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
2016-03-31 14:56:53
5263
原创 相机标定(Camera calibration)
简介摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 PP 的过程,下面相关的部分主要参考UIUC的计算机视觉的课件(网址Spring 2016 CS543 / ECE549 Computer vision)。基本的坐标系:世界坐标系(world coordinate system);相机坐标系(camera coordina
2016-03-30 16:46:20
85495
31
原创 [C/C++] malloc/free和new/delete的区别
freefree() 函数是用于释放malloc()函数分配的内存,和malloc()成对调用;free()函数参数是指针类型,在释放时需要判断指针是不是NULL;free()函数释放内存事,不会调用指针对象的析构函数;free()和malloc()是对内存空间的操作;deletedelete 用于释放new分配的内存,和new成对调用;delete不需要判断后面的对象是不是NULL;
2016-03-27 10:44:41
823
原创 Ubuntu14.04 OpenCV编译安装
环境系统:Ubuntu 14.04 x64简介OpenCV,英文全称Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机
2016-01-06 16:56:49
20212
原创 Python 读写matlab中.mat文件
背景在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果。所以某些matlab从图片处理得到的label信息都会以.mat文件供python读取,同时也python产生的结果信息也需要matlab来做进一步的处理(当然也可以使用txt,不嫌麻烦自己处理结构信息)。介
2015-11-24 11:04:22
20726
原创 线程级并发
单处理器有了进程的抽象,可以设计出同时执行多个程序的系统,这也就导致了并发。 从出现分时(time-sharing)以来,计算机系统就有了对并发执行的支持。这种并发执行只是模拟出来的,是通过使一台计算机在它正在执行的进程间快速切换的方式实现的。这样即使处理器必须在多个任务间切换,大多数也是由一个处理器完成的。这个叫做单处理器系统。多处理器随着近来多核处理器和超线程(hyperthreading)的
2015-07-06 19:02:50
1280
原创 大端和小端
下面所说的顺序对于存储器来说都是从低地址到高地址:基本概念小端(little endian)存储:在存储器中按照最低有效字节到最高有效字节的顺序存储对象。 大多数Intel兼容机采用这种规则。 大端(big endian)规则:在存储器中按照最高有效字节到最低有效字节的顺序存储对象。 大多数IBM和Sun Microsystems的机器采用这种规则,只是大多数,不是按照企业来划分,IBM和Su
2015-07-06 18:49:14
4067
原创 编译过程
下面以hello.c源文件到hello可执行目标文件的编译过程来讲解在实际的计算机系统中怎样把一个编程语言转变成机器语言的。gcc -o hello helo.c预处理阶段预处理器cpp 功能:主要是根据#字符命令,把引入的.h头文件直接复制到程序中,生成新的C程序。 输出:hello.c->hello.i(被修改的源程序,文本可读)。编译阶段编译器cc1 功能:将上面的.i源程序翻译成.s汇
2015-07-06 18:41:37
766
OpenCV3编程入门
2016-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人