定向FAST和旋转BRIEF(ORB)特征检测加速了视觉SLAM

来源:CEVA #Ceva# #视觉#
5531

在智能边缘设备领域,信号处理和人工智能(AI)推断相互交织。传感需要强大的计算能力,以筛选出最重要的数据用于推理。同步定位和绘图(SLAM)算法,属于导航类型,需要在传感阶段进行复杂的图像处理,以检测特征。这些算法必须实时执行,并且需要快速完成特征检测。定向FAST和旋转BRIEF,即ORB算法,于2011年推出,是其中一种较快的特征检测算法。尽管如此,成本和功耗限制意味着底层硬件必须高效运作,软件必须同样经过优化,并且为了提高开发者的工作效率,必须易于使用。

SLAM(同步定位和绘图)在绘制环境地图的同时,还能评估移动代理的位置。自动驾驶汽车使用这种技术,其他设备,比如自主移动机器人(AMR)也可以使用,AMR是一种在仓库中移动物料的车辆。AMR是自动引导车辆(AGV)的后继技术,后者是一种较早的技术,沿着固定路径移动,例如由涂抹的条纹指定路径。与自动驾驶车辆类似,AMR也可以使用摄像头和其他传感器,为SLAM系统提供数据。

图 1.SLAM管线

前端的图像处理通过分析摄像头捕获的帧来识别特征点或兴趣点。算法或神经网络人脸或物体检测技术试图找到属于一组确定项目的事物,而视觉SLAM则不同,它没有这样一组预定义的项目。此外,SLAM会逐帧跟踪对象。这个过程很复杂,因为代理(可能也包括对象)是移动的,而且对象的外观在每一帧中都会发生变化,变得模糊、光照改变,或者出现缩放、平移或旋转。与此同时,前端处理必须跟上帧率。

特征检测是视觉SLAM的关键

视觉SLAM前端的三步核心挑战是在两帧之间找到对应关系。第一步是特征检测。特征也称为关键点或兴趣点,是图像中的一部分,其独特性足以从众多备选图像中识别出特定对象。特征检测的方法包括使用高斯差分识别最大值/最小值图像位置、使用角点检测器以及应用区域检测器。

要做到有效,特征检测必须在不同的图片中找到相同的兴趣点。类似的,第二步是生成表示相关特征的特征向量,这个过程必须产生一个独特的描述符,这个描述符在帧与帧之间的外观变化中要保持稳健性。第三步是匹配图像之间的描述符,具体方法是从第二幅图像中选择与第一幅图像中每个特征向量的数学差异最小的特征向量。

开创性的尺度不变特征变换(SIFT)方法实质上是将特征检测和描述符向量创建合并为单一的SIFT关键推导步骤。为了创建这些关键点,SIFT采用高斯差分,对一个图像进行多次卷积,这涉及到每个像素的浮点乘法和加法操作。进一步的操作包括计算梯度和旋转,以增强对光照和方向变化的稳健性。为了实现尺度不变性,SIFT复制并多次调整图像大小,构建金字塔结构,在每个金字塔级别上重复图像处理操作。

对于匹配步骤,SIFT比较每个关键点与第二幅图像中数百个相邻点,对位置、方向和比例预测相似的关键帧进行聚类比较。SIFT随后处理每个包含至少三个条目的聚类,使用线性代数(更多浮点运算)来验证聚类中的关键点确实匹配,即使第二幅图像中的物体出现明显的旋转、缩放或拉伸。

加速稳健特诊(SURF)方法旨在优化SIFT方法的速度,同时保持足够的稳健性和可重复性。在特征检测方面,它用一种更简单的盒式滤波器取代了高斯差分技术。而且,这种方法无需构建图像金字塔,只需通过应用不同尺寸的滤波器,不需要复制和调整图像大小,从而降低了计算复杂度。为了生成一个特征向量,SURF将图像分成以每个兴趣点为中心的区域,并为每个区域计算四个差值之和,然后将具有相似差值之和的区域聚类。在匹配步骤中,SURF通过检查从初始兴趣点开始沿半径的像素来解决旋转问题,从而进一步降低了复杂性。

ORB(定向FAST和旋转BRIEF)改进了特征检测

总体而言,SURF的计算需求比SIFT低。还有一种更高效的方法,那就是定向FAST和旋转BRIEF(ORB)。其开发者报告称,ORB比SURF快14倍,而SURF比SIFT快24倍;新算法的性能也差不多,在某些情况下甚至更好。对于特征检测,ORB采用了角点检测算法,即FAST(加速分段测试的特征)。

FAST算法简单快捷,它将一个像素与其周围的布雷森纳姆圆圈上的像素进行比较,首先对比该像素与圆圈上的N个连续像素相比,亮度是否有明显差异。若存在明显的亮度差异,则这是一个角点。为了优化关键点的选择,该算法使用非极值抑制(NMS)来识别和保留最独特的关键点。执行亮度比较所需的操作远少于计算高斯差分和应用盒式滤波器的总和。NMS的第二步只需处理特征清单,而不是图像中的所有像素,这也减少了计算量。为实现尺度不变性,ORB构建了一个图像金字塔,并对每一层应用FAST。在考虑特征点的方向时,ORB算法将像素的上下左右强度值相加,并进行比较。

ORB算法使用旋转BRIEF来计算特征描述符。在ORB中,BRIEF描述符是256位的向量。每一位表示在同一个31×31像素区域内,两个5×5像素窗口的平均强度之间的比较结果。在一个像素区域内有676个这样的窗口,因此可能的成对比较超过20万次。为了最大限度地提高描述符的区分能力,ORB从这20万个对比结果中选出离平均值最远、相互关联度最小的256个对比结果。与FAST类似,ORB算法修改了原始的BRIEF方法以实现方向不变性。为了简化这个任务,一旦确定了每个描述符所属特征的方向,ORB使用这些值来规范化描述符的方向。

在匹配阶段,ORB采用基于描述符位子集的简单哈希函数。算法将图像中的每个描述符分配到多个哈希桶中。为了匹配新帧中的描述符,ORB计算它将映射到哪些桶,并将其与每个桶中包含的描述符进行比较。

在Ceva平台运行的ORB特征检测

虽然听起来很复杂,但ORB速度快,因为它使用整数和逻辑运算代替浮点运算。许多操作可以进行向量化,例如比较5×5像素窗口和256位描述符。如果开发人员希望在PC或类似系统上运行的软件中加入ORB算法,会发现OpenCV中已经包含了该算法,Python中也有该算法。

像自动移动机器人(AMR)或其他车辆这样的生产系统,通常会使用定制芯片来取代PC,以降低功耗和成本。用C语言编译实现的ORB可以在芯片的CPU内核上运行,但并不实用,因为这要么需要与PC类似的强大硬件能力,要么无法满足实时要求。另一种方法是采用矢量DSP。矢量DSP专门设计用于移动数据和运行计算密集型算法(如ORB),效率更高。要实现这种优势,需要调整软件,同时注意保持算法的正确性。

幸运的是,Ceva的Vision AI DSP和SLAM SDK包含了一个针对其矢量DSP的ORB库。它提供一个与OpenCV实现类似的API,使用起来非常简单。而且,速度快。我们用Ceva Vec-C语言构建了该库,采用标准C代码和内置函数来提升性能和可维护性。在集成了Ceva SensPro DSP的SoC(系统片上集成电路)上运行时,基于ORB的SLAM实现比仅仅使用该芯片中集成的CPU运行快30倍。

在2024年的消费电子展(CES)上,我们展示了一款Van Gogh Imaging公司采用我们的ORB库并在SensPro上运行的视觉SLAM解决方案。如欲了解更多有关如何在您的计算机视觉项目中使用我们的ORB库、Ceva SLAM SDK或SensPro系列DSP的信息,请联系我们


责编: 爱集微
来源:CEVA #Ceva# #视觉#
THE END
爱集微

微信:

邮箱:laoyaoba@gmail.com


9.3w文章总数
12012.5w总浏览量
最新资讯
关闭
加载

PDF 加载中...