[发明专利]一种基于DSP平台SIFT算法硬件加速方法有效
申请号: | 201910836179.7 | 申请日: | 2019-09-05 |
公开(公告)号: | CN110764774B | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 赵海盟 | 申请(专利权)人: | 桂林航天工业学院 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/38 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 541004 广*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 dsp 平台 sift 算法 硬件加速 方法 | ||
1.一种基于DSP平台SIFT算法硬件加速方法,其步骤包括:
1)将SIFT算法重新编译为能在DSP平台上运行的C语言程序,具体编译方法为:①约束SIFT算法中运行的界面函数;②基于C语言对步骤①处理后的SIFT算法中的库函数重新编译;③基于C语言对②处理后的SIFT算法中的SSE加速计算程序进行计算复原;
2)转换图像数据类型,使得SIFT算法处理的图像数据最大限度地使用DSP平台硬件计算单元进行计算;具体转换方法为:①根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构;②重新分配SIFT算法的图像函数中的数据存储空间,设置数据空间的指针为浮点型;
3)通过对SIFT算法计算迭代段的优化以最大化使用DSP内核的软硬件资源;具体优化方法为:①减少SIFT算法中所调用的数据计算类函数内部指针的关联性以增强计算的并行能力;②将SIFT算法内涉及的循环中子函数内嵌,使得程序编译器可以将子函数编排入流水线管道pipeline中;③简化和展开SIFT算法内的多重循环;④使用软件流水技术,缩短指令之间的执行间隔提升算法的计算速度。
2.如权利要求1所述的方法,其特征在于,步骤2)的处理方法为:首先根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构;然后创建float型存储空间,并在图像数据结构中新增float*imageData1指针指向float型存储空间的首地址;然后将SIFT算法处理的图像数据存储在4个char型空间的float型数据存储到float型存储空间中;然后重新分配SIFT算法的图像函数中的数据存储空间,设置数据空间的指针为浮点型,当输入图像数据的像素数据类型为32位float型数据时,SIFT算法的子函数ialloc开始分配储存空间并将返回的地址转换为float*型,将得到的float*型地址传递到指针float*imageData1。
3.如权利要求2所述的方法,其特征在于,图像数据gray32中第row行的第col列像素点的float型像素数据val访问形式为:float val=*(gray32-imageData1+image-widthstep*row+col);式中gray32-imageData1为float*型指针,指向图像数据gray32的float型像素数据存储空间的起始地址,image-widthstep为图像数据gray32中一行像素数据占用的存储空间。
4.如权利要求1所述的方法,其特征在于,减少SIFT算法中所调用的数据计算类函数内部指针的关联性以增强计算的并行能力的方法为:a)在数据计算类函数内部使用restrict、const关键字以声明数据计算类函数中使用的非关联性指针不指向同一内存块;b)当数据计算类函数的输入、输出指针存在关联性且在计算过程互相独立时,对输出指针进行调整;建立过渡内存块,并将输出指针指向过渡内存块;SIFT算法中指针相关联的函数完成计算后,再将过渡内存块的内容拷贝到原始程序指定的内存块。
5.如权利要求1所述的方法,其特征在于,将SIFT算法内涉及的循环中子函数内嵌的方法为:将SIFT算法中迭代计算调用的子函数内嵌入SIFT算法主程序的循环体内。
6.如权利要求1所述的方法,其特征在于,简化和展开SIFT算法内的多重循环后,程序编译器的优化器对于相互之间没有直接关联性的同类运算循环体,增加SIMD指令的使用次数,以增加运算的并行性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于桂林航天工业学院,未经桂林航天工业学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910836179.7/1.html,转载请声明来源钻瓜专利网。