自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Non-local Net理解

1.首先了解非局部均值滤波基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的像素加权平均得到。理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。但是考虑到效率问题,实现的时候,会设定两个固定大小的窗口:搜索窗口和邻域窗口。搜索窗口尺寸为(DXD,D=2XDs+1),邻域窗口尺寸为(dxd,d=2xds+1),从而保证窗口尺寸为奇数。邻域窗口在搜索窗口中滑动,根据邻域间的相似性确定像素的权值。如图所示,大窗口(白色的)是

2021-12-09 16:26:49 1152

原创 CCNet理解

局部特征H∈RC×W×H,criss-cross注意模块首先在H上应用两个具有1×1 filters的卷积层,分别生成两个特征图Q和K,其中{Q,K}∈RC’×W×H。C’是特征图的通道数(number of kernel),由于尺寸缩减,C‘小于C。在获得特征图Q和K之后,我们通过Affinity运算进一步生成注意力图A∈R(H + W-1)×W×H。在特征图Q的空间维度上的每个位置u,我们都可以得到向量Qu∈R C’。同理,我们可以通过从K中提取特征向量来获得集合Ωu,集合中的元素是与u处于同一.

2021-12-09 14:37:04 517

原创 总结一下STN网络

Localisation NetLocalisation Net 的目标是学习空间变换参数θ,无论通过全连接层还是卷积层,LocalisationNet 最后一层必须回归产生空间变换参数θ。输入:特征图U ,其大小为 (H, W, C)输出:空间变换参数θ(对于仿射变换来说,其大小为(6,))结构:结构任意,比如卷积、全连接均可,但最后一层必须是regression layer来产生参数θ,记作θ= floc(U)Grid Generator该层利用LocalisationNet .

2021-12-08 17:23:29 3851

原创 ORB_SLAM2调试过程

1、更改CMakelist.txt因为可能使用的EIgen版本和OpenCV版本不一样https://www.cnblogs.com/happyamyhope/p/10166907.html2、每次编译完之后要把ThirdParty下面的Build文件夹也删除3、/home/hotfinda/graduation/ORB_SLAM2/src/LoopClosing.cc:84:20: error: ‘usleep’ was not declared in this scopeusleep(5000)

2020-08-26 13:24:59 910

原创 ubuntu挂载移动硬盘出现错误:mount:unknown filesystem type ‘exfat‘

ubuntu挂载移动硬盘出现错误:mount:unknown filesystem type ‘exfat’处理方法如下:Ubuntu 13.10 或以上安装exfat-fuse:sudo apt-get install exfat-fuseUbuntu 13.04 或以下sudo apt-add-repository ppa:relan/exfatsudo apt-get updatesudo apt-get install fuse-exfat...

2020-08-25 17:07:20 381

原创 SLAM10-稠密地图重建

1、要重建稠密地图,就要知道每个像素点的深度,但是之前单目相机要获得深度需要使用三角化,而三角化的前提是要知道像素点在不同图片之间的匹配关系。但是有的不是特征点的像素点,不知道这个点到下一帧中跑哪去了。当然光流法或者直接法就没有这个问题。极线搜索和块匹配的目的就是找到特定的点在下一帧中的位置。这个目的就是追踪像素点,和光流法和直接法的目的是一样的。2、极线搜索l2是极线,对于任意的像素点p1,直线O1p1在O2的投影就是极线,如果知道点在极线的哪个地方,就可以用几何关系确定深度。块匹配:不单独匹配点

2020-07-21 15:50:36 2027

原创 搭建八叉树地图,降低点云数量,同时描述运动物体

#include < iostream>#include < fstream>using namespace std;#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <octomap/octomap.h> // for octomap#include <Eigen/Geometry>#include <

2020-07-21 15:48:51 526

原创 通过点云计算点云法线,通过法线建立网格地图

//// Created by gaoxiang on 19-4-25.//#include <pcl/point_cloud.h>#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/visualization/pcl_visualizer.h>#include <pcl/kdtree/kdtree_flann.h>#include <pcl/

2020-07-21 15:42:49 610 1

原创 RGB-D稠密地图

#include < iostream>#include < fstream>using namespace std;#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <Eigen/Geometry>#include <boost/format.hpp> // for formating strings#inclu

2020-07-21 15:23:04 481 2

原创 单目稠密重建

#include < iostream>#include < vector>#include < fstream>using namespace std;#include <boost/timer.hpp>// for sophus#include <sophus/se3.hpp>using Sophus::SE3d;// for eigen#include <Eigen/Core>#include <Eige

2020-07-21 14:37:01 663

原创 SLAM9-回环检测

回环检测的意义:1.给后端的Pose Graph提供更多有效的数据(即走到同一个位置附近了),否则后端优化可能把前端的误差累积起来,出现漂移问题。2.跟踪算法如果跟丢了,利用回环检测进行重定位。回环检测的实现方式:1.朴素思路:(1)暴力匹配,任意两幅图像做一遍特征匹配,并根据数量确定两幅相关联的图像。问题:时间复杂度太大,不实用。(2)随机抽取历史数据进行回环检测。问题:抽到回环几率下降。检测率不高。2.不盲目的预测:(1)基于里程计的几何关系:发现相机到达之前的某个位置附近,进行回环检测。存

2020-07-21 09:57:04 712

原创 大规模创建字典

#include “DBoW3/DBoW3.h”#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/features2d/features2d.hpp>#include < iostream>#include < vector>#include < string>using namespace cv;

2020-07-21 09:56:48 220

原创 根据创建的字典比较图片之间的相似度

#include “DBoW3/DBoW3.h”#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/features2d/features2d.hpp>#include < iostream>#include < vector>#include < string>using namespace cv;

2020-07-21 09:46:33 193

原创 根据图片创建字典,需要安装BoW库

#include “DBoW3/DBoW3.h”#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/features2d/features2d.hpp>#include < iostream>#include < vector>#include < string>using namespace cv;

2020-07-21 09:21:33 287

原创 pose graph优化:使用g2o自定义的顶点和边

#include < iostream>#include < fstream>#include < string>#include <Eigen/Core>#include <g2o/core/base_vertex.h>#include <g2o/core/base_binary_edge.h>#include <g2o/core/block_solver.h>#include <g2o/core/op

2020-07-20 21:17:45 749

原创 Pose graph优化:使用g2o自带的默认SE3顶点和边

#include < iostream>#include < fstream>#include < string>#include <g2o/types/slam3d/types_slam3d.h>#include <g2o/core/block_solver.h>#include <g2o/core/optimization_algorithm_levenberg.h>#include <g2o/solvers/ei

2020-07-20 20:29:09 851

原创 使用g2o求解BA

用节点表示相机和路标,用边表示他们之间的观测,使用自定义的点和边#include <g2o/core/base_vertex.h>#include <g2o/core/base_binary_edge.h>#include <g2o/core/block_solver.h>#include <g2o/core/optimization_algorithm_levenberg.h>#include <g2o/solvers/csparse/lin

2020-07-20 18:57:34 468

原创 使用ceres求解BA,需要用到的.h文件已经在源文件中注释

#include < iostream>#include <ceres/ceres.h>#include “common.h”#include “SnavelyReprojectionError.h”using namespace std;void SolveBA(BALProblem &bal_problem);int main(int argc, char **argv) {if (argc != 2) {cout << “usage: bun

2020-07-20 16:42:45 440

原创 直接法

#include <opencv2/opencv.hpp>#include <sophus/se3.hpp>#include <boost/format.hpp>#include <pangolin/pangolin.h>using namespace std;typedef vector<Eigen::Vector2d, Eigen::aligned_allocatorEigen::Vector2d> VecVector2d;// C

2020-07-20 15:16:31 372

原创 计算光流

//// Created by Xiang on 2017/12/19.//#include <opencv2/opencv.hpp>#include < string>#include < chrono>#include <Eigen/Core>#include <Eigen/Dense>using namespace std;using namespace cv;string file_1 = “./LK1.png”; /

2020-07-20 13:52:33 361

原创 3d-3d,使用SVD分解求R,t;使用非线性优化g2o求解T

#include < iostream>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/calib3d/calib3d.hpp>#include <Eigen/Core>#include <Eigen/De

2020-07-19 15:34:06 512

原创 3d-2d,使用PnP和g2o非线性优化解决

#include < iostream>#include <opencv2/imgcodecs.hpp>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/calib3d/calib3d.hpp>#include &

2020-07-19 14:36:48 983

原创 2d-2d对极几何约束

#include < iostream>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/calib3d/calib3d.hpp>// #include “extra.h” // use this if in OpenCV2u

2020-07-19 10:45:57 306

原创 根据orb特征匹配两幅图片

#include #include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include using namespace std;using namespace cv;int main( ) {//-- 读取图像Mat img_1 = imread("/home/hotfinda/e

2020-07-19 09:16:19 436

原创 SLAM8-后端的其他方法,BA与图优化,Pose Graph优化的理论与公式详解、因子图优化

1、BA方法Bundle Adjustment翻译过来是“光束调整”,意思是每个特征反射的光束,通过调整它们的空间位置和相机姿态,使它们都汇聚到相机光心,这个过程叫BA。假定世界坐标系下的点p,通过K,T之后转换为了像素坐标,把这个过程用方程描述为z=h(x,y)其中x是位姿T,y是路标点p,误差函数写为:通过同时把T,P作为优化量来进行调整,对误差函数进行求解,就是所谓的BA2、BA的求解由于误差函数不是线性的,所以我们想到用增量△x的方法,逐步迭代。当给误差函数一个增量△x时,函数变为:

2020-07-17 20:21:43 2419

原创 SLAM7-后端的卡尔曼滤波器推导、理解以及扩展

1、为什么需要后端前面的视觉里程计虽然通过非线性优化获得了理想的T,但是还是有一定的误差,随着距离的逐渐增加,误差也会进行累计,所以需要用后端把这些误差每隔一定的时间进行一次消除。2、https://blog.csdn.net/zkk9527/article/details/89053388...

2020-07-17 19:56:16 361

原创 SLAM-6视觉里程计里面特征点计算的缺点所做的改进

缺点的改进方法:由于之前的视觉里程计要计算关键点和描述子,花费大量的时间,有两种办法可以避免。1、只计算关键点,通过光流法追踪关键点的运动,可以得到同一个关键点在不同图片的位置,这样就不用使用描述子来进行匹配了。2、只计算关键点,通过使用直接法来预测同一关键点在不同时刻图像的位置光流法和直接法都是基于一个灰度不变假设,即同一个空间点的像素灰度值在各个图像中是固定不变的。(虽然我感觉这个假设挺扯的,高博在书里也说可能不成立,但是当帧率较快,两张图非常接近的时候,凑合也不能算错光流法:描述像素点随时间在不

2020-07-17 17:01:46 543

原创 SLAM5-视觉里程计的算法

一、视觉里程计的定义视觉里程计主要是根据相邻图像信息粗略估计出相机的运动,为后端提供初始值,常用的算法有特征点法和直接法特征点:特征点=关键点+描述子。关键点是指像素坐标,描述子指坐标周围像素的信息。有很多特征点,SIFT特征,SURF特征,ORB特征SIFT特征:尺度不变特征变换(Scale-invariant feature transform):大致方法是首先搜索所有尺度下图像的位置,通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点,然后在候选位置通过拟合精细的模型来确定位置和尺度,再基于

2020-07-17 15:06:39 1218

原创 SLAM4-非线性优化

一、状态估计有两个方程,x是相机位姿,u是位姿改变数据,y是路标点在相机坐标系的坐标,z是路标点在图片上的坐标状态估计问题:在有一个已知的xk-1时,通过uk我们求出xk; 通过yj,xk我们求出zk;但是问题是求的过程中都会有噪声wk,vk,所以我们只能求出来xk和zk的概率分布,所以构成了状态估计问题!](https://img-blog.csdnimg.cn/2020070409274871.png)滤波器:为了处理状态估计问题,我们假设已经有了一个当前时刻的估计状态(有误差),之后用新的数

2020-07-16 08:42:35 793

原创 SLAM3-根据相机模型计算视差形成点云

参考文献:https://blog.csdn.net/zkk9527/category_8809309.html一、相机模型和畸变畸变是因为相机上的透镜导致成像产生了误差,畸变有两种:径向畸变和切向畸变。径向畸变是由于透镜形状导致的;分为桶形(四周膨胀)和枕形(四周收缩)切向畸变是因为透镜和成像平面不能严格平行;去除畸变:我们一般根据公式来进行纠正;1、找一个三维空间点,把他的(x,y,z)除以z投射到归一化坐标系上;2、利用公式计算畸变之后的点在归一化坐标系的坐标;3、把归一化坐标转换到像素坐标

2020-07-16 08:42:20 1484

原创 SLAM2-李群和李代数

一、变换规则对于三维旋转theta*a是向量fai对于三维变换,左上角的R仍然是相同公式,右上角J由新公式给出

2020-07-16 08:41:51 385

原创 SLAM基础代码

一、编译方式1、g++命令编译.cpp文件,生成各种各样的文件,如可执行文件,库文件等。g++ 的编译指令大全:https://blog.csdn.net/zhubaohua_bupt/article/details/527636392、CMake编译建立遵循语法的CMakeLists.txt文件,语法链接:https://blog.csdn.net/afei__/article/details/81201039#t9https://blog.csdn.net/yiminghd2861/arti

2020-07-16 08:41:39 700

原创 ZED Camera插件汇总

1.ROSstep1:$ source /opt/ros/kinetic/setup.bash$ mkdir -p ~/catkin_ws/src$ cd ~/catkin_ws/$ catkin_make$ source devel/setup.bash$ echo $ROS_PACKAGE_PATHstep2:$ cd ~/catkin_ws/src/ #use your c...

2019-11-11 20:34:42 391

原创 Latex问题汇总

1、简单模板书写遇到错误nonstopmode “document”.tex打开Texlive/bin 找到pdflatex文件的路径,输入到tex studio 中的编译器中,如下:C:\Program Files\MiKTeX 2.9\miktex\bin\x64\pdflatex.exe&amp;amp;quot; %.tex...

2019-02-12 04:40:27 964

原创 ROS-7-Nodelet

nodelet使用背景ROS是一种基于分布式网络通讯的操作系统,整个机器人控制系统是由一个Master主节点和若干个功能相对独立的Node子节点组成,这也是ROS系统最主要的特点就是分布式以及模块化的设计。在ROS通讯过程中Master节点存储着各个子节点的topics和services的注册信息,每个功能节点在请求服务之前先向主节点进行注册,然后节点之间就可以直接进行信息传递。ROS的底层通...

2018-11-09 21:38:56 376

原创 ROS-6-Pluginlib

1.pluginlib是一个C ++库,用于从ROS包中加载和卸载插件。 插件(plug)是可从runtime library下载的类(例如共享对象,动态链接库)。 通过使用pluginlib,永不不必将其应用程序显式链接到包含类的库 ,pluginlib可以在任何时候打开包含导出类的库,而无需应用程序事先了解库或包含类定义的头文件。 插件可用于扩展/修改应用程序行为,而无需应用程序源代码。2....

2018-11-09 16:43:32 228

原创 ROS-5-actionlib

1.Pluginlib是一个c++ library

2018-11-08 18:38:18 300

原创 ROS-4-Visualization-Rviz

1.简单的几何模型(boxes,spheres,cylinder,arrow)1.1使用 visualization_msgs/Marker类型的消息来发送基本的立体形状。我们借助工具Marker Display 来将数据在rviz中显示,这样rviz就不需要对数据进行解释。1.2执行以下代码,创建using_markers packagecatkin_create_pkg using_ma...

2018-11-06 21:38:49 765

原创 ROS-3-Gazebo

1.为了更好的显示机器人的三维模型,我们调用Gazebo软件。先前我们通过joint_state_publisher来计算出机器人每个关节之间的坐标系关系,但是在这里,机器人应该自己提供这些信息,否则Ga’ze’bo不会知道机器人关节之间的坐标系关系。这就需要以下两个条件:Plugins和Transmission. roslaunch urdf_sim_tutorial gazebo.launc...

2018-11-04 17:52:14 467

原创 ROS-2-URDF

1.创建.xml文件形式的模型首先确保安装了 joint_state_publisher package

2018-11-04 15:03:11 825

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除