本文介绍了一种基于DSP+FPGA技术的面向异步视频的嵌入式图像处理系统设计,以一种灵活的架构避免了帧间不同步方法对双口RAM显存的需求,既能够保证图像输出质量,又有利于提升图像处理的性能指标。系统以FPGA为核心,连接DSP和4片帧存,通过帧存的循环复用将缓存和显存融合起来,省略了数据搬运的环节。当输入帧频小于输出帧频时,从系统总体的角度分析帧存的状态转换规律,当输入帧频大于输出帧频时,从单个帧存的角度分析帧存的状态转换规律,并蛤出了可编程逻辑设计的源程序,该方案已在产品中应用,通过升级能够满足更高的技术要求。
图像处理系统输入视频信息,运行图像处理算法,输出处理后的图像信号,实现目标检浏、跟踪、识别等功能。系统的输入和输出常常是不同的视频格式,二者由于帧频的不同,处于异步的状态。为了提高异步视频时输出画面的质量,本文展开了深入的研究,设计出一种基于DSP+FPGA技术的面向异步视频的嵌入式图像处理系统,提高了输出图像的视觉效果,结构简洁,具有小巧灵活的优点。
1 异步视频的处理方法
如果图像处理系统的输入为复合模拟视频,帧频25 Hz;输出为XGA格式,帧频60 Hz;一幅输入画面平均产生2.4次输出画面,此时系统处理的就是异步视频,有3种处理方法:帧内不同步方法、帧间不同步方法和准同步方法。
(1)帧内不同步方法。输出帧以输入帧的帧频进行切换,当一帧输入数据准备好后,输出帧就切换到新一帧的视频数据,不管此时输出帧进行到了哪个时刻。这种模式中输入帧和输出帧处于帧内的不同步状态,即输出帧的画面可能由非同一幅输入帧画面组成。当相邻的两帧图像存在较大差异(目标与传感器有较高的相对运动)时,输出帧的画面会出现明显的分界。例如视频采集卡采集复合视频信号在PC机监视器上显示,动态画面的分界清晰可辨。
(2)帧间不同步方法。把不同步局限在帧间的状态,当一帧输入数据准备好后,输出帧不会立即切换到新一帧的视频数据,而是根据输出帧自身的时序做出选择。只有当前输出帧输出完毕后,才会切换到新一帧的视频数据,保证了输出的每幅画面都有一个对应的输入画面,不会出现2个输入画面拼接的状况。如果一幅输入画面平均产生2.4次输出画面,那么某些输入画面显示了2次,某些输入画面显示了3次。原来在时间上均匀显示的输入画面,在输出时不再均匀。当输入画面中存在匀速运动的物体时,在输出画面中,物体会出现跳跃式的运动。这种显示效果在大多数应用环境中肉眼难以觉察,是目前嵌入式图像处理系统广泛采用的处理异步视频的方法。比较第一种方法,硬件设计的复杂度有所提高,但保证了用户的观测效果。
(3)准同步方法。输出帧和输入帧在一段时间上基本对应,接近同步的效果。虽然输入和输出的帧频不同,但系统根据相邻的输入帧图像的变化特点,生成一些中间帧,加入到输出帧序列中,突出了输出帧频提高的显示效果,能够保持西面的连续性。这种方法多用于视频格式转换系统,其存储器的空间要满足帧速率转换算法的要求。某些视听大屏幕设备只转换特定的几种视频格式,特殊的算法可使存储器空间最小化,以利于降低成本。
图像处理系统面对异步视频时,非专用于视频格式转换目的情况下,实现帧间不同步的输出效果即可。一般的解决方案是准备3帧数据空间的双口RAM显存,无论写入速度多少,都能够避免写入和读出的冲突。本文设计出一种基于DSP+FPGA技术的嵌入式图像处理系统,以一种灵活的架构避免了显存的需求,既能够保证图像输出质量,又有利于提升图像处理的性能指标。
2 嵌入式图像处理系统
2. 1 功能架构
通常图像系统中数据流环节依次为:输入接口、FPGA、数据缓存、DSP、显存等。其中显存中的数据以帧为单位切换输出,两帧乒乓的方式只能用于同步状态。本系统设计的功能架构如图1所示,可以把缓存和显存融合在一起,通过FPGA切换的方式免除数据搬运的过程。
可编程逻辑器件(FPGA)将数字信号处理器(DSP)、4片帧存以及输入和输出视频数据流连接起来。依据功能状态,帧存定义为写入帧、处理帧、读出帧、缓存帧、废弃帧,其中缓存帧和废弃帧不同时存在。写入帧指该帧存与视频数据输入流连接,正在存储输入的视频数据;处理帧指该帧存与DSP连接,作为DSP的数据缓存,供软件读写;读出帧指该帧存与视频数据输出流连接,视频数据正在被读出显示;缓存帧指处理帧的下一个状态,等待被读出显示,处于孤立状态,废弃帧指视频数据已经完成输出,等待被新的数据写入,处于孤立状态。每一帧视频数据与一片帧存关联,依次经历写入、处理、缓存、读出、废弃的状态(不一定是全部的状态)。FPGA依据规则切换4片帧存,循环往复。
嵌入式图像处理系统的功能分为图像处理和视频转换2部分。图像处理功能主要由DSP实现,当输入的视频数据成为处理帧时,DSP软件要在一个输入帧周期内读入数据、执行处理算法、用新的数据覆盖帧存(该帧存随后会读出显示)。图像处理结果可以从DSP的通讯接口上报,必要时,FPGA也可以完成部分图像处理算法,减轻软件负担。视频转换功能指FPGA对4片帧存的切换来实现异步视频的帧间不同步方法。
2.2 切换规则
在异步视频的帧问不同步状态下,输出帧的完整性需要保证,帧存的切换不能只依据输入帧的同步信号,还必须考虑输出帧的同步信号,嵌入式图像处理系统利用第4片帧存提供时间上的缓冲。帧存共有5种状态,任一时刻4片帧存分别对应写入、处理、读出、缓存(废弃),帧存的写入、处理、缓存状态由输入帧的同步信号触发确定,帧存的读出、废弃状态由输出帧的同步信号触发确定。
2.3 状态转换程序设计
设定4片帧存的初始状态见表1。
帧存的状态由两种同步信号触发转换,因此设定为输入和输出两部分状态的组合。
2.3.1 输入帧频小于输出帧频
在输入帧频小于输出帧频的情况下,每一个输入帧都会被读出显示。在每个输入帧周期中,至少会发生1次输出帧同步触发事件,第1次输出帧同步信号触发之后,原缓存状态的帧存切换到读出状态,原读出状态帧存转换为废弃状态,然后保持不变,直到新的输入帧同步信号到来。从系统整体分析4片帧存的状态转换过程,得出表2的结果。
表2显示系统状态转换的一个循环包含8种情况,由4种输入和4种输出组合而成,每种输出状态对应一个处于读出状态的帧存。
2.3.2 输入帧频大于输出帧频
在输入帧频大于输出帧频的情况下,一个输入帧周期内,如果接收到输出帧同步信号,缓存帧会转换为读出帧,否则会被重新写入,没有机会输出显示。帧存的状态转换与其原来的状态相关,具有随机特性,不宜从系统总体确定状态循环,只能从单个帧存的角度分析状态转换规律。