无人机具有体积小、重量轻、灵活机动、成本低等特点,可以用于对地侦察拍照,还可以广泛应用于军事侦察、地质勘探以及对火灾等危险区域的勘察预报等,因而在无人机上构建一个网络视频系统就显得十分重要。本文以基于PC104的无人机为基础,构建一个网络视频系统,其中,无人机视频数据的采集、压缩、解压缩、传输都是无人机网络视频系统中的关键技术,本文将针对这几部分的关键问题进行研究。
1 系统结构及工作原理
该系统的下位机主要由深圳桑达公司的PC104工控机、罗技快看太空版MP摄像头(USB接口)、linksysWRT54GC-CN无线路由器及外围电路组成,采用嵌入式Linux 2.4.26操作系统,主要负责视频数据的采集,压缩及将数据发送到上位机。上位机是包含有无线网卡的PC电脑,主要负责视频数据的接收、解压和显示,上下位机通过UDP/IP网络协议进行数据的传输,采用socket网络编程可以实现网络的互联及数据的收发。
PC104工控机采用嵌人式专用CPU PⅢ533~933 MHz,板载DDR内存高达128
MB,提供2个RS 232串行接口,2个USB接口,1个并行口,软盘驱动器接口,IDE硬盘驱动器,10/100 Base-TX Ethernet接口,CRT/LCD显示器接口和固态盘插座,支持DiskOnChip 8~288 MB。PC104工控机的操作和使用与PC机相同,安装系统硬件后,即可开机进行BIOS设置,输入电压必须为+5 V,其波动范围不超过5%。
2 视频数据采集的软件实现
Video4Linux(V4L)是嵌入式Linux下视频设备的内核驱动,他为Linux下的视频设备提供了一系列的接口函数,在编译和配置内核阶段,必须增加V4L模块和USB摄像头驱动模块的支持。对于USB接口摄像头,其驱动程序中需要提供基本的I/O操作函数open,read,write,close的实现,对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl的实现等,并把他们定义在struct file operations中。这样当应用程序对设备文件进行诸如open等系统调用操作时,Linux内核将通过fileoperations结构访问驱动程序提供的函数。在系统平台上对USB摄像头进行驱动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可正常工作了。
在USB摄像头被驱动后,再利用Video4Linux支持的几个视频采集相关的数据结构进行编程,就可以实现视频数据的采集。图1是嵌入式Linux下视频数据采集的流程:
使用ioctl(devfd,VIDIOCSYNC,&vid_mmap)函数判断一帧图像是否截取完毕,成功返回表示截取完毕,之后就可把图像数据保存成文件的形式。为了得到连续帧视频图像,可在单帧的基础上,利用vid_buf.frames值确定采集完摄像头帧缓冲区帧数据进行循环的次数。在循环语句中,也是使用VIDIOCMCAPTURE ioctl和VIDIOCSYNC ioct1函数完成每帧截取,但要给采集到的每帧图像赋地址,利用语句buf=map+vid_buf.off-sets[frame],然后保存成文件的形式。
3 视频数据压缩原理
无人机系统的下位机要求实时传输视频数据到上位机,由于视频数据量较大且网络带宽非常宝贵,对视频数据选用一种高压缩比的文件格式显得十分重要。JPEG是联合图像专家组(Joint Picture Expert Group)的英文缩写,是国际标准化组织(ISO)和CCITT联合制定的静态图像的压缩编码标准。和相同图像质量的其他常用文件格式(如GIF,TIFF,PCX)相比,JPEG是目前静态图像中压缩比最高的,而图像质量却差不多。正是由于JPEG的高压缩比,使得他广泛地应用于多媒体和网络编程中。
JPEG-专家组开发了两种基本的压缩算法,一种是采用以离散余弦变换(Discrete Cosine Transform,DCT)为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。使用有损压缩算法时,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家难于找出他们之间的区别,因此得到了广泛的应用。JPEG压缩是有损压缩,他利用了人的视角系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG算法框图如图2所示。
压缩编码大致分成3个步骤:
(1) 通过DCT去除数据冗余。DCT是影像压缩的重要步骤,他通过正交变换将图像由空间域转换为频率域。对于N×N维的数据,经变换以后仍然得到N×N的数据,虽然DCT变换本身并不对影像进行压缩,但变换消除了N×N维数据之间的冗余性。DCT变换是压缩过程中量化和编码的基础。
(2) 使用量化表对DCT系数进行量化。量化表是一个量化系数矩阵,通过量化可以降低整数的精度,减少整数存储所需的位数。量化过程除掉了一些高频分量,损失了高频分量上的细节。由于人类视觉系统对高空间频率远没有低频敏感,经过量化处理的图像从视觉效果来看损失很小。由于低空间频率中包含大量的影像信息,经过量化处理后,在高空间频率段,出现大量连续的零,这有利于以后通过编码减小数据量。
(3) 对量化后的DCT系数进行编码使其熵达到最小。遥感图像数据经过DCT和量化之后,在高频率段会出现大量连续的零,采用Huffman可变字长编码,可使冗余量达到最小。
译码或者叫做解压缩的过程与压缩编码过程正好相反。根据上述JPEG数据压缩解压原理,在C编译器和集成开发环境(Code Composer Studio,CCS)中开发实现了图像压缩解压程序,便可应用于无人机视频数据的处理中。视频数据压缩处理程序的接口如下:
4 网络传输协议及socket编程
根据OSI网络标准定义,网络由物理层、数据链路层、网络层、传输层、会话层、表示层和应用层7层组成。而在实际应用中,网络结构可采用链路层、网络层、传输层和应用层4层模型。
在TCP/IP协议组中,IP协议是网络层协议。TCP协议是一种面向连接的协议,他能够提供可靠的、全双工的网络通信服务,具有确认、数据流控制、多路复用和数据同步等功能,适合高质量数据的传输,是目前应用最为广泛的网络传输协议之一。但是,由于TCP协议实现复杂,网络开销大,以及其提供的确认与超时重传机制都给数据传输带来很大的时延。因此TCP协议不适合传输实时视频数据和突发性的大量数据。
UDP协议是无连接协议,报文交换机理简单,不存在多重确认机制,从而减少了因建立连接和撤除连接所需要的巨大开销。每个分组都携带完整的目的地址,在各分组系统中独立传送,他不保证分组的先后顺序,不进行分组出错的恢复与重传,因此无法保证传输的可靠性和服务质量。但是相对于TCP协议,UDP协议减少了确认、同步等操作,节省了很大的网络开销。他能够提供高传输效率的数据报服务,能够实现数据的实时性传输,在数据的实时传输中应用广泛。为了保证无人机视频数据传输的实时性,采用IP协议和UDP协议作为系统的通信协议。
系统中网络传输部分的软件实现采用socket(套接口)编程技术,系统调用socket()函数,返回一个整型的socket描述符,视频数据传输便是通过该socket函数实现的。常用的socket类型对应于传输协议也有两种:流式socket和数据报式socket。前者使用TCP协议,后者使用UDP协议,本系统中采用的是数据报式socket。以下是下位机socket编程的主要实现:
由上位机的无线网卡负责接收下位机的视频数据,并根据JPEG图像的解压原理对视频数据进行解压缩并显示。图3,图4可以看到从下位机采集到视频数据并通过处理之后发到上位机然后显示出来的效果。
5 结 语
本文主要介绍了一种基于PC104无人机的视频系统构建方法和流程,以PC104工控机为主要硬件平台,完成了对摄像头视频数据的采集、压缩、传输等过程的详细介绍和软件设计,采用网络UDP/IP网络传输协议和socket编程传输视频数据,保证了一定程度上的实时性,可以满足无人机地质勘探、火灾侦察等领域的应用。