自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 论文阅读-单目视觉惯性系统时间标定

本文提出了一种在线标定视觉-惯性系统中相机与 IMU 之间时间偏移的方法。该方法将时间偏移视作一个待估参数,联合优化相机状态、IMU 状态与特征点位置,以实现高精度的时间同步。该方法具备以下优势:通用性强,可嵌入多种基于优化的 VIO 框架中;无需额外标定图案,如棋盘格即可在线运行,适合实际部署;实验显示,其标定精度与 Kalibr 等离线工具相当,甚至在稳定性和实时性方面更具优势;在 EuRoC 与实际场景测试中表现出优异的鲁棒性与轨迹精度。

2025-06-14 17:13:33 678

原创 从零开始学SLAM-Lidar+相机标定

采集图像+点云帧]↓[图像识别棋盘 → PnP → 得到 (o_c, n_c)]↓[点云提取平面 → RANSAC → 得到 (o_l, n_l)]↓[构造误差模型,优化 R 和 t]↓[验证结果 → 投影对齐 → 保存标定外参]这里给一个参考视频,是一个博主拿他采集的数据使用Matlab进行标定的操作视频。

2025-05-28 00:36:49 1025

原创 ios系统安装miniforge+vscode+pcl+opencv

Homebrew 最初是由 Max Howell 在 2009 年开发的。当时 macOS 系统缺乏一个像 Linux 上的 apt-get 或 yum 那样的包管理工具,用户在安装软件时往往需要手动下载、编译和配置,过程繁琐且容易出错。Homebrew 的出现填补了这一空白,它借鉴了 Linux 上的包管理理念,并针对 macOS 系统进行了优化。$(curl-fsSLbrew install+‘‘要安装的包’’

2025-05-26 11:39:51 673

原创 ORB特征点检测算法

角点是图像中灰度变化在两个方向上都比较剧烈的点。与边缘(只有一个方向变化剧烈)或平坦区域(灰度变化很小)不同,角点具有方向性和稳定性。tips:像素梯度计算。

2025-05-12 22:03:24 1164

原创 SIFT特征点检测

为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小,在高斯差分金字塔中寻找极值点,除了考虑x,y方向的点,还要考虑σ(尺度) 方向的点,所以判断一个像素点是否为极值点,要与周围的26个点(一组有六个层的话就生成五个差分图像,在中间三层中寻找极值点,9*2+8=26)进行比较,找到极值点。每个组包含一系列逐渐平滑的图像,每个层对应于不同的尺度。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图像特征点和次邻近的原图像特征点。

2025-04-30 15:11:51 826

原创 从零开始学习SLAM|技术路线

PnP (Perspective-n-Point):根据已知的3D点和其在图像中的投影,估计相机的旋转和位移,进而求得相机的 位姿(位置与朝向)。前端除了执行视觉里程计(估计相机相对运动)外,还会进行一些其他任务,例如:特征提取与匹配、位姿估计(通过方法如PNP等)、局部地图构建(局部优化),滑动窗口优化等。局部一致性:前端会维持一个 滑动窗口,随着新帧的加入,窗口中只保留当前的几帧,这样能够在局部范围内进行优化,使得前端的估计更加精确。局部优化:根据前端估计的相机位姿,进行局部地图的更新。

2025-04-24 18:04:55 752

原创 从零开始学习SLAM | 用四元数插值来对齐IMU和图像帧

笔记来自IMU(Inertial Measurement Unit,惯性测量单元)是一种惯性传感器模块,用于测量物体的运动状态,包括加速度、角速度和(部分情况下)磁场强度。IMU的工作原理基于惯性原理,通过测量加速度和角速度,可以推断物体的运动状态,包括位置、速度和姿态。IMU广泛应用于导航系统、无人机、机器人、虚拟现实设备等领域。

2025-04-14 20:11:40 499

原创 从零开始学习Slam|ICP原理与应用

ICP全称Iterative Closest Point,翻译过来就是迭代最近点。ICP在点云配准(registration)领域应用的非常广泛.

2025-04-02 21:17:02 956

原创 G2o顶点与边编程总结

G2o的顶点与边属于 HyperGraph 抽象类的继承OptimizableGraph 的继承。BaseVertex<D,T> D是预测点的维度(在流形空间的最小表示)T是待估计vertex的数据类型,比如用四元数表达三维旋转的话,T就是Quaternion 类型。

2025-03-14 18:07:28 449

原创 G2o顶点编程

它将优化问题建模为一个图,图中的节点表示优化变量(顶点),边表示变量之间的约束关系(误差项)。表示3D点与相机之间的投影关系,每条边连接一个3D点顶点和一个相机位姿顶点,表示该3D点在相机成像平面上的投影观测。边的优化目标是最小化观测值(图像上的2D点)与 根据当前估计的相机位姿和3D点投影得到的2D点之间的误差。给定一组世界坐标系下的3D点(p3d.txt)以及它在相机中对应的坐标(p2d.txt),以及相机的内参矩阵。边的优化就是最小化 实际得到的相机位姿与根据3D点投影得到2D坐标的误差。

2025-03-12 20:15:57 369

原创 从零开始学习Slam--数学概念

最直观的理解就是,给定群中的任意两个元素,它们经过群操作后得到的结果仍然是这个群的一个合法元素,而且这个操作需满足一系列的代数性质。具体来说,李括号运算是一个从李代数的两个元素到李代数的映射,记作 ([X, Y]),其中 (X) 和 (Y) 是李代数中的元素。具体到李代数与李群之间的关系,李代数可以被看作李群在单位元(即李群的恒等元素)的切空间,李括号反映了李群上流形局部的非交换性,即群操作在局部上的非交换性质。旋转矩阵属于特殊的正交群,即SO(n),这里n通常是3,所以SO(3)就是三维旋转矩阵的群。

2025-03-04 20:24:18 930

原创 从点云到网格--从零开始学习Slam

本文是学习笔记,原文来自点云通常是三维的,包含大量无序的点。网格生成的目标是将这些点连接成三角面片或四边形面片,形成连续的表面。点云网格化就是用点云生成网格,最后得到的是一个连续(相对于前面的离散点)的表面。如果再加上纹理贴图,就能得到和真实物体一样的三维模型了。

2025-02-21 18:02:37 1141 2

原创 SLAM-g2o学习

本文是学习笔记,原文来自。

2025-01-10 19:10:33 1222 2

原创 一些问题解释

一. 全连接层的作用全连接层(Fully Connected Layer,简称 FC 层)是神经网络中常见的一种层,主要用于将上一层的输出转换为目标输出。其主要作用如下:特征提取与组合全连接层通过权重矩阵对输入的特征进行线性变换,同时添加偏置项,再经过激活函数的非线性变换。这一过程可以将上层提取的特征重新组合,以捕获更加抽象或全局的信息。特征映射到目标空间全连接层的输出维度通常与具体任务相关:在分类任务中,全连接层的输出维度通常等于类别数,表示每个类别的得分或概率。

2025-01-06 16:51:21 634

原创 点云入门|KDTree 与 平滑法线估计

首先,放一个点云官网的的网址,本篇文章仍然是对教程的学习和复盘。

2024-12-25 17:23:47 1114

原创 点云融合代码学习

例如,如果深度图的单位是毫米,而你的计算需要以米为单位表示深度值,那么 camera.scale 的值可能是 1000。深度图中的像素值(如d)可能需要乘以一个比例因子(即camera.scale)才能得到真实的深度值。深度图是深度传感器或深度相机生成的二维图像,其中每个像素的值表示相机到场景中对应点的距离。相机内参用于从空间点(X, Y, Z)投影到图像平面上的像素坐标(u, v)一般由焦距,主点坐标,缩放因子,与附加内参(径向畸变,切向畸变)等构成。函数中有下面的代码,作用是由图像坐标映射到空间坐标。

2024-12-16 20:32:43 1141

原创 ncnn-预备知识

NCNN 对 AVX 的支持NCNN 是一个高效的神经网络推理框架,主要针对移动端优化,但也支持桌面平台(x86 架构)。在桌面平台上,NCNN 会利用 CPU 的 SIMD 指令集(包括 AVX 和 AVX2)进行加速。如果 CPU 支持 AVX 或 AVX2,NCNN 会在编译时和运行时自动启用相关优化,从而提升计算性能。NCNN_AVX=ON: 启用 AVX 优化。如果 CPU 支持 AVX2,编译时会自动利用 AVX2 指令集。确保编译环境中启用了支持。

2024-12-03 14:31:01 489 1

原创 hello,点云

亲爱的观众朋友们大家好,这里是爱说标准c语言的老嫂子。。。公司的项目终于快做完了,我又可以学自己的东西了( •̀ ω •́ )y~。今天把plc库下载并安装了,准备正式入门到放弃三维。

2024-11-15 18:29:06 853

原创 点云基础知识储备(复习)

一个点的齐次坐标可以表示为(x,y,1),这种表示方法具备以下特征具有标量乘法不变性:点(x,y,z)与(kx, ky, kz)实际上表示的是同一个点矩阵表示的便利性:在齐次坐标中,变换一个点可以通过乘以一个变换矩阵来完成表示直线:直线ax+by+c = 0可以表示为齐次坐标中的点(a,b,0),这种表示方式允许我们将点和直线统一在一个框架内,并且可以轻松地转换为其他坐标系统。

2024-11-11 16:42:00 1060

原创 遇到0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突/无可用源【已解决】

例如,只要填充 1 字节即可让 data按 4 字节对齐,所以编译器智能地只插入了 1 个字节的填充,而不增加多余的填充。编译器智能地识别这一需求,计算出插入 1 字节就可以满足对齐要求,而无需插入多余的填充字节(不需要 3 个字节),因为这会浪费空间。在这个示例中,DefaultAlign 结构体的大小为 8 字节,而不是 7 字节,因为编译器在 uint8_t a 和 uint32_t b 之间添加了 3 个填充字节。这个指令结束了之前的对齐设置,恢复为默认的对齐方式。

2024-10-30 15:31:19 1337 2

原创 cv::Mat 成员函数

可以通过 CV_MAT_DEPTH() 和 CV_MAT_CN() 宏来分别获取图像深度和通道数。访问矩阵中 (x, y) 位置的像素值,T 是像素的类型。例如,如果是 8 位的灰度图像,可以使用 img.at(y, x) 来访问指定位置的像素值。elemSize() 返回每个像素的字节大小,等于 channels() * elemSize1()。elemSize1() 返回每个通道的元素大小,以字节为单位,即每个像素在某个通道中占用的字节数。分别代表图像的列数(宽度)和行数(高度),即图像的宽和高。

2024-10-16 11:29:32 391

原创 Yolov5 部分参数解释

2024年,ONNX的最新opset版本通常在17至20之间, 每个opset版本都引入了新的操作或改进现有操作的支持,具体使用的版本取决于你使用的框架和工具链是否支持最新的opset。推理时的原地处理:当你在使用导出的模型进行推理时(通常在 detect.py 或类似文件中),如果在推理过程中使用了 --inplace 参数,这意味着输入图像可以被直接修改。Pad (opset 11):在较早的opset版本中,Pad操作只能使用固定的填充尺寸,后来版本引入了对动态填充的支持。

2024-10-16 09:51:54 750

原创 使用c#制作一个小型桌面程序

创建.NET Framework新项目,将之前生成的dll放在Demo文件夹的bin ->debug或是 release中(看你自己用的什么模式),创建完成后 系统会自动生成一些文件,其中 pch.cpp 先不要修改,pch.h中先导入自己需要用到的库,下面是我的代码。布局完了之后会自动生成Form1.Designer.cs 的窗口设计代码,点击控件按F4 还可以修改他们的属性。完成之后点击生成 就可以在bin中出现的你的.exe文件咯,是不是很简单呀~[狗头]我们还需要一个入口主程序。

2024-09-14 17:02:52 4858

原创 c++多态、数据抽象、数据封装(一)

可以看到上面的代码中 通过虚函数实现了动态链接的操作,虚函数是在基类中使用关键字 virtual 声明的函数。您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象,但是您在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。数据封装是指将对象的属性(数据)和方法(操作)绑定在一起,对外隐藏对象的内部状态,只允许通过对象的方法来访问和修改内部数据。有了多态,您可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的。

2024-09-09 16:38:06 470

原创 yoloseg输出掩码坐标

YOLOv5-seg是一个基于YOLOv5模型的变种,它用于进行图像分割。

2024-09-05 16:10:39 1309 3

原创 从零开始学习SLAM六(单应矩阵)

如果一个平面上的点集经过某种变换后,在另一个平面上形成的新点集仍然保持原来的线性特性(如共线的点仍然共线),那么这种变换就称为单应性变换。平面方程:在讨论单应矩阵时提到的平面方程,通常指的是图像中的某个平面在三维空间中的方程。具体来说,当我们在处理单应矩阵时,我们关注的是两个图像之间对应点的关系,这些点通常位于同一个平面上。x+d=0中的x = (X,Y, Z)指的是三维世界坐标系中的点,世界坐标系是一个固定的参考坐标系,用于描述三维空间中的物体位置和方向。H矩阵的两边是两张图像对应的匹配点对。

2024-08-26 13:43:06 1397

原创 从零开始学习SLAM(五):极几何与极约束

文章参考。

2024-08-20 15:11:52 1231

原创 从零开始学习Slam(四)-相机成像模型

1、首先,世界坐标系下有一个三维点Pw2、若世界坐标系到相机坐标系下的变换为旋转矩阵 R 和平移向量t 组成的变换矩阵 T,那么Pw在相机坐标系下的坐标为 Pc = R * Pw + t = T * Pw3、此时的Pc三个分量分别是X, Y, Z,我们需要把它投影到归一化平面Z=1上,这样我们得到了相机坐标系下Pc的归一化坐标 Pc’ = (X/Z, Y/Z, 1)4、用内参矩阵乘以归一化坐标就得到了像素坐标 Puv = K*Pc’

2024-08-15 14:47:55 1273

原创 c++ 引用

当返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。当函数返回一个引用时,则返回一个指向返回值的隐式指针。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。所以说引用变量是一个别名,也就是说,它是。

2024-08-12 19:43:44 412

原创 c++结构

为了定义结构,您必须使用struct语句。...type_name是结构体类型的名称,是标准的变量定义,比如int i;或者float f;或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。下面是声明一个结构体类型Books,变量为book。

2024-08-09 16:55:48 255

原创 c++ 类与对象(一)

Box Box1;// 声明 Box1,类型为 BoxBox Box2;// 声明 Box2,类型为 Box。

2024-08-07 18:03:07 1112

原创 c++ 友元函数

友元函数(Friend function)是指在 C++ 中可以访问类的私有成员(私有变量和私有函数)的非成员函数或者其他类的成员函数。具体来说,友元函数并不是类的成员函数,但却能够访问类的所有成员,包括私有成员。访问控制:虽然友元函数可以访问类的私有成员,但这并不意味着所有的函数都应该声明为友元函数。友元函数破坏了封装性原则,因此应当谨慎使用,仅在确实需要访问私有成员而无法通过公有接口实现时才使用。设计考虑:在设计类时,尽量通过成员函数和成员变量的公有接口来操作对象的状态,避免过多地使用友元函数。

2024-08-01 13:42:17 434 1

原创 c++ 拷贝构造函数

拷贝构造函数的默认生成:如果你没有显式地提供拷贝构造函数的定义,C++ 会为你生成一个默认的拷贝构造函数。这里 obj2 将会通过 obj1 的拷贝构造函数被初始化。拷贝构造函数是一个特殊的构造函数,其参数是同类型的引用,并且用于初始化一个对象,这个对象是传递给它的同类型对象的副本。在这个例子中,当 obj2 通过 obj1 的拷贝构造函数初始化时,拷贝构造函数会被调用,输出 “拷贝构造函数被调用”。以值传递的方式传递对象给函数:如果函数参数是按值传递的,并且参数类型是类类型,那么拷贝构造函数将会被调用。

2024-07-30 15:26:06 596

原创 注意力机制(三)- 空间注意力机制

空间注意力的核心思想是让模型能够聚焦于输入数据中最重要的空间区域关注区域:空间注意力机制使模型能够识别并关注输入图像或文本中的关键区域。权重分配:通过学习一个权重分布,模型可以为输入数据的每个空间位置分配不同的重要性。这些权重通常通过一个神经网络层(如卷积层或全连接层)生成,并经过激活函数(如Softmax)处理,以确保权重之和为1。

2024-07-27 20:26:17 1464

原创 c++ 构造函数与析构函数

本文参考,仅作笔记用。

2024-07-25 14:57:19 997 1

原创 c++类访问修饰符

本文参考,个人笔记用。数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。(在类里面不写是什么类型,默认是 private 的,如果继承时不显示声明是 private,protected,public 继承,则默认是 private 继承)。另外,。

2024-07-24 19:58:20 713

原创 n m s

【代码】n m s。

2024-07-21 16:06:12 216

原创 注意力机制(二)-通道注意力机制

书接,我们已经通俗的介绍了 注意力机制的原理,这次我们就来了解一下几个经典的注意力机制网络。

2024-07-21 14:55:31 1291

原创 从零开始学习SLAM(三)

Slam学习。

2024-07-04 18:14:39 1537

原创 【学习】开发板接口

工作用到机器的开发板 有如上三个接口。最右是仿真器,中间是RS232串口,最左是电源线。

2024-06-26 15:17:57 1517

空空如也

空空如也

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

TA关注的人

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