网络视频技术是随着视频图像、语音等多媒体信息数字处理技术与数字通信技术的飞速发展应运而生的。网络视频系统将传统摄像机和PC的功能整合到了一起,不仅将能模拟视频信号数字化并压缩,还带有一个网络接口,在网络上拥有一个IP地址。视频经由网络交换机,通过IP网络传输,并可在装有视频管理软件的标准PC上显示和存储。网络视频系统可选择高分辨率摄像机(数百万像素),具有稳定的图像质量和传输速率,现在已在各种嵌入式视频会议系统,可视电话及各种分布式实时监控系统中得到越来越广泛的应用。文中实现了一种基于TI公司推出的一款针对多媒体处理领域应用的DSP,TMS320DM642的网络视频系统的设计方案。
1 网络视频节点硬件设计
系统视频节点的硬件结构如图1所示,由CCD摄像头输入的视频信号首先通过视频编码器SAA7115H进行数字化处理,所得数字视频信号经过视频端口(VP0)的内部FIFO缓冲后,由DM642通过EDMA将数据传送到片外SDRAM中,以便供视频应用程序使用。视频应用程序对图像进行相应处理(如增强、编码)之后由以太网控制器进行网络传输任务。
系统核心TMS320DM642是个强大的多媒体处理器,也是构成多媒体通信系统的良好平台。为了满足视频和图像处理的需要,它采用了Velo ciTI体系结构,主频600 MHz,8个并行运算单元,处理能力达4 800 MIPS,L1PCache和L1DCache分别为16 kB,工作在CPU全速访问状态,二级缓存256 kB。DM642采用高级超长指令字结构和硬件流水机制,使其在一个指令周期能够并行处理多条指令,从而加速了处理速度。这使得构建小型实时化的视频实时处理系统成为可能。DM642外设中有3个可配置的视频接口,可以和视频输入、输出或传输流无缝连接;同时还带有10/100 Mbs自适应以太网接口,提供DSP核与网络之间的高效连接;丰富的外围接口使其近乎是一个多媒体嵌入式系统的单芯片硬件平台。DM642的完全可编程性,又可以使其能够兼容正在发展的各种多媒体信号处理标准,构成通用的软件平台,因此得到越来越广泛的应用。
2 网络视频节点软件设计
2.1 整体流程
TI公司的DSP开发软件包括集成开发环境(CCS)、实时操作系统(DSP/BIOS)、第三方算法库标准(eXpressDSP)。本系统中调用TI提供的JPEG算法库。
如图2所示,整体流程可分为3个模块:图像的输入任务、处理任务和网络传输任务。输入任务获得获取摄像头捕获的模拟视频信号,并经过两次采样后,将得到的数字图像帧数据通过同步通讯(Synchronized COMmunication,SCOM)由输入任务进入到处理模块。处理模块完成图像帧的压缩编码。编码结束以后,会产生JPEG格式的图像文件。该压缩图像由SCOM传递到最后一个模块一网络传输模块。网络任务生成一个该JPEG图像的HTML文件,传输到终端计算机后,可在计算机的网页浏览器上观看到图像。图像帧在几个任务模块之间的传递都是通过指针实现的
2.2 图像的获取及视频端口驱动
本系统中,原始图像帧是由摄像机获取的,编码后进入DM642的视频端口(VP)。对于DM642的VP口,TI提供了一个两层设备驱动模型:类/微驱动模型(Class/Mini Driver),其中Class Driver(上层驱动)用于连接应用程序和下层驱动,Mini Driver(下层驱动)靠近底层硬件。在此基础上,应用程序可以复用绝大部分相似设备的驱动程序,从而提高驱动程序的开发效率。根据VP口的特点,Class Driver又可分为FVIDCl ass Driver和GIO Class Driver,FVID Class Driver更接近应用程序,提供一些特别适用于图像的API函数,而GIO ClassDriver则提供与Mini Driver进行通信的API函数。在视频采集过程中,使用硬件中断对视频数据进行控制和传输,在中断服务程序中,根据视频端口内部FIFO的状态通过EDMA完成视频数据的读入。
系统用于编码支持的视频标准有PAL、NTSC和SECAM制式。PHILIPS的图像解码芯片SAA7115支持6路复合模拟视频或3路S端子信号输入,支持多种格式的数字RGB和YUV视频信号输出。输入的模拟视频信号经过SAA7115H采样后转化为YUV 4:2:2格式的数字视频,分辨率为720x480(可根据需要进行设置,DM642通过I2C总线对SAA7115H进行参数设定)。这是第一次采样过程。为了方便调用TI提供的JPEG算法库,还要对图像信号进行二次采样,将其转换为YUV 4:2:0格式。转换完成以后,将指向所得图像在内存区位置的指针通过SCOM消息传递给下一个任务,即编码。
2.3 图像的压缩编码
原始图像的数据量非常大,而网络传输的带宽有限,为了提高图像的传输速率,有必要对原始图像进行压缩编码处理。这一模块就是要将YUV 4:2:0格式的图像压缩成JPEG格式的图像。JPEG是一种被大量应用程序支持且非常流行的静态图像压缩标准,用户可以直接通过标准网页浏览器解压并查看JPEG格式的图像。在NTSC模式下(每秒30帧图像),把每一秒中连续的图像看作是独立的30帧静态图,作为动态JPEG(MJPEG)来进行编码。用户可自定义JPEG压缩的压缩级别,这将决定图像的压缩程度,并会直接决定所产生图像的质量。JPEG编码流程如图3所示。
Data reformat:将原始扫描图像分割成一系列8x8大小的图像块,同时这个步骤还将象素的灰度进行平移,动态范围由(0~255)转化为(-127~128),以消除信号偏移量的影响。
DCT:对上一步得到的每个8x8图像块进行2D离散余弦变换,并输出其频谱。由于DCT是一种可分离变化,因此可把它作为两次8点1D离散余弦变换来实现。
DC encode:对离散余弦变换后得到的直流分量(DC)系数进行量化和Huffman编码(变长编码)。
Quantization and RLE:对非零交流分量(AC)系数进行量化,并对其进行行程长度编码。
AC VLC:对上一步的输出结果再进行变长编码,并且构造图像的熵编码块。
Byte stuff:在JPEG标准中,一个或多个控制码以后面的0xFF来标记。在字节0xFF后面加上0x00则表示该0xFF是数据的一部分而非控制字。Byte stuff给熵编码块里的所有OxFF的后面插入0x00。
编码过程中包含了一系列的数据处理和传输操作。在对图像进行JPEG编码时,调用编码控制函数jpgenc_ti(),这个函数包含了编码所需要的全部功能函数,声明如下:
编码过程结束以后,通过SCOM消息通过指针将JPEG文件传递到下一个模块,即网络传输。
2.4 网络传输
对于以太网口,TI提供了DSP上网络应用程序开发平台(NDK),它的核心是一系列TCP/IP协议栈库。在此平台上,开发网络应用程序时就不需要过多考虑TCP/IP协议内部的工作机制,使得开发过程大大简化。
网络环境是通过网络初始化来启动的。初始化程序可参照TI提供的TMS320C6000TCP/IP网络开发工具包。网络任务一旦初始化成功以后,会创建发送(TX)任务,并开始等待由上一级模块传递过来的SCOM消息。得到传递过来的JPEG图像以后,任务执行后产生一个基于RAM的IMAGEn.jpg文件,该文件可以被HTTP服务器所识别,n的值是由图像捕获的通道来确定的。完成这些工作以后,发送一个SCOM消息到上一级任务,表示已准备好接收下一幅JPEG图像。下一步则进行协议栈的初始化,包括IP地址、子网掩码和网关的设定。当网络连接有效时,TX任务将JPEG文件发送到网络节点。
DM642支持Telnet、HTTP、Data server等服务。本设计中使用HTTP服务,并且在局域网内进行配置。如果要连接Internet,则必须设置DHCP,动态分配IP地址。在局域网内调试网络配置时,设定本系统IP为192.168.1.2,其他设置如下:
3 实验应用
用网线连接系统和PC,设置PC的IP地址为192.168.1.1。启动Internet Explorer,在地址栏输入192.168.1.2后,网页里显示从摄像头里摄取的图像,并以30帧/秒的速率更新,起到实时传输的效果,如图4所示。
可以在HTML网页上对JPEG压缩性能的控制。在网页中输入用户自定义参数,通过DSP/BIOS中的邮箱机制传递给处理任务模块来修改JPEG的压缩参数,改变压缩质量,如图5所示。
图像质量与用户设定的JPEG压缩参数Q有关,Q越大图像越清晰,如图6所示。
4 结束语
文中实现了一种基于DM642平台的网络视频系统。可以预见,随着数字信息处理技术和网络技术的发展,网络视频系统将得到越来越广泛得应用。未来的应用必然要求网络视频系统设计满足以下几个条件:远程访问能力,高度的灵活性和可扩展性,经济实用以及分布式智能。文中提出的基于DSP的网绍视频系统,在现有的带宽条件下能够流畅、清晰、稳定地传输图像,如果在DSP视频应用程序中加入相应的功能,如监控中的动态目标检测等,就可实现智能监控,具有广泛的应用前景。