[发明专利]一种基于CUDA技术的视觉SLAM前端加速方法在审
申请号: | 202110394546.X | 申请日: | 2021-04-13 |
公开(公告)号: | CN113112394A | 公开(公告)日: | 2021-07-13 |
发明(设计)人: | 严海蓉;贾子健 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06T1/20 | 分类号: | G06T1/20;G06K9/46;G06K9/62 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 刘萍 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 cuda 技术 视觉 slam 前端 加速 方法 | ||
1.一种基于CUDA技术的视觉SLAM前端加速方法,其特征在于:加速过程需要GPU参与计算,使用CUDA技术实现运算并行化;特征检测过程包含:图像高斯金字塔构建模块、特征点提取模块、特征点方向计算模块、特征点描述子计算模块;
图像高斯金字塔构建模块用于将输入图像降采样至不同的大小,以匹配不同尺寸下的相同图像特征;特征点提取模块用于得到图像中的角点,根据像素点和邻域点的关系判断当前点是否为特征点;特征点方向计算模块用于计算特征点的梯度方向和大小,以便在图像视角发生变化时顺利匹配;特征点描述子计算模块用于为每一个特征点建立二进制描述子,为下一步特征点匹配做准备;
图像高斯金字塔构建模块具体包括以下步骤:
首先初始化Device设备,申请设备端数据空间以存放图像金字塔;然后扩展检测区域边界,使用OpenCV中CUDA模块改写的cuda::copyMakeBorder替换原方法中copyMakeBorder的默认实现,并将变量对齐到申请的空间,调用OpenCV中CUDA实现版缩放函数cuda::resize将输入图像缩放到金字塔对应大小,此过程使用双线性插值算法实现,并利用cudastream流将此过程并行化;
特征点提取模块具体包括以下步骤:
首先遍历每层金字塔,将当前层金字塔图像及边界信息传入给检测函数处理;根据图像大小申请对应的Grid和Block,这里Block设置为32*8代表一个待检测区域,Grid可根据图像大小和Block大小划分为对应的网格;每个线程对应一个像素,因而可以并行地检测FAST特征点;调用特征检测核函数,根据Thread及Block索引求出邻域点,判断当前点是否为特征点;如果某像素点满足FAST特征点的条件,则将像素的坐标存入全局存储器;同时,将特征点的数量进行累加并存储在全局存储器中;
特征点方向计算模块具体包括以下步骤:
首先根据特征点的总数来申请线程,保证每个特征点和一个线程相对应,根据灰度质心法调用核函数计算出特征点的梯度方向和大小,并存储到内存中;此处核函数的block大小设置为32*8,Grid大小设置为特征点数量,这样设置以便将特征点平均分配给不同核函数计算方向;
特征点描述子计算模块具体包括以下步骤:
首先将金字塔中高斯图像传送到显存中,申请对应特征点数量的Grid,对于每一个特征点申请32个线程块,将每个特征点邻域内的像素进行比较建立二进制描述子,将计算出来的描述子放到共享变量内;
所述图像高斯金字塔构建、特征点提取、方向计算、描述子计算模块均采用cuda流的形式实现,其特征是只在函数返回前调用一次同步函数等待device端计算结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110394546.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种僵尸网络检测方法及装置
- 下一篇:一种提高超高强冷轧双相钢厚度精度的方法