自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于灰度信息的图像配准方法

图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

2023-03-19 00:39:28 2160

原创 MATLAB:梯度下降法求解一元和多元函数极小值和极大值

梯度下降法,顾名思义即通过梯度下降的方法。对于一个函数而言,梯度是一个向量,方向是表示函数值增长最快的方向,而大小则表示该方向的导数。下面展示了用梯度下降法求解一元函数的MATLAB代码:仿真结果如下: 下面展示了用梯度下降法求解二元函数的MATLAB代码: 仿真结果如下:当然,梯度下降方法也可以求解最大值,例如:采用梯度下降法求解最大值的MATLAB代码如下: 仿真结果如下:

2023-03-16 17:38:06 4250 3

原创 大白话解析LeGO-LOAM(2)--featureAssociation.cpp

主要是对分割后点云进行特征提取以及特征匹配。

2024-02-18 20:20:29 1112

原创 大白话解析LeGO-LOAM(1)---imageProjection.cpp

imageProjection的六个核心函数逐个解析。

2024-01-28 15:30:36 992

原创 LeGO-LOAM代码解析---基础知识

在学习LeGO-LOAM之前,先介绍一下基础知识: 位姿是旋转和平移的统称。在三维世界中,物体的位姿变换既要考虑物体的位置的变化,也要考虑姿态的变化。 举个例子,你在宿舍里,以宿舍某个点取个固定坐标系,例如东北天坐标系。现在你要去食堂吃饭,无容置疑在这个坐标系中你的位置肯定发生变化,此外还有一个“东东”也在不断发生变化,也就是你脸的朝向(PS:假设是刚体变换)。假设在起点,你脸的朝向正东面,左手在北面,右手在南面,在行进过程中,显然你自身的姿态肯定不断发生变化。 我

2024-01-25 16:04:32 989

原创 CMakeLists.txt详解

当然,这只是其中的部分原因,更重要的是有了它,我们能在不同操作系统运行(与操作系统解耦),也就是别人写的代码,也能在我的操作系统上编译运行。使用CMakeLists.txt文件,开发者可以实现一次编写,多平台编译的效果,方便地在不同操作系统和编译器上构建项目,从而提高项目的可移植性和开发效率。不过,仅有.a 或.so 库文件的 话,我们并不知道它里头的函数到底是什么,调用的形式又是什么样的。系统标准路径:CMake 会在系统预定义的标准路径中查找库文件,这些路径通常是编译器和操作系统默认的库搜索路径。

2023-07-25 09:59:15 776

原创 Kmeans++聚类算法

Kmeans++的主要原理是:逐个选取k个簇中心,且离它簇中心越远的簇越有可能被选为下一个簇中心;Kmeans++的产生主要用于解决聚类结果严重依赖簇中心初始位置的问题;2.聚类结果严重依赖簇中心初始位置;1.需要预习确定分类的簇数;其它步骤等同Kmeans;3.对噪声数据敏感;

2023-05-10 17:30:45 651

原创 MATLAB:plot3函数详解

1. plot3(x,y,z):绘制由x,y,z连接的一组坐标,其中x,y,z指定为相同长度向量。例如:绘制三维螺旋图;2. plot3(x1,y1,z1,x2,y2,z2)在同一组坐标轴上绘制多组坐标。

2023-05-02 00:02:49 3322

原创 MATLAB:plot函数详解

【代码】MATLAB:plot函数详解。

2023-05-01 23:16:52 6857

原创 MATLAB:数值类型

创建数值变量double:双精度数组double类型是MATLAB中默认的数值数据类型,例如输入a = 3; class(3) = ‘double’; 使用realmin和realmax函数显示可以用双精度表示的最小和最大正值; 使用double(x)表示将x强制转换为double类型; 存储为8字节(64位)浮点数single:单精度数组 使用single(x)将双精度转换为单精度; 存储为4个字节(32位)浮点数 Int8: 8位有符号整数数组 存储为1字节8位有符号整数

2023-04-26 00:56:03 2967

原创 聚类-DBSCA聚类算法

DBSCA是一种基于密度,对噪声鲁棒的空间聚类算法,全名是Density-Based Spatial Clustering of Application with Noise, 也就是一种基于密度,对噪声鲁棒的空间聚类算法。密度可达:如果存在核心点P2,P3,...,Pn,且P1到P2密度直达,P2到P3密度直达,……密度相连:如果存在核心点S,使得S到P和Q都密度可达,则P和Q密度相连。非密度相连:如果两个点不属于密度相连关系,则两个点非密度相连。非密度相连的两个点属于不同的聚类簇,或者其中存在噪声点。

2023-04-22 22:15:36 195

原创 K均值聚类

以上两种实现方式,得到的结果是不一样的,可能原因是:一方面是初始质心(中心点)的选取不一样;另一方面是度量方式的不同,前者是欧式距离后者是曼哈顿距离;:K均值聚类是一种常见的无监督聚类算法,该方法通过迭代的方式寻找k个簇,使得各个样本距离所属簇中心点的误差平方和最小。5. 重复步骤2~4,直到新聚类中心和上一次聚类中心不发生改变或达到最大迭代次数时,停止更新。1. 从初始样本中选取k个样本作为初始聚类中心;3. 将所有聚类对象划分到最近的聚类中心;2. 计算每个聚类对象到聚类中心的距离;

2023-04-22 15:51:06 168

原创 C++ Map和Vector简单总结

map 是一种关联容器,关联形式为key-value,通过关键字来取代位置查找数组;b.rbegin();返回一个指向map头部的逆向迭代器。b.empty();返回指向map末尾的迭代器;b.begin();返回指向a头部的迭代器;返回map中元素的个数;set是一个内部自动有序且不含重复元素的容器;b.count();返回指定元素的个数;a.find(1);b.insert();a.clear();清除a中所有的元素;b.erase();b.clear();返回a中元素的个数;

2023-04-05 09:51:19 341

原创 C++ vector基础总结

表示在向量a的第1个位置前插入b的第0个一直到最后一个元素;

2023-04-04 23:03:36 82

原创 C++引用作为函数参数和返回值

假设现在有一种需求:写个函数,通过函数内部来改变输入变量的值;如果用采用值传递的方式,显然改变不了,因为作用域的缘故;那怎么办呢?C++提供了传递变量的引用,将该函数的形参改为引用变量,也就是给输入的变量起了个别名,该别名等同于该变量。因此,引用实际上是一种变量的“别名”,当以引入作为函数参数时,输入参数会随着函数内部变化而同步变化;比如下面例子:函数func1是值传递,单向传递,函数内部无论怎么修改a,也不会影响到外面;

2023-03-29 23:40:50 231

原创 C++命名空间

既然生活种有这种情况出现,那么C++中也有。假设你写了一个ADD函数,另一个人也写了一个ADD函数,那么编译器无法判断使用哪个ADD函数。定义了两个命名空间A和B,显然里面包含了相同的变量和函数,通过使用命名空间,我们可以使用不同人写的同名变量、同名函数和同名类等。假设有两个班级A和B,而且每个班级都有一个叫小明的同学。那么,我们如何区分呢?有一种叫法很好区分,就是A班小明和B班小明。因此命名空间就出现了。它实际上是为了解决不同库中相同变量、函数或类的问题。

2023-03-29 21:46:38 59

原创 MATLAB之四元数表示旋转

旋转向量为[0,0,1],旋转角度为180°,由此由旋转向量转四元数q2为[0,0,0,1];quatconj(q): 求共轭四元数;quatconj(q) = [1,0,1,0]假设三维点[1,0,0]绕轴旋转180°变为[-1,0,0];quatdivide(q,r): 求取两个四元数除法;设三维点[1,0,0]用四元数表示为p[0,1,0,0];quatmultiply(q,r): 求取两个四元数乘法;quatlog(q): 求四元数自然对数;quatpower(q): 求四元数幂;

2023-03-19 18:50:42 1468

原创 C++之数据结构

3. 实型变量:实型变量分为浮点型变量,分为单精度(float)、双精度(double)和长精度(long double)3种,分别占4,8,10字节;注:<iostream>预处理器直接在include子目录下查找头文件,而‘add.h’优先在当前文件中查找,找不到会去include子目录查找。如cout<<setpresion(6)<<x<<endl;2 整型变量:分为长(long)、短(short)和整型(int),无符号(unsigned)和有符号(signed),即无加减符号。

2023-03-18 12:20:12 77

原创 VS Code中cmake编译入门

单个C++程序可以用g++编译,指令较短;但当有大型项目存在多个C++程序时,使用g++编译就极其不方便啦,那么我们能不能通过一个简单指令就能编译所有C++程序呢?当然有啦,cmake就是其中一种啦!

2023-03-18 00:53:02 821

原创 ubantu 18.04运行aloam算法跑kitti数据集指令

就能运行ALOAM算法啦!

2023-03-17 22:23:47 455

原创 Vs code launch.json配置文件解读

如何来启动调试你的代码程序的,这其中包括你的程序在哪个位置,你用什么工具来调试,调试的时候需要给调试工具传什么参数等。目标工作目录,在哪个目录调试程序,一般在当前文件夹(项目所在文件夹)时,在开始运行程序时,不立刻往后执行,先暂停一下,一般填。:用来配置每一项调试任务的具体配置信息。:调试任务的名称,用与在下拉列表中展示。调试模式,一共有两种模式。:表示版本号,不用修改。程序所在路径和程序名;编译器的类型,我用的。表示和应用一起启动;程序启动是传递的参数。

2023-03-17 00:16:18 1299

原创 Vs code task.json配置文件解读

{file}:文件自身的绝对路径,也即/home/ Demo /Test/.vscode/tasks.json。command: “D:\\mingw64\\bin\\g++.exe”------表示编译器所在的位置;${fileDirname}:文件所在的文件夹路径,也即/home/Demo /Test/.vscode。${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks。“label”: “C/C++: g++.exe生成活动文件”-----表示。

2023-03-16 23:49:58 2869

原创 Linux 系统安装向日葵软件

此外,也可以通过命令行安装向日葵deb文件;

2023-03-16 23:05:16 2988

空空如也

空空如也

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

TA关注的人

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