1.(四十三)特征点检测-LBP
2.如何评价ORB-SLAM3?
3.ORBSLAM系列|ORB-SLAM论文带读(一)(划重点)
4.深度科普:ORB-SLAM3论文重点导读及整体算法流程梳理
5.ORB特征提取与匹配
6.视觉SLAMORB-SLAM:让人Orz的特特征SLAM
(四十三)特征点检测-LBP
时间为友,记录点滴。征源
特征点检测领域并非只有一种算法,特特征大神们总能带来新颖的征源想法。虽然不可能掌握所有算法,特特征但有些思路是征源六音工具箱源码值得借鉴的。
比如SIFT就是特特征一个宝库,总能给我们带来启发。征源
既然已经了解了Harris、特特征SIFT、征源FAST等特征检测算法,特特征以及特征点的征源定义和评判标准,那么我们就来探讨LBP如何在特征检测领域脱颖而出。特特征
思考一下特征点的征源优良性质:
什么是LBP?
LBP(Local Binary Pattern,局部二值模式)是特特征一种描述图像局部纹理特征的算子,它具有旋转不变性和灰度不变性等显著优点。由T. Ojala、M. Pietikäinen和D. Harwood在年提出,用于纹理特征提取。它提取的是图像的局部纹理特征;
它是如何实现的?
首先谈谈原始LBP算子:
通过比较3*3邻域内的8个点,可以得到8位二进制数(通常转换为十进制数即LBP码,共种,即2 Byte),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。
虽然简单,但略显简陋(是不是与FAST算子有些类似)。这个LBP算子显然不能表示优良特征点,python celery 源码还好它出现的早(),所以后人对LBP做了很多优化,使其满足尺度不变、旋转不变、光照不变。
尺度不变:
无论是SIFT还是ORB,要做到尺度不变,我们通常采用金字塔扩展到多尺度空间,但LBP有它独特的方法。
在原始的LBP中,我们选择的是以目标点为中心,3x3的8邻域,经历过FAST的我们很容易想到半径的概念。那么3x3代表的就是以目标点为圆心,半径为1的邻域,如果我们把半径扩展一下会怎么样呢?
Ojala等人对LBP算子进行了改进,将3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的LBP算子允许在半径为R的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子;
这种情况下,对应黑点像素可能不是整数,要得到该点准确的像素值,必须对该点进行插值计算才能得到该点像素值,常见的插值方式为双线性插值或者立方插值。
这种思路有点像“山不转,水转;水不转,人转”;
旋转不变性:
Maenpaa等人又将LBP算子进行了扩展,钱林源码提出了具有旋转不变性的LBP算子,即不断旋转圆形邻域得到一系列初始定义的LBP值,取其最小值作为该邻域的LBP值。
举一个具体的例子:下图所示的8种LBP模式,经过旋转不变的处理,最终得到的具有旋转不变性的LBP值为。也就是说,图中的8种LBP模式对应的旋转不变的LBP模式都是。
光照不变:
从LBP的差值计算可以看出,LBP本身就具有光照不变的特性(灰度值按比例缩放,强者恒强),但是我们可以引入权重概念,计算LBP码和对比度。
好了,LBP就这么多。是不是感觉SIFT/ORB后什么都简单了些?
在网上搜了个Python实现的LBP,实验了下,贴在这里:
Python
惯例,OpenCV早就给我们提供了LBP的算子,而且可以结合FaceDetect来用,
C++
1、lbpcascade_frontalface_improved文件我使用的是我们自己编译出来的,在Binfile\install\etc\lbpcascades目录下(你可以用everything搜索一下,OpenCV源码中也有提供) 2、今天我们首次使用了CascadeClassifier,这个我觉得有必要在后面详细解释一下。用OpenCV做人脸检测简直简单得不要不要的水晶源码免费。
如何评价ORB-SLAM3?
我觉得 ORB-SLAM3 系统是基于之前的 ORB-SLAM2、ORB-SLAM-VI 进行扩展。作者组的工作一脉相承,围绕着 ORB feature-based SLAM 做了非常多有重大意义的工作。本文其中在一些重要改进模块,如 IMU 初始化、multi-map system 等,是作者组里前几年的工作。我认为这是一篇更加偏向于系统性质的文章,把这么多工作串了起来,并且作者非常慷慨的把它开源了出来,非常赞!ORBSLAM系列|ORB-SLAM论文带读(一)(划重点)
本文介绍了一种名为ORB-SLAM的新型单目SLAM系统,该系统在各种环境条件下都能实时运行。ORB-SLAM具有鲁棒性,支持宽基线回环和重定位,并且提供全自动初始化。系统的核心设计是基于相同的特征用于跟踪、建图、重定位和回环,这使得系统高效、简单且可靠。ORB特征因其对视角和光照变化的鲁棒性而被采用,允许在不依赖GPU的情况下实现实时性能。系统在大环境下的实时运行能力归功于共视图的使用,跟踪和建图着重于局部共视区域,与全局地图尺寸无关。蜂窝论坛源码实时回环检测通过基于位姿图(本质图)的优化实现,而实时重定位则支持从跟踪失败中恢复位姿,并增强地图重用性。系统还引入了一种新的基于模型选择的自动且鲁棒的初始化过程,允许创建平面和非平面场景的初始化地图。一种针对地图点和关键帧选择的适者生存策略提高了跟踪的鲁棒性,并且减少了冗余关键帧,增强了长时间运行的能力。
ORB-SLAM在广泛评估中证明了其优越性,特别是在室内和室外环境的主流公开数据集上的评估。与最先进的单目SLAM方法相比,ORB-SLAM实现了前所未有的性能。系统被设计为完整且可靠,提供了一种最高效、精确且易于实施的解决方案。出于造福SLAM社区的目的,源代码已公开,以便其他研究者和开发者能够利用和改进这一系统。演示视频和代码可以在项目网页上找到。
深度科普:ORB-SLAM3论文重点导读及整体算法流程梳理
本文将深入解读ORB-SLAM3的关键特点和整体算法流程,它革新了视觉和视觉惯性SLAM系统。首先,ORB-SLAM3作为首个实现短期、中期、长期数据关联的单目和双目系统,显著优于同类技术,尤其在实时性和准确性方面,其性能是其他方法的2-倍。通过几何和局部一致性检查,召回率提高,地图准确性增强。
使用Atlas结构表示断开地图,实现位置识别、相机重定位等操作时的无缝拼合。
抽象的相机表示允许灵活支持不同相机模型,只需提供投影、非投影和雅可比函数。
ORB-SLAM3系统由几个核心组件组成,包括活跃地图的跟踪线程、局部建图线程以及回环和地图合并线程。系统利用ORB-SLAM2和ORB-SLAM-VI作为基础,通过IMU初始化技术,支持单目和立体惯性SLAM。跟踪线程负责实时定位和建图,利用视觉和惯性信息进行优化。
局部建图线程在关键帧区域进行地图构建和优化,利用IMU参数进行最大后验估计。
回环和地图合并线程通过因子图处理地图的融合和回环检测,确保地图的精度和一致性。
在视觉-惯导SLAM中,系统不仅估计相机位姿,还涉及速度、惯性传感器偏置等。通过将视觉和惯性信息结合,形成一个最小化问题,通过因子图表示优化过程。 ORB-SLAM3的源码解析和实际应用将随后进行,对视觉惯性导航和多地图SLAM有兴趣的读者不容错过。ORB特征提取与匹配
本文主要回顾了ORB特征提取的过程,并解决了个人对这一主题的疑惑,但未深入探讨OpenCV源码,原因在于个人懒于解析。文章参考了高翔的《视觉SLAM十四讲》和相关opencv实现,欢迎读者指正错误。
好的特征点在于其显著性和匹配的准确性。角点特征,如E和F,因其特征明显,是理想的匹配对象。ORB算法采用OFAST快速提取这些特征点,下面将介绍OFAST和Oriented FAST的原理。
OFAST角点检测基于亮度变化,例如,如果圆周上的连续个点亮度超过或低于特定阈值,像素可能被识别为特征点。Oriented FAST在此基础上增加方向信息,以保持旋转不变性。
图像金字塔通过高斯模糊和降采样处理,解决了尺度不变性问题,确保不同尺度下的角点特征能准确匹配。接下来是BRIEF描述子,ORB算法使用的改进BRIEF描述特征,通过二进制编码存储角点邻域信息,以便判断匹配性。
特征方向与BRIEF描述子的结合,保证了旋转不变性。尽管旋转后BRIEF描述子会发生变化,但根据角点方向调整pattern,可以恢复旋转前的状态。
总的来说,ORB特征提取包括角点检测、方向信息添加、尺度不变性处理以及BRIEF描述子编码,这些步骤共同确保了特征点的稳定性和匹配效率。通过《视觉SLAM十四讲》的实例,我们可以理解并应用这些技术。
视觉SLAMORB-SLAM:让人Orz的SLAM
ORB-SLAM,在视觉SLAM领域享有盛誉,其源码在GitHub上已有4.4K+Star,充分彰显了西班牙小哥的出色贡献。近期深入研究其论文并结合源码,体验了一番酸爽,发现它在SLAM领域确实有着独特的魅力与贡献。
ORB-SLAM的核心框架由三个并发进程组成:跟踪、局部建图和回环检测,系统结构清晰,功能分明。跟踪是主进程,负责定位和跟踪相机运动,通过特征匹配实现定位与优化。局部建图则负责关键帧与地图点的插入、删除及局部优化。回环检测则通过搜索回环关键帧,实现位姿图优化,确保系统鲁棒性。
特征提取是ORB-SLAM的关键之一,它采用ORB特征,兼顾性能与效率。与SURF、SIFT等相比,ORB提取速度快,每张仅需.3ms,适用于实时操作。ORB在FAST角点基础上加入方向信息,使BRIEF描述子旋转不变,同时利用图像金字塔和灰度质心法提取特征,实现尺度不变性。此外,通过网格划分与四叉树结构,ORB-SLAM确保特征点分布均匀,即使特征点不足,也可通过调整FAST阈值增加。
单目初始化是ORB-SLAM的另一大亮点,它通过特征点匹配计算基础矩阵和单应矩阵,自动判断场景类型,无需人工设定模型。共视图与本质图结构则加强了关键帧间的联系,实现高效回环检测。相机重定位策略确保了系统在跟踪失败时能快速恢复,关键帧与地图点的删增策略则优化了系统性能。
ORB-SLAM提供多样化的Bundle Adjustment方式,包括初始化阶段的全BA、跟踪过程的运动BA及局部建图阶段的局部BA,适应不同场景需求。整个系统庞大复杂,通过总结主要特性,虽有其精髓,但仍需深入研究,以充分理解其工作原理与优化策略。
总之,ORB-SLAM在视觉SLAM领域展现出了其独特魅力与贡献,从其高效的特征提取到灵活的系统框架,再到多样化的优化策略,无不体现其在SLAM技术中的卓越地位。向所有SLAM领域的先驱者致以崇高的敬意。