基于DSP的JPEG视频压缩系统的实现
扫描二维码
随时随地手机看文章
1 引言
随着网络和多媒体技术的发展,视觉通信的重要性和需求急剧增加,如桌面视频会议、移动终端、基于因特网的视频通信等。这些视觉信息内涵丰富,但数据量大,必须压缩数据。但采用多种方法压缩图像数据,其数据量仍然巨大,这就对计算机处理速度、传输介质、传输方法和存储介质提出较高要求。因此,数据压缩作为数据图像处理的关键技术之一,对研究图像压缩编码技术具有重要价值。
嵌入式微处理器中,DSP具有灵活、高速、便于嵌入式应用等优点,特别适合复杂算法处理的应用。数字视频图像压缩系统利用DSP作为其嵌入式平台,充分发挥其性能优势,较好地提高编码效率,满足图像实时处理需要。因此,这里介绍一种基于TMS320VC5509A型DSP的视频压缩系统。
2 静止图像的压缩编码标准JPEG
JPEG(Joint Photographic Experts Group)是由国际标准化组织(ISO)提出面向静止图像编码的标准,其处理方法依次使用离散余弦变换、量化、Z行扫描、游程编码和不变字长编码。JPEG算法定义了以下4种运行模式:
(1)基于DCT顺序型模式按照从左到右、从上到下的顺序对图像进行扫描和编码,称为基本系统。
(2)基于DCT递增模式 按照从粗到细的顺序对一幅图像进行编码,适用于传输时间长、用户喜欢图像从粗糙到清晰的场合。
(3)无失真编码模式保证重建图像与原始图像完全相同。
(4)分层编码 采用各种分辨率对图像进行编码。
该系统采用基本系统模式。图1是JPEG的编码框图。
3 硬件系统设计
该视频压缩系统直接与PAL制摄像头的输出端相连,来采集、预处理和压缩现场图像,再以USB或RS232方式将处理后的图像数据传给上位机。图2为视频压缩系统硬件结构图。
该系统硬件设计以TI公司的TMS320VC5509A型数字信号处理器为核心,包括视频采集电路、FPGA预处理电路、存储器扩展、系统电源和看门狗电路等。系统中TMS320VC5509A为中央处理器;SDRAM为DSP外扩数据存储器;Flash为程序存储器,用于系统上电自举;模拟摄像头与视频 A/D转换器负责视频图像采集;FPGA用于地址译码、隔行运算,控制两片SRAM用于缓存视频A/D转换器转换后的数字图像。从系统设计成本考虑,这里选用Altera公司的可编程逻辑器件EPIC6Q240C8型FPGA。该器件是Cyclone系列器件中一款非BGA封装的可用I/O引脚最多的 FPGA。[!--empirenews.page--]
3.1 视频采集电路
该系统选用的视频解码器为Philip公司的高性能视频A/D转换器SAA7111。该器件是一款广泛应用于桌面视频、多媒体、数字电视、图像处理、视频电话的高性能视频输入处理器件。该器件采用3.3 V的CMOS电路,高度集成模拟前端和数字视频编码器;包括2路模拟视频处理通道,1个时钟产生电路,1个自动箝位和自动增益控制电路,1个多制式数字解码器,1个亮度/对比度/饱和度控制电路,以及色彩空间矩阵。SAA7111输出为16位VPO总线,支持不同位宽的数据输出格式。SAA7111支持的输出格式包括:12位YUV411,16位YUV4:2:2,8位CCIR-656、16位565RGB以及24位的888RGB。图3为视频采集电路。
3.2 存储器选型
选择存储器应从以下方面考虑:首先图像压缩算法中间数据量大,要求处理器的片上内存尽可能大,尽量避免对外部存储器读写操作。VC5509A的片上存储器包括32 Kx16位DARAM,96 Kx16位SARAM,共128 K位的存储空间。其中DARAM为双地址,在每个周期内可以对其进行两次操作(2次读,两次写,一次读和一次写),这样大大增加片上存储器的利用率;其次,VC5509A片上资源丰富,包括I2C总线(多主从接口),3个McBSPs(1个与多媒体卡/数字加密卡MMC/SD串行接口复用引脚)。利用 FC总线对SAA7111的片内控制寄存器进行读写操作,非常方便实时控制SAA711 1的工作状态;利用McBSP配合DMA,软件编程实现UART功能,无需专门的硬件UART,从而节省电路板空间:VC5509A采用144引脚 LQFP封装,便于安装、调试;VC5509A功耗小,工作在200 MHz主频下,功耗仅100 mW,非常适合嵌入式应用。
3.3 DSP供电电源电路
DSP基本系统由独立的电源系统供电,而硬件平台的其他器件共用另一套电源供电系统。为了降低系统功耗,DSP一般采用低电压供电.并且采用I/O和 CPU内核分开供电方式。VC5509A不同的工作频率要求不同的核电压,200 MHz为1.6 V,144 MHz为1.35 V,108 MHz为1.2 V。DSP的I/O电压为3.3 V。
DSP供电电源电路如图4所示。选用TI公司的两款LDO电源器件TPS76801和TPS75833分别为DSP提供内核电压和I/O电压。[!--empirenews.page--]
TPS76801能给CPU内核提供最大1 A的电流,电压在1.2~3 V范围内可调。
调整TPS76801的输入电阻值得到1.6 V,1.35 V,1.2 V的核电压,DSP相应工作在200 MHz,144 MHz,108 MHz的频率下。而TPS75833能提供最高3 A的I/O电流,对于低功耗的TMS320VC5509A,这已足够保证其工作在最大负荷状态。
4 系统软件设计
该系统软件设计的主要功能是实时采样现场的视频信号,然后对网像数据编码压缩并通过USB总线或RS232串口将图像数据传送给主机。系统主程序流程如图5所示,该系统软件设计可分为系统初始化、图像采集、压缩编码和数据传输4个主要模块。
系统上电后,DSP首先初始化,初始化主要包括:通过I2C总线初始化SAA7111,设置其工作模式;空间分配,EMIF的配置以保证外部存储器的正常访问;配置USB模块;设定DMA通道以及设定外部中断。然后DSP等待FPGA的中断。当DSP接收到FPGA的中断后,DSP设定标志寄存器,启动 DMA读取数据,并进行编码。当编码结束后,DSP把数据交付USB模块,通过USB总线传送至上位机,同时DSP向FPGA发送空闲信号,通知FPGA 继续发送下一帧。
5 JPEG优化
JPEG算法在DSP上实现需要解决编码速度问题。片上内存资源的有限性使得大部分的程序代码和数据不得不放在片外,大量的图像数据在慢速的SDRAM存储器中,对其访问和算术运算是影响系统性能的关键因素之一。因此,应从内存分配和代码优化两个方面来优化程序,提高编码效率。
5.1 数据内存优化
由于VC5509A的片上存储器包括32 Kx16位DARAM,96 Kx16位SARAM,共128 K位的存储空间。其中DARAM为双访问内存,即在一个周期内可完成两次数据访问,SARAM为单访问内存,即在一个周期内只能完成一次数据访问,片外内存为扩展的SDRAM,访问其需要额外的等待时间,执行效率比较低。因此在算法设计中应合理安排内存分配,尽量将访问频繁的程序代码和数据放在片内内存中,特别是DARAM中,可以提高编码效率。[!--empirenews.page--]
5.2 C代码优化
在JPEG的编码中,根据VC5509A结构特点及结合图像数据量大的特点,提高编码效率,考虑程序编写和优化如下:
(1)利用编译器优化,开启编译器的优化选项,包括基本优化、文件级优化和程序级优化。
(2)使用本征(intrinsics)函数,C55x提供了一种特殊函数一本征函数,可迅速优化C代码。本征甬数前有个下划线“一”,调用方法和普通函数相同。
(3)使用图像库,TI提供基于C55x的图像库IMGLIB,库中都是图像处理常用的函数,而且可以用C语言调用,汇编优化好,执行效率高,因此尽量用库函数。在JPEG编码中比较关键的是DCT变换可调用库函数中的IMG_sw_fdct_8x8(short*fdct_data,short, *inter_buffer),该函数完成一次DCT变换需用1 078个时钟周期。大大提高JPEG的编码效率。
(4)高效使用MAC硬件,C55x有专门的硬件高效执行MAC运算。一个周期中可以执行一个单乘加或一个双乘加(dual-MAC)运算。
(5)使用特殊数据类型(register类型、volatile类型、const类型),对于需要多次重复访问的变量,如for循环中的变量值,一般可设置为register型变量。声明变量为register型能提高效率,但必须小心使用。在某些编译器中,优化器会自动分配一些变量为register 型。
(6)减少判断循环,在使用判断方式选取控制语句时应尽量减少判断转移。DSP多采用流水线结构。由于TMS320C55X采用7级流水线结构,频繁的转移指令使得流水线难以发挥作用。
另外。DSP的大多数指令为单周期指令,但转移类指令却通常要耗费较多的机器周期。因此,应尽可能减少程序中的转移分支,以提高程序的效率。
6 实验结果
6.1 压缩效果实验结果
通过改变量化因子Q,改变图像的压缩比。压缩比越大,压缩过程中的视觉损失越大,压缩后的图片越不清晰。图6为采用不同的量化因子Q的压缩前后效果比较图。其中,图6a为未压缩,大小57.4 KB的原始BMP图像,图6b为压缩后大小为5.18 KB的图像,图6c为压缩后大小5.18 KB的图像。由图知,压缩后的图像与原始图像在视觉效果上相差不大。当Q=50时,压缩后图像所需存储空间仅为原图像的1/14。
6.2 压缩耗时实验结果
对于一个8x8数据块,各步耗时如下:分块:1.335μs;DCT变换:5. 39μs;量化:1.355μs;哈夫曼编码:3.375μs。说明一个8x8数据块总耗时为11.455μs,一帧720x576灰度图像的压缩总耗时为90x72x11.455=74 228.4μs,再加上其他辅助操作,实际耗时约75 ms。根据上述结果,在1 s内向上位机发送13帧720x576的灰度图像,基本满足系统要求。
7 结束语
介绍基于TMS320VC5509A DSP的JPEG视频压缩系统的设计和实现方案,该系统硬件设计采用DSP+FPGA的方案,充分发挥了各自优势;而软件设计针对C55x的结构进行程序结构和算法优化,经过验证达到较好的实时效果。由于该系统体积小、功耗低,适用于一些野外图像采集、远程视频监控等需要连续传输图像的场合。