【学习笔记】基于DSP/BIOS的视频图像复原系统设计
0 引言
在图像复原技术发展的过程中,国内外学者提出了大量的图像复原算法。目前一些新颖的复原技术有基于支持向量回归的复原算法、中介滤波算法和基于水平集的图像复原算法等。
传统的图像复原算法是基于PC实现的,而本文所研究的视频图像实时复原系统,不但对系统处理的实时性要求更高,而且运算量也大得多。由于其具有高速并行处理能力和高效的流水线处理能力,在硬件性能、图像数据的传输等方面,比专业视频编解码芯片有更好的表现,因此,本文研究的视频图像复原是基于嵌入式DSP芯片来实现的。此外,DSP芯片功耗比较低,且用户开发自由度比较大,为提高产品的稳定性提供了更可靠的保障。
1 开发平台及系统总体架构
1.1 硬件平台
本系统的硬件开发平台主要是基于SEED-DEC6437和SEED-DTK_MBoard平台。其中,SEED-DEC6437是一款能够处理各种视频应用的独立模板,采用支持TI公司达芬奇技术的高性能纯DSP芯片TMS320DM6437。该芯片集成了为加速数字视频开发所专门设计的协处理引擎,结合VPSS(最新视频处理子系统),具有较高的视频处理性能,可支持D1解析度的H.264视频编码。在SEED-DTK_MBoard的硬件系统中主要集成了DSP、Flash、SRAM、UART、LCD和D/A等外围设备,使其能够应用在显示、键盘和模拟信号输出等相关领域。
1.2 软件平台
本系统的软件开发平台主要是基于集成开发系统CCS及其实时操作系统DSP/BIOS。DSP/BIOS是一个可扩充、可裁剪的RTOS,主要包括常见嵌入式通用库和API,可提供诸如多线程任务的调度、任务间的同步和通信、I/O服务、中断优先级的配置等功能,具有模块化和小型化的特点。DSP/BIOS支持硬件中断(HWI)、软件中断(SWI)、任务(TSK)和后台线程(IDL)4种线程,可以合理分配空间和时间,简便迅速地设计出功能多变的系统子程序。
1.3 基于DSP的视频图像实时复原系统总体架构
本系统中TMS320DM6437为算法处理器,可通过PC发出的调度指令快速地完成算法切换、调停当前状态等功能。TMS320VC5402为控制器,主要负责人机交互界面的控制,它与TMS320DM6437通过多通道缓冲串口通信。系统总体架构如图1所示。首先从CCD摄像头采集模拟视频信号,通过TVP5150视频解码芯片将模拟信号解码成YCbCr4:2:2格式的数字图像信号并存至DDR2内存,DM6437芯片可以通过访问DDR2并根据不同的图像处理算法对数据进行相应的处理,最后通过VPSS中的视频处理后端(VPBE)转换为数字图像信号输出到显示屏。
2 复原算法的选取及软件仿真
2.1 本文采用的图像复原方法
图像复原是指去除或减少在获得观测图像过程中产生的降质影响。根据图像的退化环境不同,本系统主要选取了逆滤波、维纳滤波和运动模糊复原算法。
逆滤波复原又叫非约束复原,在进行逆滤波时,根据先验知识得到传递函数H,对退化图像进行傅里叶变换得到G(u,v),即复原图像的傅里叶变换,再经傅里叶反变换得到复原图像f(x,y),过程如式(1)所示。
逆滤波虽然简单,但不适合H(u,v)非常小的情况,此时无法精确恢复出图像。为了克服这个缺点,本系统采用维纳滤波,复原模型可表示为:
其中,K一般取0.5,最后对f(u,v)进行傅里叶逆变换得到复原图像f(x,y)。维纳滤波对噪声放大具有自动抑制作用,在大多数情况下都可得到令人满意的结果,但信噪比较低时,复原效果不是很理想。
针对运动模糊图像的复原,本系统采取运动模糊复原算法,如式(3)所示。
2.2 图像复原算法的仿真实现
常见的图像退化方法有平滑模糊和运动模糊。本文在Visual Studio软件中使用C++对系统所选取的算法进行了软件仿真,并对一幅256×256的bmp格式的图片分别进行了3种类型的退化仿真,如图2所示。
图3(a)是按照式(1)对图2(c)逆滤波复原的结果,图3(b)是按式(2)维纳滤波复原的结果。可以看出,逆滤波抑制噪声的能力比较差,复原后的图像严重失真,而维纳滤波对噪声的增多具有约束作用,复原图像的细节保持比较好,但模糊程度相对增大。图3(c)是按照式(3)对图2(d)进行运动模糊复原的结果,复原效果比较理想,但复原图像较原始图像偏暗。
本文除了对图像复原质量进行主观分析外,也从客观上比较了其峰值信噪比PSNR值的大小,如表1所示。可发现运动模糊图像PSNR值最低,丢失的信息最多。在利用3种方法分别对平滑模糊图像进行复原后,逆滤波的复原结果最佳,PSNR值最大。而在对加噪图像的复原过程中,维纳滤波抑制噪声的能力最好,PSNR值明显高于其他两种方法。针对运动模糊图像,逆滤波和维纳滤波的PSNR值特别低,均不如运动模糊复原。
3 基于DSP/BIOS的图像复原程序开发
3.1 视频图像复原系统的软件设计
视频图像处理软件平台对任务的时序和复杂度要求苛刻,故采用基于DSP/BIOS的实时调度内核来配置线程的优先级,处理线程的触发、挂起等相应条件。本系统的软件设计流程图如图4所示,为了测试本系统对图像的处理性能,特移植了图像模糊算法和图像复原算法。在本系统中,DSP/BIOS内核调度是核心。BIOS首先需要对DSP进行初始化,将复位的向量指向端口初始地址c_int00,然后需要调用BIOS_init对配置用到的各个模块进行初始化,同时需要在main()函数中对片内外设等常见的DSP配置初始化,此时不能对SWI、TSK等线程进行操作。在调用BIOS_start后,就可以完成DSP/BIOS的启动,从而进入IDL_Loop空闲循环,等待HWI、SWI、TSK等线程的就绪。当PC上位机发送控制指令时,就会触发UART中断,就绪TSK1,读取控制指令,选定相应的算法模式,并对Mail_box赋新值。当Mail_box对应之前的Pend值时,相应的算法任务会立刻就绪,若具有高优先级,算法线程会立即执行。在完成视频图像处理以后,视频图像输出任务就绪,回放处理后的视频图像。
3.2 人机交互和DSP/BIOS任务调度结果
本系统进行人机交互的硬件模块是德州仪器TMS320C5402芯片。首先在键盘上输入键值产生对应的扫描码,当扫描码在McBSP中进行传输后,TMS320DM6437与C5402芯片间便开始进行通信。人机接口框图如图5所示,如果PC发送数据完成时,通过键盘可进行不同算法间的切换,人机交互界面如图6所示。
本程序中设置了一个McBSP硬件中断,多线程中UART接收和McBSP中断优先级最高,其次是软中断UART数据读入和发送,最后是TSK。线程间分别通过Mail_box()和SEM()进行通信和同步。DSP/BIOS的任务时序图如图7所示,可见多线程间的切换合理,程序运行正常。
3.3 实时图像处理效果
本系统通过人机交互控制,得到的各种算法处理效果如图8、图9所示。
图8(a)是运动模糊后的图像,图8(b)是平滑模糊后的图像。在图8(b)中加入随机噪声后,如图9(a)进行逆滤波复原,如图9(b)进行维纳滤波复原。可发现逆滤波不能很好地过滤掉原有噪声,并且噪声在傅里叶变换过程中被放大;而维纳滤波复原效果很好,可自动抑制噪声放大。图9(c)是运动模糊复原图像,对物体间相对运动造成的模糊具有很好的复原效果,但与图8(a)相比较,复原后图像的整体亮度偏暗,这是因为在运动模糊模型的逆推过程中进行了像素点的近似取值。
4 结论
本文以SEED-DEC6437开发板为核心硬件搭建视频回路,基于DSP/BIOS构建软件平台,并将图像模糊算法和图像复原算法移植到该系统上。为了增强系统的可控性和实时性,又成功加入人机控制,经过对多张图像的采集、模糊和复原,发现在DSP/BIOS调度后,图像的处理速度大幅提升,复原效果良好,多任务间的通信和同步不易出现死循环。可见该视频图像复原系统在性能上总体让人满意。