Professional Documents
Culture Documents
远程教学系统中的屏幕图像实时传输技术
鲁 萍
(西安建筑科技大学理学院,陕西西安710055)
摘 要:在交互式远程教学系统中,屏幕图像的捕获、压缩、实时传输、解压缩和显示是该类应用中的关键技术。对
用软件编码实现图像压缩/解压缩技术进行研究,给出了基于行程编码的帧间无损压缩和有损压缩两种方案及传输时
为满足实时性的要求而对相关网络协议加以改进的方案。介绍了用Java语言实现系统时可用的相关类及重要方法。
关键词:远程教学;实时传榆;图像压缩;Java
LUPing
display the image is the principal technology.Two software encoding plans based on Run・-length coding・loss and lossless・could realize
the image compressing and decompressing,and also give a plan to alter the protocol relative to network in order to meet the real—time
property.The main packets and classes ofJava Language relative to realize the system were also introduced.
1 引 言
目前,在中、小学及高校中普遍采用的多媒体教学系统大
多用硬件加软件辅助实现,成本高,而且是单向的一对多通
信,学生机之间不能交互式通信,这限制了授课模式为单一的
讲授方式,而无法实现分组讨论等其它教学方式,不利于学生
能力的培养。
图1图像传输基本原理
随着计算机处理速度的提高、内存空问的扩大和图像压
缩技术的发展,应通过软件编码解决硬件依赖性方面的问题。 上传输,并尽可能使总传输时间最短,是系统完成实时传输任
在实时传输中,针对远程教学图像特点对多媒体数据流进行 务的关键技术。此外,在图像传输中为了满足实时性的要求
压缩,使得完全依靠软件编/解码提高传输速度,使远程教学 要对涉及到的网络协议进行改进也是难点之一。为了使教师
系统具有较强的可扩充性,且软件更有利于系统升级,这是远 和学生之间能交互式通信,整个系统应为组播传输结构,且应
程可视化实时通信系统研究的基础和核心。 能够通过设置使任意一台联网计算机能够作为组播的发送方,
其它计算机为接收方。该系统为C/S结构,用Java语言实现,
2系统关键技术分析
下面逐一说明技术要点。
系统基本原理如图1所示。首先在图像发送方(如教师
3系统关键技术实现
机)获取屏幕图像,然后对该图像进行软件编码实现图像压
缩,可以选用不同的压缩算法,将压缩后的图像数据在网络上 3.1图像获取及显示
进行组播传输,接收方(如学生机)收到图像数据后进行解压 首先要在发送方获取屏幕图像。Robot类的方法createS.
缩还原图像,并显示在屏幕上。 creenCapture(Rectangle screenRect)可以从当前屏幕上读取像素
正确的获取屏幕图像和显示全屏幕图像是系统实现的基 后生成一幅图像并返回,返回值就是Bufferedlmage对像,即当
本条件。如何进行软件编/解码使压缩后的图像能够在网络 前屏幕图像。
收稿日期:2004.09.26。
基金项目:西安建筑科技大学基础研究基金项目(AJl2029)。
作者简介:鲁萍(1979一),女,陕西西安人,硕士生,研究方向为计算机网络技术和多媒体技术。
-——3270・——
万方数据
通常图像的数据量很大,传输之前要对图像进行压缩处 相同的像素异或结果为0。如果帧与帧之间的变化很少,则会
理,压缩时分析图像特点,压缩图像像素,因此需要得到屏幕 出现大量连续的0。再用简单的行程编码对异或结果进行压
图像对应的像素数组。通常用RGB模式表示1个像素,即Ⅱ 缩,可以得到较好的压缩结果。传输压缩后的数据,在接收端
(透明度)、R(红)、G(绿)、B(黄)分别量化成256个亮度级别, 接收并解压缩,与上一帧图像像素再次进行异或运算可还原该
各占8位,用32位二进制数位(即1个int数)表示1个像素的 图像。算法描述如图2所示。
色值。Bufferedlmage类的方法getRGB(int star-
LI:捕获屏幕图像,保存像素色值置数组x LI:接收屏幕图像,保存像素色值置数组x
t)(,int startV,int w'int h,int[]rgbArray,int offset,
if是第l帧图像then数组z《 if是第1帧图像then数组ze_x
int scansize)可以对Bufferedlmage对像返回其 else{数组,z;-Xo Y’ else{对x进行行程编码逆运算,
数组Ye-X 数组Y《
发送z给接收方 显示数组z中的图像数据
衄{robot=new Robot(); //在主屏幕坐标 retum L1 retBrn L1
}catch(AWTException awe){)∥使用Ro—
bot对象必须抛出异常 图2基于异或运算的无损压缩算法
Bufferedlmage bufimg=robot.createScreen Cap。
bufimg.getRGB(x,y,w,h,pixels,0,w);//返回图像象素的数组置于 的论证可知,肉眼对大面积图像能分辨出的灰度等级比对小
pixels 块图像或细节部分的灰度等级大得多“’。亦即,如果相邻像素
的色值差别很小,人的眼睛无法分辨,可考虑将相邻且相近的
图像像素数据经过网络传输到达接收方,经过解压缩后 色值量化为1个色值。
应将用像素数组生成图像,即还原图像,并显示。用像素数组 例1 对连续数据(3,4,5,2,3,3,4,0,3,5)可量化为{3,3,3,3,3,
生成图像先用MemorylmageSource接口构造数据源,再用crea— 3,3,3,3,3),经行程编码可得(3,10)。
telmage方法生成图像存于内存。显示图像则是将内存中的图 帧间差值,是指在活动图像序列的的某一像素位置(f,J)
像绘制在屏幕上。Java中在frame上绘图不能直接用Graphics 上,当前帧的图像色值坼(f,,)与上l帧的色值新一。(,,/)之差。
类的drawlmage方法,而是要重写paint方法,通过调用repaint 当两帧图像只有少量变化时,则得到的差值大部分是0。对
()来激活paint方法,实现绘图。 于非0数据,可将相邻且相近的差值量化为数值,故而得到
Image img; 步。
g.drawlmage(img,0,0,w,h,this);//绘图 失真少,精度高,但压缩比较低。量化可以采用均匀量化方
} 法,可分为两种方式。
) 方式1 首先定义量化步长,比如8,确定量化范围,将
3.2图像压缩及解压缩 设原始色值为X,0≤x≤255,对应量化色值空间为
用软件编/解码的方法对图像数据压缩和解压缩。在授 ◇ly=(rx/8]x8)+3)
课中屏幕图像变化率很低,有时屏幕电子教案可能要延用几 例2组O~7的量化色值为3,组8—15的量化色值为ll
分钟。这种运动图像信号,除帧内像素间相关外,帧与帧之间 等依此类推。对数据(3,4,5,2,3,8,12,13,11,12)量化结果<3,
的像素值也有很强的相关性,且帧变化较平稳。若能利用帧 3,3,3,3,11,1l,11,1l,11)。显然,不量化直接压缩数据量为
之间的数据相关性,通过特殊变换,屏蔽帧与帧之间的变化, 20,量化后压缩数据量为4,大大增加了压缩比。
使之表现为大量连续相同数据,只保留差异,则使用简单高效 这种方式很简单,定义映射函数后统一操作,但没有考虑
的行程编码就能得到较高的压缩比。该系统对帧问编码使用 局部数据的特征,可能会降低图像的精度。
了两种方案,一种是基于异或运算的帧间无损压缩,一种是基 例3对例2中的量化条件,对数据(3,4,5,15,15,15,15,
于差值量化的帧问有损压缩。 15,2,3)进行量化结果(3,3,3,t1,ll,11,11,1l,3,3)。显然,将
(1)基于异或运算的无损压缩:利用异或运算性质可知,令 5个15量化为5个11,并不提高压缩比,反而损失了图像的精
X为时刻获取的屏幕图像的像素值,Y为时刻获取的屏幕图像 度。对于这种情况,方式l略见其拙。
的像素值,在传送端,对两幅图像的像素按位进行异或运算, 方式2充分考虑局部数据特征,根据数据特征动态定义
一3271—
万方数据
量化色值。首先仍是定义量化步长,根据量化步长分组,量化
时对于连续属于同一组的数据取其平均值作为量化色值,可 准
最大程度减少精度损失。算法如图3所示。
图4分片/重组协议的petri网
分片的帧格式由ID、Offset和Flag扩展为5个字段,如图
5所示。
图3量化方式二算法
图5分片头部
例4以8为单位进行分组,¨7为一组,8~15为一组,依
ID:序号。通过序号可以控制同步帧的传输,每隔一段时
此类推。对数据(3,4,5,15,15,15,15,15,2,3)进行量化,可知
间传输一个同步帧。
(3,4,5)同组,<15,15,15,15,15}同组,(2,3)同组,分别取每组
DataLength..该数据报所传有效载荷数据的长度(各分片
的整数均值作为量化色值得到{4,4,4,15,15,15,15,15,2,2)。
有效载荷长度之和)。接收方根据数据帧的大小来预留缓冲
再经过行程编码即得(4,3)(15,5)(2,2)。
区以便于分片重组。
量化色值也可用方差等更精确的定义方式,但其运算相
FragNum:分片个数。该数据报被分为分片的个数。接收
对复杂,平均值是最简单的折衷运算,有较高的性价比。关于
方主要通过控制这个值来判断,属于一个帧的分片是否接收
量化方法的更多讨论,可参见文献[4.5】。
完毕。
(3)算法比较:以异或运算为基础,屏蔽运动图像帧与帧之
FraglD:数据片序号。该分片是该数据数据报中的第几
间的相同点,保留差异,消除图像信号的冗余度,针对差异进
个分片。
行无损的行程编码压缩。这种方式不能进行有损压缩。因为
FragOffset:分片偏移量,该分片中的数据在整个数据报有
两数据进行异或运算后得到的结果,与原数据有很大的相关
效载荷中的位置。在接收方进行分片重组时根据偏移量,可
性,这种相关性不是线性的,也不能累计增、减。任何一个比
以直接把该分片的有效载荷置于数据缓冲区中的正确位置。
特位的改变都可能极大地影响解压缩时原数据的值。而基于
发送数据报分片,接收方收到分片首先检查帧序号ID,若
差值的有损压缩则不同,对差值量化只是新图像对于原图像
与等待帧序号相同,则接收分片,并解析出FragNum(分片个
改变很小的一部分,与原图像差别不大。
数),根据此值计数接收的分片个数,每接收一个计数递减,计
3.3网络传输
数为0时组合分片为完整数据报,递交主机,经解码后显示图
将压缩后的图像像素数组封装为数据报通过Socket进
像。若接收帧序号>等待帧序号,则可认为当前等待的数据报
行传输。通常Socket每次最大发送15KB的字节,而压缩后
分片可能丢失,放弃该帧,重新初始化接收参数,处理当前收
的图像数据可能大于15KB,尤其是第l帧图像和同步帧图
到的数据报分片,开始接收新的一帧。若接收帧序号<等待帧
像不能进行帧间压缩,只能进行帧内压缩,故而数据量较大。
序号,则为过时的数据报,不予处理,继续等待下一个数据报。
必须在发送方对数据进行分片后逐一传输,在接收方重组为
如图6所示。
完整数据报,即图像像素数据,再进行解压缩后显示。多媒
体数据实时传输的一个显著特点就是“延迟敏感,误差包容” 接收数据报,解析报头
(delay—sensitive and loss—tolerate),用于普通数据的分片/重 if帧序号=等待帧
组协议由于延迟较大不适用于实时传输,应做适当改进,描 then(解析分片头部
述如下。 if(计数>0)then数据置缓冲区
(1)分片/重组协议:实时图像传输数据报之间的间隔通常 else{缓冲区数据递交主机,
重置等待帧序号)
非常小,如教学或监控图像传输一般为25帧/秒,每接收到1
)
幅图像的各个分片要立刻处理后显示,若是遇到出错或丢失
else if帧序号>等待帧
的分片则会延长处理时间,这恰恰与实时性相悖。随着网络
then重置等待帧序号
技术的提高,带宽增加,线路出错率降低,接收时对于出错的
数据报或丢失的数据报最简单的方法就是立刻放弃,而不影
图6分片重组协议算法
响后续数据的接收。这也是协议改进设计的思想。协议的
Pe仃i网描述如图4所示。 (2)组播结构:教学系统是典型的组播结构,通常的模式是
・——3272-——
万方数据
教师机作为发送方学生机作为接收方,也可以令学生分组,在 multisocket);//创建数据报
小组内有一个发送方,小组其他成员为接收方。因此要能够 multisoeket.send(@);//发送组播数据
灵活地建立临时组,并管理好临时组地址的分配。
IP组播是指在一定的组内对其成员进行的广播,组中的 multisocket.1eaveGroup(group);#脱离该组
某个成员发出的信息,组中的其他所有成员都能收到,是 4结 论
UDP通信的一个分支。小组成员可动态变化,一个机器有权
在远程实时传输教学系统中,针对教学图像特点,对多媒
选择加入或者退出某个“小组”,“小组”包括永久组和临时
体数据流通过软件方法编/解码进行压缩,最大限度地提高编
组两种形式。组播地址使用的是D类IP地址,范围是224.0.
码器编码效率,提高传输可靠性,减少传输延迟,并对所涉及
0.0~239.255.255.255,永久组的IP地址是由Interact管理机构
到的网络协议进行改进,使之适用于多媒体实时传输。在传
分配的,是保留的D类地址范围224.0.0.0—224.0.0.2551临时
输数据时还可以进一步考虑用XML文档描述信息源机要传
组的地址则使用除永久组地址外的非保留的D类地址。临
输的信息,在源机与目的机之间传输文本格式的XML文档,
时组的组播地址由网络管理员选择,需要保证这个地址在
在目的机把接收到的XML文档重新转换为屏幕元素信息。尽
一定的范围内没有其它的“小组”同时在使用这个组播地
址。 可能使系统通用性和可扩展性更强。
编写1个Java组播应用程序主要完成以下过程:①创建 参考文献:
1个需要发送的按规定编址的DatagramPacket数据报;②建立 [1】 谢琪,林国.基于C/S的多媒体教学系统中图像的传输技术[J】.
1个用于发送和接收的MulticastSocket:③加入1个组播组; 计算机应用,2001,8(21):132.137.
④将数据报放入MulticastSocket中传送出去;⑤等待从Multi- 【2】 王文义,李尊锋,周兵.局域网环境下视频实时传输系统的软
castSocket接收数据报;⑥解码数据报提取信息;⑦根据得到 件实现方法研究[J].计算机工程与应用,2002,23(11):154—155.
的信息做出响应;⑧重复过程⑤~⑦;⑨离开组播组,关闭Mul- [3] 田丽华.编码理论【M】.西安:西安电子科技大学出版社,2003.
ticastSocket。 93。99.
317.321.
multisocket.joinGroup(group);//加入到该组
【8】 徐京,鲁士文.TCP/IP网络环境下的视频图像传输【J】.计算机
(上接第3243页)
同的信息情况,给出了3种算法。通过分析3种算法很好地 (4):15-18,23.
———3273・——
万方数据