视觉SLAM
文章平均质量分 75
花舞の街道
记录学习过程
展开
-
【Final Project】Kitti的双目视觉里程计(3)前端及整体过程理解
SLAM原创 2022-11-22 14:34:15 · 825 阅读 · 0 评论 -
【Final Project】Kitti的双目视觉里程计(2)重读
无聊总结,忘了的时候查看原创 2022-11-18 17:13:47 · 631 阅读 · 0 评论 -
【Ceres】Ceres学习笔记2 BA相关
BA原创 2022-10-19 15:02:15 · 567 阅读 · 0 评论 -
【Final Project】Kitti的双目视觉里程计(1)
深蓝学院视觉SLAM Final Project原创 2022-09-15 19:57:29 · 811 阅读 · 4 评论 -
视觉SLAM十四讲作业练习(7)直接法BA
通常是在边那个类里面(2)实例化顶点与边(3)存储优化后的值(4)CMakeLists.txt注意点: ,需要添加NO_MODULE,否则cmake时会报错原创 2022-06-03 16:32:54 · 282 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(7)BA
第七次作业的第2题BAL-dataset与书中所给示例代码类似,于是就学习了一下,让我写肯定写不出来。。。整体思路如下:文件结构:1.通用部分(1)读取数据1)了解读入文件的格式2)fscanf()函数fscanf()函数的头文件是,函数原型 为 int fscanf(FILE *stream, const char *format, [argument…]);其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);【参数】stream为原创 2022-06-01 20:11:26 · 354 阅读 · 1 评论 -
视觉SLAM十四讲 第9讲后端 卡尔曼滤波器推导
看十四讲以及课件没看懂,好多推导都是基于贝叶斯公式的那就更难以理解了。突然想到以前学控制的时候在B站看到过Up主DR_CAN的卡尔曼滤波器的推导,感觉比较清晰,于是听完之后记录一下推导过程。状态空间方程:{xk=Axk−1+Buk−1+wk−1zk=Cxk+vk\begin{cases}x_k = Ax_{k-1} + Bu_{k-1} +w_{k-1}\\z_k=Cx_k+v_k\\\end{cases}{xk=Axk−1+Buk−1+wk−1zk=Cxk+vk其中:过程噪声原创 2022-06-01 19:59:19 · 287 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(6)
一. 光流法2. LK光流2.0 文献阅读Lucas-Kanade 20 Years On: A Unifying Framework就看了这些,MD英文文献看的太费劲了,算法什么的一点都看不懂。。。。。还是借鉴以下别人的吧。。。http://t.csdn.cn/4mzHg2.1文献综述 1)光流法分类分类实例复杂度应用场景Forwards Additive(正向加性)Lucas-Kanade (1981)O(n2N+n3)O(n^2N+n^3)O(n2N+原创 2022-05-23 19:13:17 · 329 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(5)3D-3D ICP
3D-3D:ICP(1)SVD方法首先定义符号:pip_ipi :第二个图像中的数据;pi′p_i'pi′ :第一个图像中的数据。具体步骤:(1)定义两组点的质心 ppp与p′p'p′p=1n∑i=1npip=\frac{1}{n}\sum_{i=1}^{n}p_ip=n1i=1∑npip′=1n∑i=1npi′p'=\frac{1}{n}\sum_{i=1}^{n}p_i'p′=n1i=1∑npi′(2)计算去质心坐标qi=pi−p, qi′=pi′−p′q原创 2022-05-18 14:30:34 · 275 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(5)3D-2D:PnP
16.最小化重影误差求解PnP(1)理论分析非线性优化将相机位姿与空间点位置都看成优化变量,放在一起优化。这一类将相机和三维点放在一起进行最小化的问题统称为 Bundle Adjustment。有 n 个三维空间点 P 及其投影 p ,相机位姿 R 与 t,由以前所学知识,可以得到:siui=KTPis_i u_i = KTP_isiui=KTPi由于相机位姿未知以及观测点噪声,所以存在误差,将误差求和构建最小二乘问题,然后寻找最好的位姿使其最小化:T∗=arg min12∑i=1原创 2022-05-16 20:01:31 · 411 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(5)对极几何
对极几何(2D-2D)(1)对极约束理论推导(几何方法)两帧图像,从蓝色到绿色的运动为 R 与 t ,设两个坐标系 O 与 O’ ,在 O 坐标系下点 X 在归一化平面的坐标为 x ,在 O’ 坐标系下 X 在归一化平面的坐标为 x’ 。目的是将第一个坐标系下的坐标转换到第二个坐标系下的在坐标,即用 O‘ 坐标系来描述 O 坐标系下的点。所以计算的 R 是 RO′OR_{O'O}RO′O 和tO′Ot_{O'O}tO′O,所以图上的 t 方向是由 O‘ 指向 O 。由三角形上的向量关系可得:x原创 2022-05-14 20:20:34 · 353 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(5)特征提取和匹配
特征提取和匹配(1)使用OpenCV提取和匹配#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include "opencv2/imgcodecs/legacy/constants_c.h"using namespace st原创 2022-05-12 20:33:45 · 989 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(4)非线性优化部分
.5非线性优化(0)回顾 SLAM问题的数学表达定义:x:表示自身位置,x1,x2 … xk y: 表示地图的路标,y1, y2 … yn运动:从 k-1 时刻到 k 时刻,位置 x 如何变化,因此,运动方程即 k 时刻的位置需要借助 k-1 时刻的位置与输入uk确定。即:xk=f(xk−1,uk,wk)x_k=f(x_{k-1},u_k,w_k)xk=f(xk−1,uk,wk)其中uk为输入,wk为该过程中加入的噪声。观测:k 时刻在 xk 处探测到某个路标 yj,产生的观原创 2022-05-08 20:45:10 · 755 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(4)相机图像部分
2.图像去畸变(1)针孔相机模型#include <opencv2/opencv.hpp>#include <string>using namespace std;string image_file = "../test.png";int main(int argc, char *argv[]){ //畸变参数 double k1 = -0.28340811, k2 = 0.07395907, p1 = 0.00019359, p2 = 1.761原创 2022-05-06 20:47:04 · 343 阅读 · 0 评论 -
[3.5] pangolin库初步了解
1.基础使用#include <pangolin/pangolin.h>int main(int , char **){ //1.创建一个窗口 pangolin::CreateWindowAndBind("window_title",1000, 600); //w=1000 h=600 //2.启用深度测试 glEnable(GL_DEPTH_TEST); //3.创建一个观察相机视图(定义目标并初始化) pangolin::OpenGl原创 2022-05-05 18:15:46 · 843 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(3)
.5 sophus的使用书中提供的代码useSophus.cpp#include <iostream>#include <cmath>#include <Eigen/Core>#include <Eigen/Geometry>#include "sophus/se3.hpp"#include "sophus/so3.hpp"using namespace std;using namespace Eigen;int main(int原创 2022-05-03 19:47:35 · 659 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(2)
2.Eigen 矩阵运算设线性方程 Ax = b,在 A 为方阵的前提下,请回答以下问题:在什么条件下,x 有解且唯一? 有解的充分必要条件是:系数矩阵的秩等于增广矩阵的秩,即rank(A)=rank(A, b)高斯消元法的原理是什么?逐步消除未知数来将原始线性系统转化为另一个更简单的等价的系统。用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。QR 分解的原理是什么?Cholesky 分解的原理是什么?编程实现 A 为 100 × 100 随机矩阵时,用 QR 和 C原创 2022-05-01 20:24:20 · 632 阅读 · 0 评论 -
视觉SLAM十四讲作业练习(1)
4 CMake 练习书写一个由 cmake 组织的 C++ 工程,要求如下:include/hello.h 和 src/hello.c 构成了 libhello.so 库。hello.c 中提供一个函数 sayHello(),调用此 函数时往屏幕输出一行“Hello SLAM”。我们已经为你准备了 hello.h 和 hello.c 这两个文件,见 “code/”目录下。文件 useHello.c 中含有一个 main 函数,它可以编译成一个可执行文件,名为“sayhello”默认用 Releas原创 2022-04-26 14:20:25 · 1466 阅读 · 0 评论