大家好,小弟近来在做dsp上的sift特征提取,自己实现的纯c代码,600*400的图片pc端运行花费4秒。
移植到c6748上运行,做了一些优化(编译选项设置,使用内联函数,循环优化等)后,仍然要花费2分钟,这个速度实在是太慢了。
由于sift算法数据量较大,为了有足够的空间,我运行在外扩RAM(ddr2)中,这个应该对速度有一定影响。
现在不知道在什么地方改进,把经常调用的函数放在片内RAM中运行应该会快一点吧?
请问一下有做过相关的工作的吗?希望能给一些改进的建议,在此非常感谢。
Shaquille Wu:
SIFT的第一步是Gaussian金字塔,Gaussian这块算法本身的优化就要花很长的时间
至于后面需要提取什么样的特征,需要根据实际情况确定
根据你说“600*400的图片pc端运行花费4秒”,这个有点离谱了,算法本身应该就需要优化
算法本身的优化到适应DSP的代码及优化,是一个循序渐进的过程
以上希望对你有用
Kailin Zhu:
回复 Shaquille Wu:
非常感谢你的回复。我会进一步修改我的算法。
我还想请教一下,cmd文件中,我把所有的代码和数据放在了外扩DDR2中,而不是片内RAM,片内RAM放不下,这是否会影响到速度,DDR2貌似主频比片内RAM低。如果我把部分频繁调用的代码和数据放入片内RAM,是否能适当提高速度?
Shaquille Wu:
回复 Kailin Zhu:
答案是肯定的