C++ 优先队列

普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。本节来介绍C++中的优先队列。

本文介绍 C++ 优先队列的概念与用法,讲解其基于堆的最高优先级先出队特性,涵盖相关定义、声明方式(默认、greater/less、自定义仿函数、结构体重载小于号)以及基本操作成员函数,并给出基本类型、pair 与自定义类型的完整示例。

优先级高者先出,队列自有章法

阅读更多...

ORB-SLAM2 学习笔记

ORB-SLAM 是西班牙 Zaragoza 大学的 Raúl Mur-Arta 编写的视觉 SLAM 系统。 它是一个完整的 SLAM 系统,包括视觉里程计、跟踪、回环检测,是一种完全基于稀疏特征点的单目 SLAM 系统,同时还有单目、双目、RGBD 相机的接口。其核心是使用 ORB (Orinted FAST and BRIEF) 作为整个视觉 SLAM 中的核心特征。

本文介绍特征点法 SLAM 的代表作 ORB-SLAM2,概述其基于 ORB 特征、由跟踪、局部建图和闭环检测三大线程并行运行的系统框架,以及支持单目、双目、RGB-D 相机和实时运行等特点。文章还解析了代码结构,包括数据集读取、地图表示与 System 入口函数。

三大线程并行,稀疏特征建图定位

阅读更多...

SLAM 岗位求职与简历书写

本文学习自B站计算机视觉Life的如何写简历

本文面向 SLAM 与计算机视觉算法岗位求职,先分析视觉算法岗的就业形势,再按个人信息、教育背景、项目经历、专业技能等板块讲解简历撰写要点与应避免的内容。文章最后给出夯实数学编程基础、关注产品落地等学习建议及适合投递的公司参考。

简历贵在精准,实力藏在细节

阅读更多...

C++ 容器 vector

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。

本文介绍 C++ 容器 Vector 的基本概念与顺序序列、动态数组等特性,系统列出构造函数、增删元素、遍历访问、判断与大小等常用成员函数的用法,并补充二维 Vector 的初始化与排序方法。

动态数组,Vector 一步到位

阅读更多...

C++ 排序算法

今日打卡题目如下:

  1. 排序数组

各种排序算法

  1. 冒泡排序
  2. 插入排序t
  3. 快速排序
  4. 堆排序
  5. 桶排序

C++中的自定义排序算法

本文以 LeetCode 912 排序数组为引,系统总结十种常见排序算法的思想、性能与 C++ 实现,覆盖冒泡、插入、选择、快排、归并、堆、希尔、基数等比较类与非比较类排序。文中还讲解了仿函数、lambda、函数指针等自定义排序方式及 STL 排序规则。

排序算法千万条,时间复杂度第一条

阅读更多...

SLAM 中的后端优化

本节介绍SLAM中的后端优化过程

本文介绍 SLAM 的后端优化,即同时对三维路标点位置与相机参数进行非线性优化的光束法平差(BA)。文章重点讲解 LM 算法作为信赖域方法的原理与优势——速度快、能在离初始值较远处收敛到最优解,并以表格对比了 KF/EKF、粒子滤波、EM 与图优化等常见后端方案的优缺点。

后端优化,让轨迹与地图一同精进

阅读更多...

相机标定

本节将探讨相机标定,主要探讨以下三个问题

  1. 相机标定原理
  2. 实现过程
  3. 棋盘格的好处

本文讲解相机标定,围绕标定原理、实现过程与棋盘格的好处三个问题展开。文章从世界、相机、图像、像素四个坐标系的变换出发推导内外参数矩阵,分析径向畸变与切向畸变的成因与校正,并梳理了传统标定、自标定、主动视觉及张正友标定法等主流方法,最后延伸至相机与 IMU 的联合标定。

标定得参数,二维像素还原三维世界

阅读更多...

C++ 字符串

string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。

本文将介绍字符串的基本概念和C++的常用操作。

本文介绍 C++ 字符串的基本概念与常用操作,涵盖下标、迭代器、新式 for 循环三种遍历方式,以及 length、find、insert、append、erase、substr、sort、replace、to_string 等成员函数的用法,并补充了字符串输入输出与 C 风格字符串函数的对比。

字符串虽小,操作技巧见真章

阅读更多...

对极约束

本文旨在了解一下几点:

  1. 对极约束是什么
  2. 基础矩阵F
  3. F的秩有什么意义
  4. 本质矩阵E
  5. E与F的区别与联系

本文学习 SLAM 中的对极约束,从两帧图像的匹配像素点出发推导出对极约束方程,介绍极点、基线、极线等基本概念及其”三点共面”的几何意义。文章重点讲解基础矩阵 F 与本质矩阵 E 的定义与联系(E=t^R,F=K^{-T}EK^{-1}),说明由匹配点求解 E 或 F 后即可分解出相机运动 R、t。

双视图匹配点,约束出相机运动

阅读更多...

哈希表与 C++

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。

本节将介绍哈希表的基本概念,与C++实现方法。

本文介绍哈希表的基本概念、常用散列函数与冲突处理方法,分析影响查找性能的因素,并结合 C++11 的 unordered_map 讲解其构造函数、成员函数与遍历等实际用法。

以空间换时间,哈希表巧解查找之困

阅读更多...
  • © 2019-2026 guoben

微信