0 引言
信息化战争条件下,军队大量采用计算机设备,需要传输计算机屏幕图像信息。但在战场环境下,有时只具备短波、超短波等窄信道通信系统。窄信道情况下,利用现有的压缩标准对取得的计算机屏幕信息进行传输,必然会导致“马赛克”现象和“跳帧”现象,这主要由于图像传输的速度慢引起的。
取Windows显示分辨率为1024×768,颜色位数24位真彩色,那么毎帧计算机屏幕图像大小约为2.25MB,要达到实时效果,每秒至少要传输24帧图像,即每秒需传输54MB的图像数据,数据量巨大,必须采用合适的压缩算法,才能保证实时监控的实现。
为解决这些问题,必须从以下两方面进行研究,一方面是不断提高监控系统的网络传输带宽,在信道带宽一定的情况下,这种做法是不现实的。另一方面是研究更高效的图像压缩算法,减少信息传输量,实现窄信道情况下的图像传输。本文就是在带宽固定的情况下,提出的一种针对软件界面屏幕图像的压缩传输方法。
1 传统的压缩方法分析
计算机屏幕的监控图像编码可以分为帧内编码和帧间编码两种。文献[1]帧内压缩针对不同的色彩块利用不同的压缩方法,压缩效率高但是耗时较长。帧间压缩将1s收集到的数据帧存入缓冲区,以第一帧为I帧,其余帧与I帧比较,记录比较后不同数据的位置和帧号并进行传输。
工程用软件系统界面相对前后两帧内容一般变化不大,因此通过比较只传输前后帧的变化部分,从而大幅减少需要传输的数据量。文献[2]给出一种16×8的屏幕分块方法,对屏幕进行处理。但文章并未对各分块方法的优劣进行详细阐述,不同的情况下,采用不同的屏幕分块方法,对图像的压缩率有比较大的影响。
判断前后两帧屏幕变化的方法有直接比较法和CRC比较法。前者调用M em Cm p内存比较函数,逐个字节比较前后两帧屏幕的内存数据,数据比较时需要比较大的内存空间。后者计算图像的CRC值,通过比较两帧图像的CRC值判断图像是否发生改变,此方法处理时间比较长。
针对软件界面存在大量单色区域且界面图像变化不频繁等特点,本文在压缩过程中给出了“格”的具体划分方法,并采用XOR和直接判断相结合的方法判断动态格,对帧间变化的格压缩传输,最后比较分析了不同屏幕格分方案和图像传输方法下的图像处理耗时和数据传输量。
2 改进的计算机屏幕压缩方法
2.1 图像分格方法 将屏幕分为m×n的小矩形,每一个小矩形称为一个静态格,静态格存储着屏幕图像的位图数据,如式(1)~式(2)所示。
S■=S■ … S■┆ ?埙 ┆S■ … S■(1)
D■=D■ … D■┆ ?埙 ┆D■ … D■(2)
屏幕分块的数量应根据实际情况来设定,若数量过多将会导致块处理时间的总和超过全屏数据的传输时间,虽然这样网络带宽占用小,但实时性下降;若静态格的数量过少,则全屏处理占用的网络带宽下降幅度小,速度提高效果不明显。
本文根据所处理图像的特点提出一种基于自适应分格的方法[3]对取得的图像进行分块,其主要的核心思想就是对图像进行区域划分,采用四叉树分解进行自适应分割,分出图像中单色和非单色矩形区域,记录其对角点坐标(x1,y1)、(x2,y2),以及颜色clr。划分方法如图1所示。
分割方案的具体步骤如下:
Step1 将原始图像分成四个大小相同的矩形,判断每个方块是否满足一致性标准。
Step2 设定划分的深度范围,即值域块所允许的最大与最小值,本文设定最大值为(m/2)×(n/2),最小值为4×4。
Step3 如果满足划分的最小深度范围就不在继续分割(及时没有达到一致性标准),否则如果不满足一致性就继续分割,继续对所得的方格进行深度范围和一致性检验。
Step4 重复Step3,直到所有的方块都满足一致性标准。
2.2 动态格的判断 采用XOR法对前后帧之间发生变化的格进行判断:将前后两帧屏幕对应的静态格矩阵直接进行“或”运算,即式(3)中的元素Sij∧Dij,得出动态格矩阵Fij,其中取“∧”为XOR运算,屏幕位图未变化部分的值将为0,图像还原后即“黑块”,不需要传输;而变化部分的值为1,需要传输。如果两帧内容变化很少,则会出现大量连续的0,则需要传输的数据量变小,解码端只需要少量的数据便可以恢复出原图像。
Fij=Sij∧Dij=S■ … S■┆ ?埙 ┆S■ … S■∧D■ … D■┆ ?埙 ┆D■ … D■(3)
根据本文的格分方案,动态块的判断分为以下三种情况:
①前后两帧对应的静态格均为单色块,则只比较静态格的颜色clr,若相同Fij为0矩阵,即黑块,否则只记录clr值的变化;
②前后两帧对应的静态格为单色块和非单色块,则Fij矩阵;
③前后两帧对应的静态格均为非单色块,运用XOR运算得出相应的动态块矩阵。
帧内压缩算法采用JPEG-2000图像压缩标准,在压缩比达到100:1时,峰值信噪比(PSNR)值仍能达到30以上。使用LHA、GZIP等通用的压缩算法后,图像尺寸虽然有所减小,但其算法本身耗费时间数多于JPEG-2000压缩算法。
3 算法验证
在某工程平台,测试程序运行环境为Windows2000平台,CPU为Pentium(R)3.20GHz,内存为2GB,显卡为RANEON X300/X500,显存为256MB。
3.1 不同格分方案比较 对软件界面采集24帧屏幕数据(8帧完全相同,8帧不完全相同,8帧完全不同),以原有的4种分格方案和本方案进行对比,得到的实验数据如表1所示。
3.2 动态格判断方法比较 分别采用M em Cm p、CRC和XOR方法对前后两帧屏幕进行10次测试,结果如表2所示。
从表1可以看出相对于固定大小的分格方法,本文的方法占用了更多的计算机的采集处理时间,但总体处理时间缩短了,并且前后两帧的差异变小,图像的实际传输数据量减小。从表2可以看出M em Cm p 内存占用率最低,XOR耗费时间最短,M em Cm p方法占用内存较大,选用XOR和M em Cm p相结合的方法进行动态格判断的效率最高。
在以上实验环境下,对改进方案的传输效率进行测试,结果表明对于软件屏幕图像的传输,本方法能够达到实时的要求,但对于视频的传输延迟率较大,不能满足需要
。
4 结论
本文针对计算机屏幕远程监控,提出了自适应分格和异或帧间分块压缩结合起来的方法,并对其性能进行了测试,测试表明,对于计算机软件屏幕图像的监控,利用本方法可以大幅度提高图像的压缩和传输的效率,能够完成低带宽时监控图像的实时传输,但本方法不适用于视频图像的实时传输。
参考文献:
[1]刘爱华,陈钧.基于局域网的实时图像传输的压缩改进算法[J].南京工程学院学报,2011,9(1).
[2]朱国仲,陈海涛,陆桂明.基于GDI的远程屏幕图像实时传输[J].华北水利水电学院学报,2010,31(5).
[3]江禹生,邵巍,丁兰欣.基于四叉树的分形图像压缩编码算法的C++实现[J].电脑知识与应用,2008,4(8).
[4]唐国维,韩鹏宇,王艾等.一种基于分块的分形图像压缩方法[J].大庆石油学院学报,2012,6(36):1000-1891.
[5]陈东宁,陈华建,焦彦平.带宽限制条件下的实时图像传输研究[J].技术研究,2012,78:1671-1122.