首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么重新计算ORB描述符比从磁盘加载要快?

重新计算ORB描述符比从磁盘加载要快的原因是因为计算ORB描述符是在内存中进行的,而从磁盘加载则涉及到磁盘读取和数据传输的过程,相对较慢。具体原因如下:

  1. 内存访问速度快:计算ORB描述符是在内存中进行的,而内存的访问速度比磁盘快得多。内存中的数据可以直接通过内存地址进行访问,而磁盘上的数据需要通过磁头寻道、旋转等机械操作才能读取,速度较慢。
  2. 避免磁盘IO开销:从磁盘加载ORB描述符需要进行磁盘IO操作,包括磁盘读取和数据传输等,这些操作都会引入额外的开销。而重新计算ORB描述符则可以避免这些磁盘IO开销,直接在内存中进行计算,提高了计算速度。
  3. 数据局部性原理:计算ORB描述符通常会利用数据的局部性原理,即计算过程中会频繁地访问相邻的数据。而重新计算ORB描述符可以充分利用数据的局部性,将相关的数据存储在内存中,减少了数据的访问延迟,提高了计算速度。

总结起来,重新计算ORB描述符比从磁盘加载要快是因为内存访问速度快、避免了磁盘IO开销以及充分利用了数据的局部性原理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

修改一行代码,将图像匹配效果提升14%

它是一个称为单应性的3x3矩阵,当我们第一个图像中乘以一个点(在齐次坐标中)时,它返回第二个图像中这个点的坐标。...让我们使用暴力求解算法,它基本上比较了第一张图像中的每个描述符和第二张图像中的所有描述符。当我们处理二进制描述符时,使用汉明距离进行比较,即计算每对描述符之间不同的比特数。...如果图像2中的点和图像1投射到图像2的点距离小于2.5像素,我们认为匹配是有效的。...最能反映描述符可靠程度的指标是inlier的百分: ?...如果我们在描述符部分注释掉BEBLID并取消注释ORB描述符,结果下降到63.20%: # Comment or uncomment to use ORB or BEBLID # descriptor

52720

特征向量(Feature Vectors)

然后,BRIEF通过如下比较两个像素的亮度开始为关键点构造二进制描述符:如果第一像素第二像素亮,则它将数值1分配给描述符中的对应位,否则它分配的值为零。 ?...视频中ORB ORB常用的一种, 是跟踪和识别实时视频流中的对象。 然后,对于传入视频流中的每个帧,我们计算ORB描述符,并使用匹配函数进行比较。...FAST_SCORE生成的关键点稍差,但计算起来要快一些。 patchSize - int 面向BRIEF描述符使用的补丁的大小。 当然,在较小的金字塔层上,由特征覆盖的感知图像区域将更大。...然后,我们将使用.detectAndCompute(image)方法定位给定训练图像中的关键点并计算其对应的ORB描述符。...汉明度量通过计算二进制描述符之间的不同位的数目来确定距离。当使用WTAYK=2创建ORB描述符时,选择两个随机像素并在亮度上进行比较。最亮像素的索引以0或1返回。

1.5K20
  • ORB 特征

    ORB 首先会图像中查找特殊区域,称为关键点。关键点即图像中突出的小区域,比如角点,比如它们具有像素值急剧的浅色变为深色的特征。然后 ORB 会为每个关键点计算相应的特征向量。...如果第一个像素第二个亮,则为描述符中的相应位分配值 1,否则分配值 0。 在这个示例中第二个像素第一个亮,因此我们为特征向量的第一个位分配值 0。...给定这个训练图像,我想在这个查询图像中查找相似的特征,第一步是计算训练图像的 ORB 描述符并将其存储到内存中。 ORB 描述符将包含二元特征向量,用于描述这个训练图像中的关键点。...第二步是计算并保存查询图像的 ORB 描述符,获得训练和查询图像的描述符后,最后一步是使用相应的描述符对这两个图像进行关键点匹配,通常使用匹配函数来完成这一步。...对于 ORB 等使用的二元描述符来说,通常使用汉明指标,因为它执行起来非常快。 汉明指标通过计算二元描述符之间的不同位数量判断两个关键点之间的匹配质量。

    9310

    RAL2021|基于快速直接的立体视觉SLAM

    在假设相机向前运动的情况下,我们使用视觉里程计获得的 3D 点来模拟 LiDAR 扫描,并采用 LiDAR 描述符进行位置识别,以促进更有效地检测回环。...为了描述模拟的 LiDAR 扫描,我们更喜欢全局 LiDAR 描述符而不是局部描述符,主要有两个原因。首先,生成和匹配全局 LiDAR 描述符通常局部更快。...我们发现 DSV-SLAM 中的尺度优化 (SO) Stereo DSO 和 ORB-SLAM2 中的立体匹配 (SM)更快。ORB-SLAM2 中的立体匹配基于特征描述符,速度最慢。...对于闭环,在 LDSO 中生成 BoW 在 DSV-SLAM 中生成扫描上下文 (SC) 描述符要慢。...DSV-SLAM 生成的轨迹 ORB-SLAM2 稍微准确一些。我们还注意到,轨迹起点和终点之间的距离因闭环而大大减少(绿色轨迹到蓝色轨迹)。

    57430

    OpenCV4.5.1 | 使用一行代码将图像匹配性能提高14%

    有很多描述符,但如果我们想要一些准确的东西,即使在移动电话或低功耗设备上也能实时运行,OpenCV有两种重要的方法: ORB(Oriented FAST and Rotated BRIEF):一个经典的替代品...BEBLID(Boosted effective Binary Local Image Descriptor):2020年推出的一种新的描述符,在多个任务中被证明可以提高ORB。...让我们使用暴力算法,基本上比较第一个图像中的每个描述符与第二个图像中的所有描述符。当我们处理二进制描述符时,比较是用汉明距离来完成的,也就是说,计算每对描述符之间不同的位数。...如果图2中的点和图1投射到图2的点距离小于2.5像素,我们将认为它是有效的。...由于很难比较这种定性的结果,所以我们需要一些定量的评价指标,最能反映描述符可靠性的指标是inliers的百分: ?

    1.2K31

    全面综述:图像特征提取与匹配技术

    长对中,关键点方向向量G 计算如下: ? 首先,根据归一化的单位矢量计算两个采样点之间的梯度强度,归一化的单位矢量给出两个点之间的方向,乘以两个点在各自比例下的强度差。...然后在(2)中,关键点方向向量 g 所有梯度强度的总和中计算出。 基于 g ,我们可以使用采样模式的方向重新排列短距离配对,从而确保旋转不变性。...基于旋转不变的短距离配对,可以如下构建最终的二进制描述符: ? g 计算出关键点的方位后,我们使用它使短距离配对旋转不变。然后,所有对之间的强度 S 被比较并用于组装可用于匹配的二进制描述符。...一种常用的图像匹配方法是图像数据中检测出一组与图像描述符相关联的兴趣点。一旦两个或更多的图像中提取出特征和描述符,下一步就是在这些图像之间建立一些初步的特征匹配。 ?...ORB具有最小的尺度不变性。ORB(1000),BRISK(1000)和AKAZE其他旋转不变性更高。与其他相比,ORB和BRISK通常对仿射更改更加不变。

    5.8K32

    基于点线特征的激光雷达单目视觉里程计

    对公开的 KITTI数据集的评估表明,该方法最新的方法实现了更精确的姿态估计,有时甚至那些利用语义信息的方法更好。...本文提出了一种稳健而有效的激光雷达单目视觉里程计方法,它以纯几何的方式结合点和线的特征,场景环境中提取单个特征点系统更多的结构信息。...特征提取 可以使用各种点特征(SIFT、SURF、ORB等)作为跟踪特征。为了提高效率,这里采用了ORB特征作为点特征,如ORB-SLAM2中所述。...将三维直线地标L_w重新投影到图像平面上,产生与线段li(左)匹配的二维直线Li,其中p0和Q0是提取的深度先验值。重投影的直线Li和匹配线段li之间的误差由其两个端点到直线的距离定(右) F....对于循环检测,首先使用DBoW算法分别训练点特征(ORB描述符)和线特征(LBD描述符)的词袋。然后将每个关键帧转换为点向量和线向量。在评估关键帧之间的相似性时进行循环校正。

    61010

    ​基于点线特征的激光雷达+单目视觉里程计

    对公开的 KITTI数据集的评估表明,该方法最新的方法实现了更精确的姿态估计,有时甚至那些利用语义信息的方法更好。...本文提出了一种稳健而有效的激光雷达单目视觉里程计方法,它以纯几何的方式结合点和线的特征,场景环境中提取单个特征点系统更多的结构信息。...特征提取 可以使用各种点特征(SIFT、SURF、ORB等)作为跟踪特征。为了提高效率,这里采用了ORB特征作为点特征,如ORB-SLAM2中所述。...将三维直线地标L_w重新投影到图像平面上,产生与线段li(左)匹配的二维直线Li,其中p0和Q0是提取的深度先验值。重投影的直线Li和匹配线段li之间的误差由其两个端点到直线的距离定(右) F....对于循环检测,首先使用DBoW算法分别训练点特征(ORB描述符)和线特征(LBD描述符)的词袋。 然后将每个关键帧转换为点向量和线向量。在评估关键帧之间的相似性时进行循环校正。

    84420

    ​综述 | SLAM回环检测方法

    3.重新计算每个类的中心点。 4.如果每个中心点都变化很小,则算法收敛,退出,否则继续迭代寻找。 每个归好的类就是一个单词,每个单词由聚类后距离相近的描述子组成。...与以前的DBow库的主要区别是: DBoW2类是模板化的,因此它可以与任何类型的描述符一起使用。 DBoW2可直接使用ORB或BRIEF描述符。...DBoW3能够适用二进制和浮点描述符。无需为任何描述符重新实现任何类。 DBoW3在linux和windows中编译。 已经重写了一些代码以优化速度。DBoW3的界面已经简化。 使用二进制文件。...二进制文件加载/保存yml快4-5倍。而且,它们可以被压缩。...在加载词汇表时,fbowDBOW2快约80倍(参见tests目录并尝试)。在使用具有AVX指令的机器上将图像转换为词袋时,它的速度提高了约6.4倍。

    3K30

    SLAM | GCN系列:深度学习用于特征点提取并替换ORB,在TX2上达到实时

    GCNv2被设计用于生成类似于ORB的特征描述子和特征点的算法,其可以很容易的替代ORB特征在ORB-SLAMv2中。GCNv2可以显著的提升GCN的计算速度,并且不像GCN只能应用于桌面系统。...经过本算法改善的ORB-SLAMv2,可以实时运行在嵌入式设备Jetson TX2。实验结果表明,经过重新训练后的GCNv2网络精度和GCN基本相当, 并且提取的特征鲁棒性足以应用于无人机的控制。...设计的GCNv2具有与ORB功能相同的描述符格式,并且能够直接用作SLAM系统中的关键点提取器,例如ORB-SLAM2 或SVO2当中。...最后,完整地保留了ORB-SLAM2的闭环和位姿图优化,除了通过在V-A节中提供的训练数据集中计算bow以适应GCNv2特征描述符之外。...GCNORB更加稳定,轨迹波动小,而且在ORB丢失的地方GCN实现了很好的跟踪: ? 其次,GCN提取的kp中inliers占比比ORB多,而且分布更加均匀 ?

    2.8K31

    论文翻译 | ORB-SLAM3:一个用于视觉、视觉惯性和多地图SLAM系统

    2到5倍.第二个主要的创新是一个多地图系统,它依赖于一种新的位置识别方法和改进的召回.多亏了它,ORB-SLAM3能够在长时间的不良视觉信息下生存:当它丢失时,它会启动一个新的地图,当重新访问地图区域时...(ORB-SLAM3框架) 框架图中也可以看出,ORB-SLAM3最突出的两点是IMU融合、地图集(map atlas)以及地图融合(map merging). 5 相关工作 作者VSLAM、VI-SLAM...如果无重叠区域,则作为单目使用: 多视图进行三角化的. 7 视觉惯性融合SLAM ORB-SLAM-VI是第一个真正能够重复使用地图的、视觉惯性SLAM,但是仅限与单目且初始化较慢.ORB-SLAM3...所有几何验证步骤的基本操作是检查图像窗口内是否存在其描述符与映射点的ORB描述符匹配的ORB特征点,并使用它们之间的Hamming距离阈值。...我们的系统在中小型室内环境、房间和走廊序列中获得最低的误差,其中大多数误差小于10厘米.在这些轨迹中,系统不断地重新访问和重用以前映射的区域,这是ORB-SLAM3的主要优势之一.此外,跟踪点通常5米更近

    4.4K40

    Nginx概念和机制

    vZGVsLnBuZw.jpeg 2) 为什么使用Nginx 任何Unix应用程序的基本基础都是线程或进程。(Linux OS的角度来看,线程和进程几乎是相同的;主要区别在于它们共享内存的程度。)...cache loader 进程在启动时运行,以将基于磁盘的缓存加载 到内存中,然后退出。它的计划很保守,因此其资源需求较低。...cache manager 进程运行磁盘缓存定期和李子条目,让他们配置的大小范围之内。 worker 进程做所有的工作!它们处理网络连接,将内容读写到磁盘,并与上游服务器进行通信。...为什么阻塞-多进程结构要快? NGINX很好地扩展以支持每个worker进程数十万个连接。每个新连接都会创建另一个文件描述符,并在worker进程中消耗少量额外的内存。每个连接几乎没有额外的开销。...这种重新加载过程可能会导致CPU和内存使用量的小幅上升,但是与活动连接中加载资源相比,这通常是不明显的。您可以每秒多次重载配置(许多NGINX用户正是这样做的)。

    74321

    OpenCV特征提取与图像检索实现(附代码)

    ▌如何图像中获取特征? 图像中获取特征的方法有两种,第一种是通过提取图像描述符实现(白盒算法);第二种通过基于神经网络的方法实现(黑盒算法)。本文主要介绍第一种方法。...特征提取的算法有很多,最常用的有:SURF、ORB、SIFT、BRIEF等。这些算法大多是基于图像梯度的。...sorted(kps, key=lambda x: -x.response)[:vector_size] # computing descriptors vector #计算描述符向量...然后是根据关键点构建向量描述符,每个描述符的大小为64,我们有32个这样的描述符,所以我们的特征向量是2048维。...[nearest_ids].tolist() return nearest_img_paths, img_distances[nearest_ids].tolist() 这里要加载前一步得到的特征向量

    3.5K60

    基于成像激光雷达的鲁棒位置识别

    首先将具有强度信息的高分辨率点云投影到强度图像上,然后,强度图像中提取ORB特征描述子,提取的描述符子转换成一个单词包(BoW)向量,这形成了原始点云的紧凑表示,使用这些向量建立DBoW数据库,并查询以进行位置识别...图2:本文方法的演示:(a)高分辨率点云颜色变化表示强度变化;(b) 点云投影的强度图像;(c) 提取的ORB特征(绿点)和DBoW查询返回的一对候选对象;(d) 两个候选对象之间匹配的ORB描述子...;(e) PnP RANSAC异常值剔除后匹配的ORB描述符。...我们的方法结合了基于相机和激光雷达的位置识别方法的优点,与基于相机的方法类似,3D点云投影的强度图像中提取ORB特征描述符,使用DBoW来表示点云,使用词袋向量,并运行位置识别查询,这类似于基于激光雷达的全局描述子方法...当查询中接收到候选对象时,进行ORB描述子匹配以验证其合法性,再使用PnP RANSAC剔除匹配描述符中的异常值,在不同尺度的室内和室外环境中收集的数据集上对所提出的方法进行了评估,结果表明,与其他基于激光雷达的位置识别方法相比

    40010

    用Python实现OpenCV特征提取与图像检索 | Demo

    如何图像中获取特征? 图像中获取特征的方法有两种,第一种是通过提取图像描述符实现(白盒算法);第二种通过基于神经网络的方法实现(黑盒算法)。本文主要介绍第一种方法。...特征提取的算法有很多,最常用的有:SURF、ORB、SIFT、BRIEF等。这些算法大多是基于图像梯度的。...sorted(kps, key=lambda x: -x.response)[:vector_size] # computing descriptors vector #计算描述符向量...然后是根据关键点构建向量描述符,每个描述符的大小为64,我们有32个这样的描述符,所以我们的特征向量是2048维。...[nearest_ids].tolist() return nearest_img_paths, img_distances[nearest_ids].tolist() 这里要加载前一步得到的特征向量

    3.9K30

    SLAM机器人开发(二)SLAM技术现状

    20 世纪 90 年 代 EKF-SLAM 的提出开始,陆续出现了 UKF-SLAM、PF-SLAM、FAST-SLAM、GMapping、 Optimal-RBPF等激光 SLAM 算法。...视觉SLAM 常见的视觉SLAM 视觉 SLAM 的提出时间激光 SLAM 晚,视觉 SLAM 可通过相机建立视觉里程计,所以不需要外部里程计和 IMU 的纯视觉 SLAM 也可以获得很好的效果。...三个版本 ORB-SLAM 算法在前端里程计的计算中都依赖于 ORB 特征的提取。不过,ORB-SLAM 最终建立的是稀疏点云图。...近几年,基于融合 CNN 算法的深度特征 HF-Net 提取的 DXSLAM 采用深度学习不仅可以给出关键点描述符, 而且给出整个图像的全局描述符。...但是双目相机需 要耗费极大的计算模块资源来计算视差,如果想实时输出获取图像的距离信息,需要使用 GPU 和 FPGA 设备加速。

    61940

    利用显著地面特征进行配送机器人定位的鲁棒方法

    \psi公式1是在将像素坐标图像平面投影到3D空间之前的滚转补偿过程, 是滚转变化的大小。...因此我们将SelfReformer重新设计为SelfReformer,使其能够捕获SGF的特点。...3.4 Loop Closing with SGF Factor当机器人重新访问具有相同SGF的区域时,可以通过SGF关联执行闭环。...一旦选择了SGF并确定了SGF组,就可以通过与组内最近的描述符进行迭代最近点(ICP)匹配来执行闭环。在逆向闭环情况下,我们可以使用计算最近描述符时获得的最佳列键为ICP提供初始值。...对于所有序列,我们可以看到与传统的基于视觉方法ORB-SLAM3相,所提出的方法都取得了良好的性能。对于Seq.

    13800

    Redis入坟(三)Redis为什么这么快?

    虚拟存储器(虚拟内存 Vitual Memory) 名词解释:主存:内存;辅存:磁盘(硬盘) 计算机主存(内存)可看作一个由 M 个连续的字节大小的单元组成的数组,每个字节有一个唯一的地址,这个地址叫做物理地址...us 代表 CPU 消耗在 User space 的时间百分; sy 代表 CPU 消耗在 Kernel space 的时间百分。...在每个任务运行前,CPU 都需要知道任务哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器(Program Counter),这个叫做CPU 的上下文。...而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。...如果数据不存在,则先将数据磁盘加载数据到内核缓冲区中,再从内核缓冲区拷贝到用户进程的页内存中。(两次拷贝,两次 user 和 kernel 的上下文切换)。 ? I/O 的阻塞到底阻塞在哪里?

    60030

    利用显著地面特征进行配送机器人定位的鲁棒方法

    因此我们将SelfReformer重新设计为SelfReformer,使其能够捕获SGF的特点。...然后,通过在线聚类将SGF描述符分组为各种特征。当确定查询SGF描述符 时,它被分配给通过余弦距离从前一个SGF组的描述符 获得的最接近的组,如下所示: 其中 和 分别是 和 的第j列, 是列数。...3.4 Loop Closing with SGF Factor 当机器人重新访问具有相同SGF的区域时,可以通过SGF关联执行闭环。...一旦选择了SGF并确定了SGF组,就可以通过与组内最近的描述符进行迭代最近点(ICP)匹配来执行闭环。在逆向闭环情况下,我们可以使用计算最近描述符时获得的最佳列键为ICP提供初始值。...对于所有序列,我们可以看到与传统的基于视觉方法ORB-SLAM3相,所提出的方法都取得了良好的性能。对于Seq.

    13700
    领券