ORB_FPGA单层图像金字塔的ORB特征提取方案分析

电子说

1.3w人已加入

描述

ORB特征是一种图像识别、追踪和匹配中常用的特征,大名鼎鼎的ORB-SLAM就是使用的这一特征。它提取FAST特征点,并通过特征点附近的窗口矩计算特征点的方向,含方向的FAST特征也被称为oFAST特征。对提取到的oFAST特征,进一步计算BRIEF描述子。ORB特征包含了两部分,一是特征点位置,二是它的BRIEF 256位描述子。

 

FPGA

 

ORB特征计算的流程

本项目实现了ORB_FPGA单层图像金字塔的ORB特征提取,利用FPGA的并行计算能力,使这一过程比起纯CPU执行加速了5.6倍。

 

FPGA

 

加速器结构,输入输出都是AXI-Stream接口

上图为图像加速部分的工程示意图。这里同样使用了HLS编写的加速IP采用AXI-Stream数据接口,数据接口与DMA首尾相连,只要控制DMA就可以驱动它。

 

FPGA

 

总体工程

本项目的例子输入是SD卡中保存好的图片,当然也可以自己从摄像头读取图片。

快速开始

运行下面这条命令即可快速安装:

sudo pip3 install git+https://github.com/Siudya/ORB_FPGA.git

项目演示

安装好以后打开ORB_FPGA/ORB_FPGA..ipynb

 

FPGA

 

首先是初始化软硬件,并且读取图片。注意读取进来的图片要拷贝到xlnk分配的内存才可以使用DMA传输。

 

FPGA

 

将图片从两个输入DMA写到加速器中再从输出DMA读回。统计收到的字节数可以得知1914个特征点被检测到了。

 

FPGA

 

这里可以打印前两个特征点的内容。可以看到前8个32位数是描述子,后两个是坐标。

 

 

把特征点画在原来的图像上,可以看到检测出的特征点大部分是角点和边缘点。这实际上和FAST特征是一致的,但是FAST特征不包含描述子。

 

FPGA

 

接下来读取更多图片来看看吞吐量如何。这里读取了20张图片,统统送入加速器加速,可以看到帧数可以达到56帧。

项目中也提供了纯软件测试的可执行程序,可以直接运行。

 

FPGA

 

可以看到在O2优化的条件下,PS端运行相同算法仅仅只有10.2帧,使用硬件加速器加速达到了5.6倍之多。

编辑:hfy


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分