本文所述系统是某航空遥感系统的子系统,系统要求传输一路视频信号,带宽为0.48 Mb/s,视频信号的采集、压缩、下传、回放的延时控制在200 ms以内。通常的视频压缩方法,如MPEG-X、H.26X是利用视频图像的帧间相关性进行压缩,其解码时间长,对实时性要求较高的系统不适合。而JPEG2000是把运动的视频序列作为连续的静止图像来处理,对每一帧图像单独压缩,图像恢复实时性较好。本系统采用ADV202芯片实现JPEG2000压缩。由于带宽仅有0.48 Mb/s,在25帧/s正常视频情况下压缩率就会非常高。为了提高视频还原质量,压缩前利用FPGA实现跳像素和通过配置ADV202寄存器实现跳场减少数据量,降低压缩率。解压缩通过补场补像素,在显示器上实时播放。
1 ADV202芯片介绍[1-4]
ADV202是AD公司的一款实现JPEG2000编解码的芯片。图1给出了ADV202结构框图。该芯片主要由像素接口、小波变换引擎、熵编解码器、嵌入式处理器、存储器系统和内部DMA引擎等组成。ADV202内嵌了一个32位的RISC处理器,作为整个系统的控制者。这个RISC处理器具有自己的程序和数据存储器所对应的ROM和RAM。ADV202集成了一个基于ADI专利的空间高效递归滤波小波技术(SURF技术)的小波核。可以支持高达6层分解的9/7和5/3小波变换。由于熵编码的复杂度,ADV202提供了3个专用的硬件熵编码器。ADV202的内部DMA引擎为内部存储器之间、内部存储器和各个功能模块之间提供高速传输数据能力。ADV202的视频接口支持CCIR656、SMPTE125M PAL/NTSC、SMPTE293M(525p)、ITU.R-BT1358(625p),或者任何最大输入速率在非可逆模式下为65 MS/s、在可逆模式下为40 MS/s的视频格式。ADV202有编码和解码两种工作模式。在编码模式下,视频数据通过VDATA总线输入ADV202,由小波核对输入的数据进行小波变换,并把所有频率子带的小波系数存入ADV202内部的存储器。每一个子带根据ADV202编码参数的设置进一步分成编码子块,然后由熵编码器对编码子块执行内容建模和算术编码,运算结果存入内部存储器。随后由内部DMA传输到CODE FIFO,通过HDATA总线把压缩数据流从ADV202输出。在解码模式下,工作过程是编码模式的逆过程。视频接口(VDATA总线)支持单通道输入YCrCb格式的8 bit、10 bit和12 bit数字视频信号,还支持双通道输入Y和CrCb分离的16 bit、20 bit和24 bit数字视频信号,但必须是4:2:2格式,这种视频信号可以伴随HVF(行场同步信号),也可以内嵌入EAV/SAV同步字节。主机接口(HDATA总线)提供有16 bit和32 bit初始化数据控制总线及8 bit、16 bit和32 bit数据输出总线,支持多种输出模式,包括正常主机模式、JDATA模式和DMA模式。其中JDATA模式是一种同步模式,8 bit输出数据宽度。
ADV202的延迟时间无法精确估算,通常情况下,ADV202的压缩和解压延迟均可控制在所输入的1.5场的时间内[5]。故本系统压缩和解压延迟为90 ms,加上信道传输延迟,系统总延迟控制在200 ms以内。
2 视频压缩系统实现
系统流程是模拟视频转换为数字视频、像素抽取、视频压缩、数据打包,最后接数传通道。系统框图如图2所示。
2.1 芯片简介
视频AD由SAA7115完成,能够自动检测50 Hz或60 Hz场频以及自动切换PAL制和NTSC制,行同步、场同步、奇偶同步和像素时钟信号均可由管脚引出,支持4:2:2(CCIR656 8位)YCbCr等多种输出格式。以CCIR656格式输出时速率为25帧/s,每一帧由偶场和奇场组成,一帧的像素分辨率为720×576,表示每个像素平均需要2 B[6-7]。FPGA均采用Xilinx公司的Spartan3系列XC3S400,提供8 064个逻辑单元,16个18 Kbit的块状RAM。单片机采用高性能、低功耗的AVR 8 bit微处理器ATmega128,具有128 KB的系统内可编程Flash,支持在线编程和调试。
2.2 工作流程
当系统开始工作后,由摄像头将捕获到的模拟视频传送给SAA7115。SAA7115经过采样,量化后输出CCIR656格式的数字视频数据,并伴随输出相关的行场和时钟同步信号。通过XPD端口传送给FPGA1,完成像素的抽取,将一帧抽取为360×288,行场奇偶同步信号做相应变化。后通过VDATA端口传输给ADV202进行压缩,通过设定ADV202的寄存器可以实现跳场压缩,设定跳一场压缩,这样压缩前的数据量就减少为原来的1/8。如图3所示。
抽取后1s的平均视频数据量=360×288×2 B×8 bit×12.5 帧/s=20.736 Mb/s。压缩率约为(20.736 Mb/s)/(0.48 Mb/s)=43.2。
压缩后数据通过JDATA端口传输给FPGA2,将压缩数据打包和并转串后,接入数传通道。为了便于FPGA2接收数据,ADV202主机总线采取JDATA的同步输出模式。单片机是系统的主控者,完成对ADV202和SAA7115的初始化。对SAA7115的初始化通过I2C总线进行。ADV202的初始化需要片选线、读写信号线、4根地址线和16 bit数据线来加载固件和设置寄存器参数。但是单片机是8 bit数据线,而且数据线和地址线复用,所以使用了两个锁存器74HC573来实现16 bit数据的读写。锁存器的读使能信号和ADV202的片选信号由单片机的高位地址线输入到FPGA1内部译码组合后输出。FPGA1主要完成像素抽取、视频数据结构调整和输出ADV202的控制信号,内部模块如图4所示。利用FPGA内部的块RAM,生成2个FIFO,乒乓处理数据,从而达到实时处理数据。
2.3 视频数据结构调整
CCIR656格式视频信号每行的数据结构如图5所示[6-7],每行数据包括水平控制信号和亮度色差信号(Y,Cb,Cr)。CbYCr是指同址的亮度色差信号取样,后面Y对应于下一个亮度取样,比例是4:2:2。由于ADV202只接收4:2:2的YCbCr格式视频信号,故采取图5所示的跳像素方法,HS也做相应变化。
由FPGA1完成跳像素和相应同步信号变化,使用Modelsim仿真所得波形如图6所示。为能看到同步信号的相关关系,缩减了帧的行数。
3 视频解压缩系统实现
解压缩系统是压缩系统的逆过程。信道为FPGA1提供同步时钟,在这个时钟下,FPGA1读取信道发送的数据,并进行数据串转并,如图7所示。在FPGA1内部同时完成补场,采取重复前一场的方法补齐每秒50场,以此实现ADV202图像解压的实时性。视频压缩数据通过JDATA端口发送给ADV202。解压缩后的数据通过VDATA总线发送给FPGA2完成补像素,把图像调整为标准的CCIR656数字视频格式;然后通过MP端口传送给视频编码器SAA7121,转换成模拟视频,并在显示器上显示。软件方面,对于SAA7121的配置仍采用I2C总线来完成,ADV202的初始化与压缩系统相同,只是加载的固件不同。
本文提出了一种基于ADV202的JPEG2000图像压缩及解压缩系统的设计方案,该系统具有很大的灵活性和扩展性。此视频压缩及解压缩系统应用到无线图像传输信道中,降低了传输延迟,适应窄信道的高要求。
参考文献
[1] 余建宇,候颜平,李勇。JPEG2000编解码芯片ADV202的原理及应用。国外电子元器件,2005(7).
[2] 张士强。基于ADV202的JPEG2000实时图像解压缩系统。工程实践及应用技术,2007,33.
[3] 张佳延,白旭,周廷显。一种基于ADV202的视频压缩系统设计。电视技术,2007(6).
[4] 朱梦宇,杨裕亮。基于JPEG2000的实时红外图像压缩系统设计。激光与红外,2005(4).
[5] Analog Devices.视频压缩产品ADV202/ADV212 FAQ.2007.
[6] 刘峰。视频图像编码技术及国际标准。北京:北京邮电大学出版社,2005.
[7] 孙景琪。视频技术与应用。北京:北京工业大学出版社,2004.