图像算法移植到DSP及其优化步骤
2019-07-13 09:50发布
生成海报
转自:http://junzhuivs.blog.51cto.com/7446454/1249404
当你需要把已经写好的算法,移植到你的DSP
开发板上并很好的跑起来,需要做哪些工作呢?
下面我分两部分来讲,第一分部是移植,第二部分为算法优化
移植:
1)
如果你的算法是基本opencv
这样的基本上开发的,你需要脱离opencv
的环境。
2)
如果你的算法是C++
语言,请你改成标准的C
语言。虽然DSP
的开发环境是支持C++
的,但是不建议你这么做。
3)
修改你算法的内存分配,尽量内存一次分配好,DSP
在算法不断的申请和释放时会有隐患。优先使用静态数组,会减轻很多工作量。
4)
在CCS
下建立工程,来调试你的算法,内存分配函数需要使用TI
提供的函数。如果你的算法能够长期稳定的运行,那么恭喜你,你的算法移植就完成了。
优化:
算法优化,需要你能懂算法,也懂DSP
。如果你只会写DSP
程序,而不会算法,这对整个产品来说,是不能达到最优的。有些公司怕算法泄密,给优化人员一段或几段程序让其优化。我觉得这样做是很不合理的。除非你自己能控制大局,精通优化,这样才可行。
1)
你需要对算法原理做一个深刻苦的理解,阅读相关的文章。
2)
对你拿到的算法做全方位的熟悉。
3)
做好上面的准备工作后,你要对算法的结构做重新的整理。依据DSP
的特点,比如内存的分布。算法结构调整完成后,你的算法在DSP
上速度应该有一个明显的提高了。
4)
结构调整完成后,找到算法中比较费时的部分。确定我们需要优化的重点,这部分内容多是每张图像都要处理一次或多次的部分。对于算法启动时初始化部分的内容,一般不需要优化。
5)
确定优化内容后,你首先考虑从语言结构上去做优化,这个时候应该还是C
语言的。我不建议大家用TI
提供的在C
语言中使用优化嵌入的C
库函数。
6)
你把需要优化的函数改写为线性汇编或汇编函数。不断的调整软件流水,提高速率。
这个整个移植优化的工作就基本上做完了,其实实际工作中,移植优化的工作量往往会比较大,要不断的反复,找更好的方法。移植优化跟算法开发一样,是个细致的活。需要静下心来,仔细研究,欢迎大家一起来探讨。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮