自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ORB-SLAM2学习笔记:ORBextractor::operator()函数的逐行解析

首先,函数开始检查输入图像是否为空,如果为空则直接返回。这部分相对简单,但需要指出错误处理机制。接下来获取Mat对象并断言图像类型为CV_8UC1,确保输入正确。然后,ComputePyramid(image)构建图像金字塔,这里需要解释金字塔的作用和多尺度特征提取的重要性。接着是ComputeKeyPointsOctTree(allKeypoints),这里可能涉及到四叉树的关键点分配,需要与之前提到的ExtractorNode结构联系起来,说明如何实现关键点的均匀分布。

2025-05-28 14:51:13 581

原创 ORB-SLAM2学习笔记:ComputeKeyPointsOctTree分析过程记录

之后,调用DistributeOctTree函数,将关键点按八叉树分布,筛选出符合数量要求的关键点,并存入当前层的keypoints。接着处理每个关键点的坐标,加上minBorderX和minBorderY的偏移,设置octave(金字塔层)和size(根据缩放因子调整的尺寸)。wCell和hCell是每个网格的实际大小,可能因为不能整除而向上取整。该代码段用于在图像金字塔的指定层级上进行分块FAST特征点检测,并通过动态阈值调整和特征点再分配策略实现关键点的均匀分布,属于ORB特征提取流程中的核心步骤。

2025-05-28 14:47:09 924

原创 ORB-SLAM2学习笔记:ExtractorNode::DivideNode和ORBextractor::DistributeOctTree函数详解

该函数用于将当前节点(父节点)分割为四个子节点(n1-n4),并将父节点中的特征点(

2025-05-28 10:23:29 753

原创 ORB-SLAM2学习笔记:ORBextractor的IC_Angle、computeOrbDescriptor、computeOrientation函数详解

该函数用于计算图像特征点的方向角(ORB特征中的灰度质心方向),通过分析局部图像块的灰度分布,实现特征点的旋转不变性。核心思想是通过计算图像块的质心方向,确定特征点的主方向。

2025-05-28 10:03:08 659

原创 ORB-SLAM2学习笔记:ORBextractor的构造函数详解

这段代码通过预计算逆缩放因子和逆方差,为ORB特征提取的尺度不变性提供了数学基础,同时通过空间换时间的策略优化了实时性能,是计算机视觉中多尺度特征处理的核心步骤之一。

2025-05-27 11:37:40 1113

原创 SLAM:单应矩阵,本质矩阵,基本矩阵详解和对应的c++实现

单应矩阵(Homography Matrix)是计算机视觉中描述同一平面在不同视角下投影变换的核心工具,广泛应用于图像校正、拼接、虚拟广告牌替换等场景。以下从原理、求解方法和C++实现三方面展开详解:定义与作用单应矩阵是3×3的齐次矩阵,满足关系:s⋅x′=H⋅xs \cdot \mathbf{x}' = \mathbf{H} \cdot \mathbf{x}s⋅x′=H⋅x其中,x\mathbf{x}x和x′\mathbf{x}'x′分别为同一平面点在不同图像中的齐次坐标,(s)为尺度因子。单应

2025-05-07 13:37:32 1137 1

原创 SLAM:正定矩阵二次型的定义和性质

正定矩阵对于任意非零实向量 (xxx),二次型 (xTAx0xTAx0) 恒成立。复矩阵的推广形式(Hermite矩阵)需满足 (xHAx0xHAx0)((xHx^HxH) 为共轭转置)。几何意义:正定矩阵对应的二次型在空间中表示一个严格凸的曲面(如椭圆抛物面),所有方向上的“能量”均大于零。

2025-05-06 17:32:08 885

原创 SLAM算法工程师面经大全:2025年面试真题解析与实战指南

在长廊场景中,由于环境的重复性较高,容易出现大量的误匹配。例如,在后端优化中,通过Gauss - Newton或Levenberg - Marquardt算法对相机的位姿和地图点的位置进行优化,以提高定位和建图的精度。例如,在实际工程案例中,当机器人在人群密集的环境中移动时,激光雷达的数据可能会受到人体的干扰,此时需要对数据进行滤波和校准,以去除噪声和异常值。例如,确保模块的接口与传感器和其他设备兼容,选择足够大的内存以保证算法的运行效率,同时要配备良好的散热装置,保证模块在高温环境下也能稳定工作。

2025-05-06 15:06:14 1231

原创 深入解析SLAM中的词袋模型:从原理到实战的全面教程

词袋模型源于自然语言处理领域,其基本原理是将文本看作是由一系列无序的单词组成的集合,忽略单词之间的语法和顺序信息,仅关注单词的出现频率。在计算机视觉中,词袋模型被引入用于图像和场景的表示。其核心组件包括特征、词汇表和相似度计算。特征是从图像中提取的具有代表性的局部信息,如关键点及其描述子;词汇表则是通过对大量特征进行聚类得到的视觉单词集合;相似度计算用于衡量不同图像之间的相似程度。在SLAM系统中,词袋模型主要用于回环检测和场景识别。

2025-05-05 12:49:34 630

原创 SLAM中的状态估计理论:从基础到前沿的完整解析

在SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)中,状态估计问题的核心在于通过带噪声的输入和观测数据,推断相机位姿以及路标点位置。经典的SLAM模型由运动方程和观测方程构成。运动方程可表示为:xk=f(xk−1,uk)+wkx_k = f(x_{k - 1}, u_k) + w_kxk​=f(xk−1​,uk​)+wk​,其中xkx_kxk​为相机在kkk时刻的位姿(通常具有六自由度,可用变换矩阵或李代数的指数描述),uku_kuk​是输入量,wk

2025-04-30 16:07:56 977

原创 高斯-牛顿法与列文伯格-马夸尔特法:非线性优化的理论推导与C++实现

在SLAM(Simultaneous Localization and Mapping,同时定位与建图)领域,非线性优化问题是核心挑战之一。其本质在于从一系列带有噪声的测量数据中,精确估计出机器人的位姿和地图信息。为了实现这一目标,需要构建合适的误差函数来衡量测量值与预测值之间的差异。常见的误差函数构建方法有重投影误差和光度误差。重投影误差是将地图点投影到相机成像平面,计算投影点与实际观测点之间的像素误差,它在视觉SLAM中广泛应用,能有效利用图像特征点信息。

2025-04-30 15:03:58 974

原创 高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解

核心特性:连续内存、编译器对齐依赖、高效访问。应用场景:3D 重建()、点云处理、图像特征匹配。验证建议:通过sizeof和地址差直接验证实际内存布局。

2025-04-29 14:54:11 1307

原创 高翔《视觉SLAM十四讲》第七章视觉里程计3d-2d位姿估计代码详解与理论解析

在代码中,高斯牛顿法设置迭代次数为10次,g2o图优化也进行10次迭代,这是在多次实验后确定的一个较为合适的值,能在保证一定精度的同时,控制计算时间。EPnP算法的封装实现:OpenCV将EPnP算法进行了封装,用户只需调用solvePnP函数,并传入3D点、2D点、相机内参矩阵等参数,即可得到相机的旋转向量r和平移向量t。误差计算方法:对于每一对3D - 2D对应点,将3D点通过相机位姿和内参矩阵投影到图像平面上,得到投影点,然后计算投影点与实际观测点之间的欧氏距离,即为该点的重投影误差。

2025-04-29 14:03:17 1071

原创 视觉里程计技术全景解析:揭秘技术演进与未来挑战

视觉里程计(VO)是基于视觉传感器所传回的图像数据来估计自身(传感器或运动载体)位姿(位置和姿态)变化的技术。其工作原理是通过分析相邻图像帧之间的特征信息,计算出载体的运动状态。与传统里程计,如轮速里程计相比,有着本质区别。轮速里程计依靠车轮转动的圈数来推算行驶距离和方向,这种方式受限于车轮与地面的摩擦情况,在打滑、颠簸等场景下误差较大。而视觉里程计摆脱了对物理接触的依赖,通过视觉信息实现定位,大大提高了定位的准确性和适应性。从历史发展来看,轮速里程计是早期常用的定位手段,在汽车、机器人等领域广泛应用。

2025-04-29 10:36:00 876

原创 无图智能驾驶技术解析:从算法原理到工程实践

无图智能驾驶作为智能驾驶领域的新兴技术,正逐渐改变着人们对自动驾驶的认知。它摒弃了传统的高精地图依赖,凭借先进的传感器和算法实现车辆的自主行驶。与传统高精地图方案相比,无图智能驾驶具有更高的灵活性和适应性,能够快速响应复杂多变的道路环境。

2025-04-29 09:41:58 1680

原创 在g2o中,顶点(Vertex)和边(Edge)插入到概率图的流程

实际应用中需根据问题特性选择合适的顶点/边类型,并通过信息矩阵、鲁棒核等参数调节优化行为。更复杂场景(如动态SLAM)可参考hdl_graph_slam中的模块化设计,将顶点和边的管理封装为独立函数。:信息矩阵为协方差矩阵的逆,反映测量置信度(如像素噪声越大,权重越低)。:观测数据(如像素坐标、传感器读数)作为误差计算基准。:抑制异常值影响(如Huber核降低大误差项的权重)。:ID用于在图中标识顶点,冲突会导致运行时错误。:先验信息或无需优化的顶点可固定。:根据问题类型选择顶点类型(如。

2025-04-28 17:47:50 439

原创 在g2o图优化框架中,顶点(Vertex)和边(Edge)的定义与功能的区别

顶点定义关注参数初始化和更新,边定义关注误差计算和导数推导。两者协同构建图模型,通过优化算法迭代求解最优变量值。实际应用中需根据问题特性选择合适的顶点和边类型(如SE3位姿顶点或二元边连接方式)。边通过连接顶点构建约束图。

2025-04-28 17:46:31 492

原创 《视觉SLAM十四讲》中基于g2o实现BA优化的核心代码逐行注释

实际应用中需结合传感器模型调整误差函数和信息矩阵。

2025-04-28 17:41:29 336

原创 深入解析SLAM中的PnP算法:原理推导与C++工程实践

在SLAM领域,PnP(Perspective-n-Point)问题是一个关键的研究方向。其核心在于处理3D - 2D的对应关系,即已知空间中n个点的三维坐标(世界坐标系下)以及它们在图像平面上对应的二维投影点坐标,求解相机的位姿(旋转和平移)。运动方程描述了相机在不同时刻的状态变化,而观测方程则建立了世界坐标系中的三维点与图像平面上二维点之间的联系。这两者紧密关联,运动方程的结果会影响观测方程中的相机位姿参数,进而影响三维点的投影位置。相机位姿估计存在一定的约束条件。

2025-04-28 14:42:14 599

原创 Ceres Solver实战:Bundle Adjustment优化从入门到精通

在三维重建和SLAM(同时定位与地图构建)领域,Bundle Adjustment(BA)扮演着核心角色。在三维重建中,它能精确地恢复场景的三维结构和相机的参数;在SLAM里,有助于机器人或设备准确地定位自身并构建周围环境的地图。BA的核心原理是通过优化相机的内参、外参以及三维点的位置,来最小化重投影误差。重投影误差指的是三维空间中的点投影到图像平面上的位置与实际观测到的位置之间的差异。具体来说,我们有一系列的三维点 PiP_iPi​ 和对应的相机位姿 Rj,tjR_j, t_jRj​,tj​ 以及相机内参

2025-04-28 09:13:21 1535

原创 端到端算法在SLAM中的应用:从理论到实践全解析

端到端算法与SLAM技术的融合展现出了显著的创新性。传统SLAM流程在定位和地图构建过程中,各个环节相对独立,需要分别进行特征提取、数据关联、位姿估计和地图构建等操作,这使得整个系统的复杂度较高,且容易受到误差累积的影响。而端到端算法将输入数据直接映射到最终的输出结果,避免了传统流程中多个中间步骤的繁琐操作,大大简化了系统结构。传统SLAM流程的局限性主要体现在误差累积方面。

2025-04-27 16:17:45 1095

原创 深度学习与SLAM特征提取融合:技术突破与应用前景

传统SLAM特征提取算法,如SIFT、ORB等,在复杂场景下存在显著的性能瓶颈。在动态环境中,SIFT算法难以准确区分动态物体和静态背景,导致特征匹配出现大量误匹配。例如在室外街道场景中,行人、车辆的移动会干扰特征点的提取和匹配,使得定位和建图的精度大幅下降。光照变化也是传统算法的一大挑战。ORB算法对光照较为敏感,当光照强度发生变化时,特征点的描述子会发生改变,从而影响匹配的准确性。在室内场景中,灯光的开关、窗户透进的阳光变化等,都可能使ORB算法的性能急剧恶化。纹理缺失场景同样是传统算法的短板。

2025-04-27 16:03:48 802

原创 深度学习涉及的数学与计算机知识总结

通过系统学习以上内容,可逐步从“调包”阶段过渡到对模型原理的深入理解,并具备独立设计算法和优化工程落地的能力。

2025-04-27 15:43:33 466

原创 SLAM技术:从原理到应用的全面解析

SLAM,即同时定位与地图构建技术,它是机器人在未知环境中从未知地点出发,在运动过程里通过不断观测环境特征来确定自身位置和姿态,进而构建周围环境的增量式地图,达成同时定位与地图构建的目标。这一技术解决了机器人在未知环境探索时的两大核心问题:“我在哪儿?”和“我周围是什么?”,是实现全自主移动机器人的关键所在。定位与建图之间存在着紧密的相互促进关系。准确的定位是构建精确地图的基础,只有明确自身位置,才能将观测到的环境信息准确地添加到地图中。

2025-04-27 14:17:30 829

原创 ORB-SLAM3核心模块、数据结构和线程交互方面解析

ORB-SLAM3作为当前最先进的视觉SLAM系统之一,其代码架构设计体现了高度模块化和多线程协同的特点。

2025-04-25 17:10:03 968

原创 计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形

【代码】计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形。

2025-04-24 17:46:54 451

原创 C++手动实现奇异值分解(SVD)算法:从理论到代码实践

SVD的核心公式为AUΣVTAUΣVT,其中AAA是待分解的矩阵,UUU和VVV是正交矩阵,Σ\SigmaΣ是对角矩阵。正交矩阵具有特殊的性质,其转置等于其逆,即UTUIU^TU = IUTUIVTVIV^TV = IVTVI,这意味着它们的列向量是相互正交的单位向量。对角矩阵Σ\SigmaΣ除了主对角线上的元素外,其余元素均为零,主对角线上的元素即为矩阵AAA的奇异值。奇异值通常按照从大到小的顺序排列,即σ1≥σ2≥。

2025-04-24 10:16:35 1100

原创 高翔《视觉SLAM十四讲》第7章对极几何相关内容,对极约束分析讲解

其中K为相机内参矩阵,R和t为两帧间的旋转和平移量,s₁、s₂为尺度因子(齐次坐标的尺度等价性允许等式在非零常数下成立)。:建议结合KNN匹配与双向匹配策略,提高匹配质量。对等式两边同时左乘平移向量t的外积矩阵。:通过三角测量验证恢复的R,t合理性。:在计算基础矩阵前应进行归一化处理。(符号≃表示齐次坐标下的等式)若考虑像素坐标,引入基础矩阵。

2025-04-18 15:26:32 748

原创 ORB-SLAM特征提取解析

cv::imread。

2025-04-15 17:24:06 879

原创 STM32嵌入式开发从入门到实战:全面指南与项目实践

低功耗设计是STM32的另一大亮点,它采用了多种节能模式,如睡眠模式、停止模式和待机模式,能有效降低系统功耗,延长电池续航时间,适用于对功耗敏感的设备。在采集数据时,首先要对传感器进行初始化,然后发送起始信号,等待传感器响应并接收40位数据,最后对数据进行校验和解析,得到准确的温湿度值。在进行远程固件升级时,首先通过通信接口(如UART、USB、WiFi等)将新的固件文件传输到STM32的存储区,然后由Bootloader将新的固件加载到应用程序区,实现固件的更新。在实际应用中,按键抖动是一个常见的问题。

2025-04-11 14:55:04 1531

原创 深入解析SLAM中的状态估计问题:从理论到C++实现

定义误差状态,包括位置误差、速度误差、姿态误差、加速度计偏置误差和陀螺仪偏置误差。2.

2025-04-11 14:22:47 800

原创 逆向工程完全指南:从入门到精通的核心路径与应用全景

逆向工程本质上是一种“从物理实体到数字模型”的技术转化过程。其核心在于通过对已有实物的测量和分析,构建出对应的数字模型。具体实现路径主要依赖于三维扫描与点云处理流程。三维扫描技术能够快速、准确地获取实物的表面形状和尺寸信息,生成大量的点云数据。这些点云数据就像是数字模型的“原材料”,后续需要进行点云处理,包括去噪、滤波、配准等操作,以提高数据质量。然后,通过曲面重构等方法,将处理后的点云数据转化为精确的数字模型。与正向工程不同,正向工程是从概念设计出发,逐步构建产品的过程;

2025-04-10 17:36:35 1420

原创 深入解析计算机操作系统的底层架构与核心模块功能

操作系统处于计算机系统的核心地位,是计算机硬件与用户之间的关键纽带,承担着资源管理者的重要角色。它负责统筹管理计算机的各类资源,如CPU、内存、存储设备以及输入输出设备等,确保这些资源能够高效、有序地为用户的应用程序服务。现代操作系统普遍采用内核态与用户态分离的设计理念,形成了分层结构。这种分层结构是操作系统发展演进的结果,早期的操作系统结构相对简单,随着计算机技术的不断发展和应用需求的日益复杂,为了提高系统的安全性、稳定性和可维护性,逐渐演变成如今的分层架构。从底层到高层,操作系统的分层结构大致可分为硬件

2025-04-10 17:12:06 1156

原创 深入解析回环检测:从原理到C++实战

回环检测在机器人与计算机视觉领域具有举足轻重的地位,其核心意义在于识别机器人或相机是否回到之前访问过的位置。这一功能能够有效降低累积误差,显著提升定位与建图的精度。在实际应用场景中,回环检测的身影随处可见。在室内服务机器人领域,它助力机器人在复杂的室内环境中精准导航,避免因重复路径导致的定位偏差;在无人驾驶汽车领域,回环检测可帮助车辆在城市道路中准确识别已行驶路段,提高行驶安全性与效率;在增强现实(AR)和虚拟现实(VR)领域,它能为用户营造更加稳定、真实的虚拟环境体验。

2025-04-10 15:44:38 864

原创 常微分方程求解全解析:从基础到矩阵方法深度实践

常微分方程的阶数指方程中未知函数导数的最高阶数。通解是包含任意常数且常数个数与方程阶数相同的解,特解则是通解中任意常数取特定值得到的解。以自由落体运动为例,根据牛顿第二定律(F=ma)(F = ma)(F=ma),可得(mg=md2ydt2)(mg = m\frac{d^{2}y}{dt^{2}})(mg=mdt2d2y​),这是二阶常微分方程。方程分类标准可依据未知函数及其导数是否为一次幂,若为一次幂则是线性方程,否则为非线性方程。初值问题是给定自变量某一值时未知函数及其各阶导数的值;边值问题是给定自变量

2025-04-09 15:01:54 966

原创 LU分解原理与C++实现:从理论到实践

LU分解的核心表达式为。

2025-04-08 17:02:14 630

原创 深入浅出卡尔曼滤波:从理论推导到C++实战

因此,在实际应用中,需要根据具体情况不断调整 (Q) 和 ® 的值,以达到最佳的滤波效果。以参考资料中的轨迹优化案例为例,通过调整Q和R的值,可以使滤波后的轨迹更接近真实轨迹,从而验证了卡尔曼滤波算法的有效性。在参考资料14的代码框架中,改进要点包括准确计算雅可比矩阵,考虑IMU数据的动态特性,以及合理设置过程噪声和观测噪声协方差。在最优估计方面,卡尔曼滤波通过综合考虑估计值和测量值,迭代给出不确定性最小的数值,从而在噪声环境下实现精准的状态估计。例如,在预测和更新阶段,打印状态向量和协方差矩阵的值。

2025-04-08 16:25:06 1442

原创 机器人姿态转换详解:python和c++案例

该实现方案在Intel i7-12700H处理器上测试,单次姿态变换计算耗时小于0.5μs,可满足大多数实时机器人控制需求。完整工程建议采用CMake构建,并添加ROS2接口实现实际系统集成。使用Eigen库的表达式模板技术加速运算。操作实现矩阵分块计算。

2025-04-08 10:34:33 822

原创 C++模板元编程与表达式模板技术深度解析:从原理到Eigen实战

模板元编程是C++中一种强大的编程技术,其核心范式包含模板特化机制与递归实例化原理。模板特化允许针对特定的模板参数提供专门的实现,这使得代码能够根据不同的类型进行定制化处理。例如,当处理不同数据类型时,可以为某些特殊类型编写特化版本的模板函数或类,以实现更高效或更符合需求的操作。递归实例化则是利用模板在编译时进行递归计算。通过不断实例化模板,直到满足终止条件,从而在编译阶段完成复杂的计算任务。这种方式将计算从运行时转移到编译时,大大提高了程序的运行效率。编译期类型操作是模板元编程的核心价值所在。

2025-04-03 16:14:10 933

原创 UE5Actor模块源码深度剖析:从核心架构到实践应用

在UE5引擎中,Actor扮演着至关重要的角色,它是整个游戏世界中各类可交互对象的基础抽象。从本质上来说,所有能够被放置到关卡中的对象都属于Actor的范畴,像摄像机、静态网格体以及玩家起始位置等,这些都是游戏场景构建和交互的关键元素。Actor具备强大的三维变换能力,支持平移、旋转和缩放操作。这使得开发者可以根据游戏设计的需求,灵活地调整Actor在游戏世界中的位置、朝向和大小。

2025-04-03 11:59:47 1382

空空如也

空空如也

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

TA关注的人

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