我用c6678试了一下,仅仅把一帧640*512的16位灰度图像比较简单的操作就花费将近1毫秒的时间,比如用memset函数对图像初始化,用memcpy函数把图像拷贝到一个数组中都需要花费1毫秒的时间,由于图像比较大运行时只能放在DDR中,这样程序在运行时必须访问DDR,从而大大降低了速度,即使使能了cache作用也不大,我的项目要在5毫秒内处理完一帧图像,光遍历一遍图像就花费1毫秒,而在算法中需要很多次遍历图像(比如对像素排序、赋值等)这样一来简直不可能完成的任务,请问大家怎么解决的?
现在测试是把图像数据拷贝到硬盘中,程序运行的时候再把图像数据用fopen读到内存中,在硬件实现的时候不是这个流程,是通过srio接口从fpga接收图像数据,但是srio一般也是采用direct io方式,最终也是把图像数据拷贝到内存中,通常做图像处理一般首先用edma3获取图像数据,我想即便用edma3页得先把图像数据缓存到ddr中吧?大家遇到这种实时性要求比较高的图像处理是怎么做的呢?
zhubaojun:
回复 Shine:
谢谢 我试试