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

orb特征是一种图像识别、追踪和匹配中常用的特征,大名鼎鼎的orb-slam就是使用的这一特征。它提取fast特征点,并通过特征点附近的窗口矩计算特征点的方向,含方向的fast特征也被称为ofast特征。对提取到的ofast特征,进一步计算brief描述子。orb特征包含了两部分,一是特征点位置,二是它的brief 256位描述子。
orb特征计算的流程
本项目实现了orb_fpga单层图像金字塔的orb特征提取,利用fpga的并行计算能力,使这一过程比起纯cpu执行加速了5.6倍。
加速器结构,输入输出都是axi-stream接口
上图为图像加速部分的工程示意图。这里同样使用了hls编写的加速ip采用axi-stream数据接口,数据接口与dma首尾相连,只要控制dma就可以驱动它。
总体工程
本项目的例子输入是sd卡中保存好的图片,当然也可以自己从摄像头读取图片。
快速开始
运行下面这条命令即可快速安装:
sudo pip3 install git+https://github.com/siudya/orb_fpga.git
项目演示
安装好以后打开orb_fpga/orb_fpga..ipynb
首先是初始化软硬件,并且读取图片。注意读取进来的图片要拷贝到xlnk分配的内存才可以使用dma传输。
将图片从两个输入dma写到加速器中再从输出dma读回。统计收到的字节数可以得知1914个特征点被检测到了。
这里可以打印前两个特征点的内容。可以看到前8个32位数是描述子,后两个是坐标。
把特征点画在原来的图像上,可以看到检测出的特征点大部分是角点和边缘点。这实际上和fast特征是一致的,但是fast特征不包含描述子。
接下来读取更多图片来看看吞吐量如何。这里读取了20张图片,统统送入加速器加速,可以看到帧数可以达到56帧。
项目中也提供了纯软件测试的可执行程序,可以直接运行。
可以看到在o2优化的条件下,ps端运行相同算法仅仅只有10.2帧,使用硬件加速器加速达到了5.6倍之多。


VR社交黑马!High Fidelity登陆Steam
干货来!七大超声波创意设计推荐
“宁德时代”如何缔造下个时代
深度解析:智慧用电是什么
安路科技再度荣膺“2023工控中国风云企业”
ORB_FPGA单层图像金字塔的ORB特征提取方案分析
MAX9626, MAX9627, MAX9628 ADC驱
任正非在华为软件架构提出三大原则
百度网盘从存储工具到个人云服务操作系统
Lightning转30-pin适配器拆解:不可破解、不可仿造
小型立体声调频发射机电路图
2019集微半导体峰会上老杳出席会议并致辞
Mentor Graphics新版 HyperLynx 集信号和电源完整性、3D电磁解析和 快速规则检查于一个统一的环境中
基于单片机的水温控制器的设计
小米上市 人民日报点评雷军公开信
磷酸锰铁锂规模投产步伐加快
SiC-SBD的正向特性,与正向电流及温度的依赖关系
关于无人机飞控系统
地面沉降监测站可以监测什么?
“视力+智力”的毫米波雷达,有望颠覆未来车载传感器市场