logo好方法网

一种实时性好的ORB特征点提取的硬件实现方法


技术摘要:
本发明公开了一种实时性好的ORB特征点提取的硬件实现方法,主要解决现有视觉SLAM系统中特征点提取消耗时间长、图像匹配效率低的问题。其实现方案是:1.构建图像特征点筛选四级流水线;2.构建特征点主方向角计算11级流水线架构;3.使用图像块灰度质心获得特征点梯度方向  全部
背景技术:
SLAM(simultaneous  localization  and  mapping)技术,即实时定位与地图重建。 其原意是指搭载传感器的机器人,在未获得任何环境信息的前提下,通过机器人在未知环 境中的运动来构建环境地图,与此同时实现自身位姿的实时定位,最终实现机器人的实时 的自主定位与环境的地图重建。在各个行业,移动机器人对未知环境的探索一直是机器人 智能化研究的热点和难点,SLAM则是其中一个重要的基本问题,是实现移动机器人自主定 位、自主导航、路径规划以及目标识别、目标跟踪等任务的基础和前提。 在SLAM技术中,视觉里程计模块中的特征点匹配部分是其最重要的模块,它对环 境建图和相机位姿估计都起着关键性的影响和作用,因此,对图像匹配技术的研究是SLAM 技术中的一个极为关键的部分。图像匹配技术主要针对机器对事物进行识别的过程中,对 拥有同一景物目标的两幅或两幅以上图像在空间上进行校准,或根据现有已知图像信息在 另一幅图像上寻找对应的相同图像信息,从而达到对目标体识别和自身定位的目的。在往 常的特征点匹配方案中常常采用SIFT特征点提取,但是这种特征点提取方法较为复杂,时 间及资源消耗都很大。现在ORB算法被广泛应用于机器人技术,它也被证明是可以替代SIFT 特征点提取的快速方案。现已有研究提出采用GPU进行图像的加速处理进而提高图像匹配 的系统整体速度。相对比于FPGA,虽然GPU的处理速度较快,但是GPU在使用时需要巨大的计 算资源和很高的系统功耗,不适用于嵌入式或者小型的智能机器人。而FPGA具有并行处理 架构,数十万个逻辑单元,能满足各种组合逻辑和时序逻辑。这种特性正好适用于高并行 度,低复杂程度,低的内存资源消耗以及低功耗的系统中,在处理实时高速视觉图像时具有 明显优势。
技术实现要素:
本发明的目的在于提供一种实时性好的ORB特征点提取的硬件实现方法,以克服 现有技术的缺陷,本发明针对越来越多的视觉SLAM系统对实时性、资源及功耗要求高的需 求,根据ORB算法要求,设计高斯采样、流水线架构和数据缓存传输结构,实现图像的快速高 效匹配和实现平台的微小便携,可用于提升视觉SLAM系统中特征提取的效率、准确度和系 统的便携性。 为达到上述目的,本发明采用如下技术方案: 一种实时性好的ORB特征点提取的硬件实现方法,包括以下步骤: 步骤1、根据像素点离散化Bresenham图上采样点所在位置具有对称性的特点,设 计四级流水线的结构实现对特征点筛选; 4 CN 111583093 A 说 明 书 2/7 页 步骤2、根据步骤1中筛选出的特征点坐标,依据灰度质心算法和矩阵存储结构中 像素点坐标的关系,设计特征点主方向计算的11级流水线结构; 步骤3、利用只读寄存器和m序列发生器获得特征点图像块采样坐标,并根据步骤2 中获得的特征点主方向进行坐标旋转,设计图像块的高斯采样模块,用于图像描述子计算。 进一步地,步骤1中实现对特征点筛选的四级流水线结构通过以下方法构建: 步骤1.1、根据中心像素点离散化Bresenham图上采样点所在位置具有对称性的特 点,将像素点按照垂直方向、水平方向划分成四部分; 步骤1.2、在步骤1.1中获得的每部分各选取一个像素点,且像素点的位置成对称 关系,所选取像素点作为一组数据,重复进行四次像素点选取,每部分每次选取的像素点均 不相同,将以中心像素点为圆心,半径为3的圆周上的16个像素点数据分为四组; 步骤1.3、将步骤1.2所分四组中像素点的灰度值分别与设定阈值进行大小比较, 每级流水线完成一组数据比较; 步骤1.4、设计每级流水线完成时的信号输出,将完成信号作为下一级流水线的使 能信号,将各级流水线连接构成特征点筛选的四级流水线结构。 进一步地,步骤2特征点主方向计算的11级流水线结构通过以下方法构建: 步骤2.1、构造31x31存储矩阵结构,获得31x31的图像块,根据步骤1中获得的特征 点坐标判断31x31存储矩阵中心位置像素点是否为特征点,若是特征点进行步骤2.2,否则 结束; 步骤2.2、根据31x31存储矩阵中的像素点同行元素具有相同y坐标的特点,求 31x31矩阵中每列像素点灰度值的总和,设计出求和的流水线架构; 步骤2.3、根据31x31存储矩阵结构中关于y轴对称列的每列像素点位置x坐标绝对 值相等的特点,根据步骤2.2所求得各列像素点灰度值的总和,将对称列像素点灰度值之和 按照位于x轴正半轴的各列减去与位于负半轴的各列的方式做运算,所得结果与x坐标绝对 值相乘; 步骤2.4、将步骤2.3获得的所有乘积进行求和运算,设计流水线结构计算出31x31 图像块的(1 0)阶矩; 步骤2.5、根据31x31存储矩阵中的像素点同行元素具有相同y坐标的特点,求出图 像块中每行像素点灰度值的总和,设计求和流水线结构; 步骤2.6、根据31x31存储矩阵中像素点坐标关于x轴对称行y坐标绝对值相等的特 点,根据步骤2.5所求得各行像素点灰度值的总和,将对称行像素点灰度值之和按照位于y 轴正半轴的各行减去与位于负半轴的各行的方式做运算,所得结果与y坐标绝对值相乘; 步骤2.7、将步骤2.6获得的所有乘积进行求和运算,设计流水线结构计算出31x31 图像块的(0 1)阶矩; 步骤2.8、对步骤2.4中(1 0)阶矩计算流水线中的每列像素点灰度值求和电路进 行复用,将所有列灰度值之和再进行求和运算,设计流水线架构计算图像块的(0 0)阶矩; 步骤2.9、根据步骤2.4、步骤2.7和步骤2.8计算出的图像块的(1 0)阶矩、(0 1)阶 矩和(0 0)阶矩,利用cordic算法求出特征点主方向的角度值,设计出特征点主方向计算的 11级流水线架构。 进一步地,步骤3中高斯采样模块通过以下方法构建: 5 CN 111583093 A 说 明 书 3/7 页 步骤3.1、通过MATLAB构造符合高斯分布[0,312/25]的随机数组,并且将获得的数 据存储在ROM中,一共构建两组高斯随机数,分别存放在两个只读寄存器中; 步骤3.2、设计两个m序列发生器,分别用于产生读取两个ROM中数据的地址值; 步骤3.3、构建采样窗口,并使用滤波器对窗口中像素点进行滤波,以两个ROM中读 取获得的数据作为采样点的x坐标和y坐标,对采样窗口中的像素点进行采样; 步骤3.4、根据设计结构是以数据流的形式进行数据传输的特点,设计线性缓存的 第一级和第二级分别用来存储滤波器处理过的图像数据和高斯采样模块所需的图像像素 值; 步骤3.5、设计信号控制步骤3.4中两级存储之间数据的流动,如果检测到中心位 置像素不是特征点,则两级线性移位缓冲结构中的数据正常移动,并且关闭高斯模块;如果 检测到中心位置像素点为特征点,则停止两级结构中的数据移动,并且开启高斯采样模块, 等待采样完成后,停止高斯采样模块的工作,重新开启两级存储结构间的数据移动,完成高 斯采样模块设计; 步骤3.6、根据BRIEF描述子算法要求,利用高斯采样模块对采样窗口中像素点灰 度值进行比对,获得特征点的描述子。 与现有技术相比,本发明具有以下有益的技术效果: 本发明的方法将特征点筛选及特征点方向计算部分进行流水线结构设计,并且设 计了模块间的数据流传输方式,增加了数据吞吐量,提高了数据处理速度,提高了整个系统 的实时处理能力;本发明中设计了高斯采样的硬件实现方法,摒弃了BRIEF算法中效果不佳 的均值采样方法,提高了图像匹配的准确度。与常用ARM处理器进行处理相比,本方法搭建 的系统延时降为其70%。 附图说明 图1是特征点筛选架构图; 图2是矩阵缓存结构图; 图3是特征点筛选流水线结构图; 图4是特征点筛选前两级关键电路结构图; 图5是1阶矩的计算流水线架构图; 图6是0阶矩的计算流水线架构图; 图7是基于高斯采样的描述子计算架构图; 图8是m序列随机数发生器; 图9是两级同步移位线性缓冲的结构图。
分享到:
收藏