用DSP进行图像畸变校正算法研究,自己基于双线性插值来做一个畸变校正算法,发现DSP处理一幅200万像素的图像需要0.042s左右,统计各方面所耗费的时间,发现时间基本耗费在存储灰度矩阵上了,比如我通过A8传送一幅1080P的图像进入DSP进行校正,在DSP中开辟一个矩阵gray[1628][1236]用于存储校正后的灰度数据,时间基本用于将畸变处理后的数据放入该矩阵中了,而处理畸变校正的运算基本不耗时间,以下是我做的一些相关实验来验证:
1、存储校正后的灰度数据到矩阵gray[1628][1236]耗时0.042s;
2、存储校正后的灰度数据到矩阵gray[200][100]耗时0.037s;
3、存储校正后的灰度数据到矩阵gray[100][100]耗时0.037s(再细点的精度就没看过了),因为考虑到DSP L1 data cache大小为32kB,怀疑是不是超过32kB大小的数据空间会放到L2中,影响速度,因此设置一个小于32kB的矩阵来做对比;
综上发现,DSP运算耗时基本花在存储数据矩阵上了,并且数据矩阵大小对时间影响不大(此处原因还没弄懂),请教下各位有什么好的方法可以提高DSP的速度吗?
Chris Meng:
你好,
请问你的gray buffer是在什么内存上,是L2还是DDR么?
你说的存储具体是什么操作?你不是计算后直接把结果输出到gray buffer里的么?
user5117350:
回复 Chris Meng:
你好,是DDR,因为不知道如何直接在L2处分配空间,以为开辟空间小的话会自动分配到L2上,存储的意思是将DSP运算过程中的中间数据放到DDR内存中,即刚开辟的gray空间中,具体操作是从A8过来的图像数据经过处理后用两层for循环赋值给*gray~
user5117350:
回复 Chris Meng:
个人在后面经过试验,发现除第一次往gray空间耗时长外,后面再往gray空间存取基本不耗时间,怀疑是不是因为分配的gray空间在DDR上,后面存取时该空间已经映射到高速缓存cache中了,所以后面往gray空间存取不耗费时间~