CN111583093B - 一种实时性好的orb特征点提取的硬件实现方法 - Google Patents

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

Info

Publication number
CN111583093B
CN111583093B CN202010345182.1A CN202010345182A CN111583093B CN 111583093 B CN111583093 B CN 111583093B CN 202010345182 A CN202010345182 A CN 202010345182A CN 111583093 B CN111583093 B CN 111583093B
Authority
CN
China
Prior art keywords
pixel
stage
point
points
sampling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010345182.1A
Other languages
English (en)
Other versions
CN111583093A (zh
Inventor
张瑞智
李倩
梅魁志
张增
同城辉
屈鹏飞
张向楠
常蕃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN202010345182.1A priority Critical patent/CN111583093B/zh
Publication of CN111583093A publication Critical patent/CN111583093A/zh
Application granted granted Critical
Publication of CN111583093B publication Critical patent/CN111583093B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/66Analysis of geometric attributes of image moments or centre of gravity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种实时性好的ORB特征点提取的硬件实现方法,主要解决现有视觉SLAM系统中特征点提取消耗时间长、图像匹配效率低的问题。其实现方案是:1.构建图像特征点筛选四级流水线;2.构建特征点主方向角计算11级流水线架构;3.使用图像块灰度质心获得特征点梯度方向,并根据主方向旋转描述子采样坐标进行高斯采样;4.设计两级同步线性移位缓冲结构和模块间数据流传输结构;本发明具有图像处理速度快、准确度高、实现平台便携性强等优点,可用于实时视觉SLAM系统中扩大其应用场景。

Description

一种实时性好的ORB特征点提取的硬件实现方法
技术领域
本发明属于计算机视觉领域的图像匹配,涉及FAST特征点的提取、BRIEF描述子计算和图像匹配等基本模块硬件实现和数据处理流水线结构设计、数据流缓冲结构设计,具体涉及一种实时性好的ORB特征点提取的硬件实现方法。
背景技术
SLAM(simultaneous localization and mapping)技术,即实时定位与地图重建。其原意是指搭载传感器的机器人,在未获得任何环境信息的前提下,通过机器人在未知环境中的运动来构建环境地图,与此同时实现自身位姿的实时定位,最终实现机器人的实时的自主定位与环境的地图重建。在各个行业,移动机器人对未知环境的探索一直是机器人智能化研究的热点和难点,SLAM则是其中一个重要的基本问题,是实现移动机器人自主定位、自主导航、路径规划以及目标识别、目标跟踪等任务的基础和前提。
在SLAM技术中,视觉里程计模块中的特征点匹配部分是其最重要的模块,它对环境建图和相机位姿估计都起着关键性的影响和作用,因此,对图像匹配技术的研究是SLAM技术中的一个极为关键的部分。图像匹配技术主要针对机器对事物进行识别的过程中,对拥有同一景物目标的两幅或两幅以上图像在空间上进行校准,或根据现有已知图像信息在另一幅图像上寻找对应的相同图像信息,从而达到对目标体识别和自身定位的目的。在往常的特征点匹配方案中常常采用SIFT特征点提取,但是这种特征点提取方法较为复杂,时间及资源消耗都很大。现在ORB算法被广泛应用于机器人技术,它也被证明是可以替代SIFT特征点提取的快速方案。现已有研究提出采用GPU进行图像的加速处理进而提高图像匹配的系统整体速度。相对比于FPGA,虽然GPU的处理速度较快,但是GPU在使用时需要巨大的计算资源和很高的系统功耗,不适用于嵌入式或者小型的智能机器人。而FPGA具有并行处理架构,数十万个逻辑单元,能满足各种组合逻辑和时序逻辑。这种特性正好适用于高并行度,低复杂程度,低的内存资源消耗以及低功耗的系统中,在处理实时高速视觉图像时具有明显优势。
发明内容
本发明的目的在于提供一种实时性好的ORB特征点提取的硬件实现方法,以克服现有技术的缺陷,本发明针对越来越多的视觉SLAM系统对实时性、资源及功耗要求高的需求,根据ORB算法要求,设计高斯采样、流水线架构和数据缓存传输结构,实现图像的快速高效匹配和实现平台的微小便携,可用于提升视觉SLAM系统中特征提取的效率、准确度和系统的便携性。
为达到上述目的,本发明采用如下技术方案:
一种实时性好的ORB特征点提取的硬件实现方法,包括以下步骤:
步骤1、根据像素点离散化Bresenham图上采样点所在位置具有对称性的特点,设计四级流水线的结构实现对特征点筛选;
步骤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中高斯采样模块通过以下方法构建:
步骤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是两级同步移位线性缓冲的结构图。
具体实施方式
下面结合附图对本发明的实施过程作进一步详细描述:
本发明设计了四级流水线的结构实现对特征点筛选。根据中心像素点离散化Bresenham图上采样点所在位置具有对称性的特点,将像素点按照垂直方向、水平方向划分成四部分,每次在每组数据中选取一个像素点,且像素点的位置成对称关系。将采样点分为四组后,分别进行与中心像素点的灰度值比较。四级流水线中每级对一组数据进行比较,且每级流水线设计两个判断机制进行特征点的筛选。
本发明对特征点主方向计算进行了流水线架构设计。对于(0+0)阶矩、(1+0)阶矩和(0+1)阶矩计算模块分别设计11级流水线结构,根据31x31存储矩阵中的像素点同行元素具有相同y坐标,同列元素具有相同x坐标以及关于x轴对称行坐标绝对值相等,关于y轴对称列坐标绝对值相等的特点,将矩阵中元素进行合并处理,减少电路中乘法器的使用。并且在(0+0)阶矩计算时,对(1+0)阶矩和(0+1)阶矩计算时所求每列元素总和的cell进行复用,减少了电路资源消耗。
本发明中利用只读寄存器和m序列发生器设计了对于特征点周围像素邻域矩的高斯采样模块。对于硬件来说,实现完全随机的高斯采样是不可能的,为了尽可能实现所采像素点的随机性,本发明中通过MATLAB构造符合高斯分布的随机数组,并且将获得的数据存储在ROM中,一共选取两个只读寄存器,分别存储用于产生x坐标和y坐标的随机数组。为了实现读取数据的随机性,通过伪随机数产生模块来产生ROM的读取地址,从两个ROM中分别读取出选取的用于描述符生成的像素点的x坐标及y坐标。为了防止ROM读取地址重复出现,根据通讯编码相关原理,设计m序列随机数发生器,完成只读寄存器中采样点的坐标读取。根据读取出的特征点在图像中的位置坐标以及存储的特征点主方向的角度值计算出旋转后的采样点的坐标,读取对应位置的像素点灰度值,进行灰度值比较获得特征点的描述子。
本发明根据模块间数据传输方式发明了一种两级同步移位线性缓冲的结构,通过高斯采样模块返回的信息来控制像素数据是否向下一级输送。整个结构是以数据流的形式进行运算的,线性缓存的第一级和第二级分别用来存储高斯滤波器处理过的图像数据和高斯采样模块所需的图像像素值,每一级的行缓存器都是由RAM构建的,控制逻辑主要保证使两级结构中的数据移动能够同步,且不丢失数据。如果检测到中心位置像素不是特征点,则两级线性移位缓冲结构中的数据正常移动并停止高斯采样模块;如果检测到中心位置像素点为特征点,则控制模块停止两级结构中的数据移动,并且开启高斯采样模块,直至采样完成后,重新开始两级结构中的数据移动。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
1、特征点筛选流水线设计方案
根据FAST-12算法的要求,对于图像中的每一个像素点都需要遍历其邻域圆上的16个像素点。那么对于M*N分辨率的图像,需要进行M*N*16次比较才能得出一副图片的角点。为了减少计算复杂度,提高运算速度,采用流水线结构进行分步特征点判断。当然,采用流水线设计将会产生更大的面积,需要更大的存储空间。在面积和功耗因素的综合考虑下,根据采样点所在圆具有对称性的特点,将采样点分为四部分进行与中心像素点的灰度比较,因此采用四级流水线的结构设计该模块。
根据图2图像数据矩阵缓存结构设计,在面积功耗因素的综合考虑下,根据采样点所在圆具有对称性的特点,将采样点分为四部分进行与中心像素点的灰度比较。在每个图像块中相邻像素点的灰度值变化相对较平缓,将相邻像素点分为一组意义不大,因此将像素点按照垂直方向、水平方向划分成四部分之后,每次在每组数据中选取一个像素点,且像素点的位置成对称关系。在第一级流水线分别判断A14位置,A74位置,A41位置,和A47位置上的像素灰度值与1.1Ip和0.9Ip的大小关系;第二级流水分别判断A22位置,A26位置,A66位置,和A62位置上的像素灰度值与1.1Ip和0.9Ip的大小关系;第三级流水分别判断A15位置,A73位置,A57位置,和A31位置上的像素灰度值与1.1Ip和0.9Ip的大小关系;第四级流水分别判断A13位置,A75位置,A51位置,和A37位置上的像素灰度值与1.1Ip和0.9Ip的大小关系。特征点筛选的四级流水线设计要求有对应的像素点灰度值矩阵存储,因此设计了四级的存储结构,具体结构参考图1。
参考图3特征点筛选流水线结构图,在四级流水线结构中的每一级比较完成时,都会设置输出给下一级流水线的使能信号harris_pos_en和harris_neg_en,分别表示是否使能下一级采样点灰度值与1.1Ip和0.9Ip的大小比较。因为如若某级流水线中4个采样点灰度值都比1.1Ip大,则不可能存在12个像素点灰度值比0.9Ip小,所以将harris_neg_en赋值为0,同时关断之后各级采样点灰度值与0.9Ip的比较。同理,当该级4个采样点灰度值都比0.9Ip小,则不可能存在12个像素点灰度值比1.1Ip大,所以将harris_pos_en赋值为0,同时关断之后各级采样点灰度值与1.1Ip的比较。通过关断对应电路来减少系统电路的功耗。当然,每一个采样点灰度值与中心像素点灰度值的比较会产生对应的pos_flag和neg_flag标志位,两个标志位的初始值均为0,采样点灰度值比1.1Ip大则pos_flag赋值为1,采样点灰度值都比0.9Ip小则neg_flag赋值为1。并且在每一级判断完成后,会对采样点灰度值比1.1Ip大和比0.9Ip小的个数进行计数,每次计数结束后将pos_flag和neg_flag标志位复位。通过这种计数方式来获得每级流水线中采样点与0.9Ip和1.1Ip比较的结果,具体电路设计参考图4。
在第四级流水线计算完成之后,对满足像素点灰度值比1.1Ip大和比1.1Ip小的个数分别求和,如果其中任意一个计数结果大于12,则7x7矩阵中心位置像素点为特征点,否则为非特征点。与此同时,在第四级流水线处,还需要设计判断是否遍历该图像的所有像素点,如果遍历了所有特征点,则读取下一幅图像像素点,如果未遍历图像所有像素点,则继续读取该图像像素点灰度信息,进行特征点检测。
2、特征点主方向角计算流水线架构设计
在特征点主方向的计算过程中,涉及大量的多操作数求和及乘加运算。如果在多操作数求总和的时候采用多个数据直接相加的方法电路关键路径过长,整体电路时序出现问题。本发明中多操作数求和硬件电路结构实现时采用分级流水线设计的方法减少关键路径长度。
对于(1+0)阶矩的计算,观察图像块存储结构和FAST-12算法要求,在计算x坐标与灰度值乘积的总和时,由于y坐标轴上的元素的一个乘数为0,因此y轴上像素点可以忽略不进行相应的计算。观察剩余位置图像像素点及其坐标,发现每一列的x坐标为同一个值,即进行乘法运算时的一个乘数相同,并且关于y轴对称的两列图像像素点的x坐标的绝对值相同,例如第1列和第31列,第2列和第30列。根据x坐标相同的特点可以先将图像像素点的灰度值求和后再与x坐标值相乘。至于图像像素点的x坐标绝对值关于y坐标轴对称的特性,本发明中先将对应位置的灰度值进行减法运算,将获得的结果再与x轴坐标的绝对值相乘,对所获得的乘积结果再进行求和运算。当然,所有的求和运算均采用元素值两两相加的流水线结构来满足时序的要求。以第一列为例,第一列的31个元素相加采用5级流水线电路结构,像素存储矩阵中每一列中的元素均进行相同的流水线运算。由于每一列中的元素需要两两相加求和,要求元素个数为偶数,而矩阵中每列元素个数31为奇数,所以在第一级流水线输入端添加一个0元素以凑成偶数且不影响结果。将每列的所有元素相加的5级流水线结构作为一个cell输入随后的6级流水线结构电路中。在第6级流水线中,选取关于y坐标轴对称的两列为一组,实现x坐标正半轴的图像像素灰度值与x轴负半轴图像像素灰度值的减法运算。第7级流水线实现对称两列像素灰度值和之差与x坐标绝对值的乘法运算,同样由于所得元素个数为奇数,需在第6级开始添加寄存器。从第8级开始元素两两相加的运算,第11级运算之后计算出所要求的图像块(1+0)阶矩。设计电路参考图5,图像的(0+1)阶矩计算与此类似,只不过每一个cell求和运算的输入元素为31x31像素缓存矩阵中每行的灰度值以及第7级流水线所乘坐标为y坐标的绝对值,因此不再赘述。
图像(0+0)阶矩的计算是将31x31矩阵中所有的像素点的灰度值相加求和,也需要对电路进行流水线设计。由于(0+0)阶矩的计算相对来说比较简单,只是涉及矩阵元素的加法,且元素相加的顺序和组合方式没有任何要求,所以电路在设计时可以相对灵活。考虑到在1阶矩阵计算时已经进行过矩阵中元素按行求和与按列求和,为了减少电路的面积和功耗,0阶矩阵计算电路设计选择复用(1+0)阶矩计算电路中的按列求和,通过并行的31个cell的计算可以获得每列像素点的灰度值之和。要想得到所有元素之和只需将31个cell的输出结果相加,该电路结构与每个cell的电路相同。但是由于在进行特征点主方向计算时需要同时获得图像块的(0+0)阶矩、(1+0)阶矩和(0+1)阶矩,因此需要将(0+0)阶矩计算流水线的级数与(1+0)阶矩、(0+1)阶矩计算流水线的级数保持一致。所以在求和运算完成之后,(0+0)阶矩计算电路添加了一级的寄存器缓存。具体电路设计参考图6。
3、基于高斯采样的描述子计算硬件实现
对于硬件来说,实现完全随机的高斯采样是不可能的,只能够通过设计尽可能的逼近随机的场景。参考图7,本发明在具体实现时,通过MATLAB构造符合高斯分布[0,312/25]的随机数组,由于存储矩阵坐标取值范围为[-15,15],所以只取该范围内的数据并将获得的数据存储在ROM中,一共选取两个只读寄存器,分别存储用于产生x坐标和y坐标的随机数组。为了实现读取数据的随机性,通过伪随机数产生模块来产生ROM的读取地址,伪随机数产生电路结构参考图8。从两个ROM中分别读取出选取的用于描述符生成的像素点的x坐标及y坐标,根据读取出的位置坐标以及特征点提取模块存储的特征点主方向的角度值计算出旋转后的采样点的坐标。根据计算出的采样点坐标读取经过滤波处理的采样窗口对应位置的像素点灰度值,进行灰度值比较获得特征点的描述子。
4、两级同步移位线性缓冲的结构设计
由于高斯采样模块的运算取决于滤波器的结果,一种处理方法是在开始计算描述符之前缓冲整个平滑图像,但是这种直接存储整个图像的设计方式需要大量的片上存储资源。为了解决这样简单架构实现效果差的问题,设计了两级同步移位线性缓冲的结构,通过高斯采样模块返回的信息来控制像素数据是否向下一级输送。参考图9整个结构是以数据流的形式进行运算的,行缓存的第一级和第二级分别用来存储滤波器和用于描述子计算的像素点灰度,每一级的行缓存器都是由基于RAM的移位寄存器构建的,控制模块主要保证使两级结构中的数据移动能够同步,且不丢失数据。如果检测到中心位置像素不是特征点,则两级线性移位缓冲结构中的数据正常移动,且不进行描述子的计算;如果检测到中心位置像素点为特征点,则控制模块停止两级结构中的数据移动,并且开始计算特征点的描述子,直至描述子计算完成后,控制模块重新开始两级结构中的数据移动。
需要说明的是,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。

Claims (2)

1.一种实时性好的ORB特征点提取的硬件实现方法,其特征在于,包括以下步骤:
步骤1、根据像素点离散化Bresenham图上采样点所在位置具有对称性的特点,设计四级流水线的结构实现对特征点筛选;其中,实现对特征点筛选的四级流水线结构通过以下方法构建:
步骤1.1、根据中心像素点离散化Bresenham图上采样点所在位置具有对称性的特点,将像素点按照垂直方向、水平方向划分成四部分;
步骤1.2、在步骤1.1中获得的每部分各选取一个像素点,且像素点的位置成对称关系,所选取像素点作为一组数据,重复进行四次像素点选取,每部分每次选取的像素点均不相同,将以中心像素点为圆心,半径为3的圆周上的16个像素点数据分为四组;
步骤1.3、将步骤1.2所分四组中像素点的灰度值分别与设定阈值进行大小比较,每级流水线完成一组数据比较;
步骤1.4、设计每级流水线完成时的信号输出,将完成信号作为下一级流水线的使能信号,将各级流水线连接构成特征点筛选的四级流水线结构;
步骤2、根据步骤1中筛选出的特征点坐标,依据灰度质心算法和矩阵存储结构中像素点坐标的关系,设计特征点主方向计算的11级流水线结构;其中,特征点主方向计算的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、利用只读寄存器和m序列发生器获得特征点图像块采样坐标,并根据步骤2中获得的特征点主方向进行坐标旋转,设计图像块的高斯采样模块,用于图像描述子计算。
2.根据权利要求1所述的一种实时性好的ORB特征点提取的硬件实现方法,其特征在于,步骤3中高斯采样模块通过以下方法构建:
步骤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描述子算法要求,利用高斯采样模块对采样窗口中像素点灰度值进行比对,获得特征点的描述子。
CN202010345182.1A 2020-04-27 2020-04-27 一种实时性好的orb特征点提取的硬件实现方法 Active CN111583093B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010345182.1A CN111583093B (zh) 2020-04-27 2020-04-27 一种实时性好的orb特征点提取的硬件实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010345182.1A CN111583093B (zh) 2020-04-27 2020-04-27 一种实时性好的orb特征点提取的硬件实现方法

Publications (2)

Publication Number Publication Date
CN111583093A CN111583093A (zh) 2020-08-25
CN111583093B true CN111583093B (zh) 2023-12-22

Family

ID=72125088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010345182.1A Active CN111583093B (zh) 2020-04-27 2020-04-27 一种实时性好的orb特征点提取的硬件实现方法

Country Status (1)

Country Link
CN (1) CN111583093B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112529016A (zh) * 2020-12-21 2021-03-19 浙江欣奕华智能科技有限公司 一种图像中特征点的提取方法及提取装置
CN113536024B (zh) * 2021-08-11 2022-09-09 重庆大学 一种基于fpga的orb_slam重定位特征点检索加速方法
CN114694063B (zh) * 2022-03-22 2024-04-02 西安交通大学 针对视频流特征点实时提取与选择的硬件实现方法及系统
CN117648889B (zh) * 2024-01-30 2024-04-26 中国石油集团川庆钻探工程有限公司 一种基于帧间差法的井喷流体测速方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106570820B (zh) * 2016-10-18 2019-12-03 浙江工业大学 一种基于四旋翼无人机的单目视觉三维特征提取方法
CN108985159A (zh) * 2018-06-08 2018-12-11 平安科技(深圳)有限公司 人眼模型训练方法、人眼识别方法、装置、设备及介质
CN109522906A (zh) * 2018-10-23 2019-03-26 天津大学 基于fpga的低复杂度快速sift特征提取方法

Also Published As

Publication number Publication date
CN111583093A (zh) 2020-08-25

Similar Documents

Publication Publication Date Title
CN111583093B (zh) 一种实时性好的orb特征点提取的硬件实现方法
Bouris et al. Fast and efficient FPGA-based feature detection employing the SURF algorithm
Tanomoto et al. A cgra-based approach for accelerating convolutional neural networks
Liu et al. Fg-net: A fast and accurate framework for large-scale lidar point cloud understanding
Sun et al. A flexible and efficient real-time orb-based full-hd image feature extraction accelerator
CN110637461B (zh) 计算机视觉系统中的致密光学流处理
CN107085562B (zh) 一种基于高效复用数据流的神经网络处理器及设计方法
CN102509071B (zh) 光流计算系统和方法
Shi et al. An FPGA-based hardware accelerator for traffic sign detection
Cai et al. Arbitrarily shaped scene text detection with dynamic convolution
CN102944227A (zh) 一种基于fpga实现实时提取恒星星像坐标的方法
Jiang et al. Rapid star tracking algorithm for star sensor
Meribout et al. A parallel algorithm for real-time object recognition
Liu et al. MobileSP: An FPGA-based real-time keypoint extraction hardware accelerator for mobile VSLAM
CN110651475B (zh) 用于致密光学流的阶层式数据组织
Vemulapati et al. Fslam: an efficient and accurate slam accelerator on soc fpgas
Shan et al. A CNN Accelerator on FPGA with a Flexible Structure
CN112182042A (zh) 基于fpga的点云特征匹配方法、系统和路径规划系统
Li et al. HcveAcc: A high-performance and energy-efficient accelerator for tracking task in VSLAM system
Zhu et al. A 135-frames/s 1080p 87.5-mw binary-descriptor-based image feature extraction accelerator
Ngo et al. Real time iris segmentation on FPGA
Yang et al. An Effective and Lightweight Hybrid Network for Object Detection in Remote Sensing Images
Vemulapati et al. ORB-based SLAM accelerator on SoC FPGA
Huang et al. An FPGA-based implementation of corner detection and matching with outlier rejection
Kim et al. A configurable heterogeneous multicore architecture with cellular neural network for real-time object recognition

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant