第28卷第6期 2013年12月 成都信息工程学院学报 Vo1.28NO 6 Dec.2013 JOURNAL OF CHENGDU UNIVERSITY OF INFoRMATION TECHN0U Y 文章编号:1671.1742(2013)06.0604—07 单向传输设备中屏幕图像实时传输的研究 黄赞赞, 林宏刚 (成都信息工程学院网络工程学院,四川成都610225) 摘要:为满足涉密计算机用户对外网图文信息的实时接收、查看和监控等需求,设计并实现一种用于单向传输 设备的屏幕图像实时传输系统。该系统采用镜像驱动方式快速、高效地获取屏幕图像;设计适合单向传输设备的 屏幕图像实时传输协议用于在无反馈的情况下数据包能够实时传输到接收端;并通过发送相邻2张图像的异或数 据减少系统所占带宽;以及每发送一定异或图像数据后发送一张完整图像的方法,解决传输过程中的丢包而导致 接收图像错乱的问题。通过测试表明,该系统在低CPU使用率,低带宽占用率的情况下能够提供良好的实时图像 传输服务,满足单向传输设备中屏幕图像实时传输的要求。 关键词:图像获取;图像传输;图像压缩;单向传输;镜像驱动 文献标志码:A 中图分类号:TP393.0 0 引言 随着网络技术的蓬勃发展,交互式网上教学、远程网上监控、远程医疗、视频电话等得到广泛的应用。这些应 用中,需要用到图像实时传输技术l1 J。传统的具有反馈信息的图像传输系统_3 J主要包括3部分:图像获取、 图像压缩和图像传输。图像获取多采用GDI、Direct X或Hook API等方式,但速度慢,且耗费系统资源。图像压 缩通常基于分块或异或后的图像数据l引,这样能较好地减少数据的传输量,降低带宽占用率。图像传输一般使 用TCP、UDP或RTP协议作为传输协议。由于TCP协议需要频繁的交互,耗费时间长,延迟较大,因此不能满 足图像传输的实时性要求。UDP协议能较快的传输数据,但无法处理网络拥塞等情况引起的数据丢包。RTP (实时传输协议)[ ]与RTCP(实时传输控制协议)配合使用,通过RTCP必要的信息反馈,并基于UDP协议进行 数据传输_8 j,能够提供良好的实时图像传输服务。 在单向传输设备中[ ,为了保护涉密计算机用户数据的安全性,数据只能由外网计算机传输到涉密计算 机,禁止任何数据由涉密计算机发送到外网计算机,因此,具有信息反馈的图像传输系统无法应用于单向传输设 备中。为了克服在单向传输设备中由于没有反馈而导致不能对丢失的数据包进行补发的情况,通过高效的屏幕 图像获取方法,较合理的屏幕图像处理方式,以及采用适合单向传输设备的传输协议传送数据,尽量保证实时屏 幕图像的完整性、可视化性,减少或避免屏幕图像在显示过程中出现抖动或者较长时延情况的发生,能够较好的 满足在单向传输系统中涉密计算机用户的应用需求。 1思路及原理 在单向传输设备中,由于涉密计算机需要通过单向传输设备获取外网计算机提供的例如电子邮件、文件传 输、数据转发等应用服务,因此实时屏幕图像传输应用需要自身在能够提供给单向传输用户良好服务的同时,不 应影响该系统中的其他应用程序正常提供服务。为了不影响其他应用程序提供服务,该实时屏幕图像传输系统 应满足如下条件:低CPU使用率,低带宽占用率,尽量避免时延、抖动和花屏现象的发生,保证屏幕图像较好的实 时显示效果,能有效的降低原始屏幕图像数据大小等。 1.1屏幕图像的获取 在屏幕图像传输前,首先要获取屏幕图像。获取屏幕图像_l2]的方式大致分为2类:一类是通过应用层获取 收稿日期:2013—07,19 基金项目:四川省科技支撑计划资助项目(2012FZ0016) 第6期 黄赞赞等:单向传输设备中屏幕图像实时传输的研究 605 图像;另一类则是通过驱动层获取图像。常用的几种屏幕图像获取方法,如表1所示。 由表1可知,通过应用层获取屏幕图像的方式有GDI、Direct X和Hook API3种,由于该方式在获取屏幕图 像数据时要反复的在内核模式和用户模式间来回进行交互转换,所以获取速度较慢,CPU占用率较高,整体效果 不理想;而通过驱动层的镜像驱动l”_14j(Mirror Driver)方式获取图像,由于直接与底层交互,没有反复的内核模 式和用户模式间的交互转换,节约了时间,所以获取屏幕图像的速度较快、CPU占用率较低、整体效果较应用层 获取屏幕图像的3种方式要好。因此,系统采用通过驱动层的镜像驱动的方式获取屏幕图像。 表1各种屏幕图像获取方法比较 1.2屏幕图像压缩 由于屏幕图像数据较大,如果不经过处理就进行传输,那么对计算机系统和网络带宽而言都是一个巨大的挑 战。因此,在屏幕图像传输前,需要对图像进行必要的压缩处理。系统采用Huffman编码[15]进行图像压缩,是一 种无损压缩算法。Huffman编码于1952年被提出至今,并常用于数据的压缩,同时对于数字图像的压缩也得到 广泛的应用。Huffman编码属于可变字长编码中的一种,该编码通过字符出现的频率构造相异字头的码子,且使 相异字头码子平均长度最短。Huffman编码的关键是构造Huffman树,对所有字符进行统计、记录,根据每个字 符出现次数的多少建立Huffman树。接着进行编码,出现次数较多的字符码子较短,相反码子则长。这样就可 以有效地压缩文件的大小。 以一个由7种字母组成的长度为21的字符串“aabagdaafgdbhadaddbsb”的编码过程简述Huffman的编码原 理。首先对字符串各个字符出现的次数进行统计,而后建立Huffman树,最终得到各个字符的编码结果。如表2 所示,出现次数较多的字符‘a’其码子为2位,而出现次数较少的字符‘f’其码子长度为5位,因此该字符串的编 码长度为52,需要7个字节。如果字符串“aabagdaafgdbhadaddbsb”不进行编码,则需要21个字节。由此可知, Huffman编码能有效地压缩该字符串的大小。 表2字符出现频率统计 屏幕图像由许多像素点构成,每一个像素点对应于一种颜色,从而构成可视化较好的屏幕图像。而图像中存 在着大量的属于同一种颜色的像素点,因此采用Huffman编码能有效地对屏幕图像进行压缩。对于系统,需要 对2种屏幕图像数据进行压缩:一种是对整张图像数据进行压缩;另一种是对当前图像与前一张图像的异或部分 数据进行压缩。通过对屏幕图像的压缩,可以明显地降低图片的尺寸,并且也大大减小实时图像的传输对带宽的 占用率。 1.3单向屏幕图像实时传输协议 在单向传输设备中,由于数据在传输过程中不能有任何信息的反馈,所以无法对丢包进行重发,从而也产生 2个问题:一个问题是,图像数据包的丢失或因超时到达而不可用;另一个问题是,由于屏幕图像前后间有着密切 的关联关系,如果前一张图像数据的不完整,会影响到后续屏幕图像数据的完整性,最终导致屏幕图像质量下降, 606 成都信息工程学院学报 第28卷 可视化效果减弱,甚至不可视等问题。因此,为了保障图像正常的实时显示和良好的可视化效果,需要设计实现 种适合单向传输设备的单向屏幕图像实时传输协议。该协议基于UDP协议,通过对屏幕图像数据包的封装, 控制数据包尽可能的安全到达,并对因出现丢包而引起可视化效果差的情况进行弥补等措施,以保障屏幕图像的 一实时、安全、有效的传输,并获得良好的可视化效果。 图像的发送和接收以数据包为单位,对于每个数据包而言,是否能够安全到达关系到整张屏幕图像数据的完 整性。因此,每个数据包采用单向屏幕图像传输协议进行封装,封装后的数据包由数据包包头和图像数据两部分 组成。 如下数据结构为封装好的数据包结构,由数据包协议包头VideoHeader和图像数据Buffer[MAXDATA— SIZE]两部分组成,其中MAXDATASIZE为数据包中图像数据的大小。 typedef struct VIDEODATA{ VIDEOFIEADER VideoHeader; char Buffer[f、,IAxDATASIzE]; }VideoData; 如下数据结构为数据包协议包头部分:在协议包头中,如果IsType置1则PackLength表示为待发数据的大 小,如果IsType置2则表示为待发图像数据,PackLength表示为后续数据长度;temp[2]为保留;如果IsCompress 置0则表示为异或图像,置1则表示为原始图像;FrameNum表示为图像序号数,代表当前图像为第几张图像; Num表示当前图像中数据包的序号数。 typedef struct VIDEOHEADER{ unsigned char IsType; char unsigned char tempi2]; IsCompress; unsigned long int FrameNum; unsignedint Num; unsigned int PackLength; }VideoHeader; 通过该协议,服务器端和客户端能很好的完成发送和接收屏幕图像数据,并能够实现良好的实时显示效果。 2系统设计与实现 系统主要由4个模块组成,分别是屏幕图像获取模块、屏幕图像压 缩模块、屏幕图像传输模块和屏幕图像显示模块。该系统基于C/S架构 设计,服务器端把经过处理的屏幕图像数据通过基于UDP协议的单向 实时屏幕图像传输协议发送到客户端,客户端实时接收并显示每张图 像。在系统运行时,由于客户端无法向服务器端发送实时屏幕图像应用 的请求,因此需要首先启动客户端等待实时屏幕图像数据,然后再启动 服务器端开始发送屏幕图像数据。 2.1服务器端设计 服务器端主要包括屏幕图像获取模块、屏幕图像压缩模块和屏幕图 像传输模块,其系统流程图如图1所示。其采用镜像驱动(Mirror Driv— er)的方式来获取图像,该方式能够在低CPU占用率的情况下快速、高 图1服务器端流程图 效地获取整张屏幕图像,然后通过进行必要的屏幕图像数据处理和压 缩,最后通过实时屏幕图像传输协议把图像数据不断的发送到客户端。 2.1.1屏幕图像获取模块 在对屏幕图像进行处理和压缩前,首先要获取图像。采用镜像驱动的方式获取图像,系统结构如图2所示。 第6期 黄赞赞等:单向传输设备中屏幕图像实时传输的研究 607 该镜像驱动是基于微软的驱动程序软件开发包(DDK)开发。 目前,是众多获取屏幕图像方式中速度较快,且耗 费CPU资源较少的一种。 镜像驱动安装完成以后,可以通过图形引擎GDI感 知任何如鼠标或文本编辑的微小移动,并能快速产生相 应的绘图命令。该绘图命令将通过DDI调用发送给显卡 驱动。如果显卡驱动能够通过硬件促使绘图命令的执 行,那么将执行命令,并且在屏幕上生成图像。否则,显 卡驱动可以通过对应的GDI EngXxx的仿真调用调用 用户模式 (包含誓廛 )IGD用I3程2 J fJ发送端 内核模式 号f掌 I 虚拟桌面 l’I 镜像驱动 —-_T——广——T一 .压缩处理 GDI引擎的绘图命令,从而通过GDI引擎在屏幕上显示 图像。同时,所有由GDI引擎产生的绘图命令也发送给 镜像驱动。当镜像驱动接收到绘图命令后,将通过执行 这些命令绘制图像。因此,镜像驱动可以得到与当前计 算机屏幕图像相同的图像。为存储镜像驱动绘制的图 像,在系统中为其分配一块名字为绘图表面的内存存储 望塑堂旦lI 调用IEngl i lD调用lD1. i 视频微端口} r_L— I显卡驱动J 一I绷和 绘图表面 显卡适配器 图2镜像驱动方式获取屏幕图像 当前的屏幕图像数据。当操作系统开启镜像驱动时,需要调用镜像驱动中的一个初始化函数。该函数首先会检 测当前用户的设置,例如颜色深度,并且分配一个与当前配置相对应的分辨率和颜色深度的绘图表面。例如,如 果一个屏幕分辨率为1280*800像素,每像素颜色深度为32比特,那么需要分配的绘图表面的内存大小为 3.91MB。该绘图表面存储所有由镜像驱动生成的屏幕图像。 镜像驱动可以获取8位、16位和32位3种位深度的屏幕图像,且不同位深度的图像尺寸相差较大,例如一 张分辨率为1280*800像素的屏幕图像,在位深度分别为8、16和32位的情况下,BMP格式的屏幕图像的大小 分别为0.98MB、1.95MB和3.91MB。可以看出位深度越大图像尺寸也就越大。由于位深度为16位和位深度 为32位的屏幕图像的尺寸相差近1倍,而16位深度的屏幕图像同样有较好的可视效果,且减小带宽的占用率, 因此选择通过镜像驱动的方式获取位深度为16的屏幕图像。 2.1.2屏幕图像压缩模块 在获取屏幕图像数据后,采用Huffman编码对屏幕图像数据进行压缩,该图像压缩模块有如图3所示的4部 分组成。屏幕图像数据包括2种类型:整张屏幕图像数据和前后2张图像的异或数据。通过结合这2种对数据 压缩的方法能很好地降低屏幕图像数据大小,以及降低屏幕图像数据对带宽的占用率。 文中获取屏幕图像的位深度为16,即是屏幕图像中每个像素的大小为2个字节,可以表示的颜色个数为 65536种。该像素的不透明度(英语:alpha)、红、绿、蓝采样值即存储在该2个字节中,由于很多情况下屏幕图像 中有较多像素对应于同一种颜色符号,因此有利于压缩图像的尺寸。屏幕图像压缩模块框如图2所示,如下为屏 幕图像的压缩过程。 (1)对屏幕图像数据进行扫描,统计图像数据中每个像素所对应的颜色符号(设颜色符号数量为 ),并记录 各个颜色符号出现的次数作为Huffman树的 个叶子节点的权值,用wl,w2,w3,…,例 表示。并对各个叶 子节点按照权值进行排序,新的排序结果为wi 1≤叫 2≤叫 3≤…≤wi 。 (2)使用wi1,wi2,wi3,…,win构建Huffman树。建树过程如下: 广——__J— 率统计l[字符概l l 构建 l l 编码 l l重新扫描 Huffman: ̄'[[HuffmanNI l并压缩 图3压缩模块 (i)把wil和wi2合并为一个新节点,其权值为wil+wi2, 且wil和wi2分别为新节点的左右孩子。 (ii)对砌 1+wi2,wi3,wi4…,win做从小到大的排序,生 成新的序列,并重复(i)过程。 (iii)通过反复执行(i)和(ii)过程,最终得到1个节点,该节点为Huffman树。 (3)对Huffman树中所有节点引出的左边标记为0,右边为1,然后记录从根节点到任何叶节点wi所经过的 边上的0、1标记,建立Huffman编码表。 (4)根据Huffman编码表,对屏幕图像中每个像素进行编码,最终实现屏幕图像的压缩。 2.1.3屏幕图像传输模块 608 成都信息工程学院学报 第28卷 该模块采用单向屏幕图像实时传输协议对服务器端数据的发送进行控制。如图1所示,图像数据分包后,使 用该协议对数据包进行封装,并在封装后把数据包立即发送到客户端。在数据包不停的发送过程中,需要记录当 前数据包属于哪一张图像,并判断该图像数据是否发送完毕,以及当前图像是第几张图像等。由于通过发送前后 2张图像的异或数据,在很大程度上降低图像处理对系统资源的消耗与传输数据对网络带宽的占用率,因此模块 采用发送异或图像的方法代替发送整张图像。但是在单向传输设备中,由于无反馈而导致不能对丢失的数据包 进行补发的情况,就会引起图像花屏,因此需要在每发送一定数目的异或图像数据后,发送一张完整的图像缓解 该问题。同时,设定一个阀值,在发送图像前需要判断连续发送异或图像的数目是否等于该阀值,如果等于则置 IsCompress为0,那么下一张图像则发送一张完整的图像,否则IsCompress仍为1,发送异或图像,并将此时的已 发送异或图像数目加1,如此循环发送异或图像和完整图像。在该模块中,设定发送异或图像的阀值为100,这样 每发送100张异或图像就需要发送一张完整的数据图像。 2.2客户端设计 客户端处理图像过程是服务器端的逆过程,主要负责接收图像数 据和显示图像。每接收完一张图像中的所有数据包后,再经过包解封 装、组装、解压、异或等操作,最终显示。详细客户端系统流程图如图4 所示。 客户端运行后会启动2个线程:一个线程接收屏幕图像数据;另一 个线程显示图像。接收线程启动后,为了能更好的接收图像数据,并为 显示线程做好屏幕图像数据准备,这里采用双缓冲技术。双缓冲技术 能够使客户端接收屏幕图像数据和显示屏幕图像工作并行执行。这样 不仅节省时间,而且能很好的提高屏幕图像的显示效果。由于图像数 据基于UDP传输,数据包可能会乱序到达,所以就需要根据数据包的 编号对其进行重新排序。 2系统测试 2.1测试环境 图4客户端流程图 实时屏幕图像传输系统运行在单向传输设备中,该系统中的连接 线路为千兆光纤。系统服务器端运行在外网计算机上,该计算机上安装有分辨率为1280*800的Windows XP 操作系统,其主要配置为Intel Core 2 T5800 2.0G处理器和2G内存。客户端运行在涉密计算机上,该计算机上 安装有分辨率为1440*900的Windows XP操作系统,主要配置为Intel Pentium E2180 2.0G处理器和2G内存。 2.2测试结果 表3网络带宽流量平均值 表3列出了在单向传输设备中实时屏幕图像传输系统中的4种常见操作在传输异或图像数据部分和完整图 像数据部分(包括异或和整张图像数据)的过程中所占用的网络带宽流量的平均值情况。该网络带宽流量平均值 通过如下过程完成: (1)在3分钟内,分别对这4种常见操作的网络带宽流量值随机进行60次抽样,并计算抽样数据的平均值。 ] ] ] ]]第6期 黄赞赞等:单向传输设备中屏幕图像实时传输的研究 609 (2)重复上述操作100次,并记录每次的平均值。 (3)分别对这100次的4种常见操作的抽样数据平均值再求平均。最终得到如表3所示的各个操作的网络 带宽流量平均值。 由表3中的测试结果可知:对于异或数据传输所占网络带宽的平均值而言,当用户进行文档编辑操作时,这 时前后2张屏幕图像改变区域较小,因此这2张图像的异或数据也会偏小,占用网络带宽就会相对偏低。当用户 进行网页浏览时,需要频繁的滚动网页,这样就增加前后2张图像的变化区域,使异或数据变大。当用户以全屏 方式浏览视频时,由于视频播放导致屏幕图像快速变化,因而使带宽流量大幅度增加,引起客户端的显示效果不 理想。当用户进行混合操作时,文档编辑、网页浏览和视频浏览(全屏方式)相互交替进行,带宽占用情况因视频 浏览引起的带宽流量大幅度增加而变大。对于完整数据传输而言,由于单向传输设备中又无法对丢失的屏幕图 像数据包进行补发,因此需要通过定时发送完整的一张屏幕图像进行弥补。因此,在表3中可以看到完整数据传 输的平均流量高于异或传输的平均流量,是由于定时向客户端发送一张完整的屏幕图像所造成。 3 结束语 详细阐述在单向传输设备中设计和实现一个实时屏幕图像传输系统,该系统克服了在无丢包反馈的情况下, 能够为涉密计算机用户提供实时、稳定、安全、有效的外部网络图文信息,具有一定的实用价值。下一步,需要进 一步的优化单向屏幕图像传输协议,采用更好的压缩策略,进一步的降低实时系统的平均带宽流量,以及解决实 时屏幕传输系统中在视频浏览时产生的显示效果差的缺点。 参考文献: [1]T Lin,P Hao.Compound Image omprCession for Real—time omputCer Screen Image Transmission[J].IEEE Transaction on Image Processing.2005,14(8):993—1005. 王艳芳,戴永,刘东华,等.基于UDP的数据可靠传输技术研究与应用[J].计算机工程与应用.2010,(3): 105—108. Zoran onstantCineseu,Monica V16doiu.Adaptive Compression for Remote Visualization[J].Zoran Constanti— nescu,Monica V16doiu,2009,2:49—58. 杨晋生,胡自胜,陈为刚.无线可伸缩视频实时传输系统设计与实现[J].电子测量技术,2013,(1):115— 119. 孙科林,周维超,吴钦章.高速实时光纤图像传输系统的实现[J].光学精密工程,2011,(9):2228—2234. 郭代,晏坚,王文江.新型屏幕共享系统设计与实现[J].计算机应用研究,2007,(6):299—305. 李燕灵,马瑞芳,左力.基于RTP/RTCP的实时视频数据传输模型及实现[J].微电子学与计算机,2005, (8):138—143. 高毅,张曦煌,王广翔.基于UDP的多媒体通信的研究与实现[J].计算机工程与应用,2012,(3):95—98. 鲁宏伟.基于UDP传输协议的包丢失和失序处理[J].计算机工程与应用,2001,(2):48—55. Li ji—yong.Tao Ran.Research and Design on Interactive Link System Based on Unidirectional Transmission [J].International Conference on Educational and Information Technology,2010,17—19(9). 丁慧丽,陈麟.网络信息安全单向传输设备的设计与实现[J].计算机安全,2010,15(3):47~49. 杨红生,田地,王丰贵,等.基于Hook和轮询检测机制的屏幕共享技术[J].计算机工程与应用,2009, (5):29—31. [13] Li Gao,Jingyuan Zhang,Qunwei Zheng,et a1.Experience with mirror drivers for distributed workspace[C]. Proceedings of the 45th Annual Southeast Regional Conference,2007:1 68—1 73, [14] 倪晓军,郑龙.基于Mirror Driver的自适应屏幕录制算法[J].计算机工程,2011,11:281—287. [15] 邓宏贵,郭晟伟,李志坚.基于哈夫曼编码的矢量量化图像压缩算法[J].计算机工程,2010,(4):218— 222. 成都信息 _T-程学 院 学报 第28卷 The Design and Implement of Real—time Screen image Transmission System in Unidirectional Transmission System HUANG Zan—zan, LIN Hong—gang inf。rn1ation Technology,Chengdu 610225,China) (SchoOl of Network Engineering,Chengdu University of Abstract:T0 meet the classified computer users’demands on receiving,viewing,and monltormg real—t㈣e mage or text infOnnation from the outer net,a screen image real—time transmission system used for un d rect onaI transm ss 0n device has been designed and realized in the paper.The system uses mirror driver to capture screen mage iast and et. ficientlv.The prOtoco1 of image rea1.time transmission suitable for unidirectional transmiss on device 1S des gned to guarantee the packet can reach the receiver real—time without feedback.XOR data of tWO adjacent images are sent to reduce the system bandwidth.A complete image is sent after sending a certain amount of images XOR data,wh cn can s01ve Drohlems()f rece ng unordered image caused by packet toss during image transmissiOn・The test shows that this svstem can provide well real—time image transmission services under the conditions of lower CPU ut l zat on and band dth occupancy,and still meet the unidirectional transmission device on real—time screen mage transm sS 0n re— qulrements. ey w。rds:image acquisiti。n; image transmissi。n; image c。mpression; unidirecti。nal transmission;mirror drive